<?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>28982</bug_id>
          
          <creation_ts>2009-09-04 13:05:35 -0700</creation_ts>
          <short_desc>Basic MathML Rendering Support</short_desc>
          <delta_ts>2009-09-20 07:50:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Alex Milowski">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>playmobil</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>144905</commentid>
    <comment_count>0</comment_count>
      <attachid>39086</attachid>
    <who name="Alex Milowski">alex</who>
    <bug_when>2009-09-04 13:05:35 -0700</bug_when>
    <thetext>Created attachment 39086
WebKit patch for MathML Support

This patch adds basic MathML DOM &amp; Rendering support for MathML.  The goals for this patch are:

   https://trac.webkit.org/wiki/MathML%20Goals

This patch does not support msqrt/mroot and mtable.

The build for the Mac platform has been updated but the build/projects for other platforms have not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145191</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-07 10:12:05 -0700</bug_when>
    <thetext>Please use check-webkit-style on the patch - it&apos;s difficult to read at least due to tab/space inconsistencies (you can open it in Safari to see what I&apos;m talking about, some lines look indented 4 spaces, and some 8 spaces).

+	} else {
+        m_separators = StringImpl::create(&quot;,&quot;);
+    }

We don&apos;t use braces around single line control clauses.

+    Length pad((int)(style()-&gt;fontSize()*0.1),Fixed);

Please use C++-style casts, add spaces around binary operators, and after commas.

+	RenderInline *open = new (renderArena()) RenderInline(document());

Star goes to the left.

+	RefPtr&lt;StringImpl&gt;  m_separators;

One space before variable name.

+        // TODO: parse units

We use FIXME, not TODO.

+/*
+ *  RenderMathInlineContainer.cpp
+ *  WebCore
+ *
+ *  Created by Alex Milowski on 8/26/09.
+ *  Copyright 2009 Alex Milowski. All rights reserved.
+ *

This is different style than existing code, can you use just a single copyright line?

+RenderMathSubSup::RenderMathSubSup(Node *subsup) : RenderMathInlineContainer(subsup),m_scripts(0)

Initializers go on a separate line, indented four spaces:

+RenderMathSubSup::RenderMathSubSup(Node* subsup)
    : RenderMathInlineContainer(subsup)
    , m_scripts(0)
{
}

+void RenderMathInlineContainer::setStyle(PassRefPtr&lt;RenderStyle&gt; style) {

Opening brace goes on a separate line.

+    //newStyle-&gt;setBorderBottomColor(Color(255,0,0));
+    //newStyle-&gt;setBorderBottomWidth(1);
+    //newStyle-&gt;setBorderBottomStyle(SOLID);

We don&apos;t check in commented out code, unless there is a very good reason to (such a reason needs to be given in a comment, of course).

I&apos;m sorry that the feedback is so formal - someone more familiar with adding new markup language support to WebKit will need to comment on the substance of the patch. In the meanwhile, bringing the code in compliance with WebKit coding standards will make the substantive review much easier.

Please mark patches that are up for review as &quot;review?&quot; when submitting, or later by clicking on &quot;Details&quot; link to the right of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145363</commentid>
    <comment_count>2</comment_count>
      <attachid>39189</attachid>
    <who name="Alex Milowski">alex</who>
    <bug_when>2009-09-08 08:38:08 -0700</bug_when>
    <thetext>Created attachment 39189
Updated patch that adheres to the style guide</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145572</commentid>
    <comment_count>3</comment_count>
      <attachid>39223</attachid>
    <who name="Alex Milowski">alex</who>
    <bug_when>2009-09-08 15:31:43 -0700</bug_when>
    <thetext>Created attachment 39223
Update patch with support for the msqrt and mroot elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145763</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 08:13:28 -0700</bug_when>
    <thetext>I really think we shoudl try to do this in smaller pieces.  Any patch over about 20k is difficult to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145834</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Milowski">alex</who>
    <bug_when>2009-09-09 10:45:50 -0700</bug_when>
    <thetext>I&apos;m not quite sure how to break this up.  The bulk of this patch is the new rendering code for MathML.  The rest of the changes are to get the MathML build setup or to enable constructing it in the right places.

I could separate the build and enabling changes from the rendering code.  The unfortunate consequence would be that once the patch is applied you still wouldn&apos;t have MathML rendering.  

The current patch should succeed in getting mfrac, mfenced, mover, munder, moverunder, msup, msub msubsup, mrro, msqrt, mi, mn, and mtext all to render somewhat properly.

Suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146379</commentid>
    <comment_count>6</comment_count>
      <attachid>39223</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-09-10 15:58:22 -0700</bug_when>
    <thetext>Comment on attachment 39223
Update patch with support for the msqrt and mroot elements

You&apos;ve got a lot of style violations still, so let&apos;s get that taken care of.

Please fix the CSS file to be more readable:

selector {
   property/value pairs (one per line);
}

We no longer indent class declarations in header files (many of the files violate this still).  They should just be flush left, e.g.,:

namespace WebCore {

class MathMLElement ....

}

Omit braces when you only have a single line for else statements or for stuff inside a loop, e.g.,

else if (localName()==&quot;mfrac&quot;) {
          object = new (arena) RenderFraction(this);
      } 

^^^^ That is wrong.  Just drop the braces.

#endifs traditionally say what they are closing, e.g.,

#endif // MathMLElement_h

#endif // namespace WebCore

Make sure to have spaces in comparators and mathematical expressions, e.g.,:

if (localName()==&quot;mfenced&quot;)

should be:

if (localName() == &quot;mfenced&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148560</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Milowski">alex</who>
    <bug_when>2009-09-20 07:50:59 -0700</bug_when>
    <thetext>This patch has been broken down into a number of other smaller patches: 29158 (fixed), 29143 (fixed), 29349 (fixed), and 29529.  The support for mfenced and mroot/msqrt will come in another patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39086</attachid>
            <date>2009-09-04 13:05:35 -0700</date>
            <delta_ts>2009-09-08 08:39:28 -0700</delta_ts>
            <desc>WebKit patch for MathML Support</desc>
            <filename>MathML-1.patch</filename>
            <type>text/plain</type>
            <size>93349</size>
            <attacher name="Alex Milowski">alex</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODA3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA3IEBACisyMDA5LTA5LTA0ICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxvd3Nr
aS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlJbml0aWFs
IE1hdGhNTCByZW5kZXJpbmcgc3VwcG9ydC4gIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFmZmVjdAor
ICAgICAgICBwYXJzaW5nIHNvIE1hdGhNTCBlbnRpdGllcyBhcmUgbm90IGRlZmluZWQuICBJdCBp
cyBwdXJlbHkgRE9NCisgICAgICAgIGFuZCByZW5kZXJpbmcgc3VwcG9ydC4KKworICAgICAgICBU
ZXN0czogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWwKKyAgICAgICAgICAgICAgIG1h
dGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwv
cHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwvcHJlc2VudGF0
aW9uL3N1YnN1cC54aHRtbAorICAgICAgICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRl
cm92ZXIueGh0bWwKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnOgorCisJICAgQWRkZWQgdGhlIEVOQUJMRV9NQVRITUwgZmVhdHVyZQorICAgICAgICAg
IAorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisKKyAgICAgICAgICAgQWRkZWQgdGhl
IGRlcml2ZWQgc291cmNlcyBmb3IgdGhlIG1hdGhtbCBlbGVtZW50cworCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICAgIFByb2plY3QgY29u
ZmlndXJhdGlvbnMgdG8gYnVpbGQgb24gdGhlIG1hYworCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQXR0cik6CisKKwkgIEZp
eCBmb3IgcG9pbnRlciBleGNlcHRpb24gYXMgdGhlIE1hdGhNTCBzdHlsZXNoZWV0IGlzIGFkZGVk
IGJlZm9yZSB0aGUgZG9jdW1lbnQKKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudCk6
CisKKyAgICAgICAgICBBZGRlZCBNYXRoTUwgdXNlciBhZ2VudCBzdHlsZXNoZWV0CisKKyAgICAg
ICAgKiBjc3MvbWF0aG1sLmNzczogQWRkZWQuCisKKyAgICAgICAgICBNYXRoTUwgdXNlciBhZ2Vu
dCBzdHlsZXNoZWV0CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQpOgorCisgICAgICAgICAgQWRkZWQgY3JlYXRp
b24gb2YgTWF0aE1MIGVsZW1lbnRzCisKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6aXNNYXRoTUxFbGVtZW50KToKKworICAgICAgICAgIEFkZGVkIHRlc3Qg
Zm9yIE1hdGhNTAorCisgICAgICAgICogbWF0aG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwv
TWF0aE1MRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVu
dDo6TWF0aE1MRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MRWxlbWVudDo6aXNNYXRoTUxFbGVtZW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6Ok1hdGhNTE1hdGhFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRo
bWwvUmVuZGVyRmVuY2VkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGZW5j
ZWQ6OlJlbmRlckZlbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGZW5jZWQ6Om1ha2VG
ZW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmVuY2VkOjphZGRDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGZW5jZWQ6OmxheW91dCk6CisgICAgICAgICogbWF0aG1sL1Jl
bmRlckZlbmNlZC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVuZGVyRnJhY3Rpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWN0aW9uOjpSZW5kZXJGcmFjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAg
ICAqIG1hdGhtbC9SZW5kZXJGcmFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVu
ZGVyTWF0aElubGluZUNvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aElubGluZUNvbnRhaW5lcjo6UmVuZGVyTWF0aElubGluZUNvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjpzZXRTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjppc0NoaWxkQWxsb3dlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjptYWtlQmxvY2tT
dHlsZSk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhJbmxpbmVDb250YWluZXIuaDogQWRk
ZWQuCisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhTdWJTdXAuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhTdWJTdXA6OlJlbmRlck1hdGhTdWJTdXApOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aFN1YlN1cDo6YWRkQ2hpbGQpOgorICAgICAgICAqIG1hdGht
bC9SZW5kZXJNYXRoU3ViU3VwLmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRo
VW5kZXJPdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoVW5kZXJP
dmVyOjpSZW5kZXJNYXRoVW5kZXJPdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE92ZXJBZGp1
c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVuZGVyQWRqdXN0bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aFVuZGVyT3Zlcjo6YWRk
Q2hpbGQpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoVW5kZXJPdmVyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aFVuZGVyT3Zlcjo6KToKKyAgICAgICAgKiBtYXRo
bWwvbWF0aHRhZ3MuaW46IEFkZGVkLgorCisgICAgICAgICAgTWF0aE1MIHJlbmRlcmluZyBjb2Rl
IGFuZCBlbGVtZW50IGRlZmluaXRpb25zCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisKKyAgICAgICAgICBBZGRlZCBpbml0aWFs
aXphdGlvbiBvZiBNYXRoTUwgbmFtZXMuCisKKwogMjAwOS0wOS0wNCAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0
IGFuZCBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDQ4MDY1
KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMgXAogICAgICQo
V2ViQ29yZSkvaW5zcGVjdG9yIFwKICAgICAkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZSBcCisg
ICAgJChXZWJDb3JlKS9tYXRobWwgXAogICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAg
ICAgJChXZWJDb3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXApAQCAtNDMzLDYg
KzQzNCw4IEBAIGFsbCA6IFwKICAgICBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIFwKICAgICBYTGlu
a05hbWVzLmNwcCBcCiAgICAgWE1MTmFtZXMuY3BwIFwKKyAgICBNYXRoTUxFbGVtZW50RmFjdG9y
eS5jcHAgXAorCU1hdGhNTE5hbWVzLmNwcCBcCiAgICAgWFBhdGhHcmFtbWFyLmNwcCBcCiAgICAg
dG9rZW5pemVyLmNwcCBcCiAjCkBAIC01NTYsNiArNTU5LDEwIEBAIGlmZXEgKCQoZmluZHN0cmlu
ZyBFTkFCTEVfV01MLCQoRkVBVFVSRV8KICAgICBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA6PSAk
KFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKSAkKFdlYkNvcmUpL2Nzcy93bWwuY3NzCiBlbmRpZgog
CitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX01BVEhNTCwkKEZFQVRVUkVfREVGSU5FUykpLCBF
TkFCTEVfTUFUSE1MKQorICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VO
VF9TVFlMRV9TSEVFVFMpICQoV2ViQ29yZSkvY3NzL21hdGhtbC5jc3MKK2VuZGlmCisKIGlmZXEg
KCQoZmluZHN0cmluZyBFTkFCTEVfVklERU8sJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX1ZJ
REVPKQogICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VOVF9TVFlMRV9T
SEVFVFMpICQoV2ViQ29yZSkvY3NzL21lZGlhQ29udHJvbHMuY3NzCiBpZmVxICgkKE9TKSxNQUNP
UykKQEAgLTY5Nyw2ICs3MDQsMjYgQEAgV01MTmFtZXMuY3BwIDoKIAogZW5kaWYKIAorIyAtLS0t
LS0tLQorCisjIE1hdGhNTCB0YWcgYW5kIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGVsZW1lbnQgZmFj
dG9yeQorCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX01BVEhNTCwkKEZFQVRVUkVfREVGSU5F
UykpLCBFTkFCTEVfTUFUSE1MKQorCitNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgTWF0aE1MTmFt
ZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgbWF0aG1sL21hdGh0YWdzLmluCisJcGVybCAtSSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS10YWdzICQoV2ViQ29yZSkvbWF0aG1sL21h
dGh0YWdzLmluIC0tZmFjdG9yeSAtLXdyYXBwZXJGYWN0b3J5CisKK2Vsc2UKKworTWF0aE1MRWxl
bWVudEZhY3RvcnkuY3BwIDoKKwllY2hvID4gJEAKKworTWF0aE1MTmFtZXMuY3BwIDoKKwllY2hv
ID4gJEAKKworZW5kaWYKKworCiAKICMgLS0tLS0tLS0KIApJbmRleDogV2ViQ29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA0ODA2NSkKKysr
IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDkgKzU3LDEwIEBAIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgPSBFTkFC
TEVfU1ZHX0YKIEVOQUJMRV9TVkdfVVNFID0gRU5BQkxFX1NWR19VU0U7CiBFTkFCTEVfVklERU8g
PSBFTkFCTEVfVklERU87CiBFTkFCTEVfV0VCX1NPQ0tFVFMgPSBFTkFCTEVfV0VCX1NPQ0tFVFM7
CitFTkFCTEVfTUFUSE1MID0gRU5BQkxFX01BVEhNTDsKIEVOQUJMRV9XTUwgPSA7CiBFTkFCTEVf
V09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFM
SVNUKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxF
X0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0hB
UkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFC
TEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxF
X1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNF
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdS
SUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZF
TlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNU
KSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMp
ICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpICQoRU5BQkxFX01BVEhNTCk7CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDgwNjUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDYyMyw2ICs0NjIzLDI5
IEBACiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudC5oICovOyB9OwogCQlGOUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50LmggKi87IH07CisJCUZBOUREQUQ3MTA1MUEwMkIwMDM0RkEyRiAvKiBNYXRo
TUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQTlEREFENjEwNTFBMDJCMDAzNEZBMkYgLyogTWF0aE1MRWxlbWVudEZhY3Rv
cnkuY3BwICovOyB9OworCQlGQTlEREFEOTEwNTFBMDU5MDAzNEZBMkYgLyogTWF0aE1MRWxlbWVu
dEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZBOUREQUQ4MTA1MUEwNTkwMDM0RkEyRiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9
OworCQlGQUFCMDI4MzEwNTFBMTc2MDA1OEVCOTQgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE5RERBRDYx
MDUxQTAyQjAwMzRGQTJGIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKKwkJRkFF
N0I2NjExMDUxOTZCMzAwNzQ5MEUyIC8qIG1hdGhtbC5jc3MgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjYwMTA1MTk2QjMwMDc0OTBFMiAvKiBt
YXRobWwuY3NzICovOyB9OworCQlGQUU3QjY4NzEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
QUU3QjY3NjEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxlbWVudC5jcHAgKi87IH07CisJCUZB
RTdCNjg4MTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY3NzEwNTE5NkY5MDA3NDkwRTIg
LyogTWF0aE1MRWxlbWVudC5oICovOyB9OworCQlGQUU3QjY4OTEwNTE5NkY5MDA3NDkwRTIgLyog
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY3ODEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgKi87IH07CisJCUZBRTdCNjhBMTA1MTk2RjkwMDc0
OTBFMiAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY3OTEwNTE5NkY5MDA3NDkwRTIgLyog
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oICovOyB9OworCQlGQUU3QjY4QjEwNTE5NkY5
MDA3NDkwRTIgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFFN0I2N0ExMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhN
TE1hdGhFbGVtZW50LmNwcCAqLzsgfTsKKwkJRkFFN0I2OEMxMDUxOTZGOTAwNzQ5MEUyIC8qIE1h
dGhNTE1hdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQUU3QjY3QjEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCAq
LzsgfTsKKwkJRkFFN0I2OEQxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGh0YWdzLmluIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY3QzEwNTE5NkY5
MDA3NDkwRTIgLyogbWF0aHRhZ3MuaW4gKi87IH07CisJCUZBRTdCNjhFMTA1MTk2RjkwMDc0OTBF
MiAvKiBSZW5kZXJGZW5jZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkFFN0I2N0QxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZlbmNlZC5jcHAg
Ki87IH07CisJCUZBRTdCNjhGMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjdFMTA1MTk2
RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuaCAqLzsgfTsKKwkJRkFFN0I2OTAxMDUxOTZGOTAw
NzQ5MEUyIC8qIFJlbmRlckZyYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjdGMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGcmFj
dGlvbi5jcHAgKi87IH07CisJCUZBRTdCNjkxMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGcmFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFF
N0I2ODAxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZyYWN0aW9uLmggKi87IH07CisJCUZBRTdC
NjkyMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjgxMTA1MTk2
RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcCAqLzsgfTsKKwkJRkFF
N0I2OTMxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjgyMTA1MTk2
RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmggKi87IH07CisJCUZBRTdC
Njk0MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3ViU3VwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjgzMTA1MTk2RjkwMDc0OTBF
MiAvKiBSZW5kZXJNYXRoU3ViU3VwLmNwcCAqLzsgfTsKKwkJRkFFN0I2OTUxMDUxOTZGOTAwNzQ5
MEUyIC8qIFJlbmRlck1hdGhTdWJTdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZBRTdCNjg0MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3Vi
U3VwLmggKi87IH07CisJCUZBRTdCNjk2MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5k
ZXJPdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZBRTdCNjg1MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmNwcCAqLzsg
fTsKKwkJRkFFN0I2OTcxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhVbmRlck92ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjg2MTA1
MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmggKi87IH07CisJCUZBRTdCNkEw
MTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY5RDEwNTE5ODNBMDA3NDkwRTIgLyogTWF0
aE1MTmFtZXMuY3BwICovOyB9OworCQlGQUU3QjZBMTEwNTE5ODNBMDA3NDkwRTIgLyogTWF0aE1M
TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZB
RTdCNjlFMTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OwogCQlGRTZGRDQ4
NzBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0ODQwRjY3NkU1NzAwMDkyODczIC8qIENv
b3JkaW5hdGVzLmNwcCAqLzsgfTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8qIENvb3Jk
aW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgfTsKIAkJRkU2RkQ0
OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8q
IEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwpAQCAtOTY5Niw2ICs5NzE5LDI4IEBACiAJCUY5MTZD
NDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzcwREI1MENBMjAw
RDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
QTlEREFENjEwNTFBMDJCMDAzNEZBMkYgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQTlEREFEODEwNTFBMDU5MDAzNEZBMkYg
LyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkFFN0I2NjAxMDUxOTZCMzAwNzQ5MEUyIC8qIG1hdGhtbC5jc3MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNz
czsgcGF0aCA9IG1hdGhtbC5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdC
Njc2MTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQUU3QjY3NzEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjc4MTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGQUU3QjY3OTEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZBRTdCNjdBMTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxNYXRoRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxNYXRoRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjdCMTA1MTk2RjkwMDc0OTBFMiAvKiBN
YXRoTUxNYXRoRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRo
TUxNYXRoRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3QjY3QzEw
NTE5NkY5MDA3NDkwRTIgLyogbWF0aHRhZ3MuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0
aHRhZ3MuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjdEMTA1MTk2Rjkw
MDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyRmVuY2VkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkFFN0I2N0UxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZlbmNlZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGZW5jZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkFFN0I2N0YxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZyYWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZyYWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFN0I2ODAxMDUxOTZGOTAwNzQ5MEUyIC8q
IFJlbmRlckZyYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ckZyYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjgxMTA1MTk2
RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3QjY4MjEwNTE5NkY5MDA3NDkwRTIgLyog
UmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZBRTdCNjgzMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3ViU3VwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhTdWJTdXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3QjY4NDEwNTE5NkY5MDA3NDkwRTIg
LyogUmVuZGVyTWF0aFN1YlN1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJNYXRoU3ViU3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjg1
MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhVbmRlck92ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3QjY4NjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVy
TWF0aFVuZGVyT3Zlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJN
YXRoVW5kZXJPdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjlEMTA1
MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNYXRoTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZBRTdCNjlFMTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTQ5RUY5NzBEQzUxNDYyMDA0MjY2RTEgLyogRGFzaGJvYXJkU3VwcG9ydENT
U1Byb3BlcnR5TmFtZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGFzaGJvYXJkU3VwcG9y
dENTU1Byb3BlcnR5TmFtZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZE
NDg0MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFNkZENDg1MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29yZGluYXRlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTc3Nyw2ICs5ODIyLDcgQEAKIAkJCQk5M0VFQzFFQzA5QzI4Nzc3
MDBDNTE1RDEgLyogaHRtbCAqLywKIAkJCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5z
cGVjdG9yICovLAogCQkJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8sCisJ
CQkJRkFFN0I2NzUxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGhtbCAqLywKIAkJCQkzMzNGNzAzRDBG
QjQ5QzE2MDA4RTEyQTYgLyogbm90aWZpY2F0aW9ucyAqLywKIAkJCQk2NUJGMDIxODA5NzQ4MDYz
MDBDNDMxOTYgLyogcGFnZSAqLywKIAkJCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxh
dGZvcm0gKi8sCkBAIC0xMDY1NSw2ICsxMDcwMSwxMCBAQAogCQkJCTkzOEU2NUYwMDlGMDk4NDAw
MDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCAqLywKIAkJCQk4NTc0RDFG
MTBBREU2MTIyMDA0Q0JBMTEgLyogSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwICovLAog
CQkJCTg1NzREMUYyMEFERTYxMjIwMDRDQkExMSAvKiBKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9y
eS5oICovLAorCQkJCUZBOUREQUQ4MTA1MUEwNTkwMDM0RkEyRiAvKiBNYXRoTUxFbGVtZW50RmFj
dG9yeS5oICovLAorCQkJCUZBOUREQUQ2MTA1MUEwMkIwMDM0RkEyRiAvKiBNYXRoTUxFbGVtZW50
RmFjdG9yeS5jcHAgKi8sCisJCQkJRkFFN0I2OUQxMDUxOTgzQTAwNzQ5MEUyIC8qIE1hdGhNTE5h
bWVzLmNwcCAqLywKKwkJCQlGQUU3QjY5RTEwNTE5ODNBMDA3NDkwRTIgLyogTWF0aE1MTmFtZXMu
aCAqLywKIAkJCQk2NTY1ODFFNjA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHRWxlbWVudEZhY3Rvcnku
Y3BwICovLAogCQkJCTY1NjU4MUU3MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdFbGVtZW50RmFjdG9y
eS5oICovLAogCQkJCTY1NjU4MUU4MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5jcHAgKi8s
CkBAIC0xNDc0NCw2ICsxNDc5NCw3IEBACiAJCQkJOTNDQTRDOUEwOURGOTNGQTAwREY4Njc3IC8q
IG1ha2UtY3NzLWZpbGUtYXJyYXlzLnBsICovLAogCQkJCTkzQ0E0QzlCMDlERjkzRkEwMERGODY3
NyAvKiBtYWtlcHJvcC5wbCAqLywKIAkJCQk5M0NBNEM5RDA5REY5M0ZBMDBERjg2NzcgLyogbWFr
ZXZhbHVlcy5wbCAqLywKKwkJCQlGQUU3QjY2MDEwNTE5NkIzMDA3NDkwRTIgLyogbWF0aG1sLmNz
cyAqLywKIAkJCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250cm9scy5jc3Mg
Ki8sCiAJCQkJMDdBRkU1OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRVC5jc3Mg
Ki8sCiAJCQkJNEUxOTU5MUYwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNw
cCAqLywKQEAgLTE1MjQ0LDYgKzE1Mjk1LDMwIEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2Vz
VGFicyA9IDA7CiAJCX07CisJCUZBRTdCNjc1MTA1MTk2RjkwMDc0OTBFMiAvKiBtYXRobWwgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUZBRTdCNjc2MTA1
MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLywKKwkJCQlGQUU3QjY3NzEwNTE5
NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxlbWVudC5oICovLAorCQkJCUZBRTdCNjc5MTA1MTk2Rjkw
MDc0OTBFMiAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggKi8sCisJCQkJRkFFN0I2
NzgxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICov
LAorCQkJCUZBRTdCNjdBMTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxNYXRoRWxlbWVudC5jcHAg
Ki8sCisJCQkJRkFFN0I2N0IxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTE1hdGhFbGVtZW50Lmgg
Ki8sCisJCQkJRkFFN0I2N0MxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGh0YWdzLmluICovLAorCQkJ
CUZBRTdCNjdEMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuY3BwICovLAorCQkJCUZB
RTdCNjdFMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuaCAqLywKKwkJCQlGQUU3QjY3
RjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRnJhY3Rpb24uY3BwICovLAorCQkJCUZBRTdCNjgw
MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGcmFjdGlvbi5oICovLAorCQkJCUZBRTdCNjgxMTA1
MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcCAqLywKKwkJCQlG
QUU3QjY4MjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5oICov
LAorCQkJCUZBRTdCNjgzMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3ViU3VwLmNwcCAq
LywKKwkJCQlGQUU3QjY4NDEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aFN1YlN1cC5oICov
LAorCQkJCUZBRTdCNjg1MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmNw
cCAqLywKKwkJCQlGQUU3QjY4NjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aFVuZGVyT3Zl
ci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBtYXRobWw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVh
ZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTc1OTQsNiArMTc2NjksMTcgQEAKIAkJCQk1
MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFt
RXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBRTdCNjg4MTA1MTk2Rjkw
MDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUU3QjY4QTEw
NTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkFFN0I2OEMxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTE1hdGhFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUU3QjY4RjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVy
RmVuY2VkLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUU3QjY5MTEwNTE5NkY5MDA3NDkwRTIgLyog
UmVuZGVyRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZBRTdCNjkzMTA1MTk2RjkwMDc0
OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
QUU3QjY5NTEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aFN1YlN1cC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkFFN0I2OTcxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhVbmRlck92ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZBRTdCNkExMTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkE5RERBRDcxMDUxQTAyQjAwMzRGQTJGIC8qIE1h
dGhNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBIZWFkZXJzICovLAorCQkJCUZBOUREQUQ5MTA1MUEw
NTkwMDM0RkEyRiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0x
NzY5Niw2ICsxNzc4Miw4IEBACiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21J
bkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0
RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTEyODRBREExMDQ0
N0FFQjAwRUFFQjUyIC8qIFBhZ2VUcmFuc2l0aW9uRXZlbnQuaWRsIGluIFJlc291cmNlcyAqLywK
KwkJCQlGQUU3QjY2MTEwNTE5NkIzMDA3NDkwRTIgLyogbWF0aG1sLmNzcyBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJRkFFN0I2OEQxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGh0YWdzLmluIGluIFJlc291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTE3ODQ5LDYgKzE3OTM3LDE2IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
KwkJCQlGQUU3QjY4NzEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGQUU3QjY4OTEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQUU3QjY4QjEwNTE5NkY5MDA3
NDkwRTIgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFFN0I2
OEUxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZlbmNlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlGQUU3QjY5MDEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRnJhY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRkFFN0I2OTIxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhJbmxpbmVD
b250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFFN0I2OTQxMDUxOTZGOTAwNzQ5MEUy
IC8qIFJlbmRlck1hdGhTdWJTdXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFFN0I2OTYxMDUx
OTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhVbmRlck92ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkFBQjAyODMxMDUxQTE3NjAwNThFQjk0IC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZBRTdCNkEwMTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1l
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJz
dHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBODEyMjgwRkJCOUMxRDAwNTEw
MjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUE4
MTIzMDBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gNDgwNjUpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQXR0CiAgICAgaWYgKGF0dHJOYW1l
WzBdID09ICctJykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNI
VE1MRG9jdW1lbnQoKSkKKyAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpKQogICAgICAgICBhdHRyTmFtZSA9IGF0dHJOYW1lLmxvd2VyKCk7CiAgICAgCiAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoYXR0ck5hbWUsIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfQVRUUik7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNp
b24gNDgwNjUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEzNCw2ICsxMTM0LDE3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0
eWxlU2VsZWN0b3IKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNQVRITUwpCisgICAgc3Rh
dGljIGJvb2wgbG9hZGVkTWF0aE1MVXNlckFnZW50U2hlZXQ7CisgICAgaWYgKGUtPmlzTWF0aE1M
RWxlbWVudCgpICYmICFsb2FkZWRNYXRoTUxVc2VyQWdlbnRTaGVldCkgeworICAgICAgICAvLyBN
YXRoTUwgcnVsZXMuCisgICAgICAgIGxvYWRlZE1hdGhNTFVzZXJBZ2VudFNoZWV0ID0gdHJ1ZTsK
KyAgICAgICAgQ1NTU3R5bGVTaGVldCogbWF0aG1sU2hlZXQgPSBwYXJzZVVBU2hlZXQobWF0aG1s
VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1hdGhtbFVzZXJBZ2VudFN0eWxlU2hlZXQpKTsK
KyAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtYXRobWxTaGVldCwgc2Ny
ZWVuRXZhbCgpKTsKKyAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0
KG1hdGhtbFNoZWV0LCBwcmludEV2YWwoKSk7CisgICAgfQorI2VuZGlmCisgICAgCiAjaWYgRU5B
QkxFKFdNTCkKICAgICBzdGF0aWMgYm9vbCBsb2FkZWRXTUxVc2VyQWdlbnRTaGVldDsKICAgICBp
ZiAoZS0+aXNXTUxFbGVtZW50KCkgJiYgIWxvYWRlZFdNTFVzZXJBZ2VudFNoZWV0KSB7CkluZGV4
OiBXZWJDb3JlL2Nzcy9tYXRobWwuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL21hdGht
bC5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9tYXRobWwuY3NzCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI0NyBAQAorQG5hbWVzcGFjZSAiaHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCI7CisKKy8qIGFwcHJvdmVkICovCittYXRoIHsKKyAgICBmb250LWZhbWlseTog
U1RJWEdlbmVyYWwsICJOZXcgVGltZXMgUm9tYW4iOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICBwYWRkaW5nOiAwcHg7CisgICAgbWFyZ2luOiAwcHg7CisgICAgdGV4dC1pbmRlbnQ6
MDsKKyAgICBmb250LXNpemU6IDEuMWVtOworfQorbWF0aFtkaXNwbGF5PSJibG9jayJdIHsKKyAg
ICBmb250LWZhbWlseTogIk5ldyBUaW1lcyBSb21hbiIKKyAgICBkaXNwbGF5OiBibG9jazsKKwl0
ZXh0LWFsaWduOiBjZW50ZXI7CisJcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOworfQorCittc3Vi
ID4gKiArICogeworICAgdmVydGljYWwtYWxpZ246IHN1YjsKKyAgIGZvbnQtc2l6ZTogMC43NWVt
OworICAgbGluZS1oZWlnaHQ6IDAuNzVlbTsKK30KKworbXN1cCA+ICogKyAqIHsKKyAgIHZlcnRp
Y2FsLWFsaWduOiBzdXBlcjsKKyAgIGZvbnQtc2l6ZTogMC43NWVtOworICAgbGluZS1oZWlnaHQ6
IDAuNzVlbTsKK30KK21zdWJzdXAgPiAqIHsKKyAgICBtYXJnaW46IDBweDsKKyAgICBwYWRkaW5n
OiAwcHg7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKworbXN1YnN1cCA+ICogKyAq
IHsKKyAgIGZvbnQtc2l6ZTogMC43NWVtOworICAgbGluZS1oZWlnaHQ6IDAuNzVlbTsKK30KKwor
bXVuZGVyb3ZlciA+ICogKyAqLCBtb3ZlciA+ICogKyAqLCBtdW5kZXIgPiAqICsgKiB7CisgICBm
b250LXNpemU6IDAuNzVlbTsKKyAgIGxpbmUtaGVpZ2h0OiAwLjU2MjVlbTsKK30KKworbXJvdyB7
CisgICAgbGluZS1oZWlnaHQ6IDFlbTsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgIHZl
cnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKK21mZW5jZWQsIG1mcmFjIHsKKyAgICB2ZXJ0aWNh
bC1hbGlnbjogbWlkZGxlOworfQorCittZmVuY2VkID4gKiB7CisgICAgdmVydGljYWwtYWxpZ246
IG1pZGRsZTsKK30KKworbW8sIG1uLCBtaSB7CisgICBsaW5lLWhlaWdodDogMC43NWVtOworICAg
cGFkZGluZzogMHB4OworICAgbWFyZ2luOiAwcHg7Cit9CisKK21vW21hdGhzaXplPSJzbWFsbCJd
LCBtblttYXRoc2l6ZT0ic21hbGwiXSwgbWlbbWF0aHNpemU9InNtYWxsIl0geworICAgZm9udC1z
aXplOiAwLjc1ZW07CisgICBsaW5lLWhlaWdodDogMC41NjI1ZW07Cit9CisKK21vW21hdGhzaXpl
PSJub3JtYWwiXSxtblttYXRoc2l6ZT0ibm9ybWFsIl0sbWlbbWF0aHNpemU9Im5vcm1hbCJdIHsK
KyAgIGZvbnQtc2l6ZTogMWVtOworICAgbGluZS1oZWlnaHQ6IDAuNzVlbTsKK30KKworbW9bbWF0
aHNpemU9ImJpZyJdLCBtblttYXRoc2l6ZT0iYmlnIl0sIG1pW21hdGhzaXplPSJiaWciXSB7Cisg
ICBsaW5lLWhlaWdodDogMS4yZW07CisgICBmb250LXNpemU6IDEuNWVtOworfQorIAorYW5ub3Rh
dGlvbiwgYW5ub3RhdGlvbi14bWwgeworICAgIGRpc3BsYXk6bm9uZTsKK30KKworbXBoYW50b20g
eworICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKK30KK21lcnJvciB7CisgICAgb3V0bGluZTogc29s
aWQgdGhpbiByZWQ7Cit9CisKKworLyogcmFuZG9tICovCittc3FydAorCXtkaXNwbGF5OmlubGlu
ZS1ibG9jazsKKwltYXJnaW46MXB4IDAgMXB4IDIycHg7CisJYm9yZGVyLXRvcDpzb2xpZCAxcHg7
CisJYm9yZGVyLWxlZnQ6Z3Jvb3ZlIDJweDsKKwlwYWRkaW5nOjJweCA1cHggMCAwO30KK21zcXJ0
OmJlZm9yZQorCXtkaXNwbGF5OmlubGluZS1ibG9jazsKKwl2ZXJ0aWNhbC1hbGlnbjpib3R0b207
CisJY29udGVudDonJzsKKwl3aWR0aDoyMnB4OworCWhlaWdodDoxNHB4OworCWJhY2tncm91bmQt
cmVwZWF0Om5vLXJlcGVhdDsKKwltYXJnaW46MCAzcHggMCAtMjJweDt9Cittc3FydDpiZWZvcmUs
IG1yb290ID4gKiArICo6YWZ0ZXIKKwl7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uv
cG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQllBQUFBT0NBWUFBQUFyTWV6TkFB
QUFya2xFUVZSNDJtTmdJQXprZ0ppUmdZcEFHSWduQWZGdklGNEp4S3lVR3NnT3hLVkEvQVNJNXdD
eEhSQnZBK0s5UU14SHJxR1JRTHdlaURPQm1CZEpuQVdJNXdQeGVTQVdKOFZBUFNCT0FXSlRBdW82
Z1BndUVLc1FZNmdRRVBPUTRJaDhJSDRKeENZTU5BQmhRUHdPaU4xcFliZ3pFTDhDNGhoYUdHNEF4
TStCdUpnV2hpc0I4VzBnN3FPRjRTSkFmQnFJbDFFakk2RURiaURlQWNRN1NVeGxSQUdRYTVjQThS
a0dHb0ZlQUNHMUdHZHFlZ0pmQUFBQUFFbEZUa1N1UW1DQyIpO30KK21yb290CisJe2Rpc3BsYXk6
aW5saW5lLXRhYmxlOworCWRpcmVjdGlvbjpydGw7fQorbXJvb3QgPiAqCisJe2Rpc3BsYXk6dGFi
bGUtY2VsbDsKKwlkaXJlY3Rpb246bHRyOworCXRleHQtYWxpZ246bGVmdDt9Cittcm9vdCA+ICo6
Zmlyc3QtY2hpbGQKKwl7Ym9yZGVyLXRvcDpzb2xpZCAxcHg7CisJYm9yZGVyLWxlZnQ6Z3Jvb3Zl
IDJweDsKKwlwYWRkaW5nOjJweCA1cHggMCAzcHg7fQorbXJvb3QgPiAqICsgKgorCXt2ZXJ0aWNh
bC1hbGlnbjpib3R0b207CisJdGV4dC1hbGlnbjpyaWdodDsKKwlmb250LXNpemU6MC43ZW07CisJ
bGluZS1oZWlnaHQ6MWVtO30KK21yb290ID4gKiArICo6YWZ0ZXIKKwl7ZGlzcGxheTpibG9jazsK
Kwljb250ZW50OiIiOworCXdpZHRoOjIycHg7CisJaGVpZ2h0OjE0cHg7CisJbWFyZ2luLXJpZ2h0
Oi0xcHg7CisJbWFyZ2luLWxlZnQ6YXV0bzt9CittZW5jbG9zZQorCXtkaXNwbGF5OmlubGluZS10
YWJsZTsKKwlib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7CisJYm9yZGVyLXNwYWNpbmc6MC40ZXgg
MDt9CittZW5jbG9zZVtub3RhdGlvbj0idG9wIl0KKwl7Ym9yZGVyLXRvcDpzb2xpZCB0aGluO30K
K21lbmNsb3NlW25vdGF0aW9uPSJib3R0b20iXQorCXtib3JkZXItYm90dG9tOnNvbGlkIHRoaW47
fQorbWVuY2xvc2Vbbm90YXRpb249InJpZ2h0Il0KKwl7Ym9yZGVyLXJpZ2h0OnNvbGlkIHRoaW47
fQorbWVuY2xvc2Vbbm90YXRpb249ImxlZnQiXQorCXtib3JkZXItbGVmdDpzb2xpZCB0aGluO30K
K21lbmNsb3NlW25vdGF0aW9uPSJib3giXQorCXtib3JkZXI6c29saWQgdGhpbjt9CittZW5jbG9z
ZVtub3RhdGlvbj0iaG9yaXpvbnRhbHN0cmlrZSJdCisJe3RleHQtZGVjb3JhdGlvbjpsaW5lLXRo
cm91Z2g7fQorbXRhYmxlCisJe2Rpc3BsYXk6aW5saW5lLXRhYmxlOworCWxpbmUtaGVpZ2h0OjEu
NWVtOworCXRleHQtYWxpZ246Y2VudGVyOworCXZlcnRpY2FsLWFsaWduOm1pZGRsZTt9CittdHIK
Kwl7ZGlzcGxheTp0YWJsZS1yb3c7fQorbXRkCisJe2Rpc3BsYXk6dGFibGUtY2VsbDsKKwlwYWRk
aW5nOjAgMC41ZXg7fQorbXRhYmxlW2NvbHVtbmFsaWduPSJsZWZ0Il0sIG10cltjb2x1bW5hbGln
bj0ibGVmdCJdLCBtdGRbY29sdW1uYWxpZ249ImxlZnQiXQorCXt0ZXh0LWFsaWduOmxlZnQ7fQor
bXRhYmxlW2NvbHVtbmFsaWduPSJyaWdodCJdLCBtdHJbY29sdW1uYWxpZ249InJpZ2h0Il0sIG10
ZFtjb2x1bW5hbGlnbj0icmlnaHQiXQorCXt0ZXh0LWFsaWduOnJpZ2h0O30KK210YWJsZVtyb3dh
bGlnbj0idG9wIl0gbXRkLCBtdGFibGUgbXRyW3Jvd2FsaWduPSJ0b3AiXSBtdGQsIAorbWF0aCBt
dGFibGUgbXRyIG10ZFtyb3dhbGlnbj0idG9wIl0KKwl7dmVydGljYWwtYWxpZ246dG9wfQorbXRh
YmxlW3Jvd2FsaWduPSJib3R0b20iXSBtdGQsIG10YWJsZSBtdHJbcm93YWxpZ249ImJvdHRvbSJd
IG10ZCwgCittYXRoIG10YWJsZSBtdHIgbXRkW3Jvd2FsaWduPSJib3R0b20iXQorCXt2ZXJ0aWNh
bC1hbGlnbjpib3R0b219CittdGFibGVbcm93YWxpZ249ImNlbnRlciJdIG10ZCwgbXRhYmxlIG10
cltyb3dhbGlnbj0iY2VudGVyIl0gbXRkLCAKK21hdGggbXRhYmxlIG10ciBtdGRbcm93YWxpZ249
ImNlbnRlciJdCisJe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0KK210YWJsZVtmcmFtZT0ic29saWQi
XQorCXtib3JkZXI6c29saWQgdGhpbjt9CittdGFibGVbZnJhbWU9ImRhc2hlZCJdCisJe2JvcmRl
cjpkYXNoZWQgdGhpbjt9CittdGFibGVbcm93bGluZXM9InNvbGlkIl0sIG10YWJsZVtyb3dsaW5l
cz0iZGFzaGVkIl0sIAorbXRhYmxlW2NvbHVtbmxpbmVzPSJzb2xpZCJdLCBtdGFibGVbY29sdW1u
bGluZXM9ImRhc2hlZCJdCisJe2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt9CittdGFibGVbcm93
bGluZXM9InNvbGlkIl0gPiBtdHIgKyBtdHIKKwl7Ym9yZGVyLXRvcDpzb2xpZCB0aGluO30KK210
YWJsZVtyb3dsaW5lcz0iZGFzaGVkIl0gPiBtdHIgKyBtdHIKKwl7Ym9yZGVyLXRvcDpkYXNoZWQg
dGhpbjt9CittdGFibGVbY29sdW1ubGluZXM9InNvbGlkIl0gPiBtdHIgPiBtdGQgKyBtdGQKKwl7
Ym9yZGVyLWxlZnQ6c29saWQgdGhpbjt9CittdGFibGVbY29sdW1ubGluZXM9ImRhc2hlZCJdID4g
bXRyID4gbXRkICsgbXRkCisJe2JvcmRlci1sZWZ0OmRhc2hlZCB0aGluO30KK21zcGFjZVtsaW5l
YnJlYWs9Imdvb2RicmVhayJdOmJlZm9yZQorCXtjb250ZW50OiJcMjAwQiI7CisJd2hpdGUtc3Bh
Y2U6bm9ybWFsO30KK21zcGFjZVtsaW5lYnJlYWs9Im5ld2xpbmUiXTpiZWZvcmUsIG1zcGFjZVts
aW5lYnJlYWs9ImluZGVudGluZ25ld2xpbmUiXTpiZWZvcmUgCisJe2NvbnRlbnQ6IlwwMDBBIjsK
Kwl3aGl0ZS1zcGFjZTpwcmU7fQorbXNwYWNlW3dpZHRoXTpiZWZvcmUKKwl7Y29udGVudDpub3Jt
YWw7fQorbXNwYWNlW3dpZHRoPSJ2ZXJ5dGhpbm1hdGhzcGFjZSJdCisJe3BhZGRpbmc6MCAwLjA1
ZW07fQorbXNwYWNlW3dpZHRoPSJ0aGlubWF0aHNwYWNlIl0KKwl7cGFkZGluZzowIDAuMDhlbTt9
Cittc3BhY2Vbd2lkdGg9Im1lZGl1bW1hdGhzcGFjZSJdCisJe3BhZGRpbmc6MCAwLjExZW07fQor
bXNwYWNlW3dpZHRoPSJ0aGlja21hdGhzcGFjZSJdCisJe3BhZGRpbmc6MCAwLjE0ZW07fQorbXNw
YWNlW3dpZHRoPSJ2ZXJ5dGhpY2ttYXRoc3BhY2UiXQorCXtwYWRkaW5nOjAgMC4xN2VtO30KK21z
dGFjaywgbWxvbmdkaXYKKwl7ZGlzcGxheTppbmxpbmUtdGFibGU7CisJZm9udC1mYW1pbHk6bW9u
b3NwYWNlO30KK21zdGFjaworCXt0ZXh0LWFsaWduOnJpZ2h0OworCWJvcmRlci1jb2xsYXBzZTpj
b2xsYXBzZTt9Cittc3RhY2tbYWxpZ249J3RvcCddLCBtbG9uZ2RpdlthbGlnbj0ndG9wJ10KKwl7
dmVydGljYWwtYWxpZ246dG9wO30KK21zdGFja1thbGlnbj0nYm90dG9tJ10sIG1sb25nZGl2W2Fs
aWduPSdib3R0b20nXSAKKwl7dmVydGljYWwtYWxpZ246Ym90dG9tO30KK21zdGFja1thbGlnbj0n
Y2VudGVyJ10sIG1sb25nZGl2W2FsaWduPSdjZW50ZXInXQorCXt2ZXJ0aWNhbC1hbGlnbjptaWRk
bGU7fQorbXNsaW5lCisJe2Rpc3BsYXk6YmxvY2s7CisJYm9yZGVyLWJvdHRvbTpzb2xpZCB0aGlu
O30KK21zdGFjayA+ICosIG1sb25nZGl2ID4gbW46Zmlyc3QtY2hpbGQKKwl7ZGlzcGxheTp0YWJs
ZS1yb3c7fQorbWxvbmdkaXYgPiAqOmZpcnN0LWNoaWxkICsgKgorCXtkaXNwbGF5OnRhYmxlLWNl
bGw7fQorbWxvbmdkaXYgPiAqOmZpcnN0LWNoaWxkICsgKiArICoKKwl7Ym9yZGVyLXRvcDpzb2xp
ZCB0aGluO30KK21sb25nZGl2ID4gKjpmaXJzdC1jaGlsZDpiZWZvcmUKKwl7ZGlzcGxheTp0YWJs
ZS1jZWxsOworCWNvbnRlbnQ6J1xhMCc7fQorbWxvbmdkaXYgPiAqOmZpcnN0LWNoaWxkICsgKjph
ZnRlcgorCXtjb250ZW50OicpJzt9CittbG9uZ2RpdiA+ICoKKwl7ZGlzcGxheTpibG9jazt9Citt
c2NhcnJ5CisJe2Rpc3BsYXk6bm9uZTt9CittYWN0aW9uID4gKiArICoKKwl7ZGlzcGxheTpub25l
O30KK21hY3Rpb25bYWN0aW9udHlwZT0idG9vbHRpcCJdOmZvY3VzID4gKiArICosCittYWN0aW9u
W2FjdGlvbnR5cGU9InRvb2x0aXAiXTpob3ZlciA+ICogKyAqCisJe3Bvc2l0aW9uOmZpeGVkOwor
CWRpc3BsYXk6YmxvY2s7CisJdG9wOjA7CisJbGVmdDowOworCWJhY2tncm91bmQtY29sb3I6SW5m
b0JhY2tncm91bmQ7CisJY29sb3I6SW5mb1RleHQ7CisJcGFkZGluZzowLjVleDsKKwlib3JkZXI6
c29saWQgMXB4O30KKyAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA0ODA2NSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSwxMyBAQAogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJNYXRoTUxFbGVtZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgIk1hdGhNTE5h
bWVzLmgiCisjZW5kaWYKKworCiAjaWYgRU5BQkxFKFdNTCkKICNpbmNsdWRlICJXTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIldNTEVsZW1lbnQuaCIKQEAgLTc5Myw2ICs4MDAsMTAgQEAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbQogICAgIGVsc2UgaWYgKHFOYW1lLm5h
bWVzcGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCiAgICAgICAgIGUgPSBT
VkdFbGVtZW50RmFjdG9yeTo6Y3JlYXRlU1ZHRWxlbWVudChxTmFtZSwgdGhpcywgY3JlYXRlZEJ5
UGFyc2VyKTsKICNlbmRpZgorI2lmIEVOQUJMRShNQVRITUwpCisgICAgZWxzZSBpZiAocU5hbWUu
bmFtZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFjZVVSSSkKKyAgICAg
ICAgZSA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVNYXRoTUxFbGVtZW50KHFOYW1lLCB0
aGlzLCBjcmVhdGVkQnlQYXJzZXIpOworI2VuZGlmCiAjaWYgRU5BQkxFKFdNTCkKICAgICBlbHNl
IGlmIChxTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBXTUxOYW1lczo6d21sTmFtZXNwYWNlVVJJKQog
ICAgICAgICBlID0gV01MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZVdNTEVsZW1lbnQocU5hbWUsIHRo
aXMsIGNyZWF0ZWRCeVBhcnNlcik7CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA0ODA2NSkKKysrIFdlYkNvcmUvZG9t
L05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3NywxMiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgaXNTVkdFbGVtZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKE1BVEhNTCkKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbHNlCisgICAgc3RhdGljIGJvb2wgaXNNYXRoTUxFbGVt
ZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShXTUwpCiAg
ICAgdmlydHVhbCBib29sIGlzV01MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZWxzZQpJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBA
QAorLyoKKyAqICBNYXRoTUxFbGVtZW50LmNwcAorICogIFdlYkNvcmUKKyAqCisgKiAgQ3JlYXRl
ZCBieSBBbGV4IE1pbG93c2tpIG9uIDgvMjQvMDkuCisgKiAgQ29weXJpZ2h0IDIwMDkgQWxleCBN
aWxvd3NraS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgCisgCisgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
IAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIAorIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoTUxFbGVtZW50LmgiCisjaW5jbHVkZSAi
TWF0aE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCQordXNpbmcgbmFtZXNwYWNl
IE1hdGhNTE5hbWVzOworCQorTWF0aE1MRWxlbWVudDo6TWF0aE1MRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCis6IFN0eWxlZEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUVsZW1lbnRaZXJvUmVmQ291bnQpCit7Cit9CisJCitQ
YXNzUmVmUHRyPE1hdGhNTEVsZW1lbnQ+IE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisJcmV0dXJuIG5ldyBN
YXRoTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKK30KKworUmVuZGVyT2JqZWN0KiBNYXRo
TUxFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHls
ZSkKK3sKKwlyZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOwor
fQorCQorCQorfQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiAgTWF0aE1MRWxlbWVudC5oCisgKiAgV2ViQ29yZQorICoKKyAq
ICBDcmVhdGVkIGJ5IEFsZXggTWlsb3dza2kgb24gOC8yNC8wOS4KKyAqICBDb3B5cmlnaHQgMjAw
OSBBbGV4IE1pbG93c2tpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAKKyBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgCisg
Ki8KKworI2lmbmRlZiBNYXRoTUxFbGVtZW50X2gKKyNkZWZpbmUgTWF0aE1MRWxlbWVudF9oCisK
KyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCQorCWNsYXNzIE1hdGhNTEVsZW1lbnQgOiBwdWJsaWMgU3R5bGVkRWxl
bWVudCB7CisJcHVibGljOgorCQlzdGF0aWMgUGFzc1JlZlB0cjxNYXRoTUxFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKKwkJCisJCXZpcnR1
YWwgYm9vbCBpc01hdGhNTEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisJCQorCQl2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOworCQkKKwlwcm90ZWN0ZWQ6CisJCU1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKKwkJCisJfTsKKwkKK30KKworI2VuZGlmCisjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiAgTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKKyAqICBXZWJDb3JlCisgKgorICogIENyZWF0
ZWQgYnkgQWxleCBNaWxvd3NraSBvbiA4LzI2LzA5LgorICogIENvcHlyaWdodCAyMDA5IEFsZXgg
TWlsb3dza2kuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAK
KyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5oIgorI2lu
Y2x1ZGUgIlJlbmRlckZlbmNlZC5oIgorI2luY2x1ZGUgIlJlbmRlckZyYWN0aW9uLmgiCisjaW5j
bHVkZSAiUmVuZGVyTWF0aFN1YlN1cC5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhVbmRlck92ZXIu
aCIKKyNpbmNsdWRlICJNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgiCisjaW5jbHVkZSAi
TWF0aE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCQordXNpbmcgbmFtZXNwYWNl
IE1hdGhNTE5hbWVzOworCitNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKKzogTWF0aE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKK3sKK30KKwor
UGFzc1JlZlB0cjxNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50PiBNYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBuZXcgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCk7Cit9CisKK1JlbmRlck9iamVjdCogTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBSZW5k
ZXJTdHlsZSogc3R5bGUpCit7CisgICAgaWYgKHN0eWxlLT5jb250ZW50RGF0YSgpICYmIHN0eWxl
LT5kaXNwbGF5KCkhPUlOTElORV9CTE9DSykgeworICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0
OjpjcmVhdGVPYmplY3QodGhpcywgc3R5bGUpOworICAgIH0KKyAgICBSZW5kZXJPYmplY3QgKm9i
amVjdCA9IDA7CisgICAgaWYgKGxvY2FsTmFtZSgpPT0ibWZlbmNlZCIpIHsKKyAgICAgICAgb2Jq
ZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyRmVuY2VkKHRoaXMpOworICAgIH0gZWxzZSBpZiAobG9j
YWxOYW1lKCk9PSJtZnJhYyIpIHsKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVy
RnJhY3Rpb24odGhpcyk7CisgICAgfSBlbHNlIGlmIChsb2NhbE5hbWUoKT09Im1zdWJzdXAiKSB7
CisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhTdWJTdXAodGhpcyk7Cisg
ICAgfSBlbHNlIGlmIChsb2NhbE5hbWUoKT09Im1vdmVyIikgeworICAgICAgICBvYmplY3QgPSBu
ZXcgKGFyZW5hKSBSZW5kZXJNYXRoVW5kZXJPdmVyKHRoaXMpOworICAgIH0gZWxzZSBpZiAobG9j
YWxOYW1lKCk9PSJtdW5kZXIiKSB7CisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRl
ck1hdGhVbmRlck92ZXIodGhpcyk7CisgICAgfSBlbHNlIGlmIChsb2NhbE5hbWUoKT09Im11bmRl
cm92ZXIiKSB7CisgICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhVbmRlck92
ZXIodGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5k
ZXJNYXRoSW5saW5lQ29udGFpbmVyKHRoaXMpOworICAgIH0KKyAgICBvYmplY3QtPnNldFN0eWxl
KHN0eWxlKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCQorCQorfQorCisjZW5kaWYKKwpJbmRl
eDogV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqICBNYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50LmgKKyAqICBXZWJDb3JlCisgKgorICogIENyZWF0ZWQgYnkgQWxleCBNaWxv
d3NraSBvbiA4LzI2LzA5LgorICogIENvcHlyaWdodCAyMDA5IEFsZXggTWlsb3dza2kuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQg
cHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisjaWZuZGVmIE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnRfaAorI2RlZmluZSBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50X2gKKworI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisJCitjbGFzcyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50IDogcHVibGljIE1hdGhNTEVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOworICAgIAorICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgCitwcm90
ZWN0ZWQ6CisgICAgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOworICAgIAorfTsKKwkKK30KKworI2VuZGlmCisjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiAgTWF0aE1hdGhNTEVsZW1lbnQuY3BwCisgKiAgV2ViQ29yZQor
ICoKKyAqICBDcmVhdGVkIGJ5IEFsZXggTWlsb3dza2kgb24gOC8yNC8wOS4KKyAqICBDb3B5cmln
aHQgMjAwOSBBbGV4IE1pbG93c2tpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAKKyBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKwor
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIk1hdGhNTE1hdGhFbGVtZW50Lmgi
CisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCQordXNp
bmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitNYXRoTUxNYXRoRWxlbWVudDo6TWF0aE1MTWF0
aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQorOiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorewor
fQorCitQYXNzUmVmUHRyPE1hdGhNTE1hdGhFbGVtZW50PiBNYXRoTUxNYXRoRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKK3sK
KwlyZXR1cm4gbmV3IE1hdGhNTE1hdGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KTsKK30KKwor
fQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiAgTWF0aE1hdGhNTEVsZW1lbnQuaAorICogIFdlYkNvcmUK
KyAqCisgKiAgQ3JlYXRlZCBieSBBbGV4IE1pbG93c2tpIG9uIDgvMjQvMDkuCisgKiAgQ29weXJp
Z2h0IDIwMDkgQWxleCBNaWxvd3NraS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgCisgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorIAorICovCisKKyNpZm5kZWYgTWF0aE1MTWF0aEVsZW1lbnRfaAorI2RlZmluZSBNYXRoTUxN
YXRoRWxlbWVudF9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCQorCWNsYXNzIE1h
dGhNTE1hdGhFbGVtZW50IDogcHVibGljIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQgewor
CXB1YmxpYzoKKwkJc3RhdGljIFBhc3NSZWZQdHI8TWF0aE1MTWF0aEVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOworCQkKKwlwcm90ZWN0ZWQ6
CisJCU1hdGhNTE1hdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Kik7CisJCQorCX07CisJCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL21h
dGhtbC9SZW5kZXJGZW5jZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRl
ckZlbmNlZC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJGZW5jZWQu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqICBSZW5kZXJGZW5jZWQu
Y3BwCisgKiAgV2ViQ29yZQorICoKKyAqICBDcmVhdGVkIGJ5IEFsZXggTWlsb3dza2kgb24gOC8y
NS8wOS4KKyAqICBDb3B5cmlnaHQgMjAwOSBBbGV4IE1pbG93c2tpLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAK
KyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAor
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVu
ZGVyRmVuY2VkLmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCisjaW5jbHVkZSAiUmVuZGVy
VGV4dC5oIgorI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisJCit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CisKK1JlbmRlckZlbmNlZDo6UmVuZGVy
RmVuY2VkKE5vZGUgKmZlbmNlZCkgOiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyKGZlbmNlZCkg
Cit7CisJQXRvbWljU3RyaW5nIHNlcGFyYXRvcnMgPSAoKEVsZW1lbnQgKilmZW5jZWQpLT5nZXRB
dHRyaWJ1dGUoInNlcGFyYXRvcnMiKTsKKwlWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnM7CisJaWYg
KCFzZXBhcmF0b3JzLmlzTnVsbCgpKSB7CisJCWZvciAodW5zaWduZWQgaW50IGk9MDsgaTxzZXBh
cmF0b3JzLmxlbmd0aCgpOyBpKyspIHsKKwkJCWlmICghaXNTcGFjZU9yTmV3bGluZShzZXBhcmF0
b3JzW2ldKSkgeworCQkJCWNoYXJhY3RlcnMuYXBwZW5kKHNlcGFyYXRvcnNbaV0pOworCQkJfQor
CSAgICB9CisgICAgICAgIG1fc2VwYXJhdG9ycyA9IHNlcGFyYXRvcnMubGVuZ3RoKCk9PTAgPyAw
IDogU3RyaW5nSW1wbDo6Y3JlYXRlKGNoYXJhY3RlcnMuZGF0YSgpLGNoYXJhY3RlcnMuc2l6ZSgp
KTsKKwl9IGVsc2UgeworICAgICAgICBtX3NlcGFyYXRvcnMgPSBTdHJpbmdJbXBsOjpjcmVhdGUo
IiwiKTsKKyAgICB9CisJCit9CisKK3ZvaWQgUmVuZGVyRmVuY2VkOjptYWtlRmVuY2VzKCkgewor
CS8vIGFkZCBmZW5jaW5nCisJRWxlbWVudCAqZmVuY2VkID0gKEVsZW1lbnQgKilub2RlKCk7CisJ
QXRvbWljU3RyaW5nIG9wZW5WYWx1ZSA9IGZlbmNlZC0+Z2V0QXR0cmlidXRlKCJvcGVuIik7CisJ
QXRvbWljU3RyaW5nIGNsb3NlVmFsdWUgPSBmZW5jZWQtPmdldEF0dHJpYnV0ZSgiY2xvc2UiKTsK
KyAgICAKKyAgICBMZW5ndGggcGFkKChpbnQpKHN0eWxlKCktPmZvbnRTaXplKCkqMC4xKSxGaXhl
ZCk7CisgICAgCisJUmVuZGVySW5saW5lICpvcGVuID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5k
ZXJJbmxpbmUoZG9jdW1lbnQoKSk7CisJUmVmUHRyPFJlbmRlclN0eWxlPiBvcGVuU3R5bGUgPSBS
ZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisJb3BlblN0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsK
KyAgICBvcGVuU3R5bGUtPnNldFBhZGRpbmdSaWdodChwYWQpOworCW9wZW4tPnNldFN0eWxlKG9w
ZW5TdHlsZS5yZWxlYXNlKCkpOworCVJlbmRlclRleHQgKm9wZW5UZXh0ID0gbmV3IChyZW5kZXJB
cmVuYSgpKSBSZW5kZXJUZXh0KGRvY3VtZW50KCksb3BlblZhbHVlLmlzTnVsbCgpID8gU3RyaW5n
SW1wbDo6Y3JlYXRlKCIoIikgOiBvcGVuVmFsdWUuaW1wbCgpKTsKKwlvcGVuVGV4dC0+c2V0U3R5
bGUob3Blbi0+c3R5bGUoKSk7CisJb3Blbi0+YWRkQ2hpbGQob3BlblRleHQpOworCVJlbmRlckJs
b2NrOjphZGRDaGlsZChvcGVuKTsKKwlSZW5kZXJJbmxpbmUgKmNsb3NlID0gbmV3IChyZW5kZXJB
cmVuYSgpKSBSZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSk7CisJUmVmUHRyPFJlbmRlclN0eWxlPiBj
bG9zZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworCWNsb3NlU3R5bGUtPmluaGVyaXRG
cm9tKHN0eWxlKCkpOworICAgIGNsb3NlU3R5bGUtPnNldFBhZGRpbmdMZWZ0KHBhZCk7CisJY2xv
c2UtPnNldFN0eWxlKGNsb3NlU3R5bGUucmVsZWFzZSgpKTsKKwlSZW5kZXJUZXh0ICpjbG9zZVRl
eHQgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHQoZG9jdW1lbnQoKSxjbG9zZVZhbHVl
LmlzTnVsbCgpID8gU3RyaW5nSW1wbDo6Y3JlYXRlKCIpIikgOiBjbG9zZVZhbHVlLmltcGwoKSk7
CisJY2xvc2VUZXh0LT5zZXRTdHlsZShjbG9zZS0+c3R5bGUoKSk7CisJY2xvc2UtPmFkZENoaWxk
KGNsb3NlVGV4dCk7CisJUmVuZGVyQmxvY2s6OmFkZENoaWxkKGNsb3NlKTsKK30KKwordm9pZCBS
ZW5kZXJGZW5jZWQ6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQpCit7CisJaWYgKGlzRW1wdHkoKSkgeworCQltYWtlRmVuY2VzKCk7CisJfQor
ICAgIAorICAgIGlmIChtX3NlcGFyYXRvcnMuZ2V0KCkpIHsKKyAgICAgICAgdW5zaWduZWQgaW50
IGNvdW50ID0gMDsKKyAgICAgICAgTm9kZSAqcG9zaXRpb24gPSAoRWxlbWVudCAqKWNoaWxkLT5u
b2RlKCk7CisgICAgICAgIHdoaWxlIChwb3NpdGlvbikgeworICAgICAgICAgICAgaWYgKHBvc2l0
aW9uLT5ub2RlVHlwZSgpPT1Ob2RlOjpFTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgICAgICBj
b3VudCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi0+
cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50PjEpIHsKKyAg
ICAgICAgICAgIFVDaGFyIHNlcGFyYXRvcjsKKyAgICAgICAgICAgIGlmICgoY291bnQtMSk+PW1f
c2VwYXJhdG9ycy5nZXQoKS0+bGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBzZXBhcmF0b3Ig
PSAoKm1fc2VwYXJhdG9ycy5nZXQoKSlbbV9zZXBhcmF0b3JzLmdldCgpLT5sZW5ndGgoKS0xXTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2VwYXJhdG9yID0gKCptX3Nl
cGFyYXRvcnMuZ2V0KCkpWyhjb3VudC0xKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBS
ZW5kZXJJbmxpbmUgKnNlcGFyYXRvcklubGluZSA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVy
SW5saW5lKGRvY3VtZW50KCkpOworICAgICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzZXBh
cmF0b3JTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIHNlcGFyYXRv
clN0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICAgICAgICAgIExlbmd0aCBwYWQoKGlu
dCkoc3R5bGUoKS0+Zm9udFNpemUoKSowLjIpLEZpeGVkKTsKKyAgICAgICAgICAgIHNlcGFyYXRv
clN0eWxlLT5zZXRQYWRkaW5nTGVmdChwYWQpOworICAgICAgICAgICAgc2VwYXJhdG9yU3R5bGUt
PnNldFBhZGRpbmdSaWdodChwYWQpOworICAgICAgICAgICAgc2VwYXJhdG9ySW5saW5lLT5zZXRT
dHlsZShzZXBhcmF0b3JTdHlsZS5yZWxlYXNlKCkpOworICAgICAgICAgICAgUmVuZGVyVGV4dCAq
c2VwYXJhdG9yVGV4dCA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dChkb2N1bWVudCgp
LFN0cmluZ0ltcGw6OmNyZWF0ZSgmc2VwYXJhdG9yLDEpKTsKKyAgICAgICAgICAgIHNlcGFyYXRv
clRleHQtPnNldFN0eWxlKHNlcGFyYXRvcklubGluZS0+c3R5bGUoKSk7CisgICAgICAgICAgICBz
ZXBhcmF0b3JJbmxpbmUtPmFkZENoaWxkKHNlcGFyYXRvclRleHQpOworICAgICAgICAgICAgUmVu
ZGVyQmxvY2s6OmFkZENoaWxkKHNlcGFyYXRvcklubGluZSxiZWZvcmVDaGlsZCA/IGJlZm9yZUNo
aWxkIDogbGFzdENoaWxkKCkpOworICAgICAgICB9CisgICAgfQorICAgIC8vIGlmIHdlIGhhdmUg
YSBibG9jaywgd2UnbGwgd3JhcCBpdCBpbiBhbiBpbmxpbmUtYmxvY2sKKyAgICBpZiAoY2hpbGQt
PmlzQmxvY2tGbG93KCkpIHsKKyAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gbmV3IChyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgbmV3U3R5
bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShJ
TkxJTkVfQkxPQ0spOworICAgICAgICBibG9jay0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgp
KTsKKyAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKGJsb2NrLCBiZWZvcmVDaGlsZCA/IGJl
Zm9yZUNoaWxkIDogbGFzdENoaWxkKCkpOworICAgICAgICBibG9jay0+YWRkQ2hpbGQoY2hpbGQp
OwkKKyAgICB9IGVsc2UgeworICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQoY2hpbGQsYmVm
b3JlQ2hpbGQgPyBiZWZvcmVDaGlsZCA6IGxhc3RDaGlsZCgpKTsKKyAgICB9Cit9CisKK3ZvaWQg
UmVuZGVyRmVuY2VkOjpsYXlvdXQoKSB7CisJaWYgKGlzRW1wdHkoKSkgeworCQltYWtlRmVuY2Vz
KCk7CisJfQorICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKKwlSZW5kZXJCb3hNb2RlbE9iamVj
dCAqb3BlbiA9IChSZW5kZXJCb3hNb2RlbE9iamVjdCAqKWZpcnN0Q2hpbGQoKTsKKwlSZW5kZXJC
b3hNb2RlbE9iamVjdCAqY2xvc2UgPSAoUmVuZGVyQm94TW9kZWxPYmplY3QgKilsYXN0Q2hpbGQo
KTsKKwlpbnQgbWF4SGVpZ2h0ID0gMDsKKwlSZW5kZXJPYmplY3QgKmN1cnJlbnQgPSBvcGVuLT5u
ZXh0U2libGluZygpOworCXdoaWxlIChjdXJyZW50IT1jbG9zZSkgeworCSAgICBpZiAoY3VycmVu
dC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CisJCSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCAqYm94
ID0gKFJlbmRlckJveE1vZGVsT2JqZWN0ICopY3VycmVudDsKKwkJCWlmIChib3gtPm9mZnNldEhl
aWdodCgpPm1heEhlaWdodCkgeworCQkJCW1heEhlaWdodCA9IGJveC0+b2Zmc2V0SGVpZ2h0KCk7
CisJCQl9CisJCX0KKwkJY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCk7CisJfQorCWlm
IChtYXhIZWlnaHQ+MCkgeworCQlib29sIGRvTGF5b3V0QWdhaW4gPSBmYWxzZTsKKyAgICAgICAg
aW50IGZlbmNlSGVpZ2h0ID0gKGludCkobWF4SGVpZ2h0KjEuMTUpOworICAgICAgICAvLyBUT0RP
OiBmb250IGhhY2shISEKKyAgICAgICAgLy9Gb250RmFtaWx5IGZlbmNlRmFtaWx5OworICAgICAg
ICAvL2ZlbmNlRmFtaWx5LnNldEZhbWlseShBdG9taWNTdHJpbmcoIk5ldyBUaW1lcyBSb21hbiIp
KTsKKwkJaWYgKG9wZW4tPm9mZnNldEhlaWdodCgpPGZlbmNlSGVpZ2h0KSB7CisJCQljb25zdCBG
b250RGVzY3JpcHRpb24gb2xkRGVzYyA9IG9wZW4tPnN0eWxlKCktPmZvbnQoKS5mb250RGVzY3Jp
cHRpb24oKTsKKwkJCUZvbnREZXNjcmlwdGlvbiAqZGVzYyA9IG5ldyBGb250RGVzY3JpcHRpb24o
KTsKKwkJCWRlc2MtPnNldElzQWJzb2x1dGVTaXplKHRydWUpOworICAgICAgICAgICAgLy8gVGhp
cyBkb2VzIG5vdCB3b3JrIHByb3Blcmx5CisgICAgICAgICAgICBkZXNjLT5zZXRGYW1pbHkob2xk
RGVzYy5mYW1pbHkoKSk7CisgICAgICAgICAgICAvL2Rlc2MtPnNldEZhbWlseShmZW5jZUZhbWls
eSk7CisJCQlkZXNjLT5zZXRXZWlnaHQob2xkRGVzYy53ZWlnaHQoKSk7CisJCQlkZXNjLT5zZXRT
bWFsbENhcHMob2xkRGVzYy5zbWFsbENhcHMoKSk7CisJCQlkZXNjLT5zZXRJdGFsaWMob2xkRGVz
Yy5pdGFsaWMoKSk7CisJCQlkZXNjLT5zZXRTcGVjaWZpZWRTaXplKGZlbmNlSGVpZ2h0KTsKKwkJ
CWRlc2MtPnNldENvbXB1dGVkU2l6ZShmZW5jZUhlaWdodCk7CisJCQlvcGVuLT5zdHlsZSgpLT5z
ZXRGb250RGVzY3JpcHRpb24oKmRlc2MpOworCQkJb3Blbi0+c3R5bGUoKS0+Zm9udCgpLnVwZGF0
ZShvcGVuLT5zdHlsZSgpLT5mb250KCkuZm9udFNlbGVjdG9yKCkpOworCQkJLy9vcGVuLT51cGRh
dGVCb3hNb2RlbEluZm9Gcm9tU3R5bGUoKTsKKyAgICAgICAgICAgIG9wZW4tPm1hcmtDb250YWlu
aW5nQmxvY2tzRm9yTGF5b3V0KCk7CisJCQlkb0xheW91dEFnYWluID0gdHJ1ZTsKKwkJfQorCQlp
ZiAoY2xvc2UtPm9mZnNldEhlaWdodCgpPGZlbmNlSGVpZ2h0KSB7CisJCQljb25zdCBGb250RGVz
Y3JpcHRpb24gb2xkRGVzYyA9IGNsb3NlLT5zdHlsZSgpLT5mb250KCkuZm9udERlc2NyaXB0aW9u
KCk7CisJCQlGb250RGVzY3JpcHRpb24gKmRlc2MgPSBuZXcgRm9udERlc2NyaXB0aW9uKCk7CisJ
CQlkZXNjLT5zZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKKyAgICAgICAgICAgIGRlc2MtPnNldEZh
bWlseShvbGREZXNjLmZhbWlseSgpKTsKKyAgICAgICAgICAgIC8vZGVzYy0+c2V0RmFtaWx5KGZl
bmNlRmFtaWx5KTsKKwkJCWRlc2MtPnNldFdlaWdodChvbGREZXNjLndlaWdodCgpKTsKKwkJCWRl
c2MtPnNldFNtYWxsQ2FwcyhvbGREZXNjLnNtYWxsQ2FwcygpKTsKKwkJCWRlc2MtPnNldEl0YWxp
YyhvbGREZXNjLml0YWxpYygpKTsKKwkJCWRlc2MtPnNldFNwZWNpZmllZFNpemUoZmVuY2VIZWln
aHQpOworCQkJZGVzYy0+c2V0Q29tcHV0ZWRTaXplKGZlbmNlSGVpZ2h0KTsKKwkJCWNsb3NlLT5z
dHlsZSgpLT5zZXRGb250RGVzY3JpcHRpb24oKmRlc2MpOworCQkJY2xvc2UtPnN0eWxlKCktPmZv
bnQoKS51cGRhdGUob3Blbi0+c3R5bGUoKS0+Zm9udCgpLmZvbnRTZWxlY3RvcigpKTsKKwkJCS8v
Y2xvc2UtPnVwZGF0ZUJveE1vZGVsSW5mb0Zyb21TdHlsZSgpOworCQkJZG9MYXlvdXRBZ2FpbiA9
IHRydWU7CisJCX0KKwkJaWYgKGRvTGF5b3V0QWdhaW4pIHsKKyAgICAgICAgICAgIHN0eWxlKCkt
PnNldEhlaWdodChMZW5ndGgoZmVuY2VIZWlnaHQsRml4ZWQpKTsKKwkJCS8vdXBkYXRlQm94TW9k
ZWxJbmZvRnJvbVN0eWxlKCk7CisgICAgICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0
aHNSZWNhbGMoKTsKKwkJCW1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7CisgICAgICAg
ICAgICBvcGVuLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKwkJCW9wZW4t
PmZpcnN0Q2hpbGQoKS0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CisJCQlj
bG9zZS0+Zmlyc3RDaGlsZCgpLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsK
KwkJfQorCX0KK30KKworfQkKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJG
ZW5jZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJGZW5jZWQuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlckZlbmNlZC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUyIEBACisvKgorICogIFJlbmRlckZlbmNlZC5oCisgKiAgV2ViQ29yZQorICoK
KyAqICBDcmVhdGVkIGJ5IEFsZXggTWlsb3dza2kgb24gOC8yNS8wOS4KKyAqICBDb3B5cmlnaHQg
MjAwOSBBbGV4IE1pbG93c2tpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAKKyBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
CisgKi8KKworI2lmbmRlZiBSZW5kZXJGZW5jZWRfaAorI2RlZmluZSBSZW5kZXJGZW5jZWRfaAor
CisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhJbmxpbmVDb250YWlu
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCQorY2xhc3MgUmVuZGVyRmVuY2VkIDogcHVi
bGljIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIgeworcHVibGljOgorCVJlbmRlckZlbmNlZChO
b2RlICpmcmFjdGlvbik7CisJdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCk7Citwcml2YXRlOgorCXZvaWQgbWFrZUZlbmNlcygpOworCVJlZlB0
cjxTdHJpbmdJbXBsPiAgbV9zZXBhcmF0b3JzOworfTsKKwkKK30KKworI2VuZGlmCisKKyNlbmRp
ZgpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyRnJhY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbWF0aG1sL1JlbmRlckZyYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvbWF0aG1sL1JlbmRlckZyYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBA
QAorLyoKKyAqICBSZW5kZXJGcmFjdGlvbi5jcHAKKyAqICBXZWJDb3JlCisgKgorICogIENyZWF0
ZWQgYnkgQWxleCBNaWxvd3NraSBvbiA4LzI1LzA5LgorICogIENvcHlyaWdodCAyMDA5IEFsZXgg
TWlsb3dza2kuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAK
KyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiTWF0
aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJGcmFjdGlvbi5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisJCit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CisKK1JlbmRlckZyYWN0aW9u
OjpSZW5kZXJGcmFjdGlvbihOb2RlICpmcmFjdGlvbikgOiBSZW5kZXJNYXRoSW5saW5lQ29udGFp
bmVyKGZyYWN0aW9uKSAKK3sKKwlzZXRDaGlsZHJlbklubGluZShmYWxzZSk7Cit9CisKK3ZvaWQg
UmVuZGVyRnJhY3Rpb246OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQpCit7CisJLy8gVE9ETzogbXVzdCBoYW5kbGUgYmV2ZWxsZWQ9dHJ1ZQor
ICAgIAorICAgIFJlbmRlckJsb2NrKiByb3cgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJs
b2NrKGRvY3VtZW50KCkpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcm93U3R5bGUgPSBtYWtl
QmxvY2tTdHlsZSgpOworCisgICAgcm93U3R5bGUtPnNldFRleHRBbGlnbihDRU5URVIpOworICAg
IExlbmd0aCBwYWQoKGludCkocm93U3R5bGUtPmZvbnRTaXplKCkqMC4yKSxGaXhlZCk7CisgICAg
cm93U3R5bGUtPnNldFBhZGRpbmdMZWZ0KHBhZCk7CisgICAgcm93U3R5bGUtPnNldFBhZGRpbmdS
aWdodChwYWQpOworICAgIAorICAgIC8vIGFkZCBhIGJvcmRlciB0b3AgaWYgdGhpcyBpcyB0aGUg
ZGVub21pbmF0b3IKKyAgICBTdHJpbmcgYXR0TmFtZTsKKyAgICBpZiAoIWlzRW1wdHkoKSkgewor
ICAgICAgICByb3dTdHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgoMSk7CisgICAgICAgIHJvd1N0eWxl
LT5zZXRCb3JkZXJUb3BTdHlsZShTT0xJRCk7CisgICAgICAgIHJvd1N0eWxlLT5zZXRCb3JkZXJU
b3BDb2xvcihDb2xvcigwLDAsMCkpOworICAgICAgICByb3dTdHlsZS0+c2V0UGFkZGluZ1RvcChM
ZW5ndGgoMyxGaXhlZCkpOworICAgICAgICBhdHROYW1lID0gImRlbm9tYWxpZ24iOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGF0dE5hbWUgPSAibnVtYWxpZ24iOworICAgIH0KKyAgICAvLyBhbGln
biB0aGUgY29udGVudHMKKyAgICBFbGVtZW50ICpmcmFjdGlvbiA9IChFbGVtZW50ICopbm9kZSgp
OworICAgIFN0cmluZyBhbGlnbiA9IGZyYWN0aW9uLT5nZXRBdHRyaWJ1dGUoYXR0TmFtZSk7Cisg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFsaWduLCJsZWZ0IikpIHsKKyAgICAgICAgcm93U3R5
bGUtPnNldFRleHRBbGlnbihMRUZUKTsKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGFsaWduLCJyaWdodCIpKSB7CisgICAgICAgIHJvd1N0eWxlLT5zZXRUZXh0QWxpZ24oUklHSFQp
OworICAgIH0KKyAgICBTdHJpbmcgdGhpY2tuZXNzID0gZnJhY3Rpb24tPmdldEF0dHJpYnV0ZSgi
bGluZXRoaWNrbmVzcyIpOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0aGlja25lc3MsInRo
aW4iKSkgeworICAgICAgICByb3dTdHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgoMSk7CisgICAgfSBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh0aGlja25lc3MsIm1lZGl1bSIpKSB7CisgICAgICAg
IHJvd1N0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aCgzKTsKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHRoaWNrbmVzcywidGhpY2siKSkgeworICAgICAgICByb3dTdHlsZS0+c2V0Qm9y
ZGVyVG9wV2lkdGgoNSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVE9ETzogcGFyc2UgdW5p
dHMKKyAgICB9CisgICAgcm93LT5zZXRTdHlsZShyb3dTdHlsZS5yZWxlYXNlKCkpOworICAgIFJl
bmRlckJsb2NrOjphZGRDaGlsZChyb3csIGJlZm9yZUNoaWxkKTsKKyAgICByb3ctPmFkZENoaWxk
KGNoaWxkKTsJCit9CisJCit9CisKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5k
ZXJGcmFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlckZyYWN0aW9u
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJGcmFjdGlvbi5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogIFJlbmRlckZyYWN0aW9uLmgKKyAqICBX
ZWJDb3JlCisgKgorICogIENyZWF0ZWQgYnkgQWxleCBNaWxvd3NraSBvbiA4LzI1LzA5LgorICog
IENvcHlyaWdodCAyMDA5IEFsZXggTWlsb3dza2kuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
IAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAKKyAqLworCisjaWZuZGVmIFJlbmRlckZhY3Rpb25faAorI2RlZmluZSBSZW5k
ZXJGYWN0aW9uX2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRo
SW5saW5lQ29udGFpbmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVy
RnJhY3Rpb24gOiBwdWJsaWMgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lciB7CitwdWJsaWM6CisJ
UmVuZGVyRnJhY3Rpb24oTm9kZSAqZnJhY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7Citw
cml2YXRlOgorfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGht
bC9SZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21h
dGhtbC9SZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvbWF0aG1sL1JlbmRlck1hdGhJbmxpbmVDb250YWluZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDgyIEBACisvKgorICogIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIuY3BwCisgKiAg
V2ViQ29yZQorICoKKyAqICBDcmVhdGVkIGJ5IEFsZXggTWlsb3dza2kgb24gOC8yNi8wOS4KKyAq
ICBDb3B5cmlnaHQgMjAwOSBBbGV4IE1pbG93c2tpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1B
VEhNTCkKKworI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aElu
bGluZUNvbnRhaW5lci5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgorI2luY2x1ZGUgIlJl
bmRlclRleHQuaCIKKyNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCQordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitSZW5kZXJNYXRoSW5saW5l
Q29udGFpbmVyOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyKE5vZGUgKmZlbmNlZCkgOiBSZW5k
ZXJCbG9jayhmZW5jZWQpIAoreworfQorCit2b2lkIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXI6
OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlKSB7CisgICAgLy8gTWFrZSBz
dXJlIHdlIGFsd2F5cyBoYXZlIGlubGluZS1ibG9jayBhcyBvdXIgc3R5bGUKKyAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIG5ld1N0
eWxlLT5pbmhlcml0RnJvbShzdHlsZS5nZXQoKSk7CisgICAgbmV3U3R5bGUtPnNldERpc3BsYXko
SU5MSU5FX0JMT0NLKTsKKyAgICBSZW5kZXJCbG9jazo6c2V0U3R5bGUobmV3U3R5bGUucmVsZWFz
ZSgpKTsJCit9CisKK2Jvb2wgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lcjo6aXNDaGlsZEFsbG93
ZWQoUmVuZGVyT2JqZWN0ICpjaGlsZCwgUmVuZGVyU3R5bGUgKikgY29uc3QKK3sKKyAgICByZXR1
cm4gY2hpbGQtPm5vZGUoKSAmJiBjaGlsZC0+bm9kZSgpLT5ub2RlVHlwZSgpPT1Ob2RlOjpFTEVN
RU5UX05PREUgPyB0cnVlIDogZmFsc2U7Cit9CisKK1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVy
TWF0aElubGluZUNvbnRhaW5lcjo6bWFrZUJsb2NrU3R5bGUoKSB7CisgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBuZXdTdHlsZS0+
aW5oZXJpdEZyb20oc3R5bGUoKSk7CisgICAgbmV3U3R5bGUtPnNldERpc3BsYXkoQkxPQ0spOwor
ICAgIAorICAgIG5ld1N0eWxlLT5zZXRQYWRkaW5nVG9wKExlbmd0aCgwLEZpeGVkKSk7CisgICAg
bmV3U3R5bGUtPnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKDAsRml4ZWQpKTsKKyAgICBuZXdTdHls
ZS0+c2V0UGFkZGluZ0xlZnQoTGVuZ3RoKDAsRml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0UGFk
ZGluZ1JpZ2h0KExlbmd0aCgwLEZpeGVkKSk7CisgICAgbmV3U3R5bGUtPnNldE1hcmdpblRvcChM
ZW5ndGgoMCxGaXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5Cb3R0b20oTGVuZ3RoKDAs
Rml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0TWFyZ2luTGVmdChMZW5ndGgoMCxGaXhlZCkpOwor
ICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5SaWdodChMZW5ndGgoMCxGaXhlZCkpOworICAgIG5ld1N0
eWxlLT5zZXRMaW5lSGVpZ2h0KExlbmd0aChuZXdTdHlsZS0+Zm9udFNpemUoKSxGaXhlZCkpOwor
ICAgIC8vbmV3U3R5bGUtPnNldEJvcmRlckJvdHRvbUNvbG9yKENvbG9yKDI1NSwwLDApKTsKKyAg
ICAvL25ld1N0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aCgxKTsKKyAgICAvL25ld1N0eWxlLT5z
ZXRCb3JkZXJCb3R0b21TdHlsZShTT0xJRCk7CisKKyAgICByZXR1cm4gbmV3U3R5bGU7Cit9CisK
K30JCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aElubGluZUNvbnRh
aW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhJbmxpbmVDb250
YWluZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhJbmxpbmVD
b250YWluZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqICBSZW5kZXJN
YXRoSW5saW5lQ29udGFpbmVyLmgKKyAqICBXZWJDb3JlCisgKgorICogIENyZWF0ZWQgYnkgQWxl
eCBNaWxvd3NraSBvbiA4LzI2LzA5LgorICogIENvcHlyaWdodCAyMDA5IEFsZXggTWlsb3dza2ku
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisjaWZuZGVmIFJl
bmRlck1hdGhJbmxpbmVDb250YWluZXJfaAorI2RlZmluZSBSZW5kZXJNYXRoSW5saW5lQ29udGFp
bmVyX2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisJCitjbGFzcyBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVy
IDogcHVibGljIFJlbmRlckJsb2NrIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJNYXRoSW5saW5lQ29u
dGFpbmVyKE5vZGUgKmNvbnRhaW5lcik7CisgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlKFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+KTsJCisgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKFJl
bmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3Q7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCBSZWZQdHI8UmVuZGVyU3R5bGU+IG1ha2VCbG9ja1N0eWxlKCk7Cit9OworCQorfQorCisjZW5k
aWYKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoU3ViU3VwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoU3ViU3VwLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhTdWJTdXAuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqICBSZW5kZXJNYXRoU3ViU3VwLmNwcAorICogIFdl
YkNvcmUKKyAqCisgKiAgQ3JlYXRlZCBieSBBbGV4IE1pbG93c2tpIG9uIDgvMjYvMDkuCisgKiAg
Q29weXJpZ2h0IDIwMDkgQWxleCBNaWxvd3NraS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
CisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRI
TUwpCisKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhTdWJT
dXAuaCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0Lmgi
CisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKKyNp
bmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisJCit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CisK
K1JlbmRlck1hdGhTdWJTdXA6OlJlbmRlck1hdGhTdWJTdXAoTm9kZSAqc3Vic3VwKSA6IFJlbmRl
ck1hdGhJbmxpbmVDb250YWluZXIoc3Vic3VwKSxtX3NjcmlwdHMoMCkKK3sKK30KKwordm9pZCBS
ZW5kZXJNYXRoU3ViU3VwOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkKQoreworICAgIGlmIChtX3NjcmlwdHMpIHsKKyAgICAgICAgLy8gd2Ug
aGF2ZSBzdWJzY3JpcHRzLCBzbyBhZGQgYXMgYSBzdWJzY3JpcHQKKyAgICAgICAgCisgICAgICAg
IGJvb2wgZmlyc3RSb3cgPSAhbV9zY3JpcHRzLT5oYXNTZWN0aW9ucygpOworICAgICAgICAKKyAg
ICAgICAgLy8gY3JlYXRlIHRoZSB0YWJsZSByb3cKKyAgICAgICAgUmVuZGVyT2JqZWN0ICpyb3cg
PSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRhYmxlUm93KGRvY3VtZW50KCkpOworICAgICAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvd1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwor
ICAgICAgICByb3dTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7CisgICAgICAgIHJvd1N0eWxl
LT5zZXREaXNwbGF5KFRBQkxFX1JPVyk7CisgICAgICAgIHJvd1N0eWxlLT5zZXRQYWRkaW5nVG9w
KExlbmd0aCgwLEZpeGVkKSk7CisgICAgICAgIHJvd1N0eWxlLT5zZXRQYWRkaW5nQm90dG9tKExl
bmd0aCgwLEZpeGVkKSk7CisgICAgICAgIHJvdy0+c2V0U3R5bGUocm93U3R5bGUucmVsZWFzZSgp
KTsKKyAgICAgICAgbV9zY3JpcHRzLT5hZGRDaGlsZChyb3cpOworICAgICAgICAKKyAgICAgICAg
Ly8gY3JlYXRlIHRoZSB0YWJsZSBjZWxsCisgICAgICAgIFJlbmRlck9iamVjdCAqY2VsbCA9IG5l
dyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyVGFibGVDZWxsKGRvY3VtZW50KCkpOworICAgICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IGNlbGxTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAg
ICAgICAgY2VsbFN0eWxlLT5pbmhlcml0RnJvbShyb3ctPnN0eWxlKCkpOworICAgICAgICBjZWxs
U3R5bGUtPnNldExpbmVIZWlnaHQoTGVuZ3RoKDEuMCxQZXJjZW50KSk7CisgICAgICAgIGNlbGxT
dHlsZS0+c2V0RGlzcGxheShUQUJMRV9DRUxMKTsKKyAgICAgICAgY2VsbFN0eWxlLT5zZXRNYXJn
aW5Ub3AoTGVuZ3RoKDAsRml4ZWQpKTsKKyAgICAgICAgY2VsbFN0eWxlLT5zZXRQYWRkaW5nVG9w
KExlbmd0aChmaXJzdFJvdyA/IDAgOiA1LEZpeGVkKSk7CisgICAgICAgIGNlbGxTdHlsZS0+c2V0
TWFyZ2luQm90dG9tKExlbmd0aCgwLEZpeGVkKSk7CisgICAgICAgIGNlbGxTdHlsZS0+c2V0UGFk
ZGluZ0JvdHRvbShMZW5ndGgoMCxGaXhlZCkpOworICAgICAgICBjZWxsLT5zZXRTdHlsZShjZWxs
U3R5bGUucmVsZWFzZSgpKTsKKyAgICAgICAgcm93LT5hZGRDaGlsZChjZWxsKTsKKyAgICAgICAg
Y2VsbC0+YWRkQ2hpbGQoY2hpbGQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIHdlIGRvbid0
IGhhdmUgYSBiYXNlIHlldAorICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQoY2hpbGQsIGJl
Zm9yZUNoaWxkKTsKKworICAgICAgICAvLyBjcmVhdGUgdGhlIHRhYmxlIAorICAgICAgICBtX3Nj
cmlwdHMgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRhYmxlKGRvY3VtZW50KCkpOworICAg
ICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgp
OworICAgICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7CisgICAgICAgIG5ld1N0
eWxlLT5zZXREaXNwbGF5KElOTElORV9UQUJMRSk7CisgICAgICAgIG5ld1N0eWxlLT5zZXRWZXJ0
aWNhbEFsaWduKE1JRERMRSk7CisgICAgICAgIG5ld1N0eWxlLT5zZXRUZXh0QWxpZ24oTEVGVCk7
CisgICAgICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5Ub3AoTGVuZ3RoKDAsRml4ZWQpKTsKKyAgICAg
ICAgbmV3U3R5bGUtPnNldFBhZGRpbmdUb3AoTGVuZ3RoKDAsRml4ZWQpKTsKKyAgICAgICAgbmV3
U3R5bGUtPnNldE1hcmdpbkxlZnQoTGVuZ3RoKDEsRml4ZWQpKTsKKyAgICAgICAgbmV3U3R5bGUt
PnNldE1hcmdpbkJvdHRvbShMZW5ndGgoMCxGaXhlZCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0
UGFkZGluZ0JvdHRvbShMZW5ndGgoMCxGaXhlZCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0SG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcoMCk7CisgICAgICAgIG1fc2NyaXB0cy0+c2V0U3R5bGUobmV3
U3R5bGUucmVsZWFzZSgpKTsKKyAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKG1fc2NyaXB0
cywgYmVmb3JlQ2hpbGQpOworICAgIH0KK30KKyAgICAgICAgCisgICAgCit9CQorCisjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhTdWJTdXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoU3ViU3VwLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L21hdGhtbC9SZW5kZXJNYXRoU3ViU3VwLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiAgUmVuZGVyTWF0aFN1YlN1cC5oCisgKiAgV2ViQ29yZQorICoKKyAqICBDcmVhdGVk
IGJ5IEFsZXggTWlsb3dza2kgb24gOC8yNi8wOS4KKyAqICBDb3B5cmlnaHQgMjAwOSBBbGV4IE1p
bG93c2tpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworCisj
aWZuZGVmIFJlbmRlck1hdGhTdWJTdXBfaAorI2RlZmluZSBSZW5kZXJNYXRoU3ViU3VwX2gKKwor
I2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVy
LmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCQor
Y2xhc3MgUmVuZGVyTWF0aFN1YlN1cCA6IHB1YmxpYyBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVy
IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJNYXRoU3ViU3VwKE5vZGUgKmZyYWN0aW9uKTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCA9IDApOworcHJvdGVjdGVkOgorICAgIFJlbmRlclRhYmxlICptX3NjcmlwdHM7
Cit9OworCQorfQorCisjZW5kaWYKKworI2VuZGlmCisKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1Jl
bmRlck1hdGhVbmRlck92ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRl
ck1hdGhVbmRlck92ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVy
TWF0aFVuZGVyT3Zlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICog
IFJlbmRlck1hdGhVbmRlck92ZXIuY3BwCisgKiAgV2ViQ29yZQorICoKKyAqICBDcmVhdGVkIGJ5
IEFsZXggTWlsb3dza2kgb24gOC8zMS8wOS4KKyAqICBDb3B5cmlnaHQgMjAwOSBBbGV4IE1pbG93
c2tpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIk1hdGhNTE5h
bWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTWF0aFVuZGVyT3Zlci5oIgorI2luY2x1ZGUgIkZvbnRT
ZWxlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisJCit1c2luZyBuYW1lc3BhY2UgTWF0
aE1MTmFtZXM7CisKK1JlbmRlck1hdGhVbmRlck92ZXI6OlJlbmRlck1hdGhVbmRlck92ZXIoTm9k
ZSAqZXhwcmVzc2lvbikgOiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyKGV4cHJlc3Npb24pIAor
eworICAgIG1fa2luZCA9IFVuZGVyOworICAgIGlmIChleHByZXNzaW9uLT5sb2NhbE5hbWUoKT09
Im1vdmVyIikgeworICAgICAgICBtX2tpbmQgPSBPdmVyOworICAgIH0gZWxzZSBpZiAoZXhwcmVz
c2lvbi0+bG9jYWxOYW1lKCk9PSJtdW5kZXJvdmVyIikgeworICAgICAgICBtX2tpbmQgPSBVbmRl
ck92ZXI7CisgICAgfQorfQorCitpbmxpbmUgZG91YmxlIGdldE92ZXJBZGp1c3RtZW50KFJlbmRl
ck9iamVjdCAqb2JqKSB7CisgICAgZG91YmxlIGFkanVzdCA9IDAuMTsKKyAgICBpZiAob2JqLT5u
b2RlKCkgJiYgb2JqLT5ub2RlKCktPm5vZGVUeXBlKCk9PU5vZGU6OkVMRU1FTlRfTk9ERSkgewor
ICAgICAgICBFbGVtZW50ICpiYXNlID0gKEVsZW1lbnQqKW9iai0+bm9kZSgpOworICAgICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYmFzZS0+Z2V0QXR0cmlidXRlKCJtYXRoc2l6ZSIpLCJiaWci
KSkgeworICAgICAgICAgICAgYWRqdXN0ID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gYWRqdXN0OworfQorCitpbmxpbmUgZG91YmxlIGdldFVuZGVyQWRqdXN0bWVudChSZW5kZXJP
YmplY3QgKm9iaikgeworICAgIGRvdWJsZSBhZGp1c3QgPSAtMC40OworICAgIGlmIChvYmotPm5v
ZGUoKSAmJiBvYmotPm5vZGUoKS0+bm9kZVR5cGUoKT09Tm9kZTo6RUxFTUVOVF9OT0RFKSB7Cisg
ICAgICAgIEVsZW1lbnQgKmJhc2UgPSAoRWxlbWVudCopb2JqLT5ub2RlKCk7CisgICAgICAgIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShiYXNlLT5nZXRBdHRyaWJ1dGUoIm1hdGhzaXplIiksImJpZyIp
KSB7CisgICAgICAgICAgICBhZGp1c3QgPSAtMC4zOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBhZGp1c3Q7Cit9CisKK2NvbnN0IFVDaGFyIGRlc2NlbmRpbmdbXSA9IHsoVUNoYXIpJ2cn
LChVQ2hhciknaicsKFVDaGFyKSdwJywoVUNoYXIpJ3EnLChVQ2hhcikneScsMCB9OworICAgIAor
dm9pZCBSZW5kZXJNYXRoVW5kZXJPdmVyOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQoreworICAgIAorICAgIFJlbmRlckJsb2NrKiByb3cg
PSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50KCkpOworICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gcm93U3R5bGUgPSBtYWtlQmxvY2tTdHlsZSgpOworICAgIAorICAgIC8v
IGxvb2sgdGhyb3VnaCB0aGUgY2hpbGRyZW4gZm9yIHJlbmRlcmVkIGVsZW1lbnRzCisgICAgaW50
IGJsb2NrcyA9IDA7CisgICAgUmVuZGVyT2JqZWN0ICpjdXJyZW50ID0gdGhpcy0+Zmlyc3RDaGls
ZCgpOworICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgIGJsb2NrcysrOworICAgICAgICBj
dXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisgICAgCisgICAgLy8gY2Vu
dGVyIHRoZSBvdmVyL3VuZGVyIGJsb2NrcworICAgIGlmICghaXNFbXB0eSgpKSB7CisgICAgICAg
IHJvd1N0eWxlLT5zZXRUZXh0QWxpZ24oQ0VOVEVSKTsKKyAgICAgICAgcm93U3R5bGUtPnNldExp
bmVIZWlnaHQoTGVuZ3RoKChpbnQpKHJvd1N0eWxlLT5mb250U2l6ZSgpKjAuNzUpLEZpeGVkKSk7
CisgICAgfQorICAgIC8qIGRlYnVnIGJvcmRlcnMKKyAgICByb3dTdHlsZS0+c2V0Qm9yZGVyQm90
dG9tU3R5bGUoU09MSUQpOworICAgIHJvd1N0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aCgxKTsK
KyAgICByb3dTdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3IoQ29sb3IoMjU1LDAsMCkpOworICAg
IHJvd1N0eWxlLT5zZXRCb3JkZXJUb3BTdHlsZShTT0xJRCk7CisgICAgcm93U3R5bGUtPnNldEJv
cmRlclRvcFdpZHRoKDEpOworICAgIHJvd1N0eWxlLT5zZXRCb3JkZXJUb3BDb2xvcihDb2xvcigw
LDI1NSwwKSk7CisgICAgKi8KKyAgICAKKyAgICByb3ctPnNldFN0eWxlKHJvd1N0eWxlLnJlbGVh
c2UoKSk7CisgICAgCisgICAgYm9vbCBkZXNjZW5kcyA9IGZhbHNlOworICAgIFN0cmluZyB0ZXh0
ID0gY2hpbGQtPm5vZGUoKS0+dGV4dENvbnRlbnQoKTsKKyAgICBmb3IgKGludCBpPTA7ICFkZXNj
ZW5kcyAmJiBkZXNjZW5kaW5nW2ldPjA7IGkrKykgeworICAgICAgICBpZiAodGV4dC5jb250YWlu
cyhkZXNjZW5kaW5nW2ldKSkgeworICAgICAgICAgICAgZGVzY2VuZHMgPSB0cnVlOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoYmxvY2tzKSB7CisgICAgICAgIGNhc2UgMDoK
KyAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIGJhc2Ugc28ganVzdCBhcHBlbmQgaXQKKyAgICAg
ICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csIGJlZm9yZUNoaWxkKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAvLyB0aGUgdW5kZXIgb3Ig
b3ZlcgorICAgICAgICAgICAgaWYgKG1fa2luZD09T3ZlcikgeworICAgICAgICAgICAgICAgIGlm
ICghZGVzY2VuZHMpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gYWRqdXN0IHRoZSBvdmVyJ3Mg
aW50cnVzaW9uIGludG8gdGhlIGJhc2UgZnJvbSB0aGUgdG9wCisgICAgICAgICAgICAgICAgICAg
IHJvdy0+c3R5bGUoKS0+c2V0TWFyZ2luQm90dG9tKExlbmd0aCgoaW50KShnZXRPdmVyQWRqdXN0
bWVudChmaXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKSkqcm93LT5zdHlsZSgpLT5mb250U2l6ZSgp
KSxGaXhlZCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBhZGQgdGhl
IG92ZXIgYXMgZmlyc3QKKyAgICAgICAgICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQocm93
LGZpcnN0Q2hpbGQoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8v
IGFkZCB0aGUgdW5kZXIgYXMgbGFzdAorICAgICAgICAgICAgICAgIHJvdy0+c3R5bGUoKS0+c2V0
UGFkZGluZ1RvcChMZW5ndGgoMSxGaXhlZCkpOworICAgICAgICAgICAgICAgIFJlbmRlckJsb2Nr
OjphZGRDaGlsZChyb3csIGJlZm9yZUNoaWxkKTsKKyAgICAgICAgICAgICAgICAvLyBhZGp1c3Qg
dGhlIGJhc2UncyBpbnRydXNpb24gaW50byB0aGUgdW5kZXIKKyAgICAgICAgICAgICAgICBmaXJz
dENoaWxkKCktPnN0eWxlKCktPnNldE1hcmdpbkJvdHRvbShMZW5ndGgoKGludCkoZ2V0VW5kZXJB
ZGp1c3RtZW50KGZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpKSpyb3ctPnN0eWxlKCktPmZvbnRT
aXplKCkpLEZpeGVkKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSAyOgorICAgICAgICAgICAgLy8gdGhlIHVuZGVyIG9yIG92ZXIKKyAgICAgICAgICAg
IGlmIChtX2tpbmQ9PVVuZGVyT3ZlcikgeworICAgICAgICAgICAgICAgIC8vIGFkanVzdCB0aGUg
b3ZlcidzIGludHJ1c2lvbiBpbnRvIHRoZSBiYXNlIGZyb20gdGhlIHRvcAorICAgICAgICAgICAg
ICAgIHJvdy0+c3R5bGUoKS0+c2V0TWFyZ2luQm90dG9tKExlbmd0aCgoaW50KShnZXRPdmVyQWRq
dXN0bWVudChmaXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKSkqcm93LT5zdHlsZSgpLT5mb250U2l6
ZSgpKSxGaXhlZCkpOworICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgb3ZlciBhcyBmaXJzdAor
ICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3csZmlyc3RDaGlsZCgpKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gd2UgcmVhbGx5IHNob3Vs
ZG4ndCBnZXQgaGVyZSBhcyBvbmx5IG11bmRlcm92ZXIgc2hvdWxkIGhhdmUgdGhyZWUgY2hpbGRy
ZW4KKyAgICAgICAgICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQocm93LCBiZWZvcmVDaGls
ZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIC8vIFdlIHNob3VsZG4ndCBnZXQgaGVyZSBidXQgd2Ugd2lsbCB0cmVhdCB0
aGlzIGFzIHVuZGVyCisgICAgICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQocm93LCBiZWZv
cmVDaGlsZCk7CisgICAgfQorICAgIHJvdy0+YWRkQ2hpbGQoY2hpbGQpOwkKK30KKwkKK30KKwor
CisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhVbmRlck92ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoVW5kZXJPdmVyLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoVW5kZXJPdmVyLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiAgUmVuZGVyTWF0aFVuZGVyT3Zlci5oCisgKiAgV2Vi
Q29yZQorICoKKyAqICBDcmVhdGVkIGJ5IEFsZXggTWlsb3dza2kgb24gOC8zMS8wOS4KKyAqICBD
b3B5cmlnaHQgMjAwOSBBbGV4IE1pbG93c2tpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAK
KyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgCisgKi8KKworCisjaWZuZGVmIFJlbmRlck1hdGhVbmRlck92ZXJfaAorI2RlZmlu
ZSBSZW5kZXJNYXRoVW5kZXJPdmVyX2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRl
ICJSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICAKKyAgICBjbGFzcyBSZW5kZXJNYXRoVW5kZXJPdmVyIDogcHVibGljIFJlbmRlck1hdGhJbmxp
bmVDb250YWluZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVuZGVyTWF0aFVuZGVyT3ZlcihO
b2RlICpleHByZXNzaW9uKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKKyAgICBwcml2YXRl
OgorICAgICAgICBlbnVtIFVuZGVyT3ZlclR5cGUgeyBVbmRlciwgT3ZlciwgVW5kZXJPdmVyIH07
CisgICAgICAgIFVuZGVyT3ZlclR5cGUgbV9raW5kOworICAgIH07CisgICAgCit9CisKKyNlbmRp
ZgorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9t
YXRobWwvbWF0aHRhZ3MuaW4JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTk2IEBACituYW1lc3Bh
Y2U9Ik1hdGhNTCIKK25hbWVzcGFjZVVSST0iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01h
dGhNTCIKK2d1YXJkRmFjdG9yeVdpdGg9IkVOQUJMRShNQVRITUwpIgorZXhwb3J0U3RyaW5ncwor
CittYXRoCittZnJhYyBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQK
K21mZW5jZWQgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Cittc3Vi
c3VwIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbXJvdyBpbnRl
cmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK21vdmVyIGludGVyZmFjZU5h
bWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbXVuZGVyIGludGVyZmFjZU5hbWU9TWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbXVuZGVyb3ZlciBpbnRlcmZhY2VOYW1lPU1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQKK21pIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVudCwg
Y3JlYXRlV2l0aE5ldworbW4gaW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVXaXRo
TmV3CittbyBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKK21zdWIg
aW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVXaXRoTmV3Cittc3VwIGludGVyZmFj
ZU5hbWU9TWF0aE1MRWxlbWVudCwgY3JlYXRlV2l0aE5ldworCisjaWYgMAorYWJzIGNyZWF0ZVdp
dGhOZXcKK2FuZCBjcmVhdGVXaXRoTmV3Cithbm5vdGF0aW9uIGNyZWF0ZVdpdGhOZXcKK2Fubm90
YXRpb24teG1sIGNyZWF0ZVdpdGhOZXcKK2FwcGx5IGNyZWF0ZVdpdGhOZXcKK2FwcHJveCBjcmVh
dGVXaXRoTmV3CithcmNjb3MgY3JlYXRlV2l0aE5ldworYXJjY29zaCBjcmVhdGVXaXRoTmV3Cith
cmNjb3QgY3JlYXRlV2l0aE5ldworYXJjY290aCBjcmVhdGVXaXRoTmV3CithcmNjc2MgY3JlYXRl
V2l0aE5ldworYXJjY3NjaCBjcmVhdGVXaXRoTmV3CithcmNzZWMgY3JlYXRlV2l0aE5ldworYXJj
c2VjaCBjcmVhdGVXaXRoTmV3CithcmNzaW4gY3JlYXRlV2l0aE5ldworYXJjc2luaCBjcmVhdGVX
aXRoTmV3CithcmN0YW4gY3JlYXRlV2l0aE5ldworYXJjdGFuaCBjcmVhdGVXaXRoTmV3Cithcmcg
Y3JlYXRlV2l0aE5ldworYnZhciBjcmVhdGVXaXRoTmV3CitjYXJkIGNyZWF0ZVdpdGhOZXcKK2Nh
cnRlc2lhbnByb2R1Y3QgY3JlYXRlV2l0aE5ldworY2VpbGluZyBjcmVhdGVXaXRoTmV3CitjaSBj
cmVhdGVXaXRoTmV3CitjbiBjcmVhdGVXaXRoTmV3Citjb2RvbWFpbiBjcmVhdGVXaXRoTmV3Citj
b21wbGV4ZXMgY3JlYXRlV2l0aE5ldworY29tcG9zZSBjcmVhdGVXaXRoTmV3Citjb25kaXRpb24g
Y3JlYXRlV2l0aE5ldworY29uanVnYXRlIGNyZWF0ZVdpdGhOZXcKK2NvcyBjcmVhdGVXaXRoTmV3
Citjb3NoIGNyZWF0ZVdpdGhOZXcKK2NvdCBjcmVhdGVXaXRoTmV3Citjb3RoIGNyZWF0ZVdpdGhO
ZXcKK2NzYyBjcmVhdGVXaXRoTmV3Citjc2NoIGNyZWF0ZVdpdGhOZXcKK2NzeW1ib2wgY3JlYXRl
V2l0aE5ldworY3VybCBjcmVhdGVXaXRoTmV3CitkZWNsYXJlIGNyZWF0ZVdpdGhOZXcKK2RlZ3Jl
ZSBjcmVhdGVXaXRoTmV3CitkZXRlcm1pbmFudCBjcmVhdGVXaXRoTmV3CitkaWZmIGNyZWF0ZVdp
dGhOZXcKK2RpdmVyZ2VuY2UgY3JlYXRlV2l0aE5ldworZGl2aWRlIGNyZWF0ZVdpdGhOZXcKK2Rv
bWFpbiBjcmVhdGVXaXRoTmV3Citkb21haW5vZmFwcGxpY2F0aW9uIGNyZWF0ZVdpdGhOZXcKK2Vt
cHR5c2V0IGNyZWF0ZVdpdGhOZXcKK2VuY29kaW5nIGNyZWF0ZVdpdGhOZXcKK2VxIGNyZWF0ZVdp
dGhOZXcKK2VxdWl2YWxlbnQgY3JlYXRlV2l0aE5ldworZXVsZXJnYW1tYSBjcmVhdGVXaXRoTmV3
CitleGlzdHMgY3JlYXRlV2l0aE5ldworZXhwIGNyZWF0ZVdpdGhOZXcKK2V4cG9uZW50aWFsZSBj
cmVhdGVXaXRoTmV3CitmYWN0b3JpYWwgY3JlYXRlV2l0aE5ldworZmFjdG9yb2YgY3JlYXRlV2l0
aE5ldworZmFsc2UgY3JlYXRlV2l0aE5ldworZmxvb3IgY3JlYXRlV2l0aE5ldworZm4gY3JlYXRl
V2l0aE5ldworZm9yYWxsIGNyZWF0ZVdpdGhOZXcKK2Z1bmN0aW9uIGNyZWF0ZVdpdGhOZXcKK2dj
ZCBjcmVhdGVXaXRoTmV3CitnZXEgY3JlYXRlV2l0aE5ldworZ3JhZCBjcmVhdGVXaXRoTmV3Citn
dCBjcmVhdGVXaXRoTmV3CitpZGVudCBjcmVhdGVXaXRoTmV3CitpbWFnZSBjcmVhdGVXaXRoTmV3
CitpbWFnaW5hcnkgY3JlYXRlV2l0aE5ldworaW1hZ2luYXJ5aSBjcmVhdGVXaXRoTmV3CitpbXBs
aWVzIGNyZWF0ZVdpdGhOZXcKK2luIGNyZWF0ZVdpdGhOZXcKK2luZmluaXR5IGNyZWF0ZVdpdGhO
ZXcKK2ludCBjcmVhdGVXaXRoTmV3CitpbnRlZ2VycyBjcmVhdGVXaXRoTmV3CitpbnRlcnNlY3Qg
Y3JlYXRlV2l0aE5ldworaW50ZXJ2YWwgY3JlYXRlV2l0aE5ldworaW52ZXJzZSBjcmVhdGVXaXRo
TmV3CitsYW1iZGEgY3JlYXRlV2l0aE5ldworbGFwbGFjaWFuIGNyZWF0ZVdpdGhOZXcKK2xjbSBj
cmVhdGVXaXRoTmV3CitsZXEgY3JlYXRlV2l0aE5ldworbGltaXQgY3JlYXRlV2l0aE5ldworbGlz
dCBjcmVhdGVXaXRoTmV3CitsbiBjcmVhdGVXaXRoTmV3Citsb2cgY3JlYXRlV2l0aE5ldworbG9n
YmFzZSBjcmVhdGVXaXRoTmV3Citsb3dsaW1pdCBjcmVhdGVXaXRoTmV3CitsdCBjcmVhdGVXaXRo
TmV3CithcHBseSBjcmVhdGVXaXRoTmV3Cittcm93IGNyZWF0ZVdpdGhOZXcKK21hY3Rpb24gY3Jl
YXRlV2l0aE5ldworbWFsaWduIGNyZWF0ZVdpdGhOZXcKK21hbGlnbmdyb3VwIGNyZWF0ZVdpdGhO
ZXcKK21hbGlnbm1hcmsgY3JlYXRlV2l0aE5ldworbWFsaWduc2NvcGUgY3JlYXRlV2l0aE5ldwor
bWF0cml4IGNyZWF0ZVdpdGhOZXcKK21hdHJpeHJvdyBjcmVhdGVXaXRoTmV3CittYXggY3JlYXRl
V2l0aE5ldworbWVhbiBjcmVhdGVXaXRoTmV3CittZWRpYW4gY3JlYXRlV2l0aE5ldworbWVuY2xv
c2UgY3JlYXRlV2l0aE5ldworbWVycm9yIGNyZWF0ZVdpdGhOZXcKK21nbHlwaCBjcmVhdGVXaXRo
TmV3CittaW4gY3JlYXRlV2l0aE5ldworbWludXMgY3JlYXRlV2l0aE5ldworbWxhYmVsZWR0ciBj
cmVhdGVXaXRoTmV3CittbXVsdGlzY3JpcHRzIGNyZWF0ZVdpdGhOZXcKK21vZGUgY3JlYXRlV2l0
aE5ldworbW9tZW50IGNyZWF0ZVdpdGhOZXcKK21vbWVudGFib3V0IGNyZWF0ZVdpdGhOZXcKK21w
YWRkZWQgY3JlYXRlV2l0aE5ldworbXBoYW50b20gY3JlYXRlV2l0aE5ldworbXByZXNjcmlwdHMg
Y3JlYXRlV2l0aE5ldworbXJvb3QgY3JlYXRlV2l0aE5ldworbXMgY3JlYXRlV2l0aE5ldworbXNw
YWNlIGNyZWF0ZVdpdGhOZXcKK21zcXJ0IGNyZWF0ZVdpdGhOZXcKK21zdHlsZSBjcmVhdGVXaXRo
TmV3CittdGFibGUgY3JlYXRlV2l0aE5ldworbXRkIGNyZWF0ZVdpdGhOZXcKK210ZXh0IGNyZWF0
ZVdpdGhOZXcKK210ciBjcmVhdGVXaXRoTmV3CituYXR1cmFsbnVtYmVycyBjcmVhdGVXaXRoTmV3
CituZXEgY3JlYXRlV2l0aE5ldworbm9uZSBjcmVhdGVXaXRoTmV3Citub3QgY3JlYXRlV2l0aE5l
dworbm90YW51bWJlciBjcmVhdGVXaXRoTmV3Citub3RpbiBjcmVhdGVXaXRoTmV3Citub3RwcnN1
YnNldCBjcmVhdGVXaXRoTmV3Citub3RzdWJzZXQgY3JlYXRlV2l0aE5ldworb3IgY3JlYXRlV2l0
aE5ldworb3RoZXJ3aXNlIGNyZWF0ZVdpdGhOZXcKK291dGVycHJvZHVjdCBjcmVhdGVXaXRoTmV3
CitwYXJ0aWFsZGlmZiBjcmVhdGVXaXRoTmV3CitwaSBjcmVhdGVXaXRoTmV3CitwaWVjZSBjcmVh
dGVXaXRoTmV3CitwaWVjZXdpY2UgY3JlYXRlV2l0aE5ldworcGllY2V3aXNlIGNyZWF0ZVdpdGhO
ZXcKK3BsdXMgY3JlYXRlV2l0aE5ldworcG93ZXIgY3JlYXRlV2l0aE5ldworcHJpbWVzIGNyZWF0
ZVdpdGhOZXcKK3Byb2R1Y3QgY3JlYXRlV2l0aE5ldworcHJzdWJzZXQgY3JlYXRlV2l0aE5ldwor
cXVvdGllbnQgY3JlYXRlV2l0aE5ldworcmF0aW9uYWxzIGNyZWF0ZVdpdGhOZXcKK3JlYWwgY3Jl
YXRlV2l0aE5ldworcmVhbHMgY3JlYXRlV2l0aE5ldworcmVsbiBjcmVhdGVXaXRoTmV3CityZW0g
Y3JlYXRlV2l0aE5ldworcm9vdCBjcmVhdGVXaXRoTmV3CitzY2FsYXJwcm9kdWN0IGNyZWF0ZVdp
dGhOZXcKK3NkZXYgY3JlYXRlV2l0aE5ldworc2VjIGNyZWF0ZVdpdGhOZXcKK3NlY2ggY3JlYXRl
V2l0aE5ldworc2VsZWN0b3IgY3JlYXRlV2l0aE5ldworc2VtYW50aWNzIGNyZWF0ZVdpdGhOZXcK
K3NlcCBjcmVhdGVXaXRoTmV3CitzZXQgY3JlYXRlV2l0aE5ldworc2V0ZGlmZiBjcmVhdGVXaXRo
TmV3CitzaW4gY3JlYXRlV2l0aE5ldworc2luaCBjcmVhdGVXaXRoTmV3CitzdWJzZXQgY3JlYXRl
V2l0aE5ldworc3VtIGNyZWF0ZVdpdGhOZXcKK3RhbiBjcmVhdGVXaXRoTmV3Cit0YW5oIGNyZWF0
ZVdpdGhOZXcKK3RlbmRzdG8gY3JlYXRlV2l0aE5ldwordGltZXMgY3JlYXRlV2l0aE5ldwordHJh
bnNwb3NlIGNyZWF0ZVdpdGhOZXcKK3RydWUgY3JlYXRlV2l0aE5ldwordW5pb24gY3JlYXRlV2l0
aE5ldwordXBsaW1pdCBjcmVhdGVXaXRoTmV3Cit2YXJpYW5jZSBjcmVhdGVXaXRoTmV3Cit2ZWN0
b3IgY3JlYXRlV2l0aE5ldwordmVjdG9ycHJvZHVjdCBjcmVhdGVXaXRoTmV3Cit4b3IgY3JlYXRl
V2l0aE5ldworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShy
ZXZpc2lvbiA0ODA2NSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk3LDYgKzk3LDEwIEBACiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisjZW5kaWYKKwogI2lm
IEVOQUJMRShXTUwpCiAjaW5jbHVkZSAiV01MTmFtZXMuaCIKICNlbmRpZgpAQCAtMTU1LDYgKzE1
OSwxMCBAQCBGcmFtZTo6RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFCiAgICAgWExp
bmtOYW1lczo6aW5pdCgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUFUSE1MKQorICAgIE1hdGhN
TE5hbWVzOjppbml0KCk7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoV01MKQogICAgIFdNTE5h
bWVzOjppbml0KCk7CiAjZW5kaWYKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4MDcwKQorKysgV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDkt
MDQgIEFsZXggTWlsb3dza2kgIDxhbGV4QG1pbG93c2tpLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0aGUgbWF0aG1sIG9wdGlvbiB0
byBlbmFibGUvZGlzYWJsZSBNYXRoTUwgaW4gdGhlIGJ1aWxkCisKKyAgICAgICAgKiBTY3JpcHRz
L2J1aWxkLXdlYmtpdDoKKwogMjAwOS0wOS0wNCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhl
b2xsaXZpZXJzLmNvbT4KIAogICAgICAgICB3eCBidWlsZCBmaXguIFN3aXRjaCBVU0VfIGRlZmlu
ZXMgb3ZlciB0byB0aGUgY29tcGlsZXIgc28gdGhhdCB0aGV5IGNhbiBiZQpJbmRleDogV2ViS2l0
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXQJKHJldmlzaW9uIDQ4MDY1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0
cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgbXkgKCR0aHJl
ZURDYW52YXNTdXBwb3J0LCAkdGhyZWVEUmVuZGVyaQogICAgICRldmVudHNvdXJjZVN1cHBvcnQs
ICRmaWx0ZXJzU3VwcG9ydCwgJGdlb2xvY2F0aW9uU3VwcG9ydCwgJGljb25EYXRhYmFzZVN1cHBv
cnQsCiAgICAgJGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsICRvZmZsaW5lV2ViQXBwbGljYXRp
b25TdXBwb3J0LCAkcnVieVN1cHBvcnQsICRzaGFyZWRXb3JrZXJzU3VwcG9ydCwgCiAgICAgJHN2
Z1N1cHBvcnQsICRzdmdBbmltYXRpb25TdXBwb3J0LCAkc3ZnQXNJbWFnZVN1cHBvcnQsICRzdmdE
T01PYmpDQmluZGluZ3NTdXBwb3J0LCAkc3ZnRm9udHNTdXBwb3J0LAotICAgICRzdmdGb3JlaWdu
T2JqZWN0U3VwcG9ydCwgJHN2Z1VzZVN1cHBvcnQsICR2aWRlb1N1cHBvcnQsICR3ZWJTb2NrZXRz
U3VwcG9ydCwgJHdtbFN1cHBvcnQsICR3Y3NzU3VwcG9ydCwgJHhodG1sbXBTdXBwb3J0LCAkd29y
a2Vyc1N1cHBvcnQsCisgICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNlU3VwcG9y
dCwgJHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9ydCwgJG1hdGht
bFN1cHBvcnQsICR3Y3NzU3VwcG9ydCwgJHhodG1sbXBTdXBwb3J0LCAkd29ya2Vyc1N1cHBvcnQs
CiAgICAgJHhwYXRoU3VwcG9ydCwgJHhzbHRTdXBwb3J0LCAkY292ZXJhZ2VTdXBwb3J0LCAkbm90
aWZpY2F0aW9uc1N1cHBvcnQpOwogCiBteSBAZmVhdHVyZXMgPSAoCkBAIC0xMzQsNiArMTM0LDkg
QEAgbXkgQGZlYXR1cmVzID0gKAogICAgIHsgb3B0aW9uID0+ICJ3bWwiLCBkZXNjID0+ICJUb2dn
bGUgV01MIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfV01MIiwgZGVmYXVsdCA9
PiAwLCB2YWx1ZSA9PiBcJHdtbFN1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJtYXRobWwi
LCBkZXNjID0+ICJUb2dnbGUgTWF0aE1MIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfTUFUSE1MIiwgZGVmYXVsdCA9PiAxLCB2YWx1ZSA9PiBcJG1hdGhtbFN1cHBvcnQgfSwKKwog
ICAgIHsgb3B0aW9uID0+ICJ4aHRtbG1wIiwgZGVzYyA9PiAiVG9nZ2xlIFhIVE1MLU1QIHN1cHBv
cnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfWEhUTUxNUCIsIGRlZmF1bHQgPT4gMCwgdmFs
dWUgPT4gXCR4aHRtbG1wU3VwcG9ydCB9LAogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0ODA3MCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisy
MDA5LTA5LTA0ICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxvd3NraS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIE1h
dGhNTCBwcmVzZW50YXRpb24gY29uc3RydWN0cy4gIE5vIGV4cGVjdGVkCisgICAgICAgIG91dHB1
dCBpcyBwcm92aWRlZCBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgKiBtYXRobWw6IEFkZGVkLgor
ICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb246IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9w
cmVzZW50YXRpb24vZmVuY2VkLnhodG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2Vu
dGF0aW9uL2ZyYWN0aW9ucy54aHRtbDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRh
dGlvbi9yb290cy54aHRtbDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9z
dWJzdXAueGh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vdW5kZXJv
dmVyLnhodG1sOiBBZGRlZC4KKwogMjAwOS0wOS0wNCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJv
bkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBM
YXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL2ZlbmNlZC54aHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL2ZlbmNlZC54aHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vZmVuY2VkLnhodG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCc+Cis8aGVhZD4KKzx0aXRsZT5GZW5jaW5nPC90aXRsZT4KKzxzdHlsZSB0eXBl
PSd0ZXh0L2Nzcyc+Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0ndDEnPnNpbXBs
ZTogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8
bWZlbmNlZCBvcGVuPSJ7IiBjbG9zZT0ifSI+PG1uPjI8L21uPjxtbj4zPC9tbj48bW4+NTwvbW4+
PG1uPjc8L21uPjwvbWZlbmNlZD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDInPm5vIHNlcGFyYXRv
cnM6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgor
PG1mZW5jZWQgc2VwYXJhdG9ycz0iIj4KKzxtaT54PC9taT4gCis8bW8+KzwvbW8+CisKKworc2Rm
c2FkZmFzZGZzYWRmCisgCis8bW4+MTwvbW4+PC9tZmVuY2VkPgorPG1mZW5jZWQgc2VwYXJhdG9y
cz0iIj48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4yPC9tbj48L21mZW5jZWQ+Cis8L21hdGg+PC9w
PgorPHAgaWQ9J3QzJz5sYXJnZTogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OC9NYXRoL01hdGhNTCc+Cis8bWZlbmNlZCBvcGVuPSJ7IiBjbG9zZT0ifSI+Cis8bW4+MTwvbW4+
Cis8bWZyYWM+Cis8bXN1cD48bWk+eDwvbWk+PG1uPjI8L21uPjwvbXN1cD4KKzxtcm93Pjxtbj4y
PC9tbj48bW8+ITwvbW8+PC9tcm93PgorPC9tZnJhYz4KKzxtZnJhYz4KKzxtc3VwPjxtaT54PC9t
aT48bW4+MzwvbW4+PC9tc3VwPgorPG1yb3c+PG1uPjM8L21uPjxtbz4hPC9tbz48L21yb3c+Cis8
L21mcmFjPgorPG1mcmFjPgorPG1zdXA+PG1pPng8L21pPjxtbj40PC9tbj48L21zdXA+Cis8bXJv
dz48bW4+NDwvbW4+PG1vPiE8L21vPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21mZW5jZWQ+Cis8L21h
dGg+PC9wPgorPHAgaWQ9J3QyJz5kaWZmZXJlbnQgc2VwYXJhdG9yczogCis8bWF0aCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZlbmNlZCBzZXBhcmF0b3Jz
PSJhYmNkZWZnaGlqa2xtbm9wIj4KKzxtbj4xPC9tbj4KKzxtbj4yPC9tbj4KKzxtbj4zPC9tbj4K
Kzxtbj40PC9tbj4KKzxtbj41PC9tbj4KKzxtbj42PC9tbj4KKzxtbj43PC9tbj4KKzxtbj44PC9t
bj4KKzxtbj45PC9tbj4KKzxtbj4xMDwvbW4+Cis8bW4+MTE8L21uPgorPG1uPjEyPC9tbj4KKzxt
bj4xMzwvbW4+Cis8bW4+MTQ8L21uPgorPG1uPjE1PC9tbj4KKzxtbj4xNjwvbW4+Cis8bW4+MTc8
L21uPgorPG1uPjE4PC9tbj4KKzxtbj4xOTwvbW4+Cis8bW4+MjA8L21uPgorPG1uPjIxPC9tbj4K
Kzxtbj4yMjwvbW4+Cis8bW4+MjM8L21uPgorPG1uPjI0PC9tbj4KKzxtbj4yNTwvbW4+Cis8bW4+
MjY8L21uPgorPC9tZmVuY2VkPgorPC9tYXRoPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50
YXRpb24vZnJhY3Rpb25zLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9w
cmVzZW50YXRpb24vZnJhY3Rpb25zLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9mcmFjdGlvbnMueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjggQEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxo
ZWFkPgorPHRpdGxlPkZyYWN0aW9uczwvdGl0bGU+Cis8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPgor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz5zaW1wbGU6IDxtYXRoIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz48bWZyYWM+PG1uPjE8L21uPmJh
ZDxtbj4yPC9tbj48L21mcmFjPjwvbWF0aD48L3A+Cis8cCBpZD0ndDInPm1vcmUgY29tcGxleDog
Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZy
YWM+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPmJhZDxtbj4xPC9tbj48L21yb3c+Cis8bXJv
dz48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4yPC9tbj48L21yb3c+Cis8L21mcmFjPgorPC9tYXRo
PgorPC9wPgorPHAgaWQ9J3QzJz50ZXh0OgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTgvTWF0aC9NYXRoTUwnPgorPG1mcmFjPgorPG10ZXh0Pm51bWJlciBvZiBidWdzPC9tdGV4
dD4KKzxtdGV4dD5udW1iZXIgb2YgY2hhbmdlczwvbXRleHQ+Cis8L21mcmFjPgorPC9tYXRoPgor
PC9wPgorPHAgaWQ9J3Q0Jz5saW5lIHRoaWNrbmVzcyBieSBrZXl3b3JkOgorPG1hdGggeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPjxtZnJhYyBsaW5ldGhpY2tuZXNz
PSd0aGluJz48bW4+MTwvbW4+PG1uPjI8L21uPjwvbWZyYWM+PC9tYXRoPjxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz48bWZyYWMgbGluZXRoaWNrbmVzcz0n
bWVkaXVtJz48bW4+MTwvbW4+PG1uPjI8L21uPjwvbWZyYWM+PC9tYXRoPjxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz48bWZyYWMgbGluZXRoaWNrbmVzcz0n
dGhpY2snPjxtbj4xPC9tbj48bW4+MjwvbW4+PC9tZnJhYz48L21hdGg+PC9wPgorPHAgaWQ9J3Q1
Jz5udW1lcmF0b3IgYWxpZ25tZW50OgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTgvTWF0aC9NYXRoTUwnPgorPG1mcmFjIG51bWFsaWduPSJsZWZ0Ij4KKzxtaT54PC9taT4KKzxt
cm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9tbz48bW4+MzwvbW4+PG1v
Pis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8
L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+
Cis8bWZyYWMgbnVtYWxpZ249ImNlbnRlciI+Cis8bWk+eDwvbWk+Cis8bXJvdz48bW4+MTwvbW4+
PG1vPis8L21vPjxtbj4yPC9tbj48bW8+KzwvbW8+PG1uPjM8L21uPjxtbz4rPC9tbz48bW4+NDwv
bW4+PG1vPis8L21vPjxtbj41PC9tbj48L21yb3c+Cis8L21mcmFjPgorPC9tYXRoPgorPG1hdGgg
eG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1mcmFjIG51bWFs
aWduPSJyaWdodCI+Cis8bWk+eDwvbWk+Cis8bXJvdz48bW4+MTwvbW4+PG1vPis8L21vPjxtbj4y
PC9tbj48bW8+KzwvbW8+PG1uPjM8L21uPjxtbz4rPC9tbz48bW4+NDwvbW4+PG1vPis8L21vPjxt
bj41PC9tbj48L21yb3c+Cis8L21mcmFjPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q2Jz5kZW5v
bWluYXRvciBhbGlnbm1lbnQ6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCc+Cis8bWZyYWMgZGVub21hbGlnbj0ibGVmdCI+Cis8bXJvdz48bW4+MTwvbW4+
PG1vPis8L21vPjxtbj4yPC9tbj48bW8+KzwvbW8+PG1uPjM8L21uPjxtbz4rPC9tbz48bW4+NDwv
bW4+PG1vPis8L21vPjxtbj41PC9tbj48L21yb3c+Cis8bWk+eDwvbWk+Cis8L21mcmFjPgorPC9t
YXRoPgorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgor
PG1mcmFjIGRlbm9tYWxpZ249ImNlbnRlciI+Cis8bXJvdz48bW4+MTwvbW4+PG1vPis8L21vPjxt
bj4yPC9tbj48bW8+KzwvbW8+PG1uPjM8L21uPjxtbz4rPC9tbz48bW4+NDwvbW4+PG1vPis8L21v
Pjxtbj41PC9tbj48L21yb3c+Cis8bWk+eDwvbWk+Cis8L21mcmFjPgorPC9tYXRoPgorPG1hdGgg
eG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1mcmFjIGRlbm9t
YWxpZ249InJpZ2h0Ij4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4r
PC9tbz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8L21uPjwv
bXJvdz4KKzxtaT54PC9taT4KKzwvbWZyYWM+Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1s
L3ByZXNlbnRhdGlvbi9yb290cy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tYXRo
bWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9yb290cy54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MSBAQAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+
Cis8dGl0bGU+Um9vdHM8L3RpdGxlPgorPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSd0MSc+c3F1YXJlIHJvb3Q6IAorPG1hdGggeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1zcXJ0Pjxtbj4yPC9tbj48
L21zcXJ0PgorPC9tYXRoPjwvcD4KKzxwIGlkPSd0Mic+bG9uZyBzcXVhcmUgcm9vdDogCis8bWF0
aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXNxcnQ+PG1y
b3c+PG1pPng8L21pPjxtbz4rPC9tbz48bW4+MTwvbW4+PC9tcm93PjwvbXNxcnQ+Cis8L21hdGg+
PC9wPgorPHAgaWQ9J3QzJz5jdWJlIHJvb3Q6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1yb290Pjxtbj4yPC9tbj48bW4+MzwvbW4+PC9tcm9v
dD4KKzwvbWF0aD48L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9zdWJzdXAueGh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9zdWJzdXAueGh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3N1YnN1
cC54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorPGh0bWwgeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+Cis8dGl0bGU+U3Vic2NyaXB0IGFuZCBT
dXBlcnNjcmlwdHM8L3RpdGxlPgorPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPmJlZm9yZSB0ZXh0OjwvcD4KKzxwPm1hbnVhbDogPHNwYW4gc3R5
bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrOyI+Cis8c3BhbiBpZD0nYmFzZSc+eDwvc3Bhbj48ZGl2
IHN0eWxlPSJkaXNwbGF5OmlubGluZS10YWJsZTsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsg
bWFyZ2luOiAwcHg7IGZvbnQtc2l6ZTogMC43NWVtIj4KKzxzdWIgc3R5bGU9ImRpc3BsYXk6IHRh
YmxlLXJvdyI+MTwvc3ViPgorPHN1cCBpZD0nc3VwJyBzdHlsZT0iZGlzcGxheTogdGFibGUtcm93
OyAgZm9udC1zaXplOiAwLjc1ZW0iPih4K3kpPC9zdXA+Cis8L2Rpdj4KKzwvc3Bhbj48L3A+Cis8
cD4KKzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij4KKzxzcGFuIHN0eWxlPSIg
dmVydGljYWwtYWxpZ246IG1pZGRsZTsgZm9udC1zdHlsZTogaXRhbGljIj5aPC9zcGFuPjx0YWJs
ZSBzdHlsZT0iZGlzcGxheTogaW5saW5lLXRhYmxlOyBmb250LXNpemU6IDAuNzVlbTsKKyAgYm9y
ZGVyLXNwYWNpbmc6IDBweDsgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUiPgorICA8dHI+PHRkIHN0
eWxlPSJsaW5lLWhlaWdodDogMWVtIj54K3k8L3RkPjwvdHI+CisgIDx0cj48dGQgc3R5bGU9Imxp
bmUtaGVpZ2h0OiAxZW0iPmoraytpPC90ZD48L3RyPgorPC90YWJsZT4KKzwvc3Bhbj4KKzwvcD4K
KworPHAgc3R5bGU9ImJsb2NrIj48c3Bhbj5YPC9zcGFuPjxzcGFuIHN0eWxlPSJkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiBzdWIiPjxzcGFuPlg8L3NwYW4+PC9zcGFuPjxz
cGFuIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGVm
dDogLTEycHg7IHZlcnRpY2FsLWFsaWduOiBzdXBlciI+PHNwYW4+WDwvc3Bhbj48L3NwYW4+PC9w
PgorPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgorLy92YXIgYmFzZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdiYXNlJyk7CisvL3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3N1cCcpOworLy9lLnN0eWxlLnBvc2l0aW9uID0gInJlbGF0aXZlIjsKKy8vZS5zdHlsZS5s
ZWZ0ID0gIi0iKyhlLm9mZnNldExlZnQtYmFzZS5vZmZzZXRMZWZ0LWJhc2Uub2Zmc2V0V2lkdGgp
KyJweCI7Cis8L3NjcmlwdD4KKzxwIGlkPSd0MSc+c3Vic2NyaXB0OiAKKzxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3ViPjxtaT54PC9taT48bW4+
MTwvbW4+PC9tc3ViPgorPC9tYXRoPjwvcD4KKzxwIGlkPSd0Mic+c3VwZXJzY3JpcHQ6IAorPG1h
dGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1zdXA+PG1p
Png8L21pPjxtbj4xPC9tbj48L21zdXA+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDMnPmJvdGg6
IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1z
dWJzdXA+PG1pPng8L21pPjxtbj4xPC9tbj48bWk+azwvbWk+PC9tc3Vic3VwPgorPC9tYXRoPgor
PC9wPgorPHAgaWQ9J3Q0Jz5sb25nIHN1YnNjcmlwdCB3LyBib3RoOiAKKzxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3Vic3VwPgorPG1pPlo8L21p
PgorPG1yb3c+PG1pPng8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PG1vPis8L21vPjxtaT56PC9t
aT48L21yb3c+Cis8bWk+ajwvbWk+Cis8L21zdWJzdXA+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0n
dDUnPmxvbmcgc3VwZXJzY3JpcHQgdy8gYm90aDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXN1YnN1cD4KKzxtaT5aPC9taT4KKzxtaT54PC9t
aT4KKzxtcm93PjxtaT5rPC9taT48bW8+KzwvbW8+PG1pPmo8L21pPjwvbXJvdz4KKzwvbXN1YnN1
cD4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0Nic+bG9uZyB3LyBib3RoOiAKKzxtYXRoIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3Vic3VwPgorPG1pPlo8
L21pPgorPG1yb3c+PG1pPng8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PG1vPis8L21vPjxtaT56
PC9taT48L21yb3c+Cis8bXJvdz48bWk+azwvbWk+PG1vPis8L21vPjxtaT5qPC9taT48L21yb3c+
Cis8L21zdWJzdXA+Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi91
bmRlcm92ZXIueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRh
dGlvbi91bmRlcm92ZXIueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwv
cHJlc2VudGF0aW9uL3VuZGVyb3Zlci54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBA
QAorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+Cis8
dGl0bGU+VW5kZXIvT3ZlcjwvdGl0bGU+Cis8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPgorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3QxJz51bmRlcjogCis8bWF0aCB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXVuZGVyPgorPG1pPkI8L21pPgor
PG1pPng8L21pPgorPC9tdW5kZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDInPnVuZGVyOiAK
KzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtdW5k
ZXI+Cis8bWk+QjwvbWk+Cis8bWk+WDwvbWk+Cis8L211bmRlcj4KKzwvbWF0aD4KKzwvcD4KKzxw
IGlkPSd0Myc+b3ZlcjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRo
L01hdGhNTCc+Cis8bW92ZXI+Cis8bWk+QjwvbWk+Cis8bWk+eDwvbWk+Cis8L21vdmVyPgorPC9t
YXRoPgorPC9wPgorPHAgaWQ9J3Q0Jz5vdmVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtb3Zlcj4KKzxtaT5CPC9taT4KKzxtaT55PC9taT4K
KzwvbW92ZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDUnPnVuZGVyICZhbXA7IG92ZXI6IAor
PG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG11bmRl
cm92ZXI+Cis8bWk+QjwvbWk+Cis8bWk+eDwvbWk+Cis8bWk+eTwvbWk+Cis8L211bmRlcm92ZXI+
Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDYnPnVuZGVyICZhbXA7IG92ZXI6IAorPG1hdGggeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG11bmRlcm92ZXI+Cis8
bWk+QjwvbWk+Cis8bWk+WDwvbWk+Cis8bWk+eTwvbWk+Cis8L211bmRlcm92ZXI+Cis8L21hdGg+
Cis8L3A+Cis8cCBpZD0ndDcnPnVuZGVyICZhbXA7IG92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG11bmRlcm92ZXI+Cis8bW8gbWF0aHNp
emU9J2JpZyc+JiN4MjIxMTs8L21vPgorPG1yb3c+PG1pPmk8L21pPjxtbz49PC9tbz48bWk+MDwv
bWk+PC9tcm93PgorPG1yb3c+PG1pPng8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PC9tcm93Pgor
PC9tdW5kZXJvdmVyPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q4Jz51bmRlciAmYW1wOyBvdmVy
OiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxt
dW5kZXJvdmVyPgorPG1vIG1hdGhzaXplPSdiaWcnPiYjeDIyMTE7PC9tbz4KKzxtcm93PjxtaT5J
PC9taT48bW8+PTwvbW8+PG1pPjA8L21pPjwvbXJvdz4KKzxtcm93PjxtaT5YPC9taT48bW8+Kzwv
bW8+PG1pPnk8L21pPjwvbXJvdz4KKzwvbXVuZGVyb3Zlcj4KKzwvbWF0aD4KKzwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39189</attachid>
            <date>2009-09-08 08:38:08 -0700</date>
            <delta_ts>2009-09-08 15:31:43 -0700</delta_ts>
            <desc>Updated patch that adheres to the style guide</desc>
            <filename>MathML-2.patch</filename>
            <type>text/plain</type>
            <size>94233</size>
            <attacher name="Alex Milowski">alex</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODA3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA3IEBACisyMDA5LTA5LTA0ICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxvd3Nr
aS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlJbml0aWFs
IE1hdGhNTCByZW5kZXJpbmcgc3VwcG9ydC4gIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFmZmVjdAor
ICAgICAgICBwYXJzaW5nIHNvIE1hdGhNTCBlbnRpdGllcyBhcmUgbm90IGRlZmluZWQuICBJdCBp
cyBwdXJlbHkgRE9NCisgICAgICAgIGFuZCByZW5kZXJpbmcgc3VwcG9ydC4KKworICAgICAgICBU
ZXN0czogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWwKKyAgICAgICAgICAgICAgIG1h
dGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwv
cHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwvcHJlc2VudGF0
aW9uL3N1YnN1cC54aHRtbAorICAgICAgICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRl
cm92ZXIueGh0bWwKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnOgorCisJICAgQWRkZWQgdGhlIEVOQUJMRV9NQVRITUwgZmVhdHVyZQorICAgICAgICAg
IAorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisKKyAgICAgICAgICAgQWRkZWQgdGhl
IGRlcml2ZWQgc291cmNlcyBmb3IgdGhlIG1hdGhtbCBlbGVtZW50cworCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICAgIFByb2plY3QgY29u
ZmlndXJhdGlvbnMgdG8gYnVpbGQgb24gdGhlIG1hYworCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQXR0cik6CisKKwkgIEZp
eCBmb3IgcG9pbnRlciBleGNlcHRpb24gYXMgdGhlIE1hdGhNTCBzdHlsZXNoZWV0IGlzIGFkZGVk
IGJlZm9yZSB0aGUgZG9jdW1lbnQKKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudCk6
CisKKyAgICAgICAgICBBZGRlZCBNYXRoTUwgdXNlciBhZ2VudCBzdHlsZXNoZWV0CisKKyAgICAg
ICAgKiBjc3MvbWF0aG1sLmNzczogQWRkZWQuCisKKyAgICAgICAgICBNYXRoTUwgdXNlciBhZ2Vu
dCBzdHlsZXNoZWV0CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQpOgorCisgICAgICAgICAgQWRkZWQgY3JlYXRp
b24gb2YgTWF0aE1MIGVsZW1lbnRzCisKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6aXNNYXRoTUxFbGVtZW50KToKKworICAgICAgICAgIEFkZGVkIHRlc3Qg
Zm9yIE1hdGhNTAorCisgICAgICAgICogbWF0aG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwv
TWF0aE1MRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVu
dDo6TWF0aE1MRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MRWxlbWVudDo6aXNNYXRoTUxFbGVtZW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6Ok1hdGhNTE1hdGhFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRo
bWwvUmVuZGVyRmVuY2VkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGZW5j
ZWQ6OlJlbmRlckZlbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGZW5jZWQ6Om1ha2VG
ZW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmVuY2VkOjphZGRDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGZW5jZWQ6OmxheW91dCk6CisgICAgICAgICogbWF0aG1sL1Jl
bmRlckZlbmNlZC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVuZGVyRnJhY3Rpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWN0aW9uOjpSZW5kZXJGcmFjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAg
ICAqIG1hdGhtbC9SZW5kZXJGcmFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVu
ZGVyTWF0aElubGluZUNvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aElubGluZUNvbnRhaW5lcjo6UmVuZGVyTWF0aElubGluZUNvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjpzZXRTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjppc0NoaWxkQWxsb3dlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjptYWtlQmxvY2tT
dHlsZSk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhJbmxpbmVDb250YWluZXIuaDogQWRk
ZWQuCisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhTdWJTdXAuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhTdWJTdXA6OlJlbmRlck1hdGhTdWJTdXApOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aFN1YlN1cDo6YWRkQ2hpbGQpOgorICAgICAgICAqIG1hdGht
bC9SZW5kZXJNYXRoU3ViU3VwLmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRo
VW5kZXJPdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoVW5kZXJP
dmVyOjpSZW5kZXJNYXRoVW5kZXJPdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE92ZXJBZGp1
c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVuZGVyQWRqdXN0bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aFVuZGVyT3Zlcjo6YWRk
Q2hpbGQpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoVW5kZXJPdmVyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aFVuZGVyT3Zlcjo6KToKKyAgICAgICAgKiBtYXRo
bWwvbWF0aHRhZ3MuaW46IEFkZGVkLgorCisgICAgICAgICAgTWF0aE1MIHJlbmRlcmluZyBjb2Rl
IGFuZCBlbGVtZW50IGRlZmluaXRpb25zCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisKKyAgICAgICAgICBBZGRlZCBpbml0aWFs
aXphdGlvbiBvZiBNYXRoTUwgbmFtZXMuCisKKwogMjAwOS0wOS0wNCAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0
IGFuZCBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDQ4MDY1
KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMgXAogICAgICQo
V2ViQ29yZSkvaW5zcGVjdG9yIFwKICAgICAkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZSBcCisg
ICAgJChXZWJDb3JlKS9tYXRobWwgXAogICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAg
ICAgJChXZWJDb3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXApAQCAtNDMzLDYg
KzQzNCw4IEBAIGFsbCA6IFwKICAgICBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIFwKICAgICBYTGlu
a05hbWVzLmNwcCBcCiAgICAgWE1MTmFtZXMuY3BwIFwKKyAgICBNYXRoTUxFbGVtZW50RmFjdG9y
eS5jcHAgXAorCU1hdGhNTE5hbWVzLmNwcCBcCiAgICAgWFBhdGhHcmFtbWFyLmNwcCBcCiAgICAg
dG9rZW5pemVyLmNwcCBcCiAjCkBAIC01NTYsNiArNTU5LDEwIEBAIGlmZXEgKCQoZmluZHN0cmlu
ZyBFTkFCTEVfV01MLCQoRkVBVFVSRV8KICAgICBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA6PSAk
KFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKSAkKFdlYkNvcmUpL2Nzcy93bWwuY3NzCiBlbmRpZgog
CitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX01BVEhNTCwkKEZFQVRVUkVfREVGSU5FUykpLCBF
TkFCTEVfTUFUSE1MKQorICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VO
VF9TVFlMRV9TSEVFVFMpICQoV2ViQ29yZSkvY3NzL21hdGhtbC5jc3MKK2VuZGlmCisKIGlmZXEg
KCQoZmluZHN0cmluZyBFTkFCTEVfVklERU8sJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX1ZJ
REVPKQogICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VOVF9TVFlMRV9T
SEVFVFMpICQoV2ViQ29yZSkvY3NzL21lZGlhQ29udHJvbHMuY3NzCiBpZmVxICgkKE9TKSxNQUNP
UykKQEAgLTY5Nyw2ICs3MDQsMjYgQEAgV01MTmFtZXMuY3BwIDoKIAogZW5kaWYKIAorIyAtLS0t
LS0tLQorCisjIE1hdGhNTCB0YWcgYW5kIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGVsZW1lbnQgZmFj
dG9yeQorCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX01BVEhNTCwkKEZFQVRVUkVfREVGSU5F
UykpLCBFTkFCTEVfTUFUSE1MKQorCitNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgTWF0aE1MTmFt
ZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgbWF0aG1sL21hdGh0YWdzLmluCisJcGVybCAtSSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS10YWdzICQoV2ViQ29yZSkvbWF0aG1sL21h
dGh0YWdzLmluIC0tZmFjdG9yeSAtLXdyYXBwZXJGYWN0b3J5CisKK2Vsc2UKKworTWF0aE1MRWxl
bWVudEZhY3RvcnkuY3BwIDoKKwllY2hvID4gJEAKKworTWF0aE1MTmFtZXMuY3BwIDoKKwllY2hv
ID4gJEAKKworZW5kaWYKKworCiAKICMgLS0tLS0tLS0KIApJbmRleDogV2ViQ29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA0ODA2NSkKKysr
IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDkgKzU3LDEwIEBAIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgPSBFTkFC
TEVfU1ZHX0YKIEVOQUJMRV9TVkdfVVNFID0gRU5BQkxFX1NWR19VU0U7CiBFTkFCTEVfVklERU8g
PSBFTkFCTEVfVklERU87CiBFTkFCTEVfV0VCX1NPQ0tFVFMgPSBFTkFCTEVfV0VCX1NPQ0tFVFM7
CitFTkFCTEVfTUFUSE1MID0gRU5BQkxFX01BVEhNTDsKIEVOQUJMRV9XTUwgPSA7CiBFTkFCTEVf
V09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFM
SVNUKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxF
X0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0hB
UkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFC
TEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxF
X1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNF
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdS
SUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZF
TlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNU
KSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMp
ICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpICQoRU5BQkxFX01BVEhNTCk7CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDgwNjUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDYyMyw2ICs0NjIzLDI5
IEBACiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudC5oICovOyB9OwogCQlGOUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50LmggKi87IH07CisJCUZBOUREQUQ3MTA1MUEwMkIwMDM0RkEyRiAvKiBNYXRo
TUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQTlEREFENjEwNTFBMDJCMDAzNEZBMkYgLyogTWF0aE1MRWxlbWVudEZhY3Rv
cnkuY3BwICovOyB9OworCQlGQTlEREFEOTEwNTFBMDU5MDAzNEZBMkYgLyogTWF0aE1MRWxlbWVu
dEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZBOUREQUQ4MTA1MUEwNTkwMDM0RkEyRiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9
OworCQlGQUFCMDI4MzEwNTFBMTc2MDA1OEVCOTQgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE5RERBRDYx
MDUxQTAyQjAwMzRGQTJGIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKKwkJRkFF
N0I2NjExMDUxOTZCMzAwNzQ5MEUyIC8qIG1hdGhtbC5jc3MgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjYwMTA1MTk2QjMwMDc0OTBFMiAvKiBt
YXRobWwuY3NzICovOyB9OworCQlGQUU3QjY4NzEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
QUU3QjY3NjEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxlbWVudC5jcHAgKi87IH07CisJCUZB
RTdCNjg4MTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY3NzEwNTE5NkY5MDA3NDkwRTIg
LyogTWF0aE1MRWxlbWVudC5oICovOyB9OworCQlGQUU3QjY4OTEwNTE5NkY5MDA3NDkwRTIgLyog
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY3ODEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgKi87IH07CisJCUZBRTdCNjhBMTA1MTk2RjkwMDc0
OTBFMiAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY3OTEwNTE5NkY5MDA3NDkwRTIgLyog
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oICovOyB9OworCQlGQUU3QjY4QjEwNTE5NkY5
MDA3NDkwRTIgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFFN0I2N0ExMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhN
TE1hdGhFbGVtZW50LmNwcCAqLzsgfTsKKwkJRkFFN0I2OEMxMDUxOTZGOTAwNzQ5MEUyIC8qIE1h
dGhNTE1hdGhFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQUU3QjY3QjEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCAq
LzsgfTsKKwkJRkFFN0I2OEQxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGh0YWdzLmluIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY3QzEwNTE5NkY5
MDA3NDkwRTIgLyogbWF0aHRhZ3MuaW4gKi87IH07CisJCUZBRTdCNjhFMTA1MTk2RjkwMDc0OTBF
MiAvKiBSZW5kZXJGZW5jZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkFFN0I2N0QxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZlbmNlZC5jcHAg
Ki87IH07CisJCUZBRTdCNjhGMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjdFMTA1MTk2
RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuaCAqLzsgfTsKKwkJRkFFN0I2OTAxMDUxOTZGOTAw
NzQ5MEUyIC8qIFJlbmRlckZyYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjdGMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGcmFj
dGlvbi5jcHAgKi87IH07CisJCUZBRTdCNjkxMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGcmFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFF
N0I2ODAxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZyYWN0aW9uLmggKi87IH07CisJCUZBRTdC
NjkyMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjgxMTA1MTk2
RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcCAqLzsgfTsKKwkJRkFF
N0I2OTMxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjgyMTA1MTk2
RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmggKi87IH07CisJCUZBRTdC
Njk0MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3ViU3VwLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjgzMTA1MTk2RjkwMDc0OTBF
MiAvKiBSZW5kZXJNYXRoU3ViU3VwLmNwcCAqLzsgfTsKKwkJRkFFN0I2OTUxMDUxOTZGOTAwNzQ5
MEUyIC8qIFJlbmRlck1hdGhTdWJTdXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZBRTdCNjg0MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3Vi
U3VwLmggKi87IH07CisJCUZBRTdCNjk2MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5k
ZXJPdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZBRTdCNjg1MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmNwcCAqLzsg
fTsKKwkJRkFFN0I2OTcxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhVbmRlck92ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjg2MTA1
MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmggKi87IH07CisJCUZBRTdCNkEw
MTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY5RDEwNTE5ODNBMDA3NDkwRTIgLyogTWF0
aE1MTmFtZXMuY3BwICovOyB9OworCQlGQUU3QjZBMTEwNTE5ODNBMDA3NDkwRTIgLyogTWF0aE1M
TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZB
RTdCNjlFMTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1lcy5oICovOyB9OwogCQlGRTZGRDQ4
NzBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0ODQwRjY3NkU1NzAwMDkyODczIC8qIENv
b3JkaW5hdGVzLmNwcCAqLzsgfTsKIAkJRkU2RkQ0ODgwRjY3NkU1NzAwMDkyODczIC8qIENvb3Jk
aW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTZGRDQ4NTBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCAqLzsgfTsKIAkJRkU2RkQ0
OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8q
IEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwpAQCAtOTY5Niw2ICs5NzE5LDI4IEBACiAJCUY5MTZD
NDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzcwREI1MENBMjAw
RDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
QTlEREFENjEwNTFBMDJCMDAzNEZBMkYgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQTlEREFEODEwNTFBMDU5MDAzNEZBMkYg
LyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWF0aE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkFFN0I2NjAxMDUxOTZCMzAwNzQ5MEUyIC8qIG1hdGhtbC5jc3MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNz
czsgcGF0aCA9IG1hdGhtbC5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdC
Njc2MTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQUU3QjY3NzEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjc4MTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGQUU3QjY3OTEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZBRTdCNjdBMTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxNYXRoRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxNYXRoRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjdCMTA1MTk2RjkwMDc0OTBFMiAvKiBN
YXRoTUxNYXRoRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRo
TUxNYXRoRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3QjY3QzEw
NTE5NkY5MDA3NDkwRTIgLyogbWF0aHRhZ3MuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0
aHRhZ3MuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjdEMTA1MTk2Rjkw
MDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyRmVuY2VkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkFFN0I2N0UxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZlbmNlZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGZW5jZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkFFN0I2N0YxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZyYWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZyYWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFN0I2ODAxMDUxOTZGOTAwNzQ5MEUyIC8q
IFJlbmRlckZyYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ckZyYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjgxMTA1MTk2
RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3QjY4MjEwNTE5NkY5MDA3NDkwRTIgLyog
UmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZBRTdCNjgzMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3ViU3VwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhTdWJTdXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3QjY4NDEwNTE5NkY5MDA3NDkwRTIg
LyogUmVuZGVyTWF0aFN1YlN1cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW5kZXJNYXRoU3ViU3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjg1
MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlck1hdGhVbmRlck92ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3QjY4NjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVy
TWF0aFVuZGVyT3Zlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJN
YXRoVW5kZXJPdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjlEMTA1
MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNYXRoTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZBRTdCNjlFMTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTQ5RUY5NzBEQzUxNDYyMDA0MjY2RTEgLyogRGFzaGJvYXJkU3VwcG9ydENT
U1Byb3BlcnR5TmFtZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGFzaGJvYXJkU3VwcG9y
dENTU1Byb3BlcnR5TmFtZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNkZE
NDg0MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb29yZGluYXRlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFNkZENDg1MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29yZGluYXRlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTc3Nyw2ICs5ODIyLDcgQEAKIAkJCQk5M0VFQzFFQzA5QzI4Nzc3
MDBDNTE1RDEgLyogaHRtbCAqLywKIAkJCQkxQzgxQjk0RDBFOTczMkQ5MDAyNjZFMDcgLyogaW5z
cGVjdG9yICovLAogCQkJCUJDQjE2QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8sCisJ
CQkJRkFFN0I2NzUxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGhtbCAqLywKIAkJCQkzMzNGNzAzRDBG
QjQ5QzE2MDA4RTEyQTYgLyogbm90aWZpY2F0aW9ucyAqLywKIAkJCQk2NUJGMDIxODA5NzQ4MDYz
MDBDNDMxOTYgLyogcGFnZSAqLywKIAkJCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxh
dGZvcm0gKi8sCkBAIC0xMDY1NSw2ICsxMDcwMSwxMCBAQAogCQkJCTkzOEU2NUYwMDlGMDk4NDAw
MDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCAqLywKIAkJCQk4NTc0RDFG
MTBBREU2MTIyMDA0Q0JBMTEgLyogSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwICovLAog
CQkJCTg1NzREMUYyMEFERTYxMjIwMDRDQkExMSAvKiBKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9y
eS5oICovLAorCQkJCUZBOUREQUQ4MTA1MUEwNTkwMDM0RkEyRiAvKiBNYXRoTUxFbGVtZW50RmFj
dG9yeS5oICovLAorCQkJCUZBOUREQUQ2MTA1MUEwMkIwMDM0RkEyRiAvKiBNYXRoTUxFbGVtZW50
RmFjdG9yeS5jcHAgKi8sCisJCQkJRkFFN0I2OUQxMDUxOTgzQTAwNzQ5MEUyIC8qIE1hdGhNTE5h
bWVzLmNwcCAqLywKKwkJCQlGQUU3QjY5RTEwNTE5ODNBMDA3NDkwRTIgLyogTWF0aE1MTmFtZXMu
aCAqLywKIAkJCQk2NTY1ODFFNjA5RDE1MDhEMDAwRTYxRDcgLyogU1ZHRWxlbWVudEZhY3Rvcnku
Y3BwICovLAogCQkJCTY1NjU4MUU3MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdFbGVtZW50RmFjdG9y
eS5oICovLAogCQkJCTY1NjU4MUU4MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5jcHAgKi8s
CkBAIC0xNDc0NCw2ICsxNDc5NCw3IEBACiAJCQkJOTNDQTRDOUEwOURGOTNGQTAwREY4Njc3IC8q
IG1ha2UtY3NzLWZpbGUtYXJyYXlzLnBsICovLAogCQkJCTkzQ0E0QzlCMDlERjkzRkEwMERGODY3
NyAvKiBtYWtlcHJvcC5wbCAqLywKIAkJCQk5M0NBNEM5RDA5REY5M0ZBMDBERjg2NzcgLyogbWFr
ZXZhbHVlcy5wbCAqLywKKwkJCQlGQUU3QjY2MDEwNTE5NkIzMDA3NDkwRTIgLyogbWF0aG1sLmNz
cyAqLywKIAkJCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250cm9scy5jc3Mg
Ki8sCiAJCQkJMDdBRkU1OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRVC5jc3Mg
Ki8sCiAJCQkJNEUxOTU5MUYwQTM5REFCQTAwMjIwRkU1IC8qIE1lZGlhRmVhdHVyZU5hbWVzLmNw
cCAqLywKQEAgLTE1MjQ0LDYgKzE1Mjk1LDMwIEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2Vz
VGFicyA9IDA7CiAJCX07CisJCUZBRTdCNjc1MTA1MTk2RjkwMDc0OTBFMiAvKiBtYXRobWwgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUZBRTdCNjc2MTA1
MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmNwcCAqLywKKwkJCQlGQUU3QjY3NzEwNTE5
NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxlbWVudC5oICovLAorCQkJCUZBRTdCNjc5MTA1MTk2Rjkw
MDc0OTBFMiAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggKi8sCisJCQkJRkFFN0I2
NzgxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICov
LAorCQkJCUZBRTdCNjdBMTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxNYXRoRWxlbWVudC5jcHAg
Ki8sCisJCQkJRkFFN0I2N0IxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTE1hdGhFbGVtZW50Lmgg
Ki8sCisJCQkJRkFFN0I2N0MxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGh0YWdzLmluICovLAorCQkJ
CUZBRTdCNjdEMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuY3BwICovLAorCQkJCUZB
RTdCNjdFMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuaCAqLywKKwkJCQlGQUU3QjY3
RjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRnJhY3Rpb24uY3BwICovLAorCQkJCUZBRTdCNjgw
MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGcmFjdGlvbi5oICovLAorCQkJCUZBRTdCNjgxMTA1
MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcCAqLywKKwkJCQlG
QUU3QjY4MjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5oICov
LAorCQkJCUZBRTdCNjgzMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3ViU3VwLmNwcCAq
LywKKwkJCQlGQUU3QjY4NDEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aFN1YlN1cC5oICov
LAorCQkJCUZBRTdCNjg1MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmNw
cCAqLywKKwkJCQlGQUU3QjY4NjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aFVuZGVyT3Zl
ci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBtYXRobWw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVh
ZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTc1OTQsNiArMTc2NjksMTcgQEAKIAkJCQk1
MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUFCQUUxQjEwM0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFt
RXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1IYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBRTdCNjg4MTA1MTk2Rjkw
MDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUU3QjY4QTEw
NTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkFFN0I2OEMxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTE1hdGhFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUU3QjY4RjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVy
RmVuY2VkLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUU3QjY5MTEwNTE5NkY5MDA3NDkwRTIgLyog
UmVuZGVyRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZBRTdCNjkzMTA1MTk2RjkwMDc0
OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
QUU3QjY5NTEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aFN1YlN1cC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkFFN0I2OTcxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhVbmRlck92ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZBRTdCNkExMTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxO
YW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkE5RERBRDcxMDUxQTAyQjAwMzRGQTJGIC8qIE1h
dGhNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBIZWFkZXJzICovLAorCQkJCUZBOUREQUQ5MTA1MUEw
NTkwMDM0RkEyRiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0x
NzY5Niw2ICsxNzc4Miw4IEBACiAJCQkJMUFCMUFFN0EwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21J
bkN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdCMEMwNTFGREUwMDEzOUY0
RiAvKiB6b29tT3V0Q3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJRTEyODRBREExMDQ0
N0FFQjAwRUFFQjUyIC8qIFBhZ2VUcmFuc2l0aW9uRXZlbnQuaWRsIGluIFJlc291cmNlcyAqLywK
KwkJCQlGQUU3QjY2MTEwNTE5NkIzMDA3NDkwRTIgLyogbWF0aG1sLmNzcyBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJRkFFN0I2OEQxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGh0YWdzLmluIGluIFJlc291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTE3ODQ5LDYgKzE3OTM3LDE2IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgK
KwkJCQlGQUU3QjY4NzEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGQUU3QjY4OTEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQUU3QjY4QjEwNTE5NkY5MDA3
NDkwRTIgLyogTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFFN0I2
OEUxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZlbmNlZC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlGQUU3QjY5MDEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRnJhY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRkFFN0I2OTIxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhJbmxpbmVD
b250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFFN0I2OTQxMDUxOTZGOTAwNzQ5MEUy
IC8qIFJlbmRlck1hdGhTdWJTdXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFFN0I2OTYxMDUx
OTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhVbmRlck92ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkFBQjAyODMxMDUxQTE3NjAwNThFQjk0IC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZBRTdCNkEwMTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1l
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJz
dHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBODEyMjgwRkJCOUMxRDAwNTEw
MjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUE4
MTIzMDBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gNDgwNjUpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQXR0CiAgICAgaWYgKGF0dHJOYW1l
WzBdID09ICctJykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNI
VE1MRG9jdW1lbnQoKSkKKyAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpKQogICAgICAgICBhdHRyTmFtZSA9IGF0dHJOYW1lLmxvd2VyKCk7CiAgICAgCiAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoYXR0ck5hbWUsIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfQVRUUik7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNp
b24gNDgwNjUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEzNCw2ICsxMTM0LDE3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0
eWxlU2VsZWN0b3IKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShNQVRITUwpCisgICAgc3Rh
dGljIGJvb2wgbG9hZGVkTWF0aE1MVXNlckFnZW50U2hlZXQ7CisgICAgaWYgKGUtPmlzTWF0aE1M
RWxlbWVudCgpICYmICFsb2FkZWRNYXRoTUxVc2VyQWdlbnRTaGVldCkgeworICAgICAgICAvLyBN
YXRoTUwgcnVsZXMuCisgICAgICAgIGxvYWRlZE1hdGhNTFVzZXJBZ2VudFNoZWV0ID0gdHJ1ZTsK
KyAgICAgICAgQ1NTU3R5bGVTaGVldCogbWF0aG1sU2hlZXQgPSBwYXJzZVVBU2hlZXQobWF0aG1s
VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKG1hdGhtbFVzZXJBZ2VudFN0eWxlU2hlZXQpKTsK
KyAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChtYXRobWxTaGVldCwgc2Ny
ZWVuRXZhbCgpKTsKKyAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0
KG1hdGhtbFNoZWV0LCBwcmludEV2YWwoKSk7CisgICAgfQorI2VuZGlmCisgICAgCiAjaWYgRU5B
QkxFKFdNTCkKICAgICBzdGF0aWMgYm9vbCBsb2FkZWRXTUxVc2VyQWdlbnRTaGVldDsKICAgICBp
ZiAoZS0+aXNXTUxFbGVtZW50KCkgJiYgIWxvYWRlZFdNTFVzZXJBZ2VudFNoZWV0KSB7CkluZGV4
OiBXZWJDb3JlL2Nzcy9tYXRobWwuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL21hdGht
bC5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9tYXRobWwuY3NzCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI0NyBAQAorQG5hbWVzcGFjZSAiaHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCI7CisKKy8qIGFwcHJvdmVkICovCittYXRoIHsKKyAgICBmb250LWZhbWlseTog
U1RJWEdlbmVyYWwsICJOZXcgVGltZXMgUm9tYW4iOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICBwYWRkaW5nOiAwcHg7CisgICAgbWFyZ2luOiAwcHg7CisgICAgdGV4dC1pbmRlbnQ6
MDsKKyAgICBmb250LXNpemU6IDEuMWVtOworfQorbWF0aFtkaXNwbGF5PSJibG9jayJdIHsKKyAg
ICBmb250LWZhbWlseTogIk5ldyBUaW1lcyBSb21hbiIKKyAgICBkaXNwbGF5OiBibG9jazsKKwl0
ZXh0LWFsaWduOiBjZW50ZXI7CisJcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOworfQorCittc3Vi
ID4gKiArICogeworICAgdmVydGljYWwtYWxpZ246IHN1YjsKKyAgIGZvbnQtc2l6ZTogMC43NWVt
OworICAgbGluZS1oZWlnaHQ6IDAuNzVlbTsKK30KKworbXN1cCA+ICogKyAqIHsKKyAgIHZlcnRp
Y2FsLWFsaWduOiBzdXBlcjsKKyAgIGZvbnQtc2l6ZTogMC43NWVtOworICAgbGluZS1oZWlnaHQ6
IDAuNzVlbTsKK30KK21zdWJzdXAgPiAqIHsKKyAgICBtYXJnaW46IDBweDsKKyAgICBwYWRkaW5n
OiAwcHg7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKworbXN1YnN1cCA+ICogKyAq
IHsKKyAgIGZvbnQtc2l6ZTogMC43NWVtOworICAgbGluZS1oZWlnaHQ6IDAuNzVlbTsKK30KKwor
bXVuZGVyb3ZlciA+ICogKyAqLCBtb3ZlciA+ICogKyAqLCBtdW5kZXIgPiAqICsgKiB7CisgICBm
b250LXNpemU6IDAuNzVlbTsKKyAgIGxpbmUtaGVpZ2h0OiAwLjU2MjVlbTsKK30KKworbXJvdyB7
CisgICAgbGluZS1oZWlnaHQ6IDFlbTsKKyAgICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAgIHZl
cnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKK21mZW5jZWQsIG1mcmFjIHsKKyAgICB2ZXJ0aWNh
bC1hbGlnbjogbWlkZGxlOworfQorCittZmVuY2VkID4gKiB7CisgICAgdmVydGljYWwtYWxpZ246
IG1pZGRsZTsKK30KKworbW8sIG1uLCBtaSB7CisgICBsaW5lLWhlaWdodDogMC43NWVtOworICAg
cGFkZGluZzogMHB4OworICAgbWFyZ2luOiAwcHg7Cit9CisKK21vW21hdGhzaXplPSJzbWFsbCJd
LCBtblttYXRoc2l6ZT0ic21hbGwiXSwgbWlbbWF0aHNpemU9InNtYWxsIl0geworICAgZm9udC1z
aXplOiAwLjc1ZW07CisgICBsaW5lLWhlaWdodDogMC41NjI1ZW07Cit9CisKK21vW21hdGhzaXpl
PSJub3JtYWwiXSxtblttYXRoc2l6ZT0ibm9ybWFsIl0sbWlbbWF0aHNpemU9Im5vcm1hbCJdIHsK
KyAgIGZvbnQtc2l6ZTogMWVtOworICAgbGluZS1oZWlnaHQ6IDAuNzVlbTsKK30KKworbW9bbWF0
aHNpemU9ImJpZyJdLCBtblttYXRoc2l6ZT0iYmlnIl0sIG1pW21hdGhzaXplPSJiaWciXSB7Cisg
ICBsaW5lLWhlaWdodDogMS4yZW07CisgICBmb250LXNpemU6IDEuNWVtOworfQorIAorYW5ub3Rh
dGlvbiwgYW5ub3RhdGlvbi14bWwgeworICAgIGRpc3BsYXk6bm9uZTsKK30KKworbXBoYW50b20g
eworICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKK30KK21lcnJvciB7CisgICAgb3V0bGluZTogc29s
aWQgdGhpbiByZWQ7Cit9CisKKworLyogcmFuZG9tICovCittc3FydAorCXtkaXNwbGF5OmlubGlu
ZS1ibG9jazsKKwltYXJnaW46MXB4IDAgMXB4IDIycHg7CisJYm9yZGVyLXRvcDpzb2xpZCAxcHg7
CisJYm9yZGVyLWxlZnQ6Z3Jvb3ZlIDJweDsKKwlwYWRkaW5nOjJweCA1cHggMCAwO30KK21zcXJ0
OmJlZm9yZQorCXtkaXNwbGF5OmlubGluZS1ibG9jazsKKwl2ZXJ0aWNhbC1hbGlnbjpib3R0b207
CisJY29udGVudDonJzsKKwl3aWR0aDoyMnB4OworCWhlaWdodDoxNHB4OworCWJhY2tncm91bmQt
cmVwZWF0Om5vLXJlcGVhdDsKKwltYXJnaW46MCAzcHggMCAtMjJweDt9Cittc3FydDpiZWZvcmUs
IG1yb290ID4gKiArICo6YWZ0ZXIKKwl7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2Uv
cG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQllBQUFBT0NBWUFBQUFyTWV6TkFB
QUFya2xFUVZSNDJtTmdJQXprZ0ppUmdZcEFHSWduQWZGdklGNEp4S3lVR3NnT3hLVkEvQVNJNXdD
eEhSQnZBK0s5UU14SHJxR1JRTHdlaURPQm1CZEpuQVdJNXdQeGVTQVdKOFZBUFNCT0FXSlRBdW82
Z1BndUVLc1FZNmdRRVBPUTRJaDhJSDRKeENZTU5BQmhRUHdPaU4xcFliZ3pFTDhDNGhoYUdHNEF4
TStCdUpnV2hpc0I4VzBnN3FPRjRTSkFmQnFJbDFFakk2RURiaURlQWNRN1NVeGxSQUdRYTVjQThS
a0dHb0ZlQUNHMUdHZHFlZ0pmQUFBQUFFbEZUa1N1UW1DQyIpO30KK21yb290CisJe2Rpc3BsYXk6
aW5saW5lLXRhYmxlOworCWRpcmVjdGlvbjpydGw7fQorbXJvb3QgPiAqCisJe2Rpc3BsYXk6dGFi
bGUtY2VsbDsKKwlkaXJlY3Rpb246bHRyOworCXRleHQtYWxpZ246bGVmdDt9Cittcm9vdCA+ICo6
Zmlyc3QtY2hpbGQKKwl7Ym9yZGVyLXRvcDpzb2xpZCAxcHg7CisJYm9yZGVyLWxlZnQ6Z3Jvb3Zl
IDJweDsKKwlwYWRkaW5nOjJweCA1cHggMCAzcHg7fQorbXJvb3QgPiAqICsgKgorCXt2ZXJ0aWNh
bC1hbGlnbjpib3R0b207CisJdGV4dC1hbGlnbjpyaWdodDsKKwlmb250LXNpemU6MC43ZW07CisJ
bGluZS1oZWlnaHQ6MWVtO30KK21yb290ID4gKiArICo6YWZ0ZXIKKwl7ZGlzcGxheTpibG9jazsK
Kwljb250ZW50OiIiOworCXdpZHRoOjIycHg7CisJaGVpZ2h0OjE0cHg7CisJbWFyZ2luLXJpZ2h0
Oi0xcHg7CisJbWFyZ2luLWxlZnQ6YXV0bzt9CittZW5jbG9zZQorCXtkaXNwbGF5OmlubGluZS10
YWJsZTsKKwlib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7CisJYm9yZGVyLXNwYWNpbmc6MC40ZXgg
MDt9CittZW5jbG9zZVtub3RhdGlvbj0idG9wIl0KKwl7Ym9yZGVyLXRvcDpzb2xpZCB0aGluO30K
K21lbmNsb3NlW25vdGF0aW9uPSJib3R0b20iXQorCXtib3JkZXItYm90dG9tOnNvbGlkIHRoaW47
fQorbWVuY2xvc2Vbbm90YXRpb249InJpZ2h0Il0KKwl7Ym9yZGVyLXJpZ2h0OnNvbGlkIHRoaW47
fQorbWVuY2xvc2Vbbm90YXRpb249ImxlZnQiXQorCXtib3JkZXItbGVmdDpzb2xpZCB0aGluO30K
K21lbmNsb3NlW25vdGF0aW9uPSJib3giXQorCXtib3JkZXI6c29saWQgdGhpbjt9CittZW5jbG9z
ZVtub3RhdGlvbj0iaG9yaXpvbnRhbHN0cmlrZSJdCisJe3RleHQtZGVjb3JhdGlvbjpsaW5lLXRo
cm91Z2g7fQorbXRhYmxlCisJe2Rpc3BsYXk6aW5saW5lLXRhYmxlOworCWxpbmUtaGVpZ2h0OjEu
NWVtOworCXRleHQtYWxpZ246Y2VudGVyOworCXZlcnRpY2FsLWFsaWduOm1pZGRsZTt9CittdHIK
Kwl7ZGlzcGxheTp0YWJsZS1yb3c7fQorbXRkCisJe2Rpc3BsYXk6dGFibGUtY2VsbDsKKwlwYWRk
aW5nOjAgMC41ZXg7fQorbXRhYmxlW2NvbHVtbmFsaWduPSJsZWZ0Il0sIG10cltjb2x1bW5hbGln
bj0ibGVmdCJdLCBtdGRbY29sdW1uYWxpZ249ImxlZnQiXQorCXt0ZXh0LWFsaWduOmxlZnQ7fQor
bXRhYmxlW2NvbHVtbmFsaWduPSJyaWdodCJdLCBtdHJbY29sdW1uYWxpZ249InJpZ2h0Il0sIG10
ZFtjb2x1bW5hbGlnbj0icmlnaHQiXQorCXt0ZXh0LWFsaWduOnJpZ2h0O30KK210YWJsZVtyb3dh
bGlnbj0idG9wIl0gbXRkLCBtdGFibGUgbXRyW3Jvd2FsaWduPSJ0b3AiXSBtdGQsIAorbWF0aCBt
dGFibGUgbXRyIG10ZFtyb3dhbGlnbj0idG9wIl0KKwl7dmVydGljYWwtYWxpZ246dG9wfQorbXRh
YmxlW3Jvd2FsaWduPSJib3R0b20iXSBtdGQsIG10YWJsZSBtdHJbcm93YWxpZ249ImJvdHRvbSJd
IG10ZCwgCittYXRoIG10YWJsZSBtdHIgbXRkW3Jvd2FsaWduPSJib3R0b20iXQorCXt2ZXJ0aWNh
bC1hbGlnbjpib3R0b219CittdGFibGVbcm93YWxpZ249ImNlbnRlciJdIG10ZCwgbXRhYmxlIG10
cltyb3dhbGlnbj0iY2VudGVyIl0gbXRkLCAKK21hdGggbXRhYmxlIG10ciBtdGRbcm93YWxpZ249
ImNlbnRlciJdCisJe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0KK210YWJsZVtmcmFtZT0ic29saWQi
XQorCXtib3JkZXI6c29saWQgdGhpbjt9CittdGFibGVbZnJhbWU9ImRhc2hlZCJdCisJe2JvcmRl
cjpkYXNoZWQgdGhpbjt9CittdGFibGVbcm93bGluZXM9InNvbGlkIl0sIG10YWJsZVtyb3dsaW5l
cz0iZGFzaGVkIl0sIAorbXRhYmxlW2NvbHVtbmxpbmVzPSJzb2xpZCJdLCBtdGFibGVbY29sdW1u
bGluZXM9ImRhc2hlZCJdCisJe2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt9CittdGFibGVbcm93
bGluZXM9InNvbGlkIl0gPiBtdHIgKyBtdHIKKwl7Ym9yZGVyLXRvcDpzb2xpZCB0aGluO30KK210
YWJsZVtyb3dsaW5lcz0iZGFzaGVkIl0gPiBtdHIgKyBtdHIKKwl7Ym9yZGVyLXRvcDpkYXNoZWQg
dGhpbjt9CittdGFibGVbY29sdW1ubGluZXM9InNvbGlkIl0gPiBtdHIgPiBtdGQgKyBtdGQKKwl7
Ym9yZGVyLWxlZnQ6c29saWQgdGhpbjt9CittdGFibGVbY29sdW1ubGluZXM9ImRhc2hlZCJdID4g
bXRyID4gbXRkICsgbXRkCisJe2JvcmRlci1sZWZ0OmRhc2hlZCB0aGluO30KK21zcGFjZVtsaW5l
YnJlYWs9Imdvb2RicmVhayJdOmJlZm9yZQorCXtjb250ZW50OiJcMjAwQiI7CisJd2hpdGUtc3Bh
Y2U6bm9ybWFsO30KK21zcGFjZVtsaW5lYnJlYWs9Im5ld2xpbmUiXTpiZWZvcmUsIG1zcGFjZVts
aW5lYnJlYWs9ImluZGVudGluZ25ld2xpbmUiXTpiZWZvcmUgCisJe2NvbnRlbnQ6IlwwMDBBIjsK
Kwl3aGl0ZS1zcGFjZTpwcmU7fQorbXNwYWNlW3dpZHRoXTpiZWZvcmUKKwl7Y29udGVudDpub3Jt
YWw7fQorbXNwYWNlW3dpZHRoPSJ2ZXJ5dGhpbm1hdGhzcGFjZSJdCisJe3BhZGRpbmc6MCAwLjA1
ZW07fQorbXNwYWNlW3dpZHRoPSJ0aGlubWF0aHNwYWNlIl0KKwl7cGFkZGluZzowIDAuMDhlbTt9
Cittc3BhY2Vbd2lkdGg9Im1lZGl1bW1hdGhzcGFjZSJdCisJe3BhZGRpbmc6MCAwLjExZW07fQor
bXNwYWNlW3dpZHRoPSJ0aGlja21hdGhzcGFjZSJdCisJe3BhZGRpbmc6MCAwLjE0ZW07fQorbXNw
YWNlW3dpZHRoPSJ2ZXJ5dGhpY2ttYXRoc3BhY2UiXQorCXtwYWRkaW5nOjAgMC4xN2VtO30KK21z
dGFjaywgbWxvbmdkaXYKKwl7ZGlzcGxheTppbmxpbmUtdGFibGU7CisJZm9udC1mYW1pbHk6bW9u
b3NwYWNlO30KK21zdGFjaworCXt0ZXh0LWFsaWduOnJpZ2h0OworCWJvcmRlci1jb2xsYXBzZTpj
b2xsYXBzZTt9Cittc3RhY2tbYWxpZ249J3RvcCddLCBtbG9uZ2RpdlthbGlnbj0ndG9wJ10KKwl7
dmVydGljYWwtYWxpZ246dG9wO30KK21zdGFja1thbGlnbj0nYm90dG9tJ10sIG1sb25nZGl2W2Fs
aWduPSdib3R0b20nXSAKKwl7dmVydGljYWwtYWxpZ246Ym90dG9tO30KK21zdGFja1thbGlnbj0n
Y2VudGVyJ10sIG1sb25nZGl2W2FsaWduPSdjZW50ZXInXQorCXt2ZXJ0aWNhbC1hbGlnbjptaWRk
bGU7fQorbXNsaW5lCisJe2Rpc3BsYXk6YmxvY2s7CisJYm9yZGVyLWJvdHRvbTpzb2xpZCB0aGlu
O30KK21zdGFjayA+ICosIG1sb25nZGl2ID4gbW46Zmlyc3QtY2hpbGQKKwl7ZGlzcGxheTp0YWJs
ZS1yb3c7fQorbWxvbmdkaXYgPiAqOmZpcnN0LWNoaWxkICsgKgorCXtkaXNwbGF5OnRhYmxlLWNl
bGw7fQorbWxvbmdkaXYgPiAqOmZpcnN0LWNoaWxkICsgKiArICoKKwl7Ym9yZGVyLXRvcDpzb2xp
ZCB0aGluO30KK21sb25nZGl2ID4gKjpmaXJzdC1jaGlsZDpiZWZvcmUKKwl7ZGlzcGxheTp0YWJs
ZS1jZWxsOworCWNvbnRlbnQ6J1xhMCc7fQorbWxvbmdkaXYgPiAqOmZpcnN0LWNoaWxkICsgKjph
ZnRlcgorCXtjb250ZW50OicpJzt9CittbG9uZ2RpdiA+ICoKKwl7ZGlzcGxheTpibG9jazt9Citt
c2NhcnJ5CisJe2Rpc3BsYXk6bm9uZTt9CittYWN0aW9uID4gKiArICoKKwl7ZGlzcGxheTpub25l
O30KK21hY3Rpb25bYWN0aW9udHlwZT0idG9vbHRpcCJdOmZvY3VzID4gKiArICosCittYWN0aW9u
W2FjdGlvbnR5cGU9InRvb2x0aXAiXTpob3ZlciA+ICogKyAqCisJe3Bvc2l0aW9uOmZpeGVkOwor
CWRpc3BsYXk6YmxvY2s7CisJdG9wOjA7CisJbGVmdDowOworCWJhY2tncm91bmQtY29sb3I6SW5m
b0JhY2tncm91bmQ7CisJY29sb3I6SW5mb1RleHQ7CisJcGFkZGluZzowLjVleDsKKwlib3JkZXI6
c29saWQgMXB4O30KKyAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA0ODA2NSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSwxMyBAQAogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJNYXRoTUxFbGVtZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgIk1hdGhNTE5h
bWVzLmgiCisjZW5kaWYKKworCiAjaWYgRU5BQkxFKFdNTCkKICNpbmNsdWRlICJXTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIldNTEVsZW1lbnQuaCIKQEAgLTc5Myw2ICs4MDAsMTAgQEAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbQogICAgIGVsc2UgaWYgKHFOYW1lLm5h
bWVzcGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCiAgICAgICAgIGUgPSBT
VkdFbGVtZW50RmFjdG9yeTo6Y3JlYXRlU1ZHRWxlbWVudChxTmFtZSwgdGhpcywgY3JlYXRlZEJ5
UGFyc2VyKTsKICNlbmRpZgorI2lmIEVOQUJMRShNQVRITUwpCisgICAgZWxzZSBpZiAocU5hbWUu
bmFtZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFjZVVSSSkKKyAgICAg
ICAgZSA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVNYXRoTUxFbGVtZW50KHFOYW1lLCB0
aGlzLCBjcmVhdGVkQnlQYXJzZXIpOworI2VuZGlmCiAjaWYgRU5BQkxFKFdNTCkKICAgICBlbHNl
IGlmIChxTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBXTUxOYW1lczo6d21sTmFtZXNwYWNlVVJJKQog
ICAgICAgICBlID0gV01MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZVdNTEVsZW1lbnQocU5hbWUsIHRo
aXMsIGNyZWF0ZWRCeVBhcnNlcik7CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA0ODA2NSkKKysrIFdlYkNvcmUvZG9t
L05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3NywxMiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgaXNTVkdFbGVtZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKE1BVEhNTCkKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbHNlCisgICAgc3RhdGljIGJvb2wgaXNNYXRoTUxFbGVt
ZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShXTUwpCiAg
ICAgdmlydHVhbCBib29sIGlzV01MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZWxzZQpJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqICBNYXRoTUxFbGVtZW50LmNwcAorICogIFdlYkNvcmUKKyAqCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4KKyAqCisgCisg
CisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorIAorIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShN
QVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoTUxFbGVt
ZW50LmgiCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworICAgIAorTWF0aE1MRWxlbWVudDo6
TWF0aE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCisgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVFbGVt
ZW50WmVyb1JlZkNvdW50KQoreworfQorICAgIAorUGFzc1JlZlB0cjxNYXRoTUxFbGVtZW50PiBN
YXRoTUxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBuZXcgTWF0aE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCk7Cit9CisKK1JlbmRlck9iamVjdCogTWF0aE1MRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSogc3R5bGUpCit7CisgICAgcmV0dXJuIFJlbmRl
ck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKK30KKyAgICAKKyAgICAKK30KKwor
I2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisv
KgorICogIE1hdGhNTEVsZW1lbnQuaAorICogIFdlYkNvcmUKKyAqCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4KKyAqCisgCisgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
IAorICovCisKKyNpZm5kZWYgTWF0aE1MRWxlbWVudF9oCisjZGVmaW5lIE1hdGhNTEVsZW1lbnRf
aAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKyNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBNYXRoTUxFbGVtZW50IDogcHVibGlj
IFN0eWxlZEVsZW1lbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWF0aE1MRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Kik7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICAg
ICAgCisgICAgcHJvdGVjdGVkOgorICAgICAgICBNYXRoTUxFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CisgICAgICAgIAorICAgIH07CisgICAgCit9CisK
KyNlbmRpZgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg1IEBA
CisvKgorICogIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCisgKiAgV2ViQ29yZQor
ICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5j
b20pLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAK
KyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAor
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJl
bmRlck1hdGhJbmxpbmVDb250YWluZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJGZW5jZWQuaCIKKyNp
bmNsdWRlICJSZW5kZXJGcmFjdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhTdWJTdXAuaCIK
KyNpbmNsdWRlICJSZW5kZXJNYXRoVW5kZXJPdmVyLmgiCisjaW5jbHVkZSAiTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudDo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBNYXRo
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQoreworfQorCitQYXNzUmVmUHRyPE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCit7Cisg
ICAgcmV0dXJuIG5ldyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KTsKK30KKworUmVuZGVyT2JqZWN0KiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK3sK
KyAgICBpZiAoc3R5bGUtPmNvbnRlbnREYXRhKCkgJiYgc3R5bGUtPmRpc3BsYXkoKSE9SU5MSU5F
X0JMT0NLKSB7CisgICAgICAgIC8vIElmIHRoZSBzdHlsZSBpcyBub3QgaW5saW5lLWJsb2NrLCBk
ZWZhdWx0IHRvIHN0eWxlZCByZW5kZXIgb2JqZWN0CisgICAgICAgIHJldHVybiBSZW5kZXJPYmpl
Y3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CisgICAgfQorICAgIFJlbmRlck9iamVjdCog
b2JqZWN0ID0gMDsKKyAgICBpZiAobG9jYWxOYW1lKCk9PSJtZmVuY2VkIikgeworICAgICAgICBv
YmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJGZW5jZWQodGhpcyk7CisgICAgfSBlbHNlIGlmIChs
b2NhbE5hbWUoKT09Im1mcmFjIikgeworICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5k
ZXJGcmFjdGlvbih0aGlzKTsKKyAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZSgpPT0ibXN1YnN1cCIp
IHsKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aFN1YlN1cCh0aGlzKTsK
KyAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZSgpPT0ibW92ZXIiKSB7CisgICAgICAgIG9iamVjdCA9
IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhVbmRlck92ZXIodGhpcyk7CisgICAgfSBlbHNlIGlmIChs
b2NhbE5hbWUoKT09Im11bmRlciIpIHsKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVu
ZGVyTWF0aFVuZGVyT3Zlcih0aGlzKTsKKyAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZSgpPT0ibXVu
ZGVyb3ZlciIpIHsKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aFVuZGVy
T3Zlcih0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgIC8vIHRoaXMgd2lsbCBqdXN0IGNyZWF0
ZSBhbiBpbmxpbmUtYmxvY2sgd2l0aCBhbmQgaW5saW5lIGZsb3cgd2l0aG91dCBzcGFjZXMKKyAg
ICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyKHRoaXMp
OworICAgIH0KKyAgICBvYmplY3QtPnNldFN0eWxlKHN0eWxlKTsKKyAgICByZXR1cm4gb2JqZWN0
OworfQorICAgIAorICAgIAorfQorCisjZW5kaWYKKwpJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1s
L01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
bWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqICBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmgKKyAqICBX
ZWJDb3JlCisgKgorICogIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1p
bG93c2tpLmNvbSkuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJv
amVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisjaWZuZGVmIE1hdGhNTElubGlu
ZUNvbnRhaW5lckVsZW1lbnRfaAorI2RlZmluZSBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
X2gKKworI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudCA6IHB1YmxpYyBNYXRoTUxFbGVtZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOworICAgIAorICAgICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOworICAgIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOworICAgIAor
ICAgIH07CisgICAgCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9N
YXRoTUxNYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvTWF0aE1M
TWF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0
aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICogIE1hdGhN
YXRoTUxFbGVtZW50LmNwcAorICogIFdlYkNvcmUKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5
IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4KKyAqCisgCisgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoTUxNYXRoRWxlbWVudC5oIgorI2luY2x1
ZGUgIk1hdGhNTE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5h
bWVzcGFjZSBNYXRoTUxOYW1lczsKKworTWF0aE1MTWF0aEVsZW1lbnQ6Ok1hdGhNTE1hdGhFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAg
ICA6IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCit7Cit9
CisKK1Bhc3NSZWZQdHI8TWF0aE1MTWF0aEVsZW1lbnQ+IE1hdGhNTE1hdGhFbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorewor
ICAgIHJldHVybiBuZXcgTWF0aE1MTWF0aEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpOworfQor
Cit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NyBAQAorLyoKKyAqICBNYXRoTWF0aE1MRWxlbWVudC5oCisgKiAgV2ViQ29y
ZQorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3Nr
aS5jb20pLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QK
KyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
IAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworI2lmbmRlZiBNYXRoTUxNYXRoRWxlbWVu
dF9oCisjZGVmaW5lIE1hdGhNTE1hdGhFbGVtZW50X2gKKworI2lmIEVOQUJMRShNQVRITUwpCisj
aW5jbHVkZSAiTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgCisgICAgY2xhc3MgTWF0aE1MTWF0aEVsZW1lbnQgOiBwdWJsaWMgTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNYXRoTUxNYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50Kik7CisgICAgICAgIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgTWF0
aE1MTWF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsK
KyAgICAgICAgCisgICAgfTsKKyAgICAKK30KKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvbWF0aG1sL1JlbmRlckZlbmNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwv
UmVuZGVyRmVuY2VkLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlckZl
bmNlZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjE1IEBACisvKgorICogIFJlbmRlckZl
bmNlZC5jcHAKKyAqICBXZWJDb3JlCisgKgorICogIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1p
bG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiTWF0aE1M
TmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJGZW5jZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJJbmxp
bmUuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1l
czsKKworUmVuZGVyRmVuY2VkOjpSZW5kZXJGZW5jZWQoTm9kZSogZmVuY2VkKSAKKyAgICA6IFJl
bmRlck1hdGhJbmxpbmVDb250YWluZXIoZmVuY2VkKSAKK3sKKyAgICBBdG9taWNTdHJpbmcgc2Vw
YXJhdG9ycyA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihmZW5jZWQpLT5nZXRBdHRyaWJ1dGUoInNl
cGFyYXRvcnMiKTsKKyAgICBWZWN0b3I8VUNoYXI+IGNoYXJhY3RlcnM7CisgICAgaWYgKCFzZXBh
cmF0b3JzLmlzTnVsbCgpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGk9MDsgaTxzZXBh
cmF0b3JzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghaXNTcGFjZU9yTmV3bGlu
ZShzZXBhcmF0b3JzW2ldKSkgeworICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuYXBwZW5kKHNl
cGFyYXRvcnNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fc2VwYXJh
dG9ycyA9IHNlcGFyYXRvcnMubGVuZ3RoKCk9PTAgPyAwIDogU3RyaW5nSW1wbDo6Y3JlYXRlKGNo
YXJhY3RlcnMuZGF0YSgpICwgY2hhcmFjdGVycy5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIFRoZSBzZXBhcmF0b3IgZGVmYXVsdHMgdG8gYSBzaW5nbGUgY29tbWEKKyAgICAgICAg
bV9zZXBhcmF0b3JzID0gU3RyaW5nSW1wbDo6Y3JlYXRlKCIsIik7CisgICAgfQorICAgIAorfQor
Cit2b2lkIFJlbmRlckZlbmNlZDo6bWFrZUZlbmNlcygpCit7CisgICAgLy8gYWRkIGZlbmNpbmcK
KyAgICBFbGVtZW50KiBmZW5jZWQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKTsKKyAg
ICBBdG9taWNTdHJpbmcgb3BlblZhbHVlID0gZmVuY2VkLT5nZXRBdHRyaWJ1dGUoIm9wZW4iKTsK
KyAgICBBdG9taWNTdHJpbmcgY2xvc2VWYWx1ZSA9IGZlbmNlZC0+Z2V0QXR0cmlidXRlKCJjbG9z
ZSIpOworICAgIAorICAgIExlbmd0aCBwYWQoc3RhdGljX2Nhc3Q8aW50PihzdHlsZSgpLT5mb250
U2l6ZSgpICogMC4xKSAsIEZpeGVkKTsKKyAgICAKKyAgICBSZW5kZXJJbmxpbmUqIG9wZW4gPSBu
ZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IG9wZW5TdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBvcGVu
U3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgIG9wZW5TdHlsZS0+c2V0UGFkZGluZ1Jp
Z2h0KHBhZCk7CisgICAgb3Blbi0+c2V0U3R5bGUob3BlblN0eWxlLnJlbGVhc2UoKSk7CisgICAg
UmVuZGVyVGV4dCogb3BlblRleHQgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHQoZG9j
dW1lbnQoKSxvcGVuVmFsdWUuaXNOdWxsKCkgPyBTdHJpbmdJbXBsOjpjcmVhdGUoIigiKSA6IG9w
ZW5WYWx1ZS5pbXBsKCkpOworICAgIG9wZW5UZXh0LT5zZXRTdHlsZShvcGVuLT5zdHlsZSgpKTsK
KyAgICBvcGVuLT5hZGRDaGlsZChvcGVuVGV4dCk7CisgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxk
KG9wZW4pOworICAgIFJlbmRlcklubGluZSogY2xvc2UgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJl
bmRlcklubGluZShkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGNsb3NlU3R5
bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgY2xvc2VTdHlsZS0+aW5oZXJpdEZyb20o
c3R5bGUoKSk7CisgICAgY2xvc2VTdHlsZS0+c2V0UGFkZGluZ0xlZnQocGFkKTsKKyAgICBjbG9z
ZS0+c2V0U3R5bGUoY2xvc2VTdHlsZS5yZWxlYXNlKCkpOworICAgIFJlbmRlclRleHQqIGNsb3Nl
VGV4dCA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dChkb2N1bWVudCgpLGNsb3NlVmFs
dWUuaXNOdWxsKCkgPyBTdHJpbmdJbXBsOjpjcmVhdGUoIikiKSA6IGNsb3NlVmFsdWUuaW1wbCgp
KTsKKyAgICBjbG9zZVRleHQtPnNldFN0eWxlKGNsb3NlLT5zdHlsZSgpKTsKKyAgICBjbG9zZS0+
YWRkQ2hpbGQoY2xvc2VUZXh0KTsKKyAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQoY2xvc2UpOwor
fQorCit2b2lkIFJlbmRlckZlbmNlZDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKK3sKKyAgICBpZiAoaXNFbXB0eSgpKSB7CisgICAgICAg
IC8vIG1ha2UgdGhlIGZlbmNlcyBpZiB0aGUgcmVuZGVyIG9iamVjdCBpcyBlbXB0eQorICAgICAg
ICBtYWtlRmVuY2VzKCk7CisgICAgfQorICAgIAorICAgIGlmIChtX3NlcGFyYXRvcnMuZ2V0KCkp
IHsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvdW50ID0gMDsKKyAgICAgICAgTm9kZSogcG9zaXRp
b24gPSBjaGlsZC0+bm9kZSgpOworICAgICAgICB3aGlsZSAocG9zaXRpb24pIHsKKyAgICAgICAg
ICAgIGlmIChwb3NpdGlvbi0+bm9kZVR5cGUoKT09Tm9kZTo6RUxFTUVOVF9OT0RFKSB7CisgICAg
ICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvc2l0aW9u
ID0gcG9zaXRpb24tPnByZXZpb3VzU2libGluZygpOworICAgICAgICB9CisgICAgICAgIGlmIChj
b3VudD4xKSB7CisgICAgICAgICAgICBVQ2hhciBzZXBhcmF0b3I7CisgICAgICAgICAgICBpZiAo
KGNvdW50LTEpPj1tX3NlcGFyYXRvcnMuZ2V0KCktPmxlbmd0aCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gdXNlIHRoZSBsYXN0IHNlcGFyYXRvciBzaW5jZSB3ZSd2ZSBydW4gb3V0IG9mIHNwZWNp
ZmllZCBzZXBhcmF0b3JzCisgICAgICAgICAgICAgICAgc2VwYXJhdG9yID0gKCptX3NlcGFyYXRv
cnMuZ2V0KCkpW21fc2VwYXJhdG9ycy5nZXQoKS0+bGVuZ3RoKCkgLSAxXTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gdXNlIHRoZSBjdXJyZW50IHNlcGFyYXRvciBj
aGFyYWN0ZXIgc3BlY2lmaWVkIGJ5IHRoZSBjaGlsZCBjb3VudAorICAgICAgICAgICAgICAgIHNl
cGFyYXRvciA9ICgqbV9zZXBhcmF0b3JzLmdldCgpKVtjb3VudCAtIDFdOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgUmVuZGVySW5saW5lKiBzZXBhcmF0b3JJbmxpbmUgPSBuZXcgKHJlbmRl
ckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gc2VwYXJhdG9yU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBzZXBhcmF0b3JTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7CisgICAgICAgICAg
ICBMZW5ndGggcGFkKHN0YXRpY19jYXN0PGludD4oc3R5bGUoKS0+Zm9udFNpemUoKSAqIDAuMikg
LCBGaXhlZCk7CisgICAgICAgICAgICBzZXBhcmF0b3JTdHlsZS0+c2V0UGFkZGluZ0xlZnQocGFk
KTsKKyAgICAgICAgICAgIHNlcGFyYXRvclN0eWxlLT5zZXRQYWRkaW5nUmlnaHQocGFkKTsKKyAg
ICAgICAgICAgIHNlcGFyYXRvcklubGluZS0+c2V0U3R5bGUoc2VwYXJhdG9yU3R5bGUucmVsZWFz
ZSgpKTsKKyAgICAgICAgICAgIFJlbmRlclRleHQqIHNlcGFyYXRvclRleHQgPSBuZXcgKHJlbmRl
ckFyZW5hKCkpIFJlbmRlclRleHQoZG9jdW1lbnQoKSAsIFN0cmluZ0ltcGw6OmNyZWF0ZSgmc2Vw
YXJhdG9yICwgMSkpOworICAgICAgICAgICAgc2VwYXJhdG9yVGV4dC0+c2V0U3R5bGUoc2VwYXJh
dG9ySW5saW5lLT5zdHlsZSgpKTsKKyAgICAgICAgICAgIHNlcGFyYXRvcklubGluZS0+YWRkQ2hp
bGQoc2VwYXJhdG9yVGV4dCk7CisgICAgICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQoc2Vw
YXJhdG9ySW5saW5lICwgYmVmb3JlQ2hpbGQgPyBiZWZvcmVDaGlsZCA6IGxhc3RDaGlsZCgpKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAvLyBpZiB3ZSBoYXZlIGEgYmxvY2ssIHdlJ2xsIHdyYXAg
aXQgaW4gYW4gaW5saW5lLWJsb2NrCisgICAgaWYgKGNoaWxkLT5pc0Jsb2NrRmxvdygpKSB7CisK
KyAgICAgICAgLy8gYmxvY2sgb2JqZWN0cyB3cmFwcGVyCisKKyAgICAgICAgUmVuZGVyQmxvY2sq
IGJsb2NrID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKKyAg
ICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUo
KTsKKyAgICAgICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgICAgICBuZXdT
dHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgICAgICBibG9jay0+c2V0U3R5bGUo
bmV3U3R5bGUucmVsZWFzZSgpKTsKKyAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKGJsb2Nr
ICwgYmVmb3JlQ2hpbGQgPyBiZWZvcmVDaGlsZCA6IGxhc3RDaGlsZCgpKTsKKyAgICAgICAgYmxv
Y2stPmFkZENoaWxkKGNoaWxkKTsgICAgCisgICAgfSBlbHNlIHsKKworICAgICAgICAvLyB3ZSBo
YXZlIGFuIGlubGluZSBzbyB3ZSBjYW4ganVzdCBhZGQgaXQKKworICAgICAgICBSZW5kZXJCbG9j
azo6YWRkQ2hpbGQoY2hpbGQgLCBiZWZvcmVDaGlsZCA/IGJlZm9yZUNoaWxkIDogbGFzdENoaWxk
KCkpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJGZW5jZWQ6OmxheW91dCgpCit7CisgICAgaWYg
KGlzRW1wdHkoKSkgeworICAgICAgICAvLyBtYWtlIHRoZSBmZW5jZXMgaWYgdGhlIGZlbmNlZCBl
bGVtZW50IGlzIGVtcHR5CisgICAgICAgIG1ha2VGZW5jZXMoKTsKKyAgICB9CisgICAgUmVuZGVy
QmxvY2s6OmxheW91dCgpOworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvcGVuID0gKFJlbmRl
ckJveE1vZGVsT2JqZWN0ICopZmlyc3RDaGlsZCgpOworICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiBjbG9zZSA9IChSZW5kZXJCb3hNb2RlbE9iamVjdCAqKWxhc3RDaGlsZCgpOworICAgIGludCBt
YXhIZWlnaHQgPSAwOworICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IG9wZW4tPm5leHRTaWJs
aW5nKCk7CisgICAgd2hpbGUgKGN1cnJlbnQhPWNsb3NlKSB7CisgICAgICAgIGlmIChjdXJyZW50
LT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKKworICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIGJveCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3VycmVudCk7CisKKyAgICAgICAgICAg
IGlmIChib3gtPm9mZnNldEhlaWdodCgpPm1heEhlaWdodCkgeworICAgICAgICAgICAgICAgIC8v
IHRoaXMgYm94IGhhcyBhIGxhcmdlciBoZWlnaHQKKyAgICAgICAgICAgICAgICBtYXhIZWlnaHQg
PSBib3gtPm9mZnNldEhlaWdodCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpOworICAgIH0KKyAgICBpZiAobWF4SGVp
Z2h0PjApIHsKKyAgICAgICAgYm9vbCBkb0xheW91dEFnYWluID0gZmFsc2U7CisgICAgICAgIGlu
dCBmZW5jZUhlaWdodCA9IHN0YXRpY19jYXN0PGludD4obWF4SGVpZ2h0ICogMS4xNSk7CisgICAg
ICAgIGlmIChvcGVuLT5vZmZzZXRIZWlnaHQoKTxmZW5jZUhlaWdodCkgeworICAgICAgICAgICAg
Y29uc3QgRm9udERlc2NyaXB0aW9uIG9sZERlc2MgPSBvcGVuLT5zdHlsZSgpLT5mb250KCkuZm9u
dERlc2NyaXB0aW9uKCk7CisgICAgICAgICAgICBGb250RGVzY3JpcHRpb24qIGRlc2MgPSBuZXcg
Rm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgICAgICBkZXNjLT5zZXRJc0Fic29sdXRlU2l6ZSh0
cnVlKTsKKyAgICAgICAgICAgIGRlc2MtPnNldEZhbWlseShvbGREZXNjLmZhbWlseSgpKTsKKyAg
ICAgICAgICAgIGRlc2MtPnNldFdlaWdodChvbGREZXNjLndlaWdodCgpKTsKKyAgICAgICAgICAg
IGRlc2MtPnNldFNtYWxsQ2FwcyhvbGREZXNjLnNtYWxsQ2FwcygpKTsKKyAgICAgICAgICAgIGRl
c2MtPnNldEl0YWxpYyhvbGREZXNjLml0YWxpYygpKTsKKyAgICAgICAgICAgIGRlc2MtPnNldFNw
ZWNpZmllZFNpemUoZmVuY2VIZWlnaHQpOworICAgICAgICAgICAgZGVzYy0+c2V0Q29tcHV0ZWRT
aXplKGZlbmNlSGVpZ2h0KTsKKyAgICAgICAgICAgIG9wZW4tPnN0eWxlKCktPnNldEZvbnREZXNj
cmlwdGlvbigqZGVzYyk7CisgICAgICAgICAgICBvcGVuLT5zdHlsZSgpLT5mb250KCkudXBkYXRl
KG9wZW4tPnN0eWxlKCktPmZvbnQoKS5mb250U2VsZWN0b3IoKSk7CisgICAgICAgICAgICBvcGVu
LT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpOworICAgICAgICAgICAgZG9MYXlvdXRB
Z2FpbiA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNsb3NlLT5vZmZzZXRIZWlnaHQo
KTxmZW5jZUhlaWdodCkgeworICAgICAgICAgICAgY29uc3QgRm9udERlc2NyaXB0aW9uIG9sZERl
c2MgPSBjbG9zZS0+c3R5bGUoKS0+Zm9udCgpLmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICAg
ICAgRm9udERlc2NyaXB0aW9uKiBkZXNjID0gbmV3IEZvbnREZXNjcmlwdGlvbigpOworICAgICAg
ICAgICAgZGVzYy0+c2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7CisgICAgICAgICAgICBkZXNjLT5z
ZXRGYW1pbHkob2xkRGVzYy5mYW1pbHkoKSk7CisgICAgICAgICAgICBkZXNjLT5zZXRXZWlnaHQo
b2xkRGVzYy53ZWlnaHQoKSk7CisgICAgICAgICAgICBkZXNjLT5zZXRTbWFsbENhcHMob2xkRGVz
Yy5zbWFsbENhcHMoKSk7CisgICAgICAgICAgICBkZXNjLT5zZXRJdGFsaWMob2xkRGVzYy5pdGFs
aWMoKSk7CisgICAgICAgICAgICBkZXNjLT5zZXRTcGVjaWZpZWRTaXplKGZlbmNlSGVpZ2h0KTsK
KyAgICAgICAgICAgIGRlc2MtPnNldENvbXB1dGVkU2l6ZShmZW5jZUhlaWdodCk7CisgICAgICAg
ICAgICBjbG9zZS0+c3R5bGUoKS0+c2V0Rm9udERlc2NyaXB0aW9uKCpkZXNjKTsKKyAgICAgICAg
ICAgIGNsb3NlLT5zdHlsZSgpLT5mb250KCkudXBkYXRlKG9wZW4tPnN0eWxlKCktPmZvbnQoKS5m
b250U2VsZWN0b3IoKSk7CisgICAgICAgICAgICBkb0xheW91dEFnYWluID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoZG9MYXlvdXRBZ2FpbikgeworICAgICAgICAgICAgc3R5bGUoKS0+
c2V0SGVpZ2h0KExlbmd0aChmZW5jZUhlaWdodCAsIEZpeGVkKSk7CisgICAgICAgICAgICBzZXRO
ZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICAgICAgICAgIG1hcmtDb250YWlu
aW5nQmxvY2tzRm9yTGF5b3V0KCk7CisgICAgICAgICAgICBvcGVuLT5zZXROZWVkc0xheW91dEFu
ZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICAgICAgICAgIG9wZW4tPmZpcnN0Q2hpbGQoKS0+c2V0
TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CisgICAgICAgICAgICBjbG9zZS0+Zmly
c3RDaGlsZCgpLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworfSAgICAKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5k
ZXJGZW5jZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJGZW5jZWQuaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlckZlbmNlZC5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogIFJlbmRlckZlbmNlZC5oCisgKiAgV2ViQ29yZQor
ICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5j
b20pLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAK
KyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAor
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworI2lmbmRlZiBSZW5kZXJGZW5jZWRfaAorI2Rl
ZmluZSBSZW5kZXJGZW5jZWRfaAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJl
bmRlck1hdGhJbmxpbmVDb250YWluZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAor
ICAgIGNsYXNzIFJlbmRlckZlbmNlZCA6IHB1YmxpYyBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVy
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJlbmRlckZlbmNlZChOb2RlICpmcmFjdGlvbik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBtYWtlRmVuY2VzKCk7
CisgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX3NlcGFyYXRvcnM7CisgICAgfTsKKyAgICAK
K30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyRnJhY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlckZyYWN0aW9uLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlckZyYWN0aW9uLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiAgUmVuZGVyRnJhY3Rpb24uY3BwCisgKiAg
V2ViQ29yZQorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBt
aWxvd3NraS5jb20pLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHBy
b2plY3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisjaW5j
bHVkZSAiUmVuZGVyRnJhY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNp
bmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitSZW5kZXJGcmFjdGlvbjo6UmVuZGVyRnJhY3Rp
b24oTm9kZSAqZnJhY3Rpb24pIAorICAgIDogUmVuZGVyTWF0aElubGluZUNvbnRhaW5lcihmcmFj
dGlvbikgCit7CisgICAgc2V0Q2hpbGRyZW5JbmxpbmUoZmFsc2UpOworfQorCit2b2lkIFJlbmRl
ckZyYWN0aW9uOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWxkKQoreworICAgIC8vIEZJWE1FOiBtdXN0IGhhbmRsZSBiZXZlbGxlZD10cnVlCisg
ICAgCisgICAgUmVuZGVyQmxvY2sqIHJvdyA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxv
Y2soZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByb3dTdHlsZSA9IG1ha2VC
bG9ja1N0eWxlKCk7CisKKyAgICByb3dTdHlsZS0+c2V0VGV4dEFsaWduKENFTlRFUik7CisgICAg
TGVuZ3RoIHBhZChzdGF0aWNfY2FzdDxpbnQ+KHJvd1N0eWxlLT5mb250U2l6ZSgpICogMC4yKSxG
aXhlZCk7CisgICAgcm93U3R5bGUtPnNldFBhZGRpbmdMZWZ0KHBhZCk7CisgICAgcm93U3R5bGUt
PnNldFBhZGRpbmdSaWdodChwYWQpOworICAgIAorICAgIC8vIGFkZCBhIGJvcmRlciB0b3AgaWYg
dGhpcyBpcyB0aGUgZGVub21pbmF0b3IKKyAgICBTdHJpbmcgYXR0TmFtZTsKKyAgICBpZiAoIWlz
RW1wdHkoKSkgeworCisgICAgICAgIC8vIGRlbm9taW5hdG9yLCBzbyBhZGQgYSBib3JkZXIKKyAg
ICAgICAgcm93U3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKDEpOworICAgICAgICByb3dTdHlsZS0+
c2V0Qm9yZGVyVG9wU3R5bGUoU09MSUQpOworICAgICAgICByb3dTdHlsZS0+c2V0Qm9yZGVyVG9w
Q29sb3IoQ29sb3IoMCAsIDAgLCAwKSk7CisgICAgICAgIHJvd1N0eWxlLT5zZXRQYWRkaW5nVG9w
KExlbmd0aCgzICwgRml4ZWQpKTsKKyAgICAgICAgYXR0TmFtZSA9ICJkZW5vbWFsaWduIjsKKyAg
ICB9IGVsc2UgeworCisgICAgICAgIC8vIG51bWVyYXRvciwgbm8gYm9yZGVyCisKKyAgICAgICAg
YXR0TmFtZSA9ICJudW1hbGlnbiI7CisgICAgfQorCisgICAgLy8gd2UgYWx3YXlzIGhhdmUgYW4g
ZWxlbWVudCBub2RlCisgICAgRWxlbWVudCogZnJhY3Rpb24gPSBzdGF0aWNfY2FzdDxFbGVtZW50
ICo+KG5vZGUoKSk7CisKKyAgICAvLyBhbGlnbiB0aGUgY29udGVudHMKKyAgICBTdHJpbmcgYWxp
Z24gPSBmcmFjdGlvbi0+Z2V0QXR0cmlidXRlKGF0dE5hbWUpOworICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShhbGlnbiAsICJsZWZ0IikpIHsKKworICAgICAgICAvLyBsZWZ0IHRleHQgYWxpZ24K
KyAgICAgICAgcm93U3R5bGUtPnNldFRleHRBbGlnbihMRUZUKTsKKworICAgIH0gZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoYWxpZ24gLCAicmlnaHQiKSkgeworCisgICAgICAgIC8vIHJpZ2h0
IHRleHQgYWxpZ24KKworICAgICAgICByb3dTdHlsZS0+c2V0VGV4dEFsaWduKFJJR0hUKTsKKyAg
ICB9CisgICAgU3RyaW5nIHRoaWNrbmVzcyA9IGZyYWN0aW9uLT5nZXRBdHRyaWJ1dGUoImxpbmV0
aGlja25lc3MiKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodGhpY2tuZXNzICwgInRoaW4i
KSkgeworCisJLy8gRklYTUU6IHNob3VsZCB0aGlzIGJlIGEgY29uc3RhbnQgZnJvbSBzb21ld2hl
cmU/CisgICAgICAgIHJvd1N0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aCgxKTsKKworICAgIH0gZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodGhpY2tuZXNzICwgIm1lZGl1bSIpKSB7CisKKwkvLyBG
SVhNRTogc2hvdWxkIHRoaXMgYmUgYSBjb25zdGFudCBmcm9tIHNvbWV3aGVyZT8KKyAgICAgICAg
cm93U3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKDMpOworCisgICAgfSBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh0aGlja25lc3MgLCAidGhpY2siKSkgeworCisJLy8gRklYTUU6IHNob3VsZCB0
aGlzIGJlIGEgY29uc3RhbnQgZnJvbSBzb21ld2hlcmU/CisgICAgICAgIHJvd1N0eWxlLT5zZXRC
b3JkZXJUb3BXaWR0aCg1KTsKKworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBwYXJz
ZSB1bml0cworICAgIH0KKyAgICByb3ctPnNldFN0eWxlKHJvd1N0eWxlLnJlbGVhc2UoKSk7Cisg
ICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJvdyAsIGJlZm9yZUNoaWxkKTsKKyAgICByb3ctPmFk
ZENoaWxkKGNoaWxkKTsgICAgCit9CisgICAgCit9CisKKworI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L21hdGhtbC9SZW5kZXJGcmFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1Jl
bmRlckZyYWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJGcmFj
dGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogIFJlbmRlckZyYWN0
aW9uLmgKKyAqICBXZWJDb3JlCisgKgorICogIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93
c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisjaWZuZGVm
IFJlbmRlckZhY3Rpb25faAorI2RlZmluZSBSZW5kZXJGYWN0aW9uX2gKKworI2lmIEVOQUJMRShN
QVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFJlbmRlckZyYWN0aW9uIDogcHVibGljIFJlbmRl
ck1hdGhJbmxpbmVDb250YWluZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVuZGVyRnJhY3Rp
b24oTm9kZSAqZnJhY3Rpb24pOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVy
T2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOworICAgIH07CisK
K30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aElu
bGluZUNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0
aElubGluZUNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5k
ZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAor
LyoKKyAqICBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmNwcAorICogIFdlYkNvcmUKKyAqCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4K
KyAqCisgCisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShNQVRITUwpCisKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlck1h
dGhJbmxpbmVDb250YWluZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRl
ICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworUmVuZGVyTWF0
aElubGluZUNvbnRhaW5lcjo6UmVuZGVyTWF0aElubGluZUNvbnRhaW5lcihOb2RlICpmZW5jZWQp
IAorICAgIDogUmVuZGVyQmxvY2soZmVuY2VkKSAKK3sKK30KKwordm9pZCBSZW5kZXJNYXRoSW5s
aW5lQ29udGFpbmVyOjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKK3sK
KyAgICAvLyBNYWtlIHN1cmUgd2UgYWx3YXlzIGhhdmUgaW5saW5lLWJsb2NrIGFzIG91ciBzdHls
ZQorICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRl
KCk7CisgICAgbmV3U3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlLmdldCgpKTsKKyAgICBuZXdTdHls
ZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgIFJlbmRlckJsb2NrOjpzZXRTdHlsZShu
ZXdTdHlsZS5yZWxlYXNlKCkpOyAgICAKK30KKworYm9vbCBSZW5kZXJNYXRoSW5saW5lQ29udGFp
bmVyOjppc0NoaWxkQWxsb3dlZChSZW5kZXJPYmplY3QgKmNoaWxkLCBSZW5kZXJTdHlsZSAqKSBj
b25zdAoreworICAgIHJldHVybiBjaGlsZC0+bm9kZSgpICYmIGNoaWxkLT5ub2RlKCktPm5vZGVU
eXBlKCk9PU5vZGU6OkVMRU1FTlRfTk9ERSA/IHRydWUgOiBmYWxzZTsKK30KKworUmVmUHRyPFJl
bmRlclN0eWxlPiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjptYWtlQmxvY2tTdHlsZSgpCit7
CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUo
KTsKKyAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7CisgICAgbmV3U3R5bGUtPnNl
dERpc3BsYXkoQkxPQ0spOworICAgIAorICAgIG5ld1N0eWxlLT5zZXRQYWRkaW5nVG9wKExlbmd0
aCgwICwgRml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0UGFkZGluZ0JvdHRvbShMZW5ndGgoMCAs
IEZpeGVkKSk7CisgICAgbmV3U3R5bGUtPnNldFBhZGRpbmdMZWZ0KExlbmd0aCgwICwgRml4ZWQp
KTsKKyAgICBuZXdTdHlsZS0+c2V0UGFkZGluZ1JpZ2h0KExlbmd0aCgwICwgRml4ZWQpKTsKKyAg
ICBuZXdTdHlsZS0+c2V0TWFyZ2luVG9wKExlbmd0aCgwICwgRml4ZWQpKTsKKyAgICBuZXdTdHls
ZS0+c2V0TWFyZ2luQm90dG9tKExlbmd0aCgwICwgRml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0
TWFyZ2luTGVmdChMZW5ndGgoMCAsIEZpeGVkKSk7CisgICAgbmV3U3R5bGUtPnNldE1hcmdpblJp
Z2h0KExlbmd0aCgwICwgRml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0TGluZUhlaWdodChMZW5n
dGgobmV3U3R5bGUtPmZvbnRTaXplKCkgLCBGaXhlZCkpOworCisgICAgcmV0dXJuIG5ld1N0eWxl
OworfQorCit9ICAgIAorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhJ
bmxpbmVDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRo
SW5saW5lQ29udGFpbmVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJN
YXRoSW5saW5lQ29udGFpbmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiAgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5oCisgKiAgV2ViQ29yZQorICoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLgorICoKKyAK
KyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgCisgKi8KKworI2lmbmRlZiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyX2gKKyNk
ZWZpbmUgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lcl9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQor
CisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAor
ICAgIGNsYXNzIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sg
eworICAgIHB1YmxpYzoKKyAgICAgICAgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lcihOb2RlKiBj
b250YWluZXIpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4pOyAgICAKKyAgICAgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKFJlbmRl
ck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3Q7CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2
aXJ0dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gbWFrZUJsb2NrU3R5bGUoKTsKKyAgICB9OworICAg
IAorfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRo
U3ViU3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoU3ViU3Vw
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhTdWJTdXAuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqICBSZW5kZXJNYXRoU3ViU3Vw
LmNwcAorICogIFdlYkNvcmUKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dz
a2kgKGFsZXhAbWlsb3dza2kuY29tKS4KKyAqCisgCisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJNYXRoTUxOYW1l
cy5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhTdWJTdXAuaCIKKyNpbmNsdWRlICJSZW5kZXJJbmxp
bmUuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgi
CisjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgor
I2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAg
Cit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CisKK1JlbmRlck1hdGhTdWJTdXA6OlJlbmRl
ck1hdGhTdWJTdXAoTm9kZSAqc3Vic3VwKSAKKyAgICA6IFJlbmRlck1hdGhJbmxpbmVDb250YWlu
ZXIoc3Vic3VwKQorICAgICwgbV9zY3JpcHRzKDApCit7Cit9CisKK3ZvaWQgUmVuZGVyTWF0aFN1
YlN1cDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCkKK3sKKyAgICBpZiAobV9zY3JpcHRzKSB7CisgICAgICAgIC8vIHdlIGhhdmUgc3Vic2Ny
aXB0cywgc28gYWRkIGFzIGEgc3Vic2NyaXB0CisgICAgICAgIAorICAgICAgICBib29sIGZpcnN0
Um93ID0gIW1fc2NyaXB0cy0+aGFzU2VjdGlvbnMoKTsKKyAgICAgICAgCisgICAgICAgIC8vIGNy
ZWF0ZSB0aGUgdGFibGUgcm93CisgICAgICAgIFJlbmRlck9iamVjdCogcm93ID0gbmV3IChyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJUYWJsZVJvdyhkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFJl
bmRlclN0eWxlPiByb3dTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICAgICAgcm93
U3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgICAgICByb3dTdHlsZS0+c2V0RGlzcGxh
eShUQUJMRV9ST1cpOworICAgICAgICByb3dTdHlsZS0+c2V0UGFkZGluZ1RvcChMZW5ndGgoMCAs
IEZpeGVkKSk7CisgICAgICAgIHJvd1N0eWxlLT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aCgwICwg
Rml4ZWQpKTsKKyAgICAgICAgcm93LT5zZXRTdHlsZShyb3dTdHlsZS5yZWxlYXNlKCkpOworICAg
ICAgICBtX3NjcmlwdHMtPmFkZENoaWxkKHJvdyk7CisgICAgICAgIAorICAgICAgICAvLyBjcmVh
dGUgdGhlIHRhYmxlIGNlbGwKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBjZWxsID0gbmV3IChyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJUYWJsZUNlbGwoZG9jdW1lbnQoKSk7CisgICAgICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gY2VsbFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICBj
ZWxsU3R5bGUtPmluaGVyaXRGcm9tKHJvdy0+c3R5bGUoKSk7CisgICAgICAgIGNlbGxTdHlsZS0+
c2V0TGluZUhlaWdodChMZW5ndGgoMS4wICwgUGVyY2VudCkpOworICAgICAgICBjZWxsU3R5bGUt
PnNldERpc3BsYXkoVEFCTEVfQ0VMTCk7CisgICAgICAgIGNlbGxTdHlsZS0+c2V0TWFyZ2luVG9w
KExlbmd0aCgwICwgRml4ZWQpKTsKKyAgICAgICAgY2VsbFN0eWxlLT5zZXRQYWRkaW5nVG9wKExl
bmd0aChmaXJzdFJvdyA/IDAgOiA1ICwgRml4ZWQpKTsKKyAgICAgICAgY2VsbFN0eWxlLT5zZXRN
YXJnaW5Cb3R0b20oTGVuZ3RoKDAgLCBGaXhlZCkpOworICAgICAgICBjZWxsU3R5bGUtPnNldFBh
ZGRpbmdCb3R0b20oTGVuZ3RoKDAgLCBGaXhlZCkpOworICAgICAgICBjZWxsLT5zZXRTdHlsZShj
ZWxsU3R5bGUucmVsZWFzZSgpKTsKKyAgICAgICAgcm93LT5hZGRDaGlsZChjZWxsKTsKKyAgICAg
ICAgY2VsbC0+YWRkQ2hpbGQoY2hpbGQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIHdlIGRv
bid0IGhhdmUgYSBiYXNlIHlldAorICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQoY2hpbGQs
IGJlZm9yZUNoaWxkKTsKKworICAgICAgICAvLyBjcmVhdGUgdGhlIHRhYmxlIAorICAgICAgICBt
X3NjcmlwdHMgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRhYmxlKGRvY3VtZW50KCkpOwor
ICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZSgpOworICAgICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20oc3R5bGUoKSk7CisgICAgICAgIG5l
d1N0eWxlLT5zZXREaXNwbGF5KElOTElORV9UQUJMRSk7CisgICAgICAgIG5ld1N0eWxlLT5zZXRW
ZXJ0aWNhbEFsaWduKE1JRERMRSk7CisgICAgICAgIG5ld1N0eWxlLT5zZXRUZXh0QWxpZ24oTEVG
VCk7CisgICAgICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5Ub3AoTGVuZ3RoKDAgLCBGaXhlZCkpOwor
ICAgICAgICBuZXdTdHlsZS0+c2V0UGFkZGluZ1RvcChMZW5ndGgoMCAsIEZpeGVkKSk7CisgICAg
ICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5MZWZ0KExlbmd0aCgxICwgRml4ZWQpKTsKKyAgICAgICAg
bmV3U3R5bGUtPnNldE1hcmdpbkJvdHRvbShMZW5ndGgoMCAsIEZpeGVkKSk7CisgICAgICAgIG5l
d1N0eWxlLT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aCgwICwgRml4ZWQpKTsKKyAgICAgICAgbmV3
U3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKDApOworICAgICAgICBtX3NjcmlwdHMt
PnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlbmRlckJsb2NrOjphZGRD
aGlsZChtX3NjcmlwdHMsIGJlZm9yZUNoaWxkKTsKKyAgICB9Cit9CisgICAgICAgIAorICAgIAor
fSAgICAKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoU3ViU3VwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aFN1YlN1cC5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aFN1YlN1cC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUxIEBACisvKgorICogIFJlbmRlck1hdGhTdWJTdXAuaAorICogIFdlYkNvcmUK
KyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2ku
Y29tKS4KKyAqCisgCisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0Cisg
CisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAK
KyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorIAorICovCisKKworI2lmbmRlZiBSZW5kZXJNYXRoU3ViU3Vw
X2gKKyNkZWZpbmUgUmVuZGVyTWF0aFN1YlN1cF9oCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisj
aW5jbHVkZSAiUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5oIgorI2luY2x1ZGUgIlJlbmRlclRh
YmxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBSZW5kZXJNYXRo
U3ViU3VwIDogcHVibGljIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgUmVuZGVyTWF0aFN1YlN1cChOb2RlKiBmcmFjdGlvbik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkID0gMCk7CisgICAgcHJvdGVjdGVkOgorICAgICAgICBSZW5kZXJUYWJsZSogbV9zY3Jp
cHRzOworICAgIH07CisgICAgCit9CisKKyNlbmRpZgorCisjZW5kaWYKKwpJbmRleDogV2ViQ29y
ZS9tYXRobWwvUmVuZGVyTWF0aFVuZGVyT3Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9t
YXRobWwvUmVuZGVyTWF0aFVuZGVyT3Zlci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21h
dGhtbC9SZW5kZXJNYXRoVW5kZXJPdmVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTcg
QEAKKy8qCisgKiAgUmVuZGVyTWF0aFVuZGVyT3Zlci5jcHAKKyAqICBXZWJDb3JlCisgKgorICog
IENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuCisg
KgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
TUFUSE1MKQorCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJNYXRo
VW5kZXJPdmVyLmgiCisjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworUmVuZGVyTWF0aFVu
ZGVyT3Zlcjo6UmVuZGVyTWF0aFVuZGVyT3ZlcihOb2RlICpleHByZXNzaW9uKSAKKyAgICA6IFJl
bmRlck1hdGhJbmxpbmVDb250YWluZXIoZXhwcmVzc2lvbikgCit7CisgICAgbV9raW5kID0gVW5k
ZXI7CisgICAgaWYgKGV4cHJlc3Npb24tPmxvY2FsTmFtZSgpPT0ibW92ZXIiKSB7CisgICAgICAg
IG1fa2luZCA9IE92ZXI7CisgICAgfSBlbHNlIGlmIChleHByZXNzaW9uLT5sb2NhbE5hbWUoKT09
Im11bmRlcm92ZXIiKSB7CisgICAgICAgIG1fa2luZCA9IFVuZGVyT3ZlcjsKKyAgICB9Cit9CisK
K2lubGluZSBkb3VibGUgZ2V0T3ZlckFkanVzdG1lbnQoUmVuZGVyT2JqZWN0ICpvYmopCit7Cisg
ICAgZG91YmxlIGFkanVzdCA9IDAuMTsKKyAgICBpZiAob2JqLT5ub2RlKCkgJiYgb2JqLT5ub2Rl
KCktPm5vZGVUeXBlKCk9PU5vZGU6OkVMRU1FTlRfTk9ERSkgeworICAgICAgICBFbGVtZW50KiBi
YXNlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9iai0+bm9kZSgpKTsKKworICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoYmFzZS0+Z2V0QXR0cmlidXRlKCJtYXRoc2l6ZSIpICwgImJpZyIp
KSB7CisgICAgICAgICAgICAvLyB3aGVuIHdlIGhhdmUgbWF0aHNpemU9J2JpZycgd2UgZG9uJ3Qg
bmVlZCBhbnkgb3ZlciBhZGp1c3RtZW50CisgICAgICAgICAgICBhZGp1c3QgPSAwOworICAgICAg
ICB9CisKKyAgICB9CisgICAgcmV0dXJuIGFkanVzdDsKK30KKworaW5saW5lIGRvdWJsZSBnZXRV
bmRlckFkanVzdG1lbnQoUmVuZGVyT2JqZWN0ICpvYmopCit7CisgICAgZG91YmxlIGFkanVzdCA9
IC0wLjQ7CisgICAgaWYgKG9iai0+bm9kZSgpICYmIG9iai0+bm9kZSgpLT5ub2RlVHlwZSgpPT1O
b2RlOjpFTEVNRU5UX05PREUpIHsKKyAgICAgICAgRWxlbWVudCogYmFzZSA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihvYmotPm5vZGUoKSk7CisKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGJhc2UtPmdldEF0dHJpYnV0ZSgibWF0aHNpemUiKSAsICJiaWciKSkgeworICAgICAgICAgICAg
Ly8gd2hlbiB3ZSBoYXZlIG1hdGhzaXplPSdiaWcnIHRoZSB0b3AgYWxpZ25tZW50IGFkanVzdG1l
bnQgaXMgc21hbGxlcgorICAgICAgICAgICAgYWRqdXN0ID0gLTAuMzsKKyAgICAgICAgfQorCisg
ICAgfQorICAgIHJldHVybiBhZGp1c3Q7Cit9CisKK2NvbnN0IFVDaGFyIGRlc2NlbmRpbmdbXSA9
IHtzdGF0aWNfY2FzdDxVQ2hhcj4oJ2cnKSAsIHN0YXRpY19jYXN0PFVDaGFyPignaicpICwgc3Rh
dGljX2Nhc3Q8VUNoYXI+KCdwJykgLCBzdGF0aWNfY2FzdDxVQ2hhcj4oJ3EnKSAsIHN0YXRpY19j
YXN0PFVDaGFyPigneScpICwgMCB9OworICAgIAordm9pZCBSZW5kZXJNYXRoVW5kZXJPdmVyOjph
ZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQor
eworICAgIAorICAgIFJlbmRlckJsb2NrKiByb3cgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRl
ckJsb2NrKGRvY3VtZW50KCkpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcm93U3R5bGUgPSBt
YWtlQmxvY2tTdHlsZSgpOworICAgIAorICAgIC8vIGxvb2sgdGhyb3VnaCB0aGUgY2hpbGRyZW4g
Zm9yIHJlbmRlcmVkIGVsZW1lbnRzCisgICAgaW50IGJsb2NrcyA9IDA7CisgICAgUmVuZGVyT2Jq
ZWN0ICpjdXJyZW50ID0gdGhpcy0+Zmlyc3RDaGlsZCgpOworICAgIHdoaWxlIChjdXJyZW50KSB7
CisgICAgICAgIGJsb2NrcysrOworICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxp
bmcoKTsKKyAgICB9CisgICAgCisgICAgLy8gY2VudGVyIHRoZSBvdmVyL3VuZGVyIGJsb2Nrcwor
ICAgIGlmICghaXNFbXB0eSgpKSB7CisgICAgICAgIHJvd1N0eWxlLT5zZXRUZXh0QWxpZ24oQ0VO
VEVSKTsKKyAgICAgICAgcm93U3R5bGUtPnNldExpbmVIZWlnaHQoTGVuZ3RoKHN0YXRpY19jYXN0
PGludD4ocm93U3R5bGUtPmZvbnRTaXplKCkgKiAwLjc1KSAsIEZpeGVkKSk7CisgICAgfQorICAg
IAorICAgIHJvdy0+c2V0U3R5bGUocm93U3R5bGUucmVsZWFzZSgpKTsKKyAgICAKKyAgICBib29s
IGRlc2NlbmRzID0gZmFsc2U7CisgICAgU3RyaW5nIHRleHQgPSBjaGlsZC0+bm9kZSgpLT50ZXh0
Q29udGVudCgpOworICAgIGZvciAoaW50IGk9MDsgIWRlc2NlbmRzICYmIGRlc2NlbmRpbmdbaV0+
MDsgaSsrKSB7CisgICAgICAgIGlmICh0ZXh0LmNvbnRhaW5zKGRlc2NlbmRpbmdbaV0pKSB7Cisg
ICAgICAgICAgICAvLyB3ZSBoYXZlIGEgZGVzY2VuZGluZyBjaGFyYWN0ZXIgc3VjaCBhcyAneScK
KyAgICAgICAgICAgIGRlc2NlbmRzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICBzd2l0Y2ggKGJsb2NrcykgeworICAgIGNhc2UgMDoKKyAgICAgICAgLy8gdGhpcyBpcyB0aGUg
YmFzZSBzbyBqdXN0IGFwcGVuZCBpdAorICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQocm93
ICwgYmVmb3JlQ2hpbGQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICAgIC8v
IHRoZSB1bmRlciBvciBvdmVyCisgICAgICAgIGlmIChtX2tpbmQ9PU92ZXIpIHsKKyAgICAgICAg
ICAgIGlmICghZGVzY2VuZHMpIHsKKyAgICAgICAgICAgICAgICAvLyBhZGp1c3QgdGhlIG92ZXIn
cyBpbnRydXNpb24gaW50byB0aGUgYmFzZSBmcm9tIHRoZSB0b3AKKyAgICAgICAgICAgICAgICBy
b3ctPnN0eWxlKCktPnNldE1hcmdpbkJvdHRvbShMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihnZXRP
dmVyQWRqdXN0bWVudChmaXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKSkgKiByb3ctPnN0eWxlKCkt
PmZvbnRTaXplKCkpICwgRml4ZWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGFk
ZCB0aGUgb3ZlciBhcyBmaXJzdAorICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJv
dyAsIGZpcnN0Q2hpbGQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBhZGQg
dGhlIHVuZGVyIGFzIGxhc3QKKyAgICAgICAgICAgIHJvdy0+c3R5bGUoKS0+c2V0UGFkZGluZ1Rv
cChMZW5ndGgoMSAsIEZpeGVkKSk7CisgICAgICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQo
cm93ICwgYmVmb3JlQ2hpbGQpOworICAgICAgICAgICAgLy8gYWRqdXN0IHRoZSBiYXNlJ3MgaW50
cnVzaW9uIGludG8gdGhlIHVuZGVyCisgICAgICAgICAgICBmaXJzdENoaWxkKCktPnN0eWxlKCkt
PnNldE1hcmdpbkJvdHRvbShMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihnZXRVbmRlckFkanVzdG1l
bnQoZmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCkpICogcm93LT5zdHlsZSgpLT5mb250U2l6ZSgp
KSAsIEZpeGVkKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAg
ICAgICAvLyB0aGUgdW5kZXIgb3Igb3ZlcgorICAgICAgICBpZiAobV9raW5kPT1VbmRlck92ZXIp
IHsKKyAgICAgICAgICAgIC8vIGFkanVzdCB0aGUgb3ZlcidzIGludHJ1c2lvbiBpbnRvIHRoZSBi
YXNlIGZyb20gdGhlIHRvcAorICAgICAgICAgICAgcm93LT5zdHlsZSgpLT5zZXRNYXJnaW5Cb3R0
b20oTGVuZ3RoKHN0YXRpY19jYXN0PGludD4oZ2V0T3ZlckFkanVzdG1lbnQoZmlyc3RDaGlsZCgp
LT5maXJzdENoaWxkKCkpICogcm93LT5zdHlsZSgpLT5mb250U2l6ZSgpKSAsIEZpeGVkKSk7Cisg
ICAgICAgICAgICAvLyBhZGQgdGhlIG92ZXIgYXMgZmlyc3QKKyAgICAgICAgICAgIFJlbmRlckJs
b2NrOjphZGRDaGlsZChyb3cgLCBmaXJzdENoaWxkKCkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gd2UgcmVhbGx5IHNob3VsZG4ndCBnZXQgaGVyZSBhcyBvbmx5IG11bmRlcm92
ZXIgc2hvdWxkIGhhdmUgdGhyZWUgY2hpbGRyZW4KKyAgICAgICAgICAgIFJlbmRlckJsb2NrOjph
ZGRDaGlsZChyb3cgLCBiZWZvcmVDaGlsZCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGdldCBoZXJlIGJ1dCB3ZSB3aWxs
IHRyZWF0IHRoaXMgYXMgdW5kZXIKKyAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJvdyAs
IGJlZm9yZUNoaWxkKTsKKyAgICB9CisgICAgcm93LT5hZGRDaGlsZChjaGlsZCk7ICAgIAorfQor
ICAgIAorfQorCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aFVuZGVy
T3Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhVbmRlck92ZXIu
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhVbmRlck92ZXIuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqICBSZW5kZXJNYXRoVW5kZXJPdmVy
LmgKKyAqICBXZWJDb3JlCisgKgorICogIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tp
IChhbGV4QG1pbG93c2tpLmNvbSkuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisKKyNpZm5kZWYg
UmVuZGVyTWF0aFVuZGVyT3Zlcl9oCisjZGVmaW5lIFJlbmRlck1hdGhVbmRlck92ZXJfaAorCisj
aWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1hdGhJbmxpbmVDb250YWluZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIFJlbmRlck1hdGhVbmRl
ck92ZXIgOiBwdWJsaWMgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lciB7CisgICAgcHVibGljOgor
ICAgICAgICBSZW5kZXJNYXRoVW5kZXJPdmVyKE5vZGUqIGV4cHJlc3Npb24pOworICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCA9IDApOworICAgIHByaXZhdGU6CisgICAgICAgIGVudW0gVW5kZXJPdmVyVHlw
ZSB7IFVuZGVyLCBPdmVyLCBVbmRlck92ZXIgfTsKKyAgICAgICAgVW5kZXJPdmVyVHlwZSBtX2tp
bmQ7CisgICAgfTsKKyAgICAKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9t
YXRobWwvbWF0aHRhZ3MuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3Mu
aW4JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxOTYgQEAKK25hbWVzcGFjZT0iTWF0aE1MIgorbmFtZXNwYWNlVVJJPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIgorZ3VhcmRGYWN0b3J5V2l0aD0iRU5B
QkxFKE1BVEhNTCkiCitleHBvcnRTdHJpbmdzCisKK21hdGgKK21mcmFjIGludGVyZmFjZU5hbWU9
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbWZlbmNlZCBpbnRlcmZhY2VOYW1lPU1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQKK21zdWJzdXAgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50Cittcm93IGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudAorbW92ZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50CittdW5kZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Citt
dW5kZXJvdmVyIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbWkg
aW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVXaXRoTmV3CittbiBpbnRlcmZhY2VO
YW1lPU1hdGhNTEVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKK21vIGludGVyZmFjZU5hbWU9TWF0aE1M
RWxlbWVudCwgY3JlYXRlV2l0aE5ldworbXN1YiBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQs
IGNyZWF0ZVdpdGhOZXcKK21zdXAgaW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVX
aXRoTmV3CisKKyNpZiAwCithYnMgY3JlYXRlV2l0aE5ldworYW5kIGNyZWF0ZVdpdGhOZXcKK2Fu
bm90YXRpb24gY3JlYXRlV2l0aE5ldworYW5ub3RhdGlvbi14bWwgY3JlYXRlV2l0aE5ldworYXBw
bHkgY3JlYXRlV2l0aE5ldworYXBwcm94IGNyZWF0ZVdpdGhOZXcKK2FyY2NvcyBjcmVhdGVXaXRo
TmV3CithcmNjb3NoIGNyZWF0ZVdpdGhOZXcKK2FyY2NvdCBjcmVhdGVXaXRoTmV3CithcmNjb3Ro
IGNyZWF0ZVdpdGhOZXcKK2FyY2NzYyBjcmVhdGVXaXRoTmV3CithcmNjc2NoIGNyZWF0ZVdpdGhO
ZXcKK2FyY3NlYyBjcmVhdGVXaXRoTmV3CithcmNzZWNoIGNyZWF0ZVdpdGhOZXcKK2FyY3NpbiBj
cmVhdGVXaXRoTmV3CithcmNzaW5oIGNyZWF0ZVdpdGhOZXcKK2FyY3RhbiBjcmVhdGVXaXRoTmV3
CithcmN0YW5oIGNyZWF0ZVdpdGhOZXcKK2FyZyBjcmVhdGVXaXRoTmV3CitidmFyIGNyZWF0ZVdp
dGhOZXcKK2NhcmQgY3JlYXRlV2l0aE5ldworY2FydGVzaWFucHJvZHVjdCBjcmVhdGVXaXRoTmV3
CitjZWlsaW5nIGNyZWF0ZVdpdGhOZXcKK2NpIGNyZWF0ZVdpdGhOZXcKK2NuIGNyZWF0ZVdpdGhO
ZXcKK2NvZG9tYWluIGNyZWF0ZVdpdGhOZXcKK2NvbXBsZXhlcyBjcmVhdGVXaXRoTmV3Citjb21w
b3NlIGNyZWF0ZVdpdGhOZXcKK2NvbmRpdGlvbiBjcmVhdGVXaXRoTmV3Citjb25qdWdhdGUgY3Jl
YXRlV2l0aE5ldworY29zIGNyZWF0ZVdpdGhOZXcKK2Nvc2ggY3JlYXRlV2l0aE5ldworY290IGNy
ZWF0ZVdpdGhOZXcKK2NvdGggY3JlYXRlV2l0aE5ldworY3NjIGNyZWF0ZVdpdGhOZXcKK2NzY2gg
Y3JlYXRlV2l0aE5ldworY3N5bWJvbCBjcmVhdGVXaXRoTmV3CitjdXJsIGNyZWF0ZVdpdGhOZXcK
K2RlY2xhcmUgY3JlYXRlV2l0aE5ldworZGVncmVlIGNyZWF0ZVdpdGhOZXcKK2RldGVybWluYW50
IGNyZWF0ZVdpdGhOZXcKK2RpZmYgY3JlYXRlV2l0aE5ldworZGl2ZXJnZW5jZSBjcmVhdGVXaXRo
TmV3CitkaXZpZGUgY3JlYXRlV2l0aE5ldworZG9tYWluIGNyZWF0ZVdpdGhOZXcKK2RvbWFpbm9m
YXBwbGljYXRpb24gY3JlYXRlV2l0aE5ldworZW1wdHlzZXQgY3JlYXRlV2l0aE5ldworZW5jb2Rp
bmcgY3JlYXRlV2l0aE5ldworZXEgY3JlYXRlV2l0aE5ldworZXF1aXZhbGVudCBjcmVhdGVXaXRo
TmV3CitldWxlcmdhbW1hIGNyZWF0ZVdpdGhOZXcKK2V4aXN0cyBjcmVhdGVXaXRoTmV3CitleHAg
Y3JlYXRlV2l0aE5ldworZXhwb25lbnRpYWxlIGNyZWF0ZVdpdGhOZXcKK2ZhY3RvcmlhbCBjcmVh
dGVXaXRoTmV3CitmYWN0b3JvZiBjcmVhdGVXaXRoTmV3CitmYWxzZSBjcmVhdGVXaXRoTmV3Citm
bG9vciBjcmVhdGVXaXRoTmV3CitmbiBjcmVhdGVXaXRoTmV3Citmb3JhbGwgY3JlYXRlV2l0aE5l
dworZnVuY3Rpb24gY3JlYXRlV2l0aE5ldworZ2NkIGNyZWF0ZVdpdGhOZXcKK2dlcSBjcmVhdGVX
aXRoTmV3CitncmFkIGNyZWF0ZVdpdGhOZXcKK2d0IGNyZWF0ZVdpdGhOZXcKK2lkZW50IGNyZWF0
ZVdpdGhOZXcKK2ltYWdlIGNyZWF0ZVdpdGhOZXcKK2ltYWdpbmFyeSBjcmVhdGVXaXRoTmV3Citp
bWFnaW5hcnlpIGNyZWF0ZVdpdGhOZXcKK2ltcGxpZXMgY3JlYXRlV2l0aE5ldworaW4gY3JlYXRl
V2l0aE5ldworaW5maW5pdHkgY3JlYXRlV2l0aE5ldworaW50IGNyZWF0ZVdpdGhOZXcKK2ludGVn
ZXJzIGNyZWF0ZVdpdGhOZXcKK2ludGVyc2VjdCBjcmVhdGVXaXRoTmV3CitpbnRlcnZhbCBjcmVh
dGVXaXRoTmV3CitpbnZlcnNlIGNyZWF0ZVdpdGhOZXcKK2xhbWJkYSBjcmVhdGVXaXRoTmV3Cits
YXBsYWNpYW4gY3JlYXRlV2l0aE5ldworbGNtIGNyZWF0ZVdpdGhOZXcKK2xlcSBjcmVhdGVXaXRo
TmV3CitsaW1pdCBjcmVhdGVXaXRoTmV3CitsaXN0IGNyZWF0ZVdpdGhOZXcKK2xuIGNyZWF0ZVdp
dGhOZXcKK2xvZyBjcmVhdGVXaXRoTmV3Citsb2diYXNlIGNyZWF0ZVdpdGhOZXcKK2xvd2xpbWl0
IGNyZWF0ZVdpdGhOZXcKK2x0IGNyZWF0ZVdpdGhOZXcKK2FwcGx5IGNyZWF0ZVdpdGhOZXcKK21y
b3cgY3JlYXRlV2l0aE5ldworbWFjdGlvbiBjcmVhdGVXaXRoTmV3CittYWxpZ24gY3JlYXRlV2l0
aE5ldworbWFsaWduZ3JvdXAgY3JlYXRlV2l0aE5ldworbWFsaWdubWFyayBjcmVhdGVXaXRoTmV3
CittYWxpZ25zY29wZSBjcmVhdGVXaXRoTmV3CittYXRyaXggY3JlYXRlV2l0aE5ldworbWF0cml4
cm93IGNyZWF0ZVdpdGhOZXcKK21heCBjcmVhdGVXaXRoTmV3CittZWFuIGNyZWF0ZVdpdGhOZXcK
K21lZGlhbiBjcmVhdGVXaXRoTmV3CittZW5jbG9zZSBjcmVhdGVXaXRoTmV3CittZXJyb3IgY3Jl
YXRlV2l0aE5ldworbWdseXBoIGNyZWF0ZVdpdGhOZXcKK21pbiBjcmVhdGVXaXRoTmV3CittaW51
cyBjcmVhdGVXaXRoTmV3CittbGFiZWxlZHRyIGNyZWF0ZVdpdGhOZXcKK21tdWx0aXNjcmlwdHMg
Y3JlYXRlV2l0aE5ldworbW9kZSBjcmVhdGVXaXRoTmV3Cittb21lbnQgY3JlYXRlV2l0aE5ldwor
bW9tZW50YWJvdXQgY3JlYXRlV2l0aE5ldworbXBhZGRlZCBjcmVhdGVXaXRoTmV3CittcGhhbnRv
bSBjcmVhdGVXaXRoTmV3CittcHJlc2NyaXB0cyBjcmVhdGVXaXRoTmV3Cittcm9vdCBjcmVhdGVX
aXRoTmV3CittcyBjcmVhdGVXaXRoTmV3Cittc3BhY2UgY3JlYXRlV2l0aE5ldworbXNxcnQgY3Jl
YXRlV2l0aE5ldworbXN0eWxlIGNyZWF0ZVdpdGhOZXcKK210YWJsZSBjcmVhdGVXaXRoTmV3Citt
dGQgY3JlYXRlV2l0aE5ldworbXRleHQgY3JlYXRlV2l0aE5ldworbXRyIGNyZWF0ZVdpdGhOZXcK
K25hdHVyYWxudW1iZXJzIGNyZWF0ZVdpdGhOZXcKK25lcSBjcmVhdGVXaXRoTmV3Citub25lIGNy
ZWF0ZVdpdGhOZXcKK25vdCBjcmVhdGVXaXRoTmV3Citub3RhbnVtYmVyIGNyZWF0ZVdpdGhOZXcK
K25vdGluIGNyZWF0ZVdpdGhOZXcKK25vdHByc3Vic2V0IGNyZWF0ZVdpdGhOZXcKK25vdHN1YnNl
dCBjcmVhdGVXaXRoTmV3CitvciBjcmVhdGVXaXRoTmV3CitvdGhlcndpc2UgY3JlYXRlV2l0aE5l
dworb3V0ZXJwcm9kdWN0IGNyZWF0ZVdpdGhOZXcKK3BhcnRpYWxkaWZmIGNyZWF0ZVdpdGhOZXcK
K3BpIGNyZWF0ZVdpdGhOZXcKK3BpZWNlIGNyZWF0ZVdpdGhOZXcKK3BpZWNld2ljZSBjcmVhdGVX
aXRoTmV3CitwaWVjZXdpc2UgY3JlYXRlV2l0aE5ldworcGx1cyBjcmVhdGVXaXRoTmV3Citwb3dl
ciBjcmVhdGVXaXRoTmV3CitwcmltZXMgY3JlYXRlV2l0aE5ldworcHJvZHVjdCBjcmVhdGVXaXRo
TmV3CitwcnN1YnNldCBjcmVhdGVXaXRoTmV3CitxdW90aWVudCBjcmVhdGVXaXRoTmV3CityYXRp
b25hbHMgY3JlYXRlV2l0aE5ldworcmVhbCBjcmVhdGVXaXRoTmV3CityZWFscyBjcmVhdGVXaXRo
TmV3CityZWxuIGNyZWF0ZVdpdGhOZXcKK3JlbSBjcmVhdGVXaXRoTmV3Cityb290IGNyZWF0ZVdp
dGhOZXcKK3NjYWxhcnByb2R1Y3QgY3JlYXRlV2l0aE5ldworc2RldiBjcmVhdGVXaXRoTmV3Citz
ZWMgY3JlYXRlV2l0aE5ldworc2VjaCBjcmVhdGVXaXRoTmV3CitzZWxlY3RvciBjcmVhdGVXaXRo
TmV3CitzZW1hbnRpY3MgY3JlYXRlV2l0aE5ldworc2VwIGNyZWF0ZVdpdGhOZXcKK3NldCBjcmVh
dGVXaXRoTmV3CitzZXRkaWZmIGNyZWF0ZVdpdGhOZXcKK3NpbiBjcmVhdGVXaXRoTmV3CitzaW5o
IGNyZWF0ZVdpdGhOZXcKK3N1YnNldCBjcmVhdGVXaXRoTmV3CitzdW0gY3JlYXRlV2l0aE5ldwor
dGFuIGNyZWF0ZVdpdGhOZXcKK3RhbmggY3JlYXRlV2l0aE5ldwordGVuZHN0byBjcmVhdGVXaXRo
TmV3Cit0aW1lcyBjcmVhdGVXaXRoTmV3Cit0cmFuc3Bvc2UgY3JlYXRlV2l0aE5ldwordHJ1ZSBj
cmVhdGVXaXRoTmV3Cit1bmlvbiBjcmVhdGVXaXRoTmV3Cit1cGxpbWl0IGNyZWF0ZVdpdGhOZXcK
K3ZhcmlhbmNlIGNyZWF0ZVdpdGhOZXcKK3ZlY3RvciBjcmVhdGVXaXRoTmV3Cit2ZWN0b3Jwcm9k
dWN0IGNyZWF0ZVdpdGhOZXcKK3hvciBjcmVhdGVXaXRoTmV3CisjZW5kaWYKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDQ4MDY1KQorKysgV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMTAgQEAKICNpbmNsdWRl
ICJYTGlua05hbWVzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAi
TWF0aE1MTmFtZXMuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdNTCkKICNpbmNsdWRlICJXTUxO
YW1lcy5oIgogI2VuZGlmCkBAIC0xNTUsNiArMTU5LDEwIEBAIEZyYW1lOjpGcmFtZShQYWdlKiBw
YWdlLCBIVE1MRnJhbWVPd25lckUKICAgICBYTGlua05hbWVzOjppbml0KCk7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShNQVRITUwpCisgICAgTWF0aE1MTmFtZXM6OmluaXQoKTsKKyNlbmRpZgorICAg
IAogI2lmIEVOQUJMRShXTUwpCiAgICAgV01MTmFtZXM6OmluaXQoKTsKICNlbmRpZgpJbmRleDog
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNDgwNzApCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMSBAQAorMjAwOS0wOS0wNCAgQWxleCBNaWxvd3NraSAgPGFsZXhAbWls
b3dza2kuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIHRoZSBtYXRobWwgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIE1hdGhNTCBpbiB0
aGUgYnVpbGQKKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAyMDA5LTA5LTA0
ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIHd4
IGJ1aWxkIGZpeC4gU3dpdGNoIFVTRV8gZGVmaW5lcyBvdmVyIHRvIHRoZSBjb21waWxlciBzbyB0
aGF0IHRoZXkgY2FuIGJlCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkocmV2aXNpb24g
NDgwNjUpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNyArNTIsNyBAQCBteSAoJHRocmVlRENhbnZhc1N1cHBvcnQsICR0aHJlZURSZW5k
ZXJpCiAgICAgJGV2ZW50c291cmNlU3VwcG9ydCwgJGZpbHRlcnNTdXBwb3J0LCAkZ2VvbG9jYXRp
b25TdXBwb3J0LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwKICAgICAkamF2YVNjcmlwdERlYnVnZ2Vy
U3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICRydWJ5U3VwcG9ydCwgJHNo
YXJlZFdvcmtlcnNTdXBwb3J0LCAKICAgICAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1hdGlvblN1cHBv
cnQsICRzdmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsICRzdmdG
b250c1N1cHBvcnQsCi0gICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3ZnVXNlU3VwcG9y
dCwgJHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9ydCwgJHdjc3NT
dXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKKyAgICAkc3ZnRm9yZWln
bk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAkd2ViU29ja2V0
c1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkbWF0aG1sU3VwcG9ydCwgJHdjc3NTdXBwb3J0LCAkeGh0
bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBhdGhTdXBwb3J0LCAkeHNsdFN1
cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25zU3VwcG9ydCk7CiAKIG15IEBm
ZWF0dXJlcyA9ICgKQEAgLTEzNCw2ICsxMzQsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBv
cHRpb24gPT4gIndtbCIsIGRlc2MgPT4gIlRvZ2dsZSBXTUwgc3VwcG9ydCIsCiAgICAgICBkZWZp
bmUgPT4gIkVOQUJMRV9XTUwiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkd21sU3VwcG9ydCB9
LAogCisgICAgeyBvcHRpb24gPT4gIm1hdGhtbCIsIGRlc2MgPT4gIlRvZ2dsZSBNYXRoTUwgc3Vw
cG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9NQVRITUwiLCBkZWZhdWx0ID0+IDEsIHZh
bHVlID0+IFwkbWF0aG1sU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gInhodG1sbXAiLCBk
ZXNjID0+ICJUb2dnbGUgWEhUTUwtTVAgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9YSFRNTE1QIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHhodG1sbXBTdXBwb3J0IH0sCiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ4MDcwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDQgIEFsZXggTWlsb3dza2kgIDxh
bGV4QG1pbG93c2tpLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCB0ZXN0cyBmb3IgTWF0aE1MIHByZXNlbnRhdGlvbiBjb25zdHJ1Y3Rz
LiAgTm8gZXhwZWN0ZWQKKyAgICAgICAgb3V0cHV0IGlzIHByb3ZpZGVkIGF0IHRoaXMgdGltZS4K
KworICAgICAgICAqIG1hdGhtbDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlv
bjogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWw6IEFk
ZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnhodG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL3N1YnN1cC54aHRtbDogQWRkZWQuCisgICAgICAg
ICogbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlcm92ZXIueGh0bWw6IEFkZGVkLgorCiAyMDA5LTA5
LTA0ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRp
b24vZmVuY2VkLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50
YXRpb24vZmVuY2VkLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWF0aG1sL3By
ZXNlbnRhdGlvbi9mZW5jZWQueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKzxo
dG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFkPgorPHRpdGxl
PkZlbmNpbmc8L3RpdGxlPgorPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSd0MSc+c2ltcGxlOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZmVuY2VkIG9wZW49InsiIGNsb3NlPSJ9Ij48
bW4+MjwvbW4+PG1uPjM8L21uPjxtbj41PC9tbj48bW4+NzwvbW4+PC9tZmVuY2VkPgorPC9tYXRo
PjwvcD4KKzxwIGlkPSd0Mic+bm8gc2VwYXJhdG9yczogCis8bWF0aCB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZlbmNlZCBzZXBhcmF0b3JzPSIiPgorPG1p
Png8L21pPiAKKzxtbz4rPC9tbz4KKworCitzZGZzYWRmYXNkZnNhZGYKKyAKKzxtbj4xPC9tbj48
L21mZW5jZWQ+Cis8bWZlbmNlZCBzZXBhcmF0b3JzPSIiPjxtaT54PC9taT48bW8+KzwvbW8+PG1u
PjI8L21uPjwvbWZlbmNlZD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDMnPmxhcmdlOiAKKzxtYXRo
IHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZmVuY2VkIG9w
ZW49InsiIGNsb3NlPSJ9Ij4KKzxtbj4xPC9tbj4KKzxtZnJhYz4KKzxtc3VwPjxtaT54PC9taT48
bW4+MjwvbW4+PC9tc3VwPgorPG1yb3c+PG1uPjI8L21uPjxtbz4hPC9tbz48L21yb3c+Cis8L21m
cmFjPgorPG1mcmFjPgorPG1zdXA+PG1pPng8L21pPjxtbj4zPC9tbj48L21zdXA+Cis8bXJvdz48
bW4+MzwvbW4+PG1vPiE8L21vPjwvbXJvdz4KKzwvbWZyYWM+Cis8bWZyYWM+Cis8bXN1cD48bWk+
eDwvbWk+PG1uPjQ8L21uPjwvbXN1cD4KKzxtcm93Pjxtbj40PC9tbj48bW8+ITwvbW8+PC9tcm93
PgorPC9tZnJhYz4KKzwvbWZlbmNlZD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDInPmRpZmZlcmVu
dCBzZXBhcmF0b3JzOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgv
TWF0aE1MJz4KKzxtZmVuY2VkIHNlcGFyYXRvcnM9ImFiY2RlZmdoaWprbG1ub3AiPgorPG1uPjE8
L21uPgorPG1uPjI8L21uPgorPG1uPjM8L21uPgorPG1uPjQ8L21uPgorPG1uPjU8L21uPgorPG1u
PjY8L21uPgorPG1uPjc8L21uPgorPG1uPjg8L21uPgorPG1uPjk8L21uPgorPG1uPjEwPC9tbj4K
Kzxtbj4xMTwvbW4+Cis8bW4+MTI8L21uPgorPG1uPjEzPC9tbj4KKzxtbj4xNDwvbW4+Cis8bW4+
MTU8L21uPgorPG1uPjE2PC9tbj4KKzxtbj4xNzwvbW4+Cis8bW4+MTg8L21uPgorPG1uPjE5PC9t
bj4KKzxtbj4yMDwvbW4+Cis8bW4+MjE8L21uPgorPG1uPjIyPC9tbj4KKzxtbj4yMzwvbW4+Cis8
bW4+MjQ8L21uPgorPG1uPjI1PC9tbj4KKzxtbj4yNjwvbW4+Cis8L21mZW5jZWQ+Cis8L21hdGg+
Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9mcmFjdGlvbnMueGh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9mcmFjdGlvbnMueGh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL2ZyYWN0aW9u
cy54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorPGh0bWwgeG1sbnM9J2h0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+Cis8dGl0bGU+RnJhY3Rpb25zPC90aXRs
ZT4KKzxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0ndDEnPnNpbXBsZTogPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwnPjxtZnJhYz48bW4+MTwvbW4+YmFkPG1uPjI8L21uPjwvbWZyYWM+PC9tYXRoPjwv
cD4KKzxwIGlkPSd0Mic+bW9yZSBjb21wbGV4OiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZnJhYz4KKzxtcm93PjxtaT54PC9taT48bW8+Kzwv
bW8+YmFkPG1uPjE8L21uPjwvbXJvdz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjI8
L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDMnPnRleHQ6Cis8
bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWM+
Cis8bXRleHQ+bnVtYmVyIG9mIGJ1Z3M8L210ZXh0PgorPG10ZXh0Pm51bWJlciBvZiBjaGFuZ2Vz
PC9tdGV4dD4KKzwvbWZyYWM+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDQnPmxpbmUgdGhpY2tu
ZXNzIGJ5IGtleXdvcmQ6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRo
L01hdGhNTCc+PG1mcmFjIGxpbmV0aGlja25lc3M9J3RoaW4nPjxtbj4xPC9tbj48bW4+MjwvbW4+
PC9tZnJhYz48L21hdGg+PG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPjxtZnJhYyBsaW5ldGhpY2tuZXNzPSdtZWRpdW0nPjxtbj4xPC9tbj48bW4+MjwvbW4+
PC9tZnJhYz48L21hdGg+PG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPjxtZnJhYyBsaW5ldGhpY2tuZXNzPSd0aGljayc+PG1uPjE8L21uPjxtbj4yPC9tbj48
L21mcmFjPjwvbWF0aD48L3A+Cis8cCBpZD0ndDUnPm51bWVyYXRvciBhbGlnbm1lbnQ6Cis8bWF0
aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgbnVt
YWxpZ249ImxlZnQiPgorPG1pPng8L21pPgorPG1yb3c+PG1uPjE8L21uPjxtbz4rPC9tbz48bW4+
MjwvbW4+PG1vPis8L21vPjxtbj4zPC9tbj48bW8+KzwvbW8+PG1uPjQ8L21uPjxtbz4rPC9tbz48
bW4+NTwvbW4+PC9tcm93PgorPC9tZnJhYz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5zPSdodHRwOi8v
d3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZnJhYyBudW1hbGlnbj0iY2VudGVyIj4K
KzxtaT54PC9taT4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9t
bz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJv
dz4KKzwvbWZyYWM+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgbnVtYWxpZ249InJpZ2h0Ij4KKzxtaT54PC9taT4KKzxt
cm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9tbz48bW4+MzwvbW4+PG1v
Pis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8
L21hdGg+Cis8L3A+Cis8cCBpZD0ndDYnPmRlbm9taW5hdG9yIGFsaWdubWVudDoKKzxtYXRoIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZnJhYyBkZW5vbWFs
aWduPSJsZWZ0Ij4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9t
bz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJv
dz4KKzxtaT54PC9taT4KKzwvbWZyYWM+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgZGVub21hbGlnbj0iY2VudGVyIj4K
Kzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9tbz48bW4+MzwvbW4+
PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJvdz4KKzxtaT54PC9t
aT4KKzwvbWZyYWM+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5
OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgZGVub21hbGlnbj0icmlnaHQiPgorPG1yb3c+PG1uPjE8
L21uPjxtbz4rPC9tbz48bW4+MjwvbW4+PG1vPis8L21vPjxtbj4zPC9tbj48bW8+KzwvbW8+PG1u
PjQ8L21uPjxtbz4rPC9tbz48bW4+NTwvbW4+PC9tcm93PgorPG1pPng8L21pPgorPC9tZnJhYz4K
KzwvbWF0aD4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vcm9vdHMueGh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLnho
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKzx0aXRsZT5Sb290czwvdGl0bGU+Cis8c3R5
bGUgdHlwZT0ndGV4dC9jc3MnPgorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9J3Qx
Jz5zcXVhcmUgcm9vdDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRo
L01hdGhNTCc+Cis8bXNxcnQ+PG1uPjI8L21uPjwvbXNxcnQ+Cis8L21hdGg+PC9wPgorPHAgaWQ9
J3QyJz5sb25nIHNxdWFyZSByb290OiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8x
OTk4L01hdGgvTWF0aE1MJz4KKzxtc3FydD48bXJvdz48bWk+eDwvbWk+PG1vPis8L21vPjxtbj4x
PC9tbj48L21yb3c+PC9tc3FydD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDMnPmN1YmUgcm9vdDog
Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXJv
b3Q+PG1uPjI8L21uPjxtbj4zPC9tbj48L21yb290PgorPC9tYXRoPjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9tYXRo
bWwvcHJlc2VudGF0aW9uL3N1YnN1cC54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
YXRobWwvcHJlc2VudGF0aW9uL3N1YnN1cC54aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL21hdGhtbC9wcmVzZW50YXRpb24vc3Vic3VwLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDc1IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8
aGVhZD4KKzx0aXRsZT5TdWJzY3JpcHQgYW5kIFN1cGVyc2NyaXB0czwvdGl0bGU+Cis8c3R5bGUg
dHlwZT0ndGV4dC9jc3MnPgorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+YmVmb3JlIHRl
eHQ6PC9wPgorPHA+bWFudWFsOiA8c3BhbiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7Ij4K
KzxzcGFuIGlkPSdiYXNlJz54PC9zcGFuPjxkaXYgc3R5bGU9ImRpc3BsYXk6aW5saW5lLXRhYmxl
OworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBtYXJnaW46IDBweDsgZm9udC1zaXplOiAwLjc1
ZW0iPgorPHN1YiBzdHlsZT0iZGlzcGxheTogdGFibGUtcm93Ij4xPC9zdWI+Cis8c3VwIGlkPSdz
dXAnIHN0eWxlPSJkaXNwbGF5OiB0YWJsZS1yb3c7ICBmb250LXNpemU6IDAuNzVlbSI+KHgreSk8
L3N1cD4KKzwvZGl2PgorPC9zcGFuPjwvcD4KKzxwPgorPHNwYW4gc3R5bGU9ImRpc3BsYXk6IGlu
bGluZS1ibG9jazsiPgorPHNwYW4gc3R5bGU9IiB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBmb250
LXN0eWxlOiBpdGFsaWMiPlo8L3NwYW4+PHRhYmxlIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtdGFi
bGU7IGZvbnQtc2l6ZTogMC43NWVtOworICBib3JkZXItc3BhY2luZzogMHB4OyAgdmVydGljYWwt
YWxpZ246IG1pZGRsZSI+CisgIDx0cj48dGQgc3R5bGU9ImxpbmUtaGVpZ2h0OiAxZW0iPngreTwv
dGQ+PC90cj4KKyAgPHRyPjx0ZCBzdHlsZT0ibGluZS1oZWlnaHQ6IDFlbSI+aitrK2k8L3RkPjwv
dHI+Cis8L3RhYmxlPgorPC9zcGFuPgorPC9wPgorCis8cCBzdHlsZT0iYmxvY2siPjxzcGFuPlg8
L3NwYW4+PHNwYW4gc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246
IHN1YiI+PHNwYW4+WDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImRpc3BsYXk6IGlubGluZS1i
bG9jazsgcG9zaXRpb246IHJlbGF0aXZlOyBsZWZ0OiAtMTJweDsgdmVydGljYWwtYWxpZ246IHN1
cGVyIj48c3Bhbj5YPC9zcGFuPjwvc3Bhbj48L3A+Cis8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNj
cmlwdCc+CisvL3ZhciBiYXNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jhc2UnKTsKKy8v
dmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VwJyk7CisvL2Uuc3R5bGUucG9zaXRp
b24gPSAicmVsYXRpdmUiOworLy9lLnN0eWxlLmxlZnQgPSAiLSIrKGUub2Zmc2V0TGVmdC1iYXNl
Lm9mZnNldExlZnQtYmFzZS5vZmZzZXRXaWR0aCkrInB4IjsKKzwvc2NyaXB0PgorPHAgaWQ9J3Qx
Jz5zdWJzY3JpcHQ6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPgorPG1zdWI+PG1pPng8L21pPjxtbj4xPC9tbj48L21zdWI+Cis8L21hdGg+PC9wPgor
PHAgaWQ9J3QyJz5zdXBlcnNjcmlwdDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MTk5OC9NYXRoL01hdGhNTCc+Cis8bXN1cD48bWk+eDwvbWk+PG1uPjE8L21uPjwvbXN1cD4KKzwv
bWF0aD4KKzwvcD4KKzxwIGlkPSd0Myc+Ym90aDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXN1YnN1cD48bWk+eDwvbWk+PG1uPjE8L21uPjxt
aT5rPC9taT48L21zdWJzdXA+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDQnPmxvbmcgc3Vic2Ny
aXB0IHcvIGJvdGg6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9N
YXRoTUwnPgorPG1zdWJzdXA+Cis8bWk+WjwvbWk+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8L21v
PjxtaT55PC9taT48bW8+KzwvbW8+PG1pPno8L21pPjwvbXJvdz4KKzxtaT5qPC9taT4KKzwvbXN1
YnN1cD4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0NSc+bG9uZyBzdXBlcnNjcmlwdCB3LyBib3Ro
OiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxt
c3Vic3VwPgorPG1pPlo8L21pPgorPG1pPng8L21pPgorPG1yb3c+PG1pPms8L21pPjxtbz4rPC9t
bz48bWk+ajwvbWk+PC9tcm93PgorPC9tc3Vic3VwPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q2
Jz5sb25nIHcvIGJvdGg6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwnPgorPG1zdWJzdXA+Cis8bWk+WjwvbWk+Cis8bXJvdz48bWk+eDwvbWk+PG1vPis8
L21vPjxtaT55PC9taT48bW8+KzwvbW8+PG1pPno8L21pPjwvbXJvdz4KKzxtcm93PjxtaT5rPC9t
aT48bW8+KzwvbW8+PG1pPmo8L21pPjwvbXJvdz4KKzwvbXN1YnN1cD4KKzwvbWF0aD4KKzwvcD4K
KzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3VuZGVyb3Zlci54aHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3VuZGVyb3Zlci54aHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vdW5kZXJvdmVyLnhodG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKzx0aXRsZT5VbmRlci9PdmVyPC90aXRsZT4KKzxz
dHlsZSB0eXBlPSd0ZXh0L2Nzcyc+Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0n
dDEnPnVuZGVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0
aE1MJz4KKzxtdW5kZXI+Cis8bWk+QjwvbWk+Cis8bWk+eDwvbWk+Cis8L211bmRlcj4KKzwvbWF0
aD4KKzwvcD4KKzxwIGlkPSd0Mic+dW5kZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMu
b3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG11bmRlcj4KKzxtaT5CPC9taT4KKzxtaT5YPC9taT4K
KzwvbXVuZGVyPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3QzJz5vdmVyOiAKKzxtYXRoIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtb3Zlcj4KKzxtaT5CPC9t
aT4KKzxtaT54PC9taT4KKzwvbW92ZXI+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDQnPm92ZXI6
IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1v
dmVyPgorPG1pPkI8L21pPgorPG1pPnk8L21pPgorPC9tb3Zlcj4KKzwvbWF0aD4KKzwvcD4KKzxw
IGlkPSd0NSc+dW5kZXIgJmFtcDsgb3ZlcjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5v
cmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXVuZGVyb3Zlcj4KKzxtaT5CPC9taT4KKzxtaT54PC9t
aT4KKzxtaT55PC9taT4KKzwvbXVuZGVyb3Zlcj4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0Nic+
dW5kZXIgJmFtcDsgb3ZlcjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9N
YXRoL01hdGhNTCc+Cis8bXVuZGVyb3Zlcj4KKzxtaT5CPC9taT4KKzxtaT5YPC9taT4KKzxtaT55
PC9taT4KKzwvbXVuZGVyb3Zlcj4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0Nyc+dW5kZXIgJmFt
cDsgb3ZlcjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhN
TCc+Cis8bXVuZGVyb3Zlcj4KKzxtbyBtYXRoc2l6ZT0nYmlnJz4mI3gyMjExOzwvbW8+Cis8bXJv
dz48bWk+aTwvbWk+PG1vPj08L21vPjxtaT4wPC9taT48L21yb3c+Cis8bXJvdz48bWk+eDwvbWk+
PG1vPis8L21vPjxtaT55PC9taT48L21yb3c+Cis8L211bmRlcm92ZXI+Cis8L21hdGg+Cis8L3A+
Cis8cCBpZD0ndDgnPnVuZGVyICZhbXA7IG92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cu
dzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG11bmRlcm92ZXI+Cis8bW8gbWF0aHNpemU9J2Jp
Zyc+JiN4MjIxMTs8L21vPgorPG1yb3c+PG1pPkk8L21pPjxtbz49PC9tbz48bWk+MDwvbWk+PC9t
cm93PgorPG1yb3c+PG1pPlg8L21pPjxtbz4rPC9tbz48bWk+eTwvbWk+PC9tcm93PgorPC9tdW5k
ZXJvdmVyPgorPC9tYXRoPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39223</attachid>
            <date>2009-09-08 15:31:43 -0700</date>
            <delta_ts>2009-09-10 15:58:22 -0700</delta_ts>
            <desc>Update patch with support for the msqrt and mroot elements</desc>
            <filename>MathML-3.patch</filename>
            <type>text/plain</type>
            <size>108179</size>
            <attacher name="Alex Milowski">alex</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODA3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA3IEBACisyMDA5LTA5LTA0ICBBbGV4IE1pbG93c2tpICA8YWxleEBtaWxvd3Nr
aS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlJbml0aWFs
IE1hdGhNTCByZW5kZXJpbmcgc3VwcG9ydC4gIFRoZXNlIGNoYW5nZXMgZG8gbm90IGFmZmVjdAor
ICAgICAgICBwYXJzaW5nIHNvIE1hdGhNTCBlbnRpdGllcyBhcmUgbm90IGRlZmluZWQuICBJdCBp
cyBwdXJlbHkgRE9NCisgICAgICAgIGFuZCByZW5kZXJpbmcgc3VwcG9ydC4KKworICAgICAgICBU
ZXN0czogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWwKKyAgICAgICAgICAgICAgIG1h
dGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwv
cHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sCisgICAgICAgICAgICAgICBtYXRobWwvcHJlc2VudGF0
aW9uL3N1YnN1cC54aHRtbAorICAgICAgICAgICAgICAgbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRl
cm92ZXIueGh0bWwKKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnOgorCisJICAgQWRkZWQgdGhlIEVOQUJMRV9NQVRITUwgZmVhdHVyZQorICAgICAgICAg
IAorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisKKyAgICAgICAgICAgQWRkZWQgdGhl
IGRlcml2ZWQgc291cmNlcyBmb3IgdGhlIG1hdGhtbCBlbGVtZW50cworCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICAgIFByb2plY3QgY29u
ZmlndXJhdGlvbnMgdG8gYnVpbGQgb24gdGhlIG1hYworCisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQXR0cik6CisKKwkgIEZp
eCBmb3IgcG9pbnRlciBleGNlcHRpb24gYXMgdGhlIE1hdGhNTCBzdHlsZXNoZWV0IGlzIGFkZGVk
IGJlZm9yZSB0aGUgZG9jdW1lbnQKKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudCk6
CisKKyAgICAgICAgICBBZGRlZCBNYXRoTUwgdXNlciBhZ2VudCBzdHlsZXNoZWV0CisKKyAgICAg
ICAgKiBjc3MvbWF0aG1sLmNzczogQWRkZWQuCisKKyAgICAgICAgICBNYXRoTUwgdXNlciBhZ2Vu
dCBzdHlsZXNoZWV0CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnQpOgorCisgICAgICAgICAgQWRkZWQgY3JlYXRp
b24gb2YgTWF0aE1MIGVsZW1lbnRzCisKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6aXNNYXRoTUxFbGVtZW50KToKKworICAgICAgICAgIEFkZGVkIHRlc3Qg
Zm9yIE1hdGhNTAorCisgICAgICAgICogbWF0aG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwv
TWF0aE1MRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVu
dDo6TWF0aE1MRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxFbGVtZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWF0aE1MRWxlbWVudDo6aXNNYXRoTUxFbGVtZW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MTWF0aEVsZW1lbnQ6Ok1hdGhNTE1hdGhFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAqIG1hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRo
bWwvUmVuZGVyRmVuY2VkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGZW5j
ZWQ6OlJlbmRlckZlbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGZW5jZWQ6Om1ha2VG
ZW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmVuY2VkOjphZGRDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGZW5jZWQ6OmxheW91dCk6CisgICAgICAgICogbWF0aG1sL1Jl
bmRlckZlbmNlZC5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVuZGVyRnJhY3Rpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWN0aW9uOjpSZW5kZXJGcmFjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAg
ICAqIG1hdGhtbC9SZW5kZXJGcmFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvUmVu
ZGVyTWF0aElubGluZUNvbnRhaW5lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aElubGluZUNvbnRhaW5lcjo6UmVuZGVyTWF0aElubGluZUNvbnRhaW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjpzZXRTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjppc0NoaWxkQWxsb3dlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjptYWtlQmxvY2tT
dHlsZSk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhJbmxpbmVDb250YWluZXIuaDogQWRk
ZWQuCisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhTdWJTdXAuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhTdWJTdXA6OlJlbmRlck1hdGhTdWJTdXApOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aFN1YlN1cDo6YWRkQ2hpbGQpOgorICAgICAgICAqIG1hdGht
bC9SZW5kZXJNYXRoU3ViU3VwLmg6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRo
VW5kZXJPdmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoVW5kZXJP
dmVyOjpSZW5kZXJNYXRoVW5kZXJPdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE92ZXJBZGp1
c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVuZGVyQWRqdXN0bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aFVuZGVyT3Zlcjo6YWRk
Q2hpbGQpOgorICAgICAgICAqIG1hdGhtbC9SZW5kZXJNYXRoVW5kZXJPdmVyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aFVuZGVyT3Zlcjo6KToKKyAgICAgICAgKiBtYXRo
bWwvbWF0aHRhZ3MuaW46IEFkZGVkLgorCisgICAgICAgICAgTWF0aE1MIHJlbmRlcmluZyBjb2Rl
IGFuZCBlbGVtZW50IGRlZmluaXRpb25zCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisKKyAgICAgICAgICBBZGRlZCBpbml0aWFs
aXphdGlvbiBvZiBNYXRoTUwgbmFtZXMuCisKKwogMjAwOS0wOS0wNCAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0
IGFuZCBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDQ4MDY1
KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMgXAogICAgICQo
V2ViQ29yZSkvaW5zcGVjdG9yIFwKICAgICAkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZSBcCisg
ICAgJChXZWJDb3JlKS9tYXRobWwgXAogICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCiAg
ICAgJChXZWJDb3JlKS9wYWdlIFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXApAQCAtNDMzLDYg
KzQzNCw4IEBAIGFsbCA6IFwKICAgICBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIFwKICAgICBYTGlu
a05hbWVzLmNwcCBcCiAgICAgWE1MTmFtZXMuY3BwIFwKKyAgICBNYXRoTUxFbGVtZW50RmFjdG9y
eS5jcHAgXAorCU1hdGhNTE5hbWVzLmNwcCBcCiAgICAgWFBhdGhHcmFtbWFyLmNwcCBcCiAgICAg
dG9rZW5pemVyLmNwcCBcCiAjCkBAIC01NTYsNiArNTU5LDEwIEBAIGlmZXEgKCQoZmluZHN0cmlu
ZyBFTkFCTEVfV01MLCQoRkVBVFVSRV8KICAgICBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA6PSAk
KFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKSAkKFdlYkNvcmUpL2Nzcy93bWwuY3NzCiBlbmRpZgog
CitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX01BVEhNTCwkKEZFQVRVUkVfREVGSU5FUykpLCBF
TkFCTEVfTUFUSE1MKQorICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VO
VF9TVFlMRV9TSEVFVFMpICQoV2ViQ29yZSkvY3NzL21hdGhtbC5jc3MKK2VuZGlmCisKIGlmZXEg
KCQoZmluZHN0cmluZyBFTkFCTEVfVklERU8sJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX1ZJ
REVPKQogICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VOVF9TVFlMRV9T
SEVFVFMpICQoV2ViQ29yZSkvY3NzL21lZGlhQ29udHJvbHMuY3NzCiBpZmVxICgkKE9TKSxNQUNP
UykKQEAgLTY5Nyw2ICs3MDQsMjYgQEAgV01MTmFtZXMuY3BwIDoKIAogZW5kaWYKIAorIyAtLS0t
LS0tLQorCisjIE1hdGhNTCB0YWcgYW5kIGF0dHJpYnV0ZSBuYW1lcywgYW5kIGVsZW1lbnQgZmFj
dG9yeQorCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX01BVEhNTCwkKEZFQVRVUkVfREVGSU5F
UykpLCBFTkFCTEVfTUFUSE1MKQorCitNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgTWF0aE1MTmFt
ZXMuY3BwIDogZG9tL21ha2VfbmFtZXMucGwgbWF0aG1sL21hdGh0YWdzLmluCisJcGVybCAtSSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJDwgLS10YWdzICQoV2ViQ29yZSkvbWF0aG1sL21h
dGh0YWdzLmluIC0tZmFjdG9yeSAtLXdyYXBwZXJGYWN0b3J5CisKK2Vsc2UKKworTWF0aE1MRWxl
bWVudEZhY3RvcnkuY3BwIDoKKwllY2hvID4gJEAKKworTWF0aE1MTmFtZXMuY3BwIDoKKwllY2hv
ID4gJEAKKworZW5kaWYKKworCiAKICMgLS0tLS0tLS0KIApJbmRleDogV2ViQ29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA0ODA2NSkKKysr
IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDkgKzU3LDEwIEBAIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgPSBFTkFC
TEVfU1ZHX0YKIEVOQUJMRV9TVkdfVVNFID0gRU5BQkxFX1NWR19VU0U7CiBFTkFCTEVfVklERU8g
PSBFTkFCTEVfVklERU87CiBFTkFCTEVfV0VCX1NPQ0tFVFMgPSBFTkFCTEVfV0VCX1NPQ0tFVFM7
CitFTkFCTEVfTUFUSE1MID0gRU5BQkxFX01BVEhNTDsKIEVOQUJMRV9XTUwgPSA7CiBFTkFCTEVf
V09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFM
SVNUKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxF
X0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0hB
UkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFC
TEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxF
X1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNF
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdS
SUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZF
TlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZH
X0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNf
QklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNU
KSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMp
ICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpICQoRU5BQkxFX01BVEhNTCk7CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDgwNjUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDYyMyw2ICs0NjIzLDMz
IEBACiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudC5oICovOyB9OwogCQlGOUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50LmggKi87IH07CisJCUZBOUREQUQ3MTA1MUEwMkIwMDM0RkEyRiAvKiBNYXRo
TUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQTlEREFENjEwNTFBMDJCMDAzNEZBMkYgLyogTWF0aE1MRWxlbWVudEZhY3Rv
cnkuY3BwICovOyB9OworCQlGQTlEREFEOTEwNTFBMDU5MDAzNEZBMkYgLyogTWF0aE1MRWxlbWVu
dEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZBOUREQUQ4MTA1MUEwNTkwMDM0RkEyRiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9
OworCQlGQUFCMDI4MzEwNTFBMTc2MDA1OEVCOTQgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkE5RERBRDYx
MDUxQTAyQjAwMzRGQTJGIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLzsgfTsKKwkJRkFB
QjAyQjYxMDU2RDQzMDAwNThFQjk0IC8qIFJlbmRlclNxdWFyZVJvb3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQUIwMkI0MTA1NkQ0MzAwMDU4RUI5
NCAvKiBSZW5kZXJTcXVhcmVSb290LmggKi87IH07CisJCUZBQUIwMkI3MTA1NkQ0MzAwMDU4RUI5
NCAvKiBSZW5kZXJTcXVhcmVSb290LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZBQUIwMkI1MTA1NkQ0MzAwMDU4RUI5NCAvKiBSZW5kZXJTcXVhcmVS
b290LmNwcCAqLzsgfTsKKwkJRkFBQjAzM0YxMDU2RTQ3MDAwNThFQjk0IC8qIFJlbmRlck1hdGhS
b290LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUFC
MDMzRDEwNTZFNDcwMDA1OEVCOTQgLyogUmVuZGVyTWF0aFJvb3QuaCAqLzsgfTsKKwkJRkFBQjAz
NDAxMDU2RTQ3MDAwNThFQjk0IC8qIFJlbmRlck1hdGhSb290LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQUIwMzNFMTA1NkU0NzAwMDU4RUI5NCAv
KiBSZW5kZXJNYXRoUm9vdC5jcHAgKi87IH07CisJCUZBRTdCNjYxMTA1MTk2QjMwMDc0OTBFMiAv
KiBtYXRobWwuY3NzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGQUU3QjY2MDEwNTE5NkIzMDA3NDkwRTIgLyogbWF0aG1sLmNzcyAqLzsgfTsKKwkJRkFF
N0I2ODcxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFFN0I2NzYxMDUxOTZGOTAwNzQ5MEUy
IC8qIE1hdGhNTEVsZW1lbnQuY3BwICovOyB9OworCQlGQUU3QjY4ODEwNTE5NkY5MDA3NDkwRTIg
LyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkFFN0I2NzcxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTEVsZW1lbnQuaCAqLzsg
fTsKKwkJRkFFN0I2ODkxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkFFN0I2NzgxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
Y3BwICovOyB9OworCQlGQUU3QjY4QTEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkFFN0I2NzkxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQuaCAqLzsgfTsKKwkJRkFFN0I2OEIxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTE1hdGhF
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZBRTdCNjdBMTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxNYXRoRWxlbWVudC5jcHAgKi87IH07
CisJCUZBRTdCNjhDMTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxNYXRoRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkFFN0I2N0IxMDUxOTZG
OTAwNzQ5MEUyIC8qIE1hdGhNTE1hdGhFbGVtZW50LmggKi87IH07CisJCUZBRTdCNjhEMTA1MTk2
RjkwMDc0OTBFMiAvKiBtYXRodGFncy5pbiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkFFN0I2N0MxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGh0YWdzLmlu
ICovOyB9OworCQlGQUU3QjY4RTEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRmVuY2VkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjdEMTA1
MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuY3BwICovOyB9OworCQlGQUU3QjY4RjEwNTE5
NkY5MDA3NDkwRTIgLyogUmVuZGVyRmVuY2VkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY3RTEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRmVu
Y2VkLmggKi87IH07CisJCUZBRTdCNjkwMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGcmFjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3
QjY3RjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRnJhY3Rpb24uY3BwICovOyB9OworCQlGQUU3
QjY5MTEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRnJhY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBRTdCNjgwMTA1MTk2RjkwMDc0OTBFMiAv
KiBSZW5kZXJGcmFjdGlvbi5oICovOyB9OworCQlGQUU3QjY5MjEwNTE5NkY5MDA3NDkwRTIgLyog
UmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY4MTEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0
aElubGluZUNvbnRhaW5lci5jcHAgKi87IH07CisJCUZBRTdCNjkzMTA1MTk2RjkwMDc0OTBFMiAv
KiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY4MjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0
aElubGluZUNvbnRhaW5lci5oICovOyB9OworCQlGQUU3QjY5NDEwNTE5NkY5MDA3NDkwRTIgLyog
UmVuZGVyTWF0aFN1YlN1cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQUU3QjY4MzEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aFN1YlN1cC5j
cHAgKi87IH07CisJCUZBRTdCNjk1MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3ViU3Vw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY4
NDEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aFN1YlN1cC5oICovOyB9OworCQlGQUU3QjY5
NjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyTWF0aFVuZGVyT3Zlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY4NTEwNTE5NkY5MDA3NDkw
RTIgLyogUmVuZGVyTWF0aFVuZGVyT3Zlci5jcHAgKi87IH07CisJCUZBRTdCNjk3MTA1MTk2Rjkw
MDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY4NjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVy
TWF0aFVuZGVyT3Zlci5oICovOyB9OworCQlGQUU3QjZBMDEwNTE5ODNBMDA3NDkwRTIgLyogTWF0
aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkFFN0I2OUQxMDUxOTgzQTAwNzQ5MEUyIC8qIE1hdGhNTE5hbWVzLmNwcCAqLzsgfTsKKwkJ
RkFFN0I2QTExMDUxOTgzQTAwNzQ5MEUyIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUU3QjY5RTEwNTE5ODNBMDA3NDkwRTIg
LyogTWF0aE1MTmFtZXMuaCAqLzsgfTsKIAkJRkU2RkQ0ODcwRjY3NkU1NzAwMDkyODczIC8qIENv
b3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFNkZENDg0MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5jcHAgKi87IH07CiAJ
CUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODcz
IC8qIENvb3JkaW5hdGVzLmggKi87IH07CiAJCUZFNkZENDhEMEY2NzZFOTMwMDA5Mjg3MyAvKiBK
U0Nvb3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFNkZENDhCMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCAqLzsg
fTsKQEAgLTk2OTYsNiArOTcyMywzMiBAQAogCQlGOTE2QzQ4QzBEQjUxMEY4MDA3NkNEODMgLyog
SlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
OUYwRUQ3ODBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE5RERBRDYxMDUxQTAyQjAwMzRGQTJG
IC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkE5RERBRDgxMDUxQTA1OTAwMzRGQTJGIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBQUIwMkI0MTA1NkQ0MzAwMDU4RUI5
NCAvKiBSZW5kZXJTcXVhcmVSb290LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlclNxdWFyZVJvb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFBQjAy
QjUxMDU2RDQzMDAwNThFQjk0IC8qIFJlbmRlclNxdWFyZVJvb3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU3F1YXJlUm9vdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZBQUIwMzNEMTA1NkU0NzAwMDU4RUI5NCAvKiBSZW5kZXJNYXRo
Um9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNYXRoUm9vdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUFCMDMzRTEwNTZFNDcwMDA1OEVCOTQg
LyogUmVuZGVyTWF0aFJvb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVyTWF0aFJvb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3
QjY2MDEwNTE5NkIzMDA3NDkwRTIgLyogbWF0aG1sLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBw
YXRoID0gbWF0aG1sLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFN0I2NzYx
MDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZBRTdCNjc3MTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFN0I2NzgxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZBRTdCNjc5MTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFF
N0I2N0ExMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTE1hdGhFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hdGhNTE1hdGhFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFN0I2N0IxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhN
TE1hdGhFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTE1h
dGhFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjdDMTA1MTk2
RjkwMDc0OTBFMiAvKiBtYXRodGFncy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtYXRodGFn
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFN0I2N0QxMDUxOTZGOTAwNzQ5
MEUyIC8qIFJlbmRlckZlbmNlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJGZW5jZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3
QjY3RTEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRmVuY2VkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlckZlbmNlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGQUU3QjY3RjEwNTE5NkY5MDA3NDkwRTIgLyogUmVuZGVyRnJhY3Rpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRnJhY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUU3QjY4MDEwNTE5NkY5MDA3NDkwRTIgLyogUmVu
ZGVyRnJhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRnJh
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFN0I2ODExMDUxOTZGOTAw
NzQ5MEUyIC8qIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjgyMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5k
ZXJNYXRoSW5saW5lQ29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkFFN0I2ODMxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhTdWJTdXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aFN1YlN1cC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjg0MTA1MTk2RjkwMDc0OTBFMiAvKiBS
ZW5kZXJNYXRoU3ViU3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
ck1hdGhTdWJTdXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFN0I2ODUxMDUx
OTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhVbmRlck92ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWF0aFVuZGVyT3Zlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZBRTdCNjg2MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRo
VW5kZXJPdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhV
bmRlck92ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkFFN0I2OUQxMDUxOTgz
QTAwNzQ5MEUyIC8qIE1hdGhNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1hdGhNTE5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkFFN0I2OUUxMDUxOTgzQTAwNzQ5MEUyIC8qIE1hdGhNTE5hbWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTE5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFNDlFRjk3MERDNTE0NjIwMDQyNjZFMSAvKiBEYXNoYm9hcmRTdXBwb3J0Q1NTUHJv
cGVydHlOYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEYXNoYm9hcmRTdXBwb3J0Q1NT
UHJvcGVydHlOYW1lcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0ODQw
RjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvb3JkaW5hdGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENvb3JkaW5hdGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb3JkaW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05Nzc3LDYgKzk4MzAsNyBAQAogCQkJCTkzRUVDMUVDMDlDMjg3NzcwMEM1
MTVEMSAvKiBodG1sICovLAogCQkJCTFDODFCOTREMEU5NzMyRDkwMDI2NkUwNyAvKiBpbnNwZWN0
b3IgKi8sCiAJCQkJQkNCMTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxvYWRlciAqLywKKwkJCQlG
QUU3QjY3NTEwNTE5NkY5MDA3NDkwRTIgLyogbWF0aG1sICovLAogCQkJCTMzM0Y3MDNEMEZCNDlD
MTYwMDhFMTJBNiAvKiBub3RpZmljYXRpb25zICovLAogCQkJCTY1QkYwMjE4MDk3NDgwNjMwMEM0
MzE5NiAvKiBwYWdlICovLAogCQkJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9y
bSAqLywKQEAgLTEwNjU1LDYgKzEwNzA5LDEwIEBACiAJCQkJOTM4RTY1RjAwOUYwOTg0MDAwOEE0
OEVDIC8qIEpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oICovLAogCQkJCTg1NzREMUYxMEFE
RTYxMjIwMDRDQkExMSAvKiBKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgKi8sCiAJCQkJ
ODU3NEQxRjIwQURFNjEyMjAwNENCQTExIC8qIEpTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmgg
Ki8sCisJCQkJRkE5RERBRDgxMDUxQTA1OTAwMzRGQTJGIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5
LmggKi8sCisJCQkJRkE5RERBRDYxMDUxQTAyQjAwMzRGQTJGIC8qIE1hdGhNTEVsZW1lbnRGYWN0
b3J5LmNwcCAqLywKKwkJCQlGQUU3QjY5RDEwNTE5ODNBMDA3NDkwRTIgLyogTWF0aE1MTmFtZXMu
Y3BwICovLAorCQkJCUZBRTdCNjlFMTA1MTk4M0EwMDc0OTBFMiAvKiBNYXRoTUxOYW1lcy5oICov
LAogCQkJCTY1NjU4MUU2MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdFbGVtZW50RmFjdG9yeS5jcHAg
Ki8sCiAJCQkJNjU2NTgxRTcwOUQxNTA4RDAwMEU2MUQ3IC8qIFNWR0VsZW1lbnRGYWN0b3J5Lmgg
Ki8sCiAJCQkJNjU2NTgxRTgwOUQxNTA4RDAwMEU2MUQ3IC8qIFNWR05hbWVzLmNwcCAqLywKQEAg
LTE0NzQ0LDYgKzE0ODAyLDcgQEAKIAkJCQk5M0NBNEM5QTA5REY5M0ZBMDBERjg2NzcgLyogbWFr
ZS1jc3MtZmlsZS1hcnJheXMucGwgKi8sCiAJCQkJOTNDQTRDOUIwOURGOTNGQTAwREY4Njc3IC8q
IG1ha2Vwcm9wLnBsICovLAogCQkJCTkzQ0E0QzlEMDlERjkzRkEwMERGODY3NyAvKiBtYWtldmFs
dWVzLnBsICovLAorCQkJCUZBRTdCNjYwMTA1MTk2QjMwMDc0OTBFMiAvKiBtYXRobWwuY3NzICov
LAogCQkJCTA3MEREOEY1MEYwMTg2ODAwMDcyN0RFQiAvKiBtZWRpYUNvbnRyb2xzLmNzcyAqLywK
IAkJCQkwN0FGRTU5MDBGMTQ0NkJEMDA4NDE2MTcgLyogbWVkaWFDb250cm9sc1FULmNzcyAqLywK
IAkJCQk0RTE5NTkxRjBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuY3BwICov
LApAQCAtMTUyNDQsNiArMTUzMDMsMzQgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJz
ID0gMDsKIAkJfTsKKwkJRkFFN0I2NzUxMDUxOTZGOTAwNzQ5MEUyIC8qIG1hdGhtbCAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRkFFN0I2NzYxMDUxOTZG
OTAwNzQ5MEUyIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovLAorCQkJCUZBRTdCNjc3MTA1MTk2Rjkw
MDc0OTBFMiAvKiBNYXRoTUxFbGVtZW50LmggKi8sCisJCQkJRkFFN0I2NzkxMDUxOTZGOTAwNzQ5
MEUyIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCAqLywKKwkJCQlGQUU3QjY3ODEw
NTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAgKi8sCisJ
CQkJRkFFN0I2N0ExMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTE1hdGhFbGVtZW50LmNwcCAqLywK
KwkJCQlGQUU3QjY3QjEwNTE5NkY5MDA3NDkwRTIgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCAqLywK
KwkJCQlGQUU3QjY3QzEwNTE5NkY5MDA3NDkwRTIgLyogbWF0aHRhZ3MuaW4gKi8sCisJCQkJRkFF
N0I2N0QxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZlbmNlZC5jcHAgKi8sCisJCQkJRkFFN0I2
N0UxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZlbmNlZC5oICovLAorCQkJCUZBRTdCNjdGMTA1
MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGcmFjdGlvbi5jcHAgKi8sCisJCQkJRkFFN0I2ODAxMDUx
OTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZyYWN0aW9uLmggKi8sCisJCQkJRkFFN0I2ODExMDUxOTZG
OTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIuY3BwICovLAorCQkJCUZBRTdC
NjgyMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmggKi8sCisJ
CQkJRkFFN0I2ODMxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhTdWJTdXAuY3BwICovLAor
CQkJCUZBRTdCNjg0MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3ViU3VwLmggKi8sCisJ
CQkJRkFFN0I2ODUxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhVbmRlck92ZXIuY3BwICov
LAorCQkJCUZBRTdCNjg2MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmgg
Ki8sCisJCQkJRkFBQjAyQjQxMDU2RDQzMDAwNThFQjk0IC8qIFJlbmRlclNxdWFyZVJvb3QuaCAq
LywKKwkJCQlGQUFCMDJCNTEwNTZENDMwMDA1OEVCOTQgLyogUmVuZGVyU3F1YXJlUm9vdC5jcHAg
Ki8sCisJCQkJRkFBQjAzM0QxMDU2RTQ3MDAwNThFQjk0IC8qIFJlbmRlck1hdGhSb290LmggKi8s
CisJCQkJRkFBQjAzM0UxMDU2RTQ3MDAwNThFQjk0IC8qIFJlbmRlck1hdGhSb290LmNwcCAqLywK
KwkJCSk7CisJCQlwYXRoID0gbWF0aG1sOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTE3NTk0LDYgKzE3NjgxLDE5IEBACiAJCQkJNTEwRDRBMzgx
MDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBQkFFMUIxMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUUxRTEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3Ry
ZWFtSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUU3QjY4ODEwNTE5NkY5MDA3NDkwRTIg
LyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkFFN0I2OEExMDUxOTZGOTAw
NzQ5MEUyIC8qIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZBRTdCNjhDMTA1MTk2RjkwMDc0OTBFMiAvKiBNYXRoTUxNYXRoRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkFFN0I2OEYxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZlbmNlZC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkFFN0I2OTExMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZy
YWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQUU3QjY5MzEwNTE5NkY5MDA3NDkwRTIgLyog
UmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkFFN0I2OTUx
MDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlck1hdGhTdWJTdXAuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZBRTdCNjk3MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGQUU3QjZBMTEwNTE5ODNBMDA3NDkwRTIgLyogTWF0aE1MTmFtZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCUZBOUREQUQ3MTA1MUEwMkIwMDM0RkEyRiAvKiBNYXRoTUxFbGVt
ZW50RmFjdG9yeS5jcHAgaW4gSGVhZGVycyAqLywKKwkJCQlGQTlEREFEOTEwNTFBMDU5MDAzNEZB
MkYgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUZBQUIwMkI2
MTA1NkQ0MzAwMDU4RUI5NCAvKiBSZW5kZXJTcXVhcmVSb290LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGQUFCMDMzRjEwNTZFNDcwMDA1OEVCOTQgLyogUmVuZGVyTWF0aFJvb3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMTc2OTYsNiArMTc3OTYsOCBAQAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0
RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUx
RkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCUUx
Mjg0QURBMTA0NDdBRUIwMEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmlkbCBpbiBSZXNv
dXJjZXMgKi8sCisJCQkJRkFFN0I2NjExMDUxOTZCMzAwNzQ5MEUyIC8qIG1hdGhtbC5jc3MgaW4g
UmVzb3VyY2VzICovLAorCQkJCUZBRTdCNjhEMTA1MTk2RjkwMDc0OTBFMiAvKiBtYXRodGFncy5p
biBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzg0OSw2ICsxNzk1MSwxNiBAQAogCQkJaXNhID0gUEJY
U291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJ
ZmlsZXMgPSAoCisJCQkJRkFFN0I2ODcxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFFN0I2ODkxMDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFFN0I2OEIx
MDUxOTZGOTAwNzQ5MEUyIC8qIE1hdGhNTE1hdGhFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUZBRTdCNjhFMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJGZW5jZWQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRkFFN0I2OTAxMDUxOTZGOTAwNzQ5MEUyIC8qIFJlbmRlckZyYWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUZBRTdCNjkyMTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJN
YXRoSW5saW5lQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZBRTdCNjk0MTA1MTk2
RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoU3ViU3VwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZB
RTdCNjk2MTA1MTk2RjkwMDc0OTBFMiAvKiBSZW5kZXJNYXRoVW5kZXJPdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZBQUIwMjgzMTA1MUExNzYwMDU4RUI5NCAvKiBNYXRoTUxFbGVtZW50RmFj
dG9yeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQUU3QjZBMDEwNTE5ODNBMDA3NDkwRTIgLyog
TWF0aE1MTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2
QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5QTgxMjI4MEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjlBODEyMzAwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTY5Myw2ICsxOTgwNSw4IEBACiAJCQkJNTEwRDRB
MzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxl
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyog
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkFBQjAyQjcx
MDU2RDQzMDAwNThFQjk0IC8qIFJlbmRlclNxdWFyZVJvb3QuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkFBQjAzNDAxMDU2RTQ3MDAwNThFQjk0IC8qIFJlbmRlck1hdGhSb290LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA0ODA2NSkKKysrIFdlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNDMsNyArMjE0Myw3IEBAIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBdHQKICAgICBpZiAoYXR0ck5hbWVbMF0g
PT0gJy0nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpKQorICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpCiAgICAgICAgIGF0dHJOYW1lID0gYXR0ck5hbWUubG93ZXIoKTsKICAgICAKICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShhdHRyTmFtZSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19BVFRSKTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA0
ODA2NSkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTM0LDYgKzExMzQsMTcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVT
ZWxlY3RvcgogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE1BVEhNTCkKKyAgICBzdGF0aWMg
Ym9vbCBsb2FkZWRNYXRoTUxVc2VyQWdlbnRTaGVldDsKKyAgICBpZiAoZS0+aXNNYXRoTUxFbGVt
ZW50KCkgJiYgIWxvYWRlZE1hdGhNTFVzZXJBZ2VudFNoZWV0KSB7CisgICAgICAgIC8vIE1hdGhN
TCBydWxlcy4KKyAgICAgICAgbG9hZGVkTWF0aE1MVXNlckFnZW50U2hlZXQgPSB0cnVlOworICAg
ICAgICBDU1NTdHlsZVNoZWV0KiBtYXRobWxTaGVldCA9IHBhcnNlVUFTaGVldChtYXRobWxVc2Vy
QWdlbnRTdHlsZVNoZWV0LCBzaXplb2YobWF0aG1sVXNlckFnZW50U3R5bGVTaGVldCkpOworICAg
ICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1hdGhtbFNoZWV0LCBzY3JlZW5F
dmFsKCkpOworICAgICAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWF0
aG1sU2hlZXQsIHByaW50RXZhbCgpKTsKKyAgICB9CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUo
V01MKQogICAgIHN0YXRpYyBib29sIGxvYWRlZFdNTFVzZXJBZ2VudFNoZWV0OwogICAgIGlmIChl
LT5pc1dNTEVsZW1lbnQoKSAmJiAhbG9hZGVkV01MVXNlckFnZW50U2hlZXQpIHsKSW5kZXg6IFdl
YkNvcmUvY3NzL21hdGhtbC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvbWF0aG1sLmNz
cwkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL21hdGhtbC5jc3MJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjI2IEBACitAbmFtZXNwYWNlICJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgv
TWF0aE1MIjsKKworLyogYXBwcm92ZWQgKi8KK21hdGggeworICAgIGZvbnQtZmFtaWx5OiBTVElY
R2VuZXJhbCwgIk5ldyBUaW1lcyBSb21hbiI7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgIHBhZGRpbmc6IDBweDsKKyAgICBtYXJnaW46IDBweDsKKyAgICB0ZXh0LWluZGVudDowOwor
ICAgIGZvbnQtc2l6ZTogMS4xZW07CisgICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOworfQor
bWF0aFtkaXNwbGF5PSJibG9jayJdIHsKKyAgICBmb250LWZhbWlseTogIk5ldyBUaW1lcyBSb21h
biIKKyAgICBkaXNwbGF5OiBibG9jazsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisJcGFnZS1icmVh
ay1pbnNpZGU6IGF2b2lkOworfQorCittc3ViID4gKiArICogeworICAgdmVydGljYWwtYWxpZ246
IHN1YjsKKyAgIGZvbnQtc2l6ZTogMC43NWVtOworICAgbGluZS1oZWlnaHQ6IDAuNzVlbTsKK30K
KworbXN1cCA+ICogKyAqIHsKKyAgIHZlcnRpY2FsLWFsaWduOiBzdXBlcjsKKyAgIGZvbnQtc2l6
ZTogMC43NWVtOworICAgbGluZS1oZWlnaHQ6IDAuNzVlbTsKK30KKworbXN1YnN1cCA+ICogewor
ICAgIG1hcmdpbjogMHB4OworICAgIHBhZGRpbmc6IDBweDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjog
bWlkZGxlOworfQorCittc3Vic3VwID4gKiArICogeworICAgZm9udC1zaXplOiAwLjc1ZW07Cisg
ICBsaW5lLWhlaWdodDogMC43NWVtOworfQorCittdW5kZXJvdmVyIHsKKyAgICB2ZXJ0aWNhbC1h
bGlnbjogbWlkZGxlOworfQorCittdW5kZXJvdmVyID4gKiArICosIG1vdmVyID4gKiArICosIG11
bmRlciA+ICogKyAqIHsKKyAgIGZvbnQtc2l6ZTogMC43NWVtOworICAgbGluZS1oZWlnaHQ6IDAu
NTYyNWVtOworfQorCittcm93IHsKKyAgICBsaW5lLWhlaWdodDogMWVtOworICAgIHdoaXRlLXNw
YWNlOiBub3dyYXA7CisgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKworbWZlbmNlZCA+
ICogeworICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cit9CisKK21vLCBtbiwgbWkgeworICAg
bGluZS1oZWlnaHQ6IDAuNzVlbTsKKyAgIHBhZGRpbmc6IDBweDsKKyAgIG1hcmdpbjogMHB4Owor
fQorCittb1ttYXRoc2l6ZT0ic21hbGwiXSwgbW5bbWF0aHNpemU9InNtYWxsIl0sIG1pW21hdGhz
aXplPSJzbWFsbCJdIHsKKyAgIGZvbnQtc2l6ZTogMC43NWVtOworICAgbGluZS1oZWlnaHQ6IDAu
NTYyNWVtOworfQorCittb1ttYXRoc2l6ZT0ibm9ybWFsIl0sbW5bbWF0aHNpemU9Im5vcm1hbCJd
LG1pW21hdGhzaXplPSJub3JtYWwiXSB7CisgICBmb250LXNpemU6IDFlbTsKKyAgIGxpbmUtaGVp
Z2h0OiAwLjc1ZW07Cit9CisKK21vW21hdGhzaXplPSJiaWciXSwgbW5bbWF0aHNpemU9ImJpZyJd
LCBtaVttYXRoc2l6ZT0iYmlnIl0geworICAgbGluZS1oZWlnaHQ6IDEuMmVtOworICAgZm9udC1z
aXplOiAxLjVlbTsKK30KKyAKK2Fubm90YXRpb24sIGFubm90YXRpb24teG1sIHsKKyAgICBkaXNw
bGF5Om5vbmU7Cit9CisKK21waGFudG9tIHsKKyAgICB2aXNpYmlsaXR5OiBoaWRkZW47Cit9Citt
ZXJyb3IgeworICAgIG91dGxpbmU6IHNvbGlkIHRoaW4gcmVkOworfQorCittc3FydCB7CisgICAg
cGFkZGluZy10b3A6IDAuMmVtOworICAgIHBhZGRpbmctbGVmdDogMC43NWVtOworfQorCittcm9v
dCB7CisgICAgcGFkZGluZy10b3A6IDAuMmVtOworICAgIHBhZGRpbmctbGVmdDogMC4yZW07Cit9
CisKK21yb290ID4gKiArICogeworICAgIGZvbnQtc2l6ZTogMC43NWVtOworICAgIGxpbmUtaGVp
Z2h0OiAwLjc1ZW07CisgICAgdmVydGljYWwtYWxpZ246IHRvcDsKKyAgICBwYWRkaW5nLXJpZ2h0
OiAwLjNlbTsKK30KKworLyogcmFuZG9tICovCittZW5jbG9zZQorCXtkaXNwbGF5OmlubGluZS10
YWJsZTsKKwlib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7CisJYm9yZGVyLXNwYWNpbmc6MC40ZXgg
MDt9CittZW5jbG9zZVtub3RhdGlvbj0idG9wIl0KKwl7Ym9yZGVyLXRvcDpzb2xpZCB0aGluO30K
K21lbmNsb3NlW25vdGF0aW9uPSJib3R0b20iXQorCXtib3JkZXItYm90dG9tOnNvbGlkIHRoaW47
fQorbWVuY2xvc2Vbbm90YXRpb249InJpZ2h0Il0KKwl7Ym9yZGVyLXJpZ2h0OnNvbGlkIHRoaW47
fQorbWVuY2xvc2Vbbm90YXRpb249ImxlZnQiXQorCXtib3JkZXItbGVmdDpzb2xpZCB0aGluO30K
K21lbmNsb3NlW25vdGF0aW9uPSJib3giXQorCXtib3JkZXI6c29saWQgdGhpbjt9CittZW5jbG9z
ZVtub3RhdGlvbj0iaG9yaXpvbnRhbHN0cmlrZSJdCisJe3RleHQtZGVjb3JhdGlvbjpsaW5lLXRo
cm91Z2g7fQorbXRhYmxlCisJe2Rpc3BsYXk6aW5saW5lLXRhYmxlOworCWxpbmUtaGVpZ2h0OjEu
NWVtOworCXRleHQtYWxpZ246Y2VudGVyOworCXZlcnRpY2FsLWFsaWduOm1pZGRsZTt9CittdHIK
Kwl7ZGlzcGxheTp0YWJsZS1yb3c7fQorbXRkCisJe2Rpc3BsYXk6dGFibGUtY2VsbDsKKwlwYWRk
aW5nOjAgMC41ZXg7fQorbXRhYmxlW2NvbHVtbmFsaWduPSJsZWZ0Il0sIG10cltjb2x1bW5hbGln
bj0ibGVmdCJdLCBtdGRbY29sdW1uYWxpZ249ImxlZnQiXQorCXt0ZXh0LWFsaWduOmxlZnQ7fQor
bXRhYmxlW2NvbHVtbmFsaWduPSJyaWdodCJdLCBtdHJbY29sdW1uYWxpZ249InJpZ2h0Il0sIG10
ZFtjb2x1bW5hbGlnbj0icmlnaHQiXQorCXt0ZXh0LWFsaWduOnJpZ2h0O30KK210YWJsZVtyb3dh
bGlnbj0idG9wIl0gbXRkLCBtdGFibGUgbXRyW3Jvd2FsaWduPSJ0b3AiXSBtdGQsIAorbWF0aCBt
dGFibGUgbXRyIG10ZFtyb3dhbGlnbj0idG9wIl0KKwl7dmVydGljYWwtYWxpZ246dG9wfQorbXRh
YmxlW3Jvd2FsaWduPSJib3R0b20iXSBtdGQsIG10YWJsZSBtdHJbcm93YWxpZ249ImJvdHRvbSJd
IG10ZCwgCittYXRoIG10YWJsZSBtdHIgbXRkW3Jvd2FsaWduPSJib3R0b20iXQorCXt2ZXJ0aWNh
bC1hbGlnbjpib3R0b219CittdGFibGVbcm93YWxpZ249ImNlbnRlciJdIG10ZCwgbXRhYmxlIG10
cltyb3dhbGlnbj0iY2VudGVyIl0gbXRkLCAKK21hdGggbXRhYmxlIG10ciBtdGRbcm93YWxpZ249
ImNlbnRlciJdCisJe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0KK210YWJsZVtmcmFtZT0ic29saWQi
XQorCXtib3JkZXI6c29saWQgdGhpbjt9CittdGFibGVbZnJhbWU9ImRhc2hlZCJdCisJe2JvcmRl
cjpkYXNoZWQgdGhpbjt9CittdGFibGVbcm93bGluZXM9InNvbGlkIl0sIG10YWJsZVtyb3dsaW5l
cz0iZGFzaGVkIl0sIAorbXRhYmxlW2NvbHVtbmxpbmVzPSJzb2xpZCJdLCBtdGFibGVbY29sdW1u
bGluZXM9ImRhc2hlZCJdCisJe2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt9CittdGFibGVbcm93
bGluZXM9InNvbGlkIl0gPiBtdHIgKyBtdHIKKwl7Ym9yZGVyLXRvcDpzb2xpZCB0aGluO30KK210
YWJsZVtyb3dsaW5lcz0iZGFzaGVkIl0gPiBtdHIgKyBtdHIKKwl7Ym9yZGVyLXRvcDpkYXNoZWQg
dGhpbjt9CittdGFibGVbY29sdW1ubGluZXM9InNvbGlkIl0gPiBtdHIgPiBtdGQgKyBtdGQKKwl7
Ym9yZGVyLWxlZnQ6c29saWQgdGhpbjt9CittdGFibGVbY29sdW1ubGluZXM9ImRhc2hlZCJdID4g
bXRyID4gbXRkICsgbXRkCisJe2JvcmRlci1sZWZ0OmRhc2hlZCB0aGluO30KK21zcGFjZVtsaW5l
YnJlYWs9Imdvb2RicmVhayJdOmJlZm9yZQorCXtjb250ZW50OiJcMjAwQiI7CisJd2hpdGUtc3Bh
Y2U6bm9ybWFsO30KK21zcGFjZVtsaW5lYnJlYWs9Im5ld2xpbmUiXTpiZWZvcmUsIG1zcGFjZVts
aW5lYnJlYWs9ImluZGVudGluZ25ld2xpbmUiXTpiZWZvcmUgCisJe2NvbnRlbnQ6IlwwMDBBIjsK
Kwl3aGl0ZS1zcGFjZTpwcmU7fQorbXNwYWNlW3dpZHRoXTpiZWZvcmUKKwl7Y29udGVudDpub3Jt
YWw7fQorbXNwYWNlW3dpZHRoPSJ2ZXJ5dGhpbm1hdGhzcGFjZSJdCisJe3BhZGRpbmc6MCAwLjA1
ZW07fQorbXNwYWNlW3dpZHRoPSJ0aGlubWF0aHNwYWNlIl0KKwl7cGFkZGluZzowIDAuMDhlbTt9
Cittc3BhY2Vbd2lkdGg9Im1lZGl1bW1hdGhzcGFjZSJdCisJe3BhZGRpbmc6MCAwLjExZW07fQor
bXNwYWNlW3dpZHRoPSJ0aGlja21hdGhzcGFjZSJdCisJe3BhZGRpbmc6MCAwLjE0ZW07fQorbXNw
YWNlW3dpZHRoPSJ2ZXJ5dGhpY2ttYXRoc3BhY2UiXQorCXtwYWRkaW5nOjAgMC4xN2VtO30KK21z
dGFjaywgbWxvbmdkaXYKKwl7ZGlzcGxheTppbmxpbmUtdGFibGU7CisJZm9udC1mYW1pbHk6bW9u
b3NwYWNlO30KK21zdGFjaworCXt0ZXh0LWFsaWduOnJpZ2h0OworCWJvcmRlci1jb2xsYXBzZTpj
b2xsYXBzZTt9Cittc3RhY2tbYWxpZ249J3RvcCddLCBtbG9uZ2RpdlthbGlnbj0ndG9wJ10KKwl7
dmVydGljYWwtYWxpZ246dG9wO30KK21zdGFja1thbGlnbj0nYm90dG9tJ10sIG1sb25nZGl2W2Fs
aWduPSdib3R0b20nXSAKKwl7dmVydGljYWwtYWxpZ246Ym90dG9tO30KK21zdGFja1thbGlnbj0n
Y2VudGVyJ10sIG1sb25nZGl2W2FsaWduPSdjZW50ZXInXQorCXt2ZXJ0aWNhbC1hbGlnbjptaWRk
bGU7fQorbXNsaW5lCisJe2Rpc3BsYXk6YmxvY2s7CisJYm9yZGVyLWJvdHRvbTpzb2xpZCB0aGlu
O30KK21zdGFjayA+ICosIG1sb25nZGl2ID4gbW46Zmlyc3QtY2hpbGQKKwl7ZGlzcGxheTp0YWJs
ZS1yb3c7fQorbWxvbmdkaXYgPiAqOmZpcnN0LWNoaWxkICsgKgorCXtkaXNwbGF5OnRhYmxlLWNl
bGw7fQorbWxvbmdkaXYgPiAqOmZpcnN0LWNoaWxkICsgKiArICoKKwl7Ym9yZGVyLXRvcDpzb2xp
ZCB0aGluO30KK21sb25nZGl2ID4gKjpmaXJzdC1jaGlsZDpiZWZvcmUKKwl7ZGlzcGxheTp0YWJs
ZS1jZWxsOworCWNvbnRlbnQ6J1xhMCc7fQorbWxvbmdkaXYgPiAqOmZpcnN0LWNoaWxkICsgKjph
ZnRlcgorCXtjb250ZW50OicpJzt9CittbG9uZ2RpdiA+ICoKKwl7ZGlzcGxheTpibG9jazt9Citt
c2NhcnJ5CisJe2Rpc3BsYXk6bm9uZTt9CittYWN0aW9uID4gKiArICoKKwl7ZGlzcGxheTpub25l
O30KK21hY3Rpb25bYWN0aW9udHlwZT0idG9vbHRpcCJdOmZvY3VzID4gKiArICosCittYWN0aW9u
W2FjdGlvbnR5cGU9InRvb2x0aXAiXTpob3ZlciA+ICogKyAqCisJe3Bvc2l0aW9uOmZpeGVkOwor
CWRpc3BsYXk6YmxvY2s7CisJdG9wOjA7CisJbGVmdDowOworCWJhY2tncm91bmQtY29sb3I6SW5m
b0JhY2tncm91bmQ7CisJY29sb3I6SW5mb1RleHQ7CisJcGFkZGluZzowLjVleDsKKwlib3JkZXI6
c29saWQgMXB4O30KKyAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA0ODA2NSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSwxMyBAQAogI2luY2x1ZGUgIlNWR1N0eWxlRWxlbWVudC5o
IgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUFUSE1MKQorI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJNYXRoTUxFbGVtZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgIk1hdGhNTE5h
bWVzLmgiCisjZW5kaWYKKworCiAjaWYgRU5BQkxFKFdNTCkKICNpbmNsdWRlICJXTUxEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIldNTEVsZW1lbnQuaCIKQEAgLTc5Myw2ICs4MDAsMTAgQEAgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbQogICAgIGVsc2UgaWYgKHFOYW1lLm5h
bWVzcGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCiAgICAgICAgIGUgPSBT
VkdFbGVtZW50RmFjdG9yeTo6Y3JlYXRlU1ZHRWxlbWVudChxTmFtZSwgdGhpcywgY3JlYXRlZEJ5
UGFyc2VyKTsKICNlbmRpZgorI2lmIEVOQUJMRShNQVRITUwpCisgICAgZWxzZSBpZiAocU5hbWUu
bmFtZXNwYWNlVVJJKCkgPT0gTWF0aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFjZVVSSSkKKyAgICAg
ICAgZSA9IE1hdGhNTEVsZW1lbnRGYWN0b3J5OjpjcmVhdGVNYXRoTUxFbGVtZW50KHFOYW1lLCB0
aGlzLCBjcmVhdGVkQnlQYXJzZXIpOworI2VuZGlmCiAjaWYgRU5BQkxFKFdNTCkKICAgICBlbHNl
IGlmIChxTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBXTUxOYW1lczo6d21sTmFtZXNwYWNlVVJJKQog
ICAgICAgICBlID0gV01MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZVdNTEVsZW1lbnQocU5hbWUsIHRo
aXMsIGNyZWF0ZWRCeVBhcnNlcik7CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA0ODA2NSkKKysrIFdlYkNvcmUvZG9t
L05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3NywxMiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgaXNTVkdFbGVtZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKE1BVEhNTCkKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbHNlCisgICAgc3RhdGljIGJvb2wgaXNNYXRoTUxFbGVt
ZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShXTUwpCiAg
ICAgdmlydHVhbCBib29sIGlzV01MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZWxzZQpJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqICBNYXRoTUxFbGVtZW50LmNwcAorICogIFdlYkNvcmUKKyAqCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4KKyAqCisgCisg
CisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorIAorIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShN
QVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoTUxFbGVt
ZW50LmgiCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAordXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworICAgIAorTWF0aE1MRWxlbWVudDo6
TWF0aE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCisgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVFbGVt
ZW50WmVyb1JlZkNvdW50KQoreworfQorICAgIAorUGFzc1JlZlB0cjxNYXRoTUxFbGVtZW50PiBN
YXRoTUxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBuZXcgTWF0aE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCk7Cit9CisKK1JlbmRlck9iamVjdCogTWF0aE1MRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSogc3R5bGUpCit7CisgICAgcmV0dXJuIFJlbmRl
ck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKK30KKyAgICAKKyAgICAKK30KKwor
I2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisv
KgorICogIE1hdGhNTEVsZW1lbnQuaAorICogIFdlYkNvcmUKKyAqCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4KKyAqCisgCisgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
IAorICovCisKKyNpZm5kZWYgTWF0aE1MRWxlbWVudF9oCisjZGVmaW5lIE1hdGhNTEVsZW1lbnRf
aAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKyNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBNYXRoTUxFbGVtZW50IDogcHVibGlj
IFN0eWxlZEVsZW1lbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWF0aE1MRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Kik7CisgICAgICAgIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICAg
ICAgCisgICAgcHJvdGVjdGVkOgorICAgICAgICBNYXRoTUxFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CisgICAgICAgIAorICAgIH07CisgICAgCit9CisK
KyNlbmRpZgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkxIEBA
CisvKgorICogIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCisgKiAgV2ViQ29yZQor
ICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5j
b20pLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAK
KyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAor
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJl
bmRlck1hdGhJbmxpbmVDb250YWluZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJGZW5jZWQuaCIKKyNp
bmNsdWRlICJSZW5kZXJGcmFjdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhTdWJTdXAuaCIK
KyNpbmNsdWRlICJSZW5kZXJNYXRoVW5kZXJPdmVyLmgiCisjaW5jbHVkZSAiUmVuZGVyU3F1YXJl
Um9vdC5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhSb290LmgiCisjaW5jbHVkZSAiTWF0aE1MSW5s
aW5lQ29udGFpbmVyRWxlbWVudC5oIgorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBN
YXRoTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQoreworfQorCitQYXNzUmVmUHRyPE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQ+IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCit7
CisgICAgcmV0dXJuIG5ldyBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KTsKK30KKworUmVuZGVyT2JqZWN0KiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkK
K3sKKyAgICBpZiAoc3R5bGUtPmNvbnRlbnREYXRhKCkgJiYgc3R5bGUtPmRpc3BsYXkoKSE9SU5M
SU5FX0JMT0NLKSB7CisgICAgICAgIC8vIElmIHRoZSBzdHlsZSBpcyBub3QgaW5saW5lLWJsb2Nr
LCBkZWZhdWx0IHRvIHN0eWxlZCByZW5kZXIgb2JqZWN0CisgICAgICAgIHJldHVybiBSZW5kZXJP
YmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CisgICAgfQorICAgIFJlbmRlck9iamVj
dCogb2JqZWN0ID0gMDsKKyAgICBpZiAobG9jYWxOYW1lKCk9PSJtZmVuY2VkIikgeworICAgICAg
ICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJGZW5jZWQodGhpcyk7CisgICAgfSBlbHNlIGlm
IChsb2NhbE5hbWUoKT09Im1mcmFjIikgeworICAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBS
ZW5kZXJGcmFjdGlvbih0aGlzKTsKKyAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZSgpPT0ibXN1YnN1
cCIpIHsKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aFN1YlN1cCh0aGlz
KTsKKyAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZSgpPT0ibW92ZXIiKSB7CisgICAgICAgIG9iamVj
dCA9IG5ldyAoYXJlbmEpIFJlbmRlck1hdGhVbmRlck92ZXIodGhpcyk7CisgICAgfSBlbHNlIGlm
IChsb2NhbE5hbWUoKT09Im11bmRlciIpIHsKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkg
UmVuZGVyTWF0aFVuZGVyT3Zlcih0aGlzKTsKKyAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZSgpPT0i
bXVuZGVyb3ZlciIpIHsKKyAgICAgICAgb2JqZWN0ID0gbmV3IChhcmVuYSkgUmVuZGVyTWF0aFVu
ZGVyT3Zlcih0aGlzKTsKKyAgICB9IGVsc2UgaWYgKGxvY2FsTmFtZSgpPT0ibXNxcnQiKSB7Cisg
ICAgICAgIG9iamVjdCA9IG5ldyAoYXJlbmEpIFJlbmRlclNxdWFyZVJvb3QodGhpcyk7CisgICAg
fSBlbHNlIGlmIChsb2NhbE5hbWUoKT09Im1yb290IikgeworICAgICAgICBvYmplY3QgPSBuZXcg
KGFyZW5hKSBSZW5kZXJNYXRoUm9vdCh0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgIC8vIHRo
aXMgd2lsbCBqdXN0IGNyZWF0ZSBhbiBpbmxpbmUtYmxvY2sgd2l0aCBhbmQgaW5saW5lIGZsb3cg
d2l0aG91dCBzcGFjZXMKKyAgICAgICBvYmplY3QgPSBuZXcgKGFyZW5hKSBSZW5kZXJNYXRoSW5s
aW5lQ29udGFpbmVyKHRoaXMpOworICAgIH0KKyAgICBvYmplY3QtPnNldFN0eWxlKHN0eWxlKTsK
KyAgICByZXR1cm4gb2JqZWN0OworfQorICAgIAorICAgIAorfQorCisjZW5kaWYKKwpJbmRleDog
V2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqICBNYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50LmgKKyAqICBXZWJDb3JlCisgKgorICogIENvcHlyaWdodCAoQykgMjAwOSBBbGV4
IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAK
KyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisj
aWZuZGVmIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnRfaAorI2RlZmluZSBNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50X2gKKworI2lmIEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0
aE1MRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNYXRoTUxFbGVtZW50IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwor
ICAgIAorICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIAorICAgIHByb3RlY3RlZDoKKyAgICAgICAgTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCopOworICAgIAorICAgIH07CisgICAgCit9CisKKyNlbmRpZgorI2VuZGlmCkluZGV4
OiBXZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUx
IEBACisvKgorICogIE1hdGhNYXRoTUxFbGVtZW50LmNwcAorICogIFdlYkNvcmUKKyAqCisgKiAg
Q29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4KKyAq
CisgCisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShN
QVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJNYXRoTUxNYXRo
RWxlbWVudC5oIgorI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworTWF0aE1MTWF0aEVsZW1l
bnQ6Ok1hdGhNTE1hdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWF0aE1MTWF0aEVsZW1lbnQ+IE1hdGhN
TE1hdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBuZXcgTWF0aE1MTWF0aEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvTWF0
aE1MTWF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRo
RWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1l
bnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqICBNYXRoTWF0aE1MRWxl
bWVudC5oCisgKiAgV2ViQ29yZQorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxv
d3NraSAoYWxleEBtaWxvd3NraS5jb20pLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworI2lmbmRl
ZiBNYXRoTUxNYXRoRWxlbWVudF9oCisjZGVmaW5lIE1hdGhNTE1hdGhFbGVtZW50X2gKKworI2lm
IEVOQUJMRShNQVRITUwpCisjaW5jbHVkZSAiTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgTWF0aE1MTWF0aEVsZW1l
bnQgOiBwdWJsaWMgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCB7CisgICAgcHVibGljOgor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNYXRoTUxNYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CisgICAgICAgIAorICAgIHByb3Rl
Y3RlZDoKKyAgICAgICAgTWF0aE1MTWF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqKTsKKyAgICAgICAgCisgICAgfTsKKyAgICAKK30KKworI2VuZGlmCisj
ZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlckZlbmNlZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyRmVuY2VkLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvbWF0aG1sL1JlbmRlckZlbmNlZC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjE3IEBA
CisvKgorICogIFJlbmRlckZlbmNlZC5jcHAKKyAqICBXZWJDb3JlCisgKgorICogIENvcHlyaWdo
dCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuCisgKgorIAorIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQor
CisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJGZW5jZWQuaCIKKyNp
bmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCisjaW5jbHVk
ZSAiRm9udFNlbGVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5h
bWVzcGFjZSBNYXRoTUxOYW1lczsKKworUmVuZGVyRmVuY2VkOjpSZW5kZXJGZW5jZWQoTm9kZSog
ZmVuY2VkKSAKKyAgICA6IFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIoZmVuY2VkKSAKK3sKKyAg
ICBBdG9taWNTdHJpbmcgc2VwYXJhdG9ycyA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihmZW5jZWQp
LT5nZXRBdHRyaWJ1dGUoInNlcGFyYXRvcnMiKTsKKyAgICBWZWN0b3I8VUNoYXI+IGNoYXJhY3Rl
cnM7CisgICAgaWYgKCFzZXBhcmF0b3JzLmlzTnVsbCgpKSB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGk9MDsgaTxzZXBhcmF0b3JzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlm
ICghaXNTcGFjZU9yTmV3bGluZShzZXBhcmF0b3JzW2ldKSkgeworICAgICAgICAgICAgICAgIGNo
YXJhY3RlcnMuYXBwZW5kKHNlcGFyYXRvcnNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIG1fc2VwYXJhdG9ycyA9IHNlcGFyYXRvcnMubGVuZ3RoKCk9PTAgPyAwIDogU3Ry
aW5nSW1wbDo6Y3JlYXRlKGNoYXJhY3RlcnMuZGF0YSgpICwgY2hhcmFjdGVycy5zaXplKCkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoZSBzZXBhcmF0b3IgZGVmYXVsdHMgdG8gYSBzaW5n
bGUgY29tbWEKKyAgICAgICAgbV9zZXBhcmF0b3JzID0gU3RyaW5nSW1wbDo6Y3JlYXRlKCIsIik7
CisgICAgfQorICAgIAorfQorCit2b2lkIFJlbmRlckZlbmNlZDo6bWFrZUZlbmNlcygpCit7Cisg
ICAgLy8gYWRkIGZlbmNpbmcKKyAgICBFbGVtZW50KiBmZW5jZWQgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4obm9kZSgpKTsKKyAgICBBdG9taWNTdHJpbmcgb3BlblZhbHVlID0gZmVuY2VkLT5nZXRB
dHRyaWJ1dGUoIm9wZW4iKTsKKyAgICBBdG9taWNTdHJpbmcgY2xvc2VWYWx1ZSA9IGZlbmNlZC0+
Z2V0QXR0cmlidXRlKCJjbG9zZSIpOworICAgIAorICAgIExlbmd0aCBwYWQoc3RhdGljX2Nhc3Q8
aW50PihzdHlsZSgpLT5mb250U2l6ZSgpICogMC4xKSAsIEZpeGVkKTsKKyAgICAKKyAgICBSZW5k
ZXJJbmxpbmUqIG9wZW4gPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVu
dCgpKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG9wZW5TdHlsZSA9IFJlbmRlclN0eWxlOjpj
cmVhdGUoKTsKKyAgICBvcGVuU3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgIG9wZW5T
dHlsZS0+c2V0UGFkZGluZ1JpZ2h0KHBhZCk7CisgICAgb3BlblN0eWxlLT5zZXRWZXJ0aWNhbEFs
aWduKE1JRERMRSk7CisgICAgb3Blbi0+c2V0U3R5bGUob3BlblN0eWxlLnJlbGVhc2UoKSk7Cisg
ICAgUmVuZGVyVGV4dCogb3BlblRleHQgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHQo
ZG9jdW1lbnQoKSxvcGVuVmFsdWUuaXNOdWxsKCkgPyBTdHJpbmdJbXBsOjpjcmVhdGUoIigiKSA6
IG9wZW5WYWx1ZS5pbXBsKCkpOworICAgIG9wZW5UZXh0LT5zZXRTdHlsZShvcGVuLT5zdHlsZSgp
KTsKKyAgICBvcGVuLT5hZGRDaGlsZChvcGVuVGV4dCk7CisgICAgUmVuZGVyQmxvY2s6OmFkZENo
aWxkKG9wZW4pOworICAgIFJlbmRlcklubGluZSogY2xvc2UgPSBuZXcgKHJlbmRlckFyZW5hKCkp
IFJlbmRlcklubGluZShkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGNsb3Nl
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgY2xvc2VTdHlsZS0+aW5oZXJpdEZy
b20oc3R5bGUoKSk7CisgICAgY2xvc2VTdHlsZS0+c2V0UGFkZGluZ0xlZnQocGFkKTsKKyAgICBj
bG9zZVN0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKE1JRERMRSk7CisgICAgY2xvc2UtPnNldFN0eWxl
KGNsb3NlU3R5bGUucmVsZWFzZSgpKTsKKyAgICBSZW5kZXJUZXh0KiBjbG9zZVRleHQgPSBuZXcg
KHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHQoZG9jdW1lbnQoKSxjbG9zZVZhbHVlLmlzTnVsbCgp
ID8gU3RyaW5nSW1wbDo6Y3JlYXRlKCIpIikgOiBjbG9zZVZhbHVlLmltcGwoKSk7CisgICAgY2xv
c2VUZXh0LT5zZXRTdHlsZShjbG9zZS0+c3R5bGUoKSk7CisgICAgY2xvc2UtPmFkZENoaWxkKGNs
b3NlVGV4dCk7CisgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKGNsb3NlKTsKK30KKwordm9pZCBS
ZW5kZXJGZW5jZWQ6OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQpCit7CisgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBtYWtlIHRo
ZSBmZW5jZXMgaWYgdGhlIHJlbmRlciBvYmplY3QgaXMgZW1wdHkKKyAgICAgICAgbWFrZUZlbmNl
cygpOworICAgIH0KKyAgICAKKyAgICBpZiAobV9zZXBhcmF0b3JzLmdldCgpKSB7CisgICAgICAg
IHVuc2lnbmVkIGludCBjb3VudCA9IDA7CisgICAgICAgIE5vZGUqIHBvc2l0aW9uID0gY2hpbGQt
Pm5vZGUoKTsKKyAgICAgICAgd2hpbGUgKHBvc2l0aW9uKSB7CisgICAgICAgICAgICBpZiAocG9z
aXRpb24tPm5vZGVUeXBlKCk9PU5vZGU6OkVMRU1FTlRfTk9ERSkgeworICAgICAgICAgICAgICAg
IGNvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9u
LT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY291bnQ+MSkgewor
ICAgICAgICAgICAgVUNoYXIgc2VwYXJhdG9yOworICAgICAgICAgICAgaWYgKChjb3VudC0xKT49
bV9zZXBhcmF0b3JzLmdldCgpLT5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIHVzZSB0
aGUgbGFzdCBzZXBhcmF0b3Igc2luY2Ugd2UndmUgcnVuIG91dCBvZiBzcGVjaWZpZWQgc2VwYXJh
dG9ycworICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9ICgqbV9zZXBhcmF0b3JzLmdldCgpKVtt
X3NlcGFyYXRvcnMuZ2V0KCktPmxlbmd0aCgpIC0gMV07CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgY3VycmVudCBzZXBhcmF0b3IgY2hhcmFjdGVyIHNw
ZWNpZmllZCBieSB0aGUgY2hpbGQgY291bnQKKyAgICAgICAgICAgICAgICBzZXBhcmF0b3IgPSAo
Km1fc2VwYXJhdG9ycy5nZXQoKSlbY291bnQgLSAxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIFJlbmRlcklubGluZSogc2VwYXJhdG9ySW5saW5lID0gbmV3IChyZW5kZXJBcmVuYSgpKSBS
ZW5kZXJJbmxpbmUoZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IHNlcGFyYXRvclN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICAgICAgc2Vw
YXJhdG9yU3R5bGUtPmluaGVyaXRGcm9tKHN0eWxlKCkpOworICAgICAgICAgICAgTGVuZ3RoIHBh
ZChzdGF0aWNfY2FzdDxpbnQ+KHN0eWxlKCktPmZvbnRTaXplKCkgKiAwLjIpICwgRml4ZWQpOwor
ICAgICAgICAgICAgc2VwYXJhdG9yU3R5bGUtPnNldFBhZGRpbmdMZWZ0KHBhZCk7CisgICAgICAg
ICAgICBzZXBhcmF0b3JTdHlsZS0+c2V0UGFkZGluZ1JpZ2h0KHBhZCk7CisgICAgICAgICAgICBz
ZXBhcmF0b3JJbmxpbmUtPnNldFN0eWxlKHNlcGFyYXRvclN0eWxlLnJlbGVhc2UoKSk7CisgICAg
ICAgICAgICBSZW5kZXJUZXh0KiBzZXBhcmF0b3JUZXh0ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBS
ZW5kZXJUZXh0KGRvY3VtZW50KCkgLCBTdHJpbmdJbXBsOjpjcmVhdGUoJnNlcGFyYXRvciAsIDEp
KTsKKyAgICAgICAgICAgIHNlcGFyYXRvclRleHQtPnNldFN0eWxlKHNlcGFyYXRvcklubGluZS0+
c3R5bGUoKSk7CisgICAgICAgICAgICBzZXBhcmF0b3JJbmxpbmUtPmFkZENoaWxkKHNlcGFyYXRv
clRleHQpOworICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHNlcGFyYXRvcklubGlu
ZSAsIGJlZm9yZUNoaWxkID8gYmVmb3JlQ2hpbGQgOiBsYXN0Q2hpbGQoKSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgLy8gaWYgd2UgaGF2ZSBhIGJsb2NrLCB3ZSdsbCB3cmFwIGl0IGluIGFuIGlu
bGluZS1ibG9jaworICAgIGlmIChjaGlsZC0+aXNCbG9ja0Zsb3coKSkgeworCisgICAgICAgIC8v
IGJsb2NrIG9iamVjdHMgd3JhcHBlcgorCisgICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IG5l
dyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2soZG9jdW1lbnQoKSk7CisgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAg
IG5ld1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldERp
c3BsYXkoSU5MSU5FX0JMT0NLKTsKKyAgICAgICAgYmxvY2stPnNldFN0eWxlKG5ld1N0eWxlLnJl
bGVhc2UoKSk7CisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChibG9jayAsIGJlZm9yZUNo
aWxkID8gYmVmb3JlQ2hpbGQgOiBsYXN0Q2hpbGQoKSk7CisgICAgICAgIGJsb2NrLT5hZGRDaGls
ZChjaGlsZCk7ICAgIAorICAgIH0gZWxzZSB7CisKKyAgICAgICAgLy8gd2UgaGF2ZSBhbiBpbmxp
bmUgc28gd2UgY2FuIGp1c3QgYWRkIGl0CisKKyAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxk
KGNoaWxkICwgYmVmb3JlQ2hpbGQgPyBiZWZvcmVDaGlsZCA6IGxhc3RDaGlsZCgpKTsKKyAgICB9
Cit9CisKK3ZvaWQgUmVuZGVyRmVuY2VkOjpsYXlvdXQoKQoreworICAgIGlmIChpc0VtcHR5KCkp
IHsKKyAgICAgICAgLy8gbWFrZSB0aGUgZmVuY2VzIGlmIHRoZSBmZW5jZWQgZWxlbWVudCBpcyBl
bXB0eQorICAgICAgICBtYWtlRmVuY2VzKCk7CisgICAgfQorICAgIFJlbmRlckJsb2NrOjpsYXlv
dXQoKTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogb3BlbiA9IChSZW5kZXJCb3hNb2RlbE9i
amVjdCAqKWZpcnN0Q2hpbGQoKTsKKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY2xvc2UgPSAo
UmVuZGVyQm94TW9kZWxPYmplY3QgKilsYXN0Q2hpbGQoKTsKKyAgICBpbnQgbWF4SGVpZ2h0ID0g
MDsKKyAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBvcGVuLT5uZXh0U2libGluZygpOworICAg
IHdoaWxlIChjdXJyZW50IT1jbG9zZSkgeworICAgICAgICBpZiAoY3VycmVudC0+aXNCb3hNb2Rl
bE9iamVjdCgpKSB7CisKKyAgICAgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KGN1cnJlbnQpOworCisgICAgICAgICAgICBpZiAoYm94LT5v
ZmZzZXRIZWlnaHQoKT5tYXhIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAvLyB0aGlzIGJveCBo
YXMgYSBsYXJnZXIgaGVpZ2h0CisgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gYm94LT5vZmZz
ZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjdXJyZW50ID0g
Y3VycmVudC0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisgICAgaWYgKG1heEhlaWdodD4wKSB7Cisg
ICAgICAgIGJvb2wgZG9MYXlvdXRBZ2FpbiA9IGZhbHNlOworICAgICAgICBpbnQgZmVuY2VIZWln
aHQgPSBzdGF0aWNfY2FzdDxpbnQ+KG1heEhlaWdodCAqIDEuMTUpOworICAgICAgICBpZiAob3Bl
bi0+b2Zmc2V0SGVpZ2h0KCk8ZmVuY2VIZWlnaHQpIHsKKyAgICAgICAgICAgIGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiBvbGREZXNjID0gb3Blbi0+c3R5bGUoKS0+Zm9udCgpLmZvbnREZXNjcmlwdGlv
bigpOworICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uKiBkZXNjID0gbmV3IEZvbnREZXNjcmlw
dGlvbigpOworICAgICAgICAgICAgZGVzYy0+c2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7CisgICAg
ICAgICAgICBkZXNjLT5zZXRGYW1pbHkob2xkRGVzYy5mYW1pbHkoKSk7CisgICAgICAgICAgICBk
ZXNjLT5zZXRXZWlnaHQob2xkRGVzYy53ZWlnaHQoKSk7CisgICAgICAgICAgICBkZXNjLT5zZXRT
bWFsbENhcHMob2xkRGVzYy5zbWFsbENhcHMoKSk7CisgICAgICAgICAgICBkZXNjLT5zZXRJdGFs
aWMob2xkRGVzYy5pdGFsaWMoKSk7CisgICAgICAgICAgICBkZXNjLT5zZXRTcGVjaWZpZWRTaXpl
KGZlbmNlSGVpZ2h0KTsKKyAgICAgICAgICAgIGRlc2MtPnNldENvbXB1dGVkU2l6ZShmZW5jZUhl
aWdodCk7CisgICAgICAgICAgICBvcGVuLT5zdHlsZSgpLT5zZXRGb250RGVzY3JpcHRpb24oKmRl
c2MpOworICAgICAgICAgICAgb3Blbi0+c3R5bGUoKS0+Zm9udCgpLnVwZGF0ZShvcGVuLT5zdHls
ZSgpLT5mb250KCkuZm9udFNlbGVjdG9yKCkpOworICAgICAgICAgICAgb3Blbi0+bWFya0NvbnRh
aW5pbmdCbG9ja3NGb3JMYXlvdXQoKTsKKyAgICAgICAgICAgIGRvTGF5b3V0QWdhaW4gPSB0cnVl
OworICAgICAgICB9CisgICAgICAgIGlmIChjbG9zZS0+b2Zmc2V0SGVpZ2h0KCk8ZmVuY2VIZWln
aHQpIHsKKyAgICAgICAgICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiBvbGREZXNjID0gY2xvc2Ut
PnN0eWxlKCktPmZvbnQoKS5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgICAgIEZvbnREZXNj
cmlwdGlvbiogZGVzYyA9IG5ldyBGb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgICAgIGRlc2Mt
PnNldElzQWJzb2x1dGVTaXplKHRydWUpOworICAgICAgICAgICAgZGVzYy0+c2V0RmFtaWx5KG9s
ZERlc2MuZmFtaWx5KCkpOworICAgICAgICAgICAgZGVzYy0+c2V0V2VpZ2h0KG9sZERlc2Mud2Vp
Z2h0KCkpOworICAgICAgICAgICAgZGVzYy0+c2V0U21hbGxDYXBzKG9sZERlc2Muc21hbGxDYXBz
KCkpOworICAgICAgICAgICAgZGVzYy0+c2V0SXRhbGljKG9sZERlc2MuaXRhbGljKCkpOworICAg
ICAgICAgICAgZGVzYy0+c2V0U3BlY2lmaWVkU2l6ZShmZW5jZUhlaWdodCk7CisgICAgICAgICAg
ICBkZXNjLT5zZXRDb21wdXRlZFNpemUoZmVuY2VIZWlnaHQpOworICAgICAgICAgICAgY2xvc2Ut
PnN0eWxlKCktPnNldEZvbnREZXNjcmlwdGlvbigqZGVzYyk7CisgICAgICAgICAgICBjbG9zZS0+
c3R5bGUoKS0+Zm9udCgpLnVwZGF0ZShvcGVuLT5zdHlsZSgpLT5mb250KCkuZm9udFNlbGVjdG9y
KCkpOworICAgICAgICAgICAgZG9MYXlvdXRBZ2FpbiA9IHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGRvTGF5b3V0QWdhaW4pIHsKKyAgICAgICAgICAgIHN0eWxlKCktPnNldEhlaWdodChM
ZW5ndGgoZmVuY2VIZWlnaHQgLCBGaXhlZCkpOworICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRB
bmRQcmVmV2lkdGhzUmVjYWxjKCk7CisgICAgICAgICAgICBtYXJrQ29udGFpbmluZ0Jsb2Nrc0Zv
ckxheW91dCgpOworICAgICAgICAgICAgb3Blbi0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhz
UmVjYWxjKCk7CisgICAgICAgICAgICBvcGVuLT5maXJzdENoaWxkKCktPnNldE5lZWRzTGF5b3V0
QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgICAgICAgICAgY2xvc2UtPmZpcnN0Q2hpbGQoKS0+
c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK30gICAgCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyRmVuY2VkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyRmVuY2VkLmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJGZW5jZWQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqICBSZW5kZXJGZW5jZWQuaAorICogIFdlYkNvcmUKKyAqCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4KKyAqCisg
CisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorIAorICovCisKKyNpZm5kZWYgUmVuZGVyRmVuY2VkX2gKKyNkZWZpbmUgUmVuZGVy
RmVuY2VkX2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoSW5s
aW5lQ29udGFpbmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBS
ZW5kZXJGZW5jZWQgOiBwdWJsaWMgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lciB7CisgICAgcHVi
bGljOgorICAgICAgICBSZW5kZXJGZW5jZWQoTm9kZSAqZnJhY3Rpb24pOworICAgICAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCA9IDApOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpOworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgbWFrZUZlbmNlcygpOworICAgICAgICBS
ZWZQdHI8U3RyaW5nSW1wbD4gbV9zZXBhcmF0b3JzOworICAgIH07CisgICAgCit9CisKKyNlbmRp
ZgorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlckZyYWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJGcmFjdGlvbi5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJGcmFjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTE2IEBACisvKgorICogIFJlbmRlckZyYWN0aW9uLmNwcAorICogIFdlYkNvcmUKKyAq
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29t
KS4KKyAqCisgCisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRl
ckZyYWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFj
ZSBNYXRoTUxOYW1lczsKKworUmVuZGVyRnJhY3Rpb246OlJlbmRlckZyYWN0aW9uKE5vZGUgKmZy
YWN0aW9uKSAKKyAgICA6IFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIoZnJhY3Rpb24pIAorewor
ICAgIHNldENoaWxkcmVuSW5saW5lKGZhbHNlKTsKK30KKwordm9pZCBSZW5kZXJGcmFjdGlvbjo6
YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkK
K3sKKyAgICAvLyBGSVhNRTogbXVzdCBoYW5kbGUgYmV2ZWxsZWQ9dHJ1ZQorICAgIAorICAgIFJl
bmRlckJsb2NrKiByb3cgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrKGRvY3VtZW50
KCkpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcm93U3R5bGUgPSBtYWtlQmxvY2tTdHlsZSgp
OworCisgICAgcm93U3R5bGUtPnNldFRleHRBbGlnbihDRU5URVIpOworICAgIExlbmd0aCBwYWQo
c3RhdGljX2Nhc3Q8aW50Pihyb3dTdHlsZS0+Zm9udFNpemUoKSAqIDAuMiksRml4ZWQpOworICAg
IHJvd1N0eWxlLT5zZXRQYWRkaW5nTGVmdChwYWQpOworICAgIHJvd1N0eWxlLT5zZXRQYWRkaW5n
UmlnaHQocGFkKTsKKyAgICAKKyAgICAvLyBhZGQgYSBib3JkZXIgdG9wIGlmIHRoaXMgaXMgdGhl
IGRlbm9taW5hdG9yCisgICAgU3RyaW5nIGF0dE5hbWU7CisgICAgaWYgKCFpc0VtcHR5KCkpIHsK
KworICAgICAgICAvLyBkZW5vbWluYXRvciwgc28gYWRkIGEgYm9yZGVyCisgICAgICAgIHJvd1N0
eWxlLT5zZXRCb3JkZXJUb3BXaWR0aCgxKTsKKyAgICAgICAgcm93U3R5bGUtPnNldEJvcmRlclRv
cFN0eWxlKFNPTElEKTsKKyAgICAgICAgcm93U3R5bGUtPnNldEJvcmRlclRvcENvbG9yKENvbG9y
KDAgLCAwICwgMCkpOworICAgICAgICByb3dTdHlsZS0+c2V0UGFkZGluZ1RvcChMZW5ndGgoMyAs
IEZpeGVkKSk7CisgICAgICAgIGF0dE5hbWUgPSAiZGVub21hbGlnbiI7CisgICAgfSBlbHNlIHsK
KworICAgICAgICAvLyBudW1lcmF0b3IsIG5vIGJvcmRlcgorCisgICAgICAgIGF0dE5hbWUgPSAi
bnVtYWxpZ24iOworICAgIH0KKworICAgIC8vIHdlIGFsd2F5cyBoYXZlIGFuIGVsZW1lbnQgbm9k
ZQorICAgIEVsZW1lbnQqIGZyYWN0aW9uID0gc3RhdGljX2Nhc3Q8RWxlbWVudCAqPihub2RlKCkp
OworCisgICAgLy8gYWxpZ24gdGhlIGNvbnRlbnRzCisgICAgU3RyaW5nIGFsaWduID0gZnJhY3Rp
b24tPmdldEF0dHJpYnV0ZShhdHROYW1lKTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWxp
Z24gLCAibGVmdCIpKSB7CisKKyAgICAgICAgLy8gbGVmdCB0ZXh0IGFsaWduCisgICAgICAgIHJv
d1N0eWxlLT5zZXRUZXh0QWxpZ24oTEVGVCk7CisKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFsaWduICwgInJpZ2h0IikpIHsKKworICAgICAgICAvLyByaWdodCB0ZXh0IGFsaWdu
CisKKyAgICAgICAgcm93U3R5bGUtPnNldFRleHRBbGlnbihSSUdIVCk7CisgICAgfQorICAgIFN0
cmluZyB0aGlja25lc3MgPSBmcmFjdGlvbi0+Z2V0QXR0cmlidXRlKCJsaW5ldGhpY2tuZXNzIik7
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHRoaWNrbmVzcyAsICJ0aGluIikpIHsKKworICAg
ICAgICAvLyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgYSBjb25zdGFudCBmcm9tIHNvbWV3aGVyZT8K
KyAgICAgICAgcm93U3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKDEpOworCisgICAgfSBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh0aGlja25lc3MgLCAibWVkaXVtIikpIHsKKworICAgICAgICAv
LyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgYSBjb25zdGFudCBmcm9tIHNvbWV3aGVyZT8KKyAgICAg
ICAgcm93U3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKDMpOworCisgICAgfSBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZSh0aGlja25lc3MgLCAidGhpY2siKSkgeworCisgICAgICAgIC8vIEZJWE1F
OiBzaG91bGQgdGhpcyBiZSBhIGNvbnN0YW50IGZyb20gc29tZXdoZXJlPworICAgICAgICByb3dT
dHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgoNSk7CisKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBG
SVhNRTogcGFyc2UgdW5pdHMKKyAgICB9CisgICAgcm93LT5zZXRTdHlsZShyb3dTdHlsZS5yZWxl
YXNlKCkpOworICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3cgLCBiZWZvcmVDaGlsZCk7Cisg
ICAgcm93LT5hZGRDaGlsZChjaGlsZCk7ICAgIAorfQorICAgIAorfQorCisKKyNlbmRpZgpJbmRl
eDogV2ViQ29yZS9tYXRobWwvUmVuZGVyRnJhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L21hdGhtbC9SZW5kZXJGcmFjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYXRobWwv
UmVuZGVyRnJhY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqICBS
ZW5kZXJGcmFjdGlvbi5oCisgKiAgV2ViQ29yZQorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkg
QWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLgorICoKKyAKKyBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8K
KworI2lmbmRlZiBSZW5kZXJGYWN0aW9uX2gKKyNkZWZpbmUgUmVuZGVyRmFjdGlvbl9oCisKKyNp
ZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBSZW5kZXJGcmFjdGlvbiA6IHB1
YmxpYyBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJl
bmRlckZyYWN0aW9uKE5vZGUgKmZyYWN0aW9uKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsK
KyAgICB9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1Jl
bmRlck1hdGhJbmxpbmVDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1s
L1JlbmRlck1hdGhJbmxpbmVDb250YWluZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9t
YXRobWwvUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOTUgQEAKKy8qCisgKiAgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5jcHAKKyAqICBXZWJD
b3JlCisgKgorICogIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93
c2tpLmNvbSkuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVj
dAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNpbmNsdWRl
ICJSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyLmgiCisjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgi
CisjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgorI2luY2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CisK
K1JlbmRlck1hdGhJbmxpbmVDb250YWluZXI6OlJlbmRlck1hdGhJbmxpbmVDb250YWluZXIoTm9k
ZSAqZmVuY2VkKSAKKyAgICA6IFJlbmRlckJsb2NrKGZlbmNlZCkgCit7Cit9CisKK3ZvaWQgUmVu
ZGVyTWF0aElubGluZUNvbnRhaW5lcjo6c2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
c3R5bGUpCit7CisgICAgLy8gTWFrZSBzdXJlIHdlIGFsd2F5cyBoYXZlIGlubGluZS1ibG9jayBh
cyBvdXIgc3R5bGUKKyAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSE9SU5MSU5FX0JMT0NLKSB7Cisg
ICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRl
KCk7CisgICAgICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZS5nZXQoKSk7CisgICAgICAg
IG5ld1N0eWxlLT5zZXREaXNwbGF5KElOTElORV9CTE9DSyk7CisgICAgICAgIG5ld1N0eWxlLT5z
ZXRNYXJnaW5Ub3Aoc3R5bGUtPm1hcmdpblRvcCgpKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldE1h
cmdpbkJvdHRvbShzdHlsZS0+bWFyZ2luQm90dG9tKCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0
TWFyZ2luTGVmdChzdHlsZS0+bWFyZ2luTGVmdCgpKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldE1h
cmdpblJpZ2h0KHN0eWxlLT5tYXJnaW5SaWdodCgpKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldFBh
ZGRpbmdUb3Aoc3R5bGUtPnBhZGRpbmdUb3AoKSk7CisgICAgICAgIG5ld1N0eWxlLT5zZXRQYWRk
aW5nQm90dG9tKHN0eWxlLT5wYWRkaW5nQm90dG9tKCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0
UGFkZGluZ0xlZnQoc3R5bGUtPnBhZGRpbmdMZWZ0KCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0
UGFkZGluZ1JpZ2h0KHN0eWxlLT5wYWRkaW5nUmlnaHQoKSk7CisgICAgICAgIG5ld1N0eWxlLT5z
ZXRWZXJ0aWNhbEFsaWduKHN0eWxlLT52ZXJ0aWNhbEFsaWduKCkpOworICAgICAgICBSZW5kZXJC
bG9jazo6c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsgICAgCisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gdGhlIHN0eWxlIGlzIE9LCisgICAgICAgIFJlbmRlckJsb2NrOjpzZXRTdHlsZShz
dHlsZSk7CisgICAgfQorfQorCitib29sIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXI6OmlzQ2hp
bGRBbGxvd2VkKFJlbmRlck9iamVjdCAqY2hpbGQsIFJlbmRlclN0eWxlICopIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNoaWxkLT5ub2RlKCkgJiYgY2hpbGQtPm5vZGUoKS0+bm9kZVR5cGUoKT09Tm9k
ZTo6RUxFTUVOVF9OT0RFID8gdHJ1ZSA6IGZhbHNlOworfQorCitSZWZQdHI8UmVuZGVyU3R5bGU+
IFJlbmRlck1hdGhJbmxpbmVDb250YWluZXI6Om1ha2VCbG9ja1N0eWxlKCkKK3sKKyAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIG5l
d1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICBuZXdTdHlsZS0+c2V0RGlzcGxheShC
TE9DSyk7CisgICAgCisgICAgbmV3U3R5bGUtPnNldFBhZGRpbmdUb3AoTGVuZ3RoKDAgLCBGaXhl
ZCkpOworICAgIG5ld1N0eWxlLT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aCgwICwgRml4ZWQpKTsK
KyAgICBuZXdTdHlsZS0+c2V0UGFkZGluZ0xlZnQoTGVuZ3RoKDAgLCBGaXhlZCkpOworICAgIG5l
d1N0eWxlLT5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKDAgLCBGaXhlZCkpOworICAgIG5ld1N0eWxl
LT5zZXRNYXJnaW5Ub3AoTGVuZ3RoKDAgLCBGaXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRNYXJn
aW5Cb3R0b20oTGVuZ3RoKDAgLCBGaXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5MZWZ0
KExlbmd0aCgwICwgRml4ZWQpKTsKKyAgICBuZXdTdHlsZS0+c2V0TWFyZ2luUmlnaHQoTGVuZ3Ro
KDAgLCBGaXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRMaW5lSGVpZ2h0KExlbmd0aChuZXdTdHls
ZS0+Zm9udFNpemUoKSAsIEZpeGVkKSk7CisKKyAgICByZXR1cm4gbmV3U3R5bGU7Cit9CisKK30g
ICAgCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aElubGluZUNvbnRh
aW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhJbmxpbmVDb250
YWluZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhJbmxpbmVD
b250YWluZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqICBSZW5kZXJN
YXRoSW5saW5lQ29udGFpbmVyLmgKKyAqICBXZWJDb3JlCisgKgorICogIENvcHlyaWdodCAoQykg
MjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuCisgKgorIAorIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAK
KyAqLworCisjaWZuZGVmIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXJfaAorI2RlZmluZSBSZW5k
ZXJNYXRoSW5saW5lQ29udGFpbmVyX2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3Mg
UmVuZGVyTWF0aElubGluZUNvbnRhaW5lciA6IHB1YmxpYyBSZW5kZXJCbG9jayB7CisgICAgcHVi
bGljOgorICAgICAgICBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lcik7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7
ICAgIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoUmVuZGVyT2JqZWN0Kiwg
UmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgUmVm
UHRyPFJlbmRlclN0eWxlPiBtYWtlQmxvY2tTdHlsZSgpOworICAgIH07CisgICAgCit9CisKKyNl
bmRpZgorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhSb290LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoUm9vdC5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoUm9vdC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTE2IEBACisvKgorICogIFJlbmRlck1hdGhSb290LmNwcAorICogIFdlYkNvcmUK
KyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2ku
Y29tKS4KKyAqCisgCisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0Cisg
CisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAK
KyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJl
bmRlck1hdGhSb290LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKKworY29uc3Qg
aW50IHJhZGljYWxCYXNlUGFkID0gMzsKKworUmVuZGVyTWF0aFJvb3Q6OlJlbmRlck1hdGhSb290
KE5vZGUgKmV4cHJlc3Npb24pIAorOiBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyKGV4cHJlc3Np
b24pIAoreworfQorCit2b2lkIFJlbmRlck1hdGhSb290OjphZGRDaGlsZChSZW5kZXJPYmplY3Qq
IGNoaWxkLCBSZW5kZXJPYmplY3QqICkKK3sKKyAgICBpZiAoaXNFbXB0eSgpKSB7CisgICAgICAg
IC8vIEFkZCBhIGJsb2NrIGZvciB0aGUgaW5kZXgKKyAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2Nr
ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKKyAgICAgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiBpbmRleFN0eWxlID0gbWFrZUJsb2NrU3R5bGUoKTsKKyAgICAg
ICAgaW5kZXhTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOworICAgICAgICBpbmRleFN0
eWxlLT5zZXRWZXJ0aWNhbEFsaWduKFRPUCk7CisgICAgICAgIGJsb2NrLT5zZXRTdHlsZShpbmRl
eFN0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChibG9jayk7
CisgICAgICAgIAorICAgICAgICAvLyB0aGlzIGlzIHRoZSBiYXNlLCBzbyB3cmFwIGl0IHNvIHdl
IGNhbiBwYWQgaXQKKyAgICAgICAgYmxvY2sgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJs
b2NrKGRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJhc2VTdHlsZSA9
IG1ha2VCbG9ja1N0eWxlKCk7CisgICAgICAgIGJhc2VTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVf
QkxPQ0spOworICAgICAgICBiYXNlU3R5bGUtPnNldFBhZGRpbmdMZWZ0KExlbmd0aCgwLjUgKiAw
Ljc1ICwgUGVyY2VudCkpOworICAgICAgICBibG9jay0+c2V0U3R5bGUoYmFzZVN0eWxlLnJlbGVh
c2UoKSk7CisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChibG9jayk7CisgICAgICAgIGJs
b2NrLT5hZGRDaGlsZChjaGlsZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gYWx3YXlzIGFk
ZCB0byB0aGUgaW5kZXgKKyAgICAgICAgZmlyc3RDaGlsZCgpLT5hZGRDaGlsZChjaGlsZCk7Cisg
ICAgfQorfQordm9pZCBSZW5kZXJNYXRoUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBpbnQg
dHgsIGludCB0eSkKK3sKKyAgICBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyOjpwYWludChpbmZv
ICwgdHggLCB0eSk7CisgICAgCisgICAgaW50IG1heEhlaWdodCA9IHRvUmVuZGVyQm94TW9kZWxP
YmplY3QobGFzdENoaWxkKCkpLT5vZmZzZXRIZWlnaHQoKTsKKyAgICBpZiAobWF4SGVpZ2h0PT0w
KSB7CisgICAgICAgIC8vIGRlZmF1bHQgdG8gdGhlIGZvbnQgc2l6ZSBpbiBwaXhlbHMgaWYgd2Un
cmUgZW1wdHkKKyAgICAgICAgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+Zm9udFNpemUoKTsKKyAgICB9
CisgICAgaW50IHdpZHRoID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChsYXN0Q2hpbGQoKSktPm9m
ZnNldFdpZHRoKCk7CisgICAgCisgICAgaW50IGluZGV4V2lkdGggPSAwOworICAgIFJlbmRlck9i
amVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAoY3VycmVudCE9bGFzdENo
aWxkKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzQm94TW9kZWxPYmplY3QoKSkgeworICAg
ICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94TW9kZWxPYmpl
Y3QoY3VycmVudCk7CisgICAgICAgICAgICBpbmRleFdpZHRoICs9IGJveC0+b2Zmc2V0V2lkdGgo
KTsKKyAgICAgICAgfQorICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsK
KyAgICB9CisgICAgCisgICAgaW50IHN0YXJ0ID0gdHggKyBpbmRleFdpZHRoK3JhZGljYWxCYXNl
UGFkOworICAgIEludFBvaW50IHRvcFN0YXJ0KHN0YXJ0ICwgdHkpOworICAgIEludFBvaW50IGJv
dHRvbUxlZnQoc3RhdGljX2Nhc3Q8aW50PihzdGFydCAtIDAuNSAqIDAuNzUgKiBzdHlsZSgpLT5m
b250U2l6ZSgpKSAsIHR5ICsgbWF4SGVpZ2h0ICsgcmFkaWNhbEJhc2VQYWQpOworICAgIEludFBv
aW50IHRvcExlZnQoc3RhdGljX2Nhc3Q8aW50PihzdGFydCAtIDAuOCAqIDAuNzUgKiBzdHlsZSgp
LT5mb250U2l6ZSgpKSAsIHN0YXRpY19jYXN0PGludD4odHkgKyBtYXhIZWlnaHQgLyAxLjYpKTsK
KyAgICBJbnRQb2ludCBsZWZ0RW5kKHN0YXRpY19jYXN0PGludD4oc3RhcnQgLSAwLjc1ICogc3R5
bGUoKS0+Zm9udFNpemUoKSkgLCBzdGF0aWNfY2FzdDxpbnQ+KHR5ICsgbWF4SGVpZ2h0IC8gMS42
KSk7CisgICAgCisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7Cisg
ICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5j
b250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHlsZSgpLT5jb2xvcigpKTsKKyAgICAKKyAgICAvLyBk
cmF3IHRvcAorICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUodG9wU3RhcnQgLCBJbnRQb2ludCh0
b3BTdGFydC54KCkgKyB3aWR0aCAsIHR5KSk7CisgICAgLy8gZHJhdyBmcm9tIHRvcCBsZWZ0IGNv
cm5lciB0byBib3R0b20gcG9pbnQgb2YgcmFkaWNhbAorICAgIGluZm8uY29udGV4dC0+ZHJhd0xp
bmUodG9wU3RhcnQgLCBib3R0b21MZWZ0KTsKKyAgICAvLyBkcmF3IGZyb20gYm90dG9tIHBvaW50
IHRvIHRvcCBvZiBsZWZ0IHBhcnQgb2YgcmFkaWNhbCBiYXNlICJwb2NrZXQiCisgICAgaW5mby5j
b250ZXh0LT5kcmF3TGluZShib3R0b21MZWZ0ICwgdG9wTGVmdCk7CisgICAgLy8gZHJhdyB0byBl
bmQKKyAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKHRvcExlZnQgLCBsZWZ0RW5kKTsKKyAgICAK
K30KKworfQorCisjZW5kaWYKKworCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoUm9v
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhSb290LmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoUm9vdC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ3IEBACisvKgorICogIFJlbmRlck1hdGhSb290LmgKKyAqICBXZWJDb3JlCisg
KgorICogIENvcHlyaWdodCAoQykgMjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNv
bSkuCisgKgorIAorIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdAorIAor
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAKKyAqLworCisjaWZuZGVmIFJlbmRlck1hdGhSb290X2gKKyNk
ZWZpbmUgUmVuZGVyTWF0aFJvb3RfaAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUg
IlJlbmRlck1hdGhJbmxpbmVDb250YWluZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAg
IAorICAgIGNsYXNzIFJlbmRlck1hdGhSb290IDogcHVibGljIFJlbmRlck1hdGhJbmxpbmVDb250
YWluZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVuZGVyTWF0aFJvb3QoTm9kZSogZnJhY3Rp
b24pOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwg
UmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOworICAgIH07CisgICAgCit9CisKKyNlbmRp
ZgorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhTdWJTdXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhTdWJTdXAuY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aFN1YlN1cC5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogIFJlbmRlck1hdGhTdWJTdXAuY3BwCisgKiAgV2Vi
Q29yZQorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxv
d3NraS5jb20pLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2pl
Y3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCisjaW5jbHVk
ZSAiUmVuZGVyTWF0aFN1YlN1cC5oIgorI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgorI2luY2x1
ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJS
ZW5kZXJUYWJsZS5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCisjaW5jbHVkZSAiUmVu
ZGVyVGFibGVDZWxsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVz
cGFjZSBNYXRoTUxOYW1lczsKKworUmVuZGVyTWF0aFN1YlN1cDo6UmVuZGVyTWF0aFN1YlN1cChO
b2RlICpzdWJzdXApIAorICAgIDogUmVuZGVyTWF0aElubGluZUNvbnRhaW5lcihzdWJzdXApCisg
ICAgLCBtX3NjcmlwdHMoMCkKK3sKK30KKwordm9pZCBSZW5kZXJNYXRoU3ViU3VwOjphZGRDaGls
ZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQoreworICAg
IGlmIChtX3NjcmlwdHMpIHsKKyAgICAgICAgLy8gd2UgaGF2ZSBzdWJzY3JpcHRzLCBzbyBhZGQg
YXMgYSBzdWJzY3JpcHQKKyAgICAgICAgCisgICAgICAgIGJvb2wgZmlyc3RSb3cgPSAhbV9zY3Jp
cHRzLT5oYXNTZWN0aW9ucygpOworICAgICAgICAKKyAgICAgICAgLy8gY3JlYXRlIHRoZSB0YWJs
ZSByb3cKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByb3cgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJl
bmRlclRhYmxlUm93KGRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJv
d1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgICAgICByb3dTdHlsZS0+aW5oZXJp
dEZyb20oc3R5bGUoKSk7CisgICAgICAgIHJvd1N0eWxlLT5zZXREaXNwbGF5KFRBQkxFX1JPVyk7
CisgICAgICAgIHJvd1N0eWxlLT5zZXRQYWRkaW5nVG9wKExlbmd0aCgwICwgRml4ZWQpKTsKKyAg
ICAgICAgcm93U3R5bGUtPnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKDAgLCBGaXhlZCkpOworICAg
ICAgICByb3ctPnNldFN0eWxlKHJvd1N0eWxlLnJlbGVhc2UoKSk7CisgICAgICAgIG1fc2NyaXB0
cy0+YWRkQ2hpbGQocm93KTsKKyAgICAgICAgCisgICAgICAgIC8vIGNyZWF0ZSB0aGUgdGFibGUg
Y2VsbAorICAgICAgICBSZW5kZXJPYmplY3QqIGNlbGwgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJl
bmRlclRhYmxlQ2VsbChkb2N1bWVudCgpKTsKKyAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBj
ZWxsU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAgIGNlbGxTdHlsZS0+aW5o
ZXJpdEZyb20ocm93LT5zdHlsZSgpKTsKKyAgICAgICAgY2VsbFN0eWxlLT5zZXRMaW5lSGVpZ2h0
KExlbmd0aCgxLjAgLCBQZXJjZW50KSk7CisgICAgICAgIGNlbGxTdHlsZS0+c2V0RGlzcGxheShU
QUJMRV9DRUxMKTsKKyAgICAgICAgY2VsbFN0eWxlLT5zZXRNYXJnaW5Ub3AoTGVuZ3RoKDAgLCBG
aXhlZCkpOworICAgICAgICBjZWxsU3R5bGUtPnNldFBhZGRpbmdUb3AoTGVuZ3RoKGZpcnN0Um93
ID8gMCA6IDUgLCBGaXhlZCkpOworICAgICAgICBjZWxsU3R5bGUtPnNldE1hcmdpbkJvdHRvbShM
ZW5ndGgoMCAsIEZpeGVkKSk7CisgICAgICAgIGNlbGxTdHlsZS0+c2V0UGFkZGluZ0JvdHRvbShM
ZW5ndGgoMCAsIEZpeGVkKSk7CisgICAgICAgIGNlbGwtPnNldFN0eWxlKGNlbGxTdHlsZS5yZWxl
YXNlKCkpOworICAgICAgICByb3ctPmFkZENoaWxkKGNlbGwpOworICAgICAgICBjZWxsLT5hZGRD
aGlsZChjaGlsZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBhIGJh
c2UgeWV0CisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChjaGlsZCwgYmVmb3JlQ2hpbGQp
OworCisgICAgICAgIC8vIGNyZWF0ZSB0aGUgdGFibGUgCisgICAgICAgIG1fc2NyaXB0cyA9IG5l
dyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyVGFibGUoZG9jdW1lbnQoKSk7CisgICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgICAg
IG5ld1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldERp
c3BsYXkoSU5MSU5FX1RBQkxFKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldFZlcnRpY2FsQWxpZ24o
TUlERExFKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldFRleHRBbGlnbihMRUZUKTsKKyAgICAgICAg
bmV3U3R5bGUtPnNldE1hcmdpblRvcChMZW5ndGgoMCAsIEZpeGVkKSk7CisgICAgICAgIG5ld1N0
eWxlLT5zZXRQYWRkaW5nVG9wKExlbmd0aCgwICwgRml4ZWQpKTsKKyAgICAgICAgbmV3U3R5bGUt
PnNldE1hcmdpbkxlZnQoTGVuZ3RoKDEgLCBGaXhlZCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0
TWFyZ2luQm90dG9tKExlbmd0aCgwICwgRml4ZWQpKTsKKyAgICAgICAgbmV3U3R5bGUtPnNldFBh
ZGRpbmdCb3R0b20oTGVuZ3RoKDAgLCBGaXhlZCkpOworICAgICAgICBuZXdTdHlsZS0+c2V0SG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcoMCk7CisgICAgICAgIG1fc2NyaXB0cy0+c2V0U3R5bGUobmV3
U3R5bGUucmVsZWFzZSgpKTsKKyAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKG1fc2NyaXB0
cywgYmVmb3JlQ2hpbGQpOworICAgIH0KK30KKyAgICAgICAgCisgICAgCit9ICAgIAorCisjZW5k
aWYKSW5kZXg6IFdlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhTdWJTdXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoU3ViU3VwLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hdGhtbC9SZW5kZXJNYXRoU3ViU3VwLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiAgUmVuZGVyTWF0aFN1YlN1cC5oCisgKiAgV2ViQ29yZQorICoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxvd3NraSAoYWxleEBtaWxvd3NraS5jb20pLgorICoKKyAK
KyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgCisgKi8KKworCisjaWZuZGVmIFJlbmRlck1hdGhTdWJTdXBfaAorI2RlZmluZSBS
ZW5kZXJNYXRoU3ViU3VwX2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5k
ZXJNYXRoSW5saW5lQ29udGFpbmVyLmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIFJlbmRlck1hdGhTdWJTdXAgOiBwdWJs
aWMgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lciB7CisgICAgcHVibGljOgorICAgICAgICBSZW5k
ZXJNYXRoU3ViU3VwKE5vZGUqIGZyYWN0aW9uKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsK
KyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFJlbmRlclRhYmxlKiBtX3NjcmlwdHM7CisgICAgfTsK
KyAgICAKK30KKworI2VuZGlmCisKKyNlbmRpZgorCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5k
ZXJNYXRoVW5kZXJPdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJN
YXRoVW5kZXJPdmVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlck1h
dGhVbmRlck92ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqICBS
ZW5kZXJNYXRoVW5kZXJPdmVyLmNwcAorICogIFdlYkNvcmUKKyAqCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dza2kuY29tKS4KKyAqCisgCisgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0CisgCisgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNp
bmNsdWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlck1hdGhVbmRlck92ZXIuaCIK
KyNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAor
dXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOworCitSZW5kZXJNYXRoVW5kZXJPdmVyOjpSZW5k
ZXJNYXRoVW5kZXJPdmVyKE5vZGUgKmV4cHJlc3Npb24pIAorICAgIDogUmVuZGVyTWF0aElubGlu
ZUNvbnRhaW5lcihleHByZXNzaW9uKSAKK3sKKyAgICBtX2tpbmQgPSBVbmRlcjsKKyAgICBpZiAo
ZXhwcmVzc2lvbi0+bG9jYWxOYW1lKCk9PSJtb3ZlciIpIHsKKyAgICAgICAgbV9raW5kID0gT3Zl
cjsKKyAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb24tPmxvY2FsTmFtZSgpPT0ibXVuZGVyb3ZlciIp
IHsKKyAgICAgICAgbV9raW5kID0gVW5kZXJPdmVyOworICAgIH0KK30KKworaW5saW5lIGRvdWJs
ZSBnZXRPdmVyQWRqdXN0bWVudChSZW5kZXJPYmplY3QgKm9iaikKK3sKKyAgICBkb3VibGUgYWRq
dXN0ID0gMC4xOworICAgIGlmIChvYmotPm5vZGUoKSAmJiBvYmotPm5vZGUoKS0+bm9kZVR5cGUo
KT09Tm9kZTo6RUxFTUVOVF9OT0RFKSB7CisgICAgICAgIEVsZW1lbnQqIGJhc2UgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4ob2JqLT5ub2RlKCkpOworCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShiYXNlLT5nZXRBdHRyaWJ1dGUoIm1hdGhzaXplIikgLCAiYmlnIikpIHsKKyAgICAgICAg
ICAgIC8vIHdoZW4gd2UgaGF2ZSBtYXRoc2l6ZT0nYmlnJyB3ZSBkb24ndCBuZWVkIGFueSBvdmVy
IGFkanVzdG1lbnQKKyAgICAgICAgICAgIGFkanVzdCA9IDA7CisgICAgICAgIH0KKworICAgIH0K
KyAgICByZXR1cm4gYWRqdXN0OworfQorCitpbmxpbmUgZG91YmxlIGdldFVuZGVyQWRqdXN0bWVu
dChSZW5kZXJPYmplY3QgKm9iaikKK3sKKyAgICBkb3VibGUgYWRqdXN0ID0gLTAuNDsKKyAgICBp
ZiAob2JqLT5ub2RlKCkgJiYgb2JqLT5ub2RlKCktPm5vZGVUeXBlKCk9PU5vZGU6OkVMRU1FTlRf
Tk9ERSkgeworICAgICAgICBFbGVtZW50KiBiYXNlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9i
ai0+bm9kZSgpKTsKKworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYmFzZS0+Z2V0QXR0
cmlidXRlKCJtYXRoc2l6ZSIpICwgImJpZyIpKSB7CisgICAgICAgICAgICAvLyB3aGVuIHdlIGhh
dmUgbWF0aHNpemU9J2JpZycgdGhlIHRvcCBhbGlnbm1lbnQgYWRqdXN0bWVudCBpcyBzbWFsbGVy
CisgICAgICAgICAgICBhZGp1c3QgPSAtMC4zOworICAgICAgICB9CisKKyAgICB9CisgICAgcmV0
dXJuIGFkanVzdDsKK30KKworY29uc3QgVUNoYXIgZGVzY2VuZGluZ1tdID0ge3N0YXRpY19jYXN0
PFVDaGFyPignZycpICwgc3RhdGljX2Nhc3Q8VUNoYXI+KCdqJykgLCBzdGF0aWNfY2FzdDxVQ2hh
cj4oJ3AnKSAsIHN0YXRpY19jYXN0PFVDaGFyPigncScpICwgc3RhdGljX2Nhc3Q8VUNoYXI+KCd5
JykgLCAwIH07CisgICAgCit2b2lkIFJlbmRlck1hdGhVbmRlck92ZXI6OmFkZENoaWxkKFJlbmRl
ck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCit7CisgICAgCisgICAg
UmVuZGVyQmxvY2sqIHJvdyA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2soZG9jdW1l
bnQoKSk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByb3dTdHlsZSA9IG1ha2VCbG9ja1N0eWxl
KCk7CisgICAgCisgICAgLy8gbG9vayB0aHJvdWdoIHRoZSBjaGlsZHJlbiBmb3IgcmVuZGVyZWQg
ZWxlbWVudHMKKyAgICBpbnQgYmxvY2tzID0gMDsKKyAgICBSZW5kZXJPYmplY3QgKmN1cnJlbnQg
PSB0aGlzLT5maXJzdENoaWxkKCk7CisgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgYmxv
Y2tzKys7CisgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpOworICAgIH0K
KyAgICAKKyAgICAvLyBjZW50ZXIgdGhlIG92ZXIvdW5kZXIgYmxvY2tzCisgICAgaWYgKCFpc0Vt
cHR5KCkpIHsKKyAgICAgICAgcm93U3R5bGUtPnNldFRleHRBbGlnbihDRU5URVIpOworICAgICAg
ICByb3dTdHlsZS0+c2V0TGluZUhlaWdodChMZW5ndGgoc3RhdGljX2Nhc3Q8aW50Pihyb3dTdHls
ZS0+Zm9udFNpemUoKSAqIDAuNzUpICwgRml4ZWQpKTsKKyAgICB9CisgICAgCisgICAgcm93LT5z
ZXRTdHlsZShyb3dTdHlsZS5yZWxlYXNlKCkpOworICAgIAorICAgIGJvb2wgZGVzY2VuZHMgPSBm
YWxzZTsKKyAgICBTdHJpbmcgdGV4dCA9IGNoaWxkLT5ub2RlKCktPnRleHRDb250ZW50KCk7Cisg
ICAgZm9yIChpbnQgaT0wOyAhZGVzY2VuZHMgJiYgZGVzY2VuZGluZ1tpXT4wOyBpKyspIHsKKyAg
ICAgICAgaWYgKHRleHQuY29udGFpbnMoZGVzY2VuZGluZ1tpXSkpIHsKKyAgICAgICAgICAgIC8v
IHdlIGhhdmUgYSBkZXNjZW5kaW5nIGNoYXJhY3RlciBzdWNoIGFzICd5JworICAgICAgICAgICAg
ZGVzY2VuZHMgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN3aXRjaCAoYmxv
Y2tzKSB7CisgICAgY2FzZSAwOgorICAgICAgICAvLyB0aGlzIGlzIHRoZSBiYXNlIHNvIGp1c3Qg
YXBwZW5kIGl0CisgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3cgLCBiZWZvcmVDaGls
ZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgLy8gdGhlIHVuZGVyIG9y
IG92ZXIKKyAgICAgICAgaWYgKG1fa2luZD09T3ZlcikgeworICAgICAgICAgICAgaWYgKCFkZXNj
ZW5kcykgeworICAgICAgICAgICAgICAgIC8vIGFkanVzdCB0aGUgb3ZlcidzIGludHJ1c2lvbiBp
bnRvIHRoZSBiYXNlIGZyb20gdGhlIHRvcAorICAgICAgICAgICAgICAgIHJvdy0+c3R5bGUoKS0+
c2V0TWFyZ2luQm90dG9tKExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KGdldE92ZXJBZGp1c3RtZW50
KGZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpKSAqIHJvdy0+c3R5bGUoKS0+Zm9udFNpemUoKSkg
LCBGaXhlZCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gYWRkIHRoZSBvdmVyIGFz
IGZpcnN0CisgICAgICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQocm93ICwgZmlyc3RDaGls
ZCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGFkZCB0aGUgdW5kZXIgYXMg
bGFzdAorICAgICAgICAgICAgcm93LT5zdHlsZSgpLT5zZXRQYWRkaW5nVG9wKExlbmd0aCgxICwg
Rml4ZWQpKTsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChyb3cgLCBiZWZvcmVD
aGlsZCk7CisgICAgICAgICAgICAvLyBhZGp1c3QgdGhlIGJhc2UncyBpbnRydXNpb24gaW50byB0
aGUgdW5kZXIKKyAgICAgICAgICAgIGZpcnN0Q2hpbGQoKS0+c3R5bGUoKS0+c2V0TWFyZ2luQm90
dG9tKExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KGdldFVuZGVyQWRqdXN0bWVudChmaXJzdENoaWxk
KCktPmZpcnN0Q2hpbGQoKSkgKiByb3ctPnN0eWxlKCktPmZvbnRTaXplKCkpICwgRml4ZWQpKTsK
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIC8vIHRoZSB1
bmRlciBvciBvdmVyCisgICAgICAgIGlmIChtX2tpbmQ9PVVuZGVyT3ZlcikgeworICAgICAgICAg
ICAgLy8gYWRqdXN0IHRoZSBvdmVyJ3MgaW50cnVzaW9uIGludG8gdGhlIGJhc2UgZnJvbSB0aGUg
dG9wCisgICAgICAgICAgICByb3ctPnN0eWxlKCktPnNldE1hcmdpbkJvdHRvbShMZW5ndGgoc3Rh
dGljX2Nhc3Q8aW50PihnZXRPdmVyQWRqdXN0bWVudChmaXJzdENoaWxkKCktPmZpcnN0Q2hpbGQo
KSkgKiByb3ctPnN0eWxlKCktPmZvbnRTaXplKCkpICwgRml4ZWQpKTsKKyAgICAgICAgICAgIC8v
IGFkZCB0aGUgb3ZlciBhcyBmaXJzdAorICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxk
KHJvdyAsIGZpcnN0Q2hpbGQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB3
ZSByZWFsbHkgc2hvdWxkbid0IGdldCBoZXJlIGFzIG9ubHkgbXVuZGVyb3ZlciBzaG91bGQgaGF2
ZSB0aHJlZSBjaGlsZHJlbgorICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFkZENoaWxkKHJvdyAs
IGJlZm9yZUNoaWxkKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICAvLyBXZSBzaG91bGRuJ3QgZ2V0IGhlcmUgYnV0IHdlIHdpbGwgdHJlYXQgdGhpcyBh
cyB1bmRlcgorICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQocm93ICwgYmVmb3JlQ2hpbGQp
OworICAgIH0KKyAgICByb3ctPmFkZENoaWxkKGNoaWxkKTsgICAgCit9CisgICAgCit9CisKKwor
I2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoVW5kZXJPdmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aFVuZGVyT3Zlci5oCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aFVuZGVyT3Zlci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUwIEBACisvKgorICogIFJlbmRlck1hdGhVbmRlck92ZXIuaAorICogIFdlYkNv
cmUKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEFsZXggTWlsb3dza2kgKGFsZXhAbWlsb3dz
a2kuY29tKS4KKyAqCisgCisgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0
CisgCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIAorICovCisKKworI2lmbmRlZiBSZW5kZXJNYXRoVW5k
ZXJPdmVyX2gKKyNkZWZpbmUgUmVuZGVyTWF0aFVuZGVyT3Zlcl9oCisKKyNpZiBFTkFCTEUoTUFU
SE1MKQorCisjaW5jbHVkZSAiUmVuZGVyTWF0aElubGluZUNvbnRhaW5lci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgUmVuZGVyTWF0aFVuZGVyT3ZlciA6IHB1Ymxp
YyBSZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJlbmRl
ck1hdGhVbmRlck92ZXIoTm9kZSogZXhwcmVzc2lvbik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBh
ZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0g
MCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgZW51bSBVbmRlck92ZXJUeXBlIHsgVW5kZXIsIE92
ZXIsIFVuZGVyT3ZlciB9OworICAgICAgICBVbmRlck92ZXJUeXBlIG1fa2luZDsKKyAgICB9Owor
ICAgIAorfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL21hdGhtbC9SZW5kZXJT
cXVhcmVSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9SZW5kZXJTcXVhcmVS
b290LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1sL1JlbmRlclNxdWFyZVJvb3Qu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisvKgorICogIFJlbmRlclNxdWFyZVJv
b3QuY3BwCisgKiAgV2ViQ29yZQorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQWxleCBNaWxv
d3NraSAoYWxleEBtaWxvd3NraS5jb20pLgorICoKKyAKKyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IHByb2plY3QKKyAKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorIAorIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUFUSE1MKQorCisjaW5jbHVkZSAiTWF0aE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJTcXVhcmVSb290LmgiCisjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBN
YXRoTUxOYW1lczsKKworY29uc3QgaW50IHJhZGljYWxCYXNlUGFkID0gMzsKKyAgICAKK1JlbmRl
clNxdWFyZVJvb3Q6OlJlbmRlclNxdWFyZVJvb3QoTm9kZSAqZXhwcmVzc2lvbikgCisgICAgOiBS
ZW5kZXJNYXRoSW5saW5lQ29udGFpbmVyKGV4cHJlc3Npb24pIAoreworfQorCit2b2lkIFJlbmRl
clNxdWFyZVJvb3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgaW50IHR4LCBpbnQgdHkpCit7Cisg
ICAgUmVuZGVyTWF0aElubGluZUNvbnRhaW5lcjo6cGFpbnQoaW5mbyx0eCx0eSk7CisgICAKKyAg
ICBpbnQgbWF4SGVpZ2h0ID0gMDsKKyAgICBpbnQgd2lkdGggPSAwOworICAgIFJlbmRlck9iamVj
dCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAoY3VycmVudCkgeworICAgICAg
ICBpZiAoY3VycmVudC0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0
KGN1cnJlbnQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoYm94LT5vZmZzZXRIZWln
aHQoKT5tYXhIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAvLyB0aGlzIGJveCBoYXMgYSBsYXJn
ZXIgaGVpZ2h0CisgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gYm94LT5vZmZzZXRIZWlnaHQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdpZHRoICs9IGJveC0+b2Zmc2V0V2lkdGgo
KTsKKyAgICAgICAgfQorICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsK
KyAgICB9CisgICAgaWYgKG1heEhlaWdodD09MCkgeworICAgICAgICAvLyBkZWZhdWx0IHRvIHRo
ZSBmb250IHNpemUgaW4gcGl4ZWxzIGlmIHdlJ3JlIGVtcHR5CisgICAgICAgIG1heEhlaWdodCA9
IHN0eWxlKCktPmZvbnRTaXplKCk7CisgICAgfQorICAgIAorICAgIGludCBmcm9udFdpZHRoID0g
c3RhdGljX2Nhc3Q8aW50PihzdHlsZSgpLT5mb250U2l6ZSgpICogMC43NSk7CisgICAgSW50UG9p
bnQgdG9wU3RhcnQodHggKyBmcm9udFdpZHRoICwgdHkpOworICAgIEludFBvaW50IGJvdHRvbUxl
ZnQoc3RhdGljX2Nhc3Q8aW50Pih0eCArIGZyb250V2lkdGggKiAwLjUpICwgdHkgKyBtYXhIZWln
aHQgKyByYWRpY2FsQmFzZVBhZCk7CisgICAgSW50UG9pbnQgdG9wTGVmdChzdGF0aWNfY2FzdDxp
bnQ+KHR4ICsgZnJvbnRXaWR0aCAqIDAuMikgLCB0eSArIHN0YXRpY19jYXN0PGludD4obWF4SGVp
Z2h0IC8gMi4wKSk7CisgICAgSW50UG9pbnQgbGVmdEVuZCh0eCAsIHR5ICsgc3RhdGljX2Nhc3Q8
aW50PihtYXhIZWlnaHQgLyAyLjApKTsKKyAgICAKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9r
ZVRoaWNrbmVzcygxLjBmKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlk
U3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0eWxlKCktPmNvbG9y
KCkpOworICAgIAorICAgIC8vIGRyYXcgdG9wCisgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZSh0
b3BTdGFydCAsIEludFBvaW50KHRvcFN0YXJ0LngoKSArIHdpZHRoICwgdHkpKTsKKyAgICAvLyBk
cmF3IGZyb20gdG9wIGxlZnQgY29ybmVyIHRvIGJvdHRvbSBwb2ludCBvZiByYWRpY2FsCisgICAg
aW5mby5jb250ZXh0LT5kcmF3TGluZSh0b3BTdGFydCAsIGJvdHRvbUxlZnQpOworICAgIC8vIGRy
YXcgZnJvbSBib3R0b20gcG9pbnQgdG8gdG9wIG9mIGxlZnQgcGFydCBvZiByYWRpY2FsIGJhc2Ug
InBvY2tldCIKKyAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKGJvdHRvbUxlZnQgLCB0b3BMZWZ0
KTsKKyAgICAvLyBkcmF3IHRvIGVuZAorICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUodG9wTGVm
dCAsIGxlZnRFbmQpOworICAgIAorfQorCit9CisKKyNlbmRpZgorCisgICAgICAgIApJbmRleDog
V2ViQ29yZS9tYXRobWwvUmVuZGVyU3F1YXJlUm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bWF0aG1sL1JlbmRlclNxdWFyZVJvb3QuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWF0aG1s
L1JlbmRlclNxdWFyZVJvb3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
ICBSZW5kZXJTcXVhcmVSb290LmgKKyAqICBXZWJDb3JlCisgKgorICogIENvcHlyaWdodCAoQykg
MjAwOSBBbGV4IE1pbG93c2tpIChhbGV4QG1pbG93c2tpLmNvbSkuCisgKgorIAorIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgcHJvamVjdAorIAorIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKwor
ICovCisgCisjaWZuZGVmIFJlbmRlclNxdWFyZVJvb3RfaAorI2RlZmluZSBSZW5kZXJTcXVhcmVS
b290X2gKKworI2lmIEVOQUJMRShNQVRITUwpCisKKyNpbmNsdWRlICJSZW5kZXJNYXRoSW5saW5l
Q29udGFpbmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBSZW5k
ZXJTcXVhcmVSb290IDogcHVibGljIFJlbmRlck1hdGhJbmxpbmVDb250YWluZXIgeworICAgIHB1
YmxpYzoKKyAgICAgICAgUmVuZGVyU3F1YXJlUm9vdChOb2RlKiBmcmFjdGlvbik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CisgICAgcHJv
dGVjdGVkOgorICAgICAgICAvL3ZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB9OworICAgIAor
fQorCisjZW5kaWYKKworI2VuZGlmCisKKworCkluZGV4OiBXZWJDb3JlL21hdGhtbC9tYXRodGFn
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE5NyBAQAorbmFtZXNwYWNlPSJNYXRoTUwiCituYW1lc3BhY2VVUkk9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTgvTWF0aC9NYXRoTUwiCitndWFyZEZhY3RvcnlXaXRoPSJFTkFCTEUoTUFUSE1MKSIK
K2V4cG9ydFN0cmluZ3MKKworbWF0aAorbWZyYWMgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50CittZmVuY2VkIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudAorbXN1YnN1cCBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQKK21yb3cgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Citt
b3ZlciBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK211bmRlciBp
bnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK211bmRlcm92ZXIgaW50
ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Cittc3FydCBpbnRlcmZhY2VO
YW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKK21yb290IGludGVyZmFjZU5hbWU9TWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbWkgaW50ZXJmYWNlTmFtZT1NYXRoTUxFbGVtZW50
LCBjcmVhdGVXaXRoTmV3CittbiBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQsIGNyZWF0ZVdp
dGhOZXcKK21vIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVudCwgY3JlYXRlV2l0aE5ldworbXN1
YiBpbnRlcmZhY2VOYW1lPU1hdGhNTEVsZW1lbnQsIGNyZWF0ZVdpdGhOZXcKK21zdXAgaW50ZXJm
YWNlTmFtZT1NYXRoTUxFbGVtZW50LCBjcmVhdGVXaXRoTmV3CisKKyNpZiAwCithYnMgY3JlYXRl
V2l0aE5ldworYW5kIGNyZWF0ZVdpdGhOZXcKK2Fubm90YXRpb24gY3JlYXRlV2l0aE5ldworYW5u
b3RhdGlvbi14bWwgY3JlYXRlV2l0aE5ldworYXBwbHkgY3JlYXRlV2l0aE5ldworYXBwcm94IGNy
ZWF0ZVdpdGhOZXcKK2FyY2NvcyBjcmVhdGVXaXRoTmV3CithcmNjb3NoIGNyZWF0ZVdpdGhOZXcK
K2FyY2NvdCBjcmVhdGVXaXRoTmV3CithcmNjb3RoIGNyZWF0ZVdpdGhOZXcKK2FyY2NzYyBjcmVh
dGVXaXRoTmV3CithcmNjc2NoIGNyZWF0ZVdpdGhOZXcKK2FyY3NlYyBjcmVhdGVXaXRoTmV3Cith
cmNzZWNoIGNyZWF0ZVdpdGhOZXcKK2FyY3NpbiBjcmVhdGVXaXRoTmV3CithcmNzaW5oIGNyZWF0
ZVdpdGhOZXcKK2FyY3RhbiBjcmVhdGVXaXRoTmV3CithcmN0YW5oIGNyZWF0ZVdpdGhOZXcKK2Fy
ZyBjcmVhdGVXaXRoTmV3CitidmFyIGNyZWF0ZVdpdGhOZXcKK2NhcmQgY3JlYXRlV2l0aE5ldwor
Y2FydGVzaWFucHJvZHVjdCBjcmVhdGVXaXRoTmV3CitjZWlsaW5nIGNyZWF0ZVdpdGhOZXcKK2Np
IGNyZWF0ZVdpdGhOZXcKK2NuIGNyZWF0ZVdpdGhOZXcKK2NvZG9tYWluIGNyZWF0ZVdpdGhOZXcK
K2NvbXBsZXhlcyBjcmVhdGVXaXRoTmV3Citjb21wb3NlIGNyZWF0ZVdpdGhOZXcKK2NvbmRpdGlv
biBjcmVhdGVXaXRoTmV3Citjb25qdWdhdGUgY3JlYXRlV2l0aE5ldworY29zIGNyZWF0ZVdpdGhO
ZXcKK2Nvc2ggY3JlYXRlV2l0aE5ldworY290IGNyZWF0ZVdpdGhOZXcKK2NvdGggY3JlYXRlV2l0
aE5ldworY3NjIGNyZWF0ZVdpdGhOZXcKK2NzY2ggY3JlYXRlV2l0aE5ldworY3N5bWJvbCBjcmVh
dGVXaXRoTmV3CitjdXJsIGNyZWF0ZVdpdGhOZXcKK2RlY2xhcmUgY3JlYXRlV2l0aE5ldworZGVn
cmVlIGNyZWF0ZVdpdGhOZXcKK2RldGVybWluYW50IGNyZWF0ZVdpdGhOZXcKK2RpZmYgY3JlYXRl
V2l0aE5ldworZGl2ZXJnZW5jZSBjcmVhdGVXaXRoTmV3CitkaXZpZGUgY3JlYXRlV2l0aE5ldwor
ZG9tYWluIGNyZWF0ZVdpdGhOZXcKK2RvbWFpbm9mYXBwbGljYXRpb24gY3JlYXRlV2l0aE5ldwor
ZW1wdHlzZXQgY3JlYXRlV2l0aE5ldworZW5jb2RpbmcgY3JlYXRlV2l0aE5ldworZXEgY3JlYXRl
V2l0aE5ldworZXF1aXZhbGVudCBjcmVhdGVXaXRoTmV3CitldWxlcmdhbW1hIGNyZWF0ZVdpdGhO
ZXcKK2V4aXN0cyBjcmVhdGVXaXRoTmV3CitleHAgY3JlYXRlV2l0aE5ldworZXhwb25lbnRpYWxl
IGNyZWF0ZVdpdGhOZXcKK2ZhY3RvcmlhbCBjcmVhdGVXaXRoTmV3CitmYWN0b3JvZiBjcmVhdGVX
aXRoTmV3CitmYWxzZSBjcmVhdGVXaXRoTmV3CitmbG9vciBjcmVhdGVXaXRoTmV3CitmbiBjcmVh
dGVXaXRoTmV3Citmb3JhbGwgY3JlYXRlV2l0aE5ldworZnVuY3Rpb24gY3JlYXRlV2l0aE5ldwor
Z2NkIGNyZWF0ZVdpdGhOZXcKK2dlcSBjcmVhdGVXaXRoTmV3CitncmFkIGNyZWF0ZVdpdGhOZXcK
K2d0IGNyZWF0ZVdpdGhOZXcKK2lkZW50IGNyZWF0ZVdpdGhOZXcKK2ltYWdlIGNyZWF0ZVdpdGhO
ZXcKK2ltYWdpbmFyeSBjcmVhdGVXaXRoTmV3CitpbWFnaW5hcnlpIGNyZWF0ZVdpdGhOZXcKK2lt
cGxpZXMgY3JlYXRlV2l0aE5ldworaW4gY3JlYXRlV2l0aE5ldworaW5maW5pdHkgY3JlYXRlV2l0
aE5ldworaW50IGNyZWF0ZVdpdGhOZXcKK2ludGVnZXJzIGNyZWF0ZVdpdGhOZXcKK2ludGVyc2Vj
dCBjcmVhdGVXaXRoTmV3CitpbnRlcnZhbCBjcmVhdGVXaXRoTmV3CitpbnZlcnNlIGNyZWF0ZVdp
dGhOZXcKK2xhbWJkYSBjcmVhdGVXaXRoTmV3CitsYXBsYWNpYW4gY3JlYXRlV2l0aE5ldworbGNt
IGNyZWF0ZVdpdGhOZXcKK2xlcSBjcmVhdGVXaXRoTmV3CitsaW1pdCBjcmVhdGVXaXRoTmV3Cits
aXN0IGNyZWF0ZVdpdGhOZXcKK2xuIGNyZWF0ZVdpdGhOZXcKK2xvZyBjcmVhdGVXaXRoTmV3Cits
b2diYXNlIGNyZWF0ZVdpdGhOZXcKK2xvd2xpbWl0IGNyZWF0ZVdpdGhOZXcKK2x0IGNyZWF0ZVdp
dGhOZXcKK2FwcGx5IGNyZWF0ZVdpdGhOZXcKK21yb3cgY3JlYXRlV2l0aE5ldworbWFjdGlvbiBj
cmVhdGVXaXRoTmV3CittYWxpZ24gY3JlYXRlV2l0aE5ldworbWFsaWduZ3JvdXAgY3JlYXRlV2l0
aE5ldworbWFsaWdubWFyayBjcmVhdGVXaXRoTmV3CittYWxpZ25zY29wZSBjcmVhdGVXaXRoTmV3
CittYXRyaXggY3JlYXRlV2l0aE5ldworbWF0cml4cm93IGNyZWF0ZVdpdGhOZXcKK21heCBjcmVh
dGVXaXRoTmV3CittZWFuIGNyZWF0ZVdpdGhOZXcKK21lZGlhbiBjcmVhdGVXaXRoTmV3CittZW5j
bG9zZSBjcmVhdGVXaXRoTmV3CittZXJyb3IgY3JlYXRlV2l0aE5ldworbWdseXBoIGNyZWF0ZVdp
dGhOZXcKK21pbiBjcmVhdGVXaXRoTmV3CittaW51cyBjcmVhdGVXaXRoTmV3CittbGFiZWxlZHRy
IGNyZWF0ZVdpdGhOZXcKK21tdWx0aXNjcmlwdHMgY3JlYXRlV2l0aE5ldworbW9kZSBjcmVhdGVX
aXRoTmV3Cittb21lbnQgY3JlYXRlV2l0aE5ldworbW9tZW50YWJvdXQgY3JlYXRlV2l0aE5ldwor
bXBhZGRlZCBjcmVhdGVXaXRoTmV3CittcGhhbnRvbSBjcmVhdGVXaXRoTmV3CittcHJlc2NyaXB0
cyBjcmVhdGVXaXRoTmV3Cittcm9vdCBjcmVhdGVXaXRoTmV3CittcyBjcmVhdGVXaXRoTmV3Citt
c3BhY2UgY3JlYXRlV2l0aE5ldworbXN0eWxlIGNyZWF0ZVdpdGhOZXcKK210YWJsZSBjcmVhdGVX
aXRoTmV3CittdGQgY3JlYXRlV2l0aE5ldworbXRleHQgY3JlYXRlV2l0aE5ldworbXRyIGNyZWF0
ZVdpdGhOZXcKK25hdHVyYWxudW1iZXJzIGNyZWF0ZVdpdGhOZXcKK25lcSBjcmVhdGVXaXRoTmV3
Citub25lIGNyZWF0ZVdpdGhOZXcKK25vdCBjcmVhdGVXaXRoTmV3Citub3RhbnVtYmVyIGNyZWF0
ZVdpdGhOZXcKK25vdGluIGNyZWF0ZVdpdGhOZXcKK25vdHByc3Vic2V0IGNyZWF0ZVdpdGhOZXcK
K25vdHN1YnNldCBjcmVhdGVXaXRoTmV3CitvciBjcmVhdGVXaXRoTmV3CitvdGhlcndpc2UgY3Jl
YXRlV2l0aE5ldworb3V0ZXJwcm9kdWN0IGNyZWF0ZVdpdGhOZXcKK3BhcnRpYWxkaWZmIGNyZWF0
ZVdpdGhOZXcKK3BpIGNyZWF0ZVdpdGhOZXcKK3BpZWNlIGNyZWF0ZVdpdGhOZXcKK3BpZWNld2lj
ZSBjcmVhdGVXaXRoTmV3CitwaWVjZXdpc2UgY3JlYXRlV2l0aE5ldworcGx1cyBjcmVhdGVXaXRo
TmV3Citwb3dlciBjcmVhdGVXaXRoTmV3CitwcmltZXMgY3JlYXRlV2l0aE5ldworcHJvZHVjdCBj
cmVhdGVXaXRoTmV3CitwcnN1YnNldCBjcmVhdGVXaXRoTmV3CitxdW90aWVudCBjcmVhdGVXaXRo
TmV3CityYXRpb25hbHMgY3JlYXRlV2l0aE5ldworcmVhbCBjcmVhdGVXaXRoTmV3CityZWFscyBj
cmVhdGVXaXRoTmV3CityZWxuIGNyZWF0ZVdpdGhOZXcKK3JlbSBjcmVhdGVXaXRoTmV3Cityb290
IGNyZWF0ZVdpdGhOZXcKK3NjYWxhcnByb2R1Y3QgY3JlYXRlV2l0aE5ldworc2RldiBjcmVhdGVX
aXRoTmV3CitzZWMgY3JlYXRlV2l0aE5ldworc2VjaCBjcmVhdGVXaXRoTmV3CitzZWxlY3RvciBj
cmVhdGVXaXRoTmV3CitzZW1hbnRpY3MgY3JlYXRlV2l0aE5ldworc2VwIGNyZWF0ZVdpdGhOZXcK
K3NldCBjcmVhdGVXaXRoTmV3CitzZXRkaWZmIGNyZWF0ZVdpdGhOZXcKK3NpbiBjcmVhdGVXaXRo
TmV3CitzaW5oIGNyZWF0ZVdpdGhOZXcKK3N1YnNldCBjcmVhdGVXaXRoTmV3CitzdW0gY3JlYXRl
V2l0aE5ldwordGFuIGNyZWF0ZVdpdGhOZXcKK3RhbmggY3JlYXRlV2l0aE5ldwordGVuZHN0byBj
cmVhdGVXaXRoTmV3Cit0aW1lcyBjcmVhdGVXaXRoTmV3Cit0cmFuc3Bvc2UgY3JlYXRlV2l0aE5l
dwordHJ1ZSBjcmVhdGVXaXRoTmV3Cit1bmlvbiBjcmVhdGVXaXRoTmV3Cit1cGxpbWl0IGNyZWF0
ZVdpdGhOZXcKK3ZhcmlhbmNlIGNyZWF0ZVdpdGhOZXcKK3ZlY3RvciBjcmVhdGVXaXRoTmV3Cit2
ZWN0b3Jwcm9kdWN0IGNyZWF0ZVdpdGhOZXcKK3hvciBjcmVhdGVXaXRoTmV3CisjZW5kaWYKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDQ4MDY1KQorKysg
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMTAgQEAK
ICNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShNQVRITUwpCisj
aW5jbHVkZSAiTWF0aE1MTmFtZXMuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdNTCkKICNpbmNs
dWRlICJXTUxOYW1lcy5oIgogI2VuZGlmCkBAIC0xNTUsNiArMTU5LDEwIEBAIEZyYW1lOjpGcmFt
ZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckUKICAgICBYTGlua05hbWVzOjppbml0KCk7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShNQVRITUwpCisgICAgTWF0aE1MTmFtZXM6OmluaXQoKTsKKyNl
bmRpZgorICAgIAogI2lmIEVOQUJMRShXTUwpCiAgICAgV01MTmFtZXM6OmluaXQoKTsKICNlbmRp
ZgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gNDgwNzApCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMSBAQAorMjAwOS0wOS0wNCAgQWxleCBNaWxvd3NraSAg
PGFsZXhAbWlsb3dza2kuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIHRoZSBtYXRobWwgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIE1h
dGhNTCBpbiB0aGUgYnVpbGQKKworICAgICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OgorCiAy
MDA5LTA5LTA0ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAg
ICAgICAgIHd4IGJ1aWxkIGZpeC4gU3dpdGNoIFVTRV8gZGVmaW5lcyBvdmVyIHRvIHRoZSBjb21w
aWxlciBzbyB0aGF0IHRoZXkgY2FuIGJlCkluZGV4OiBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxk
LXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAko
cmV2aXNpb24gNDgwNjUpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBteSAoJHRocmVlRENhbnZhc1N1cHBvcnQsICR0
aHJlZURSZW5kZXJpCiAgICAgJGV2ZW50c291cmNlU3VwcG9ydCwgJGZpbHRlcnNTdXBwb3J0LCAk
Z2VvbG9jYXRpb25TdXBwb3J0LCAkaWNvbkRhdGFiYXNlU3VwcG9ydCwKICAgICAkamF2YVNjcmlw
dERlYnVnZ2VyU3VwcG9ydCwgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICRydWJ5U3Vw
cG9ydCwgJHNoYXJlZFdvcmtlcnNTdXBwb3J0LCAKICAgICAkc3ZnU3VwcG9ydCwgJHN2Z0FuaW1h
dGlvblN1cHBvcnQsICRzdmdBc0ltYWdlU3VwcG9ydCwgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBv
cnQsICRzdmdGb250c1N1cHBvcnQsCi0gICAgJHN2Z0ZvcmVpZ25PYmplY3RTdXBwb3J0LCAkc3Zn
VXNlU3VwcG9ydCwgJHZpZGVvU3VwcG9ydCwgJHdlYlNvY2tldHNTdXBwb3J0LCAkd21sU3VwcG9y
dCwgJHdjc3NTdXBwb3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKKyAgICAk
c3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsICRzdmdVc2VTdXBwb3J0LCAkdmlkZW9TdXBwb3J0LCAk
d2ViU29ja2V0c1N1cHBvcnQsICR3bWxTdXBwb3J0LCAkbWF0aG1sU3VwcG9ydCwgJHdjc3NTdXBw
b3J0LCAkeGh0bWxtcFN1cHBvcnQsICR3b3JrZXJzU3VwcG9ydCwKICAgICAkeHBhdGhTdXBwb3J0
LCAkeHNsdFN1cHBvcnQsICRjb3ZlcmFnZVN1cHBvcnQsICRub3RpZmljYXRpb25zU3VwcG9ydCk7
CiAKIG15IEBmZWF0dXJlcyA9ICgKQEAgLTEzNCw2ICsxMzQsOSBAQCBteSBAZmVhdHVyZXMgPSAo
CiAgICAgeyBvcHRpb24gPT4gIndtbCIsIGRlc2MgPT4gIlRvZ2dsZSBXTUwgc3VwcG9ydCIsCiAg
ICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XTUwiLCBkZWZhdWx0ID0+IDAsIHZhbHVlID0+IFwkd21s
U3VwcG9ydCB9LAogCisgICAgeyBvcHRpb24gPT4gIm1hdGhtbCIsIGRlc2MgPT4gIlRvZ2dsZSBN
YXRoTUwgc3VwcG9ydCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9NQVRITUwiLCBkZWZhdWx0
ID0+IDEsIHZhbHVlID0+IFwkbWF0aG1sU3VwcG9ydCB9LAorCiAgICAgeyBvcHRpb24gPT4gInho
dG1sbXAiLCBkZXNjID0+ICJUb2dnbGUgWEhUTUwtTVAgc3VwcG9ydCIsCiAgICAgICBkZWZpbmUg
PT4gIkVOQUJMRV9YSFRNTE1QIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHhodG1sbXBTdXBw
b3J0IH0sCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4MDcwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDQgIEFsZXggTWls
b3dza2kgIDxhbGV4QG1pbG93c2tpLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBmb3IgTWF0aE1MIHByZXNlbnRhdGlvbiBj
b25zdHJ1Y3RzLiAgTm8gZXhwZWN0ZWQKKyAgICAgICAgb3V0cHV0IGlzIHByb3ZpZGVkIGF0IHRo
aXMgdGltZS4KKworICAgICAgICAqIG1hdGhtbDogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3By
ZXNlbnRhdGlvbjogQWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQu
eGh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vZnJhY3Rpb25zLnho
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL3Jvb3RzLnhodG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBtYXRobWwvcHJlc2VudGF0aW9uL3N1YnN1cC54aHRtbDogQWRkZWQu
CisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlcm92ZXIueGh0bWw6IEFkZGVkLgor
CiAyMDA5LTA5LTA0ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9w
cmVzZW50YXRpb24vZmVuY2VkLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGht
bC9wcmVzZW50YXRpb24vZmVuY2VkLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9mZW5jZWQueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzUgQEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFk
PgorPHRpdGxlPkZlbmNpbmc8L3RpdGxlPgorPHN0eWxlIHR5cGU9J3RleHQvY3NzJz4KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSd0MSc+c2ltcGxlOiAKKzxtYXRoIHhtbG5zPSdo
dHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZmVuY2VkIG9wZW49InsiIGNs
b3NlPSJ9Ij48bW4+MjwvbW4+PG1uPjM8L21uPjxtbj41PC9tbj48bW4+NzwvbW4+PC9tZmVuY2Vk
PgorPC9tYXRoPjwvcD4KKzxwIGlkPSd0Mic+bm8gc2VwYXJhdG9yczogCis8bWF0aCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZlbmNlZCBzZXBhcmF0b3Jz
PSIiPgorPG1pPng8L21pPiAKKzxtbz4rPC9tbz4KKworCitzZGZzYWRmYXNkZnNhZGYKKyAKKzxt
bj4xPC9tbj48L21mZW5jZWQ+Cis8bWZlbmNlZCBzZXBhcmF0b3JzPSIiPjxtaT54PC9taT48bW8+
KzwvbW8+PG1uPjI8L21uPjwvbWZlbmNlZD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDMnPmxhcmdl
OiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxt
ZmVuY2VkIG9wZW49InsiIGNsb3NlPSJ9Ij4KKzxtbj4xPC9tbj4KKzxtZnJhYz4KKzxtc3VwPjxt
aT54PC9taT48bW4+MjwvbW4+PC9tc3VwPgorPG1yb3c+PG1uPjI8L21uPjxtbz4hPC9tbz48L21y
b3c+Cis8L21mcmFjPgorPG1mcmFjPgorPG1zdXA+PG1pPng8L21pPjxtbj4zPC9tbj48L21zdXA+
Cis8bXJvdz48bW4+MzwvbW4+PG1vPiE8L21vPjwvbXJvdz4KKzwvbWZyYWM+Cis8bWZyYWM+Cis8
bXN1cD48bWk+eDwvbWk+PG1uPjQ8L21uPjwvbXN1cD4KKzxtcm93Pjxtbj40PC9tbj48bW8+ITwv
bW8+PC9tcm93PgorPC9tZnJhYz4KKzwvbWZlbmNlZD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDIn
PmRpZmZlcmVudCBzZXBhcmF0b3JzOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8x
OTk4L01hdGgvTWF0aE1MJz4KKzxtZmVuY2VkIHNlcGFyYXRvcnM9ImFiY2RlZmdoaWprbG1ub3Ai
PgorPG1uPjE8L21uPgorPG1uPjI8L21uPgorPG1uPjM8L21uPgorPG1uPjQ8L21uPgorPG1uPjU8
L21uPgorPG1uPjY8L21uPgorPG1uPjc8L21uPgorPG1uPjg8L21uPgorPG1uPjk8L21uPgorPG1u
PjEwPC9tbj4KKzxtbj4xMTwvbW4+Cis8bW4+MTI8L21uPgorPG1uPjEzPC9tbj4KKzxtbj4xNDwv
bW4+Cis8bW4+MTU8L21uPgorPG1uPjE2PC9tbj4KKzxtbj4xNzwvbW4+Cis8bW4+MTg8L21uPgor
PG1uPjE5PC9tbj4KKzxtbj4yMDwvbW4+Cis8bW4+MjE8L21uPgorPG1uPjIyPC9tbj4KKzxtbj4y
MzwvbW4+Cis8bW4+MjQ8L21uPgorPG1uPjI1PC9tbj4KKzxtbj4yNjwvbW4+Cis8L21mZW5jZWQ+
Cis8L21hdGg+Cis8L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9mcmFjdGlvbnMueGh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9mcmFjdGlv
bnMueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9u
L2ZyYWN0aW9ucy54aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorPGh0bWwgeG1s
bnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+Cis8dGl0bGU+RnJhY3Rp
b25zPC90aXRsZT4KKzxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0ndDEnPnNpbXBsZTogPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTgvTWF0aC9NYXRoTUwnPjxtZnJhYz48bW4+MTwvbW4+YmFkPG1uPjI8L21uPjwvbWZyYWM+
PC9tYXRoPjwvcD4KKzxwIGlkPSd0Mic+bW9yZSBjb21wbGV4OiAKKzxtYXRoIHhtbG5zPSdodHRw
Oi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZnJhYz4KKzxtcm93PjxtaT54PC9t
aT48bW8+KzwvbW8+YmFkPG1uPjE8L21uPjwvbXJvdz4KKzxtcm93PjxtaT54PC9taT48bW8+Kzwv
bW8+PG1uPjI8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDMn
PnRleHQ6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+
Cis8bWZyYWM+Cis8bXRleHQ+bnVtYmVyIG9mIGJ1Z3M8L210ZXh0PgorPG10ZXh0Pm51bWJlciBv
ZiBjaGFuZ2VzPC9tdGV4dD4KKzwvbWZyYWM+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDQnPmxp
bmUgdGhpY2tuZXNzIGJ5IGtleXdvcmQ6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MTk5OC9NYXRoL01hdGhNTCc+PG1mcmFjIGxpbmV0aGlja25lc3M9J3RoaW4nPjxtbj4xPC9tbj48
bW4+MjwvbW4+PC9tZnJhYz48L21hdGg+PG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTgvTWF0aC9NYXRoTUwnPjxtZnJhYyBsaW5ldGhpY2tuZXNzPSdtZWRpdW0nPjxtbj4xPC9tbj48
bW4+MjwvbW4+PC9tZnJhYz48L21hdGg+PG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5
OTgvTWF0aC9NYXRoTUwnPjxtZnJhYyBsaW5ldGhpY2tuZXNzPSd0aGljayc+PG1uPjE8L21uPjxt
bj4yPC9tbj48L21mcmFjPjwvbWF0aD48L3A+Cis8cCBpZD0ndDUnPm51bWVyYXRvciBhbGlnbm1l
bnQ6Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8
bWZyYWMgbnVtYWxpZ249ImxlZnQiPgorPG1pPng8L21pPgorPG1yb3c+PG1uPjE8L21uPjxtbz4r
PC9tbz48bW4+MjwvbW4+PG1vPis8L21vPjxtbj4zPC9tbj48bW8+KzwvbW8+PG1uPjQ8L21uPjxt
bz4rPC9tbz48bW4+NTwvbW4+PC9tcm93PgorPC9tZnJhYz4KKzwvbWF0aD4KKzxtYXRoIHhtbG5z
PSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZnJhYyBudW1hbGlnbj0i
Y2VudGVyIj4KKzxtaT54PC9taT4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21u
Pjxtbz4rPC9tbz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8
L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgbnVtYWxpZ249InJpZ2h0Ij4KKzxtaT54
PC9taT4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9tbz48bW4+
MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJvdz4KKzwv
bWZyYWM+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDYnPmRlbm9taW5hdG9yIGFsaWdubWVudDoK
KzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtZnJh
YyBkZW5vbWFsaWduPSJsZWZ0Ij4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21u
Pjxtbz4rPC9tbz48bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8
L21uPjwvbXJvdz4KKzxtaT54PC9taT4KKzwvbWZyYWM+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgZGVub21hbGlnbj0i
Y2VudGVyIj4KKzxtcm93Pjxtbj4xPC9tbj48bW8+KzwvbW8+PG1uPjI8L21uPjxtbz4rPC9tbz48
bW4+MzwvbW4+PG1vPis8L21vPjxtbj40PC9tbj48bW8+KzwvbW8+PG1uPjU8L21uPjwvbXJvdz4K
KzxtaT54PC9taT4KKzwvbWZyYWM+Cis8L21hdGg+Cis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bWZyYWMgZGVub21hbGlnbj0icmlnaHQiPgorPG1y
b3c+PG1uPjE8L21uPjxtbz4rPC9tbz48bW4+MjwvbW4+PG1vPis8L21vPjxtbj4zPC9tbj48bW8+
KzwvbW8+PG1uPjQ8L21uPjxtbz4rPC9tbz48bW4+NTwvbW4+PC9tcm93PgorPG1pPng8L21pPgor
PC9tZnJhYz4KKzwvbWF0aD4KKzwvcD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL3Jvb3Rz
LnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vcm9v
dHMueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9u
L3Jvb3RzLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACis8aHRtbCB4bWxucz0n
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKzx0aXRsZT5Sb290czwvdGl0
bGU+Cis8c3R5bGUgdHlwZT0ndGV4dC9jc3MnPgorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9J3QxJz5zcXVhcmUgcm9vdDogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcv
MTk5OC9NYXRoL01hdGhNTCc+Cis8bXNxcnQ+PG1uPjI8L21uPjwvbXNxcnQ+Cis8L21hdGg+PC9w
PgorPHAgaWQ9J3QyJz5sb25nIHNxdWFyZSByb290OiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3
LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3FydD48bXJvdz48bWk+eDwvbWk+PG1vPis8
L21vPjxtbj4xPC9tbj48L21yb3c+PC9tc3FydD4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDMnPmxv
bmcgc3F1YXJlIHJvb3Qgd2l0aCBpbXBsaWVkIHJvdzogCis8bWF0aCB4bWxucz0naHR0cDovL3d3
dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXNxcnQ+PG1zdXA+PG1pPng8L21pPjxtbj4y
PC9tbj48L21zdXA+PG1vPis8L21vPjxtbj4xPC9tbj48L21zcXJ0PgorPC9tYXRoPjwvcD4KKzxw
IGlkPSd0NCc+cm9vdCBvZiBhIGZyYWN0aW9uOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtc3FydD4KKzxtZnJhYz4KKzxtcm93PjxtaT54PC9t
aT48bW8+KzwvbW8+PG1uPjE8L21uPjwvbXJvdz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+
PG1uPjI8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8L21zcXJ0PgorPC9tYXRoPjwvcD4KKzxwIGlk
PSd0NSc+Y3ViZSByb290OiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01h
dGgvTWF0aE1MJz4KKzxtcm9vdD48bW4+MjwvbW4+PG1uPjM8L21uPjwvbXJvb3Q+Cis8L21hdGg+
PC9wPgorPHAgaWQ9J3Q2Jz5sb25nIGluZGV4OiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm9vdD48bW4+MjwvbW4+PG1yb3c+PG1pPng8L21p
Pjxtbz4rPC9tbz48bWk+eTwvbWk+PG1vPis8L21vPjxtaT56PC9taT48L21yb3c+PC9tcm9vdD4K
KzwvbWF0aD48L3A+Cis8cCBpZD0ndDYnPmxvbmcgaW5kZXggdy8gY29tcGxleCBiYXNlOiAKKzxt
YXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtcm9vdD4K
KzxtZnJhYz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjE8L21uPjwvbXJvdz4KKzxt
cm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1uPjI8L21uPjwvbXJvdz4KKzwvbWZyYWM+Cis8bXJv
dz48bWk+eDwvbWk+PG1vPis8L21vPjxtaT55PC9taT48bW8+KzwvbW8+PG1pPno8L21pPjwvbXJv
dz4KKzwvbXJvb3Q+Cis8L21hdGg+PC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vc3Vi
c3VwLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24v
c3Vic3VwLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRh
dGlvbi9zdWJzdXAueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKzxodG1sIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4KKzxoZWFkPgorPHRpdGxlPlN1YnNj
cmlwdCBhbmQgU3VwZXJzY3JpcHRzPC90aXRsZT4KKzxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5iZWZvcmUgdGV4dDo8L3A+Cis8cD5tYW51YWw6
IDxzcGFuIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jazsiPgorPHNwYW4gaWQ9J2Jhc2UnPng8
L3NwYW4+PGRpdiBzdHlsZT0iZGlzcGxheTppbmxpbmUtdGFibGU7CisgIHZlcnRpY2FsLWFsaWdu
OiBtaWRkbGU7IG1hcmdpbjogMHB4OyBmb250LXNpemU6IDAuNzVlbSI+Cis8c3ViIHN0eWxlPSJk
aXNwbGF5OiB0YWJsZS1yb3ciPjE8L3N1Yj4KKzxzdXAgaWQ9J3N1cCcgc3R5bGU9ImRpc3BsYXk6
IHRhYmxlLXJvdzsgIGZvbnQtc2l6ZTogMC43NWVtIj4oeCt5KTwvc3VwPgorPC9kaXY+Cis8L3Nw
YW4+PC9wPgorPHA+Cis8c3BhbiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+Cis8c3Bh
biBzdHlsZT0iIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGZvbnQtc3R5bGU6IGl0YWxpYyI+Wjwv
c3Bhbj48dGFibGUgc3R5bGU9ImRpc3BsYXk6IGlubGluZS10YWJsZTsgZm9udC1zaXplOiAwLjc1
ZW07CisgIGJvcmRlci1zcGFjaW5nOiAwcHg7ICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlIj4KKyAg
PHRyPjx0ZCBzdHlsZT0ibGluZS1oZWlnaHQ6IDFlbSI+eCt5PC90ZD48L3RyPgorICA8dHI+PHRk
IHN0eWxlPSJsaW5lLWhlaWdodDogMWVtIj5qK2sraTwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L3Nw
YW4+Cis8L3A+CisKKzxwIHN0eWxlPSJibG9jayI+PHNwYW4+WDwvc3Bhbj48c3BhbiBzdHlsZT0i
ZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogc3ViIj48c3Bhbj5YPC9zcGFu
Pjwvc3Bhbj48c3BhbiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBwb3NpdGlvbjogcmVs
YXRpdmU7IGxlZnQ6IC0xMnB4OyB2ZXJ0aWNhbC1hbGlnbjogc3VwZXIiPjxzcGFuPlg8L3NwYW4+
PC9zcGFuPjwvcD4KKzxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4KKy8vdmFyIGJhc2Ug
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFzZScpOworLy92YXIgZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzdXAnKTsKKy8vZS5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7Cisv
L2Uuc3R5bGUubGVmdCA9ICItIisoZS5vZmZzZXRMZWZ0LWJhc2Uub2Zmc2V0TGVmdC1iYXNlLm9m
ZnNldFdpZHRoKSsicHgiOworPC9zY3JpcHQ+Cis8cCBpZD0ndDEnPnN1YnNjcmlwdDogCis8bWF0
aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXN1Yj48bWk+
eDwvbWk+PG1uPjE8L21uPjwvbXN1Yj4KKzwvbWF0aD48L3A+Cis8cCBpZD0ndDInPnN1cGVyc2Ny
aXB0OiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4K
Kzxtc3VwPjxtaT54PC9taT48bW4+MTwvbW4+PC9tc3VwPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9
J3QzJz5ib3RoOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0
aE1MJz4KKzxtc3Vic3VwPjxtaT54PC9taT48bW4+MTwvbW4+PG1pPms8L21pPjwvbXN1YnN1cD4K
KzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0NCc+bG9uZyBzdWJzY3JpcHQgdy8gYm90aDogCis8bWF0
aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXN1YnN1cD4K
KzxtaT5aPC9taT4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1pPnk8L21pPjxtbz4rPC9t
bz48bWk+ejwvbWk+PC9tcm93PgorPG1pPmo8L21pPgorPC9tc3Vic3VwPgorPC9tYXRoPgorPC9w
PgorPHAgaWQ9J3Q1Jz5sb25nIHN1cGVyc2NyaXB0IHcvIGJvdGg6IAorPG1hdGggeG1sbnM9J2h0
dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG1zdWJzdXA+Cis8bWk+WjwvbWk+
Cis8bWk+eDwvbWk+Cis8bXJvdz48bWk+azwvbWk+PG1vPis8L21vPjxtaT5qPC9taT48L21yb3c+
Cis8L21zdWJzdXA+Cis8L21hdGg+Cis8L3A+Cis8cCBpZD0ndDYnPmxvbmcgdy8gYm90aDogCis8
bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bXN1YnN1
cD4KKzxtaT5aPC9taT4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1pPnk8L21pPjxtbz4r
PC9tbz48bWk+ejwvbWk+PC9tcm93PgorPG1yb3c+PG1pPms8L21pPjxtbz4rPC9tbz48bWk+ajwv
bWk+PC9tcm93PgorPC9tc3Vic3VwPgorPC9tYXRoPgorPC9wPgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL21hdGhtbC9wcmVz
ZW50YXRpb24vdW5kZXJvdmVyLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21hdGht
bC9wcmVzZW50YXRpb24vdW5kZXJvdmVyLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvbWF0aG1sL3ByZXNlbnRhdGlvbi91bmRlcm92ZXIueGh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzcgQEAKKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJz4K
KzxoZWFkPgorPHRpdGxlPlVuZGVyL092ZXI8L3RpdGxlPgorPHN0eWxlIHR5cGU9J3RleHQvY3Nz
Jz4KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSd0MSc+dW5kZXI6IAorPG1hdGgg
eG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnPgorPG11bmRlcj4KKzxt
aT5CPC9taT4KKzxtaT54PC9taT4KKzwvbXVuZGVyPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Qy
Jz51bmRlcjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhN
TCc+Cis8bXVuZGVyPgorPG1pPkI8L21pPgorPG1pPlg8L21pPgorPC9tdW5kZXI+Cis8L21hdGg+
Cis8L3A+Cis8cCBpZD0ndDMnPm92ZXI6IAorPG1hdGggeG1sbnM9J2h0dHA6Ly93d3cudzMub3Jn
LzE5OTgvTWF0aC9NYXRoTUwnPgorPG1vdmVyPgorPG1pPkI8L21pPgorPG1pPng8L21pPgorPC9t
b3Zlcj4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0NCc+b3ZlcjogCis8bWF0aCB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCc+Cis8bW92ZXI+Cis8bWk+QjwvbWk+Cis8
bWk+eTwvbWk+Cis8L21vdmVyPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q1Jz51bmRlciAmYW1w
OyBvdmVyOiAKKzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1M
Jz4KKzxtdW5kZXJvdmVyPgorPG1pPkI8L21pPgorPG1pPng8L21pPgorPG1pPnk8L21pPgorPC9t
dW5kZXJvdmVyPgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q2Jz51bmRlciAmYW1wOyBvdmVyOiAK
KzxtYXRoIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtdW5k
ZXJvdmVyPgorPG1pPkI8L21pPgorPG1pPlg8L21pPgorPG1pPnk8L21pPgorPC9tdW5kZXJvdmVy
PgorPC9tYXRoPgorPC9wPgorPHAgaWQ9J3Q3Jz51bmRlciAmYW1wOyBvdmVyOiAKKzxtYXRoIHht
bG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJz4KKzxtdW5kZXJvdmVyPgor
PG1vIG1hdGhzaXplPSdiaWcnPiYjeDIyMTE7PC9tbz4KKzxtcm93PjxtaT5pPC9taT48bW8+PTwv
bW8+PG1pPjA8L21pPjwvbXJvdz4KKzxtcm93PjxtaT54PC9taT48bW8+KzwvbW8+PG1pPnk8L21p
PjwvbXJvdz4KKzwvbXVuZGVyb3Zlcj4KKzwvbWF0aD4KKzwvcD4KKzxwIGlkPSd0OCc+dW5kZXIg
JmFtcDsgb3ZlcjogCis8bWF0aCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01h
dGhNTCc+Cis8bXVuZGVyb3Zlcj4KKzxtbyBtYXRoc2l6ZT0nYmlnJz4mI3gyMjExOzwvbW8+Cis8
bXJvdz48bWk+STwvbWk+PG1vPj08L21vPjxtaT4wPC9taT48L21yb3c+Cis8bXJvdz48bWk+WDwv
bWk+PG1vPis8L21vPjxtaT55PC9taT48L21yb3c+Cis8L211bmRlcm92ZXI+Cis8L21hdGg+Cis8
L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="20290"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>