<?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>26258</bug_id>
          
          <creation_ts>2009-06-08 14:09:33 -0700</creation_ts>
          <short_desc>Finish upstreaming V8Custom</short_desc>
          <delta_ts>2009-06-10 11:49:08 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>124805</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-08 14:09:33 -0700</bug_when>
    <thetext>See summary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124809</commentid>
    <comment_count>1</comment_count>
      <attachid>31063</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-08 14:24:05 -0700</bug_when>
    <thetext>Created attachment 31063
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124828</commentid>
    <comment_count>2</comment_count>
      <attachid>31063</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-08 16:05:09 -0700</bug_when>
    <thetext>Comment on attachment 31063
patch

This is a really great start.  There are a few things to fix before it will be ready to land that I&apos;ve noted below so r- for now.


&gt; Index: WebCore/bindings/v8/custom/V8WebKitPointConstructor.cpp
&gt; @@ -0,0 +1,44 @@
&gt; +/*
&gt; + * Copyright (C) 2007-2009 Google Inc. All rights reserved.

Use comma separated years.


&gt; Index: WebCore/bindings/v8/custom/V8CustomBinding.h
&gt; ===================================================================
&gt; @@ -31,19 +31,552 @@
&gt;  #ifndef V8CustomBinding_h
&gt;  #define V8CustomBinding_h
&gt;  
&gt; -// FIXME: This is a temporary forwarding header until all bindings have migrated
&gt; -// over and v8_custom actually becomes V8CustomBinding.
&gt; -#include &quot;v8_custom.h&quot;
&gt; +#include &lt;v8.h&gt;
&gt; +#include &quot;V8Index.h&quot;

Move &lt;v8.h&gt; to be after &quot;V8Index.h&quot;

&gt;  
&gt; +struct NPObject;
&gt; +
&gt; +#define CALLBACK_FUNC_DECL(NAME)                \
The trailing slashes seem inconsistent through this patch (sometimes lots of spaces, other times 0, 1, or 2).  It would be nice to make them all just one space after the end of the code.

&gt; +v8::Handle&lt;v8::Value&gt; V8Custom::v8##NAME##Callback(const v8::Arguments&amp; args)

Other places that have define continuations seem to indent the continued line (or you could just expand these to be on one line).

&gt;  namespace WebCore {
&gt;  
&gt; -    class HTMLFrameElementBase;
&gt; -    class Element;
&gt; -    class String;
&gt; +class HTMLFrameElementBase;
&gt; +class Element;
&gt; +class Frame;
&gt; +class V8Proxy;
&gt; +class String;
&gt; +class HTMLCollection;
&gt; +class DOMWindow;

Sort these. 
Also inside a header file items in a namespace should be indented.


&gt; +#define DECLARE_PROPERTY_ACCESSOR_GETTER(NAME) \
&gt; +static v8::Handle&lt;v8::Value&gt; v8##NAME##AccessorGetter(\
&gt; +    v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info);
&gt; +
&gt; +#define DECLARE_PROPERTY_ACCESSOR_SETTER(NAME)  \
&gt; +static void v8##NAME##AccessorSetter(v8::Local&lt;v8::String&gt; name, \
&gt; +                                     v8::Local&lt;v8::Value&gt; value, \
&gt; +                                     const v8::AccessorInfo&amp; info);
&gt; +
&gt; +#define DECLARE_PROPERTY_ACCESSOR(NAME) \
&gt; +  DECLARE_PROPERTY_ACCESSOR_GETTER(NAME) \
&gt; +  DECLARE_PROPERTY_ACCESSOR_SETTER(NAME)
&gt; +
&gt; +
&gt; +#define DECLARE_NAMED_PROPERTY_GETTER(NAME)  \
&gt; +static v8::Handle&lt;v8::Value&gt; v8##NAME##NamedPropertyGetter(\
&gt; +    v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info);
&gt; +
&gt; +#define DECLARE_NAMED_PROPERTY_SETTER(NAME)  \
&gt; +static v8::Handle&lt;v8::Value&gt; v8##NAME##NamedPropertySetter(\
&gt; +    v8::Local&lt;v8::String&gt; name, \
&gt; +    v8::Local&lt;v8::Value&gt; value, \
&gt; +    const v8::AccessorInfo&amp; info);
&gt; +
&gt; +#define DECLARE_NAMED_PROPERTY_DELETER(NAME)  \
&gt; +static v8::Handle&lt;v8::Boolean&gt; v8##NAME##NamedPropertyDeleter(\
&gt; +    v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info);
&gt; +

Would be nice to remove the ; from the #define so that the user of the define would have to add it.



&gt; +DECLARE_PROPERTY_ACCESSOR(CanvasRenderingContext2DStrokeStyle)

These should be indented (like the method declarations that they are).


&gt; +    static NPObject* GetHTMLPlugInElementNPObject(v8::Handle&lt;v8::Object&gt; object);

Since the parameter name &quot;object&quot; doesn&apos;t add any information, it should be removed.


&gt; +    static V8ClassIndex::V8WrapperType DowncastSVGPathSeg(void* path_seg);

path_seg has incorrect casing.


&gt; +    static v8::Handle&lt;v8::Value&gt; WindowSetTimeoutImpl(const v8::Arguments&amp; args,
&gt; +                                                    bool single_shot);
single_shot incorrect casing (and the indentation is off).

&gt; +    static void ClearTimeoutImpl(const v8::Arguments&amp; args);

Remove the param name &quot;args&quot;.



&gt; Index: WebCore/bindings/v8/custom/V8CustomBinding.cpp
&gt; ===================================================================


&gt; +// DOMImplementation is a singleton in WebCore.  If we use our normal
&gt; +// mapping from DOM objects to V8 wrappers, the same wrapper will be
&gt; +// shared for all frames in the same process.  This is a major
&gt; +// security problem.  Therefore, we generate a DOMImplementation
&gt; +// wrapper per document and store it in an internal field of the
&gt; +// document.  Since the DOMImplementation object is a singleton, we do
&gt; +// not have to do anything to keep the DOMImplementation object alive
&gt; +// for the lifetime of the wrapper.

WebKit uses a single space after .

&gt; +ACCESSOR_GETTER(DocumentImplementation)
&gt; +{
&gt; +    ASSERT(info.Holder()-&gt;InternalFieldCount() &gt;= kDocumentMinimumInternalFieldCount);
&gt; +    // Check if the internal field already contains a wrapper.
&gt; +    v8::Local&lt;v8::Value&gt; implementation = info.Holder()-&gt;GetInternalField(kDocumentImplementationIndex);
&gt; +    if (!implementation-&gt;IsUndefined())
&gt; +        return implementation;

&gt; +    // Generate a wrapper.
Does this comment clarify anything?

&gt; +    Document* doc = V8Proxy::DOMWrapperToNative&lt;Document&gt;(info.Holder());

Avoid abbreviations s/doc/document/




&gt; +// --------------- Security Checks -------------------------
&gt; +INDEXED_ACCESS_CHECK(History)
&gt; +{
&gt; +    // Only allow same origin access
Add &quot;.&quot;

&gt; +    History* imp = V8Proxy::ToNativeObject&lt;History&gt;(V8ClassIndex::HISTORY, host);

&quot;imp&quot; should be replaced with a better name (several instance).

&gt; +
&gt; +// static
&gt; +Frame* V8Custom::GetTargetFrame(v8::Local&lt;v8::Object&gt; host, v8::Local&lt;v8::Value&gt; data)
&gt; +{
&gt;
&gt; +        DOMWindow* target_win = V8Proxy::ToNativeObject&lt;DOMWindow&gt;(V8ClassIndex::DOMWINDOW, window);
target_win bad casing.


&gt; +
&gt; +#if ENABLE(SVG)
&gt; +V8ClassIndex::V8WrapperType V8Custom::DowncastSVGPathSeg(void* path_seg) {
path_seg bad casing.
incorrect { placement.


&gt; +    WebCore::SVGPathSeg *real_path_seg = reinterpret_cast&lt;WebCore::SVGPathSeg*&gt;(path_seg);

* is in the wrong location.
real_path_seg  bad casing.

&gt; +
&gt; +    switch (real_path_seg-&gt;pathSegType()) {
&gt; +#define MAKE_CASE(svg_val, v8_val) case WebCore::SVGPathSeg::svg_val: return V8ClassIndex::v8_val;

svg_value,v8_vl bad casing (and abbreviated name).
Avoid ending with ;


MAKE_CASE when used should be indented.

&gt; +#endif  // ENABLE(SVG)
Since space before //</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124973</commentid>
    <comment_count>3</comment_count>
      <attachid>31101</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-09 10:47:21 -0700</bug_when>
    <thetext>Created attachment 31101
patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124975</commentid>
    <comment_count>4</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-09 10:48:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=31101) [review]
&gt; patch2
&gt; 

New patch up.  Not sure I got the indentations exactly right, but it should at least be close this time...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125021</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-09 14:59:49 -0700</bug_when>
    <thetext>If no one snags this before tonight, I&apos;ll review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125041</commentid>
    <comment_count>6</comment_count>
      <attachid>31101</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-09 17:22:03 -0700</bug_when>
    <thetext>Comment on attachment 31101
patch2

This is a lot better.  Just a few last changes and we&apos;ll both be done with this one :)


&gt; Index: WebCore/bindings/v8/custom/V8CustomBinding.cpp
&gt; +ACCESSOR_GETTER(DocumentImplementation)
&gt; +{
&gt; +    ASSERT(info.Holder()-&gt;InternalFieldCount() &gt;= kDocumentMinimumInternalFieldCount);
&gt; +    // Check if the internal field already contains a wrapper.
&gt; +    v8::Local&lt;v8::Value&gt; implementation = info.Holder()-&gt;GetInternalField(kDocumentImplementationIndex);
&gt; +    if (!implementation-&gt;IsUndefined())
&gt; +        return implementation;
&gt; +    // Generate a wrapper.
&gt; +    Document* document = V8Proxy::DOMWrapperToNative&lt;Document&gt;(info.Holder());
&gt; +    v8::Handle&lt;v8::Value&gt; wrapper = V8Proxy::DOMImplementationToV8Object(document-&gt;implementation());
&gt; +    // Store the wrapper in the internal field.
&gt; +    info.Holder()-&gt;SetInternalField(kDocumentImplementationIndex, wrapper);
&gt; +
This code feels very dense.  It would look better with returns before each comment line.



Right before NAMED_ACCESS_CHECK(History) there is an extra blank line.


&gt; +// static
I would just delete this comment.

&gt; +Frame* V8Custom::GetTargetFrame(v8::Local&lt;v8::Object&gt; host, v8::Local&lt;v8::Value&gt; data)
&gt; +{
&gt; +    Frame* target = 0;
&gt; +    switch (V8ClassIndex::FromInt(data-&gt;Int32Value())) {
&gt; +    case V8ClassIndex::DOMWINDOW: {
&gt; +        v8::Handle&lt;v8::Value&gt; window = V8Proxy::LookupDOMWrapper(V8ClassIndex::DOMWINDOW, host);
&gt; +        if (window.IsEmpty())
&gt; +            return target;
&gt; +
&gt; +        DOMWindow* targetWin = V8Proxy::ToNativeObject&lt;DOMWindow&gt;(V8ClassIndex::DOMWINDOW, window);
s/targetWin/targetWindow/ (avoid abbreviations).


&gt; +#if ENABLE(SVG)
&gt; +V8ClassIndex::V8WrapperType V8Custom::DowncastSVGPathSeg(void* path_seg)
 path_seg bad casing -- use camelCase.


&gt; Index: WebCore/bindings/v8/custom/V8CustomBinding.h
&gt; ===================================================================
&gt; +
&gt; +#define ACCESSOR_GETTER(NAME) \
&gt; +v8::Handle&lt;v8::Value&gt; V8Custom::v8##NAME##AccessorGetter( \
&gt; +    v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)

These defines that aren&apos;t indented are confusing to read.

Here&apos;s two alternatives:

#define ACCESSOR_GETTER(NAME) \
    v8::Handle&lt;v8::Value&gt; V8Custom::v8##NAME##AccessorGetter( \
        v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)

#define ACCESSOR_GETTER(NAME) \
    v8::Handle&lt;v8::Value&gt; V8Custom::v8##NAME##AccessorGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)


&gt; +    class V8Custom {
&gt; +    public:
&gt; +
Typically this is no blank line after public:, private:, etc.
&gt; +        // Constants.


&gt; +        static const int kMessagePortInternalFieldCount = kDefaultWrapperInternalFieldCount + 2;
&gt; +
&gt; +    #if ENABLE(WORKERS)
Don&apos;t indent the preprocessor directives.

&gt; +        static const int kStyleSheetOwnerNodeIndex = kDefaultWrapperInternalFieldCount + 0;
&gt; +        static const int kStyleSheetInternalFieldCount = kDefaultWrapperInternalFieldCount + 1;
&gt; +
&gt; +    #define DECLARE_PROPERTY_ACCESSOR_GETTER(NAME) \
Don&apos;t indent the preprocessor directives.

&gt; +
&gt; +    #define DECLARE_PROPERTY_ACCESSOR(NAME) DECLARE_PROPERTY_ACCESSOR_GETTER(NAME); DECLARE_PROPERTY_ACCESSOR_SETTER(NAME);

I&apos;d omit the trailing &quot;;&quot;

&gt; +        DECLARE_PROPERTY_ACCESSOR_GETTER(DOMWindowCrypto);
&gt; +        // Customized getter&amp;setter of DOMWindow.location

s/&amp;/and/  This comment doesn&apos;t event seem correct as it is just a setter.

These comments appear to be inconsistently done and don&apos;t seem to provide any value.  (They don&apos;t answer Why? just What? and the code already answer What? just fine.)

A blank line to separate the different objects seems sufficient (and delete the comments).



&gt; +        DECLARE_CALLBACK(NodeAppendChild);
&gt; +
&gt; +        // Custom implementation is Navigator properties.
The sentence doesn&apos;t seem grammatically correct.

&gt; +        // We actually only need this because WebKit has
&gt; +        // navigator.appVersion as custom. Our version just
&gt; +        // passes through.
I like this comment as it answers: Why?
&gt; +        DECLARE_PROPERTY_ACCESSOR(NavigatorAppVersion);

&gt; +        #if ENABLE(DATABASE)
Don&apos;t indent preprocessor directives.

&gt; +
&gt; +    private:
&gt; +        static v8::Handle&lt;v8::Value&gt; WindowSetTimeoutImpl(const v8::Arguments&amp; args, bool singleShot);
Remove the param name &quot;args&quot; since it doesn&apos;t add any information.
 


&gt; Index: WebCore/bindings/v8/custom/V8WebKitPointConstructor.cpp
&gt; ===================================================================
&gt; --- WebCore/bindings/v8/custom/V8WebKitPointConstructor.cpp	(revision 0)
&gt; +++ WebCore/bindings/v8/custom/V8WebKitPointConstructor.cpp	(revision 0)
&gt; @@ -0,0 +1,46 @@
&gt; +/*
&gt; + * Copyright (C) 2007,2008,2009 Google Inc. All rights reserved.
Spaces after commas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125160</commentid>
    <comment_count>7</comment_count>
      <attachid>31135</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2009-06-10 10:28:41 -0700</bug_when>
    <thetext>Created attachment 31135
patch3

Ok, I think I&apos;ve got everything standardized now.  We&apos;ll see...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125174</commentid>
    <comment_count>8</comment_count>
      <attachid>31135</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-10 11:24:30 -0700</bug_when>
    <thetext>Comment on attachment 31135
patch3

r+

&quot; // Custom implementation is Navigator properties.&quot;
As agreed, we&apos;ll remove this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125175</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-10 11:24:58 -0700</bug_when>
    <thetext>Assigned to levin for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125178</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-10 11:49:08 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/44579

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31063</attachid>
            <date>2009-06-08 14:24:05 -0700</date>
            <delta_ts>2009-06-09 10:47:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>34126</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDUwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDYtMDggIE5hdGUgQ2hhcGluICA8amFwaGV0QGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlu
aXNoIG1vdmluZyBWOEN1c3RvbSBmcm9tIHNyYy5jaHJvbWl1bS5vcmcgdG8gc3ZuLndlYmtpdC5v
cmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2
MjU4CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcDog
RmluaXNoZWQgdXBzdHJlYW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9HRVRURVIp
OiBNb3ZlZCBmcm9tIHY4X2N1c3RvbS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpJTkRFWEVEX0FD
Q0VTU19DSEVDSyk6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6
Ok5BTUVEX0FDQ0VTU19DSEVDSyk6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlY4Q3VzdG9tOjpHZXRUYXJnZXRGcmFtZSk6IE1vdmVkIGZyb20gdjhfY3VzdG9t
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tOjpEb3duY2FzdFNWR1BhdGhTZWcpOiBN
b3ZlZCBmcm9tIHY4X2N1c3RvbS5jcHAuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3VzdG9tQmluZGluZy5oOiBGaW5pc2hlZCB1cHN0cmVhbWluZy4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6
IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJh
bnNhY3Rpb25DdXN0b20uY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4K
KwogMjAwOS0wNi0wOCAgQWRhbSBMYW5nbGV5ICA8YWdsQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTaWVkZWwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERhdGFiYXNlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNDQ1MDQpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsMTAgKzMzLDEwIEBACiAjaWYgRU5BQkxFKERBVEFCQVNFKQogCiAjaW5jbHVkZSAidjhf
YmluZGluZy5oIgotI2luY2x1ZGUgInY4X2N1c3RvbS5oIgogI2luY2x1ZGUgInY4X3Byb3h5Lmgi
CiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgog
I2luY2x1ZGUgIlY4Q3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIlY4
Q3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21W
b2lkQ2FsbGJhY2suaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0
UG9pbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0NBTExCQUNLX0ZVTkNfREVDTChXZWJLaXRQb2ludENvbnN0cnVjdG9yKQorewor
ICAgIElOQ19TVEFUUygiRE9NLldlYktpdFBvaW50LkNvbnN0cnVjdG9yIik7CisgICAgcmV0dXJu
IFY4UHJveHk6OkNvbnN0cnVjdERPTU9iamVjdDxWOENsYXNzSW5kZXg6OldFQktJVFBPSU5ULCBX
ZWJLaXRQb2ludD4oYXJncyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRS
b3dMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gNDQ1MDQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywxMCArMzMsMTAgQEAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKICNpbmNsdWRlICJ2OF9i
aW5kaW5nLmgiCi0jaW5jbHVkZSAidjhfY3VzdG9tLmgiCiAjaW5jbHVkZSAidjhfcHJveHkuaCIK
IAogI2luY2x1ZGUgIlNRTFJlc3VsdFNldFJvd0xpc3QuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJp
bmRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkocmV2aXNpb24gNDQ1MDQpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsMTkgKzMxLDU1MiBAQAogI2lmbmRlZiBWOEN1c3RvbUJpbmRpbmdfaAogI2RlZmluZSBW
OEN1c3RvbUJpbmRpbmdfaAogCi0vLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBmb3J3YXJk
aW5nIGhlYWRlciB1bnRpbCBhbGwgYmluZGluZ3MgaGF2ZSBtaWdyYXRlZAotLy8gb3ZlciBhbmQg
djhfY3VzdG9tIGFjdHVhbGx5IGJlY29tZXMgVjhDdXN0b21CaW5kaW5nLgotI2luY2x1ZGUgInY4
X2N1c3RvbS5oIgorI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSAiVjhJbmRleC5oIgogCitzdHJ1
Y3QgTlBPYmplY3Q7CisKKyNkZWZpbmUgQ0FMTEJBQ0tfRlVOQ19ERUNMKE5BTUUpICAgICAgICAg
ICAgICAgIFwKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbTo6djgjI05BTUUjI0NhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCisKKyNkZWZpbmUgQUNDRVNTT1JfR0VUVEVS
KE5BTUUpIFwKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbTo6djgjI05BTUUjI0FjY2Vz
c29yR2V0dGVyKFwKKyAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKKworI2RlZmluZSBBQ0NFU1NPUl9TRVRURVIoTkFNRSkgXAordm9p
ZCBWOEN1c3RvbTo6djgjI05BTUUjI0FjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorCisjZGVmaW5lIElOREVYRURf
UFJPUEVSVFlfR0VUVEVSKE5BTUUpICBcCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206
OnY4IyNOQU1FIyNJbmRleGVkUHJvcGVydHlHZXR0ZXIoXAorICAgIHVpbnQzMl90IGluZGV4LCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorCisjZGVmaW5lIElOREVYRURfUFJPUEVSVFlf
U0VUVEVSKE5BTUUpICBcCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4IyNOQU1F
IyNJbmRleGVkUHJvcGVydHlTZXR0ZXIoXAorICAgIHVpbnQzMl90IGluZGV4LCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKKworI2RlZmlu
ZSBJTkRFWEVEX1BST1BFUlRZX0RFTEVURVIoTkFNRSkgXAordjg6OkhhbmRsZTx2ODo6Qm9vbGVh
bj4gVjhDdXN0b206OnY4IyNOQU1FIyNJbmRleGVkUHJvcGVydHlEZWxldGVyKFwKKyAgICB1aW50
MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKKworI2RlZmluZSBOQU1F
RF9QUk9QRVJUWV9HRVRURVIoTkFNRSkgIFwKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhD
dXN0b206OnY4IyNOQU1FIyNOYW1lZFByb3BlcnR5R2V0dGVyKFwKKyAgICB2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKKworI2RlZmluZSBO
QU1FRF9QUk9QRVJUWV9TRVRURVIoTkFNRSkgIFwKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhDdXN0b206OnY4IyNOQU1FIyNOYW1lZFByb3BlcnR5U2V0dGVyKFwKKyAgICB2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIFwKKyAgICBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorCisjZGVmaW5lIE5BTUVEX1BST1BFUlRZX0RFTEVU
RVIoTkFNRSkgXAorICAgIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IFY4Q3VzdG9tOjp2OCMjTkFN
RSMjTmFtZWRQcm9wZXJ0eURlbGV0ZXIoXAorICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorCisjZGVmaW5lIE5BTUVEX0FDQ0VTU19D
SEVDSyhOQU1FKSBcCisgICAgYm9vbCBWOEN1c3RvbTo6djgjI05BTUUjI05hbWVkU2VjdXJpdHlD
aGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgXAorICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IGtleSwgXAorICAgIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIFwKKyAgICB2ODo6TG9jYWw8djg6
OlZhbHVlPiBkYXRhKQorCisjZGVmaW5lIElOREVYRURfQUNDRVNTX0NIRUNLKE5BTUUpIFwKKyAg
ICBib29sIFY4Q3VzdG9tOjp2OCMjTkFNRSMjSW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IGhvc3QsIFwKKyAgICB1aW50MzJfdCBpbmRleCwgXAorICAgIHY4OjpBY2Nl
c3NUeXBlIHR5cGUsIFwKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKQorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBIVE1MRnJhbWVFbGVtZW50QmFzZTsKLSAgICBjbGFz
cyBFbGVtZW50OwotICAgIGNsYXNzIFN0cmluZzsKK2NsYXNzIEhUTUxGcmFtZUVsZW1lbnRCYXNl
OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEZyYW1lOworY2xhc3MgVjhQcm94eTsKK2NsYXNzIFN0
cmluZzsKK2NsYXNzIEhUTUxDb2xsZWN0aW9uOworY2xhc3MgRE9NV2luZG93OwogCi0gICAgYm9v
bCBhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChIVE1MRnJhbWVFbGVtZW50QmFz
ZSosIFN0cmluZyB2YWx1ZSk7Ci0gICAgYm9vbCBhbGxvd1NldHRpbmdTcmNUb0phdmFzY3JpcHRV
UkwoRWxlbWVudCosIFN0cmluZyBuYW1lLCBTdHJpbmcgdmFsdWUpOworYm9vbCBhbGxvd1NldHRp
bmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChIVE1MRnJhbWVFbGVtZW50QmFzZSosIFN0cmluZyB2
YWx1ZSk7Citib29sIGFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTChFbGVtZW50KiwgU3Ry
aW5nIG5hbWUsIFN0cmluZyB2YWx1ZSk7CiAKK2NsYXNzIFY4Q3VzdG9tIHsKK3B1YmxpYzoKKwor
ICAgIC8vIENvbnN0YW50cy4KKyAgICBzdGF0aWMgY29uc3QgaW50IGtET01XcmFwcGVyVHlwZUlu
ZGV4ID0gMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtET01XcmFwcGVyT2JqZWN0SW5kZXggPSAx
OworICAgIHN0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
ID0gMjsKKworICAgIHN0YXRpYyBjb25zdCBpbnQga05QT2JqZWN0SW50ZXJuYWxGaWVsZENvdW50
ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKworICAgIHN0YXRpYyBj
b25zdCBpbnQga0RvY3VtZW50SW1wbGVtZW50YXRpb25JbmRleCA9IGtEZWZhdWx0V3JhcHBlcklu
dGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIGNvbnN0IGludCBrRG9jdW1lbnRNaW5p
bXVtSW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
ICsgMTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQga0hUTUxEb2N1bWVudE1hcmtlckluZGV4ID0g
a0RvY3VtZW50TWluaW11bUludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIGNvbnN0
IGludCBrSFRNTERvY3VtZW50U2hhZG93SW5kZXggPSBrRG9jdW1lbnRNaW5pbXVtSW50ZXJuYWxG
aWVsZENvdW50ICsgMTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtIVE1MRG9jdW1lbnRJbnRlcm5h
bEZpZWxkQ291bnQgPSBrRG9jdW1lbnRNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50ICsgMjsKKwor
ICAgIHN0YXRpYyBjb25zdCBpbnQga1hNTEh0dHBSZXF1ZXN0Q2FjaGVJbmRleCA9IGtEZWZhdWx0
V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIGNvbnN0IGludCBrWE1M
SHR0cFJlcXVlc3RJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgKyAxOworCisgICAgc3RhdGljIGNvbnN0IGludCBrTWVzc2FnZUNoYW5uZWxQb3J0
MUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0
aWMgY29uc3QgaW50IGtNZXNzYWdlQ2hhbm5lbFBvcnQySW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJ
bnRlcm5hbEZpZWxkQ291bnQgKyAxOworICAgIHN0YXRpYyBjb25zdCBpbnQga01lc3NhZ2VDaGFu
bmVsSW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
ICsgMjsKKworICAgIHN0YXRpYyBjb25zdCBpbnQga01lc3NhZ2VQb3J0UmVxdWVzdENhY2hlSW5k
ZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgIHN0YXRpYyBj
b25zdCBpbnQga01lc3NhZ2VQb3J0RW50YW5nbGVkUG9ydEluZGV4ID0ga0RlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtNZXNzYWdlUG9y
dEludGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCAr
IDI7CisKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICBzdGF0aWMgY29uc3QgaW50IGtXb3JrZXJS
ZXF1ZXN0Q2FjaGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7
CisgICAgc3RhdGljIGNvbnN0IGludCBrV29ya2VySW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1
bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQg
a1dvcmtlckNvbnRleHRSZXF1ZXN0Q2FjaGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFs
RmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIGNvbnN0IGludCBrV29ya2VyQ29udGV4dEludGVy
bmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7Cisj
ZW5kaWYKKworICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0NvbnNvbGVJbmRleCA9IGtE
ZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIGNvbnN0IGlu
dCBrRE9NV2luZG93SGlzdG9yeUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENv
dW50ICsgMTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dMb2NhdGlvbmJhckluZGV4
ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMjsKKyAgICBzdGF0aWMgY29u
c3QgaW50IGtET01XaW5kb3dNZW51YmFySW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgKyAzOworICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd05hdmlnYXRvcklu
ZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgNDsKKyAgICBzdGF0aWMg
Y29uc3QgaW50IGtET01XaW5kb3dQZXJzb25hbGJhckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50
ZXJuYWxGaWVsZENvdW50ICsgNTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dTY3Jl
ZW5JbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDY7CisgICAgc3Rh
dGljIGNvbnN0IGludCBrRE9NV2luZG93U2Nyb2xsYmFyc0luZGV4ID0ga0RlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50ICsgNzsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dT
ZWxlY3Rpb25JbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDg7Cisg
ICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93U3RhdHVzYmFySW5kZXggPSBrRGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyA5OworICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdp
bmRvd1Rvb2xiYXJJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDEw
OworICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0xvY2F0aW9uSW5kZXggPSBrRGVmYXVs
dFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxMTsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtE
T01XaW5kb3dET01TZWxlY3Rpb25JbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRD
b3VudCArIDEyOworICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0ludGVybmFsRmllbGRD
b3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDEzOworCisgICAgc3Rh
dGljIGNvbnN0IGludCBrU3R5bGVTaGVldE93bmVyTm9kZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IGtTdHlsZVNoZWV0
SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsg
MTsKKworI2RlZmluZSBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihOQU1FKSBcCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4IyNOQU1FIyNBY2Nlc3NvckdldHRlcihcCisg
ICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pOworCisjZGVmaW5lIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKE5BTUUpICBc
CitzdGF0aWMgdm9pZCB2OCMjTkFNRSMjQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pOworCisjZGVmaW5lIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoTkFNRSkgXAorICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRF
UihOQU1FKSBcCisgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKE5BTUUpCisKKwor
I2RlZmluZSBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihOQU1FKSAgXAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2OCMjTkFNRSMjTmFtZWRQcm9wZXJ0eUdldHRlcihcCisgICAg
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
OworCisjZGVmaW5lIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfU0VUVEVSKE5BTUUpICBcCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4IyNOQU1FIyNOYW1lZFByb3BlcnR5U2V0dGVyKFwK
KyAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgXAorICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBcCisgICAgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7CisKKyNkZWZp
bmUgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9ERUxFVEVSKE5BTUUpICBcCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6Qm9vbGVhbj4gdjgjI05BTUUjI05hbWVkUHJvcGVydHlEZWxldGVyKFwKKyAgICB2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7
CisKKyNkZWZpbmUgVVNFX05BTUVEX1BST1BFUlRZX0dFVFRFUihOQU1FKSBcCisgIFY4Q3VzdG9t
Ojp2OCMjTkFNRSMjTmFtZWRQcm9wZXJ0eUdldHRlcgorCisjZGVmaW5lIFVTRV9OQU1FRF9QUk9Q
RVJUWV9TRVRURVIoTkFNRSkgXAorICBWOEN1c3RvbTo6djgjI05BTUUjI05hbWVkUHJvcGVydHlT
ZXR0ZXIKKworI2RlZmluZSBVU0VfTkFNRURfUFJPUEVSVFlfREVMRVRFUihOQU1FKSBcCisgIFY4
Q3VzdG9tOjp2OCMjTkFNRSMjTmFtZWRQcm9wZXJ0eURlbGV0ZXIKKworI2RlZmluZSBERUNMQVJF
X0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKE5BTUUpICBcCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHY4IyNOQU1FIyNJbmRleGVkUHJvcGVydHlHZXR0ZXIoXAorICAgIHVpbnQzMl90IGlu
ZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKKworI2RlZmluZSBERUNMQVJFX0lO
REVYRURfUFJPUEVSVFlfU0VUVEVSKE5BTUUpICBcCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHY4IyNOQU1FIyNJbmRleGVkUHJvcGVydHlTZXR0ZXIoXAorICAgIHVpbnQzMl90IGluZGV4
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
byk7CisKKyNkZWZpbmUgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0RFTEVURVIoTkFNRSkgIFwK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpCb29sZWFuPiB2OCMjTkFNRSMjSW5kZXhlZFByb3BlcnR5
RGVsZXRlcihcCisgICAgdWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pOworCisjZGVmaW5lIFVTRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihOQU1FKSBcCisgIFY4
Q3VzdG9tOjp2OCMjTkFNRSMjSW5kZXhlZFByb3BlcnR5R2V0dGVyCisKKyNkZWZpbmUgVVNFX0lO
REVYRURfUFJPUEVSVFlfU0VUVEVSKE5BTUUpIFwKKyAgVjhDdXN0b206OnY4IyNOQU1FIyNJbmRl
eGVkUHJvcGVydHlTZXR0ZXIKKworI2RlZmluZSBVU0VfSU5ERVhFRF9QUk9QRVJUWV9ERUxFVEVS
KE5BTUUpIFwKKyAgVjhDdXN0b206OnY4IyNOQU1FIyNJbmRleGVkUHJvcGVydHlEZWxldGVyCisK
KyNkZWZpbmUgREVDTEFSRV9DQUxMQkFDSyhOQU1FKSAgICAgICAgICAgICAgICBcCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4IyNOQU1FIyNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKTsKKworI2RlZmluZSBVU0VfQ0FMTEJBQ0soTkFNRSkgXAorICBWOEN1c3RvbTo6
djgjI05BTUUjI0NhbGxiYWNrCisKKyNkZWZpbmUgREVDTEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0so
TkFNRSkgXAorc3RhdGljIGJvb2wgdjgjI05BTUUjI05hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9j
YWw8djg6Ok9iamVjdD4gaG9zdCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBrZXksIFwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKTsK
KworI2RlZmluZSBERUNMQVJFX0lOREVYRURfQUNDRVNTX0NIRUNLKE5BTUUpIFwKK3N0YXRpYyBi
b29sIHY4IyNOQU1FIyNJbmRleGVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4g
aG9zdCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGluZGV4LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
djg6OkFjY2Vzc1R5cGUgdHlwZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpOworCitERUNMQVJFX1BST1BFUlRZ
X0FDQ0VTU09SKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFN0cm9rZVN0eWxlKQorREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUihDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRGaWxsU3R5bGUpCitERUNM
QVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihET01XaW5kb3dFdmVudCkKK0RFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0NyeXB0bykKKy8vIEN1c3RvbWl6ZWQgZ2V0
dGVyJnNldHRlciBvZiBET01XaW5kb3cubG9jYXRpb24KK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNT
T1JfU0VUVEVSKERPTVdpbmRvd0xvY2F0aW9uKQorLy8gQ3VzdG9taXplZCBzZXR0ZXIgb2YgRE9N
V2luZG93Lm9wZW5lcgorREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoRE9NV2luZG93
T3BlbmVyKQorCitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERvY3VtZW50TG9jYXRpb24pCitE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERvY3VtZW50SW1wbGVtZW50YXRpb24pCitERUNMQVJF
X1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihFdmVudFNyY0VsZW1lbnQpCitERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKEV2ZW50UmV0dXJuVmFsdWUpCitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
X0dFVFRFUihFdmVudERhdGFUcmFuc2ZlcikKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VU
VEVSKEV2ZW50Q2xpcGJvYXJkRGF0YSkKKworLy8gR2V0dGVyL1NldHRlciBmb3Igd2luZG93IGV2
ZW50IGhhbmRsZXJzCitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERPTVdpbmRvd0V2ZW50SGFu
ZGxlcikKKy8vIEdldHRlci9TZXR0ZXIgZm9yIEVsZW1lbnQgZXZlbnQgaGFuZGxlcnMKK0RFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1IoRWxlbWVudEV2ZW50SGFuZGxlcikKKworLy8gSFRNTENhbnZh
c0VsZW1lbnQKK0RFQ0xBUkVfQ0FMTEJBQ0soSFRNTENhbnZhc0VsZW1lbnRHZXRDb250ZXh0KQor
CisvLyBDdXN0b21pemVkIHNldHRlciBvZiBzcmMgYW5kIGxvY2F0aW9uIG9uIEhUTUxGcmFtZUVs
ZW1lbnQKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKEhUTUxGcmFtZUVsZW1lbnRT
cmMpCitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihIVE1MRnJhbWVFbGVtZW50TG9j
YXRpb24pCisvLyBDdXN0b21pemVkIHNldHRlciBvZiBzcmMgb24gSFRNTElGcmFtZUVsZW1lbnQK
K0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKEhUTUxJRnJhbWVFbGVtZW50U3JjKQor
Ly8gQ3VzdG9taXplZCBzZXR0ZXIgb2YgQXR0ci52YWx1ZQorREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUl9TRVRURVIoQXR0clZhbHVlKQorCisvLyBDdXN0b21pemVkIHNldHRlciBvZiBIVE1MT3B0
aW9uc0NvbGxlY3Rpb24gbGVuZ3RoCitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxPcHRp
b25zQ29sbGVjdGlvbkxlbmd0aCkKKworREVDTEFSRV9DQUxMQkFDSyhIVE1MSW5wdXRFbGVtZW50
U2V0U2VsZWN0aW9uUmFuZ2UpCisKKy8vIEN1c3RvbWl6ZWQgYWNjZXNzb3JzIGZvciBIVE1MSW5w
dXRFbGVtZW50CitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxJbnB1dEVsZW1lbnRTZWxl
Y3Rpb25TdGFydCkKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTElucHV0RWxlbWVudFNl
bGVjdGlvbkVuZCkKKworREVDTEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0soTG9jYXRpb24pCitERUNM
QVJFX0lOREVYRURfQUNDRVNTX0NIRUNLKEhpc3RvcnkpCisKK0RFQ0xBUkVfTkFNRURfQUNDRVNT
X0NIRUNLKEhpc3RvcnkpCitERUNMQVJFX0lOREVYRURfQUNDRVNTX0NIRUNLKExvY2F0aW9uKQor
CisvLyBIVE1MQ29sbGVjdGlvbiBjdXN0b21pemVkIGZ1bmN0aW9ucy4KK0RFQ0xBUkVfQ0FMTEJB
Q0soSFRNTENvbGxlY3Rpb25JdGVtKQorREVDTEFSRV9DQUxMQkFDSyhIVE1MQ29sbGVjdGlvbk5h
bWVkSXRlbSkKKy8vIEhUTUxDb2xsZWN0aW9ucyBhcmUgY2FsbGFibGUgYXMgZnVuY3Rpb25zLgor
REVDTEFSRV9DQUxMQkFDSyhIVE1MQ29sbGVjdGlvbkNhbGxBc0Z1bmN0aW9uKQorCisvLyBIVE1M
U2VsZWN0RWxlbWVudCBjdXN0b21pemVkIGZ1bmN0aW9ucy4KK0RFQ0xBUkVfQ0FMTEJBQ0soSFRN
TFNlbGVjdEVsZW1lbnRSZW1vdmUpCisKKy8vIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBjdXN0b21p
emVkIGZ1bmN0aW9ucy4KK0RFQ0xBUkVfQ0FMTEJBQ0soSFRNTE9wdGlvbnNDb2xsZWN0aW9uUmVt
b3ZlKQorREVDTEFSRV9DQUxMQkFDSyhIVE1MT3B0aW9uc0NvbGxlY3Rpb25BZGQpCisKKy8vIEhU
TUxEb2N1bWVudCBjdXN0b21pemVkIGZ1bmN0aW9ucworREVDTEFSRV9DQUxMQkFDSyhIVE1MRG9j
dW1lbnRXcml0ZSkKK0RFQ0xBUkVfQ0FMTEJBQ0soSFRNTERvY3VtZW50V3JpdGVsbikKK0RFQ0xB
UkVfQ0FMTEJBQ0soSFRNTERvY3VtZW50T3BlbikKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Io
SFRNTERvY3VtZW50QWxsKQorREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTERvY3Vt
ZW50KQorREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9ERUxFVEVSKEhUTUxEb2N1bWVudCkKKworLy8g
RG9jdW1lbnQgY3VzdG9taXplZCBmdW5jdGlvbnMKK0RFQ0xBUkVfQ0FMTEJBQ0soRG9jdW1lbnRF
dmFsdWF0ZSkKK0RFQ0xBUkVfQ0FMTEJBQ0soRG9jdW1lbnRHZXRDU1NDYW52YXNDb250ZXh0KQor
CisvLyBXaW5kb3cgY3VzdG9taXplZCBmdW5jdGlvbnMKK0RFQ0xBUkVfQ0FMTEJBQ0soRE9NV2lu
ZG93QWRkRXZlbnRMaXN0ZW5lcikKK0RFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93UmVtb3ZlRXZl
bnRMaXN0ZW5lcikKK0RFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93UG9zdE1lc3NhZ2UpCitERUNM
QVJFX0NBTExCQUNLKERPTVdpbmRvd1NldFRpbWVvdXQpCitERUNMQVJFX0NBTExCQUNLKERPTVdp
bmRvd1NldEludGVydmFsKQorREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dBdG9iKQorREVDTEFS
RV9DQUxMQkFDSyhET01XaW5kb3dCdG9hKQorREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dOT1Ap
CitERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd1RvU3RyaW5nKQorREVDTEFSRV9DQUxMQkFDSyhE
T01XaW5kb3dTaG93TW9kYWxEaWFsb2cpCitERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd09wZW4p
CitERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd0NsZWFyVGltZW91dCkKK0RFQ0xBUkVfQ0FMTEJB
Q0soRE9NV2luZG93Q2xlYXJJbnRlcnZhbCkKKworREVDTEFSRV9DQUxMQkFDSyhET01QYXJzZXJD
b25zdHJ1Y3RvcikKK0RFQ0xBUkVfQ0FMTEJBQ0soSFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9y
KQorREVDTEFSRV9DQUxMQkFDSyhIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yKQorREVDTEFS
RV9DQUxMQkFDSyhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yKQorREVDTEFSRV9DQUxMQkFDSyhX
ZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3RvcikKK0RFQ0xBUkVfQ0FMTEJBQ0soV2ViS2l0UG9pbnRD
b25zdHJ1Y3RvcikKK0RFQ0xBUkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3RvcikK
K0RFQ0xBUkVfQ0FMTEJBQ0soWE1MU2VyaWFsaXplckNvbnN0cnVjdG9yKQorREVDTEFSRV9DQUxM
QkFDSyhYUGF0aEV2YWx1YXRvckNvbnN0cnVjdG9yKQorREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJv
Y2Vzc29yQ29uc3RydWN0b3IpCisKKy8vIEltcGxlbWVudGF0aW9uIG9mIGN1c3RvbSBYU0xUUHJv
Y2Vzc29yIG1ldGhvZHMuCitERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JJbXBvcnRTdHls
ZXNoZWV0KQorREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29yVHJhbnNmb3JtVG9GcmFnbWVu
dCkKK0RFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvclRyYW5zZm9ybVRvRG9jdW1lbnQpCitE
RUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JTZXRQYXJhbWV0ZXIpCitERUNMQVJFX0NBTExC
QUNLKFhTTFRQcm9jZXNzb3JHZXRQYXJhbWV0ZXIpCitERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9j
ZXNzb3JSZW1vdmVQYXJhbWV0ZXIpCisKKy8vIENTU1ByaW1pdGl2ZVZhbHVlIGN1c3RvbWl6ZWQg
ZnVuY3Rpb25zCitERUNMQVJFX0NBTExCQUNLKENTU1ByaW1pdGl2ZVZhbHVlR2V0UkdCQ29sb3JW
YWx1ZSkKKworLy8gQ2FudmFzIDJEIGN1c3RvbWl6ZWQgZnVuY3Rpb25zCitERUNMQVJFX0NBTExC
QUNLKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldFN0cm9rZUNvbG9yKQorREVDTEFSRV9DQUxM
QkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXRGaWxsQ29sb3IpCitERUNMQVJFX0NBTExC
QUNLKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFN0cm9rZVJlY3QpCitERUNMQVJFX0NBTExCQUNL
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldFNoYWRvdykKK0RFQ0xBUkVfQ0FMTEJBQ0soQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJERHJhd0ltYWdlKQorREVDTEFSRV9DQUxMQkFDSyhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkREcmF3SW1hZ2VGcm9tUmVjdCkKK0RFQ0xBUkVfQ0FMTEJBQ0soQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQ3JlYXRlUGF0dGVybikKK0RFQ0xBUkVfQ0FMTEJBQ0soQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJERmlsbFRleHQpCitERUNMQVJFX0NBTExCQUNLKENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRFN0cm9rZVRleHQpCitERUNMQVJFX0NBTExCQUNLKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRFB1dEltYWdlRGF0YSkKKworLy8gSW1wbGVtZW50YXRpb24gb2YgQ2xpcGJv
YXJkIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMuCitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dF
VFRFUihDbGlwYm9hcmRUeXBlcykKK0RFQ0xBUkVfQ0FMTEJBQ0soQ2xpcGJvYXJkQ2xlYXJEYXRh
KQorREVDTEFSRV9DQUxMQkFDSyhDbGlwYm9hcmRHZXREYXRhKQorREVDTEFSRV9DQUxMQkFDSyhD
bGlwYm9hcmRTZXREYXRhKQorREVDTEFSRV9DQUxMQkFDSyhDbGlwYm9hcmRTZXREcmFnSW1hZ2Up
OworCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBFbGVtZW50IG1ldGhvZHMuCitERUNMQVJFX0NBTExC
QUNLKEVsZW1lbnRRdWVyeVNlbGVjdG9yKQorREVDTEFSRV9DQUxMQkFDSyhFbGVtZW50UXVlcnlT
ZWxlY3RvckFsbCkKK0RFQ0xBUkVfQ0FMTEJBQ0soRWxlbWVudFNldEF0dHJpYnV0ZSkKK0RFQ0xB
UkVfQ0FMTEJBQ0soRWxlbWVudFNldEF0dHJpYnV0ZU5vZGUpCitERUNMQVJFX0NBTExCQUNLKEVs
ZW1lbnRTZXRBdHRyaWJ1dGVOUykKK0RFQ0xBUkVfQ0FMTEJBQ0soRWxlbWVudFNldEF0dHJpYnV0
ZU5vZGVOUykKKworLy8gSW1wbGVtZW50YXRpb24gb2YgY3VzdG9tIExvY2F0aW9uIG1ldGhvZHMu
CitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihMb2NhdGlvblByb3RvY29sKQorREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoTG9jYXRpb25Ib3N0KQorREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9TRVRURVIoTG9jYXRpb25Ib3N0bmFtZSkKK0RFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uUG9ydCkKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Jf
U0VUVEVSKExvY2F0aW9uUGF0aG5hbWUpCitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRF
UihMb2NhdGlvblNlYXJjaCkKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0
aW9uSGFzaCkKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSHJlZikK
K0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKExvY2F0aW9uQXNzaWduKQorREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25SZXBsYWNlKQorREVDTEFSRV9QUk9Q
RVJUWV9BQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25SZWxvYWQpCitERUNMQVJFX0NBTExCQUNLKExv
Y2F0aW9uQXNzaWduKQorREVDTEFSRV9DQUxMQkFDSyhMb2NhdGlvblJlcGxhY2UpCitERUNMQVJF
X0NBTExCQUNLKExvY2F0aW9uUmVsb2FkKQorREVDTEFSRV9DQUxMQkFDSyhMb2NhdGlvblRvU3Ry
aW5nKQorREVDTEFSRV9DQUxMQkFDSyhMb2NhdGlvblZhbHVlT2YpCisKKy8vIEltcGxlbWVudGF0
aW9uIG9mIGN1c3RvbSBOb2RlIG1ldGhvZHMuCitERUNMQVJFX0NBTExCQUNLKE5vZGVBZGRFdmVu
dExpc3RlbmVyKQorREVDTEFSRV9DQUxMQkFDSyhOb2RlUmVtb3ZlRXZlbnRMaXN0ZW5lcikKK0RF
Q0xBUkVfQ0FMTEJBQ0soTm9kZUluc2VydEJlZm9yZSkKK0RFQ0xBUkVfQ0FMTEJBQ0soTm9kZVJl
cGxhY2VDaGlsZCkKK0RFQ0xBUkVfQ0FMTEJBQ0soTm9kZVJlbW92ZUNoaWxkKQorREVDTEFSRV9D
QUxMQkFDSyhOb2RlQXBwZW5kQ2hpbGQpCisKKy8vIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBpcyBO
YXZpZ2F0b3IgcHJvcGVydGllcy4KKy8vIFdlIGFjdHVhbGx5IG9ubHkgbmVlZCB0aGlzIGJlY2F1
c2UgV2ViS2l0IGhhcworLy8gbmF2aWdhdG9yLmFwcFZlcnNpb24gYXMgY3VzdG9tLiBPdXIgdmVy
c2lvbiBqdXN0CisvLyBwYXNzZXMgdGhyb3VnaC4KK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Io
TmF2aWdhdG9yQXBwVmVyc2lvbikKKworLy8gQ3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIFhNTEh0
dHBSZXF1ZXN0IHByb3BlcnRpZXMKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJl
cXVlc3RPbmFib3J0KQorREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdE9u
ZXJyb3IpCitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0T25sb2FkKQor
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdE9ubG9hZHN0YXJ0KQorREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdE9ucHJvZ3Jlc3MpCitERUNMQVJF
X1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0T25yZWFkeXN0YXRlY2hhbmdlKQorREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVGV4dCkKK0RFQ0xB
UkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RBZGRFdmVudExpc3RlbmVyKQorREVDTEFSRV9DQUxM
QkFDSyhYTUxIdHRwUmVxdWVzdFJlbW92ZUV2ZW50TGlzdGVuZXIpCitERUNMQVJFX0NBTExCQUNL
KFhNTEh0dHBSZXF1ZXN0T3BlbikKK0RFQ0xBUkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RTZW5k
KQorREVDTEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdFNldFJlcXVlc3RIZWFkZXIpCitERUNM
QVJFX0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0R2V0UmVzcG9uc2VIZWFkZXIpCitERUNMQVJFX0NB
TExCQUNLKFhNTEh0dHBSZXF1ZXN0T3ZlcnJpZGVNaW1lVHlwZSkKK0RFQ0xBUkVfQ0FMTEJBQ0so
WE1MSHR0cFJlcXVlc3REaXNwYXRjaEV2ZW50KQorCisvLyBDdXN0b20gaW1wbGVtZW50YXRpb24g
b2YgWE1MSHR0cFJlcXVlc3RVcGxvYWQgcHJvcGVydGllcworREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUihYTUxIdHRwUmVxdWVzdFVwbG9hZE9uYWJvcnQpCitERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25lcnJvcikKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNT
T1IoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbmxvYWQpCitERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
KFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25sb2Fkc3RhcnQpCitERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25wcm9ncmVzcykKK0RFQ0xBUkVfQ0FMTEJBQ0soWE1M
SHR0cFJlcXVlc3RVcGxvYWRBZGRFdmVudExpc3RlbmVyKQorREVDTEFSRV9DQUxMQkFDSyhYTUxI
dHRwUmVxdWVzdFVwbG9hZFJlbW92ZUV2ZW50TGlzdGVuZXIpCitERUNMQVJFX0NBTExCQUNLKFhN
TEh0dHBSZXF1ZXN0VXBsb2FkRGlzcGF0Y2hFdmVudCkKKworLy8gQ3VzdG9tIGltcGxlbWVudGF0
aW9uIG9mIFRyZWVXYWxrZXIgZnVuY3Rpb25zCitERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJQ
YXJlbnROb2RlKQorREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyRmlyc3RDaGlsZCkKK0RFQ0xB
UkVfQ0FMTEJBQ0soVHJlZVdhbGtlckxhc3RDaGlsZCkKK0RFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdh
bGtlck5leHROb2RlKQorREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyUHJldmlvdXNOb2RlKQor
REVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyTmV4dFNpYmxpbmcpCitERUNMQVJFX0NBTExCQUNL
KFRyZWVXYWxrZXJQcmV2aW91c1NpYmxpbmcpCisKKy8vIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBv
ZiBJbnNwZWN0b3JDb250cm9sbGVyIGZ1bmN0aW9ucworREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0
b3JDb250cm9sbGVyUHJvZmlsZXMpCitERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckNvbnRyb2xs
ZXJIaWdobGlnaHRET01Ob2RlKQorREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVy
QWRkUmVzb3VyY2VTb3VyY2VUb0ZyYW1lKQorREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250
cm9sbGVyR2V0UmVzb3VyY2VEb2N1bWVudE5vZGUpCitERUNMQVJFX0NBTExCQUNLKEluc3BlY3Rv
ckNvbnRyb2xsZXJBZGRTb3VyY2VUb0ZyYW1lKQorREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JD
b250cm9sbGVyU2VhcmNoKQorREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVyU2V0
dGluZykKK0RFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlckluc3BlY3RlZFdpbmRv
dykKK0RFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlclNldFNldHRpbmcpCitERUNM
QVJFX0NBTExCQUNLKEluc3BlY3RvckNvbnRyb2xsZXJDdXJyZW50Q2FsbEZyYW1lKQorREVDTEFS
RV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVyRGVidWdnZXJFbmFibGVkKQorREVDTEFSRV9D
QUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVyUGF1c2VPbkV4Y2VwdGlvbnMpCitERUNMQVJFX0NB
TExCQUNLKEluc3BlY3RvckNvbnRyb2xsZXJQcm9maWxlckVuYWJsZWQpCisjaWYgRU5BQkxFKERB
VEFCQVNFKQorREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVyRGF0YWJhc2VUYWJs
ZU5hbWVzKQorI2VuZGlmCitERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckNvbnRyb2xsZXJXcmFw
Q2FsbGJhY2spCisKKy8vIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBvZiBOb2RlSXRlcmF0b3IgZnVu
Y3Rpb25zCitERUNMQVJFX0NBTExCQUNLKE5vZGVJdGVyYXRvck5leHROb2RlKQorREVDTEFSRV9D
QUxMQkFDSyhOb2RlSXRlcmF0b3JQcmV2aW91c05vZGUpCisKKy8vIEN1c3RvbSBpbXBsZW1lbnRh
dGlvbiBvZiBOb2RlRmlsdGVyIGZ1bmN0aW9uCitERUNMQVJFX0NBTExCQUNLKE5vZGVGaWx0ZXJB
Y2NlcHROb2RlKQorCisvLyBDdXN0b20gaW1wbGVtZW50YXRpb24gb2YgSFRNTEZvcm1FbGVtZW50
CitERUNMQVJFX0NBTExCQUNLKEhUTUxGb3JtRWxlbWVudFN1Ym1pdCkKKworREVDTEFSRV9JTkRF
WEVEX1BST1BFUlRZX0dFVFRFUihET01TdHJpbmdMaXN0KQorREVDTEFSRV9DQUxMQkFDSyhET01T
dHJpbmdMaXN0SXRlbSkKKworREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoRE9NV2luZG93
KQorREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihET01XaW5kb3cpCitERUNMQVJFX05B
TUVEX0FDQ0VTU19DSEVDSyhET01XaW5kb3cpCitERUNMQVJFX0lOREVYRURfQUNDRVNTX0NIRUNL
KERPTVdpbmRvdykKKworREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTEZyYW1lU2V0
RWxlbWVudCkKK0RFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxGb3JtRWxlbWVudCkK
K0RFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKE5vZGVMaXN0KQorREVDTEFSRV9OQU1FRF9Q
Uk9QRVJUWV9HRVRURVIoTmFtZWROb2RlTWFwKQorREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRU
RVIoQ1NTU3R5bGVEZWNsYXJhdGlvbikKK0RFQ0xBUkVfTkFNRURfUFJPUEVSVFlfU0VUVEVSKENT
U1N0eWxlRGVjbGFyYXRpb24pCitERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihIVE1MUGx1
Z0luRWxlbWVudCkKK0RFQ0xBUkVfTkFNRURfUFJPUEVSVFlfU0VUVEVSKEhUTUxQbHVnSW5FbGVt
ZW50KQorREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihIVE1MUGx1Z0luRWxlbWVudCkK
K0RFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoSFRNTFBsdWdJbkVsZW1lbnQpCisKKy8v
IFBsdWdpbiBvYmplY3QgY2FuIGJlIGNhbGxlZCBhcyBmdW5jdGlvbi4KK0RFQ0xBUkVfQ0FMTEJB
Q0soSFRNTFBsdWdJbkVsZW1lbnQpCisKK0RFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKFN0
eWxlU2hlZXRMaXN0KQorREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihOYW1lZE5vZGVN
YXApCitERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxGb3JtRWxlbWVudCkKK0RF
Q0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoSFRNTE9wdGlvbnNDb2xsZWN0aW9uKQorREVD
TEFSRV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihIVE1MT3B0aW9uc0NvbGxlY3Rpb24pCitERUNM
QVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihIVE1MU2VsZWN0RWxlbWVudENvbGxlY3Rpb24pCitE
RUNMQVJFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKEhUTUxTZWxlY3RFbGVtZW50Q29sbGVjdGlv
bikKK0RFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxDb2xsZWN0aW9uKQorCisvLyBD
YW52YXMgYW5kIHN1cHBvcnRpbmcgY2xhc3NlcworREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dF
VFRFUihDYW52YXNQaXhlbEFycmF5KQorREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihD
YW52YXNQaXhlbEFycmF5KQorCisvLyBNZXNzYWdlUG9ydAorREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUihNZXNzYWdlUG9ydE9ubWVzc2FnZSkKK0RFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoTWVz
c2FnZVBvcnRPbmNsb3NlKQorREVDTEFSRV9DQUxMQkFDSyhNZXNzYWdlUG9ydFN0YXJ0Q29udmVy
c2F0aW9uKQorREVDTEFSRV9DQUxMQkFDSyhNZXNzYWdlUG9ydEFkZEV2ZW50TGlzdGVuZXIpCitE
RUNMQVJFX0NBTExCQUNLKE1lc3NhZ2VQb3J0UmVtb3ZlRXZlbnRMaXN0ZW5lcikKKworLy8gRGF0
YWJhc2UKK0RFQ0xBUkVfQ0FMTEJBQ0soRGF0YWJhc2VDaGFuZ2VWZXJzaW9uKQorREVDTEFSRV9D
QUxMQkFDSyhEYXRhYmFzZVRyYW5zYWN0aW9uKQorREVDTEFSRV9DQUxMQkFDSyhTUUxUcmFuc2Fj
dGlvbkV4ZWN1dGVTcWwpCitERUNMQVJFX0NBTExCQUNLKFNRTFJlc3VsdFNldFJvd0xpc3RJdGVt
KQorCisvLyBDbGllbnRSZWN0TGlzdAorREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihD
bGllbnRSZWN0TGlzdCkKKworLy8gU1ZHIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCBjYWxsYmFja3MK
KyNpZiBFTkFCTEUoU1ZHKQorREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoU1ZHTGVu
Z3RoVmFsdWUpCitERUNMQVJFX0NBTExCQUNLKFNWR0xlbmd0aENvbnZlcnRUb1NwZWNpZmllZFVu
aXRzKQorREVDTEFSRV9DQUxMQkFDSyhTVkdNYXRyaXhJbnZlcnNlKQorREVDTEFSRV9DQUxMQkFD
SyhTVkdNYXRyaXhSb3RhdGVGcm9tVmVjdG9yKQorREVDTEFSRV9DQUxMQkFDSyhTVkdFbGVtZW50
SW5zdGFuY2VBZGRFdmVudExpc3RlbmVyKQorREVDTEFSRV9DQUxMQkFDSyhTVkdFbGVtZW50SW5z
dGFuY2VSZW1vdmVFdmVudExpc3RlbmVyKQorI2VuZGlmCisKKy8vIFdvcmtlcgorI2lmIEVOQUJM
RShXT1JLRVJTKQorREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXb3JrZXJPbm1lc3NhZ2UpCitE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFdvcmtlck9uZXJyb3IpCitERUNMQVJFX0NBTExCQUNL
KFdvcmtlckNvbnN0cnVjdG9yKQorREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJBZGRFdmVudExpc3Rl
bmVyKQorREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJSZW1vdmVFdmVudExpc3RlbmVyKQorCitERUNM
QVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihXb3JrZXJDb250ZXh0U2VsZikKK0RFQ0xBUkVf
UFJPUEVSVFlfQUNDRVNTT1IoV29ya2VyQ29udGV4dE9ubWVzc2FnZSkKK0RFQ0xBUkVfQ0FMTEJB
Q0soV29ya2VyQ29udGV4dEltcG9ydFNjcmlwdHMpCitERUNMQVJFX0NBTExCQUNLKFdvcmtlckNv
bnRleHRTZXRUaW1lb3V0KQorREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0Q2xlYXJUaW1l
b3V0KQorREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0U2V0SW50ZXJ2YWwpCitERUNMQVJF
X0NBTExCQUNLKFdvcmtlckNvbnRleHRDbGVhckludGVydmFsKQorREVDTEFSRV9DQUxMQkFDSyhX
b3JrZXJDb250ZXh0QWRkRXZlbnRMaXN0ZW5lcikKK0RFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29u
dGV4dFJlbW92ZUV2ZW50TGlzdGVuZXIpCisjZW5kaWYKKworI3VuZGVmIERFQ0xBUkVfSU5ERVhF
RF9BQ0NFU1NfQ0hFQ0sKKyN1bmRlZiBERUNMQVJFX05BTUVEX0FDQ0VTU19DSEVDSworCisjdW5k
ZWYgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIKKyN1bmRlZiBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SX0dFVFRFUgorI3VuZGVmIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IKKwor
I3VuZGVmIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSCisjdW5kZWYgREVDTEFSRV9OQU1F
RF9QUk9QRVJUWV9TRVRURVIKKyN1bmRlZiBERUNMQVJFX05BTUVEX1BST1BFUlRZX0RFTEVURVIK
KworI3VuZGVmIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIKKyN1bmRlZiBERUNMQVJF
X0lOREVYRURfUFJPUEVSVFlfU0VUVEVSCisjdW5kZWYgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZ
X0RFTEVURVIKKworI3VuZGVmIERFQ0xBUkVfQ0FMTEJBQ0sKKworICAgIC8vIFJldHVybnMgdGhl
IE5QT2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gYW4gSFRNTEVsZW1lbnQgb2JqZWN0LgorICAgIHN0
YXRpYyBOUE9iamVjdCogR2V0SFRNTFBsdWdJbkVsZW1lbnROUE9iamVjdCh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBvd25lciBmcmFtZSBwb2lu
dGVyIG9mIGEgRE9NIHdyYXBwZXIgb2JqZWN0LiBJdCBvbmx5IHdvcmtzIGZvcgorICAgIC8vIHRo
ZXNlIERPTSBvYmplY3RzIHJlcXVpcmluZyBjcm9zcy1kb21haW4gYWNjZXNzIGNoZWNrLgorICAg
IHN0YXRpYyBGcmFtZSogR2V0VGFyZ2V0RnJhbWUodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3Qs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpOworCisgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBk
b3duY2FzdGluZyBTVkcgcGF0aCBzZWdtZW50cworI2lmIEVOQUJMRShTVkcpCisgICAgc3RhdGlj
IFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlwZSBEb3duY2FzdFNWR1BhdGhTZWcodm9pZCogcGF0
aF9zZWcpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2lu
Z2xlX3Nob3QpOworICAgIHN0YXRpYyB2b2lkIENsZWFyVGltZW91dEltcGwoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncyk7CisgICAgc3RhdGljIHZvaWQgV2luZG93U2V0TG9jYXRpb24oRE9NV2lu
ZG93KiwgY29uc3QgU3RyaW5nJik7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBWOEN1c3RvbUJpbmRpbmdfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuY3BwCShyZXZpc2lvbiA0NDUwNCkKKysrIFdlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDEzICszMSwyMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9t
QmluZGluZy5oIgogCisjaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVk
ZSAiSGlzdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgiCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVkZSAiTG9jYXRp
b24uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUg
IlNWR1BhdGhTZWcuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgYWxs
b3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoSFRNTEZyYW1lRWxlbWVudEJhc2UqIGZy
YW1lLCBTdHJpbmcgdmFsdWUpCkBAIC01Nyw0ICs2NCwxMTcgQEAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorLy8gRE9NSW1wbGVtZW50YXRpb24gaXMgYSBzaW5nbGV0b24gaW4gV2ViQ29yZS4gIElm
IHdlIHVzZSBvdXIgbm9ybWFsCisvLyBtYXBwaW5nIGZyb20gRE9NIG9iamVjdHMgdG8gVjggd3Jh
cHBlcnMsIHRoZSBzYW1lIHdyYXBwZXIgd2lsbCBiZQorLy8gc2hhcmVkIGZvciBhbGwgZnJhbWVz
IGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIGlzIGEgbWFqb3IKKy8vIHNlY3VyaXR5IHByb2Js
ZW0uICBUaGVyZWZvcmUsIHdlIGdlbmVyYXRlIGEgRE9NSW1wbGVtZW50YXRpb24KKy8vIHdyYXBw
ZXIgcGVyIGRvY3VtZW50IGFuZCBzdG9yZSBpdCBpbiBhbiBpbnRlcm5hbCBmaWVsZCBvZiB0aGUK
Ky8vIGRvY3VtZW50LiAgU2luY2UgdGhlIERPTUltcGxlbWVudGF0aW9uIG9iamVjdCBpcyBhIHNp
bmdsZXRvbiwgd2UgZG8KKy8vIG5vdCBoYXZlIHRvIGRvIGFueXRoaW5nIHRvIGtlZXAgdGhlIERP
TUltcGxlbWVudGF0aW9uIG9iamVjdCBhbGl2ZQorLy8gZm9yIHRoZSBsaWZldGltZSBvZiB0aGUg
d3JhcHBlci4KK0FDQ0VTU09SX0dFVFRFUihEb2N1bWVudEltcGxlbWVudGF0aW9uKQoreworICAg
IEFTU0VSVChpbmZvLkhvbGRlcigpLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSBrRG9jdW1lbnRN
aW5pbXVtSW50ZXJuYWxGaWVsZENvdW50KTsKKyAgICAvLyBDaGVjayBpZiB0aGUgaW50ZXJuYWwg
ZmllbGQgYWxyZWFkeSBjb250YWlucyBhIHdyYXBwZXIuCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gaW1wbGVtZW50YXRpb24gPSBpbmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZpZWxkKGtEb2N1
bWVudEltcGxlbWVudGF0aW9uSW5kZXgpOworICAgIGlmICghaW1wbGVtZW50YXRpb24tPklzVW5k
ZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBpbXBsZW1lbnRhdGlvbjsKKyAgICAvLyBHZW5lcmF0
ZSBhIHdyYXBwZXIuCisgICAgRG9jdW1lbnQqIGRvYyA9IFY4UHJveHk6OkRPTVdyYXBwZXJUb05h
dGl2ZTxEb2N1bWVudD4oaW5mby5Ib2xkZXIoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHdyYXBwZXIgPSBWOFByb3h5OjpET01JbXBsZW1lbnRhdGlvblRvVjhPYmplY3QoZG9jLT5pbXBs
ZW1lbnRhdGlvbigpKTsKKyAgICAvLyBTdG9yZSB0aGUgd3JhcHBlciBpbiB0aGUgaW50ZXJuYWwg
ZmllbGQuCisgICAgaW5mby5Ib2xkZXIoKS0+U2V0SW50ZXJuYWxGaWVsZChrRG9jdW1lbnRJbXBs
ZW1lbnRhdGlvbkluZGV4LCB3cmFwcGVyKTsKKworICAgIHJldHVybiB3cmFwcGVyOworfQorCisv
LyAtLS0tLS0tLS0tLS0tLS0gU2VjdXJpdHkgQ2hlY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK0lOREVYRURfQUNDRVNTX0NIRUNLKEhpc3RvcnkpCit7CisgICAgQVNTRVJUKFY4Q2xhc3NJ
bmRleDo6RnJvbUludChkYXRhLT5JbnQzMlZhbHVlKCkpID09IFY4Q2xhc3NJbmRleDo6SElTVE9S
WSk7CisgICAgLy8gT25seSBhbGxvdyBzYW1lIG9yaWdpbiBhY2Nlc3MKKyAgICBIaXN0b3J5KiBp
bXAgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxIaXN0b3J5PihWOENsYXNzSW5kZXg6OkhJU1RP
UlksIGhvc3QpOworICAgIHJldHVybiBWOFByb3h5OjpDYW5BY2Nlc3NGcmFtZShpbXAtPmZyYW1l
KCksIGZhbHNlKTsKK30KKworCitOQU1FRF9BQ0NFU1NfQ0hFQ0soSGlzdG9yeSkKK3sKKyAgICBB
U1NFUlQoVjhDbGFzc0luZGV4OjpGcm9tSW50KGRhdGEtPkludDMyVmFsdWUoKSkgPT0gVjhDbGFz
c0luZGV4OjpISVNUT1JZKTsKKyAgICAvLyBPbmx5IGFsbG93IHNhbWUgb3JpZ2luIGFjY2Vzcwor
ICAgIEhpc3RvcnkqIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PEhpc3Rvcnk+KFY4Q2xh
c3NJbmRleDo6SElTVE9SWSwgaG9zdCk7CisgICAgcmV0dXJuIFY4UHJveHk6OkNhbkFjY2Vzc0Zy
YW1lKGltcC0+ZnJhbWUoKSwgZmFsc2UpOworfQorCisjdW5kZWYgSU5ERVhFRF9BQ0NFU1NfQ0hF
Q0sKKyN1bmRlZiBOQU1FRF9BQ0NFU1NfQ0hFQ0sKKyN1bmRlZiBOQU1FRF9QUk9QRVJUWV9HRVRU
RVIKKyN1bmRlZiBOQU1FRF9QUk9QRVJUWV9TRVRURVIKKworLy8gc3RhdGljCitGcmFtZSogVjhD
dXN0b206OkdldFRhcmdldEZyYW1lKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9j
YWw8djg6OlZhbHVlPiBkYXRhKQoreworICAgIEZyYW1lKiB0YXJnZXQgPSAwOworICAgIHN3aXRj
aCAoVjhDbGFzc0luZGV4OjpGcm9tSW50KGRhdGEtPkludDMyVmFsdWUoKSkpIHsKKyAgICBjYXNl
IFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XOiB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3aW5kb3cgPSBWOFByb3h5OjpMb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6RE9NV0lO
RE9XLCBob3N0KTsKKyAgICAgICAgaWYgKHdpbmRvdy5Jc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gdGFyZ2V0OworCisgICAgICAgIERPTVdpbmRvdyogdGFyZ2V0X3dpbiA9IFY4UHJveHk6
OlRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIHdpbmRv
dyk7CisgICAgICAgIHRhcmdldCA9IHRhcmdldF93aW4tPmZyYW1lKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFY4Q2xhc3NJbmRleDo6TE9DQVRJT046IHsKKyAgICAgICAgSGlz
dG9yeSogaW1wID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8SGlzdG9yeT4oVjhDbGFzc0luZGV4
OjpISVNUT1JZLCBob3N0KTsKKyAgICAgICAgdGFyZ2V0ID0gaW1wLT5mcmFtZSgpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBWOENsYXNzSW5kZXg6OkhJU1RPUlk6IHsKKyAgICAg
ICAgTG9jYXRpb24qIGltcCA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PExvY2F0aW9uPihWOENs
YXNzSW5kZXg6OkxPQ0FUSU9OLCBob3N0KTsKKyAgICAgICAgdGFyZ2V0ID0gaW1wLT5mcmFtZSgp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIHJldHVybiB0YXJnZXQ7Cit9CisKKyNpZiBFTkFCTEUoU1ZHKQorVjhDbGFzc0lu
ZGV4OjpWOFdyYXBwZXJUeXBlIFY4Q3VzdG9tOjpEb3duY2FzdFNWR1BhdGhTZWcodm9pZCogcGF0
aF9zZWcpIHsKKyAgICBXZWJDb3JlOjpTVkdQYXRoU2VnICpyZWFsX3BhdGhfc2VnID0gcmVpbnRl
cnByZXRfY2FzdDxXZWJDb3JlOjpTVkdQYXRoU2VnKj4ocGF0aF9zZWcpOworCisgICAgc3dpdGNo
IChyZWFsX3BhdGhfc2VnLT5wYXRoU2VnVHlwZSgpKSB7CisjZGVmaW5lIE1BS0VfQ0FTRShzdmdf
dmFsLCB2OF92YWwpIGNhc2UgV2ViQ29yZTo6U1ZHUGF0aFNlZzo6c3ZnX3ZhbDogcmV0dXJuIFY4
Q2xhc3NJbmRleDo6djhfdmFsOworCitNQUtFX0NBU0UoUEFUSFNFR19DTE9TRVBBVEgsICAgICAg
ICAgICAgICAgICAgICBTVkdQQVRIU0VHQ0xPU0VQQVRIKQorTUFLRV9DQVNFKFBBVEhTRUdfTU9W
RVRPX0FCUywgICAgICAgICAgICAgICAgICAgU1ZHUEFUSFNFR01PVkVUT0FCUykKK01BS0VfQ0FT
RShQQVRIU0VHX01PVkVUT19SRUwsICAgICAgICAgICAgICAgICAgIFNWR1BBVEhTRUdNT1ZFVE9S
RUwpCitNQUtFX0NBU0UoUEFUSFNFR19MSU5FVE9fQUJTLCAgICAgICAgICAgICAgICAgICBTVkdQ
QVRIU0VHTElORVRPQUJTKQorTUFLRV9DQVNFKFBBVEhTRUdfTElORVRPX1JFTCwgICAgICAgICAg
ICAgICAgICAgU1ZHUEFUSFNFR0xJTkVUT1JFTCkKK01BS0VfQ0FTRShQQVRIU0VHX0NVUlZFVE9f
Q1VCSUNfQUJTLCAgICAgICAgICAgIFNWR1BBVEhTRUdDVVJWRVRPQ1VCSUNBQlMpCitNQUtFX0NB
U0UoUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTCwgICAgICAgICAgICBTVkdQQVRIU0VHQ1VSVkVU
T0NVQklDUkVMKQorTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTLCAgICAg
ICAgU1ZHUEFUSFNFR0NVUlZFVE9RVUFEUkFUSUNBQlMpCitNQUtFX0NBU0UoUEFUSFNFR19DVVJW
RVRPX1FVQURSQVRJQ19SRUwsICAgICAgICBTVkdQQVRIU0VHQ1VSVkVUT1FVQURSQVRJQ1JFTCkK
K01BS0VfQ0FTRShQQVRIU0VHX0FSQ19BQlMsICAgICAgICAgICAgICAgICAgICAgIFNWR1BBVEhT
RUdBUkNBQlMpCitNQUtFX0NBU0UoUEFUSFNFR19BUkNfUkVMLCAgICAgICAgICAgICAgICAgICAg
ICBTVkdQQVRIU0VHQVJDUkVMKQorTUFLRV9DQVNFKFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxf
QUJTLCAgICAgICAgU1ZHUEFUSFNFR0xJTkVUT0hPUklaT05UQUxBQlMpCitNQUtFX0NBU0UoUEFU
SFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUwsICAgICAgICBTVkdQQVRIU0VHTElORVRPSE9SSVpP
TlRBTFJFTCkKK01BS0VfQ0FTRShQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlMsICAgICAgICAg
IFNWR1BBVEhTRUdMSU5FVE9WRVJUSUNBTEFCUykKK01BS0VfQ0FTRShQQVRIU0VHX0xJTkVUT19W
RVJUSUNBTF9SRUwsICAgICAgICAgIFNWR1BBVEhTRUdMSU5FVE9WRVJUSUNBTFJFTCkKK01BS0Vf
Q0FTRShQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCUywgICAgIFNWR1BBVEhTRUdDVVJW
RVRPQ1VCSUNTTU9PVEhBQlMpCitNQUtFX0NBU0UoUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09U
SF9SRUwsICAgICBTVkdQQVRIU0VHQ1VSVkVUT0NVQklDU01PT1RIUkVMKQorTUFLRV9DQVNFKFBB
VEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUywgU1ZHUEFUSFNFR0NVUlZFVE9RVUFE
UkFUSUNTTU9PVEhBQlMpCitNQUtFX0NBU0UoUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9P
VEhfUkVMLCBTVkdQQVRIU0VHQ1VSVkVUT1FVQURSQVRJQ1NNT09USFJFTCkKKworI3VuZGVmIE1B
S0VfQ0FTRQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFY4Q2xhc3NJbmRleDo6SU5W
QUxJRF9DTEFTU19JTkRFWDsKKyAgICB9Cit9CisKKyNlbmRpZiAgLy8gRU5BQkxFKFNWRykKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDQ0NTA0KQor
KysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQAogI2lmIEVOQUJMRShEQVRBQkFTRSkK
IAogI2luY2x1ZGUgInY4X2JpbmRpbmcuaCIKLSNpbmNsdWRlICJ2OF9jdXN0b20uaCIKICNpbmNs
dWRlICJ2OF9wcm94eS5oIgogCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJTUUxW
YWx1ZS5oIgorI2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9t
U1FMU3RhdGVtZW50Q2FsbGJhY2suaCIKICNpbmNsdWRlICJWOEN1c3RvbVNRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cg==
</data>
<flag name="review"
          id="15822"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31101</attachid>
            <date>2009-06-09 10:47:21 -0700</date>
            <delta_ts>2009-06-10 10:28:41 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>patch2.txt</filename>
            <type>text/plain</type>
            <size>36863</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDUwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDYtMDggIE5hdGUgQ2hhcGluICA8amFwaGV0QGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlu
aXNoIG1vdmluZyBWOEN1c3RvbSBmcm9tIHNyYy5jaHJvbWl1bS5vcmcgdG8gc3ZuLndlYmtpdC5v
cmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2
MjU4CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcDog
RmluaXNoZWQgdXBzdHJlYW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9HRVRURVIp
OiBNb3ZlZCBmcm9tIHY4X2N1c3RvbS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpJTkRFWEVEX0FD
Q0VTU19DSEVDSyk6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6
Ok5BTUVEX0FDQ0VTU19DSEVDSyk6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlY4Q3VzdG9tOjpHZXRUYXJnZXRGcmFtZSk6IE1vdmVkIGZyb20gdjhfY3VzdG9t
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tOjpEb3duY2FzdFNWR1BhdGhTZWcpOiBN
b3ZlZCBmcm9tIHY4X2N1c3RvbS5jcHAuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3VzdG9tQmluZGluZy5oOiBGaW5pc2hlZCB1cHN0cmVhbWluZy4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6
IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJh
bnNhY3Rpb25DdXN0b20uY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4K
KwogMjAwOS0wNi0wOCAgQWRhbSBMYW5nbGV5ICA8YWdsQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTaWVkZWwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5jcHAJKHJldmlzaW9uIDQ0NTA0KQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTMgKzMxLDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21C
aW5kaW5nLmgiCiAKKyNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJIaXN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudEJhc2UuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKKyNpbmNsdWRlICJMb2NhdGlv
bi5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAi
U1ZHUGF0aFNlZy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBhbGxv
d1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChIVE1MRnJhbWVFbGVtZW50QmFzZSogZnJh
bWUsIFN0cmluZyB2YWx1ZSkKQEAgLTU3LDQgKzY0LDExOCBAQCBib29sIGFsbG93U2V0dGluZ1Ny
Y1RvSmF2YXNjcmlwdFVSTChFbGVtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIERPTUltcGxl
bWVudGF0aW9uIGlzIGEgc2luZ2xldG9uIGluIFdlYkNvcmUuIElmIHdlIHVzZSBvdXIgbm9ybWFs
CisvLyBtYXBwaW5nIGZyb20gRE9NIG9iamVjdHMgdG8gVjggd3JhcHBlcnMsIHRoZSBzYW1lIHdy
YXBwZXIgd2lsbCBiZQorLy8gc2hhcmVkIGZvciBhbGwgZnJhbWVzIGluIHRoZSBzYW1lIHByb2Nl
c3MuIFRoaXMgaXMgYSBtYWpvcgorLy8gc2VjdXJpdHkgcHJvYmxlbS4gVGhlcmVmb3JlLCB3ZSBn
ZW5lcmF0ZSBhIERPTUltcGxlbWVudGF0aW9uCisvLyB3cmFwcGVyIHBlciBkb2N1bWVudCBhbmQg
c3RvcmUgaXQgaW4gYW4gaW50ZXJuYWwgZmllbGQgb2YgdGhlCisvLyBkb2N1bWVudC4gU2luY2Ug
dGhlIERPTUltcGxlbWVudGF0aW9uIG9iamVjdCBpcyBhIHNpbmdsZXRvbiwgd2UgZG8KKy8vIG5v
dCBoYXZlIHRvIGRvIGFueXRoaW5nIHRvIGtlZXAgdGhlIERPTUltcGxlbWVudGF0aW9uIG9iamVj
dCBhbGl2ZQorLy8gZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgd3JhcHBlci4KK0FDQ0VTU09SX0dF
VFRFUihEb2N1bWVudEltcGxlbWVudGF0aW9uKQoreworICAgIEFTU0VSVChpbmZvLkhvbGRlcigp
LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSBrRG9jdW1lbnRNaW5pbXVtSW50ZXJuYWxGaWVsZENv
dW50KTsKKyAgICAvLyBDaGVjayBpZiB0aGUgaW50ZXJuYWwgZmllbGQgYWxyZWFkeSBjb250YWlu
cyBhIHdyYXBwZXIuCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW1wbGVtZW50YXRpb24gPSBp
bmZvLkhvbGRlcigpLT5HZXRJbnRlcm5hbEZpZWxkKGtEb2N1bWVudEltcGxlbWVudGF0aW9uSW5k
ZXgpOworICAgIGlmICghaW1wbGVtZW50YXRpb24tPklzVW5kZWZpbmVkKCkpCisgICAgICAgIHJl
dHVybiBpbXBsZW1lbnRhdGlvbjsKKyAgICAvLyBHZW5lcmF0ZSBhIHdyYXBwZXIuCisgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gVjhQcm94eTo6RE9NV3JhcHBlclRvTmF0aXZlPERvY3VtZW50Pihp
bmZvLkhvbGRlcigpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IFY4UHJv
eHk6OkRPTUltcGxlbWVudGF0aW9uVG9WOE9iamVjdChkb2N1bWVudC0+aW1wbGVtZW50YXRpb24o
KSk7CisgICAgLy8gU3RvcmUgdGhlIHdyYXBwZXIgaW4gdGhlIGludGVybmFsIGZpZWxkLgorICAg
IGluZm8uSG9sZGVyKCktPlNldEludGVybmFsRmllbGQoa0RvY3VtZW50SW1wbGVtZW50YXRpb25J
bmRleCwgd3JhcHBlcik7CisKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworLy8gLS0tLS0tLS0t
LS0tLS0tIFNlY3VyaXR5IENoZWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJTkRFWEVE
X0FDQ0VTU19DSEVDSyhIaXN0b3J5KQoreworICAgIEFTU0VSVChWOENsYXNzSW5kZXg6OkZyb21J
bnQoZGF0YS0+SW50MzJWYWx1ZSgpKSA9PSBWOENsYXNzSW5kZXg6OkhJU1RPUlkpOworICAgIC8v
IE9ubHkgYWxsb3cgc2FtZSBvcmlnaW4gYWNjZXNzCisgICAgSGlzdG9yeSogaGlzdG9yeSA9IFY4
UHJveHk6OlRvTmF0aXZlT2JqZWN0PEhpc3Rvcnk+KFY4Q2xhc3NJbmRleDo6SElTVE9SWSwgaG9z
dCk7CisgICAgcmV0dXJuIFY4UHJveHk6OkNhbkFjY2Vzc0ZyYW1lKGhpc3RvcnktPmZyYW1lKCks
IGZhbHNlKTsKK30KKworCitOQU1FRF9BQ0NFU1NfQ0hFQ0soSGlzdG9yeSkKK3sKKyAgICBBU1NF
UlQoVjhDbGFzc0luZGV4OjpGcm9tSW50KGRhdGEtPkludDMyVmFsdWUoKSkgPT0gVjhDbGFzc0lu
ZGV4OjpISVNUT1JZKTsKKyAgICAvLyBPbmx5IGFsbG93IHNhbWUgb3JpZ2luIGFjY2VzcworICAg
IEhpc3RvcnkqIGhpc3RvcnkgPSBWOFByb3h5OjpUb05hdGl2ZU9iamVjdDxIaXN0b3J5PihWOENs
YXNzSW5kZXg6OkhJU1RPUlksIGhvc3QpOworICAgIHJldHVybiBWOFByb3h5OjpDYW5BY2Nlc3NG
cmFtZShoaXN0b3J5LT5mcmFtZSgpLCBmYWxzZSk7Cit9CisKKyN1bmRlZiBJTkRFWEVEX0FDQ0VT
U19DSEVDSworI3VuZGVmIE5BTUVEX0FDQ0VTU19DSEVDSworI3VuZGVmIE5BTUVEX1BST1BFUlRZ
X0dFVFRFUgorI3VuZGVmIE5BTUVEX1BST1BFUlRZX1NFVFRFUgorCisvLyBzdGF0aWMKK0ZyYW1l
KiBWOEN1c3RvbTo6R2V0VGFyZ2V0RnJhbWUodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCit7CisgICAgRnJhbWUqIHRhcmdldCA9IDA7CisgICAg
c3dpdGNoIChWOENsYXNzSW5kZXg6OkZyb21JbnQoZGF0YS0+SW50MzJWYWx1ZSgpKSkgeworICAg
IGNhc2UgVjhDbGFzc0luZGV4OjpET01XSU5ET1c6IHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpbmRvdyA9IFY4UHJveHk6Okxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpE
T01XSU5ET1csIGhvc3QpOworICAgICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0YXJnZXQ7CisKKyAgICAgICAgRE9NV2luZG93KiB0YXJnZXRXaW4gPSBWOFBy
b3h5OjpUb05hdGl2ZU9iamVjdDxET01XaW5kb3c+KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCB3
aW5kb3cpOworICAgICAgICB0YXJnZXQgPSB0YXJnZXRXaW4tPmZyYW1lKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIFY4Q2xhc3NJbmRleDo6TE9DQVRJT046IHsKKyAgICAgICAg
SGlzdG9yeSogaGlzdG9yeSA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PEhpc3Rvcnk+KFY4Q2xh
c3NJbmRleDo6SElTVE9SWSwgaG9zdCk7CisgICAgICAgIHRhcmdldCA9IGhpc3RvcnktPmZyYW1l
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFY4Q2xhc3NJbmRleDo6SElTVE9S
WTogeworICAgICAgICBMb2NhdGlvbiogbG9jYXRpb24gPSBWOFByb3h5OjpUb05hdGl2ZU9iamVj
dDxMb2NhdGlvbj4oVjhDbGFzc0luZGV4OjpMT0NBVElPTiwgaG9zdCk7CisgICAgICAgIHRhcmdl
dCA9IGxvY2F0aW9uLT5mcmFtZSgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVs
dDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0YXJnZXQ7Cit9CisKKyNpZiBF
TkFCTEUoU1ZHKQorVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIFY4Q3VzdG9tOjpEb3duY2Fz
dFNWR1BhdGhTZWcodm9pZCogcGF0aF9zZWcpCit7CisgICAgV2ViQ29yZTo6U1ZHUGF0aFNlZyog
cmVhbFBhdGhTZWcgPSByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlNWR1BhdGhTZWcqPihwYXRo
X3NlZyk7CisKKyAgICBzd2l0Y2ggKHJlYWxQYXRoU2VnLT5wYXRoU2VnVHlwZSgpKSB7CisjZGVm
aW5lIE1BS0VfQ0FTRShzdmdWYWx1ZSwgdjhWYWx1ZSkgY2FzZSBXZWJDb3JlOjpTVkdQYXRoU2Vn
OjpzdmdWYWx1ZTogcmV0dXJuIFY4Q2xhc3NJbmRleDo6djhWYWx1ZQorCisgICAgTUFLRV9DQVNF
KFBBVEhTRUdfQ0xPU0VQQVRILCAgICAgICAgICAgICAgICAgICAgU1ZHUEFUSFNFR0NMT1NFUEFU
SCk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfTU9WRVRPX0FCUywgICAgICAgICAgICAgICAgICAg
U1ZHUEFUSFNFR01PVkVUT0FCUyk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfTU9WRVRPX1JFTCwg
ICAgICAgICAgICAgICAgICAgU1ZHUEFUSFNFR01PVkVUT1JFTCk7CisgICAgTUFLRV9DQVNFKFBB
VEhTRUdfTElORVRPX0FCUywgICAgICAgICAgICAgICAgICAgU1ZHUEFUSFNFR0xJTkVUT0FCUyk7
CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfTElORVRPX1JFTCwgICAgICAgICAgICAgICAgICAgU1ZH
UEFUSFNFR0xJTkVUT1JFTCk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19B
QlMsICAgICAgICAgICAgU1ZHUEFUSFNFR0NVUlZFVE9DVUJJQ0FCUyk7CisgICAgTUFLRV9DQVNF
KFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUwsICAgICAgICAgICAgU1ZHUEFUSFNFR0NVUlZFVE9D
VUJJQ1JFTCk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTLCAg
ICAgICAgU1ZHUEFUSFNFR0NVUlZFVE9RVUFEUkFUSUNBQlMpOworICAgIE1BS0VfQ0FTRShQQVRI
U0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTCwgICAgICAgIFNWR1BBVEhTRUdDVVJWRVRPUVVBRFJB
VElDUkVMKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNFR19BUkNfQUJTLCAgICAgICAgICAgICAgICAg
ICAgICBTVkdQQVRIU0VHQVJDQUJTKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNFR19BUkNfUkVMLCAg
ICAgICAgICAgICAgICAgICAgICBTVkdQQVRIU0VHQVJDUkVMKTsKKyAgICBNQUtFX0NBU0UoUEFU
SFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlMsICAgICAgICBTVkdQQVRIU0VHTElORVRPSE9SSVpP
TlRBTEFCUyk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMLCAg
ICAgICAgU1ZHUEFUSFNFR0xJTkVUT0hPUklaT05UQUxSRUwpOworICAgIE1BS0VfQ0FTRShQQVRI
U0VHX0xJTkVUT19WRVJUSUNBTF9BQlMsICAgICAgICAgIFNWR1BBVEhTRUdMSU5FVE9WRVJUSUNB
TEFCUyk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTCwgICAgICAg
ICAgU1ZHUEFUSFNFR0xJTkVUT1ZFUlRJQ0FMUkVMKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNFR19D
VVJWRVRPX0NVQklDX1NNT09USF9BQlMsICAgICBTVkdQQVRIU0VHQ1VSVkVUT0NVQklDU01PT1RI
QUJTKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUwsICAg
ICBTVkdQQVRIU0VHQ1VSVkVUT0NVQklDU01PT1RIUkVMKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNF
R19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTLCBTVkdQQVRIU0VHQ1VSVkVUT1FVQURSQVRJ
Q1NNT09USEFCUyk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01P
T1RIX1JFTCwgU1ZHUEFUSFNFR0NVUlZFVE9RVUFEUkFUSUNTTU9PVEhSRUwpOworCisjdW5kZWYg
TUFLRV9DQVNFCisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gVjhDbGFzc0luZGV4OjpJ
TlZBTElEX0NMQVNTX0lOREVYOworICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tQmluZGluZy5oCShyZXZpc2lvbiA0NDUwNCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxOSAr
MzEsNTM5IEBACiAjaWZuZGVmIFY4Q3VzdG9tQmluZGluZ19oCiAjZGVmaW5lIFY4Q3VzdG9tQmlu
ZGluZ19oCiAKLS8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGZvcndhcmRpbmcgaGVhZGVy
IHVudGlsIGFsbCBiaW5kaW5ncyBoYXZlIG1pZ3JhdGVkCi0vLyBvdmVyIGFuZCB2OF9jdXN0b20g
YWN0dWFsbHkgYmVjb21lcyBWOEN1c3RvbUJpbmRpbmcuCi0jaW5jbHVkZSAidjhfY3VzdG9tLmgi
CisjaW5jbHVkZSAiVjhJbmRleC5oIgorI2luY2x1ZGUgPHY4Lmg+CisKK3N0cnVjdCBOUE9iamVj
dDsKKworI2RlZmluZSBDQUxMQkFDS19GVU5DX0RFQ0woTkFNRSkgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Q3VzdG9tOjp2OCMjTkFNRSMjQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKKworI2RlZmluZSBBQ0NFU1NPUl9HRVRURVIoTkFNRSkgXAordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Q3VzdG9tOjp2OCMjTkFNRSMjQWNjZXNzb3JHZXR0ZXIoIFwKKyAgICB2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKKworI2RlZmlu
ZSBBQ0NFU1NPUl9TRVRURVIoTkFNRSkgXAordm9pZCBWOEN1c3RvbTo6djgjI05BTUUjI0FjY2Vz
c29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQorCisjZGVmaW5lIElOREVYRURfUFJPUEVSVFlfR0VUVEVSKE5BTUUpIFwKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEN1c3RvbTo6djgjI05BTUUjI0luZGV4ZWRQcm9wZXJ0eUdl
dHRlciggXAorICAgIHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQorCisjZGVmaW5lIElOREVYRURfUFJPUEVSVFlfU0VUVEVSKE5BTUUpIFwKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEN1c3RvbTo6djgjI05BTUUjI0luZGV4ZWRQcm9wZXJ0eVNldHRlciggXAor
ICAgIHVpbnQzMl90IGluZGV4LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKKworI2RlZmluZSBJTkRFWEVEX1BST1BFUlRZX0RFTEVURVIo
TkFNRSkgXAordjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gVjhDdXN0b206OnY4IyNOQU1FIyNJbmRl
eGVkUHJvcGVydHlEZWxldGVyKCBcCisgICAgdWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCisKKyNkZWZpbmUgTkFNRURfUFJPUEVSVFlfR0VUVEVSKE5BTUUpIFwK
KyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4IyNOQU1FIyNOYW1lZFByb3Bl
cnR5R2V0dGVyKCBcCisgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCisKKyNkZWZpbmUgTkFNRURfUFJPUEVSVFlfU0VUVEVSKE5BTUUp
IFwKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4IyNOQU1FIyNOYW1lZFBy
b3BlcnR5U2V0dGVyKCBcCisgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBcCisgICAgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
KworI2RlZmluZSBOQU1FRF9QUk9QRVJUWV9ERUxFVEVSKE5BTUUpIFwKKyAgICB2ODo6SGFuZGxl
PHY4OjpCb29sZWFuPiBWOEN1c3RvbTo6djgjI05BTUUjI05hbWVkUHJvcGVydHlEZWxldGVyKCBc
CisgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCisKKyNkZWZpbmUgTkFNRURfQUNDRVNTX0NIRUNLKE5BTUUpIFwKKyAgICBib29sIFY4
Q3VzdG9tOjp2OCMjTkFNRSMjTmFtZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBob3N0LCBcCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4ga2V5LCBcCisgICAgdjg6OkFjY2Vz
c1R5cGUgdHlwZSwgXAorICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCisKKyNkZWZpbmUg
SU5ERVhFRF9BQ0NFU1NfQ0hFQ0soTkFNRSkgXAorICAgIGJvb2wgVjhDdXN0b206OnY4IyNOQU1F
IyNJbmRleGVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgXAorICAg
IHVpbnQzMl90IGluZGV4LCBcCisgICAgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgXAorICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IGRhdGEpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNz
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOworICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBF
bGVtZW50OworICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNzIEhUTUxDb2xsZWN0aW9uOworICAg
IGNsYXNzIEhUTUxGcmFtZUVsZW1lbnRCYXNlOwogICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFz
cyBWOFByb3h5OwogCiAgICAgYm9vbCBhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVy
bChIVE1MRnJhbWVFbGVtZW50QmFzZSosIFN0cmluZyB2YWx1ZSk7CiAgICAgYm9vbCBhbGxvd1Nl
dHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoRWxlbWVudCosIFN0cmluZyBuYW1lLCBTdHJpbmcgdmFs
dWUpOwogCisgICAgY2xhc3MgVjhDdXN0b20geworICAgIHB1YmxpYzoKKworICAgICAgICAvLyBD
b25zdGFudHMuCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdyYXBwZXJUeXBlSW5kZXgg
PSAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XcmFwcGVyT2JqZWN0SW5kZXggPSAx
OworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRD
b3VudCA9IDI7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrTlBPYmplY3RJbnRlcm5hbEZp
ZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworCisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQga0RvY3VtZW50SW1wbGVtZW50YXRpb25JbmRleCA9IGtEZWZh
dWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQga0RvY3VtZW50TWluaW11bUludGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlcklu
dGVybmFsRmllbGRDb3VudCArIDE7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrSFRNTERv
Y3VtZW50TWFya2VySW5kZXggPSBrRG9jdW1lbnRNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50ICsg
MDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrSFRNTERvY3VtZW50U2hhZG93SW5kZXggPSBr
RG9jdW1lbnRNaW5pbXVtSW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBrSFRNTERvY3VtZW50SW50ZXJuYWxGaWVsZENvdW50ID0ga0RvY3VtZW50TWluaW11
bUludGVybmFsRmllbGRDb3VudCArIDI7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrWE1M
SHR0cFJlcXVlc3RDYWNoZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
ICsgMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrWE1MSHR0cFJlcXVlc3RJbnRlcm5hbEZp
ZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOworCisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQga01lc3NhZ2VDaGFubmVsUG9ydDFJbmRleCA9IGtEZWZhdWx0
V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
a01lc3NhZ2VDaGFubmVsUG9ydDJJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRD
b3VudCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga01lc3NhZ2VDaGFubmVsSW50ZXJu
YWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMjsKKwor
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtNZXNzYWdlUG9ydFJlcXVlc3RDYWNoZUluZGV4ID0g
a0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBrTWVzc2FnZVBvcnRFbnRhbmdsZWRQb3J0SW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJ
bnRlcm5hbEZpZWxkQ291bnQgKyAxOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtNZXNzYWdl
UG9ydEludGVybmFsRmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3Vu
dCArIDI7CisKKyAgICAjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQga1dvcmtlclJlcXVlc3RDYWNoZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVs
ZENvdW50ICsgMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrV29ya2VySW50ZXJuYWxGaWVs
ZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKworICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IGtXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXggPSBrRGVm
YXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtXb3JrZXJDb250ZXh0SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50
ZXJuYWxGaWVsZENvdW50ICsgMTsKKyAgICAjZW5kaWYKKworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtET01XaW5kb3dDb25zb2xlSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxk
Q291bnQgKyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dIaXN0b3J5SW5k
ZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOworICAgICAgICBzdGF0
aWMgY29uc3QgaW50IGtET01XaW5kb3dMb2NhdGlvbmJhckluZGV4ID0ga0RlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50ICsgMjsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2lu
ZG93TWVudWJhckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMzsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93TmF2aWdhdG9ySW5kZXggPSBrRGVm
YXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyA0OworICAgICAgICBzdGF0aWMgY29uc3Qg
aW50IGtET01XaW5kb3dQZXJzb25hbGJhckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxG
aWVsZENvdW50ICsgNTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93U2NyZWVu
SW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyA2OworICAgICAgICBz
dGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dTY3JvbGxiYXJzSW5kZXggPSBrRGVmYXVsdFdyYXBw
ZXJJbnRlcm5hbEZpZWxkQ291bnQgKyA3OworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01X
aW5kb3dTZWxlY3Rpb25JbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCAr
IDg7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd1N0YXR1c2JhckluZGV4ID0g
a0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgOTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGludCBrRE9NV2luZG93VG9vbGJhckluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxG
aWVsZENvdW50ICsgMTA7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0xvY2F0
aW9uSW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxMTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93RE9NU2VsZWN0aW9uSW5kZXggPSBrRGVmYXVs
dFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxMjsKKyAgICAgICAgc3RhdGljIGNvbnN0IGlu
dCBrRE9NV2luZG93SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxG
aWVsZENvdW50ICsgMTM7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrU3R5bGVTaGVldE93
bmVyTm9kZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBrU3R5bGVTaGVldEludGVybmFsRmllbGRDb3VudCA9IGtE
ZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CisKKyAgICAjZGVmaW5lIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKE5BTUUpIFwKKyAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHY4IyNOQU1FIyNBY2Nlc3NvckdldHRlciggXAorICAgICAgICB2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKKworICAg
ICNkZWZpbmUgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoTkFNRSkgIFwKKyAgICBz
dGF0aWMgdm9pZCB2OCMjTkFNRSMjQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKKworICAgICNkZWZpbmUgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihOQU1FKSBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dF
VFRFUihOQU1FKTsgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoTkFNRSk7CisKKyAg
ICAjZGVmaW5lIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKE5BTUUpICBcCisgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OCMjTkFNRSMjTmFtZWRQcm9wZXJ0eUdldHRlcigg
XAorICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKKworICAgICNkZWZpbmUgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9TRVRURVIo
TkFNRSkgXAorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjgjI05BTUUjI05hbWVk
UHJvcGVydHlTZXR0ZXIoIFwKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIFwK
KyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIFwKKyAgICAgICAgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKKworICAgICNkZWZpbmUgREVDTEFSRV9OQU1FRF9QUk9QRVJU
WV9ERUxFVEVSKE5BTUUpIFwKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gdjgj
I05BTUUjI05hbWVkUHJvcGVydHlEZWxldGVyKCBcCisgICAgICAgIHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorCisgICAgI2RlZmluZSBV
U0VfTkFNRURfUFJPUEVSVFlfR0VUVEVSKE5BTUUpIFY4Q3VzdG9tOjp2OCMjTkFNRSMjTmFtZWRQ
cm9wZXJ0eUdldHRlcgorCisgICAgI2RlZmluZSBVU0VfTkFNRURfUFJPUEVSVFlfU0VUVEVSKE5B
TUUpIFY4Q3VzdG9tOjp2OCMjTkFNRSMjTmFtZWRQcm9wZXJ0eVNldHRlcgorCisgICAgI2RlZmlu
ZSBVU0VfTkFNRURfUFJPUEVSVFlfREVMRVRFUihOQU1FKSBWOEN1c3RvbTo6djgjI05BTUUjI05h
bWVkUHJvcGVydHlEZWxldGVyCisKKyAgICAjZGVmaW5lIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJU
WV9HRVRURVIoTkFNRSkgXAorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjgjI05B
TUUjI0luZGV4ZWRQcm9wZXJ0eUdldHRlciggXAorICAgICAgICB1aW50MzJfdCBpbmRleCwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKKworICAgICNkZWZpbmUgREVDTEFSRV9JTkRFWEVE
X1BST1BFUlRZX1NFVFRFUihOQU1FKSBcCisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2OCMjTkFNRSMjSW5kZXhlZFByb3BlcnR5U2V0dGVyKCBcCisgICAgICAgIHVpbnQzMl90IGlu
ZGV4LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKKworICAgICNkZWZpbmUgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0RFTEVURVIoTkFN
RSkgXAorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpCb29sZWFuPiB2OCMjTkFNRSMjSW5kZXhl
ZFByb3BlcnR5RGVsZXRlciggXAorICAgICAgICB1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKKworICAgICNkZWZpbmUgVVNFX0lOREVYRURfUFJPUEVSVFlfR0VU
VEVSKE5BTUUpIFY4Q3VzdG9tOjp2OCMjTkFNRSMjSW5kZXhlZFByb3BlcnR5R2V0dGVyCisKKyAg
ICAjZGVmaW5lIFVTRV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihOQU1FKSBWOEN1c3RvbTo6djgj
I05BTUUjI0luZGV4ZWRQcm9wZXJ0eVNldHRlcgorCisgICAgI2RlZmluZSBVU0VfSU5ERVhFRF9Q
Uk9QRVJUWV9ERUxFVEVSKE5BTUUpIFY4Q3VzdG9tOjp2OCMjTkFNRSMjSW5kZXhlZFByb3BlcnR5
RGVsZXRlcgorCisgICAgI2RlZmluZSBERUNMQVJFX0NBTExCQUNLKE5BTUUpIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdjgjI05BTUUjI0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCisKKyAgICAjZGVmaW5lIFVTRV9DQUxMQkFDSyhOQU1FKSBWOEN1c3RvbTo6djgjI05B
TUUjI0NhbGxiYWNrCisKKyAgICAjZGVmaW5lIERFQ0xBUkVfTkFNRURfQUNDRVNTX0NIRUNLKE5B
TUUpIFwKKyAgICBzdGF0aWMgYm9vbCB2OCMjTkFNRSMjTmFtZWRTZWN1cml0eUNoZWNrKHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBob3N0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBrZXksIFwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IGRhdGEpCisKKyAgICAjZGVmaW5lIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0so
TkFNRSkgXAorICAgIHN0YXRpYyBib29sIHY4IyNOQU1FIyNJbmRleGVkU2VjdXJpdHlDaGVjayh2
ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCwgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6QWNjZXNzVHlwZSB0eXBlLCBcCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IGRhdGEpCisKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRTdHJva2VTdHlsZSk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1IoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJERmlsbFN0eWxlKTsKKyAgICAgICAgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93RXZlbnQpOworICAgICAgICBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX0dFVFRFUihET01XaW5kb3dDcnlwdG8pOworICAgICAg
ICAvLyBDdXN0b21pemVkIGdldHRlciZzZXR0ZXIgb2YgRE9NV2luZG93LmxvY2F0aW9uCisgICAg
ICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKERPTVdpbmRvd0xvY2F0aW9uKTsK
KyAgICAgICAgLy8gQ3VzdG9taXplZCBzZXR0ZXIgb2YgRE9NV2luZG93Lm9wZW5lcgorICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihET01XaW5kb3dPcGVuZXIpOworCisg
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRG9jdW1lbnRMb2NhdGlvbik7CisgICAg
ICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRG9jdW1lbnRJbXBsZW1lbnRhdGlvbik7Cisg
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKEV2ZW50U3JjRWxlbWVudCk7
CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRXZlbnRSZXR1cm5WYWx1ZSk7Cisg
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKEV2ZW50RGF0YVRyYW5zZmVy
KTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRXZlbnRDbGlwYm9h
cmREYXRhKTsKKworICAgICAgICAvLyBHZXR0ZXIvU2V0dGVyIGZvciB3aW5kb3cgZXZlbnQgaGFu
ZGxlcnMKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihET01XaW5kb3dFdmVudEhh
bmRsZXIpOworICAgICAgICAvLyBHZXR0ZXIvU2V0dGVyIGZvciBFbGVtZW50IGV2ZW50IGhhbmRs
ZXJzCisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRWxlbWVudEV2ZW50SGFuZGxl
cik7CisKKyAgICAgICAgLy8gSFRNTENhbnZhc0VsZW1lbnQKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhIVE1MQ2FudmFzRWxlbWVudEdldENvbnRleHQpOworCisgICAgICAgIC8vIEN1c3RvbWl6
ZWQgc2V0dGVyIG9mIHNyYyBhbmQgbG9jYXRpb24gb24gSFRNTEZyYW1lRWxlbWVudAorICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihIVE1MRnJhbWVFbGVtZW50U3JjKTsK
KyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoSFRNTEZyYW1lRWxlbWVu
dExvY2F0aW9uKTsKKyAgICAgICAgLy8gQ3VzdG9taXplZCBzZXR0ZXIgb2Ygc3JjIG9uIEhUTUxJ
RnJhbWVFbGVtZW50CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VUVEVSKEhU
TUxJRnJhbWVFbGVtZW50U3JjKTsKKyAgICAgICAgLy8gQ3VzdG9taXplZCBzZXR0ZXIgb2YgQXR0
ci52YWx1ZQorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihBdHRyVmFs
dWUpOworCisgICAgICAgIC8vIEN1c3RvbWl6ZWQgc2V0dGVyIG9mIEhUTUxPcHRpb25zQ29sbGVj
dGlvbiBsZW5ndGgKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihIVE1MT3B0aW9u
c0NvbGxlY3Rpb25MZW5ndGgpOworCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTElucHV0
RWxlbWVudFNldFNlbGVjdGlvblJhbmdlKTsKKworICAgICAgICAvLyBDdXN0b21pemVkIGFjY2Vz
c29ycyBmb3IgSFRNTElucHV0RWxlbWVudAorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SKEhUTUxJbnB1dEVsZW1lbnRTZWxlY3Rpb25TdGFydCk7CisgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoSFRNTElucHV0RWxlbWVudFNlbGVjdGlvbkVuZCk7CisKKyAgICAgICAg
REVDTEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0soTG9jYXRpb24pOworICAgICAgICBERUNMQVJFX0lO
REVYRURfQUNDRVNTX0NIRUNLKEhpc3RvcnkpOworCisgICAgICAgIERFQ0xBUkVfTkFNRURfQUND
RVNTX0NIRUNLKEhpc3RvcnkpOworICAgICAgICBERUNMQVJFX0lOREVYRURfQUNDRVNTX0NIRUNL
KExvY2F0aW9uKTsKKworICAgICAgICAvLyBIVE1MQ29sbGVjdGlvbiBjdXN0b21pemVkIGZ1bmN0
aW9ucy4KKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MQ29sbGVjdGlvbkl0ZW0pOworICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtKTsKKyAgICAgICAg
Ly8gSFRNTENvbGxlY3Rpb25zIGFyZSBjYWxsYWJsZSBhcyBmdW5jdGlvbnMuCisgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soSFRNTENvbGxlY3Rpb25DYWxsQXNGdW5jdGlvbik7CisKKyAgICAgICAg
Ly8gSFRNTFNlbGVjdEVsZW1lbnQgY3VzdG9taXplZCBmdW5jdGlvbnMuCisgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soSFRNTFNlbGVjdEVsZW1lbnRSZW1vdmUpOworCisgICAgICAgIC8vIEhUTUxP
cHRpb25zQ29sbGVjdGlvbiBjdXN0b21pemVkIGZ1bmN0aW9ucy4KKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhIVE1MT3B0aW9uc0NvbGxlY3Rpb25SZW1vdmUpOworICAgICAgICBERUNMQVJFX0NB
TExCQUNLKEhUTUxPcHRpb25zQ29sbGVjdGlvbkFkZCk7CisKKyAgICAgICAgLy8gSFRNTERvY3Vt
ZW50IGN1c3RvbWl6ZWQgZnVuY3Rpb25zCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTERv
Y3VtZW50V3JpdGUpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxEb2N1bWVudFdyaXRl
bG4pOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxEb2N1bWVudE9wZW4pOworICAgICAg
ICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxEb2N1bWVudEFsbCk7CisgICAgICAgIERF
Q0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxEb2N1bWVudCk7CisgICAgICAgIERFQ0xB
UkVfTkFNRURfUFJPUEVSVFlfREVMRVRFUihIVE1MRG9jdW1lbnQpOworCisgICAgICAgIC8vIERv
Y3VtZW50IGN1c3RvbWl6ZWQgZnVuY3Rpb25zCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRG9j
dW1lbnRFdmFsdWF0ZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRG9jdW1lbnRHZXRDU1ND
YW52YXNDb250ZXh0KTsKKworICAgICAgICAvLyBXaW5kb3cgY3VzdG9taXplZCBmdW5jdGlvbnMK
KyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dBZGRFdmVudExpc3RlbmVyKTsKKyAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dSZW1vdmVFdmVudExpc3RlbmVyKTsKKyAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dQb3N0TWVzc2FnZSk7CisgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93U2V0VGltZW91dCk7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soRE9NV2luZG93U2V0SW50ZXJ2YWwpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKERP
TVdpbmRvd0F0b2IpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd0J0b2EpOwor
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd05PUCk7CisgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soRE9NV2luZG93VG9TdHJpbmcpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKERP
TVdpbmRvd1Nob3dNb2RhbERpYWxvZyk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2lu
ZG93T3Blbik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRE9NV2luZG93Q2xlYXJUaW1lb3V0
KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dDbGVhckludGVydmFsKTsKKwor
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVBhcnNlckNvbnN0cnVjdG9yKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IpOworICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKEhUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IpOworICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IpOworICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFdlYktpdENTU01hdHJpeENvbnN0cnVjdG9yKTsKKyAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhXZWJLaXRQb2ludENvbnN0cnVjdG9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhYTUxTZXJpYWxpemVyQ29uc3RydWN0b3IpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhQ
YXRoRXZhbHVhdG9yQ29uc3RydWN0b3IpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhTTFRQ
cm9jZXNzb3JDb25zdHJ1Y3Rvcik7CisKKyAgICAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgY3Vz
dG9tIFhTTFRQcm9jZXNzb3IgbWV0aG9kcy4KKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYU0xU
UHJvY2Vzc29ySW1wb3J0U3R5bGVzaGVldCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNM
VFByb2Nlc3NvclRyYW5zZm9ybVRvRnJhZ21lbnQpOworICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFhTTFRQcm9jZXNzb3JUcmFuc2Zvcm1Ub0RvY3VtZW50KTsKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhYU0xUUHJvY2Vzc29yU2V0UGFyYW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhYU0xUUHJvY2Vzc29yR2V0UGFyYW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhY
U0xUUHJvY2Vzc29yUmVtb3ZlUGFyYW1ldGVyKTsKKworICAgICAgICAvLyBDU1NQcmltaXRpdmVW
YWx1ZSBjdXN0b21pemVkIGZ1bmN0aW9ucworICAgICAgICBERUNMQVJFX0NBTExCQUNLKENTU1By
aW1pdGl2ZVZhbHVlR2V0UkdCQ29sb3JWYWx1ZSk7CisKKyAgICAgICAgLy8gQ2FudmFzIDJEIGN1
c3RvbWl6ZWQgZnVuY3Rpb25zCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEU2V0U3Ryb2tlQ29sb3IpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldEZpbGxDb2xvcik7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU3Ryb2tlUmVjdCk7CisgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0U2hhZG93KTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkREcmF3SW1hZ2UpOworICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRERyYXdJbWFnZUZy
b21SZWN0KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRDcmVhdGVQYXR0ZXJuKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRGaWxsVGV4dCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEU3Ryb2tlVGV4dCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEUHV0SW1hZ2VEYXRhKTsKKworICAgICAgICAvLyBJbXBsZW1l
bnRhdGlvbiBvZiBDbGlwYm9hcmQgYXR0cmlidXRlcyBhbmQgbWV0aG9kcy4KKyAgICAgICAgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoQ2xpcGJvYXJkVHlwZXMpOworICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKENsaXBib2FyZENsZWFyRGF0YSk7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soQ2xpcGJvYXJkR2V0RGF0YSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2xpcGJv
YXJkU2V0RGF0YSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2xpcGJvYXJkU2V0RHJhZ0lt
YWdlKTsKKworICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBFbGVtZW50IG1ldGhvZHMuCisg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRWxlbWVudFF1ZXJ5U2VsZWN0b3IpOworICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKEVsZW1lbnRRdWVyeVNlbGVjdG9yQWxsKTsKKyAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhFbGVtZW50U2V0QXR0cmlidXRlKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhFbGVtZW50U2V0QXR0cmlidXRlTm9kZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRWxl
bWVudFNldEF0dHJpYnV0ZU5TKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhFbGVtZW50U2V0
QXR0cmlidXRlTm9kZU5TKTsKKworICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBjdXN0b20g
TG9jYXRpb24gbWV0aG9kcy4KKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRU
RVIoTG9jYXRpb25Qcm90b2NvbCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Jf
U0VUVEVSKExvY2F0aW9uSG9zdCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Jf
U0VUVEVSKExvY2F0aW9uSG9zdG5hbWUpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SX1NFVFRFUihMb2NhdGlvblBvcnQpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SX1NFVFRFUihMb2NhdGlvblBhdGhuYW1lKTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9B
Q0NFU1NPUl9TRVRURVIoTG9jYXRpb25TZWFyY2gpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZ
X0FDQ0VTU09SX1NFVFRFUihMb2NhdGlvbkhhc2gpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZ
X0FDQ0VTU09SX1NFVFRFUihMb2NhdGlvbkhyZWYpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZ
X0FDQ0VTU09SX0dFVFRFUihMb2NhdGlvbkFzc2lnbik7CisgICAgICAgIERFQ0xBUkVfUFJPUEVS
VFlfQUNDRVNTT1JfR0VUVEVSKExvY2F0aW9uUmVwbGFjZSk7CisgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1JfR0VUVEVSKExvY2F0aW9uUmVsb2FkKTsKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhMb2NhdGlvbkFzc2lnbik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTG9jYXRp
b25SZXBsYWNlKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhMb2NhdGlvblJlbG9hZCk7Cisg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTG9jYXRpb25Ub1N0cmluZyk7CisgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soTG9jYXRpb25WYWx1ZU9mKTsKKworICAgICAgICAvLyBJbXBsZW1lbnRhdGlv
biBvZiBjdXN0b20gTm9kZSBtZXRob2RzLgorICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVB
ZGRFdmVudExpc3RlbmVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlUmVtb3ZlRXZl
bnRMaXN0ZW5lcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZUluc2VydEJlZm9yZSk7
CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZVJlcGxhY2VDaGlsZCk7CisgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soTm9kZVJlbW92ZUNoaWxkKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhOb2RlQXBwZW5kQ2hpbGQpOworCisgICAgICAgIC8vIEN1c3RvbSBpbXBsZW1lbnRhdGlvbiBp
cyBOYXZpZ2F0b3IgcHJvcGVydGllcy4KKyAgICAgICAgLy8gV2UgYWN0dWFsbHkgb25seSBuZWVk
IHRoaXMgYmVjYXVzZSBXZWJLaXQgaGFzCisgICAgICAgIC8vIG5hdmlnYXRvci5hcHBWZXJzaW9u
IGFzIGN1c3RvbS4gT3VyIHZlcnNpb24ganVzdAorICAgICAgICAvLyBwYXNzZXMgdGhyb3VnaC4K
KyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihOYXZpZ2F0b3JBcHBWZXJzaW9uKTsK
KworICAgICAgICAvLyBDdXN0b20gaW1wbGVtZW50YXRpb24gb2YgWE1MSHR0cFJlcXVlc3QgcHJv
cGVydGllcworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0
T25hYm9ydCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVl
c3RPbmVycm9yKTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVx
dWVzdE9ubG9hZCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJl
cXVlc3RPbmxvYWRzdGFydCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1M
SHR0cFJlcXVlc3RPbnByb2dyZXNzKTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
UihYTUxIdHRwUmVxdWVzdE9ucmVhZHlzdGF0ZWNoYW5nZSk7CisgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RSZXNwb25zZVRleHQpOworICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0QWRkRXZlbnRMaXN0ZW5lcik7CisgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RSZW1vdmVFdmVudExpc3RlbmVyKTsKKyAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdE9wZW4pOworICAgICAgICBERUNMQVJF
X0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0U2VuZCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
WE1MSHR0cFJlcXVlc3RTZXRSZXF1ZXN0SGVhZGVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhYTUxIdHRwUmVxdWVzdEdldFJlc3BvbnNlSGVhZGVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhYTUxIdHRwUmVxdWVzdE92ZXJyaWRlTWltZVR5cGUpOworICAgICAgICBERUNMQVJFX0NB
TExCQUNLKFhNTEh0dHBSZXF1ZXN0RGlzcGF0Y2hFdmVudCk7CisKKyAgICAgICAgLy8gQ3VzdG9t
IGltcGxlbWVudGF0aW9uIG9mIFhNTEh0dHBSZXF1ZXN0VXBsb2FkIHByb3BlcnRpZXMKKyAgICAg
ICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdFVwbG9hZE9uYWJvcnQp
OworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0VXBsb2Fk
T25lcnJvcik7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVl
c3RVcGxvYWRPbmxvYWQpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0
dHBSZXF1ZXN0VXBsb2FkT25sb2Fkc3RhcnQpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25wcm9ncmVzcyk7CisgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RVcGxvYWRBZGRFdmVudExpc3RlbmVyKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdFVwbG9hZFJlbW92ZUV2ZW50TGlzdGVuZXIp
OworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0VXBsb2FkRGlzcGF0Y2hF
dmVudCk7CisKKyAgICAgICAgLy8gQ3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIFRyZWVXYWxrZXIg
ZnVuY3Rpb25zCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtlclBhcmVudE5vZGUp
OworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJGaXJzdENoaWxkKTsKKyAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyTGFzdENoaWxkKTsKKyAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhUcmVlV2Fsa2VyTmV4dE5vZGUpOworICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFRyZWVXYWxrZXJQcmV2aW91c05vZGUpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVX
YWxrZXJOZXh0U2libGluZyk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soVHJlZVdhbGtlclBy
ZXZpb3VzU2libGluZyk7CisKKyAgICAgICAgLy8gQ3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIElu
c3BlY3RvckNvbnRyb2xsZXIgZnVuY3Rpb25zCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5z
cGVjdG9yQ29udHJvbGxlclByb2ZpbGVzKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNw
ZWN0b3JDb250cm9sbGVySGlnaGxpZ2h0RE9NTm9kZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soSW5zcGVjdG9yQ29udHJvbGxlckFkZFJlc291cmNlU291cmNlVG9GcmFtZSk7CisgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlckdldFJlc291cmNlRG9jdW1lbnRO
b2RlKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVyQWRkU291
cmNlVG9GcmFtZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxl
clNlYXJjaCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlclNl
dHRpbmcpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckNvbnRyb2xsZXJJbnNw
ZWN0ZWRXaW5kb3cpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckNvbnRyb2xs
ZXJTZXRTZXR0aW5nKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9s
bGVyQ3VycmVudENhbGxGcmFtZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9y
Q29udHJvbGxlckRlYnVnZ2VyRW5hYmxlZCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5z
cGVjdG9yQ29udHJvbGxlclBhdXNlT25FeGNlcHRpb25zKTsKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhJbnNwZWN0b3JDb250cm9sbGVyUHJvZmlsZXJFbmFibGVkKTsKKyAgICAgICAgI2lmIEVO
QUJMRShEQVRBQkFTRSkKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9s
bGVyRGF0YWJhc2VUYWJsZU5hbWVzKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlcldyYXBDYWxsYmFjayk7CisKKyAgICAgICAgLy8g
Q3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIE5vZGVJdGVyYXRvciBmdW5jdGlvbnMKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhOb2RlSXRlcmF0b3JOZXh0Tm9kZSk7CisgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soTm9kZUl0ZXJhdG9yUHJldmlvdXNOb2RlKTsKKworICAgICAgICAvLyBDdXN0b20g
aW1wbGVtZW50YXRpb24gb2YgTm9kZUZpbHRlciBmdW5jdGlvbgorICAgICAgICBERUNMQVJFX0NB
TExCQUNLKE5vZGVGaWx0ZXJBY2NlcHROb2RlKTsKKworICAgICAgICAvLyBDdXN0b20gaW1wbGVt
ZW50YXRpb24gb2YgSFRNTEZvcm1FbGVtZW50CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRN
TEZvcm1FbGVtZW50U3VibWl0KTsKKworICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlf
R0VUVEVSKERPTVN0cmluZ0xpc3QpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVN0cmlu
Z0xpc3RJdGVtKTsKKworICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihET01X
aW5kb3cpOworICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKERPTVdpbmRv
dyk7CisgICAgICAgIERFQ0xBUkVfTkFNRURfQUNDRVNTX0NIRUNLKERPTVdpbmRvdyk7CisgICAg
ICAgIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0soRE9NV2luZG93KTsKKworICAgICAgICBE
RUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihIVE1MRnJhbWVTZXRFbGVtZW50KTsKKyAgICAg
ICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTEZvcm1FbGVtZW50KTsKKyAgICAg
ICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoTm9kZUxpc3QpOworICAgICAgICBERUNM
QVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihOYW1lZE5vZGVNYXApOworICAgICAgICBERUNMQVJF
X05BTUVEX1BST1BFUlRZX0dFVFRFUihDU1NTdHlsZURlY2xhcmF0aW9uKTsKKyAgICAgICAgREVD
TEFSRV9OQU1FRF9QUk9QRVJUWV9TRVRURVIoQ1NTU3R5bGVEZWNsYXJhdGlvbik7CisgICAgICAg
IERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxQbHVnSW5FbGVtZW50KTsKKyAgICAg
ICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9TRVRURVIoSFRNTFBsdWdJbkVsZW1lbnQpOworICAg
ICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxQbHVnSW5FbGVtZW50KTsK
KyAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX1NFVFRFUihIVE1MUGx1Z0luRWxlbWVu
dCk7CisKKyAgICAgICAgLy8gUGx1Z2luIG9iamVjdCBjYW4gYmUgY2FsbGVkIGFzIGZ1bmN0aW9u
LgorICAgICAgICBERUNMQVJFX0NBTExCQUNLKEhUTUxQbHVnSW5FbGVtZW50KTsKKworICAgICAg
ICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihTdHlsZVNoZWV0TGlzdCk7CisgICAgICAg
IERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoTmFtZWROb2RlTWFwKTsKKyAgICAgICAg
REVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUihIVE1MRm9ybUVsZW1lbnQpOworICAgICAg
ICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKEhUTUxPcHRpb25zQ29sbGVjdGlvbik7
CisgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uKTsKKyAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTFNlbGVj
dEVsZW1lbnRDb2xsZWN0aW9uKTsKKyAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX1NF
VFRFUihIVE1MU2VsZWN0RWxlbWVudENvbGxlY3Rpb24pOworICAgICAgICBERUNMQVJFX05BTUVE
X1BST1BFUlRZX0dFVFRFUihIVE1MQ29sbGVjdGlvbik7CisKKyAgICAgICAgLy8gQ2FudmFzIGFu
ZCBzdXBwb3J0aW5nIGNsYXNzZXMKKyAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dF
VFRFUihDYW52YXNQaXhlbEFycmF5KTsKKyAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZ
X1NFVFRFUihDYW52YXNQaXhlbEFycmF5KTsKKworICAgICAgICAvLyBNZXNzYWdlUG9ydAorICAg
ICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKE1lc3NhZ2VQb3J0T25tZXNzYWdlKTsKKyAg
ICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihNZXNzYWdlUG9ydE9uY2xvc2UpOworICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKE1lc3NhZ2VQb3J0U3RhcnRDb252ZXJzYXRpb24pOworICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKE1lc3NhZ2VQb3J0QWRkRXZlbnRMaXN0ZW5lcik7CisgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soTWVzc2FnZVBvcnRSZW1vdmVFdmVudExpc3RlbmVyKTsKKwor
ICAgICAgICAvLyBEYXRhYmFzZQorICAgICAgICBERUNMQVJFX0NBTExCQUNLKERhdGFiYXNlQ2hh
bmdlVmVyc2lvbik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRGF0YWJhc2VUcmFuc2FjdGlv
bik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1FMVHJhbnNhY3Rpb25FeGVjdXRlU3FsKTsK
KyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTUUxSZXN1bHRTZXRSb3dMaXN0SXRlbSk7CisKKyAg
ICAgICAgLy8gQ2xpZW50UmVjdExpc3QKKyAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZ
X0dFVFRFUihDbGllbnRSZWN0TGlzdCk7CisKKyAgICAgICAgLy8gU1ZHIGN1c3RvbSBwcm9wZXJ0
aWVzIGFuZCBjYWxsYmFja3MKKyAgICAgICAgI2lmIEVOQUJMRShTVkcpCisgICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKFNWR0xlbmd0aFZhbHVlKTsKKyAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhTVkdMZW5ndGhDb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk7CisgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soU1ZHTWF0cml4SW52ZXJzZSk7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soU1ZHTWF0cml4Um90YXRlRnJvbVZlY3Rvcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soU1ZHRWxlbWVudEluc3RhbmNlQWRkRXZlbnRMaXN0ZW5lcik7CisgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soU1ZHRWxlbWVudEluc3RhbmNlUmVtb3ZlRXZlbnRMaXN0ZW5lcik7CisgICAgICAg
ICNlbmRpZgorCisgICAgICAgIC8vIFdvcmtlcgorICAgICAgICAjaWYgRU5BQkxFKFdPUktFUlMp
CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoV29ya2VyT25tZXNzYWdlKTsKKyAg
ICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXb3JrZXJPbmVycm9yKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb25zdHJ1Y3Rvcik7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soV29ya2VyQWRkRXZlbnRMaXN0ZW5lcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V29ya2VyUmVtb3ZlRXZlbnRMaXN0ZW5lcik7CisKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9B
Q0NFU1NPUl9HRVRURVIoV29ya2VyQ29udGV4dFNlbGYpOworICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SKFdvcmtlckNvbnRleHRPbm1lc3NhZ2UpCisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soV29ya2VyQ29udGV4dEltcG9ydFNjcmlwdHMpOworICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdvcmtlckNvbnRleHRTZXRUaW1lb3V0KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhX
b3JrZXJDb250ZXh0Q2xlYXJUaW1lb3V0KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3Jr
ZXJDb250ZXh0U2V0SW50ZXJ2YWwpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNv
bnRleHRDbGVhckludGVydmFsKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250
ZXh0QWRkRXZlbnRMaXN0ZW5lcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29u
dGV4dFJlbW92ZUV2ZW50TGlzdGVuZXIpOworICAgICAgICAjZW5kaWYKKworICAgICN1bmRlZiBE
RUNMQVJFX0lOREVYRURfQUNDRVNTX0NIRUNLCisgICAgI3VuZGVmIERFQ0xBUkVfTkFNRURfQUND
RVNTX0NIRUNLCisKKyAgICAjdW5kZWYgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIK
KyAgICAjdW5kZWYgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIKKyAgICAjdW5kZWYg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUgorCisgICAgI3VuZGVmIERFQ0xBUkVfTkFNRURfUFJP
UEVSVFlfR0VUVEVSCisgICAgI3VuZGVmIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfU0VUVEVSCisg
ICAgI3VuZGVmIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfREVMRVRFUgorCisgICAgI3VuZGVmIERF
Q0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIKKyAgICAjdW5kZWYgREVDTEFSRV9JTkRFWEVE
X1BST1BFUlRZX1NFVFRFUgorICAgICN1bmRlZiBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfREVM
RVRFUgorCisgICAgI3VuZGVmIERFQ0xBUkVfQ0FMTEJBQ0sKKworICAgICAgICAvLyBSZXR1cm5z
IHRoZSBOUE9iamVjdCBjb3JyZXNwb25kaW5nIHRvIGFuIEhUTUxFbGVtZW50IG9iamVjdC4KKyAg
ICAgICAgc3RhdGljIE5QT2JqZWN0KiBHZXRIVE1MUGx1Z0luRWxlbWVudE5QT2JqZWN0KHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4pOworCisgICAgICAgIC8vIFJldHVybnMgdGhlIG93bmVyIGZyYW1l
IHBvaW50ZXIgb2YgYSBET00gd3JhcHBlciBvYmplY3QuIEl0IG9ubHkgd29ya3MgZm9yCisgICAg
ICAgIC8vIHRoZXNlIERPTSBvYmplY3RzIHJlcXVpcmluZyBjcm9zcy1kb21haW4gYWNjZXNzIGNo
ZWNrLgorICAgICAgICBzdGF0aWMgRnJhbWUqIEdldFRhcmdldEZyYW1lKHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKTsKKworICAgICAgICAvLyBT
cGVjaWFsIGNhc2UgZm9yIGRvd25jYXN0aW5nIFNWRyBwYXRoIHNlZ21lbnRzCisgICAgI2lmIEVO
QUJMRShTVkcpCisgICAgICAgIHN0YXRpYyBWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUgRG93
bmNhc3RTVkdQYXRoU2VnKHZvaWQqIHBhdGhTZWcpOworICAgICNlbmRpZgorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0
SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsZVNob3QpOworICAgICAg
ICBzdGF0aWMgdm9pZCBDbGVhclRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgV2luZG93U2V0TG9jYXRpb24oRE9NV2luZG93KiwgY29uc3QgU3Ry
aW5nJik7CisgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVjhD
dXN0b21CaW5kaW5nX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YWJh
c2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiA0NDUwNCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGF0YWJhc2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCAr
MzMsMTAgQEAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKICNpbmNsdWRlICJ2OF9iaW5kaW5nLmgi
Ci0jaW5jbHVkZSAidjhfY3VzdG9tLmgiCiAjaW5jbHVkZSAidjhfcHJveHkuaCIKIAogI2luY2x1
ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21TUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJWOEN1c3RvbVZvaWRDYWxsYmFj
ay5oIgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dM
aXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiA0NDUwNCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMCBAQAogI2lmIEVOQUJMRShEQVRBQkFTRSkKIAog
I2luY2x1ZGUgInY4X2JpbmRpbmcuaCIKLSNpbmNsdWRlICJ2OF9jdXN0b20uaCIKICNpbmNsdWRl
ICJ2OF9wcm94eS5oIgogCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0Um93TGlzdC5oIgorI2luY2x1
ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0
b20uY3BwCShyZXZpc2lvbiA0NDUwNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTEg
QEAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKICNpbmNsdWRlICJ2OF9iaW5kaW5nLmgiCi0jaW5j
bHVkZSAidjhfY3VzdG9tLmgiCiAjaW5jbHVkZSAidjhfcHJveHkuaCIKIAogI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRp
bmcuaCIKICNpbmNsdWRlICJWOEN1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiVjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywyMDA4LDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJWOEN1c3RvbUJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEluZGV4LmgiCisjaW5jbHVkZSAiVjhQ
cm94eS5oIgorI2luY2x1ZGUgIldlYktpdFBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYktpdFBvaW50Q29uc3RydWN0b3IpCit7CisgICAgSU5D
X1NUQVRTKCJET00uV2ViS2l0UG9pbnQuQ29uc3RydWN0b3IiKTsKKyAgICByZXR1cm4gVjhQcm94
eTo6Q29uc3RydWN0RE9NT2JqZWN0PFY4Q2xhc3NJbmRleDo6V0VCS0lUUE9JTlQsIFdlYktpdFBv
aW50PihhcmdzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="15845"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31135</attachid>
            <date>2009-06-10 10:28:41 -0700</date>
            <delta_ts>2009-06-10 11:24:30 -0700</delta_ts>
            <desc>patch3</desc>
            <filename>patch3.txt</filename>
            <type>text/plain</type>
            <size>34340</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDUwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMDktMDYtMDggIE5hdGUgQ2hhcGluICA8amFwaGV0QGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlu
aXNoIG1vdmluZyBWOEN1c3RvbSBmcm9tIHNyYy5jaHJvbWl1bS5vcmcgdG8gc3ZuLndlYmtpdC5v
cmcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2
MjU4CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcDog
RmluaXNoZWQgdXBzdHJlYW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpBQ0NFU1NPUl9HRVRURVIp
OiBNb3ZlZCBmcm9tIHY4X2N1c3RvbS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpJTkRFWEVEX0FD
Q0VTU19DSEVDSyk6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6
Ok5BTUVEX0FDQ0VTU19DSEVDSyk6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlY4Q3VzdG9tOjpHZXRUYXJnZXRGcmFtZSk6IE1vdmVkIGZyb20gdjhfY3VzdG9t
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlY4Q3VzdG9tOjpEb3duY2FzdFNWR1BhdGhTZWcpOiBN
b3ZlZCBmcm9tIHY4X2N1c3RvbS5jcHAuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3VzdG9tQmluZGluZy5oOiBGaW5pc2hlZCB1cHN0cmVhbWluZy4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhEYXRhYmFzZUN1c3RvbS5jcHA6IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6
IFVwZGF0ZWQgaW5jbHVkZXMuCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJh
bnNhY3Rpb25DdXN0b20uY3BwOiBVcGRhdGVkIGluY2x1ZGVzLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6IE1vdmVkIGZyb20gdjhfY3VzdG9tLmNwcC4K
KwogMjAwOS0wNi0wOCAgQWRhbSBMYW5nbGV5ICA8YWdsQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTaWVkZWwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5jcHAJKHJldmlzaW9uIDQ0NTA0KQorKysgV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTMgKzMxLDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21C
aW5kaW5nLmgiCiAKKyNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRl
ICJIaXN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
RWxlbWVudEJhc2UuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKKyNpbmNsdWRlICJMb2NhdGlv
bi5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAorI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAi
U1ZHUGF0aFNlZy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBhbGxv
d1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybChIVE1MRnJhbWVFbGVtZW50QmFzZSogZnJh
bWUsIFN0cmluZyB2YWx1ZSkKQEAgLTU3LDQgKzY0LDExOSBAQCBib29sIGFsbG93U2V0dGluZ1Ny
Y1RvSmF2YXNjcmlwdFVSTChFbGVtCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIERPTUltcGxl
bWVudGF0aW9uIGlzIGEgc2luZ2xldG9uIGluIFdlYkNvcmUuIElmIHdlIHVzZSBvdXIgbm9ybWFs
CisvLyBtYXBwaW5nIGZyb20gRE9NIG9iamVjdHMgdG8gVjggd3JhcHBlcnMsIHRoZSBzYW1lIHdy
YXBwZXIgd2lsbCBiZQorLy8gc2hhcmVkIGZvciBhbGwgZnJhbWVzIGluIHRoZSBzYW1lIHByb2Nl
c3MuIFRoaXMgaXMgYSBtYWpvcgorLy8gc2VjdXJpdHkgcHJvYmxlbS4gVGhlcmVmb3JlLCB3ZSBn
ZW5lcmF0ZSBhIERPTUltcGxlbWVudGF0aW9uCisvLyB3cmFwcGVyIHBlciBkb2N1bWVudCBhbmQg
c3RvcmUgaXQgaW4gYW4gaW50ZXJuYWwgZmllbGQgb2YgdGhlCisvLyBkb2N1bWVudC4gU2luY2Ug
dGhlIERPTUltcGxlbWVudGF0aW9uIG9iamVjdCBpcyBhIHNpbmdsZXRvbiwgd2UgZG8KKy8vIG5v
dCBoYXZlIHRvIGRvIGFueXRoaW5nIHRvIGtlZXAgdGhlIERPTUltcGxlbWVudGF0aW9uIG9iamVj
dCBhbGl2ZQorLy8gZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgd3JhcHBlci4KK0FDQ0VTU09SX0dF
VFRFUihEb2N1bWVudEltcGxlbWVudGF0aW9uKQoreworICAgIEFTU0VSVChpbmZvLkhvbGRlcigp
LT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSBrRG9jdW1lbnRNaW5pbXVtSW50ZXJuYWxGaWVsZENv
dW50KTsKKworICAgIC8vIENoZWNrIGlmIHRoZSBpbnRlcm5hbCBmaWVsZCBhbHJlYWR5IGNvbnRh
aW5zIGEgd3JhcHBlci4KKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbXBsZW1lbnRhdGlvbiA9
IGluZm8uSG9sZGVyKCktPkdldEludGVybmFsRmllbGQoa0RvY3VtZW50SW1wbGVtZW50YXRpb25J
bmRleCk7CisgICAgaWYgKCFpbXBsZW1lbnRhdGlvbi0+SXNVbmRlZmluZWQoKSkKKyAgICAgICAg
cmV0dXJuIGltcGxlbWVudGF0aW9uOworCisgICAgLy8gR2VuZXJhdGUgYSB3cmFwcGVyLgorICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IFY4UHJveHk6OkRPTVdyYXBwZXJUb05hdGl2ZTxEb2N1bWVu
dD4oaW5mby5Ib2xkZXIoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBW
OFByb3h5OjpET01JbXBsZW1lbnRhdGlvblRvVjhPYmplY3QoZG9jdW1lbnQtPmltcGxlbWVudGF0
aW9uKCkpOworCisgICAgLy8gU3RvcmUgdGhlIHdyYXBwZXIgaW4gdGhlIGludGVybmFsIGZpZWxk
LgorICAgIGluZm8uSG9sZGVyKCktPlNldEludGVybmFsRmllbGQoa0RvY3VtZW50SW1wbGVtZW50
YXRpb25JbmRleCwgd3JhcHBlcik7CisKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKworLy8gLS0t
LS0tLS0tLS0tLS0tIFNlY3VyaXR5IENoZWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJ
TkRFWEVEX0FDQ0VTU19DSEVDSyhIaXN0b3J5KQoreworICAgIEFTU0VSVChWOENsYXNzSW5kZXg6
OkZyb21JbnQoZGF0YS0+SW50MzJWYWx1ZSgpKSA9PSBWOENsYXNzSW5kZXg6OkhJU1RPUlkpOwor
ICAgIC8vIE9ubHkgYWxsb3cgc2FtZSBvcmlnaW4gYWNjZXNzCisgICAgSGlzdG9yeSogaGlzdG9y
eSA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0PEhpc3Rvcnk+KFY4Q2xhc3NJbmRleDo6SElTVE9S
WSwgaG9zdCk7CisgICAgcmV0dXJuIFY4UHJveHk6OkNhbkFjY2Vzc0ZyYW1lKGhpc3RvcnktPmZy
YW1lKCksIGZhbHNlKTsKK30KKworTkFNRURfQUNDRVNTX0NIRUNLKEhpc3RvcnkpCit7CisgICAg
QVNTRVJUKFY4Q2xhc3NJbmRleDo6RnJvbUludChkYXRhLT5JbnQzMlZhbHVlKCkpID09IFY4Q2xh
c3NJbmRleDo6SElTVE9SWSk7CisgICAgLy8gT25seSBhbGxvdyBzYW1lIG9yaWdpbiBhY2Nlc3MK
KyAgICBIaXN0b3J5KiBoaXN0b3J5ID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8SGlzdG9yeT4o
VjhDbGFzc0luZGV4OjpISVNUT1JZLCBob3N0KTsKKyAgICByZXR1cm4gVjhQcm94eTo6Q2FuQWNj
ZXNzRnJhbWUoaGlzdG9yeS0+ZnJhbWUoKSwgZmFsc2UpOworfQorCisjdW5kZWYgSU5ERVhFRF9B
Q0NFU1NfQ0hFQ0sKKyN1bmRlZiBOQU1FRF9BQ0NFU1NfQ0hFQ0sKKyN1bmRlZiBOQU1FRF9QUk9Q
RVJUWV9HRVRURVIKKyN1bmRlZiBOQU1FRF9QUk9QRVJUWV9TRVRURVIKKworRnJhbWUqIFY4Q3Vz
dG9tOjpHZXRUYXJnZXRGcmFtZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gZGF0YSkKK3sKKyAgICBGcmFtZSogdGFyZ2V0ID0gMDsKKyAgICBzd2l0Y2gg
KFY4Q2xhc3NJbmRleDo6RnJvbUludChkYXRhLT5JbnQzMlZhbHVlKCkpKSB7CisgICAgY2FzZSBW
OENsYXNzSW5kZXg6OkRPTVdJTkRPVzogeworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
d2luZG93ID0gVjhQcm94eTo6TG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRP
VywgaG9zdCk7CisgICAgICAgIGlmICh3aW5kb3cuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuIHRhcmdldDsKKworICAgICAgICBET01XaW5kb3cqIHRhcmdldFdpbmRvdyA9IFY4UHJveHk6
OlRvTmF0aXZlT2JqZWN0PERPTVdpbmRvdz4oVjhDbGFzc0luZGV4OjpET01XSU5ET1csIHdpbmRv
dyk7CisgICAgICAgIHRhcmdldCA9IHRhcmdldFdpbmRvdy0+ZnJhbWUoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgVjhDbGFzc0luZGV4OjpMT0NBVElPTjogeworICAgICAgICBI
aXN0b3J5KiBoaXN0b3J5ID0gVjhQcm94eTo6VG9OYXRpdmVPYmplY3Q8SGlzdG9yeT4oVjhDbGFz
c0luZGV4OjpISVNUT1JZLCBob3N0KTsKKyAgICAgICAgdGFyZ2V0ID0gaGlzdG9yeS0+ZnJhbWUo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVjhDbGFzc0luZGV4OjpISVNUT1JZ
OiB7CisgICAgICAgIExvY2F0aW9uKiBsb2NhdGlvbiA9IFY4UHJveHk6OlRvTmF0aXZlT2JqZWN0
PExvY2F0aW9uPihWOENsYXNzSW5kZXg6OkxPQ0FUSU9OLCBob3N0KTsKKyAgICAgICAgdGFyZ2V0
ID0gbG9jYXRpb24tPmZyYW1lKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0
OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworI2lmIEVO
QUJMRShTVkcpCitWOENsYXNzSW5kZXg6OlY4V3JhcHBlclR5cGUgVjhDdXN0b206OkRvd25jYXN0
U1ZHUGF0aFNlZyh2b2lkKiBwYXRoU2VnKQoreworICAgIFdlYkNvcmU6OlNWR1BhdGhTZWcqIHJl
YWxQYXRoU2VnID0gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpTVkdQYXRoU2VnKj4ocGF0aFNl
Zyk7CisKKyAgICBzd2l0Y2ggKHJlYWxQYXRoU2VnLT5wYXRoU2VnVHlwZSgpKSB7CisjZGVmaW5l
IE1BS0VfQ0FTRShzdmdWYWx1ZSwgdjhWYWx1ZSkgY2FzZSBXZWJDb3JlOjpTVkdQYXRoU2VnOjpz
dmdWYWx1ZTogcmV0dXJuIFY4Q2xhc3NJbmRleDo6djhWYWx1ZQorCisgICAgTUFLRV9DQVNFKFBB
VEhTRUdfQ0xPU0VQQVRILCAgICAgICAgICAgICAgICAgICAgU1ZHUEFUSFNFR0NMT1NFUEFUSCk7
CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfTU9WRVRPX0FCUywgICAgICAgICAgICAgICAgICAgU1ZH
UEFUSFNFR01PVkVUT0FCUyk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfTU9WRVRPX1JFTCwgICAg
ICAgICAgICAgICAgICAgU1ZHUEFUSFNFR01PVkVUT1JFTCk7CisgICAgTUFLRV9DQVNFKFBBVEhT
RUdfTElORVRPX0FCUywgICAgICAgICAgICAgICAgICAgU1ZHUEFUSFNFR0xJTkVUT0FCUyk7Cisg
ICAgTUFLRV9DQVNFKFBBVEhTRUdfTElORVRPX1JFTCwgICAgICAgICAgICAgICAgICAgU1ZHUEFU
SFNFR0xJTkVUT1JFTCk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlMs
ICAgICAgICAgICAgU1ZHUEFUSFNFR0NVUlZFVE9DVUJJQ0FCUyk7CisgICAgTUFLRV9DQVNFKFBB
VEhTRUdfQ1VSVkVUT19DVUJJQ19SRUwsICAgICAgICAgICAgU1ZHUEFUSFNFR0NVUlZFVE9DVUJJ
Q1JFTCk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTLCAgICAg
ICAgU1ZHUEFUSFNFR0NVUlZFVE9RVUFEUkFUSUNBQlMpOworICAgIE1BS0VfQ0FTRShQQVRIU0VH
X0NVUlZFVE9fUVVBRFJBVElDX1JFTCwgICAgICAgIFNWR1BBVEhTRUdDVVJWRVRPUVVBRFJBVElD
UkVMKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNFR19BUkNfQUJTLCAgICAgICAgICAgICAgICAgICAg
ICBTVkdQQVRIU0VHQVJDQUJTKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNFR19BUkNfUkVMLCAgICAg
ICAgICAgICAgICAgICAgICBTVkdQQVRIU0VHQVJDUkVMKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNF
R19MSU5FVE9fSE9SSVpPTlRBTF9BQlMsICAgICAgICBTVkdQQVRIU0VHTElORVRPSE9SSVpPTlRB
TEFCUyk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfUkVMLCAgICAg
ICAgU1ZHUEFUSFNFR0xJTkVUT0hPUklaT05UQUxSRUwpOworICAgIE1BS0VfQ0FTRShQQVRIU0VH
X0xJTkVUT19WRVJUSUNBTF9BQlMsICAgICAgICAgIFNWR1BBVEhTRUdMSU5FVE9WRVJUSUNBTEFC
Uyk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfTElORVRPX1ZFUlRJQ0FMX1JFTCwgICAgICAgICAg
U1ZHUEFUSFNFR0xJTkVUT1ZFUlRJQ0FMUkVMKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNFR19DVVJW
RVRPX0NVQklDX1NNT09USF9BQlMsICAgICBTVkdQQVRIU0VHQ1VSVkVUT0NVQklDU01PT1RIQUJT
KTsKKyAgICBNQUtFX0NBU0UoUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUwsICAgICBT
VkdQQVRIU0VHQ1VSVkVUT0NVQklDU01PT1RIUkVMKTsKKyAgICBNQUtFX0NBU0UoUEFUSFNFR19D
VVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTLCBTVkdQQVRIU0VHQ1VSVkVUT1FVQURSQVRJQ1NN
T09USEFCUyk7CisgICAgTUFLRV9DQVNFKFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RI
X1JFTCwgU1ZHUEFUSFNFR0NVUlZFVE9RVUFEUkFUSUNTTU9PVEhSRUwpOworCisjdW5kZWYgTUFL
RV9DQVNFCisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gVjhDbGFzc0luZGV4OjpJTlZB
TElEX0NMQVNTX0lOREVYOworICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3VzdG9tQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tQmluZGluZy5oCShyZXZpc2lvbiA0NDUwNCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxOSArMzEs
NDg4IEBACiAjaWZuZGVmIFY4Q3VzdG9tQmluZGluZ19oCiAjZGVmaW5lIFY4Q3VzdG9tQmluZGlu
Z19oCiAKLS8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGZvcndhcmRpbmcgaGVhZGVyIHVu
dGlsIGFsbCBiaW5kaW5ncyBoYXZlIG1pZ3JhdGVkCi0vLyBvdmVyIGFuZCB2OF9jdXN0b20gYWN0
dWFsbHkgYmVjb21lcyBWOEN1c3RvbUJpbmRpbmcuCi0jaW5jbHVkZSAidjhfY3VzdG9tLmgiCisj
aW5jbHVkZSAiVjhJbmRleC5oIgorI2luY2x1ZGUgPHY4Lmg+CisKK3N0cnVjdCBOUE9iamVjdDsK
KworI2RlZmluZSBDQUxMQkFDS19GVU5DX0RFQ0woTkFNRSkgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4Q3VzdG9tOjp2OCMjTkFNRSMjQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
KworI2RlZmluZSBBQ0NFU1NPUl9HRVRURVIoTkFNRSkgXAorICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEN1c3RvbTo6djgjI05BTUUjI0FjY2Vzc29yR2V0dGVyKCBcCisgICAgICAgIHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorCisj
ZGVmaW5lIEFDQ0VTU09SX1NFVFRFUihOQU1FKSBcCisgICAgdm9pZCBWOEN1c3RvbTo6djgjI05B
TUUjI0FjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBcCisgICAgICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQorCisjZGVmaW5lIElOREVYRURfUFJPUEVSVFlfR0VUVEVSKE5BTUUpIFwKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4IyNOQU1FIyNJbmRleGVkUHJvcGVydHlHZXR0ZXIo
IFwKKyAgICAgICAgdWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CisKKyNkZWZpbmUgSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoTkFNRSkgXAorICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEN1c3RvbTo6djgjI05BTUUjI0luZGV4ZWRQcm9wZXJ0eVNldHRlcigg
XAorICAgICAgICB1aW50MzJfdCBpbmRleCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCisKKyNkZWZpbmUgSU5ERVhFRF9QUk9QRVJUWV9E
RUxFVEVSKE5BTUUpIFwKKyAgICB2ODo6SGFuZGxlPHY4OjpCb29sZWFuPiBWOEN1c3RvbTo6djgj
I05BTUUjI0luZGV4ZWRQcm9wZXJ0eURlbGV0ZXIoIFwKKyAgICAgICAgdWludDMyX3QgaW5kZXgs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCisKKyNkZWZpbmUgTkFNRURfUFJPUEVSVFlf
R0VUVEVSKE5BTUUpIFwKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDdXN0b206OnY4IyNO
QU1FIyNOYW1lZFByb3BlcnR5R2V0dGVyKCBcCisgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorCisjZGVmaW5lIE5BTUVEX1BS
T1BFUlRZX1NFVFRFUihOQU1FKSBcCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3VzdG9t
Ojp2OCMjTkFNRSMjTmFtZWRQcm9wZXJ0eVNldHRlciggXAorICAgICAgICB2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCisKKyNkZWZpbmUgTkFNRURfUFJPUEVSVFlfREVMRVRFUihOQU1FKSBc
CisgICAgdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gVjhDdXN0b206OnY4IyNOQU1FIyNOYW1lZFBy
b3BlcnR5RGVsZXRlciggXAorICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKKworI2RlZmluZSBOQU1FRF9BQ0NFU1NfQ0hFQ0so
TkFNRSkgXAorICAgIGJvb2wgVjhDdXN0b206OnY4IyNOQU1FIyNOYW1lZFNlY3VyaXR5Q2hlY2so
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIFwKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4ga2V5LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKQor
CisjZGVmaW5lIElOREVYRURfQUNDRVNTX0NIRUNLKE5BTUUpIFwKKyAgICBib29sIFY4Q3VzdG9t
Ojp2OCMjTkFNRSMjSW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhv
c3QsIFwKKyAgICAgICAgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IGRhdGEpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNz
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOworICAgIGNsYXNzIERPTVdpbmRvdzsKICAgICBjbGFzcyBF
bGVtZW50OworICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNzIEhUTUxDb2xsZWN0aW9uOworICAg
IGNsYXNzIEhUTUxGcmFtZUVsZW1lbnRCYXNlOwogICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFz
cyBWOFByb3h5OwogCiAgICAgYm9vbCBhbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVy
bChIVE1MRnJhbWVFbGVtZW50QmFzZSosIFN0cmluZyB2YWx1ZSk7CiAgICAgYm9vbCBhbGxvd1Nl
dHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoRWxlbWVudCosIFN0cmluZyBuYW1lLCBTdHJpbmcgdmFs
dWUpOwogCisgICAgY2xhc3MgVjhDdXN0b20geworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gQ29u
c3RhbnRzLgorICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XcmFwcGVyVHlwZUluZGV4ID0g
MDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV3JhcHBlck9iamVjdEluZGV4ID0gMTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291
bnQgPSAyOworCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga05QT2JqZWN0SW50ZXJuYWxGaWVs
ZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKworICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IGtEb2N1bWVudEltcGxlbWVudGF0aW9uSW5kZXggPSBrRGVmYXVs
dFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50
IGtEb2N1bWVudE1pbmltdW1JbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRl
cm5hbEZpZWxkQ291bnQgKyAxOworCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0hUTUxEb2N1
bWVudE1hcmtlckluZGV4ID0ga0RvY3VtZW50TWluaW11bUludGVybmFsRmllbGRDb3VudCArIDA7
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0hUTUxEb2N1bWVudFNoYWRvd0luZGV4ID0ga0Rv
Y3VtZW50TWluaW11bUludGVybmFsRmllbGRDb3VudCArIDE7CisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQga0hUTUxEb2N1bWVudEludGVybmFsRmllbGRDb3VudCA9IGtEb2N1bWVudE1pbmltdW1J
bnRlcm5hbEZpZWxkQ291bnQgKyAyOworCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1hNTEh0
dHBSZXF1ZXN0Q2FjaGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCAr
IDA7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1hNTEh0dHBSZXF1ZXN0SW50ZXJuYWxGaWVs
ZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKworICAgICAg
ICBzdGF0aWMgY29uc3QgaW50IGtNZXNzYWdlQ2hhbm5lbFBvcnQxSW5kZXggPSBrRGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtN
ZXNzYWdlQ2hhbm5lbFBvcnQySW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291
bnQgKyAxOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtNZXNzYWdlQ2hhbm5lbEludGVybmFs
RmllbGRDb3VudCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDI7CisKKyAg
ICAgICAgc3RhdGljIGNvbnN0IGludCBrTWVzc2FnZVBvcnRSZXF1ZXN0Q2FjaGVJbmRleCA9IGtE
ZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQga01lc3NhZ2VQb3J0RW50YW5nbGVkUG9ydEluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50
ZXJuYWxGaWVsZENvdW50ICsgMTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrTWVzc2FnZVBv
cnRJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAyOworCisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga1dv
cmtlclJlcXVlc3RDYWNoZUluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
ICsgMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrV29ya2VySW50ZXJuYWxGaWVsZENvdW50
ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKworICAgICAgICBzdGF0
aWMgY29uc3QgaW50IGtXb3JrZXJDb250ZXh0UmVxdWVzdENhY2hlSW5kZXggPSBrRGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtX
b3JrZXJDb250ZXh0SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxG
aWVsZENvdW50ICsgMTsKKyNlbmRpZgorCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdp
bmRvd0NvbnNvbGVJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7
CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd0hpc3RvcnlJbmRleCA9IGtEZWZh
dWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CisgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQga0RPTVdpbmRvd0xvY2F0aW9uYmFySW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgKyAyOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dNZW51YmFy
SW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAzOworICAgICAgICBz
dGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dOYXZpZ2F0b3JJbmRleCA9IGtEZWZhdWx0V3JhcHBl
ckludGVybmFsRmllbGRDb3VudCArIDQ7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdp
bmRvd1BlcnNvbmFsYmFySW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyA1OworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5kb3dTY3JlZW5JbmRleCA9IGtE
ZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDY7CisgICAgICAgIHN0YXRpYyBjb25z
dCBpbnQga0RPTVdpbmRvd1Njcm9sbGJhcnNJbmRleCA9IGtEZWZhdWx0V3JhcHBlckludGVybmFs
RmllbGRDb3VudCArIDc7CisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQga0RPTVdpbmRvd1NlbGVj
dGlvbkluZGV4ID0ga0RlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgODsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93U3RhdHVzYmFySW5kZXggPSBrRGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyA5OworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtE
T01XaW5kb3dUb29sYmFySW5kZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAxMDsKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBrRE9NV2luZG93TG9jYXRpb25JbmRleCA9
IGtEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDExOworICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IGtET01XaW5kb3dET01TZWxlY3Rpb25JbmRleCA9IGtEZWZhdWx0V3JhcHBlcklu
dGVybmFsRmllbGRDb3VudCArIDEyOworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtET01XaW5k
b3dJbnRlcm5hbEZpZWxkQ291bnQgPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAxMzsKKworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtTdHlsZVNoZWV0T3duZXJOb2RlSW5k
ZXggPSBrRGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgICAgICBzdGF0
aWMgY29uc3QgaW50IGtTdHlsZVNoZWV0SW50ZXJuYWxGaWVsZENvdW50ID0ga0RlZmF1bHRXcmFw
cGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKworI2RlZmluZSBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SX0dFVFRFUihOQU1FKSBcCisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
OCMjTkFNRSMjQWNjZXNzb3JHZXR0ZXIoIFwKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCisKKyNkZWZpbmUgREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoTkFNRSkgIFwKKyAgICBzdGF0aWMgdm9pZCB2OCMjTkFN
RSMjQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIFwKKyAgICAgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CisKKyNkZWZpbmUgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihOQU1FKSBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SX0dFVFRFUihOQU1FKTsgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRU
RVIoTkFNRSkKKworI2RlZmluZSBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihOQU1FKSAg
XAorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjgjI05BTUUjI05hbWVkUHJvcGVy
dHlHZXR0ZXIoIFwKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCisKKyNkZWZpbmUgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9T
RVRURVIoTkFNRSkgXAorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjgjI05BTUUj
I05hbWVkUHJvcGVydHlTZXR0ZXIoIFwKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQorCisjZGVmaW5lIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfREVMRVRFUihOQU1FKSBcCisg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IHY4IyNOQU1FIyNOYW1lZFByb3BlcnR5
RGVsZXRlciggXAorICAgICAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKKworI2RlZmluZSBVU0VfTkFNRURfUFJPUEVSVFlfR0VUVEVS
KE5BTUUpIFY4Q3VzdG9tOjp2OCMjTkFNRSMjTmFtZWRQcm9wZXJ0eUdldHRlcgorCisjZGVmaW5l
IFVTRV9OQU1FRF9QUk9QRVJUWV9TRVRURVIoTkFNRSkgVjhDdXN0b206OnY4IyNOQU1FIyNOYW1l
ZFByb3BlcnR5U2V0dGVyCisKKyNkZWZpbmUgVVNFX05BTUVEX1BST1BFUlRZX0RFTEVURVIoTkFN
RSkgVjhDdXN0b206OnY4IyNOQU1FIyNOYW1lZFByb3BlcnR5RGVsZXRlcgorCisjZGVmaW5lIERF
Q0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoTkFNRSkgXAorICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdjgjI05BTUUjI0luZGV4ZWRQcm9wZXJ0eUdldHRlciggXAorICAgICAg
ICB1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKKworI2RlZmlu
ZSBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKE5BTUUpIFwKKyAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHY4IyNOQU1FIyNJbmRleGVkUHJvcGVydHlTZXR0ZXIoIFwKKyAg
ICAgICAgdWludDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorCisjZGVmaW5lIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJU
WV9ERUxFVEVSKE5BTUUpIFwKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gdjgj
I05BTUUjI0luZGV4ZWRQcm9wZXJ0eURlbGV0ZXIoIFwKKyAgICAgICAgdWludDMyX3QgaW5kZXgs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCisKKyNkZWZpbmUgVVNFX0lOREVYRURfUFJP
UEVSVFlfR0VUVEVSKE5BTUUpIFY4Q3VzdG9tOjp2OCMjTkFNRSMjSW5kZXhlZFByb3BlcnR5R2V0
dGVyCisKKyNkZWZpbmUgVVNFX0lOREVYRURfUFJPUEVSVFlfU0VUVEVSKE5BTUUpIFY4Q3VzdG9t
Ojp2OCMjTkFNRSMjSW5kZXhlZFByb3BlcnR5U2V0dGVyCisKKyNkZWZpbmUgVVNFX0lOREVYRURf
UFJPUEVSVFlfREVMRVRFUihOQU1FKSBWOEN1c3RvbTo6djgjI05BTUUjI0luZGV4ZWRQcm9wZXJ0
eURlbGV0ZXIKKworI2RlZmluZSBERUNMQVJFX0NBTExCQUNLKE5BTUUpIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdjgjI05BTUUjI0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCisKKyNkZWZpbmUgVVNFX0NBTExCQUNLKE5BTUUpIFY4Q3VzdG9tOjp2OCMjTkFNRSMjQ2Fs
bGJhY2sKKworI2RlZmluZSBERUNMQVJFX05BTUVEX0FDQ0VTU19DSEVDSyhOQU1FKSBcCisgICAg
c3RhdGljIGJvb2wgdjgjI05BTUUjI05hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9i
amVjdD4gaG9zdCwgXAorICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBrZXksIHY4OjpBY2Nl
c3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpCisKKyNkZWZpbmUgREVDTEFS
RV9JTkRFWEVEX0FDQ0VTU19DSEVDSyhOQU1FKSBcCisgICAgc3RhdGljIGJvb2wgdjgjI05BTUUj
I0luZGV4ZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCBcCisgICAg
ICAgIHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiBkYXRhKQorCisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEU3Ryb2tlU3R5bGUpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREZpbGxTdHlsZSk7CisgICAgICAgIERFQ0xB
UkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKERPTVdpbmRvd0V2ZW50KTsKKyAgICAgICAgREVD
TEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRE9NV2luZG93Q3J5cHRvKTsKKyAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoRE9NV2luZG93TG9jYXRpb24pOworICAg
ICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUihET01XaW5kb3dPcGVuZXIpOwor
CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRG9jdW1lbnRMb2NhdGlvbik7Cisg
ICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRG9jdW1lbnRJbXBsZW1lbnRhdGlvbik7
CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKEV2ZW50U3JjRWxlbWVu
dCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRXZlbnRSZXR1cm5WYWx1ZSk7
CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfR0VUVEVSKEV2ZW50RGF0YVRyYW5z
ZmVyKTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoRXZlbnRDbGlw
Ym9hcmREYXRhKTsKKworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKERPTVdpbmRv
d0V2ZW50SGFuZGxlcik7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoRWxlbWVu
dEV2ZW50SGFuZGxlcik7CisKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MQ2FudmFzRWxl
bWVudEdldENvbnRleHQpOworCisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1JfU0VU
VEVSKEhUTUxGcmFtZUVsZW1lbnRTcmMpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VT
U09SX1NFVFRFUihIVE1MRnJhbWVFbGVtZW50TG9jYXRpb24pOworICAgICAgICBERUNMQVJFX1BS
T1BFUlRZX0FDQ0VTU09SX1NFVFRFUihIVE1MSUZyYW1lRWxlbWVudFNyYyk7CisKKyAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9TRVRURVIoQXR0clZhbHVlKTsKKworICAgICAgICBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKEhUTUxPcHRpb25zQ29sbGVjdGlvbkxlbmd0aCk7CisK
KyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhIVE1MSW5wdXRFbGVtZW50U2V0U2VsZWN0aW9uUmFu
Z2UpOworCisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTElucHV0RWxlbWVu
dFNlbGVjdGlvblN0YXJ0KTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihIVE1M
SW5wdXRFbGVtZW50U2VsZWN0aW9uRW5kKTsKKworICAgICAgICBERUNMQVJFX05BTUVEX0FDQ0VT
U19DSEVDSyhMb2NhdGlvbik7CisgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0so
SGlzdG9yeSk7CisKKyAgICAgICAgREVDTEFSRV9OQU1FRF9BQ0NFU1NfQ0hFQ0soSGlzdG9yeSk7
CisgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0soTG9jYXRpb24pOworCisgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTENvbGxlY3Rpb25JdGVtKTsKKyAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhIVE1MQ29sbGVjdGlvbk5hbWVkSXRlbSk7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soSFRNTENvbGxlY3Rpb25DYWxsQXNGdW5jdGlvbik7CisKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhIVE1MU2VsZWN0RWxlbWVudFJlbW92ZSk7CisKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhIVE1MT3B0aW9uc0NvbGxlY3Rpb25SZW1vdmUpOworICAgICAgICBERUNMQVJFX0NBTExC
QUNLKEhUTUxPcHRpb25zQ29sbGVjdGlvbkFkZCk7CisKKyAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhIVE1MRG9jdW1lbnRXcml0ZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTERvY3Vt
ZW50V3JpdGVsbik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTERvY3VtZW50T3Blbik7
CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoSFRNTERvY3VtZW50QWxsKTsKKyAg
ICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTERvY3VtZW50KTsKKyAgICAg
ICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9ERUxFVEVSKEhUTUxEb2N1bWVudCk7CisKKyAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhEb2N1bWVudEV2YWx1YXRlKTsKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhEb2N1bWVudEdldENTU0NhbnZhc0NvbnRleHQpOworCisgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soRE9NV2luZG93QWRkRXZlbnRMaXN0ZW5lcik7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soRE9NV2luZG93UmVtb3ZlRXZlbnRMaXN0ZW5lcik7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soRE9NV2luZG93UG9zdE1lc3NhZ2UpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKERP
TVdpbmRvd1NldFRpbWVvdXQpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd1Nl
dEludGVydmFsKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dBdG9iKTsKKyAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dCdG9hKTsKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhET01XaW5kb3dOT1ApOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRv
d1RvU3RyaW5nKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhET01XaW5kb3dTaG93TW9kYWxE
aWFsb2cpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd09wZW4pOworICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKERPTVdpbmRvd0NsZWFyVGltZW91dCk7CisgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soRE9NV2luZG93Q2xlYXJJbnRlcnZhbCk7CisKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhET01QYXJzZXJDb25zdHJ1Y3Rvcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhI
VE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhN
ZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJL
aXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViS2l0
UG9pbnRDb25zdHJ1Y3Rvcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVl
c3RDb25zdHJ1Y3Rvcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWE1MU2VyaWFsaXplckNv
bnN0cnVjdG9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYUGF0aEV2YWx1YXRvckNvbnN0
cnVjdG9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29yQ29uc3RydWN0
b3IpOworCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvckltcG9ydFN0eWxl
c2hlZXQpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhTTFRQcm9jZXNzb3JUcmFuc2Zvcm1U
b0ZyYWdtZW50KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhYU0xUUHJvY2Vzc29yVHJhbnNm
b3JtVG9Eb2N1bWVudCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvclNl
dFBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvckdldFBh
cmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soWFNMVFByb2Nlc3NvclJlbW92ZVBh
cmFtZXRlcik7CisKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDU1NQcmltaXRpdmVWYWx1ZUdl
dFJHQkNvbG9yVmFsdWUpOworCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEU2V0U3Ryb2tlQ29sb3IpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRFNldEZpbGxDb2xvcik7CisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU3Ryb2tlUmVjdCk7CisgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0U2hhZG93KTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkREcmF3SW1hZ2UpOworICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRERyYXdJbWFnZUZy
b21SZWN0KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRDcmVhdGVQYXR0ZXJuKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRGaWxsVGV4dCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEU3Ryb2tlVGV4dCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEUHV0SW1hZ2VEYXRhKTsKKworICAgICAgICBERUNMQVJFX1BS
T1BFUlRZX0FDQ0VTU09SX0dFVFRFUihDbGlwYm9hcmRUeXBlcyk7CisgICAgICAgIERFQ0xBUkVf
Q0FMTEJBQ0soQ2xpcGJvYXJkQ2xlYXJEYXRhKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhD
bGlwYm9hcmRHZXREYXRhKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDbGlwYm9hcmRTZXRE
YXRhKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhDbGlwYm9hcmRTZXREcmFnSW1hZ2UpOwor
CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soRWxlbWVudFF1ZXJ5U2VsZWN0b3IpOworICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKEVsZW1lbnRRdWVyeVNlbGVjdG9yQWxsKTsKKyAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhFbGVtZW50U2V0QXR0cmlidXRlKTsKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhFbGVtZW50U2V0QXR0cmlidXRlTm9kZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
RWxlbWVudFNldEF0dHJpYnV0ZU5TKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhFbGVtZW50
U2V0QXR0cmlidXRlTm9kZU5TKTsKKworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09S
X1NFVFRFUihMb2NhdGlvblByb3RvY29sKTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUl9TRVRURVIoTG9jYXRpb25Ib3N0KTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NF
U1NPUl9TRVRURVIoTG9jYXRpb25Ib3N0bmFtZSk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uUG9ydCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uUGF0aG5hbWUpOworICAgICAgICBERUNMQVJFX1BST1BF
UlRZX0FDQ0VTU09SX1NFVFRFUihMb2NhdGlvblNlYXJjaCk7CisgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSGFzaCk7CisgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1JfU0VUVEVSKExvY2F0aW9uSHJlZik7CisgICAgICAgIERFQ0xBUkVfUFJP
UEVSVFlfQUNDRVNTT1JfR0VUVEVSKExvY2F0aW9uQXNzaWduKTsKKyAgICAgICAgREVDTEFSRV9Q
Uk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25SZXBsYWNlKTsKKyAgICAgICAgREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIoTG9jYXRpb25SZWxvYWQpOworICAgICAgICBERUNM
QVJFX0NBTExCQUNLKExvY2F0aW9uQXNzaWduKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhM
b2NhdGlvblJlcGxhY2UpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKExvY2F0aW9uUmVsb2Fk
KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhMb2NhdGlvblRvU3RyaW5nKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhMb2NhdGlvblZhbHVlT2YpOworCisgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soTm9kZUFkZEV2ZW50TGlzdGVuZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5v
ZGVSZW1vdmVFdmVudExpc3RlbmVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlSW5z
ZXJ0QmVmb3JlKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlUmVwbGFjZUNoaWxkKTsK
KyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlUmVtb3ZlQ2hpbGQpOworICAgICAgICBERUNM
QVJFX0NBTExCQUNLKE5vZGVBcHBlbmRDaGlsZCk7CisKKyAgICAgICAgLy8gQ3VzdG9tIGltcGxl
bWVudGF0aW9uIGlzIE5hdmlnYXRvciBwcm9wZXJ0aWVzLgorICAgICAgICAvLyBXZSBhY3R1YWxs
eSBvbmx5IG5lZWQgdGhpcyBiZWNhdXNlIFdlYktpdCBoYXMKKyAgICAgICAgLy8gbmF2aWdhdG9y
LmFwcFZlcnNpb24gYXMgY3VzdG9tLiBPdXIgdmVyc2lvbiBqdXN0CisgICAgICAgIC8vIHBhc3Nl
cyB0aHJvdWdoLgorICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKE5hdmlnYXRvckFw
cFZlcnNpb24pOworCisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJl
cXVlc3RPbmFib3J0KTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRw
UmVxdWVzdE9uZXJyb3IpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0
dHBSZXF1ZXN0T25sb2FkKTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxI
dHRwUmVxdWVzdE9ubG9hZHN0YXJ0KTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
UihYTUxIdHRwUmVxdWVzdE9ucHJvZ3Jlc3MpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SKFhNTEh0dHBSZXF1ZXN0T25yZWFkeXN0YXRlY2hhbmdlKTsKKyAgICAgICAgREVDTEFS
RV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVGV4dCk7CisgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RBZGRFdmVudExpc3RlbmVyKTsKKyAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhYTUxIdHRwUmVxdWVzdFJlbW92ZUV2ZW50TGlzdGVuZXIpOwor
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0T3Blbik7CisgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RTZW5kKTsKKyAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhYTUxIdHRwUmVxdWVzdFNldFJlcXVlc3RIZWFkZXIpOworICAgICAgICBERUNMQVJFX0NB
TExCQUNLKFhNTEh0dHBSZXF1ZXN0R2V0UmVzcG9uc2VIZWFkZXIpOworICAgICAgICBERUNMQVJF
X0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0T3ZlcnJpZGVNaW1lVHlwZSk7CisgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3REaXNwYXRjaEV2ZW50KTsKKworICAgICAgICBERUNM
QVJFX1BST1BFUlRZX0FDQ0VTU09SKFhNTEh0dHBSZXF1ZXN0VXBsb2FkT25hYm9ydCk7CisgICAg
ICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVlc3RVcGxvYWRPbmVycm9y
KTsKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihYTUxIdHRwUmVxdWVzdFVwbG9h
ZE9ubG9hZCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoWE1MSHR0cFJlcXVl
c3RVcGxvYWRPbmxvYWRzdGFydCk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1Io
WE1MSHR0cFJlcXVlc3RVcGxvYWRPbnByb2dyZXNzKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhYTUxIdHRwUmVxdWVzdFVwbG9hZEFkZEV2ZW50TGlzdGVuZXIpOworICAgICAgICBERUNMQVJF
X0NBTExCQUNLKFhNTEh0dHBSZXF1ZXN0VXBsb2FkUmVtb3ZlRXZlbnRMaXN0ZW5lcik7CisgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soWE1MSHR0cFJlcXVlc3RVcGxvYWREaXNwYXRjaEV2ZW50KTsK
KworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJQYXJlbnROb2RlKTsKKyAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyRmlyc3RDaGlsZCk7CisgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soVHJlZVdhbGtlckxhc3RDaGlsZCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soVHJlZVdhbGtlck5leHROb2RlKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fs
a2VyUHJldmlvdXNOb2RlKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhUcmVlV2Fsa2VyTmV4
dFNpYmxpbmcpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFRyZWVXYWxrZXJQcmV2aW91c1Np
YmxpbmcpOworCisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlclBy
b2ZpbGVzKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVySGln
aGxpZ2h0RE9NTm9kZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJv
bGxlckFkZFJlc291cmNlU291cmNlVG9GcmFtZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
SW5zcGVjdG9yQ29udHJvbGxlckdldFJlc291cmNlRG9jdW1lbnROb2RlKTsKKyAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVyQWRkU291cmNlVG9GcmFtZSk7CisgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlclNlYXJjaCk7CisgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlclNldHRpbmcpOworICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckNvbnRyb2xsZXJJbnNwZWN0ZWRXaW5kb3cpOworICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKEluc3BlY3RvckNvbnRyb2xsZXJTZXRTZXR0aW5nKTsKKyAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVyQ3VycmVudENhbGxGcmFt
ZSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlckRlYnVnZ2Vy
RW5hYmxlZCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlclBh
dXNlT25FeGNlcHRpb25zKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250
cm9sbGVyUHJvZmlsZXJFbmFibGVkKTsKKyNpZiBFTkFCTEUoREFUQUJBU0UpCisgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soSW5zcGVjdG9yQ29udHJvbGxlckRhdGFiYXNlVGFibGVOYW1lcyk7Cisj
ZW5kaWYKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhJbnNwZWN0b3JDb250cm9sbGVyV3JhcENh
bGxiYWNrKTsKKworICAgICAgICBERUNMQVJFX0NBTExCQUNLKE5vZGVJdGVyYXRvck5leHROb2Rl
KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhOb2RlSXRlcmF0b3JQcmV2aW91c05vZGUpOwor
CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soTm9kZUZpbHRlckFjY2VwdE5vZGUpOworCisgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soSFRNTEZvcm1FbGVtZW50U3VibWl0KTsKKworICAgICAgICBE
RUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VUVEVSKERPTVN0cmluZ0xpc3QpOworICAgICAgICBE
RUNMQVJFX0NBTExCQUNLKERPTVN0cmluZ0xpc3RJdGVtKTsKKworICAgICAgICBERUNMQVJFX05B
TUVEX1BST1BFUlRZX0dFVFRFUihET01XaW5kb3cpOworICAgICAgICBERUNMQVJFX0lOREVYRURf
UFJPUEVSVFlfR0VUVEVSKERPTVdpbmRvdyk7CisgICAgICAgIERFQ0xBUkVfTkFNRURfQUNDRVNT
X0NIRUNLKERPTVdpbmRvdyk7CisgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9BQ0NFU1NfQ0hFQ0so
RE9NV2luZG93KTsKKworICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihIVE1M
RnJhbWVTZXRFbGVtZW50KTsKKyAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIo
SFRNTEZvcm1FbGVtZW50KTsKKyAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIo
Tm9kZUxpc3QpOworICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihOYW1lZE5v
ZGVNYXApOworICAgICAgICBERUNMQVJFX05BTUVEX1BST1BFUlRZX0dFVFRFUihDU1NTdHlsZURl
Y2xhcmF0aW9uKTsKKyAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9TRVRURVIoQ1NTU3R5
bGVEZWNsYXJhdGlvbik7CisgICAgICAgIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfR0VUVEVSKEhU
TUxQbHVnSW5FbGVtZW50KTsKKyAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9TRVRURVIo
SFRNTFBsdWdJbkVsZW1lbnQpOworICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VU
VEVSKEhUTUxQbHVnSW5FbGVtZW50KTsKKyAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZ
X1NFVFRFUihIVE1MUGx1Z0luRWxlbWVudCk7CisKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhI
VE1MUGx1Z0luRWxlbWVudCk7CisKKyAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRU
RVIoU3R5bGVTaGVldExpc3QpOworICAgICAgICBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfR0VU
VEVSKE5hbWVkTm9kZU1hcCk7CisgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRU
RVIoSFRNTEZvcm1FbGVtZW50KTsKKyAgICAgICAgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dF
VFRFUihIVE1MT3B0aW9uc0NvbGxlY3Rpb24pOworICAgICAgICBERUNMQVJFX0lOREVYRURfUFJP
UEVSVFlfU0VUVEVSKEhUTUxPcHRpb25zQ29sbGVjdGlvbik7CisgICAgICAgIERFQ0xBUkVfTkFN
RURfUFJPUEVSVFlfR0VUVEVSKEhUTUxTZWxlY3RFbGVtZW50Q29sbGVjdGlvbik7CisgICAgICAg
IERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoSFRNTFNlbGVjdEVsZW1lbnRDb2xsZWN0
aW9uKTsKKyAgICAgICAgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIoSFRNTENvbGxlY3Rp
b24pOworCisgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoQ2FudmFzUGl4
ZWxBcnJheSk7CisgICAgICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9TRVRURVIoQ2FudmFz
UGl4ZWxBcnJheSk7CisKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihNZXNzYWdl
UG9ydE9ubWVzc2FnZSk7CisgICAgICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoTWVzc2Fn
ZVBvcnRPbmNsb3NlKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhNZXNzYWdlUG9ydFN0YXJ0
Q29udmVyc2F0aW9uKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhNZXNzYWdlUG9ydEFkZEV2
ZW50TGlzdGVuZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKE1lc3NhZ2VQb3J0UmVtb3Zl
RXZlbnRMaXN0ZW5lcik7CisKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhEYXRhYmFzZUNoYW5n
ZVZlcnNpb24pOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKERhdGFiYXNlVHJhbnNhY3Rpb24p
OworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNRTFRyYW5zYWN0aW9uRXhlY3V0ZVNxbCk7Cisg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soU1FMUmVzdWx0U2V0Um93TGlzdEl0ZW0pOworCisgICAg
ICAgIERFQ0xBUkVfSU5ERVhFRF9QUk9QRVJUWV9HRVRURVIoQ2xpZW50UmVjdExpc3QpOworCisj
aWYgRU5BQkxFKFNWRykKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUl9HRVRURVIo
U1ZHTGVuZ3RoVmFsdWUpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFNWR0xlbmd0aENvbnZl
cnRUb1NwZWNpZmllZFVuaXRzKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTVkdNYXRyaXhJ
bnZlcnNlKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTVkdNYXRyaXhSb3RhdGVGcm9tVmVj
dG9yKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTVkdFbGVtZW50SW5zdGFuY2VBZGRFdmVu
dExpc3RlbmVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhTVkdFbGVtZW50SW5zdGFuY2VS
ZW1vdmVFdmVudExpc3RlbmVyKTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAg
ICAgIERFQ0xBUkVfUFJPUEVSVFlfQUNDRVNTT1IoV29ya2VyT25tZXNzYWdlKTsKKyAgICAgICAg
REVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUihXb3JrZXJPbmVycm9yKTsKKyAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhXb3JrZXJDb25zdHJ1Y3Rvcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V29ya2VyQWRkRXZlbnRMaXN0ZW5lcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2Vy
UmVtb3ZlRXZlbnRMaXN0ZW5lcik7CisKKyAgICAgICAgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NP
Ul9HRVRURVIoV29ya2VyQ29udGV4dFNlbGYpOworICAgICAgICBERUNMQVJFX1BST1BFUlRZX0FD
Q0VTU09SKFdvcmtlckNvbnRleHRPbm1lc3NhZ2UpOworICAgICAgICBERUNMQVJFX0NBTExCQUNL
KFdvcmtlckNvbnRleHRJbXBvcnRTY3JpcHRzKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhX
b3JrZXJDb250ZXh0U2V0VGltZW91dCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2Vy
Q29udGV4dENsZWFyVGltZW91dCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29u
dGV4dFNldEludGVydmFsKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXb3JrZXJDb250ZXh0
Q2xlYXJJbnRlcnZhbCk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV29ya2VyQ29udGV4dEFk
ZEV2ZW50TGlzdGVuZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdvcmtlckNvbnRleHRS
ZW1vdmVFdmVudExpc3RlbmVyKTsKKyNlbmRpZgorCisjdW5kZWYgREVDTEFSRV9JTkRFWEVEX0FD
Q0VTU19DSEVDSworI3VuZGVmIERFQ0xBUkVfTkFNRURfQUNDRVNTX0NIRUNLCisKKyN1bmRlZiBE
RUNMQVJFX1BST1BFUlRZX0FDQ0VTU09SX1NFVFRFUgorI3VuZGVmIERFQ0xBUkVfUFJPUEVSVFlf
QUNDRVNTT1JfR0VUVEVSCisjdW5kZWYgREVDTEFSRV9QUk9QRVJUWV9BQ0NFU1NPUgorCisjdW5k
ZWYgREVDTEFSRV9OQU1FRF9QUk9QRVJUWV9HRVRURVIKKyN1bmRlZiBERUNMQVJFX05BTUVEX1BS
T1BFUlRZX1NFVFRFUgorI3VuZGVmIERFQ0xBUkVfTkFNRURfUFJPUEVSVFlfREVMRVRFUgorCisj
dW5kZWYgREVDTEFSRV9JTkRFWEVEX1BST1BFUlRZX0dFVFRFUgorI3VuZGVmIERFQ0xBUkVfSU5E
RVhFRF9QUk9QRVJUWV9TRVRURVIKKyN1bmRlZiBERUNMQVJFX0lOREVYRURfUFJPUEVSVFlfREVM
RVRFUgorCisjdW5kZWYgREVDTEFSRV9DQUxMQkFDSworCisgICAgICAgIC8vIFJldHVybnMgdGhl
IE5QT2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gYW4gSFRNTEVsZW1lbnQgb2JqZWN0LgorICAgICAg
ICBzdGF0aWMgTlBPYmplY3QqIEdldEhUTUxQbHVnSW5FbGVtZW50TlBPYmplY3Qodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pik7CisKKyAgICAgICAgLy8gUmV0dXJucyB0aGUgb3duZXIgZnJhbWUgcG9p
bnRlciBvZiBhIERPTSB3cmFwcGVyIG9iamVjdC4gSXQgb25seSB3b3JrcyBmb3IKKyAgICAgICAg
Ly8gdGhlc2UgRE9NIG9iamVjdHMgcmVxdWlyaW5nIGNyb3NzLWRvbWFpbiBhY2Nlc3MgY2hlY2su
CisgICAgICAgIHN0YXRpYyBGcmFtZSogR2V0VGFyZ2V0RnJhbWUodjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpOworCisgICAgICAgIC8vIFNwZWNp
YWwgY2FzZSBmb3IgZG93bmNhc3RpbmcgU1ZHIHBhdGggc2VnbWVudHMKKyNpZiBFTkFCTEUoU1ZH
KQorICAgICAgICBzdGF0aWMgVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIERvd25jYXN0U1ZH
UGF0aFNlZyh2b2lkKiBwYXRoU2VnKTsKKyNlbmRpZgorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2
ODo6QXJndW1lbnRzJiwgYm9vbCBzaW5nbGVTaG90KTsKKyAgICAgICAgc3RhdGljIHZvaWQgQ2xl
YXJUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJik7CisgICAgICAgIHN0YXRpYyB2b2lk
IFdpbmRvd1NldExvY2F0aW9uKERPTVdpbmRvdyosIGNvbnN0IFN0cmluZyYpOworICAgIH07CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFY4Q3VzdG9tQmluZGluZ19oCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFiYXNlQ3VzdG9tLmNw
cAkocmV2aXNpb24gNDQ1MDQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFi
YXNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEwIEBACiAjaWYgRU5B
QkxFKERBVEFCQVNFKQogCiAjaW5jbHVkZSAidjhfYmluZGluZy5oIgotI2luY2x1ZGUgInY4X2N1
c3RvbS5oIgogI2luY2x1ZGUgInY4X3Byb3h5LmgiCiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgor
I2luY2x1ZGUgIlY4Q3VzdG9tQmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tU1FMVHJhbnNh
Y3Rpb25DYWxsYmFjay5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dM
aXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gNDQ1MDQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxMCArMzMsMTAgQEAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAKICNpbmNsdWRlICJ2OF9iaW5k
aW5nLmgiCi0jaW5jbHVkZSAidjhfY3VzdG9tLmgiCiAjaW5jbHVkZSAidjhfcHJveHkuaCIKIAog
I2luY2x1ZGUgIlNRTFJlc3VsdFNldFJvd0xpc3QuaCIKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRp
bmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24g
NDQ1MDQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaWYgRU5BQkxFKERB
VEFCQVNFKQogCiAjaW5jbHVkZSAidjhfYmluZGluZy5oIgotI2luY2x1ZGUgInY4X2N1c3RvbS5o
IgogI2luY2x1ZGUgInY4X3Byb3h5LmgiCiAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIlNRTFZhbHVlLmgiCisjaW5jbHVkZSAiVjhDdXN0b21CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
VjhDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0
cnVjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJWOEN1c3RvbUJpbmRp
bmcuaCIKKyNpbmNsdWRlICJWOEluZGV4LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1
ZGUgIldlYktpdFBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ0FMTEJBQ0tfRlVO
Q19ERUNMKFdlYktpdFBvaW50Q29uc3RydWN0b3IpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2Vi
S2l0UG9pbnQuQ29uc3RydWN0b3IiKTsKKyAgICByZXR1cm4gVjhQcm94eTo6Q29uc3RydWN0RE9N
T2JqZWN0PFY4Q2xhc3NJbmRleDo6V0VCS0lUUE9JTlQsIFdlYktpdFBvaW50PihhcmdzKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="15869"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>