<?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>123999</bug_id>
          
          <creation_ts>2013-11-07 10:10:56 -0800</creation_ts>
          <short_desc>Move the setting up of callee&apos;s callFrame from pushFrame to callToJavaScript thunk</short_desc>
          <delta_ts>2013-12-04 08:37:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          
          <blocked>116888</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>948323</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-11-07 10:10:56 -0800</bug_when>
    <thetext>When on the C stack, we can&apos;t have a called C function set up the callee&apos;s stack since that space will be in use.  Instead, the callToJavaScript entry thunk should set up the frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955712</commentid>
    <comment_count>1</comment_count>
      <attachid>218244</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-02 17:32:14 -0800</bug_when>
    <thetext>Created attachment 218244
Patch that works for X86-64

Need to make changes in LowLevelInterpreter32_64.asm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955775</commentid>
    <comment_count>2</comment_count>
      <attachid>218266</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-02 22:20:55 -0800</bug_when>
    <thetext>Created attachment 218266
Patch with X86 32bit + 64bit changes tested.

Coded up changes for all but Win 32 and Win 64.  Tested Mac OSX 32 &amp; 64.

Working on Win 32 and 64.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955958</commentid>
    <comment_count>3</comment_count>
      <attachid>218266</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-03 10:19:04 -0800</bug_when>
    <thetext>Comment on attachment 218266
Patch with X86 32bit + 64bit changes tested.

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

LGTM so far, but revert some stuff and move some stuff into separate files.

&gt; Source/JavaScriptCore/interpreter/CallFrame.cpp:154
&gt; +void ProtoCallFrame::init(CodeBlock* codeBlock, JSScope* scope, JSObject* callee, JSValue thisValue, int argCountIncludingThis, JSValue* otherArgs)
&gt; +{
&gt; +    this-&gt;args = otherArgs;
&gt; +    this-&gt;setCodeBlock(codeBlock);
&gt; +    this-&gt;setScope(scope);
&gt; +    this-&gt;setCallee(callee);
&gt; +    this-&gt;setArgumentCountIncludingThis(argCountIncludingThis);
&gt; +    size_t paddedArgsCount = argCountIncludingThis;
&gt; +    if (codeBlock) {
&gt; +        size_t numParameters = codeBlock-&gt;numParameters();
&gt; +        if (paddedArgsCount &lt; numParameters)
&gt; +            paddedArgsCount = numParameters;
&gt; +    }
&gt; +    this-&gt;setPaddedArgsCount(paddedArgsCount);
&gt; +    this-&gt;clearCurrentVPC();
&gt; +    this-&gt;setThisValue(thisValue);
&gt; +}
&gt; +

Separate file, if you can put the declaration in a separate file also.

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:391
&gt; +    struct ProtoCallFrame {
&gt; +        Register codeBlockValue;
&gt; +        Register scopeChainValue;
&gt; +        Register calleeValue;
&gt; +        Register argCountAndCodeOriginValue;
&gt; +        Register thisArg;
&gt; +        size_t paddedArgCount;
&gt; +        JSValue *args;
&gt; +
&gt; +        void init(CodeBlock*, JSScope*, JSObject*, JSValue, int, JSValue* otherArgs = 0);
&gt; +        CodeBlock* codeBlock() const { return codeBlockValue.Register::codeBlock(); }
&gt; +        void setCodeBlock(CodeBlock* codeBlock) { codeBlockValue = codeBlock; }
&gt; +        void setScope(JSScope* scope) { scopeChainValue = scope; }
&gt; +        void setCallee(JSObject* callee) { calleeValue = Register::withCallee(callee); }
&gt; +        int argumentCountIncludingThis() const { return argCountAndCodeOriginValue.payload(); }
&gt; +        int argumentCount() const { return argumentCountIncludingThis() - 1; }
&gt; +        void setArgumentCountIncludingThis(int count) { argCountAndCodeOriginValue.payload() = count; }
&gt; +        void setPaddedArgsCount(size_t argCount) { paddedArgCount = argCount; }
&gt; +
&gt; +        void clearCurrentVPC() { argCountAndCodeOriginValue.tag() = 0; }
&gt; +        void setThisValue(JSValue value) { thisArg = value; }
&gt; +        void setArgument(size_t argument, JSValue value)
&gt; +        {
&gt; +            ASSERT(static_cast&lt;int&gt;(argument) &lt; argumentCount());
&gt; +            args[argument] = value;
&gt; +        }
&gt; +        static int offsetForArgumentCount()
&gt; +        {
&gt; +            return OBJECT_OFFSETOF(ProtoCallFrame, argCountAndCodeOriginValue) + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.payload);
&gt; +        }
&gt; +
&gt; +    };

Please move this to a separate file if possible.

&gt; Source/WTF/wtf/DataLog.cpp:43
&gt; -#define DATA_LOG_TO_FILE 0
&gt; +#define DATA_LOG_TO_FILE 1

Revert!

&gt; Source/WTF/wtf/Platform.h:774
&gt; -#define ENABLE_CONCURRENT_JIT 1
&gt; +#define ENABLE_CONCURRENT_JIT 0
&gt;  #endif

Why can&apos;t you just do --enableConcurrentJIT=false?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956280</commentid>
    <comment_count>4</comment_count>
      <attachid>218383</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-03 22:10:59 -0800</bug_when>
    <thetext>Created attachment 218383
Patch

Tested on Mac 32 bit &amp; 64 bit, ARMv7, ARM64 &amp; Windows 32 bit.  Also tested using C-Loop interpreter on Mac.  Builds on Windows 64 bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956284</commentid>
    <comment_count>5</comment_count>
      <attachid>218383</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-03 22:48:11 -0800</bug_when>
    <thetext>Comment on attachment 218383
Patch

Attachment 218383 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/42988154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956289</commentid>
    <comment_count>6</comment_count>
      <attachid>218383</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-03 23:37:03 -0800</bug_when>
    <thetext>Comment on attachment 218383
Patch

Attachment 218383 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/42948162</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956298</commentid>
    <comment_count>7</comment_count>
      <attachid>218383</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-04 00:21:00 -0800</bug_when>
    <thetext>Comment on attachment 218383
Patch

Attachment 218383 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/42828106</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956374</commentid>
    <comment_count>8</comment_count>
      <attachid>218404</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-04 06:15:33 -0800</bug_when>
    <thetext>Created attachment 218404
Patch for landing

Fixed WebKit-2 build issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956403</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-12-04 08:37:43 -0800</bug_when>
    <thetext>Committed r160094: &lt;http://trac.webkit.org/changeset/160094&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218244</attachid>
            <date>2013-12-02 17:32:14 -0800</date>
            <delta_ts>2013-12-02 22:20:55 -0800</delta_ts>
            <desc>Patch that works for X86-64</desc>
            <filename>call-toJS-thunk-alloc-frame-wip16.patch</filename>
            <type>text/plain</type>
            <size>33844</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwu
aAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhY2hlZENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAsIG1fZW50cnlTY29wZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0
aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICBpZiAoY2FsbEZy
YW1lLT52bSgpLmlzU2FmZVRvUmVjdXJzZSgpKQotICAgICAgICAgICAgICAgIG1fY2xvc3VyZSA9
IG1faW50ZXJwcmV0ZXItPnByZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFi
bGUoKSwgY2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5z
Y29wZSgpKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPnZt
KCkuaXNTYWZlVG9SZWN1cnNlKCkpIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNp
emUoYXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnBy
ZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxs
RnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1
bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOworICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKICAg
ICAgICAgICAgIG1fdmFsaWQgPSAhY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKTsKICAgICAgICAg
fQpAQCAtNTUsOSArNTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQo
bV92YWxpZCk7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRlcnByZXRlci0+ZXhlY3V0ZShtX2Ns
b3N1cmUpOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgc2V0VGhpcyhKU1ZhbHVlIHYpIHsgbV9j
bG9zdXJlLnNldFRoaXModik7IH0KLSAgICAgICAgdm9pZCBzZXRBcmd1bWVudChpbnQgbiwgSlNW
YWx1ZSB2KSB7IG1fY2xvc3VyZS5zZXRBcmd1bWVudChuLCB2KTsgfQorICAgICAgICB2b2lkIHNl
dFRoaXMoSlNWYWx1ZSB2KSB7IG1fcHJvdG9DYWxsRnJhbWUuc2V0VGhpc1ZhbHVlKHYpOyB9Cisg
ICAgICAgIHZvaWQgc2V0QXJndW1lbnQoaW50IG4sIEpTVmFsdWUgdikgeyBtX3Byb3RvQ2FsbEZy
YW1lLnNldEFyZ3VtZW50KG4sIHYpOyB9CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAg
ICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gbV9jbG9zdXJlLm5ld0NhbGxGcmFt
ZTsKQEAgLTcwLDExICs3MiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmICht
X3ZhbGlkKQogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXItPmVuZFJlcGVhdENhbGwobV9j
bG9zdXJlKTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgbV92YWxpZDsKICAgICAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7CiAg
ICAgICAgIFZNRW50cnlTY29wZSBtX2VudHJ5U2NvcGU7CisgICAgICAgIFByb3RvQ2FsbEZyYW1l
IG1fcHJvdG9DYWxsRnJhbWU7CisgICAgICAgIFZlY3RvcjxKU1ZhbHVlPiBtX2FyZ3VtZW50czsK
ICAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBtX2Nsb3N1cmU7CiAgICAgfTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZp
c2lvbiAxNTk3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDQgKzEzNCwyMiBAQCBKU0dsb2JhbE9iamVj
dCogQ2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsCiAgICAgcmV0dXJuIHZtKCkuZW50cnlTY29wZS0+
Z2xvYmFsT2JqZWN0KCk7CiB9CiAKK3ZvaWQgUHJvdG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBKU09iamVjdCogY2FsbGVlLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcywgSlNWYWx1ZSogb3RoZXJBcmdzKQor
eworICAgIHRoaXMtPmFyZ3MgPSBvdGhlckFyZ3M7CisgICAgdGhpcy0+c2V0Q29kZUJsb2NrKGNv
ZGVCbG9jayk7CisgICAgdGhpcy0+c2V0U2NvcGUoc2NvcGUpOworICAgIHRoaXMtPnNldENhbGxl
ZShjYWxsZWUpOworICAgIHRoaXMtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0Nv
dW50SW5jbHVkaW5nVGhpcyk7CisgICAgc2l6ZV90IHBhZGRlZEFyZ3NDb3VudCA9IGFyZ0NvdW50
SW5jbHVkaW5nVGhpczsKKyAgICBpZiAoY29kZUJsb2NrKSB7CisgICAgICAgIHNpemVfdCBudW1Q
YXJhbWV0ZXJzID0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7CisgICAgICAgIGlmIChwYWRk
ZWRBcmdzQ291bnQgPCBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgcGFkZGVkQXJnc0NvdW50
ID0gbnVtUGFyYW1ldGVyczsKKyAgICB9CisgICAgdGhpcy0+c2V0UGFkZGVkQXJnc0NvdW50KHBh
ZGRlZEFyZ3NDb3VudCk7CisgICAgdGhpcy0+Y2xlYXJDdXJyZW50VlBDKCk7CisgICAgdGhpcy0+
c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNp
b24gMTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNiArMzU3LDM4IEBAIG5hbWVzcGFjZSBKU0MgIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOwogICAgIH07CiAKKyAgICBzdHJ1Y3Qg
UHJvdG9DYWxsRnJhbWUgeworICAgICAgICBSZWdpc3RlciBjb2RlQmxvY2tWYWx1ZTsKKyAgICAg
ICAgUmVnaXN0ZXIgc2NvcGVDaGFpblZhbHVlOworICAgICAgICBSZWdpc3RlciBjYWxsZWVWYWx1
ZTsKKyAgICAgICAgUmVnaXN0ZXIgYXJnQ291bnRBbmRDb2RlT3JpZ2luVmFsdWU7CisgICAgICAg
IFJlZ2lzdGVyIHRoaXNBcmc7CisgICAgICAgIHNpemVfdCBwYWRkZWRBcmdDb3VudDsKKyAgICAg
ICAgSlNWYWx1ZSAqYXJnczsKKworICAgICAgICB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNTY29w
ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSwgaW50LCBKU1ZhbHVlKiBvdGhlckFyZ3MgPSAwKTsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBjb2RlQmxvY2tWYWx1
ZS5SZWdpc3Rlcjo6Y29kZUJsb2NrKCk7IH0KKyAgICAgICAgdm9pZCBzZXRDb2RlQmxvY2soQ29k
ZUJsb2NrKiBjb2RlQmxvY2spIHsgY29kZUJsb2NrVmFsdWUgPSBjb2RlQmxvY2s7IH0KKyAgICAg
ICAgdm9pZCBzZXRTY29wZShKU1Njb3BlKiBzY29wZSkgeyBzY29wZUNoYWluVmFsdWUgPSBzY29w
ZTsgfQorICAgICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKSB7IGNhbGxlZVZh
bHVlID0gUmVnaXN0ZXI6OndpdGhDYWxsZWUoY2FsbGVlKTsgfQorICAgICAgICBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSBjb25zdCB7IHJldHVybiBhcmdDb3VudEFuZENvZGVPcmln
aW5WYWx1ZS5wYXlsb2FkKCk7IH0KKyAgICAgICAgaW50IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7
IHJldHVybiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIC0gMTsgfQorICAgICAgICB2b2lk
IHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGludCBjb3VudCkgeyBhcmdDb3VudEFuZENv
ZGVPcmlnaW5WYWx1ZS5wYXlsb2FkKCkgPSBjb3VudDsgfQorICAgICAgICB2b2lkIHNldFBhZGRl
ZEFyZ3NDb3VudChzaXplX3QgYXJnQ291bnQpIHsgcGFkZGVkQXJnQ291bnQgPSBhcmdDb3VudDsg
fQorCisgICAgICAgIHZvaWQgY2xlYXJDdXJyZW50VlBDKCkgeyBhcmdDb3VudEFuZENvZGVPcmln
aW5WYWx1ZS50YWcoKSA9IDA7IH0KKyAgICAgICAgdm9pZCBzZXRUaGlzVmFsdWUoSlNWYWx1ZSB2
YWx1ZSkgeyB0aGlzQXJnID0gdmFsdWU7IH0KKyAgICAgICAgdm9pZCBzZXRBcmd1bWVudChzaXpl
X3QgYXJndW1lbnQsIEpTVmFsdWUgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50KSA8IGFyZ3VtZW50Q291bnQoKSk7CisgICAgICAg
ICAgICBhcmdzW2FyZ3VtZW50XSA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBp
bnQgb2Zmc2V0Rm9yQXJndW1lbnRDb3VudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoUHJvdG9DYWxsRnJhbWUsIGFyZ0NvdW50QW5kQ29kZU9yaWdpblZh
bHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCk7CisgICAgICAgIH0KKworICAgIH07CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIENhbGxGcmFtZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lQ2xvc3VyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWVDbG9zdXJlLmgJKHJldmlzaW9uIDE1OTcyMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWVDbG9zdXJlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBDYWxsRnJh
bWVDbG9zdXJlIHsKICAgICBDYWxsRnJhbWUqIG9sZENhbGxGcmFtZTsKLSAgICBDYWxsRnJhbWUq
IG5ld0NhbGxGcmFtZTsKKyAgICBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxsRnJhbWU7CiAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGU7CiAgICAgVk0qIHZtOwpAQCAtNDAsMjMgKzQwLDI1IEBAIHN0cnVjdCBDYWxsRnJh
bWVDbG9zdXJlIHsKICAgICAKICAgICB2b2lkIHNldFRoaXMoSlNWYWx1ZSB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgcHJv
dG9DYWxsRnJhbWUtPnNldFRoaXNWYWx1ZSh2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRB
cmd1bWVudChpbnQgYXJndW1lbnQsIEpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBuZXdD
YWxsRnJhbWUtPnNldEFyZ3VtZW50KGFyZ3VtZW50LCB2YWx1ZSk7CisgICAgICAgIHByb3RvQ2Fs
bEZyYW1lLT5zZXRBcmd1bWVudChhcmd1bWVudCwgdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQg
cmVzZXRDYWxsRnJhbWUoKQogICAgIHsKLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRTY29wZShz
Y29wZSk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLT5zZXRTY29wZShzY29wZSk7CisjaWYgRU5B
QkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgLy8gc2V0QXJndW1lbnQoKSB0YWtlcyBhbiBhcmcg
aW5kZXggdGhhdCBzdGFydHMgZnJvbSAwIGZvciB0aGUgZmlyc3QKICAgICAgICAgLy8gYXJndW1l
bnQgYWZ0ZXIgdGhlICd0aGlzJyB2YWx1ZS4gU2luY2UgYm90aCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcwogICAgICAgICAvLyBhbmQgcGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzIGluY2x1
ZGVzIHRoZSAndGhpcycgdmFsdWUsIHdlIG5lZWQgdG8KLSAgICAgICAgLy8gc3VidHJhY3QgMSBm
cm9tIHRoZW0gdG8gbWFrZSBpIGEgdmFsaWQgYXJndW1lbnQgaW5kZXggZm9yIHNldEFyZ3VtZW50
KCkuCisgICAgICAgIC8vIHN1YnRyYWN0IDEgZnJvbSB0aGVtIHRvIG1ha2UgaXQgYSB2YWxpZCBh
cmd1bWVudCBpbmRleCBmb3Igc2V0QXJndW1lbnQoKS4KICAgICAgICAgZm9yIChpbnQgaSA9IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLTE7IGkgPCBwYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1Ro
aXMtMTsgKytpKQotICAgICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBqc1Vu
ZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIHByb3RvQ2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBq
c1VuZGVmaW5lZCgpKTsKKyNlbmRpZgogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTU5
NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENMb29wLmgiCisjaW5j
bHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1
ZGUgIkxpdGVyYWxQYXJzZXIuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKQEAgLTg2MCwx
MiArODYxLDE3IEBAIGZhaWxlZEpTT05QOgogCiAgICAgLy8gUHVzaCB0aGUgY2FsbCBmcmFtZSBm
b3IgdGhpcyBpbnZvY2F0aW9uOgogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyNpZiBFTkFCTEUoTExJTlRfQ19M
T09QKQogICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gbV9zdGFjay5wdXNoRnJhbWUoY2Fs
bEZyYW1lLCBjb2RlQmxvY2ssIHNjb3BlLCAxLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0Nh
bGxGcmFtZSkpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSkpOwotCisgICAgCiAgICAgLy8gU2V0IHRoZSBhcmd1bWVudHMgZm9y
IHRoZSBjYWxsZWU6CiAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc09iaik7Cisj
ZWxzZQorICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQoY29kZUJsb2NrLCBzY29wZSwgMCwgdGhpc09iaiwgMSk7CisjZW5kaWYKIAogICAg
IGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAg
ICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgcHJvZ3JhbS0+c291cmNlVVJM
KCksIHByb2dyYW0tPmxpbmVObygpKTsKQEAgLTg3OSwxNCArODg1LDE2IEBAIGZhaWxlZEpTT05Q
OgogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9v
cDo6ZXhlY3V0ZShuZXdDYWxsRnJhbWUsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOwogI2VsaWYg
RU5BQkxFKEpJVCkKLSAgICAgICAgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgp
LT5leGVjdXRlKCZtX3N0YWNrLCBuZXdDYWxsRnJhbWUsICZ2bSk7CisgICAgICAgIHJlc3VsdCA9
IHByb2dyYW0tPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFt
ZSwgbV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAg
fQogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxl
cigpKQogICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIHByb2dyYW0tPnNv
dXJjZVVSTCgpLCBwcm9ncmFtLT5saW5lTm8oKSk7CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQogICAgIG1fc3RhY2sucG9wRnJhbWUobmV3Q2FsbEZyYW1lKTsKKyNlbmRpZgogCiAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KQEAgLTkzMCw2ICs5MzgsNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgaWYgKFVOTElLRUxZKHZtLndh
dGNoZG9nLmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKIAorI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hGcmFtZShjYWxs
RnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgZnVuY3Rpb24pOwogICAgIGlm
IChVTkxJS0VMWSghbmV3Q2FsbEZyYW1lKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CkBAIC05MzgsNiArOTQ3LDEwIEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICBuZXdDYWxsRnJh
bWUtPnNldFRoaXNWYWx1ZSh0aGlzVmFsdWUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXJncy5zaXplKCk7ICsraSkKICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBh
cmdzLmF0KGkpKTsKKyNlbHNlCisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Cisg
ICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIHNjb3BlLCBmdW5jdGlvbiwgdGhp
c1ZhbHVlLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyNlbmRpZgogCiAgICAgaWYgKExlZ2Fj
eVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9m
aWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZyYW1lLCBmdW5jdGlvbik7CkBAIC05NTIsMTYgKzk2NSwy
MyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAjaWYgRU5BQkxF
KExMSU5UX0NfTE9PUCkKICAgICAgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9vcDo6ZXhlY3V0
ZShuZXdDYWxsRnJhbWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKICNlbGlm
IEVOQUJMRShKSVQpCi0gICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4
ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJm1fc3RhY2ssIG5l
d0NhbGxGcmFtZSwgJnZtKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0
aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sICZw
cm90b0NhbGxGcmFtZSwgbV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpOwogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCi0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElO
VF9DX0xPT1ApCiAgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uKG5ld0NhbGxGcmFtZSkpOworI2Vsc2UKKyAgICAgICAgICAgIHJlc3Vs
dCA9IEpTVmFsdWU6OmRlY29kZShjYWxsVG9OYXRpdmVGdW5jdGlvbihyZWludGVycHJldF9jYXN0
PHZvaWQqPihjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24pLCAmdm0sICZwcm90b0NhbGxGcmFtZSwg
bV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpKTsKKyNlbmRpZgorICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQog
ICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGZ1bmN0aW9uKTsKIAorI2lm
IEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgbV9zdGFjay5wb3BGcmFtZShuZXdDYWxsRnJhbWUp
OworI2VuZGlmCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIApAQCAtMTAw
NSw3ICsxMDI1LDcgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAog
CiAgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nLmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsK
LQorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBtX3N0YWNrLnB1c2hGcmFtZShjYWxsRnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3ND
b3VudCwgY29uc3RydWN0b3IpOwogICAgIGlmIChVTkxJS0VMWSghbmV3Q2FsbEZyYW1lKSkKICAg
ICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZy
YW1lKSk7CkBAIC0xMDE0LDYgKzEwMzQsMTAgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVj
dXRlQ29uc3RydWN0KAogICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1ZhbHVlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKICAgICAg
ICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBhcmdzLmF0KGkpKTsKKyNlbHNlCisgICAg
UHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChu
ZXdDb2RlQmxvY2ssIHNjb3BlLCBjb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgYXJnc0NvdW50
LCBhcmdzLmRhdGEoKSk7CisjZW5kaWYKIAogICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmls
ZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRl
KGNhbGxGcmFtZSwgY29uc3RydWN0b3IpOwpAQCAtMTAyOCwyMiArMTA1MiwyNSBAQCBKU09iamVj
dCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAjaWYgRU5BQkxFKExMSU5UX0NfTE9P
UCkKICAgICAgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9vcDo6ZXhlY3V0ZShuZXdDYWxsRnJh
bWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOwogI2VsaWYgRU5BQkxF
KEpJVCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCktPmV4ZWN1dGUoJm1fc3RhY2ss
IG5ld0NhbGxGcmFtZSwgJnZtKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdERhdGEu
anMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCktPmV4
ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUsIG1fc3RhY2suZ2V0VG9wT2ZTdGFjaygpKTsKICNl
bmRpZiAvLyBFTkFCTEUoSklUKQogICAgICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCiAgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24obmV3Q2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBpZiAoIWNhbGxG
cmFtZS0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHJlc3VsdC5pc09iamVjdCgpLCAiSG9zdCBjb25zdHJ1Y3RvciByZXR1cm5lZCBub24gb2Jq
ZWN0LiIpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG5ld0NhbGxGcmFtZSk7Ci0gICAgICAgICAgICB9
CisjZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxUb05hdGl2
ZUZ1bmN0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1
bmN0aW9uKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUsIG1fc3RhY2suZ2V0VG9wT2ZTdGFjaygpKSk7
CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNPYmplY3QoKSk7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxl
ZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgY29u
c3RydWN0b3IpOwogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBtX3N0YWNrLnBvcEZy
YW1lKG5ld0NhbGxGcmFtZSk7CisjZW5kaWYKIAogICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNTEsNyArMTA3OCw3IEBAIEpTT2JqZWN0
KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bihhc09iamVjdChyZXN1bHQpKTsKIH0KIAotQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6
cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSkKK0NhbGxGcmFtZUNsb3N1cmUg
SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUHJvdG9DYWxsRnJhbWUqIHBy
b3RvQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSogYXJncykKIHsKICAgICBWTSYgdm0g
PSAqc2NvcGUtPnZtKCk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CkBAIC0xMDcwLDEx
ICsxMDk3LDggQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogCiAg
ICAgc2l6ZV90IGFyZ3NDb3VudCA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogCi0gICAg
Q2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hGcmFtZShjYWxsRnJhbWUsIG5l
d0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgZnVuY3Rpb24pOyAgCi0gICAgaWYgKFVOTElL
RUxZKCFuZXdDYWxsRnJhbWUpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNh
bGxGcmFtZSk7Ci0gICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7Ci0gICAgfQorI2lm
IEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0
YWNrLnB1c2hGcmFtZShjYWxsRnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwg
ZnVuY3Rpb24pOwogCiAgICAgaWYgKFVOTElLRUxZKCFuZXdDYWxsRnJhbWUpKSB7CiAgICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CkBAIC0xMDgzLDYgKzExMDcsMTEg
QEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogCiAgICAgLy8gUmV0
dXJuIHRoZSBzdWNjZXNzZnVsIGNsb3N1cmU6CiAgICAgQ2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQg
PSB7IGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25FeGVjdXRhYmxl
LCAmdm0sIHNjb3BlLCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgfTsKKyNlbHNlCisgICAgcHJvdG9DYWxsRnJhbWUtPmluaXQobmV3Q29k
ZUJsb2NrLCBzY29wZSwgZnVuY3Rpb24sIGpzVW5kZWZpbmVkKCksIGFyZ3NDb3VudCwgYXJncyk7
CisgICAgLy8gUmV0dXJuIHRoZSBzdWNjZXNzZnVsIGNsb3N1cmU6CisgICAgQ2FsbEZyYW1lQ2xv
c3VyZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwgcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBmdW5j
dGlvbkV4ZWN1dGFibGUsICZ2bSwgc2NvcGUsIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyB9OworI2VuZGlmCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtMTA5Niw5ICsxMTI1LDEzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoQ2FsbEZyYW1lQ2wKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgU3RhY2tTdGF0
czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
ICAgICBtX3N0YWNrLnZhbGlkYXRlRmVuY2UoY2xvc3VyZS5uZXdDYWxsRnJhbWUsICJCRUZPUkUi
KTsKKyNlbmRpZgogICAgIGNsb3N1cmUucmVzZXRDYWxsRnJhbWUoKTsKKyNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQogICAgIG1fc3RhY2sudmFsaWRhdGVGZW5jZShjbG9zdXJlLm5ld0NhbGxGcmFt
ZSwgIlNURVAgMSIpOworI2VuZGlmCiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVy
ID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShj
bG9zdXJlLm9sZENhbGxGcmFtZSwgY2xvc3VyZS5mdW5jdGlvbik7CkBAIC0xMTE0LDcgKzExNDcs
OSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiAgICAgLy8gSGVu
Y2UsIHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHRvcENhbGxGcmFtZSBoZXJlIG91cnNlbHZlcyBi
ZWZvcmUKICAgICAvLyByZXBlYXRpbmcgdGhpcyBjYWxsIG9uIGEgc2Vjb25kIGNhbGxiYWNrIGZ1
bmN0aW9uLgogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBUb3BDYWxsRnJhbWVTZXR0
ZXIgdG9wQ2FsbEZyYW1lKHZtLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSk7CisjZW5kaWYKIAogICAg
IC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgSlNWYWx1ZSByZXN1bHQ7CkBAIC0xMTI1LDIxICsx
MTYwLDI1IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICNpZiBF
TkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICByZXN1bHQgPSBMTEludDo6Q0xvb3A6OmV4ZWN1
dGUoY2xvc3VyZS5uZXdDYWxsRnJhbWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3Vl
KTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgICAgIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25F
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZtX3N0YWNrLCBj
bG9zdXJlLm5ld0NhbGxGcmFtZSwgJnZtKTsKKyAgICAgICAgcmVzdWx0ID0gY2xvc3VyZS5mdW5j
dGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCBj
bG9zdXJlLnByb3RvQ2FsbEZyYW1lLCBtX3N0YWNrLmdldFRvcE9mU3RhY2soKSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKICAgICB9CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVy
ID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNs
b3N1cmUub2xkQ2FsbEZyYW1lLCBjbG9zdXJlLmZ1bmN0aW9uKTsKIAorI2lmIEVOQUJMRShMTElO
VF9DX0xPT1ApCiAgICAgbV9zdGFjay52YWxpZGF0ZUZlbmNlKGNsb3N1cmUubmV3Q2FsbEZyYW1l
LCAiQUZURVIiKTsKKyNlbmRpZgogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9
CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogdm9pZCBJbnRlcnByZXRlcjo6ZW5kUmVwZWF0
Q2FsbChDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKQogewogICAgIG1fc3RhY2sucG9wRnJhbWUo
Y2xvc3VyZS5uZXdDYWxsRnJhbWUpOwogfQorI2VuZGlmCiAKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgSlNTY29wZSogc2NvcGUpCiB7CkBAIC0xMjAzLDEyICsxMjQyLDE3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIC8vIFB1c2gg
dGhlIGZyYW1lOgogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsg
Ly8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAg
IENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gbV9zdGFjay5wdXNoRnJhbWUoY2FsbEZyYW1lLCBj
b2RlQmxvY2ssIHNjb3BlLCAxLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NhbGxGcmFtZSkp
CiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNh
bGxGcmFtZSkpOwogCiAgICAgLy8gU2V0IHRoZSBhcmd1bWVudHMgZm9yIHRoZSBjYWxsZWU6CiAg
ICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1ZhbHVlKTsKKyNlbHNlCisgICAgUHJv
dG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2Rl
QmxvY2ssIHNjb3BlLCAwLCB0aGlzVmFsdWUsIDEpOworI2VuZGlmCiAKICAgICBpZiAoTGVnYWN5
UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2Zp
bGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV2YWwtPnNvdXJjZVVSTCgpLCBldmFsLT5saW5l
Tm8oKSk7CkBAIC0xMjIyLDE0ICsxMjY2LDE2IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoRXZhbEV4ZWN1dGEKICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICByZXN1bHQg
PSBMTEludDo6Q0xvb3A6OmV4ZWN1dGUobmV3Q2FsbEZyYW1lLCBsbGludF9ldmFsX3Byb2xvZ3Vl
KTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgICAgIHJlc3VsdCA9IGV2YWwtPmdlbmVyYXRlZEpJ
VENvZGUoKS0+ZXhlY3V0ZSgmbV9zdGFjaywgbmV3Q2FsbEZyYW1lLCAmdm0pOworICAgICAgICBy
ZXN1bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxs
RnJhbWUsIG1fc3RhY2suZ2V0VG9wT2ZTdGFjaygpKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQog
ICAgIH0KIAogICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJv
ZmlsZXIoKSkKICAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1dGUoY2FsbEZyYW1lLCBldmFsLT5z
b3VyY2VVUkwoKSwgZXZhbC0+bGluZU5vKCkpOwogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
ICAgICBtX3N0YWNrLnBvcEZyYW1lKG5ld0NhbGxGcmFtZSk7CisjZW5kaWYKICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTU5NzIyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1Niw4ICsyNTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZW51bSBFeGVjdXRpb25GbGFnIHsgTm9ybWFsLCBJbml0aWFsaXplQW5kUmV0dXJuIH07
CiAKLSAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlv
bkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBKU1Njb3BlKik7CisgICAgICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFy
ZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxs
RnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Nj
b3BlKiwgSlNWYWx1ZSopOworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIHZvaWQg
ZW5kUmVwZWF0Q2FsbChDYWxsRnJhbWVDbG9zdXJlJik7CisjZW5kaWYKICAgICAgICAgSlNWYWx1
ZSBleGVjdXRlKENhbGxGcmFtZUNsb3N1cmUmKTsKIAogICAgICAgICB2b2lkIGdldFN0YWNrVHJh
Y2UoVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHJldmlzaW9uIDE1OTcyMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFnZVJlc2VydmF0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZNVGFncy5oPgogCisjZGVmaW5lIEVOQUJMRV9ERUJVR19KU1NUQUNLIDAKICNpZiAh
ZGVmaW5lZChOREVCVUcpICYmICFkZWZpbmVkKEVOQUJMRV9ERUJVR19KU1NUQUNLKQogI2RlZmlu
ZSBFTkFCTEVfREVCVUdfSlNTVEFDSyAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNTk3
MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksOSArNzksOSBAQCBpbmxpbmUgQ2FsbEZyYW1lKiBKU1N0
YWNrOjpwdXNoRnJhbWUoQ2FsCiAgICAgaWYgKCFncm93KG5ld0VuZCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgLy8gQ29tcHV0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgbmV3IFZNIHNlbnRpbmFs
IGZyYW1lIGZvciB0aGlzIGludm9jYXRpb246Ci0gICAgQ2FsbEZyYW1lKiBuZXdWTUVudHJ5U2Vu
dGluYWxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxGcmFtZVNsb3QgKyBwYWRkZWRB
cmdzQ291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKLSAgICBBU1NFUlQoISFu
ZXdWTUVudHJ5U2VudGluYWxGcmFtZSk7CisgICAgLy8gQ29tcHV0ZSB0aGUgYWRkcmVzcyBvZiB0
aGUgbmV3IFZNIHNlbnRpbmVsIGZyYW1lIGZvciB0aGlzIGludm9jYXRpb246CisgICAgQ2FsbEZy
YW1lKiBuZXdWTUVudHJ5U2VudGluZWxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxG
cmFtZVNsb3QgKyBwYWRkZWRBcmdzQ291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXpl
KTsKKyAgICBBU1NFUlQoISFuZXdWTUVudHJ5U2VudGluZWxGcmFtZSk7CiAKICAgICAvLyBDb21w
dXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBuZXcgZnJhbWUgZm9yIHRoaXMgaW52b2NhdGlvbjoKICAg
ICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxGcmFt
ZVNsb3QpOwpAQCAtOTIsMTEgKzkyLDExIEBAIGlubGluZSBDYWxsRnJhbWUqIEpTU3RhY2s6OnB1
c2hGcmFtZShDYWwKICAgICAvLyB0aGUgdG9wIGZyYW1lIG9uIHRoZSBzdGFjay4KICAgICBjYWxs
ZXJGcmFtZSA9IG1fdG9wQ2FsbEZyYW1lOwogCi0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgVk0gc2Vu
dGluYWwgZnJhbWUgaGVhZGVyOgotICAgIG5ld1ZNRW50cnlTZW50aW5hbEZyYW1lLT5pbml0aWFs
aXplVk1FbnRyeVNlbnRpbmVsRnJhbWUoY2FsbGVyRnJhbWUpOworICAgIC8vIEluaXRpYWxpemUg
dGhlIFZNIHNlbnRpbmVsIGZyYW1lIGhlYWRlcjoKKyAgICBuZXdWTUVudHJ5U2VudGluZWxGcmFt
ZS0+aW5pdGlhbGl6ZVZNRW50cnlTZW50aW5lbEZyYW1lKGNhbGxlckZyYW1lKTsKIAogICAgIC8v
IEluaXRpYWxpemUgdGhlIGNhbGxlZSBmcmFtZSBoZWFkZXI6Ci0gICAgbmV3Q2FsbEZyYW1lLT5p
bml0KGNvZGVCbG9jaywgMCwgc2NvcGUsIG5ld1ZNRW50cnlTZW50aW5hbEZyYW1lLCBhcmdzQ291
bnQsIGNhbGxlZSk7CisgICAgbmV3Q2FsbEZyYW1lLT5pbml0KGNvZGVCbG9jaywgMCwgc2NvcGUs
IG5ld1ZNRW50cnlTZW50aW5lbEZyYW1lLCBhcmdzQ291bnQsIGNhbGxlZSk7CiAKICAgICBBU1NF
UlQoISFuZXdDYWxsRnJhbWUtPnNjb3BlKCkpOwogCkBAIC0xMjAsNyArMTIwLDcgQEAgaW5saW5l
IHZvaWQgSlNTdGFjazo6cG9wRnJhbWUoQ2FsbEZyYW1lKgogewogICAgIHZhbGlkYXRlRmVuY2Uo
ZnJhbWUsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwogCi0gICAgLy8gUG9wIG9mZiB0aGUgY2Fs
bGVlIGZyYW1lIGFuZCB0aGUgc2VudGluYWwgZnJhbWUuCisgICAgLy8gUG9wIG9mZiB0aGUgY2Fs
bGVlIGZyYW1lIGFuZCB0aGUgc2VudGluZWwgZnJhbWUuCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSA9IGZyYW1lLT5jYWxsZXJGcmFtZSgpLT52bUVudHJ5U2VudGluZWxDYWxsZXJGcmFtZSgp
OwogCiAgICAgLy8gUG9wIHRvIHRoZSBjYWxsZXI6CkBAIC0xODMsNyArMTgzLDcgQEAgaW5saW5l
IEpTVmFsdWUgSlNTdGFjazo6Z2VuZXJhdGVGZW5jZVZhbAogLy8gICAgICAgICAgICAgICAgICAg
ICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CiAvLyAgICAgICAgICAg
ICAgICAgICAgIHwgKioqIHRoZSBGZW5jZSAqKiogICAgICAgICAgICAgICAgICAgIHwKIC8vICAg
ICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAotLy8gICAgICAgICAgICAgICAgICAgICB8IFZNIGVudHJ5IHNlbnRpbmFsIGZyYW1lIGhlYWRl
ciAgICAgICB8CisvLyAgICAgICAgICAgICAgICAgICAgIHwgVk0gZW50cnkgc2VudGluZWwgZnJh
bWUgaGVhZGVyICAgICAgIHwKIC8vICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAogLy8gICAgICAgICAgICAgICAgICAgICB8IEFyZ3Mg
b2YgbmV3IGZyYW1lICAgICAgICAgICAgICAgICAgICB8CiAvLyAgICAgICAgICAgICAgICAgICAg
IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQy
LDExIEBAIEpJVENvZGU6On5KSVRDb2RlKCkKIH0KIAogI2lmIEVOQUJMRShKSVQpCi1KU1ZhbHVl
IEpJVENvZGU6OmV4ZWN1dGUoSlNTdGFjayogc3RhY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSogdm0pCitKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSog
cHJvdG9DYWxsRnJhbWUsIFJlZ2lzdGVyKiB0b3BPZlN0YWNrKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGFjayk7CisgICAgQVNTRVJUKCF2bS0+dG9wQ2FsbEZyYW1lIHx8ICgoUmVnaXN0ZXIqKSh2
bS0+dG9wQ2FsbEZyYW1lKSA+PSB0b3BPZlN0YWNrKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IEpTVmFsdWU6OmRlY29kZShjYWxsVG9KYXZhU2NyaXB0KGV4ZWN1dGFibGVBZGRyZXNzKCksIGNh
bGxGcmFtZSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxUb0ph
dmFTY3JpcHQoZXhlY3V0YWJsZUFkZHJlc3MoKSwgdm0sIHByb3RvQ2FsbEZyYW1lLCB0b3BPZlN0
YWNrKSk7CiAgICAgcmV0dXJuIHZtLT5leGNlcHRpb24oKSA/IGpzTnVsbCgpIDogcmVzdWx0Owog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24g
MTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGVEw6OkpJVENv
ZGUqIGZ0bCgpOwogICAgIHZpcnR1YWwgRlRMOjpGb3JPU1JFbnRyeUpJVENvZGUqIGZ0bEZvck9T
UkVudHJ5KCk7CiAgICAgCi0gICAgSlNWYWx1ZSBleGVjdXRlKEpTU3RhY2sqLCBDYWxsRnJhbWUq
LCBWTSopOworICAgIEpTVmFsdWUgZXhlY3V0ZShWTSosIFByb3RvQ2FsbEZyYW1lKiwgUmVnaXN0
ZXIqKTsKICAgICAKICAgICB2b2lkKiBzdGFydCgpIHsgcmV0dXJuIGRhdGFBZGRyZXNzQXRPZmZz
ZXQoMCk7IH0KICAgICB2aXJ0dWFsIHNpemVfdCBzaXplKCkgPSAwOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBPUyhXSU5ET1dTKQogY2xhc3MgRXhlY1N0YXRlOwor
c3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCiBleHRlcm4gIkMiIHsKLSAgICBFbmNvZGVkSlNWYWx1
ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqLCBFeGVjU3RhdGUqKTsKKyAgICBFbmNvZGVkSlNWYWx1
ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqLCBWTSosIFByb3RvQ2FsbEZyYW1lKiwgRXhlY1N0YXRl
Kik7CiAgICAgdm9pZCByZXR1cm5Gcm9tSmF2YVNjcmlwdCgpOworICAgIEVuY29kZWRKU1ZhbHVl
IGNhbGxUb05hdGl2ZUZ1bmN0aW9uKHZvaWQqLCBWTSosIFByb3RvQ2FsbEZyYW1lKiwgRXhlY1N0
YXRlKik7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVic1g4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnNYODYuaAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVic1g4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNyArMjA2LDcgQEAgZXh0ZXJuICJD
IiB7CiAKICAgICAvLyBGSVhNRTogU2luY2UgV2luZG93cyBkb2Vzbid0IHVzZSB0aGUgTExJbnQs
IHdlIGhhdmUgaW5saW5lIHN0dWJzIGhlcmUuCiAgICAgLy8gVW50aWwgdGhlIExMSW50IGlzIGNo
YW5nZWQgdG8gc3VwcG9ydCBXaW5kb3dzLCB0aGVzZSBzdHViIG5lZWRzIHRvIGJlIHVwZGF0ZWQu
Ci0gICAgX19kZWNsc3BlYyhuYWtlZCkgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlwdCh2
b2lkKiBjb2RlLCBFeGVjU3RhdGUqKQorICAgIF9fZGVjbHNwZWMobmFrZWQpIEVuY29kZWRKU1Zh
bHVlIGNhbGxUb0phdmFTY3JpcHQodm9pZCogY29kZSwgVk0qLCBQcm90b0NhbGxGcmFtZSosIEV4
ZWNTdGF0ZSopCiAgICAgewogICAgICAgICBfX2FzbSB7CiAgICAgICAgICAgICBtb3YgZWR4LCBb
ZXNwXQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJl
dmlzaW9uIDE1OTcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIFJlZ2lzdGVyOwogY2xhc3MgVk07CitzdHJ1Y3Qg
UHJvdG9DYWxsRnJhbWU7CiAKIGV4dGVybiAiQyIgewotICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxU
b0phdmFTY3JpcHQodm9pZCosIEV4ZWNTdGF0ZSopOworICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxU
b0phdmFTY3JpcHQodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqLCBSZWdpc3RlciopOwogICAg
IHZvaWQgcmV0dXJuRnJvbUphdmFTY3JpcHQoKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9O
YXRpdmVGdW5jdGlvbih2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSosIFJlZ2lzdGVyKik7CiB9
CiAKIG5hbWVzcGFjZSBMTEludCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTU5NzIyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTExMywyNSArMTEzLDQzIEBAIG1hY3JvIGZ1bmN0aW9uRXBpbG9n
dWUoZXh0cmFTdGFja1NwYWNlKQogICAgIGVuZAogZW5kCiAKLW1hY3JvIGRvQ2FsbFRvSmF2YVNj
cmlwdCgpCittYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwsIGRvUmV0dXJuKQogICAg
IGlmIFg4Nl82NAorICAgICAgICBjb25zdCBlbnRyeSA9IHQ1CisgICAgICAgIGNvbnN0IHZtID0g
dDQKKyAgICAgICAgY29uc3QgcHJvdG9DYWxsRnJhbWUgPSB0MQorICAgICAgICBjb25zdCB0b3BP
ZlN0YWNrID0gdDIKKwogICAgICAgICBjb25zdCBleHRyYVN0YWNrU3BhY2UgPSA4CiAgICAgICAg
IGNvbnN0IHByZXZpb3VzQ0ZSID0gdDAKICAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IHQ2Ci0g
ICAgICAgIGNvbnN0IGVudHJ5ID0gdDUKLSAgICAgICAgY29uc3QgbmV3Q2FsbEZyYW1lID0gdDQK
KyAgICAgICAgY29uc3QgdGVtcDEgPSB0MAorICAgICAgICBjb25zdCB0ZW1wMiA9IHQzCisgICAg
ICAgIGNvbnN0IHRlbXAzID0gdDYKICAgICBlbHNpZiBBUk02NAorICAgICAgICBjb25zdCBlbnRy
eSA9IGEwCisgICAgICAgIGNvbnN0IHZtID0gYTEKKyAgICAgICAgY29uc3QgcHJvdG9DYWxsRnJh
bWUgPSBhMgorICAgICAgICBjb25zdCB0b3BPZlN0YWNrID0gYTMKKwogICAgICAgICBjb25zdCBl
eHRyYVN0YWNrU3BhY2UgPSAwCi0gICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDQKKyAgICAg
ICAgY29uc3QgcHJldmlvdXNDRlIgPSB0MwogICAgICAgICBjb25zdCBwcmV2aW91c1BDID0gbHIK
LSAgICAgICAgY29uc3QgZW50cnkgPSBhMAotICAgICAgICBjb25zdCBuZXdDYWxsRnJhbWUgPSBh
MQorICAgICAgICBjb25zdCB0ZW1wMSA9IHQ0CisgICAgICAgIGNvbnN0IHRlbXAyID0gdDUKKyAg
ICAgICAgY29uc3QgdGVtcDMgPSB0NgogICAgIGVsc2lmIENfTE9PUAorICAgICAgICBjb25zdCBl
bnRyeSA9IGEwCisgICAgICAgIGNvbnN0IHZtID0gYTEKKyAgICAgICAgY29uc3QgcHJvdG9DYWxs
RnJhbWUgPSBhMgorICAgICAgICBjb25zdCB0b3BPZlN0YWNrID0gYTMKKwogICAgICAgICBjb25z
dCBleHRyYVN0YWNrU3BhY2UgPSAwCi0gICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDQgIAor
ICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQwCiAgICAgICAgIGNvbnN0IHByZXZpb3VzUEMg
PSBscgotICAgICAgICBjb25zdCBlbnRyeSA9IGEwCi0gICAgICAgIGNvbnN0IG5ld0NhbGxGcmFt
ZSA9IGExCisgICAgICAgIGNvbnN0IHRlbXAxID0gdDEKKyAgICAgICAgY29uc3QgdGVtcDIgPSB0
MgorICAgICAgICBjb25zdCB0ZW1wMyA9IHQzCiAgICAgZW5kCiAKICAgICBpZiBYODZfNjQKQEAg
LTE0MCwxOSArMTU4LDk3IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdCgpCiAgICAgbW92ZSBj
ZnIsIHByZXZpb3VzQ0ZSCiAgICAgZnVuY3Rpb25Qcm9sb2d1ZShleHRyYVN0YWNrU3BhY2UpCiAK
LSAgICBtb3ZlIG5ld0NhbGxGcmFtZSwgY2ZyCi0gICAgbG9hZHAgW2Nmcl0sIG5ld0NhbGxGcmFt
ZQotICAgIHN0b3JlcCBwcmV2aW91c0NGUiwgW25ld0NhbGxGcmFtZV0KLSAgICBzdG9yZXAgcHJl
dmlvdXNQQywgOFtuZXdDYWxsRnJhbWVdCisgICAgbW92ZSB0b3BPZlN0YWNrLCBjZnIKKyAgICBz
dWJwIChDYWxsRnJhbWVIZWFkZXJTbG90cy0xKSo4LCBjZnIKKyAgICBzdG9yZXAgMCwgQXJndW1l
bnRDb3VudFtjZnJdCisgICAgc3RvcmVwIHZtLCBDYWxsZWVbY2ZyXQorICAgIGxvYWRwIFZNOjp0
b3BDYWxsRnJhbWVbdm1dLCB0ZW1wMQorICAgIHN0b3JlcCB0ZW1wMSwgU2NvcGVDaGFpbltjZnJd
CisgICAgc3RvcmVwIDEsIENvZGVCbG9ja1tjZnJdCisgICAgc3RvcmVwIHByZXZpb3VzUEMsIFJl
dHVyblBDW2Nmcl0KKyAgICBzdG9yZXAgcHJldmlvdXNDRlIsIENhbGxlckZyYW1lW2Nmcl0KKyAg
ICBtb3ZlIGNmciwgdGVtcDEKKworICAgIGxvYWRpIFByb3RvQ2FsbEZyYW1lOjpwYWRkZWRBcmdD
b3VudFtwcm90b0NhbGxGcmFtZV0sIHRlbXAyCisgICAgYWRkcCBDYWxsRnJhbWVIZWFkZXJTbG90
cywgdGVtcDIsIHRlbXAyCisgICAgbHNoaWZ0cCAzLCB0ZW1wMgorICAgIHN1YnAgdGVtcDIsIGNm
cgorICAgIG1vdmUgdGVtcDEsIENhbGxlckZyYW1lW2Nmcl0KKworICAgIG1vdmUgNSwgdGVtcDEK
KworLmNvcHlIZWFkZXJMb29wOgorICAgIHN1YmkgMSwgdGVtcDEKKyAgICBsb2FkcCBbcHJvdG9D
YWxsRnJhbWUsIHRlbXAxLCA4XSwgdGVtcDMKKyAgICBzdG9yZXAgdGVtcDMsIENvZGVCbG9ja1tj
ZnIsIHRlbXAxLCA4XQorICAgIGJ0aW56IHRlbXAxLCAuY29weUhlYWRlckxvb3AKKworICAgIGxv
YWRpIFByb3RvQ2FsbEZyYW1lOjphcmdDb3VudEFuZENvZGVPcmlnaW5WYWx1ZVtwcm90b0NhbGxG
cmFtZV0sIHRlbXAyCisgICAgc3ViaSAxLCB0ZW1wMgorICAgIGxvYWRpIFByb3RvQ2FsbEZyYW1l
OjpwYWRkZWRBcmdDb3VudFtwcm90b0NhbGxGcmFtZV0sIHRlbXAzCisgICAgc3ViaSAxLCB0ZW1w
MworCisgICAgYmllcSB0ZW1wMiwgdGVtcDMsIC5jb3B5QXJncworICAgIG1vdmUgVmFsdWVVbmRl
ZmluZWQsIHRlbXAxCisuZmlsbEV4dHJhQXJnc0xvb3A6CisgICAgc3ViaSAxLCB0ZW1wMworICAg
IHN0b3JlcCB0ZW1wMSwgVGhpc0FyZ3VtZW50T2Zmc2V0KzhbY2ZyLCB0ZW1wMywgOF0KKyAgICBi
aW5lcSB0ZW1wMiwgdGVtcDMsIC5maWxsRXh0cmFBcmdzTG9vcAorCisuY29weUFyZ3M6CisgICAg
bG9hZHAgUHJvdG9DYWxsRnJhbWU6OmFyZ3NbcHJvdG9DYWxsRnJhbWVdLCB0ZW1wMQorCisuY29w
eUFyZ3NMb29wOgorICAgIGJ0aXogdGVtcDIsIC5jb3B5QXJnc0RvbmUKKyAgICBzdWJpIDEsIHRl
bXAyCisgICAgbG9hZHAgW3RlbXAxLCB0ZW1wMiwgOF0sIHRlbXAzCisgICAgc3RvcmVwIHRlbXAz
LCBUaGlzQXJndW1lbnRPZmZzZXQrOFtjZnIsIHRlbXAyLCA4XQorICAgIGptcCAuY29weUFyZ3NM
b29wCisKKy5jb3B5QXJnc0RvbmU6CisgICAgc3RvcmVwIGNmciwgVk06OnRvcENhbGxGcmFtZVt2
bV0KKwogICAgIG1vdmUgMHhmZmZmMDAwMDAwMDAwMDAwLCBjc3IxCiAgICAgYWRkcCAyLCBjc3Ix
LCBjc3IyCisKKyAgICBtYWtlQ2FsbChlbnRyeSwgdGVtcDEpCisKKyAgICBicGVxIENvZGVCbG9j
a1tjZnJdLCAxLCAuY2FsbGVlRnJhbWVQb3BwZWQKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJd
LCBjZnIKKworLmNhbGxlZUZyYW1lUG9wcGVkOgorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0ZW1w
MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdGVtcDMKKyAgICBzdG9yZXAgdGVtcDMsIFZN
Ojp0b3BDYWxsRnJhbWVbdGVtcDJdCisgICAgCisgICAgZG9SZXR1cm4oZXh0cmFTdGFja1NwYWNl
KQorZW5kCisKK21hY3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwgdGVtcCkKICAgICBjYWxs
IGVudHJ5CitlbmQKIAorbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHRlbXApCisg
ICAgbW92ZSBlbnRyeSwgdGVtcAorICAgIGlmIFg4Nl82NAorICAgICAgICBtb3ZlIGNmciwgdDUK
KyAgICBlbHNpZiBBUk02NCBvciBDX0xPT1AKKyAgICAgICAgbW92ZSBjZnIsIGEwCisgICAgZW5k
CisgICAgY2FsbCB0ZW1wCitlbmQKKworbWFjcm8gZG9SZXR1cm5Gcm9tSmF2YVNjcmlwdChleHRy
YVN0YWNrU3BhY2UpCiBfcmV0dXJuRnJvbUphdmFTY3JpcHQ6CiAgICAgZnVuY3Rpb25FcGlsb2d1
ZShleHRyYVN0YWNrU3BhY2UpCiAgICAgcmV0CiBlbmQKIAorbWFjcm8gZG9SZXR1cm5Gcm9tSG9z
dEZ1bmN0aW9uKGV4dHJhU3RhY2tTcGFjZSkKKyAgICBmdW5jdGlvbkVwaWxvZ3VlKGV4dHJhU3Rh
Y2tTcGFjZSkKKyAgICByZXQKK2VuZAorCiBtYWNybyBwcmVwYXJlU3RhdGVGb3JDQ2FsbCgpCiAg
ICAgbGVhcCBbUEIsIFBDLCA4XSwgUEMKICAgICBtb3ZlIFBCLCB0MwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2
aXNpb24gMTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsMTIgKzQyMSwxNiBAQCBtYWNybyBk
b1JldHVybigpCiAgICAgcmV0CiBlbmQKIAotIyBzdHViIHRvIGNhbGwgaW50byBKYXZhU2NyaXB0
Ci0jIEVuY29kZWRKU1ZhbHVlIGNhbGxUb0phdmFTY3JpcHQodm9pZCogY29kZSwgUmVnaXN0ZXIq
IHRvcE9mU3RhY2spCi0jIE5vdGUsIGlmIHRoaXMgc3R1YiBvciBvbmUgb2YgaXQncyByZWxhdGVk
IG1hY3JvcyBpcyBjaGFuZ2VkLCBtYWtlIHRoZQorIyBzdHViIHRvIGNhbGwgaW50byBKYXZhU2Ny
aXB0IG9yIE5hdGl2ZSBmdW5jdGlvbnMKKyMgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlw
dCh2b2lkKiBjb2RlLCBWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lLCBSZWdpc3Rl
ciogdG9wT2ZTdGFjaykKKyMgRW5jb2RlZEpTVmFsdWUgY2FsbFRvTmF0aXZlRnVuY3Rpb24odm9p
ZCogY29kZSwgVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSwgUmVnaXN0ZXIqIHRv
cE9mU3RhY2spCisjIE5vdGUsIGlmIHRoZXNlIHN0dWJzIG9yIG9uZSBvZiB0aGVpciByZWxhdGVk
IG1hY3JvcyBhcmUgY2hhbmdlZCwgbWFrZSB0aGUKICMgZXF1aXZhbGVudCBjaGFuZ2VzIGluIGpp
dC9KSVRTdHVic1g4Ni5oIGFuZC9vciBqaXQvSklUU3R1YnNNU1ZDNjQuYXNtCiBfY2FsbFRvSmF2
YVNjcmlwdDoKLSAgICBkb0NhbGxUb0phdmFTY3JpcHQoKQorICAgIGRvQ2FsbFRvSmF2YVNjcmlw
dChtYWtlSmF2YVNjcmlwdENhbGwsIGRvUmV0dXJuRnJvbUphdmFTY3JpcHQpCisgICAgCitfY2Fs
bFRvTmF0aXZlRnVuY3Rpb246CisgICAgZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VIb3N0RnVuY3Rp
b25DYWxsLCBkb1JldHVybkZyb21Ib3N0RnVuY3Rpb24pCiAKICMgSW5kaWNhdGUgdGhlIGJlZ2lu
bmluZyBvZiBMTEludC4KIF9sbGludF9iZWdpbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcmdMaXN0LmgJKHJldmlzaW9uIDE1OTcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBA
IHByaXZhdGU6CiB9OwogCiBjbGFzcyBBcmdMaXN0IHsKKyAgICBmcmllbmQgY2xhc3MgSW50ZXJw
cmV0ZXI7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKICAgICBBcmdMaXN0KCkKQEAg
LTE3Miw2ICsxNzMsOCBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRT
bGljZShpbnQgc3RhcnRJbmRleCwgQXJnTGlzdCYgcmVzdWx0KSBjb25zdDsKIAogcHJpdmF0ZToK
KyAgICBKU1ZhbHVlKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9hcmdzOyB9CisKICAgICBKU1Zh
bHVlKiBtX2FyZ3M7CiAgICAgaW50IG1fYXJnQ291bnQ7CiB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDE1OTcyMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzIwLDcgKzEzMjAsMTEgQEAgc3RydWN0IEFWTFRyZWVBYnN0cmFjdG9yRm9yQXJyYXlDb21wYXJl
IAogICAgICAgICAgICAgbV9jYWNoZWRDYWxsLT5zZXRUaGlzKGpzVW5kZWZpbmVkKCkpOwogICAg
ICAgICAgICAgbV9jYWNoZWRDYWxsLT5zZXRBcmd1bWVudCgwLCB2YSk7CiAgICAgICAgICAgICBt
X2NhY2hlZENhbGwtPnNldEFyZ3VtZW50KDEsIHZiKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQogICAgICAgICAgICAgY29tcGFyZVJlc3VsdCA9IG1fY2FjaGVkQ2FsbC0+Y2FsbCgpLnRvTnVt
YmVyKG1fY2FjaGVkQ2FsbC0+bmV3Q2FsbEZyYW1lKG1fZXhlYykpOworI2Vsc2UKKyAgICAgICAg
ICAgIGNvbXBhcmVSZXN1bHQgPSBtX2NhY2hlZENhbGwtPmNhbGwoKS50b051bWJlcihtX2V4ZWMp
OworI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7CiAgICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA0LDcgKzUwNCwxMSBAQCBzdGF0
aWMgTkVWRVJfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhCiAKICAgICAgICAgICAgICAgICBj
YWNoZWRDYWxsLnNldFRoaXMoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1
ZSBqc1Jlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOworI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChqc1Jlc3VsdC50b1N0cmluZyhj
YWNoZWRDYWxsLm5ld0NhbGxGcmFtZShleGVjKSktPnZhbHVlKGV4ZWMpKTsKKyNlbHNlCisgICAg
ICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChqc1Jlc3VsdC50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTQzLDcgKzU0NywxMSBA
QCBzdGF0aWMgTkVWRVJfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhCiAKICAgICAgICAgICAg
ICAgICBjYWNoZWRDYWxsLnNldFRoaXMoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAg
SlNWYWx1ZSBqc1Jlc3VsdCA9IGNhY2hlZENhbGwuY2FsbCgpOworI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChqc1Jlc3VsdC50b1N0
cmluZyhjYWNoZWRDYWxsLm5ld0NhbGxGcmFtZShleGVjKSktPnZhbHVlKGV4ZWMpKTsKKyNlbHNl
CisgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChqc1Jlc3VsdC50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKIApJbmRleDogU291cmNl
L1dURi93dGYvRGF0YUxvZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRGF0YUxv
Zy5jcHAJKHJldmlzaW9uIDE1OTcyMikKKysrIFNvdXJjZS9XVEYvd3RmL0RhdGFMb2cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jZGVmaW5l
IERBVEFfTE9HX1RPX0ZJTEUgMAorI2RlZmluZSBEQVRBX0xPR19UT19GSUxFIDEKIAogLy8gVW5j
b21tZW50IHRvIGZvcmNlIGxvZ2dpbmcgdG8gdGhlIGdpdmVuIGZpbGUgcmVnYXJkbGVzcyBvZiB3
aGF0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBzYXlzLiBOb3RlIHRoYXQKIC8vIHdlIHdpbGwg
YXBwZW5kICIuPHBpZD4udHh0IiB3aGVyZSA8cGlkPiBpcyB0aGUgUElELgpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAxNTk3MjIpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NzAsNyArNzcwLDcgQEAKICAgIGJ1dCBub3QgdHJ1ZSBhdCBhbGwgb24g
MzItYml0IHBsYXRmb3JtcyB3aGVyZSB2YWx1ZXMgYXJlIGNvbXBvc2VkIG9mIHR3bwogICAgc2Vw
YXJhdGUgc3ViLXZhbHVlcy4gKi8KICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShERkdfSklU
KSAmJiBVU0UoSlNWQUxVRTY0KQotI2RlZmluZSBFTkFCTEVfQ09OQ1VSUkVOVF9KSVQgMQorI2Rl
ZmluZSBFTkFCTEVfQ09OQ1VSUkVOVF9KSVQgMAogI2VuZGlmCiAKIC8qIElmIHRoZSBqaXQgaXMg
bm90IGF2YWlsYWJsZSwgZW5hYmxlIHRoZSBMTEludCBDIExvb3A6ICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218266</attachid>
            <date>2013-12-02 22:20:55 -0800</date>
            <delta_ts>2013-12-03 22:10:59 -0800</delta_ts>
            <desc>Patch with X86 32bit + 64bit changes tested.</desc>
            <filename>call-toJS-thunk-alloc-frame-wip18.patch</filename>
            <type>text/plain</type>
            <size>39888</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwu
aAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhY2hlZENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAsIG1fZW50cnlTY29wZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0
aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICBpZiAoY2FsbEZy
YW1lLT52bSgpLmlzU2FmZVRvUmVjdXJzZSgpKQotICAgICAgICAgICAgICAgIG1fY2xvc3VyZSA9
IG1faW50ZXJwcmV0ZXItPnByZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFi
bGUoKSwgY2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5z
Y29wZSgpKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPnZt
KCkuaXNTYWZlVG9SZWN1cnNlKCkpIHsKKyAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNp
emUoYXJndW1lbnRDb3VudCk7CisgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnBy
ZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxs
RnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1
bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOworICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKICAg
ICAgICAgICAgIG1fdmFsaWQgPSAhY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKTsKICAgICAgICAg
fQpAQCAtNTUsOSArNTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQo
bV92YWxpZCk7CiAgICAgICAgICAgICByZXR1cm4gbV9pbnRlcnByZXRlci0+ZXhlY3V0ZShtX2Ns
b3N1cmUpOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgc2V0VGhpcyhKU1ZhbHVlIHYpIHsgbV9j
bG9zdXJlLnNldFRoaXModik7IH0KLSAgICAgICAgdm9pZCBzZXRBcmd1bWVudChpbnQgbiwgSlNW
YWx1ZSB2KSB7IG1fY2xvc3VyZS5zZXRBcmd1bWVudChuLCB2KTsgfQorICAgICAgICB2b2lkIHNl
dFRoaXMoSlNWYWx1ZSB2KSB7IG1fcHJvdG9DYWxsRnJhbWUuc2V0VGhpc1ZhbHVlKHYpOyB9Cisg
ICAgICAgIHZvaWQgc2V0QXJndW1lbnQoaW50IG4sIEpTVmFsdWUgdikgeyBtX3Byb3RvQ2FsbEZy
YW1lLnNldEFyZ3VtZW50KG4sIHYpOyB9CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAg
ICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gbV9jbG9zdXJlLm5ld0NhbGxGcmFt
ZTsKQEAgLTcwLDExICs3MiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmICht
X3ZhbGlkKQogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXItPmVuZFJlcGVhdENhbGwobV9j
bG9zdXJlKTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgbV92YWxpZDsKICAgICAgICAgSW50ZXJwcmV0ZXIqIG1faW50ZXJwcmV0ZXI7CiAg
ICAgICAgIFZNRW50cnlTY29wZSBtX2VudHJ5U2NvcGU7CisgICAgICAgIFByb3RvQ2FsbEZyYW1l
IG1fcHJvdG9DYWxsRnJhbWU7CisgICAgICAgIFZlY3RvcjxKU1ZhbHVlPiBtX2FyZ3VtZW50czsK
ICAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBtX2Nsb3N1cmU7CiAgICAgfTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZp
c2lvbiAxNTk3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDQgKzEzNCwyMiBAQCBKU0dsb2JhbE9iamVj
dCogQ2FsbEZyYW1lOjp2bUVudHJ5R2xvYmFsCiAgICAgcmV0dXJuIHZtKCkuZW50cnlTY29wZS0+
Z2xvYmFsT2JqZWN0KCk7CiB9CiAKK3ZvaWQgUHJvdG9DYWxsRnJhbWU6OmluaXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBKU09iamVjdCogY2FsbGVlLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcywgSlNWYWx1ZSogb3RoZXJBcmdzKQor
eworICAgIHRoaXMtPmFyZ3MgPSBvdGhlckFyZ3M7CisgICAgdGhpcy0+c2V0Q29kZUJsb2NrKGNv
ZGVCbG9jayk7CisgICAgdGhpcy0+c2V0U2NvcGUoc2NvcGUpOworICAgIHRoaXMtPnNldENhbGxl
ZShjYWxsZWUpOworICAgIHRoaXMtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0Nv
dW50SW5jbHVkaW5nVGhpcyk7CisgICAgc2l6ZV90IHBhZGRlZEFyZ3NDb3VudCA9IGFyZ0NvdW50
SW5jbHVkaW5nVGhpczsKKyAgICBpZiAoY29kZUJsb2NrKSB7CisgICAgICAgIHNpemVfdCBudW1Q
YXJhbWV0ZXJzID0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7CisgICAgICAgIGlmIChwYWRk
ZWRBcmdzQ291bnQgPCBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgcGFkZGVkQXJnc0NvdW50
ID0gbnVtUGFyYW1ldGVyczsKKyAgICB9CisgICAgdGhpcy0+c2V0UGFkZGVkQXJnc0NvdW50KHBh
ZGRlZEFyZ3NDb3VudCk7CisgICAgdGhpcy0+Y2xlYXJDdXJyZW50VlBDKCk7CisgICAgdGhpcy0+
c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNp
b24gMTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsNiArMzU3LDM4IEBAIG5hbWVzcGFjZSBKU0MgIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIFZNSW5zcGVjdG9yOwogICAgIH07CiAKKyAgICBzdHJ1Y3Qg
UHJvdG9DYWxsRnJhbWUgeworICAgICAgICBSZWdpc3RlciBjb2RlQmxvY2tWYWx1ZTsKKyAgICAg
ICAgUmVnaXN0ZXIgc2NvcGVDaGFpblZhbHVlOworICAgICAgICBSZWdpc3RlciBjYWxsZWVWYWx1
ZTsKKyAgICAgICAgUmVnaXN0ZXIgYXJnQ291bnRBbmRDb2RlT3JpZ2luVmFsdWU7CisgICAgICAg
IFJlZ2lzdGVyIHRoaXNBcmc7CisgICAgICAgIHNpemVfdCBwYWRkZWRBcmdDb3VudDsKKyAgICAg
ICAgSlNWYWx1ZSAqYXJnczsKKworICAgICAgICB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNTY29w
ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSwgaW50LCBKU1ZhbHVlKiBvdGhlckFyZ3MgPSAwKTsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBjb2RlQmxvY2tWYWx1
ZS5SZWdpc3Rlcjo6Y29kZUJsb2NrKCk7IH0KKyAgICAgICAgdm9pZCBzZXRDb2RlQmxvY2soQ29k
ZUJsb2NrKiBjb2RlQmxvY2spIHsgY29kZUJsb2NrVmFsdWUgPSBjb2RlQmxvY2s7IH0KKyAgICAg
ICAgdm9pZCBzZXRTY29wZShKU1Njb3BlKiBzY29wZSkgeyBzY29wZUNoYWluVmFsdWUgPSBzY29w
ZTsgfQorICAgICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKSB7IGNhbGxlZVZh
bHVlID0gUmVnaXN0ZXI6OndpdGhDYWxsZWUoY2FsbGVlKTsgfQorICAgICAgICBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSBjb25zdCB7IHJldHVybiBhcmdDb3VudEFuZENvZGVPcmln
aW5WYWx1ZS5wYXlsb2FkKCk7IH0KKyAgICAgICAgaW50IGFyZ3VtZW50Q291bnQoKSBjb25zdCB7
IHJldHVybiBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIC0gMTsgfQorICAgICAgICB2b2lk
IHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGludCBjb3VudCkgeyBhcmdDb3VudEFuZENv
ZGVPcmlnaW5WYWx1ZS5wYXlsb2FkKCkgPSBjb3VudDsgfQorICAgICAgICB2b2lkIHNldFBhZGRl
ZEFyZ3NDb3VudChzaXplX3QgYXJnQ291bnQpIHsgcGFkZGVkQXJnQ291bnQgPSBhcmdDb3VudDsg
fQorCisgICAgICAgIHZvaWQgY2xlYXJDdXJyZW50VlBDKCkgeyBhcmdDb3VudEFuZENvZGVPcmln
aW5WYWx1ZS50YWcoKSA9IDA7IH0KKyAgICAgICAgdm9pZCBzZXRUaGlzVmFsdWUoSlNWYWx1ZSB2
YWx1ZSkgeyB0aGlzQXJnID0gdmFsdWU7IH0KKyAgICAgICAgdm9pZCBzZXRBcmd1bWVudChzaXpl
X3QgYXJndW1lbnQsIEpTVmFsdWUgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50KSA8IGFyZ3VtZW50Q291bnQoKSk7CisgICAgICAg
ICAgICBhcmdzW2FyZ3VtZW50XSA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBp
bnQgb2Zmc2V0Rm9yQXJndW1lbnRDb3VudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoUHJvdG9DYWxsRnJhbWUsIGFyZ0NvdW50QW5kQ29kZU9yaWdpblZh
bHVlKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5
bG9hZCk7CisgICAgICAgIH0KKworICAgIH07CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIENhbGxGcmFtZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lQ2xvc3VyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWVDbG9zdXJlLmgJKHJldmlzaW9uIDE1OTcyMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWVDbG9zdXJlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBDYWxsRnJh
bWVDbG9zdXJlIHsKICAgICBDYWxsRnJhbWUqIG9sZENhbGxGcmFtZTsKLSAgICBDYWxsRnJhbWUq
IG5ld0NhbGxGcmFtZTsKKyAgICBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxsRnJhbWU7CiAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb247CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGU7CiAgICAgVk0qIHZtOwpAQCAtNDAsMjMgKzQwLDI1IEBAIHN0cnVjdCBDYWxsRnJh
bWVDbG9zdXJlIHsKICAgICAKICAgICB2b2lkIHNldFRoaXMoSlNWYWx1ZSB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1ZhbHVlKHZhbHVlKTsKKyAgICAgICAgcHJv
dG9DYWxsRnJhbWUtPnNldFRoaXNWYWx1ZSh2YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRB
cmd1bWVudChpbnQgYXJndW1lbnQsIEpTVmFsdWUgdmFsdWUpCiAgICAgewotICAgICAgICBuZXdD
YWxsRnJhbWUtPnNldEFyZ3VtZW50KGFyZ3VtZW50LCB2YWx1ZSk7CisgICAgICAgIHByb3RvQ2Fs
bEZyYW1lLT5zZXRBcmd1bWVudChhcmd1bWVudCwgdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQg
cmVzZXRDYWxsRnJhbWUoKQogICAgIHsKLSAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRTY29wZShz
Y29wZSk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLT5zZXRTY29wZShzY29wZSk7CisjaWYgRU5B
QkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgLy8gc2V0QXJndW1lbnQoKSB0YWtlcyBhbiBhcmcg
aW5kZXggdGhhdCBzdGFydHMgZnJvbSAwIGZvciB0aGUgZmlyc3QKICAgICAgICAgLy8gYXJndW1l
bnQgYWZ0ZXIgdGhlICd0aGlzJyB2YWx1ZS4gU2luY2UgYm90aCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcwogICAgICAgICAvLyBhbmQgcGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzIGluY2x1
ZGVzIHRoZSAndGhpcycgdmFsdWUsIHdlIG5lZWQgdG8KLSAgICAgICAgLy8gc3VidHJhY3QgMSBm
cm9tIHRoZW0gdG8gbWFrZSBpIGEgdmFsaWQgYXJndW1lbnQgaW5kZXggZm9yIHNldEFyZ3VtZW50
KCkuCisgICAgICAgIC8vIHN1YnRyYWN0IDEgZnJvbSB0aGVtIHRvIG1ha2UgaXQgYSB2YWxpZCBh
cmd1bWVudCBpbmRleCBmb3Igc2V0QXJndW1lbnQoKS4KICAgICAgICAgZm9yIChpbnQgaSA9IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLTE7IGkgPCBwYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1Ro
aXMtMTsgKytpKQotICAgICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBqc1Vu
ZGVmaW5lZCgpKTsKKyAgICAgICAgICAgIHByb3RvQ2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBq
c1VuZGVmaW5lZCgpKTsKKyNlbmRpZgogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTU5
NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKICNpbmNsdWRlICJMTEludENMb29wLmgiCisjaW5j
bHVkZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1
ZGUgIkxpdGVyYWxQYXJzZXIuaCIKICNpbmNsdWRlICJOYW1lSW5zdGFuY2UuaCIKQEAgLTg2MCwx
MiArODYxLDE3IEBAIGZhaWxlZEpTT05QOgogCiAgICAgLy8gUHVzaCB0aGUgY2FsbCBmcmFtZSBm
b3IgdGhpcyBpbnZvY2F0aW9uOgogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyNpZiBFTkFCTEUoTExJTlRfQ19M
T09QKQogICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gbV9zdGFjay5wdXNoRnJhbWUoY2Fs
bEZyYW1lLCBjb2RlQmxvY2ssIHNjb3BlLCAxLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0Nh
bGxGcmFtZSkpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSkpOwotCisgICAgCiAgICAgLy8gU2V0IHRoZSBhcmd1bWVudHMgZm9y
IHRoZSBjYWxsZWU6CiAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc09iaik7Cisj
ZWxzZQorICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQoY29kZUJsb2NrLCBzY29wZSwgMCwgdGhpc09iaiwgMSk7CisjZW5kaWYKIAogICAg
IGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAg
ICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgcHJvZ3JhbS0+c291cmNlVVJM
KCksIHByb2dyYW0tPmxpbmVObygpKTsKQEAgLTg3OSwxNCArODg1LDE2IEBAIGZhaWxlZEpTT05Q
OgogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9v
cDo6ZXhlY3V0ZShuZXdDYWxsRnJhbWUsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOwogI2VsaWYg
RU5BQkxFKEpJVCkKLSAgICAgICAgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgp
LT5leGVjdXRlKCZtX3N0YWNrLCBuZXdDYWxsRnJhbWUsICZ2bSk7CisgICAgICAgIHJlc3VsdCA9
IHByb2dyYW0tPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFt
ZSwgbV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAg
fQogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxl
cigpKQogICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIHByb2dyYW0tPnNv
dXJjZVVSTCgpLCBwcm9ncmFtLT5saW5lTm8oKSk7CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQogICAgIG1fc3RhY2sucG9wRnJhbWUobmV3Q2FsbEZyYW1lKTsKKyNlbmRpZgogCiAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KQEAgLTkzMCw2ICs5MzgsNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgaWYgKFVOTElLRUxZKHZtLndh
dGNoZG9nLmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKIAorI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hGcmFtZShjYWxs
RnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgZnVuY3Rpb24pOwogICAgIGlm
IChVTkxJS0VMWSghbmV3Q2FsbEZyYW1lKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CkBAIC05MzgsNiArOTQ3LDEwIEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICBuZXdDYWxsRnJh
bWUtPnNldFRoaXNWYWx1ZSh0aGlzVmFsdWUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXJncy5zaXplKCk7ICsraSkKICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBh
cmdzLmF0KGkpKTsKKyNlbHNlCisgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7Cisg
ICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIHNjb3BlLCBmdW5jdGlvbiwgdGhp
c1ZhbHVlLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKKyNlbmRpZgogCiAgICAgaWYgKExlZ2Fj
eVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9m
aWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZyYW1lLCBmdW5jdGlvbik7CkBAIC05NTIsMTYgKzk2NSwy
MyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAjaWYgRU5BQkxF
KExMSU5UX0NfTE9PUCkKICAgICAgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9vcDo6ZXhlY3V0
ZShuZXdDYWxsRnJhbWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKICNlbGlm
IEVOQUJMRShKSVQpCi0gICAgICAgICAgICByZXN1bHQgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4
ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJm1fc3RhY2ssIG5l
d0NhbGxGcmFtZSwgJnZtKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0
aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sICZw
cm90b0NhbGxGcmFtZSwgbV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpOwogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCi0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElO
VF9DX0xPT1ApCiAgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uKG5ld0NhbGxGcmFtZSkpOworI2Vsc2UKKyAgICAgICAgICAgIHJlc3Vs
dCA9IEpTVmFsdWU6OmRlY29kZShjYWxsVG9OYXRpdmVGdW5jdGlvbihyZWludGVycHJldF9jYXN0
PHZvaWQqPihjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24pLCAmdm0sICZwcm90b0NhbGxGcmFtZSwg
bV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpKTsKKyNlbmRpZgorICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQog
ICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGZ1bmN0aW9uKTsKIAorI2lm
IEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgbV9zdGFjay5wb3BGcmFtZShuZXdDYWxsRnJhbWUp
OworI2VuZGlmCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIApAQCAtMTAw
NSw3ICsxMDI1LDcgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAog
CiAgICAgaWYgKFVOTElLRUxZKHZtLndhdGNoZG9nLmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsK
LQorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBtX3N0YWNrLnB1c2hGcmFtZShjYWxsRnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3ND
b3VudCwgY29uc3RydWN0b3IpOwogICAgIGlmIChVTkxJS0VMWSghbmV3Q2FsbEZyYW1lKSkKICAg
ICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZy
YW1lKSk7CkBAIC0xMDE0LDYgKzEwMzQsMTAgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVj
dXRlQ29uc3RydWN0KAogICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1ZhbHVlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKICAgICAg
ICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBhcmdzLmF0KGkpKTsKKyNlbHNlCisgICAg
UHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChu
ZXdDb2RlQmxvY2ssIHNjb3BlLCBjb25zdHJ1Y3RvciwganNVbmRlZmluZWQoKSwgYXJnc0NvdW50
LCBhcmdzLmRhdGEoKSk7CisjZW5kaWYKIAogICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmls
ZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRl
KGNhbGxGcmFtZSwgY29uc3RydWN0b3IpOwpAQCAtMTAyOCwyMiArMTA1MiwyNSBAQCBKU09iamVj
dCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAjaWYgRU5BQkxFKExMSU5UX0NfTE9P
UCkKICAgICAgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9vcDo6ZXhlY3V0ZShuZXdDYWxsRnJh
bWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOwogI2VsaWYgRU5BQkxF
KEpJVCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCktPmV4ZWN1dGUoJm1fc3RhY2ss
IG5ld0NhbGxGcmFtZSwgJnZtKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdERhdGEu
anMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCktPmV4
ZWN1dGUoJnZtLCAmcHJvdG9DYWxsRnJhbWUsIG1fc3RhY2suZ2V0VG9wT2ZTdGFjaygpKTsKICNl
bmRpZiAvLyBFTkFCTEUoSklUKQogICAgICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCiAgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0
YS5uYXRpdmUuZnVuY3Rpb24obmV3Q2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBpZiAoIWNhbGxG
cmFtZS0+aGFkRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKHJlc3VsdC5pc09iamVjdCgpLCAiSG9zdCBjb25zdHJ1Y3RvciByZXR1cm5lZCBub24gb2Jq
ZWN0LiIpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG5ld0NhbGxGcmFtZSk7Ci0gICAgICAgICAgICB9
CisjZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxUb05hdGl2
ZUZ1bmN0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1
bmN0aW9uKSwgJnZtLCAmcHJvdG9DYWxsRnJhbWUsIG1fc3RhY2suZ2V0VG9wT2ZTdGFjaygpKSk7
CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNPYmplY3QoKSk7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxl
ZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgY29u
c3RydWN0b3IpOwogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBtX3N0YWNrLnBvcEZy
YW1lKG5ld0NhbGxGcmFtZSk7CisjZW5kaWYKIAogICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNTEsNyArMTA3OCw3IEBAIEpTT2JqZWN0
KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bihhc09iamVjdChyZXN1bHQpKTsKIH0KIAotQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6
cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSkKK0NhbGxGcmFtZUNsb3N1cmUg
SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUHJvdG9DYWxsRnJhbWUqIHBy
b3RvQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSogYXJncykKIHsKICAgICBWTSYgdm0g
PSAqc2NvcGUtPnZtKCk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CkBAIC0xMDcwLDEx
ICsxMDk3LDggQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogCiAg
ICAgc2l6ZV90IGFyZ3NDb3VudCA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwogCi0gICAg
Q2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hGcmFtZShjYWxsRnJhbWUsIG5l
d0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgZnVuY3Rpb24pOyAgCi0gICAgaWYgKFVOTElL
RUxZKCFuZXdDYWxsRnJhbWUpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNh
bGxGcmFtZSk7Ci0gICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7Ci0gICAgfQorI2lm
IEVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0
YWNrLnB1c2hGcmFtZShjYWxsRnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwg
ZnVuY3Rpb24pOwogCiAgICAgaWYgKFVOTElLRUxZKCFuZXdDYWxsRnJhbWUpKSB7CiAgICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CkBAIC0xMDgzLDYgKzExMDcsMTEg
QEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogCiAgICAgLy8gUmV0
dXJuIHRoZSBzdWNjZXNzZnVsIGNsb3N1cmU6CiAgICAgQ2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQg
PSB7IGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25FeGVjdXRhYmxl
LCAmdm0sIHNjb3BlLCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgfTsKKyNlbHNlCisgICAgcHJvdG9DYWxsRnJhbWUtPmluaXQobmV3Q29k
ZUJsb2NrLCBzY29wZSwgZnVuY3Rpb24sIGpzVW5kZWZpbmVkKCksIGFyZ3NDb3VudCwgYXJncyk7
CisgICAgLy8gUmV0dXJuIHRoZSBzdWNjZXNzZnVsIGNsb3N1cmU6CisgICAgQ2FsbEZyYW1lQ2xv
c3VyZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwgcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBmdW5j
dGlvbkV4ZWN1dGFibGUsICZ2bSwgc2NvcGUsIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyB9OworI2VuZGlmCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtMTA5Niw5ICsxMTI1LDEzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoQ2FsbEZyYW1lQ2wKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgU3RhY2tTdGF0
czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
ICAgICBtX3N0YWNrLnZhbGlkYXRlRmVuY2UoY2xvc3VyZS5uZXdDYWxsRnJhbWUsICJCRUZPUkUi
KTsKKyNlbmRpZgogICAgIGNsb3N1cmUucmVzZXRDYWxsRnJhbWUoKTsKKyNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQogICAgIG1fc3RhY2sudmFsaWRhdGVGZW5jZShjbG9zdXJlLm5ld0NhbGxGcmFt
ZSwgIlNURVAgMSIpOworI2VuZGlmCiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVy
ID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShj
bG9zdXJlLm9sZENhbGxGcmFtZSwgY2xvc3VyZS5mdW5jdGlvbik7CkBAIC0xMTE0LDcgKzExNDcs
OSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiAgICAgLy8gSGVu
Y2UsIHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHRvcENhbGxGcmFtZSBoZXJlIG91cnNlbHZlcyBi
ZWZvcmUKICAgICAvLyByZXBlYXRpbmcgdGhpcyBjYWxsIG9uIGEgc2Vjb25kIGNhbGxiYWNrIGZ1
bmN0aW9uLgogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBUb3BDYWxsRnJhbWVTZXR0
ZXIgdG9wQ2FsbEZyYW1lKHZtLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSk7CisjZW5kaWYKIAogICAg
IC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAgSlNWYWx1ZSByZXN1bHQ7CkBAIC0xMTI1LDIxICsx
MTYwLDI1IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICNpZiBF
TkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICByZXN1bHQgPSBMTEludDo6Q0xvb3A6OmV4ZWN1
dGUoY2xvc3VyZS5uZXdDYWxsRnJhbWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3Vl
KTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgICAgIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25F
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZtX3N0YWNrLCBj
bG9zdXJlLm5ld0NhbGxGcmFtZSwgJnZtKTsKKyAgICAgICAgcmVzdWx0ID0gY2xvc3VyZS5mdW5j
dGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCBj
bG9zdXJlLnByb3RvQ2FsbEZyYW1lLCBtX3N0YWNrLmdldFRvcE9mU3RhY2soKSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKICAgICB9CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVy
ID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNs
b3N1cmUub2xkQ2FsbEZyYW1lLCBjbG9zdXJlLmZ1bmN0aW9uKTsKIAorI2lmIEVOQUJMRShMTElO
VF9DX0xPT1ApCiAgICAgbV9zdGFjay52YWxpZGF0ZUZlbmNlKGNsb3N1cmUubmV3Q2FsbEZyYW1l
LCAiQUZURVIiKTsKKyNlbmRpZgogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9
CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogdm9pZCBJbnRlcnByZXRlcjo6ZW5kUmVwZWF0
Q2FsbChDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKQogewogICAgIG1fc3RhY2sucG9wRnJhbWUo
Y2xvc3VyZS5uZXdDYWxsRnJhbWUpOwogfQorI2VuZGlmCiAKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgSlNTY29wZSogc2NvcGUpCiB7CkBAIC0xMjAzLDEyICsxMjQyLDE3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIC8vIFB1c2gg
dGhlIGZyYW1lOgogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAxKTsg
Ly8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAg
IENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gbV9zdGFjay5wdXNoRnJhbWUoY2FsbEZyYW1lLCBj
b2RlQmxvY2ssIHNjb3BlLCAxLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NhbGxGcmFtZSkp
CiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNh
bGxGcmFtZSkpOwogCiAgICAgLy8gU2V0IHRoZSBhcmd1bWVudHMgZm9yIHRoZSBjYWxsZWU6CiAg
ICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc1ZhbHVlKTsKKyNlbHNlCisgICAgUHJv
dG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CisgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2Rl
QmxvY2ssIHNjb3BlLCAwLCB0aGlzVmFsdWUsIDEpOworI2VuZGlmCiAKICAgICBpZiAoTGVnYWN5
UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2Zp
bGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGV2YWwtPnNvdXJjZVVSTCgpLCBldmFsLT5saW5l
Tm8oKSk7CkBAIC0xMjIyLDE0ICsxMjY2LDE2IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoRXZhbEV4ZWN1dGEKICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICByZXN1bHQg
PSBMTEludDo6Q0xvb3A6OmV4ZWN1dGUobmV3Q2FsbEZyYW1lLCBsbGludF9ldmFsX3Byb2xvZ3Vl
KTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgICAgIHJlc3VsdCA9IGV2YWwtPmdlbmVyYXRlZEpJ
VENvZGUoKS0+ZXhlY3V0ZSgmbV9zdGFjaywgbmV3Q2FsbEZyYW1lLCAmdm0pOworICAgICAgICBy
ZXN1bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJnZtLCAmcHJvdG9DYWxs
RnJhbWUsIG1fc3RhY2suZ2V0VG9wT2ZTdGFjaygpKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQog
ICAgIH0KIAogICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJv
ZmlsZXIoKSkKICAgICAgICAgcHJvZmlsZXItPmRpZEV4ZWN1dGUoY2FsbEZyYW1lLCBldmFsLT5z
b3VyY2VVUkwoKSwgZXZhbC0+bGluZU5vKCkpOwogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
ICAgICBtX3N0YWNrLnBvcEZyYW1lKG5ld0NhbGxGcmFtZSk7CisjZW5kaWYKICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTU5NzIyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1Niw4ICsyNTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZW51bSBFeGVjdXRpb25GbGFnIHsgTm9ybWFsLCBJbml0aWFsaXplQW5kUmV0dXJuIH07
CiAKLSAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlv
bkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBKU1Njb3BlKik7CisgICAgICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFy
ZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxs
RnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Nj
b3BlKiwgSlNWYWx1ZSopOworI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIHZvaWQg
ZW5kUmVwZWF0Q2FsbChDYWxsRnJhbWVDbG9zdXJlJik7CisjZW5kaWYKICAgICAgICAgSlNWYWx1
ZSBleGVjdXRlKENhbGxGcmFtZUNsb3N1cmUmKTsKIAogICAgICAgICB2b2lkIGdldFN0YWNrVHJh
Y2UoVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3Rk
OjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHJldmlzaW9uIDE1OTcyMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFnZVJlc2VydmF0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZNVGFncy5oPgogCisjZGVmaW5lIEVOQUJMRV9ERUJVR19KU1NUQUNLIDAKICNpZiAh
ZGVmaW5lZChOREVCVUcpICYmICFkZWZpbmVkKEVOQUJMRV9ERUJVR19KU1NUQUNLKQogI2RlZmlu
ZSBFTkFCTEVfREVCVUdfSlNTVEFDSyAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNTk3
MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksOSArNzksOSBAQCBpbmxpbmUgQ2FsbEZyYW1lKiBKU1N0
YWNrOjpwdXNoRnJhbWUoQ2FsCiAgICAgaWYgKCFncm93KG5ld0VuZCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgLy8gQ29tcHV0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgbmV3IFZNIHNlbnRpbmFs
IGZyYW1lIGZvciB0aGlzIGludm9jYXRpb246Ci0gICAgQ2FsbEZyYW1lKiBuZXdWTUVudHJ5U2Vu
dGluYWxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxGcmFtZVNsb3QgKyBwYWRkZWRB
cmdzQ291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKLSAgICBBU1NFUlQoISFu
ZXdWTUVudHJ5U2VudGluYWxGcmFtZSk7CisgICAgLy8gQ29tcHV0ZSB0aGUgYWRkcmVzcyBvZiB0
aGUgbmV3IFZNIHNlbnRpbmVsIGZyYW1lIGZvciB0aGlzIGludm9jYXRpb246CisgICAgQ2FsbEZy
YW1lKiBuZXdWTUVudHJ5U2VudGluZWxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxG
cmFtZVNsb3QgKyBwYWRkZWRBcmdzQ291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXpl
KTsKKyAgICBBU1NFUlQoISFuZXdWTUVudHJ5U2VudGluZWxGcmFtZSk7CiAKICAgICAvLyBDb21w
dXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBuZXcgZnJhbWUgZm9yIHRoaXMgaW52b2NhdGlvbjoKICAg
ICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxGcmFt
ZVNsb3QpOwpAQCAtOTIsMTEgKzkyLDExIEBAIGlubGluZSBDYWxsRnJhbWUqIEpTU3RhY2s6OnB1
c2hGcmFtZShDYWwKICAgICAvLyB0aGUgdG9wIGZyYW1lIG9uIHRoZSBzdGFjay4KICAgICBjYWxs
ZXJGcmFtZSA9IG1fdG9wQ2FsbEZyYW1lOwogCi0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgVk0gc2Vu
dGluYWwgZnJhbWUgaGVhZGVyOgotICAgIG5ld1ZNRW50cnlTZW50aW5hbEZyYW1lLT5pbml0aWFs
aXplVk1FbnRyeVNlbnRpbmVsRnJhbWUoY2FsbGVyRnJhbWUpOworICAgIC8vIEluaXRpYWxpemUg
dGhlIFZNIHNlbnRpbmVsIGZyYW1lIGhlYWRlcjoKKyAgICBuZXdWTUVudHJ5U2VudGluZWxGcmFt
ZS0+aW5pdGlhbGl6ZVZNRW50cnlTZW50aW5lbEZyYW1lKGNhbGxlckZyYW1lKTsKIAogICAgIC8v
IEluaXRpYWxpemUgdGhlIGNhbGxlZSBmcmFtZSBoZWFkZXI6Ci0gICAgbmV3Q2FsbEZyYW1lLT5p
bml0KGNvZGVCbG9jaywgMCwgc2NvcGUsIG5ld1ZNRW50cnlTZW50aW5hbEZyYW1lLCBhcmdzQ291
bnQsIGNhbGxlZSk7CisgICAgbmV3Q2FsbEZyYW1lLT5pbml0KGNvZGVCbG9jaywgMCwgc2NvcGUs
IG5ld1ZNRW50cnlTZW50aW5lbEZyYW1lLCBhcmdzQ291bnQsIGNhbGxlZSk7CiAKICAgICBBU1NF
UlQoISFuZXdDYWxsRnJhbWUtPnNjb3BlKCkpOwogCkBAIC0xMjAsNyArMTIwLDcgQEAgaW5saW5l
IHZvaWQgSlNTdGFjazo6cG9wRnJhbWUoQ2FsbEZyYW1lKgogewogICAgIHZhbGlkYXRlRmVuY2Uo
ZnJhbWUsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwogCi0gICAgLy8gUG9wIG9mZiB0aGUgY2Fs
bGVlIGZyYW1lIGFuZCB0aGUgc2VudGluYWwgZnJhbWUuCisgICAgLy8gUG9wIG9mZiB0aGUgY2Fs
bGVlIGZyYW1lIGFuZCB0aGUgc2VudGluZWwgZnJhbWUuCiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSA9IGZyYW1lLT5jYWxsZXJGcmFtZSgpLT52bUVudHJ5U2VudGluZWxDYWxsZXJGcmFtZSgp
OwogCiAgICAgLy8gUG9wIHRvIHRoZSBjYWxsZXI6CkBAIC0xODMsNyArMTgzLDcgQEAgaW5saW5l
IEpTVmFsdWUgSlNTdGFjazo6Z2VuZXJhdGVGZW5jZVZhbAogLy8gICAgICAgICAgICAgICAgICAg
ICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CiAvLyAgICAgICAgICAg
ICAgICAgICAgIHwgKioqIHRoZSBGZW5jZSAqKiogICAgICAgICAgICAgICAgICAgIHwKIC8vICAg
ICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAotLy8gICAgICAgICAgICAgICAgICAgICB8IFZNIGVudHJ5IHNlbnRpbmFsIGZyYW1lIGhlYWRl
ciAgICAgICB8CisvLyAgICAgICAgICAgICAgICAgICAgIHwgVk0gZW50cnkgc2VudGluZWwgZnJh
bWUgaGVhZGVyICAgICAgIHwKIC8vICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAogLy8gICAgICAgICAgICAgICAgICAgICB8IEFyZ3Mg
b2YgbmV3IGZyYW1lICAgICAgICAgICAgICAgICAgICB8CiAvLyAgICAgICAgICAgICAgICAgICAg
IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQy
LDExIEBAIEpJVENvZGU6On5KSVRDb2RlKCkKIH0KIAogI2lmIEVOQUJMRShKSVQpCi1KU1ZhbHVl
IEpJVENvZGU6OmV4ZWN1dGUoSlNTdGFjayogc3RhY2ssIENhbGxGcmFtZSogY2FsbEZyYW1lLCBW
TSogdm0pCitKU1ZhbHVlIEpJVENvZGU6OmV4ZWN1dGUoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSog
cHJvdG9DYWxsRnJhbWUsIFJlZ2lzdGVyKiB0b3BPZlN0YWNrKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGFjayk7CisgICAgQVNTRVJUKCF2bS0+dG9wQ2FsbEZyYW1lIHx8ICgoUmVnaXN0ZXIqKSh2
bS0+dG9wQ2FsbEZyYW1lKSA+PSB0b3BPZlN0YWNrKSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IEpTVmFsdWU6OmRlY29kZShjYWxsVG9KYXZhU2NyaXB0KGV4ZWN1dGFibGVBZGRyZXNzKCksIGNh
bGxGcmFtZSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxUb0ph
dmFTY3JpcHQoZXhlY3V0YWJsZUFkZHJlc3MoKSwgdm0sIHByb3RvQ2FsbEZyYW1lLCB0b3BPZlN0
YWNrKSk7CiAgICAgcmV0dXJuIHZtLT5leGNlcHRpb24oKSA/IGpzTnVsbCgpIDogcmVzdWx0Owog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24g
MTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGVEw6OkpJVENv
ZGUqIGZ0bCgpOwogICAgIHZpcnR1YWwgRlRMOjpGb3JPU1JFbnRyeUpJVENvZGUqIGZ0bEZvck9T
UkVudHJ5KCk7CiAgICAgCi0gICAgSlNWYWx1ZSBleGVjdXRlKEpTU3RhY2sqLCBDYWxsRnJhbWUq
LCBWTSopOworICAgIEpTVmFsdWUgZXhlY3V0ZShWTSosIFByb3RvQ2FsbEZyYW1lKiwgUmVnaXN0
ZXIqKTsKICAgICAKICAgICB2b2lkKiBzdGFydCgpIHsgcmV0dXJuIGRhdGFBZGRyZXNzQXRPZmZz
ZXQoMCk7IH0KICAgICB2aXJ0dWFsIHNpemVfdCBzaXplKCkgPSAwOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBPUyhXSU5ET1dTKQogY2xhc3MgRXhlY1N0YXRlOwor
c3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCiBleHRlcm4gIkMiIHsKLSAgICBFbmNvZGVkSlNWYWx1
ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqLCBFeGVjU3RhdGUqKTsKKyAgICBFbmNvZGVkSlNWYWx1
ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqLCBWTSosIFByb3RvQ2FsbEZyYW1lKiwgRXhlY1N0YXRl
Kik7CiAgICAgdm9pZCByZXR1cm5Gcm9tSmF2YVNjcmlwdCgpOworICAgIEVuY29kZWRKU1ZhbHVl
IGNhbGxUb05hdGl2ZUZ1bmN0aW9uKHZvaWQqLCBWTSosIFByb3RvQ2FsbEZyYW1lKiwgRXhlY1N0
YXRlKik7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVic1g4Ni5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnNYODYuaAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVic1g4Ni5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNyArMjA2LDcgQEAgZXh0ZXJuICJD
IiB7CiAKICAgICAvLyBGSVhNRTogU2luY2UgV2luZG93cyBkb2Vzbid0IHVzZSB0aGUgTExJbnQs
IHdlIGhhdmUgaW5saW5lIHN0dWJzIGhlcmUuCiAgICAgLy8gVW50aWwgdGhlIExMSW50IGlzIGNo
YW5nZWQgdG8gc3VwcG9ydCBXaW5kb3dzLCB0aGVzZSBzdHViIG5lZWRzIHRvIGJlIHVwZGF0ZWQu
Ci0gICAgX19kZWNsc3BlYyhuYWtlZCkgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlwdCh2
b2lkKiBjb2RlLCBFeGVjU3RhdGUqKQorICAgIF9fZGVjbHNwZWMobmFrZWQpIEVuY29kZWRKU1Zh
bHVlIGNhbGxUb0phdmFTY3JpcHQodm9pZCogY29kZSwgVk0qLCBQcm90b0NhbGxGcmFtZSosIEV4
ZWNTdGF0ZSopCiAgICAgewogICAgICAgICBfX2FzbSB7CiAgICAgICAgICAgICBtb3YgZWR4LCBb
ZXNwXQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJl
dmlzaW9uIDE1OTcyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMiArMzQsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIFJlZ2lzdGVyOwogY2xhc3MgVk07CitzdHJ1Y3Qg
UHJvdG9DYWxsRnJhbWU7CiAKIGV4dGVybiAiQyIgewotICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxU
b0phdmFTY3JpcHQodm9pZCosIEV4ZWNTdGF0ZSopOworICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxU
b0phdmFTY3JpcHQodm9pZCosIFZNKiwgUHJvdG9DYWxsRnJhbWUqLCBSZWdpc3RlciopOwogICAg
IHZvaWQgcmV0dXJuRnJvbUphdmFTY3JpcHQoKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9O
YXRpdmVGdW5jdGlvbih2b2lkKiwgVk0qLCBQcm90b0NhbGxGcmFtZSosIFJlZ2lzdGVyKik7CiB9
CiAKIG5hbWVzcGFjZSBMTEludCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTU5
NzIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3MCwzNyArMTcwLDcxIEBAIG1hY3JvIGZ1bmN0
aW9uRXBpbG9ndWUoZXh0cmFTdGFja1NwYWNlKQogICAgIGVuZAogZW5kCiAKLW1hY3JvIGRvQ2Fs
bFRvSmF2YVNjcmlwdCgpCittYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwsIGRvUmV0
dXJuKQogICAgIGlmIFg4NgorICAgICAgICBjb25zdCBlbnRyeSA9IHQ1CisgICAgICAgIGNvbnN0
IHZtID0gdDIKKyAgICAgICAgY29uc3QgcHJvdG9DYWxsRnJhbWUgPSB0NAorCiAgICAgICAgIGNv
bnN0IGV4dHJhU3RhY2tTcGFjZSA9IDI4CiAgICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDAK
ICAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IHQxCi0gICAgICAgIGNvbnN0IGVudHJ5ID0gdDUK
LSAgICAgICAgY29uc3QgbmV3Q2FsbEZyYW1lID0gdDQKKyAgICAgICAgY29uc3QgdGVtcDEgPSB0
MCAjIFNhbWUgYXMgcHJldmlvdXNDRlIKKyAgICAgICAgY29uc3QgdGVtcDIgPSB0MSAjIFNhbWUg
YXMgcHJldmlvdXNQQworICAgICAgICBjb25zdCB0ZW1wMyA9IHQyICMgU2FtZSBhcyB2bQorICAg
ICAgICBjb25zdCB0ZW1wNCA9IHQzCiAgICAgZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFM
CisgICAgICAgIGNvbnN0IGVudHJ5ID0gYTAKKyAgICAgICAgY29uc3Qgdm0gPSBhMQorICAgICAg
ICBjb25zdCBwcm90b0NhbGxGcmFtZSA9IGEyCisgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSBh
MworCiAgICAgICAgIGNvbnN0IGV4dHJhU3RhY2tTcGFjZSA9IDE2Ci0gICAgICAgIGNvbnN0IHBy
ZXZpb3VzQ0ZSID0gdDMgIAorICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQzCiAgICAgICAg
IGNvbnN0IHByZXZpb3VzUEMgPSBscgotICAgICAgICBjb25zdCBlbnRyeSA9IGEwCi0gICAgICAg
IGNvbnN0IG5ld0NhbGxGcmFtZSA9IGExCisgICAgICAgIGNvbnN0IHRlbXAxID0gdDMgIyBTYW1l
IGFzIHByZXZpb3VzQ0ZSCisgICAgICAgIGNvbnN0IHRlbXAyID0gdDEgIyBTYW1lIGFzIHZtCisg
ICAgICAgIGNvbnN0IHRlbXAzID0gdDQKKyAgICAgICAgY29uc3QgdGVtcDQgPSB0NQogICAgIGVs
c2lmIEFSTXY3CisgICAgICAgIGNvbnN0IGVudHJ5ID0gYTAKKyAgICAgICAgY29uc3Qgdm0gPSBh
MQorICAgICAgICBjb25zdCBwcm90b0NhbGxGcmFtZSA9IGEyCisgICAgICAgIGNvbnN0IHRvcE9m
U3RhY2sgPSBhMworCiAgICAgICAgIGNvbnN0IGV4dHJhU3RhY2tTcGFjZSA9IDI4CiAgICAgICAg
IGNvbnN0IHByZXZpb3VzQ0ZSID0gdDMgIAogICAgICAgICBjb25zdCBwcmV2aW91c1BDID0gbHIK
LSAgICAgICAgY29uc3QgZW50cnkgPSBhMAotICAgICAgICBjb25zdCBuZXdDYWxsRnJhbWUgPSBh
MQorICAgICAgICBjb25zdCB0ZW1wMSA9IHQzICMgU2FtZSBhcyBwcmV2aW91c0NGUgorICAgICAg
ICBjb25zdCB0ZW1wMiA9IHQxICMgU2FtZSBhcyB2bQorICAgICAgICBjb25zdCB0ZW1wMyA9IHQ0
CisgICAgICAgIGNvbnN0IHRlbXA0ID0gdDUKICAgICBlbHNpZiBNSVBTCisgICAgICAgIGNvbnN0
IGVudHJ5ID0gYTAKKyAgICAgICAgY29uc3Qgdm0gPSBhMQorICAgICAgICBjb25zdCBwcm90b0Nh
bGxGcmFtZSA9IGEyCisgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSBhMworCiAgICAgICAgIGNv
bnN0IGV4dHJhU3RhY2tTcGFjZSA9IDIwCiAgICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDIg
IAogICAgICAgICBjb25zdCBwcmV2aW91c1BDID0gbHIKLSAgICAgICAgY29uc3QgZW50cnkgPSBh
MAotICAgICAgICBjb25zdCBuZXdDYWxsRnJhbWUgPSBhMQorICAgICAgICBjb25zdCB0ZW1wMSA9
IHQzCisgICAgICAgIGNvbnN0IHRlbXAyID0gdDQKKyAgICAgICAgY29uc3QgdGVtcDMgPSB0NQor
ICAgICAgICBjb25zdCB0ZW1wNCA9IHQ2CiAgICAgZWxzaWYgU0g0CisgICAgICAgIGNvbnN0IGVu
dHJ5ID0gYTAKKyAgICAgICAgY29uc3Qgdm0gPSBhMQorICAgICAgICBjb25zdCBwcm90b0NhbGxG
cmFtZSA9IGEyCisgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSBhMworCiAgICAgICAgIGNvbnN0
IGV4dHJhU3RhY2tTcGFjZSA9IDIwCiAgICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDMgIAog
ICAgICAgICBjb25zdCBwcmV2aW91c1BDID0gbHIKLSAgICAgICAgY29uc3QgZW50cnkgPSBhMAot
ICAgICAgICBjb25zdCBuZXdDYWxsRnJhbWUgPSBhMQorICAgICAgICBjb25zdCB0ZW1wMSA9IHQz
ICMgU2FtZSBhcyBwcmV2aW91c0NGUgorICAgICAgICBjb25zdCB0ZW1wMiA9IGExICMgU2FtZSBh
cyB2bQorICAgICAgICBjb25zdCB0ZW1wMyA9IHQ0CisgICAgICAgIGNvbnN0IHRlbXA0ID0gdDUK
ICAgICBlbmQKIAogICAgIGlmIFg4NgpAQCAtMjEwLDIyICsyNDQsMTExIEBAIG1hY3JvIGRvQ2Fs
bFRvSmF2YVNjcmlwdCgpCiAgICAgZnVuY3Rpb25Qcm9sb2d1ZShleHRyYVN0YWNrU3BhY2UpCiAg
ICAgaWYgWDg2CiAgICAgICAgIGxvYWRwIGV4dHJhU3RhY2tTcGFjZSsyMFtzcF0sIGVudHJ5Ci0g
ICAgICAgIGxvYWRwIGV4dHJhU3RhY2tTcGFjZSsyNFtzcF0sIG5ld0NhbGxGcmFtZQorICAgICAg
ICBsb2FkcCBleHRyYVN0YWNrU3BhY2UrMjRbc3BdLCB2bQorICAgICAgICBsb2FkcCBleHRyYVN0
YWNrU3BhY2UrMjhbc3BdLCBwcm90b0NhbGxGcmFtZQorICAgICAgICBsb2FkcCBleHRyYVN0YWNr
U3BhY2UrMzJbc3BdLCBjZnIKICAgICBlbHNlCiAgICAgICAgIG1vdmUgY2ZyLCBwcmV2aW91c0NG
UgorICAgICAgICBtb3ZlIHRvcE9mU3RhY2ssIGNmcgorICAgIGVuZAorCisgICAgc3VicCAoQ2Fs
bEZyYW1lSGVhZGVyU2xvdHMtMSkqOCwgY2ZyCisgICAgc3RvcmVwIDAsIEFyZ3VtZW50Q291bnRb
Y2ZyXQorICAgIHN0b3JlcCB2bSwgQ2FsbGVlW2Nmcl0KKyAgICBsb2FkcCBWTTo6dG9wQ2FsbEZy
YW1lW3ZtXSwgdGVtcDQKKyAgICBzdG9yZXAgdGVtcDQsIFNjb3BlQ2hhaW5bY2ZyXQorICAgIHN0
b3JlcCAxLCBDb2RlQmxvY2tbY2ZyXQorICAgIHN0b3JlcCBwcmV2aW91c1BDLCBSZXR1cm5QQ1tj
ZnJdCisgICAgc3RvcmVwIHByZXZpb3VzQ0ZSLCBDYWxsZXJGcmFtZVtjZnJdCisgICAgbW92ZSBj
ZnIsIHRlbXAxCisKKyAgICBsb2FkaSBQcm90b0NhbGxGcmFtZTo6cGFkZGVkQXJnQ291bnRbcHJv
dG9DYWxsRnJhbWVdLCB0ZW1wMgorICAgIGFkZHAgQ2FsbEZyYW1lSGVhZGVyU2xvdHMsIHRlbXAy
LCB0ZW1wMgorICAgIGxzaGlmdHAgMywgdGVtcDIKKyAgICBzdWJwIHRlbXAyLCBjZnIKKyAgICBt
b3ZlIHRlbXAxLCBDYWxsZXJGcmFtZVtjZnJdCisKKyAgICBtb3ZlIDUsIHRlbXAxCisKKy5jb3B5
SGVhZGVyTG9vcDoKKyAgICBzdWJpIDEsIHRlbXAxCisgICAgbG9hZHAgW3Byb3RvQ2FsbEZyYW1l
LCB0ZW1wMSwgOF0sIHRlbXAzCisgICAgc3RvcmVwIHRlbXAzLCBDb2RlQmxvY2tbY2ZyLCB0ZW1w
MSwgOF0KKyAgICBsb2FkcCA0W3Byb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgOF0sIHRlbXAzCisgICAg
c3RvcmVwIHRlbXAzLCBDb2RlQmxvY2srNFtjZnIsIHRlbXAxLCA4XQorICAgIGJ0aW56IHRlbXAx
LCAuY29weUhlYWRlckxvb3AKKworICAgIGxvYWRpIFByb3RvQ2FsbEZyYW1lOjphcmdDb3VudEFu
ZENvZGVPcmlnaW5WYWx1ZVtwcm90b0NhbGxGcmFtZV0sIHRlbXAyCisgICAgc3ViaSAxLCB0ZW1w
MgorICAgIGxvYWRpIFByb3RvQ2FsbEZyYW1lOjpwYWRkZWRBcmdDb3VudFtwcm90b0NhbGxGcmFt
ZV0sIHRlbXAzCisgICAgc3ViaSAxLCB0ZW1wMworCisgICAgYmllcSB0ZW1wMiwgdGVtcDMsIC5j
b3B5QXJncworICAgIG1vdmUgMCwgdGVtcDEKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdGVtcDQK
Ky5maWxsRXh0cmFBcmdzTG9vcDoKKyAgICBzdWJpIDEsIHRlbXAzCisgICAgc3RvcmVwIHRlbXAx
LCBUaGlzQXJndW1lbnRPZmZzZXQrOCtQYXlsb2FkT2Zmc2V0W2NmciwgdGVtcDMsIDhdCisgICAg
c3RvcmVwIHRlbXA0LCBUaGlzQXJndW1lbnRPZmZzZXQrOCtUYWdPZmZzZXRbY2ZyLCB0ZW1wMywg
OF0KKyAgICBiaW5lcSB0ZW1wMiwgdGVtcDMsIC5maWxsRXh0cmFBcmdzTG9vcAorCisuY29weUFy
Z3M6CisgICAgbG9hZHAgUHJvdG9DYWxsRnJhbWU6OmFyZ3NbcHJvdG9DYWxsRnJhbWVdLCB0ZW1w
MQorCisuY29weUFyZ3NMb29wOgorICAgIGJ0aXogdGVtcDIsIC5jb3B5QXJnc0RvbmUKKyAgICBz
dWJpIDEsIHRlbXAyCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0ZW1wMSwgdGVtcDIsIDhdLCB0
ZW1wMworICAgIGxvYWRwIFRhZ09mZnNldFt0ZW1wMSwgdGVtcDIsIDhdLCB0ZW1wNAorICAgIHN0
b3JlcCB0ZW1wMywgVGhpc0FyZ3VtZW50T2Zmc2V0KzgrUGF5bG9hZE9mZnNldFtjZnIsIHRlbXAy
LCA4XQorICAgIHN0b3JlcCB0ZW1wNCwgVGhpc0FyZ3VtZW50T2Zmc2V0KzgrVGFnT2Zmc2V0W2Nm
ciwgdGVtcDIsIDhdCisgICAgam1wIC5jb3B5QXJnc0xvb3AKKworLmNvcHlBcmdzRG9uZToKKyAg
ICBpZiBYODYKKyAgICAgICAgbG9hZHAgZXh0cmFTdGFja1NwYWNlKzI0W3NwXSwgdm0KICAgICBl
bmQKKyAgICBzdG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1lW3ZtXQorCisgICAgbWFrZUNhbGwo
ZW50cnksIHRlbXAxKQorCisgICAgYnBlcSBDb2RlQmxvY2tbY2ZyXSwgMSwgLmNhbGxlZUZyYW1l
UG9wcGVkCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisKKy5jYWxsZWVGcmFtZVBv
cHBlZDoKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGVtcDMKKyAgICBsb2FkcCBTY29wZUNoYWlu
W2Nmcl0sIHRlbXA0CisgICAgc3RvcmVwIHRlbXA0LCBWTTo6dG9wQ2FsbEZyYW1lW3RlbXAzXQor
ICAgIAorICAgIGRvUmV0dXJuKGV4dHJhU3RhY2tTcGFjZSkKK2VuZAorCittYWNybyBtYWtlSmF2
YVNjcmlwdENhbGwoZW50cnksIHRlbXApCisgICAgY2FsbCBlbnRyeQorZW5kCiAKLSAgICBtb3Zl
IG5ld0NhbGxGcmFtZSwgY2ZyCi0gICAgbG9hZHAgW2Nmcl0sIG5ld0NhbGxGcmFtZQotICAgIHN0
b3JlcCBwcmV2aW91c0NGUiwgW25ld0NhbGxGcmFtZV0KLSAgICBzdG9yZXAgcHJldmlvdXNQQywg
NFtuZXdDYWxsRnJhbWVdCittYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgdGVtcCkK
KyAgICBpZiBYODYKKyAgICAgICAgIyBQdXQgY2ZyIG9uIHN0YWNrIGFzIGFyZzAsIGFsc28gcHV0
IGl0IGluIGVjeCBmb3IgImZhc3RjYWxsIiB0YXJnZXRzCisgICAgICAgIHBva2UgY2ZyLCAwCisg
ICAgICAgIG1vdmUgY2ZyLCB0MgorICAgIGVsc2UKKyAgICAgICAgbW92ZSBjZnIsIGEwCisgICAg
ZW5kCiAgICAgY2FsbCBlbnRyeQorZW5kCiAKK21hY3JvIGRvUmV0dXJuRnJvbUphdmFTY3JpcHQo
ZXh0cmFTdGFja1NwYWNlKQogX3JldHVybkZyb21KYXZhU2NyaXB0OgogICAgIGZ1bmN0aW9uRXBp
bG9ndWUoZXh0cmFTdGFja1NwYWNlKQogICAgIHJldAogZW5kCiAKK21hY3JvIGRvUmV0dXJuRnJv
bUhvc3RGdW5jdGlvbihleHRyYVN0YWNrU3BhY2UpCisgICAgZnVuY3Rpb25FcGlsb2d1ZShleHRy
YVN0YWNrU3BhY2UpCisgICAgcmV0CitlbmQKKwogIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlv
dSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLiBm
cm9tV2hlcmUKICMgc2hvdWxkIGJlIGFuIGltbWVkaWF0ZSBpbnRlZ2VyIC0gYW55IGludGVnZXIg
eW91IGxpa2U7IHVzZSBpdCB0byBpZGVudGlmeSB0aGUgcGxhY2UgeW91J3JlCiAjIGRlYnVnZ2lu
ZyBmcm9tLiBvcGVyYW5kIHNob3VsZCBsaWtld2lzZSBiZSBhbiBpbW1lZGlhdGUsIGFuZCBzaG91
bGQgaWRlbnRpZnkgdGhlIG9wZXJhbmQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNTk3MjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtMTEzLDI1ICsxMTMsNDMgQEAgbWFjcm8gZnVuY3Rpb25FcGls
b2d1ZShleHRyYVN0YWNrU3BhY2UpCiAgICAgZW5kCiBlbmQKIAotbWFjcm8gZG9DYWxsVG9KYXZh
U2NyaXB0KCkKK21hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlQ2FsbCwgZG9SZXR1cm4pCiAg
ICAgaWYgWDg2XzY0CisgICAgICAgIGNvbnN0IGVudHJ5ID0gdDUKKyAgICAgICAgY29uc3Qgdm0g
PSB0NAorICAgICAgICBjb25zdCBwcm90b0NhbGxGcmFtZSA9IHQxCisgICAgICAgIGNvbnN0IHRv
cE9mU3RhY2sgPSB0MgorCiAgICAgICAgIGNvbnN0IGV4dHJhU3RhY2tTcGFjZSA9IDgKICAgICAg
ICAgY29uc3QgcHJldmlvdXNDRlIgPSB0MAogICAgICAgICBjb25zdCBwcmV2aW91c1BDID0gdDYK
LSAgICAgICAgY29uc3QgZW50cnkgPSB0NQotICAgICAgICBjb25zdCBuZXdDYWxsRnJhbWUgPSB0
NAorICAgICAgICBjb25zdCB0ZW1wMSA9IHQwCisgICAgICAgIGNvbnN0IHRlbXAyID0gdDMKKyAg
ICAgICAgY29uc3QgdGVtcDMgPSB0NgogICAgIGVsc2lmIEFSTTY0CisgICAgICAgIGNvbnN0IGVu
dHJ5ID0gYTAKKyAgICAgICAgY29uc3Qgdm0gPSBhMQorICAgICAgICBjb25zdCBwcm90b0NhbGxG
cmFtZSA9IGEyCisgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSBhMworCiAgICAgICAgIGNvbnN0
IGV4dHJhU3RhY2tTcGFjZSA9IDAKLSAgICAgICAgY29uc3QgcHJldmlvdXNDRlIgPSB0NAorICAg
ICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQzCiAgICAgICAgIGNvbnN0IHByZXZpb3VzUEMgPSBs
cgotICAgICAgICBjb25zdCBlbnRyeSA9IGEwCi0gICAgICAgIGNvbnN0IG5ld0NhbGxGcmFtZSA9
IGExCisgICAgICAgIGNvbnN0IHRlbXAxID0gdDQKKyAgICAgICAgY29uc3QgdGVtcDIgPSB0NQor
ICAgICAgICBjb25zdCB0ZW1wMyA9IHQ2CiAgICAgZWxzaWYgQ19MT09QCisgICAgICAgIGNvbnN0
IGVudHJ5ID0gYTAKKyAgICAgICAgY29uc3Qgdm0gPSBhMQorICAgICAgICBjb25zdCBwcm90b0Nh
bGxGcmFtZSA9IGEyCisgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSBhMworCiAgICAgICAgIGNv
bnN0IGV4dHJhU3RhY2tTcGFjZSA9IDAKLSAgICAgICAgY29uc3QgcHJldmlvdXNDRlIgPSB0NCAg
CisgICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDAKICAgICAgICAgY29uc3QgcHJldmlvdXNQ
QyA9IGxyCi0gICAgICAgIGNvbnN0IGVudHJ5ID0gYTAKLSAgICAgICAgY29uc3QgbmV3Q2FsbEZy
YW1lID0gYTEKKyAgICAgICAgY29uc3QgdGVtcDEgPSB0MQorICAgICAgICBjb25zdCB0ZW1wMiA9
IHQyCisgICAgICAgIGNvbnN0IHRlbXAzID0gdDMKICAgICBlbmQKIAogICAgIGlmIFg4Nl82NApA
QCAtMTQwLDE5ICsxNTgsOTcgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KCkKICAgICBtb3Zl
IGNmciwgcHJldmlvdXNDRlIKICAgICBmdW5jdGlvblByb2xvZ3VlKGV4dHJhU3RhY2tTcGFjZSkK
IAotICAgIG1vdmUgbmV3Q2FsbEZyYW1lLCBjZnIKLSAgICBsb2FkcCBbY2ZyXSwgbmV3Q2FsbEZy
YW1lCi0gICAgc3RvcmVwIHByZXZpb3VzQ0ZSLCBbbmV3Q2FsbEZyYW1lXQotICAgIHN0b3JlcCBw
cmV2aW91c1BDLCA4W25ld0NhbGxGcmFtZV0KKyAgICBtb3ZlIHRvcE9mU3RhY2ssIGNmcgorICAg
IHN1YnAgKENhbGxGcmFtZUhlYWRlclNsb3RzLTEpKjgsIGNmcgorICAgIHN0b3JlcCAwLCBBcmd1
bWVudENvdW50W2Nmcl0KKyAgICBzdG9yZXAgdm0sIENhbGxlZVtjZnJdCisgICAgbG9hZHAgVk06
OnRvcENhbGxGcmFtZVt2bV0sIHRlbXAxCisgICAgc3RvcmVwIHRlbXAxLCBTY29wZUNoYWluW2Nm
cl0KKyAgICBzdG9yZXAgMSwgQ29kZUJsb2NrW2Nmcl0KKyAgICBzdG9yZXAgcHJldmlvdXNQQywg
UmV0dXJuUENbY2ZyXQorICAgIHN0b3JlcCBwcmV2aW91c0NGUiwgQ2FsbGVyRnJhbWVbY2ZyXQor
ICAgIG1vdmUgY2ZyLCB0ZW1wMQorCisgICAgbG9hZGkgUHJvdG9DYWxsRnJhbWU6OnBhZGRlZEFy
Z0NvdW50W3Byb3RvQ2FsbEZyYW1lXSwgdGVtcDIKKyAgICBhZGRwIENhbGxGcmFtZUhlYWRlclNs
b3RzLCB0ZW1wMiwgdGVtcDIKKyAgICBsc2hpZnRwIDMsIHRlbXAyCisgICAgc3VicCB0ZW1wMiwg
Y2ZyCisgICAgbW92ZSB0ZW1wMSwgQ2FsbGVyRnJhbWVbY2ZyXQorCisgICAgbW92ZSA1LCB0ZW1w
MQorCisuY29weUhlYWRlckxvb3A6CisgICAgc3ViaSAxLCB0ZW1wMQorICAgIGxvYWRwIFtwcm90
b0NhbGxGcmFtZSwgdGVtcDEsIDhdLCB0ZW1wMworICAgIHN0b3JlcCB0ZW1wMywgQ29kZUJsb2Nr
W2NmciwgdGVtcDEsIDhdCisgICAgYnRpbnogdGVtcDEsIC5jb3B5SGVhZGVyTG9vcAorCisgICAg
bG9hZGkgUHJvdG9DYWxsRnJhbWU6OmFyZ0NvdW50QW5kQ29kZU9yaWdpblZhbHVlW3Byb3RvQ2Fs
bEZyYW1lXSwgdGVtcDIKKyAgICBzdWJpIDEsIHRlbXAyCisgICAgbG9hZGkgUHJvdG9DYWxsRnJh
bWU6OnBhZGRlZEFyZ0NvdW50W3Byb3RvQ2FsbEZyYW1lXSwgdGVtcDMKKyAgICBzdWJpIDEsIHRl
bXAzCisKKyAgICBiaWVxIHRlbXAyLCB0ZW1wMywgLmNvcHlBcmdzCisgICAgbW92ZSBWYWx1ZVVu
ZGVmaW5lZCwgdGVtcDEKKy5maWxsRXh0cmFBcmdzTG9vcDoKKyAgICBzdWJpIDEsIHRlbXAzCisg
ICAgc3RvcmVwIHRlbXAxLCBUaGlzQXJndW1lbnRPZmZzZXQrOFtjZnIsIHRlbXAzLCA4XQorICAg
IGJpbmVxIHRlbXAyLCB0ZW1wMywgLmZpbGxFeHRyYUFyZ3NMb29wCisKKy5jb3B5QXJnczoKKyAg
ICBsb2FkcCBQcm90b0NhbGxGcmFtZTo6YXJnc1twcm90b0NhbGxGcmFtZV0sIHRlbXAxCisKKy5j
b3B5QXJnc0xvb3A6CisgICAgYnRpeiB0ZW1wMiwgLmNvcHlBcmdzRG9uZQorICAgIHN1YmkgMSwg
dGVtcDIKKyAgICBsb2FkcCBbdGVtcDEsIHRlbXAyLCA4XSwgdGVtcDMKKyAgICBzdG9yZXAgdGVt
cDMsIFRoaXNBcmd1bWVudE9mZnNldCs4W2NmciwgdGVtcDIsIDhdCisgICAgam1wIC5jb3B5QXJn
c0xvb3AKKworLmNvcHlBcmdzRG9uZToKKyAgICBzdG9yZXAgY2ZyLCBWTTo6dG9wQ2FsbEZyYW1l
W3ZtXQorCiAgICAgbW92ZSAweGZmZmYwMDAwMDAwMDAwMDAsIGNzcjEKICAgICBhZGRwIDIsIGNz
cjEsIGNzcjIKKworICAgIG1ha2VDYWxsKGVudHJ5LCB0ZW1wMSkKKworICAgIGJwZXEgQ29kZUJs
b2NrW2Nmcl0sIDEsIC5jYWxsZWVGcmFtZVBvcHBlZAorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nm
cl0sIGNmcgorCisuY2FsbGVlRnJhbWVQb3BwZWQ6CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRl
bXAyCisgICAgbG9hZHAgU2NvcGVDaGFpbltjZnJdLCB0ZW1wMworICAgIHN0b3JlcCB0ZW1wMywg
Vk06OnRvcENhbGxGcmFtZVt0ZW1wMl0KKyAgICAKKyAgICBkb1JldHVybihleHRyYVN0YWNrU3Bh
Y2UpCitlbmQKKworbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5LCB0ZW1wKQogICAgIGNh
bGwgZW50cnkKK2VuZAogCittYWNybyBtYWtlSG9zdEZ1bmN0aW9uQ2FsbChlbnRyeSwgdGVtcCkK
KyAgICBtb3ZlIGVudHJ5LCB0ZW1wCisgICAgaWYgWDg2XzY0CisgICAgICAgIG1vdmUgY2ZyLCB0
NQorICAgIGVsc2lmIEFSTTY0IG9yIENfTE9PUAorICAgICAgICBtb3ZlIGNmciwgYTAKKyAgICBl
bmQKKyAgICBjYWxsIHRlbXAKK2VuZAorCittYWNybyBkb1JldHVybkZyb21KYXZhU2NyaXB0KGV4
dHJhU3RhY2tTcGFjZSkKIF9yZXR1cm5Gcm9tSmF2YVNjcmlwdDoKICAgICBmdW5jdGlvbkVwaWxv
Z3VlKGV4dHJhU3RhY2tTcGFjZSkKICAgICByZXQKIGVuZAogCittYWNybyBkb1JldHVybkZyb21I
b3N0RnVuY3Rpb24oZXh0cmFTdGFja1NwYWNlKQorICAgIGZ1bmN0aW9uRXBpbG9ndWUoZXh0cmFT
dGFja1NwYWNlKQorICAgIHJldAorZW5kCisKIG1hY3JvIHByZXBhcmVTdGF0ZUZvckNDYWxsKCkK
ICAgICBsZWFwIFtQQiwgUEMsIDhdLCBQQwogICAgIG1vdmUgUEIsIHQzCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShy
ZXZpc2lvbiAxNTk3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQyMSwxMiArNDIxLDE2IEBAIG1hY3Jv
IGRvUmV0dXJuKCkKICAgICByZXQKIGVuZAogCi0jIHN0dWIgdG8gY2FsbCBpbnRvIEphdmFTY3Jp
cHQKLSMgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlwdCh2b2lkKiBjb2RlLCBSZWdpc3Rl
ciogdG9wT2ZTdGFjaykKLSMgTm90ZSwgaWYgdGhpcyBzdHViIG9yIG9uZSBvZiBpdCdzIHJlbGF0
ZWQgbWFjcm9zIGlzIGNoYW5nZWQsIG1ha2UgdGhlCisjIHN0dWIgdG8gY2FsbCBpbnRvIEphdmFT
Y3JpcHQgb3IgTmF0aXZlIGZ1bmN0aW9ucworIyBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9KYXZhU2Ny
aXB0KHZvaWQqIGNvZGUsIFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUsIFJlZ2lz
dGVyKiB0b3BPZlN0YWNrKQorIyBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9OYXRpdmVGdW5jdGlvbih2
b2lkKiBjb2RlLCBWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lLCBSZWdpc3Rlciog
dG9wT2ZTdGFjaykKKyMgTm90ZSwgaWYgdGhlc2Ugc3R1YnMgb3Igb25lIG9mIHRoZWlyIHJlbGF0
ZWQgbWFjcm9zIGFyZSBjaGFuZ2VkLCBtYWtlIHRoZQogIyBlcXVpdmFsZW50IGNoYW5nZXMgaW4g
aml0L0pJVFN0dWJzWDg2LmggYW5kL29yIGppdC9KSVRTdHVic01TVkM2NC5hc20KIF9jYWxsVG9K
YXZhU2NyaXB0OgotICAgIGRvQ2FsbFRvSmF2YVNjcmlwdCgpCisgICAgZG9DYWxsVG9KYXZhU2Ny
aXB0KG1ha2VKYXZhU2NyaXB0Q2FsbCwgZG9SZXR1cm5Gcm9tSmF2YVNjcmlwdCkKKyAgICAKK19j
YWxsVG9OYXRpdmVGdW5jdGlvbjoKKyAgICBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUhvc3RGdW5j
dGlvbkNhbGwsIGRvUmV0dXJuRnJvbUhvc3RGdW5jdGlvbikKIAogIyBJbmRpY2F0ZSB0aGUgYmVn
aW5uaW5nIG9mIExMSW50LgogX2xsaW50X2JlZ2luOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcg
QEAgcHJpdmF0ZToKIH07CiAKIGNsYXNzIEFyZ0xpc3QgeworICAgIGZyaWVuZCBjbGFzcyBJbnRl
cnByZXRlcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwogcHVibGljOgogICAgIEFyZ0xpc3QoKQpA
QCAtMTcyLDYgKzE3Myw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdl
dFNsaWNlKGludCBzdGFydEluZGV4LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0OwogCiBwcml2YXRl
OgorICAgIEpTVmFsdWUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2FyZ3M7IH0KKwogICAgIEpT
VmFsdWUqIG1fYXJnczsKICAgICBpbnQgbV9hcmdDb3VudDsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTU5NzIyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMjAsNyArMTMyMCwxMSBAQCBzdHJ1Y3QgQVZMVHJlZUFic3RyYWN0b3JGb3JBcnJheUNvbXBh
cmUgCiAgICAgICAgICAgICBtX2NhY2hlZENhbGwtPnNldFRoaXMoanNVbmRlZmluZWQoKSk7CiAg
ICAgICAgICAgICBtX2NhY2hlZENhbGwtPnNldEFyZ3VtZW50KDAsIHZhKTsKICAgICAgICAgICAg
IG1fY2FjaGVkQ2FsbC0+c2V0QXJndW1lbnQoMSwgdmIpOworI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCiAgICAgICAgICAgICBjb21wYXJlUmVzdWx0ID0gbV9jYWNoZWRDYWxsLT5jYWxsKCkudG9O
dW1iZXIobV9jYWNoZWRDYWxsLT5uZXdDYWxsRnJhbWUobV9leGVjKSk7CisjZWxzZQorICAgICAg
ICAgICAgY29tcGFyZVJlc3VsdCA9IG1fY2FjaGVkQ2FsbC0+Y2FsbCgpLnRvTnVtYmVyKG1fZXhl
Yyk7CisjZW5kaWYKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmEpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAxNTk3MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsNyArNTA0LDExIEBAIHN0
YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGEKIAogICAgICAgICAgICAgICAg
IGNhY2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICBKU1Zh
bHVlIGpzUmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9P
UCkKICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvU3RyaW5n
KGNhY2hlZENhbGwubmV3Q2FsbEZyYW1lKGV4ZWMpKS0+dmFsdWUoZXhlYykpOworI2Vsc2UKKyAg
ICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01NDMsNyArNTQ3LDEx
IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGEKIAogICAgICAgICAg
ICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAg
ICBKU1ZhbHVlIGpzUmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7CisjaWYgRU5BQkxFKExMSU5U
X0NfTE9PUCkKICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRv
U3RyaW5nKGNhY2hlZENhbGwubmV3Q2FsbEZyYW1lKGV4ZWMpKS0+dmFsdWUoZXhlYykpOworI2Vs
c2UKKyAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9EYXRhTG9nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EYXRh
TG9nLmNwcAkocmV2aXNpb24gMTU5NzIyKQorKysgU291cmNlL1dURi93dGYvRGF0YUxvZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNkZWZp
bmUgREFUQV9MT0dfVE9fRklMRSAwCisjZGVmaW5lIERBVEFfTE9HX1RPX0ZJTEUgMQogCiAvLyBV
bmNvbW1lbnQgdG8gZm9yY2UgbG9nZ2luZyB0byB0aGUgZ2l2ZW4gZmlsZSByZWdhcmRsZXNzIG9m
IHdoYXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHNheXMuIE5vdGUgdGhhdAogLy8gd2Ugd2ls
bCBhcHBlbmQgIi48cGlkPi50eHQiIHdoZXJlIDxwaWQ+IGlzIHRoZSBQSUQuCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgJKHJldmlzaW9uIDE1OTcyMikKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc3MCw3ICs3NzAsNyBAQAogICAgYnV0IG5vdCB0cnVlIGF0IGFsbCBv
biAzMi1iaXQgcGxhdGZvcm1zIHdoZXJlIHZhbHVlcyBhcmUgY29tcG9zZWQgb2YgdHdvCiAgICBz
ZXBhcmF0ZSBzdWItdmFsdWVzLiAqLwogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKERGR19K
SVQpICYmIFVTRShKU1ZBTFVFNjQpCi0jZGVmaW5lIEVOQUJMRV9DT05DVVJSRU5UX0pJVCAxCisj
ZGVmaW5lIEVOQUJMRV9DT05DVVJSRU5UX0pJVCAwCiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBp
cyBub3QgYXZhaWxhYmxlLCBlbmFibGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218383</attachid>
            <date>2013-12-03 22:10:59 -0800</date>
            <delta_ts>2013-12-04 06:15:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>123999.patch</filename>
            <type>text/plain</type>
            <size>67281</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDEzLTEyLTAzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgdGhlIHNldHRpbmcgdXAgb2YgY2FsbGVlJ3MgY2FsbEZyYW1lIGZyb20gcHVzaEZy
YW1lIHRvIGNhbGxUb0phdmFTY3JpcHQgdGh1bmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgTExJbnQgYW5kL29yIEpJVCBlbmFibGVkIHBv
cnRzIHRvIGFsbG9jYXRlIHRoZSBzdGFjayBmcmFtZSBpbiB0aGUKKyAgICAgICAgY2FsbFRvSmF2
YVNjcmlwdCBzdHViLiAgQWRkZWQgYW4gYWRkaXRpb25hbCBzdHViLCBjYWxsVG9OYXRpdmVGdW5j
dGlvbiB0aGF0CisgICAgICAgIGFsbG9jYXRlcyBhIHN0YWNrIGZyYW1lIGluIGEgc2ltaWxhciB3
YXkgZm9yIGNhbGxpbmcgbmF0aXZlIGVudHJ5IHBvaW50cworICAgICAgICB0aGF0IHRha2UgYSBz
aW5nbGUgRXhlY1N0YXRlKiBhcmd1bWVudC4gIFRoZXNlIHN0dWJzIGFyZSBpbXBsZW1lbnRlZAor
ICAgICAgICB1c2luZyBjb21tb24gbWFjcm9zIGluIExvd0xldmVsSW50ZXJwcmV0ZXJ7MzJfNjQs
NjR9LmFzbS4gIFRoZXJlIGFyZSBhbHNvCisgICAgICAgIFdpbmRvd3MgWDg2IGFuZCBYODYtNjQg
dmVyc2lvbnMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgSml0U3R1YnNYWC5oLgorICAgICAgICBUaGUg
c3R1YnMgYWxsb2NhdGUgYW5kIGNyZWF0ZSBhIHNlbnRpbmVsIGZyYW1lLCB0aGVuIGNyZWF0ZSB0
aGUgY2FsbGVlJ3MKKyAgICAgICAgZnJhbWUsIHBvcHVsYXRpbmcgIHRoZSBoZWFkZXIgYW5kIGFy
Z3VtZW50cyBmcm9tIHRoZSBwYXNzZWQgaW4gUHJvdG9DYWxsRnJhbWUqLgorICAgICAgICBJdCBp
cyBhc3N1bWVkIHRoYXQgdGhlIGNhbGxlciBvZiBlaXRoZXIgc3R1YiBkb2VzIGEgY2hlY2sgZm9y
IGVub3VnaCBzdGFjayBzcGFjZQorICAgICAgICB2aWEgSlNTdGFjazo6ZW50cnlDaGVjaygpLgor
CisgICAgICAgIEZvciBwb3J0cyB1c2luZyB0aGUgQy1Mb29wIGludGVycHJldGVyLCB0aGUgcHJp
b3IgbWV0aG9kIGZvciBhbGxvY2F0aW5nIHN0YWNrCisgICAgICAgIGZyYW1lIGFuZCBpbnZva2lu
ZyBmdW5jdGlvbnMgaXMgdXNlZCwgbmFtZWx5IHdpdGggSlNTdGFjazo6cHVzaEZyYW1lKCkgYW5k
CisgICAgICAgIDo6cG9wRnJhbWUoKS4KKworICAgICAgICBNYWRlIHNwZWxsaW5nIGNoYW5nZXMg
InNlbnRpbmFsIiAtPiAic2VudGluZWwiLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9DYWNoZWRDYWxsLmg6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OkNhY2hlZENhbGwpOgor
ICAgICAgICAoSlNDOjpDYWNoZWRDYWxsOjpzZXRUaGlzKToKKyAgICAgICAgKEpTQzo6Q2FjaGVk
Q2FsbDo6c2V0QXJndW1lbnQpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZUNsb3N1
cmUuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lQ2xvc3VyZTo6cmVzZXRDYWxsRnJhbWUpOgor
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNr
Lmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNTdGFjazo6ZW50cnlDaGVjayk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnB1c2hGcmFt
ZSk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnBvcEZyYW1lKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9Qcm90b0NhbGxGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcm90b0NhbGxG
cmFtZTo6aW5pdCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjpjb2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpQcm90b0NhbGxGcmFtZTo6c2V0Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6UHJvdG9D
YWxsRnJhbWU6OnNldFNjb3BlKToKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OnNldENh
bGxlZSk6CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjphcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk6CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjphcmd1bWVudENvdW50KToK
KyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKToKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OnNldFBhZGRlZEFyZ3NDb3VudCk6
CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjpjbGVhckN1cnJlbnRWUEMpOgorICAgICAg
ICAoSlNDOjpQcm90b0NhbGxGcmFtZTo6c2V0VGhpc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6UHJv
dG9DYWxsRnJhbWU6OnNldEFyZ3VtZW50KToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVENvZGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6
CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRTdHVi
cy5oOgorICAgICAgICAqIGppdC9KSVRTdHVic01TVkM2NC5hc206CisgICAgICAgICogaml0L0pJ
VFN0dWJzWDg2Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuaDoKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc206CisgICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6CisgICAgICAgIChKU0M6OkFyZ0xp
c3Q6OmRhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6
OkFWTFRyZWVBYnN0cmFjdG9yRm9yQXJyYXlDb21wYXJlOjpjb21wYXJlX2tleV9rZXkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlcGxhY2VVc2luZ1JlZ0V4cFNlYXJjaCk6CisKIDIw
MTMtMTItMDMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIHRlc3Rh
cGkgdGVzdCBjcmFzaGVzIG9uIFdpbmRvd3MgaW4gV1RGOjpWZWN0b3I8d2NoYXJfdCw2NCxXVEY6
OlVuc2FmZVZlY3Rvck92ZXJmbG93Pjo6c2l6ZSgpLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTYwMDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCiAgICAg
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCiAgICAgaW50ZXJwcmV0ZXIvSlNTdGFjay5jcHAK
KyAgICBpbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAKICAgICBpbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwCiAgICAgaW50ZXJwcmV0ZXIvVk1JbnNwZWN0b3IuY3BwCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjAwNjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtNjIyLDYgKzYyMiw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2tJbmxpbmVzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1N0YWNrVmlzaXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TdGFja1Zpc2l0b3IuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oJKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ1OSw2ICs0NTksNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJc
Q2FsbEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJldGVy
XEludGVycHJldGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJl
dGVyXEpTU3RhY2suY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcUHJvdG9DYWxsRnJhbWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50
ZXJwcmV0ZXJcU3RhY2tWaXNpdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGludGVycHJldGVyXFZNSW5zcGVjdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGppdFxBc3NlbWJseUhlbHBlcnMuY3BwIiAvPgpAQCAtMTAwMyw2ICsxMDA0LDcgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEludGVycHJldGVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxKU1N0YWNrLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxKU1N0YWNrSW5saW5lcy5oIiAvPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcUHJvdG9DYWxsRnJhbWUuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXFJlZ2lzdGVyLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxTdGFja1Zpc2l0b3IuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXFZNSW5zcGVjdG9yLmgi
IC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCShyZXZpc2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcg
Y29weSkKQEAgLTI4OCw2ICsyODgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50
ZXJwcmV0ZXJcSlNTdGFjay5jcHAiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcUHJvdG9DYWxsRnJhbWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGludGVycHJl
dGVyXFN0YWNrVmlzaXRvci5jcHAiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTcyNyw2ICsxNzMwLDkgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEpTU3RhY2tJbmxpbmVzLmgiPgogICAgICAgPEZpbHRl
cj5pbnRlcnByZXRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcUHJvdG9DYWxsRnJhbWUuaCI+CisgICAgICA8RmlsdGVy
PmludGVycHJldGVyPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnRlcnByZXRlclxSZWdpc3Rlci5oIj4KICAgICAgIDxGaWx0ZXI+aW50ZXJw
cmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NzM1LDYgKzczNSw3IEBACiAJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fz
c2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUMwMjg0RjE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwICovOyB9
OwogCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODVBMTcxNzk2Njgw
MDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwICovOyB9OwogCQk2NUMwMjg1RDE3MTc5NjY4MDAz
NTFFMzUgLyogQVJNdjdET3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NUMwMjg1QjE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmgg
Ki87IH07CisJCTY1RkI1MTE3MTg0RUVFNzAwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZCNTExNjE4
NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3BwICovOyB9OwogCQk3QzE1RjY1RDE3
QzE5OUNFMDA3OTRENDAgLyogSlNQcm9taXNlQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxNUY2NUIxN0MxOTlDRTAwNzk0RDQwIC8q
IEpTUHJvbWlzZUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJN0MxNUY2NUUxN0MxOTlDRTAwNzk0RDQw
IC8qIEpTUHJvbWlzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzE1RjY1QzE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9taXNlQ2FsbGJh
Y2suaCAqLzsgfTsKIAkJN0MxODRFMUExN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzE4NEUxODE3
QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCAqLzsgfTsKQEAgLTIwMTUsNiArMjAxNiw4
IEBACiAJCTY1RUE0QzlBMDkyQUY5RTIwMDkzRDgwMCAvKiBKU0xvY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNMb2NrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJNjVFQTczNjIwQkFFMzVEMTAwMUJC
NTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25JZGVudGlmaWVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uSWRlbnRpZmllcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVGQjUxMTUxODRFRThGODAwQzEyQjcwIC8qIFBy
b3RvQ2FsbEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3RvQ2Fs
bEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1RkI1MTE2MTg0RUU5QkMw
MEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcm90b0NhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcwNEZEMzUzMDU2OTdFNkQwMDNEQkVEOSAvKiBCb29sZWFuT2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5PYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk3QzE1RjY1QjE3
QzE5OUNFMDA3OTRENDAgLyogSlNQcm9taXNlQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9taXNlQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzE1RjY1QzE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9taXNlQ2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlQ2FsbGJh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MTgsNiArMjkyMSw4IEBACiAJ
CTE0MjlENzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcw
IC8qIFByb3RvQ2FsbEZyYW1lLmNwcCAqLywKKwkJCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAg
LyogUHJvdG9DYWxsRnJhbWUuaCAqLywKIAkJCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyog
QWJzdHJhY3RQQy5jcHAgKi8sCiAJCQkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3Ry
YWN0UEMuaCAqLywKIAkJCQlBN0Y4NjkwRTBGOTU4NEExMDA1NTg2OTcgLyogQ2FjaGVkQ2FsbC5o
ICovLApAQCAtNTI3Nyw2ICs1MjgyLDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNl
OwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTY1
RkI1MTE3MTg0RUVFNzAwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkZBNTQ5NzE2Qjg4MzUwMDBCM0E5ODIgLyogQTY0RE9wY29kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWNoZWRDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhY2hlZENhbGwuaAkocmV2aXNpb24gMTYwMDY5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUu
aCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Myw5
ICs0NCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9lbnRyeVNjb3BlKGNh
bGxGcmFtZS0+dm0oKSwgZnVuY3Rpb24tPnNjb3BlKCktPmdsb2JhbE9iamVjdCgpKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAg
ICAgICAgICAgIGlmIChjYWxsRnJhbWUtPnZtKCkuaXNTYWZlVG9SZWN1cnNlKCkpCisgICAgICAg
ICAgICBpZiAoY2FsbEZyYW1lLT52bSgpLmlzU2FmZVRvUmVjdXJzZSgpKSB7CisjaWYgIUVOQUJM
RShMTElOVF9DX0xPT1ApCisgICAgICAgICAgICAgICAgbV9hcmd1bWVudHMucmVzaXplKGFyZ3Vt
ZW50Q291bnQpOworICAgICAgICAgICAgICAgIG1fY2xvc3VyZSA9IG1faW50ZXJwcmV0ZXItPnBy
ZXBhcmVGb3JSZXBlYXRDYWxsKGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKSwgY2FsbEZyYW1lLCAm
bV9wcm90b0NhbGxGcmFtZSwgZnVuY3Rpb24sIGFyZ3VtZW50Q291bnQgKyAxLCBmdW5jdGlvbi0+
c2NvcGUoKSwgbV9hcmd1bWVudHMuZGF0YSgpKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgbV9j
bG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpz
RXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVu
Y3Rpb24tPnNjb3BlKCkpOwotICAgICAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUp
OwogICAgICAgICAgICAgbV92YWxpZCA9ICFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpOwogICAg
ICAgICB9CkBAIC01NSw2ICs2MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFT
U0VSVChtX3ZhbGlkKTsKICAgICAgICAgICAgIHJldHVybiBtX2ludGVycHJldGVyLT5leGVjdXRl
KG1fY2xvc3VyZSk7CiAgICAgICAgIH0KKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAg
ICAgdm9pZCBzZXRUaGlzKEpTVmFsdWUgdikgeyBtX3Byb3RvQ2FsbEZyYW1lLnNldFRoaXNWYWx1
ZSh2KTsgfQorICAgICAgICB2b2lkIHNldEFyZ3VtZW50KGludCBuLCBKU1ZhbHVlIHYpIHsgbV9w
cm90b0NhbGxGcmFtZS5zZXRBcmd1bWVudChuLCB2KTsgfQorI2Vsc2UKICAgICAgICAgdm9pZCBz
ZXRUaGlzKEpTVmFsdWUgdikgeyBtX2Nsb3N1cmUuc2V0VGhpcyh2KTsgfQogICAgICAgICB2b2lk
IHNldEFyZ3VtZW50KGludCBuLCBKU1ZhbHVlIHYpIHsgbV9jbG9zdXJlLnNldEFyZ3VtZW50KG4s
IHYpOyB9CiAKQEAgLTcwLDExICs4MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IGlmIChtX3ZhbGlkKQogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXItPmVuZFJlcGVhdENh
bGwobV9jbG9zdXJlKTsKICAgICAgICAgfQotICAgICAgICAKKyNlbmRpZgorCiAgICAgcHJpdmF0
ZToKICAgICAgICAgYm9vbCBtX3ZhbGlkOwogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnBy
ZXRlcjsKICAgICAgICAgVk1FbnRyeVNjb3BlIG1fZW50cnlTY29wZTsKKyNpZiAhRU5BQkxFKExM
SU5UX0NfTE9PUCkKKyAgICAgICAgUHJvdG9DYWxsRnJhbWUgbV9wcm90b0NhbGxGcmFtZTsKKyAg
ICAgICAgVmVjdG9yPEpTVmFsdWU+IG1fYXJndW1lbnRzOworI2VuZGlmCiAgICAgICAgIENhbGxG
cmFtZUNsb3N1cmUgbV9jbG9zdXJlOwogICAgIH07CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lQ2xvc3VyZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWVDbG9zdXJlLmgJKHJldmlzaW9u
IDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWVD
bG9zdXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBzdHJ1Y3QgQ2FsbEZyYW1lQ2xvc3VyZSB7CiAgICAgQ2FsbEZyYW1lKiBvbGRDYWxsRnJh
bWU7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFt
ZTsKKyNlbHNlCisgICAgUHJvdG9DYWxsRnJhbWUqIG5ld0NhbGxGcmFtZTsKKyNlbmRpZgogICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25F
eGVjdXRhYmxlOwogICAgIFZNKiB2bTsKQEAgLTUxLDEyICs1NSwxNCBAQCBzdHJ1Y3QgQ2FsbEZy
YW1lQ2xvc3VyZSB7CiAgICAgdm9pZCByZXNldENhbGxGcmFtZSgpCiAgICAgewogICAgICAgICBu
ZXdDYWxsRnJhbWUtPnNldFNjb3BlKHNjb3BlKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQog
ICAgICAgICAvLyBzZXRBcmd1bWVudCgpIHRha2VzIGFuIGFyZyBpbmRleCB0aGF0IHN0YXJ0cyBm
cm9tIDAgZm9yIHRoZSBmaXJzdAogICAgICAgICAvLyBhcmd1bWVudCBhZnRlciB0aGUgJ3RoaXMn
IHZhbHVlLiBTaW5jZSBib3RoIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzCiAgICAgICAgIC8v
IGFuZCBwYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXMgaW5jbHVkZXMgdGhlICd0aGlzJyB2YWx1
ZSwgd2UgbmVlZCB0bwotICAgICAgICAvLyBzdWJ0cmFjdCAxIGZyb20gdGhlbSB0byBtYWtlIGkg
YSB2YWxpZCBhcmd1bWVudCBpbmRleCBmb3Igc2V0QXJndW1lbnQoKS4KKyAgICAgICAgLy8gc3Vi
dHJhY3QgMSBmcm9tIHRoZW0gdG8gbWFrZSBpdCBhIHZhbGlkIGFyZ3VtZW50IGluZGV4IGZvciBz
ZXRBcmd1bWVudCgpLgogICAgICAgICBmb3IgKGludCBpID0gYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMtMTsgaSA8IHBhcmFtZXRlckNvdW50SW5jbHVkaW5nVGhpcy0xOyArK2kpCiAgICAgICAg
ICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGpzVW5kZWZpbmVkKCkpOworI2VuZGlm
CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MywxMiArNTMsMTQgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTV2l0aFNj
b3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgi
CiAjaW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgi
CiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUg
IlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAi
UmVnRXhwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKQEAgLTg2MCwxMiArODYy
LDIwIEBAIGZhaWxlZEpTT05QOgogCiAgICAgLy8gUHVzaCB0aGUgY2FsbCBmcmFtZSBmb3IgdGhp
cyBpbnZvY2F0aW9uOgogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSAx
KTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQog
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gbV9zdGFjay5wdXNoRnJhbWUoY2FsbEZyYW1l
LCBjb2RlQmxvY2ssIHNjb3BlLCAxLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NhbGxGcmFt
ZSkpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZSkpOwogCiAgICAgLy8gU2V0IHRoZSBhcmd1bWVudHMgZm9yIHRoZSBjYWxsZWU6
CiAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc09iaik7CisjZWxzZQorICAgIGlm
IChVTkxJS0VMWSghbV9zdGFjay5lbnRyeUNoZWNrKGNvZGVCbG9jaywgMSkpKQorICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsK
KworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZyYW1l
LmluaXQoY29kZUJsb2NrLCBzY29wZSwgMCwgdGhpc09iaiwgMSk7CisjZW5kaWYKIAogICAgIGlm
IChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAg
ICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgcHJvZ3JhbS0+c291cmNlVVJMKCks
IHByb2dyYW0tPmxpbmVObygpKTsKQEAgLTg3OSwxNCArODg5LDE2IEBAIGZhaWxlZEpTT05QOgog
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIHJlc3VsdCA9IExMSW50OjpDTG9vcDo6
ZXhlY3V0ZShuZXdDYWxsRnJhbWUsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOwogI2VsaWYgRU5B
QkxFKEpJVCkKLSAgICAgICAgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVkSklUQ29kZSgpLT5l
eGVjdXRlKCZtX3N0YWNrLCBuZXdDYWxsRnJhbWUsICZ2bSk7CisgICAgICAgIHJlc3VsdCA9IHBy
b2dyYW0tPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSwg
bV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgfQog
CiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigp
KQogICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIHByb2dyYW0tPnNvdXJj
ZVVSTCgpLCBwcm9ncmFtLT5saW5lTm8oKSk7CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQog
ICAgIG1fc3RhY2sucG9wRnJhbWUobmV3Q2FsbEZyYW1lKTsKKyNlbmRpZgogCiAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KQEAgLTkzMCw2ICs5NDIsNyBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgaWYgKFVOTElLRUxZKHZtLndhdGNo
ZG9nLmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hGcmFtZShjYWxsRnJh
bWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgZnVuY3Rpb24pOwogICAgIGlmIChV
TkxJS0VMWSghbmV3Q2FsbEZyYW1lKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CkBAIC05MzgsNiArOTUxLDEzIEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICBuZXdDYWxsRnJhbWUt
PnNldFRoaXNWYWx1ZSh0aGlzVmFsdWUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJn
cy5zaXplKCk7ICsraSkKICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBhcmdz
LmF0KGkpKTsKKyNlbHNlCisgICAgaWYgKFVOTElLRUxZKCFtX3N0YWNrLmVudHJ5Q2hlY2sobmV3
Q29kZUJsb2NrLCBhcmdzQ291bnQpKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisKKyAgICBQcm90b0NhbGxGcmFtZSBw
cm90b0NhbGxGcmFtZTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVCbG9jaywgc2Nv
cGUsIGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOworI2VuZGlm
CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVy
KCkpCiAgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUsIGZ1bmN0aW9uKTsK
QEAgLTk1MiwxNiArOTcyLDIzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENh
bGxGcmEKICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICAgICAgcmVzdWx0ID0gTExJ
bnQ6OkNMb29wOjpleGVjdXRlKG5ld0NhbGxGcmFtZSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
cHJvbG9ndWUpOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxE
YXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhl
Y3V0ZSgmbV9zdGFjaywgbmV3Q2FsbEZyYW1lLCAmdm0pOworICAgICAgICAgICAgcmVzdWx0ID0g
Y2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgp
LT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lLCBtX3N0YWNrLmdldFRvcE9mU3RhY2soKSk7
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKLSAgICAgICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSB7
CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6
OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24obmV3Q2FsbEZyYW1lKSk7CisjZWxzZQor
ICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxUb05hdGl2ZUZ1bmN0aW9u
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiksICZ2bS50
b3BDYWxsRnJhbWUsICZwcm90b0NhbGxGcmFtZSwgbV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpKTsK
KyNlbmRpZgorICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9m
aWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0
ZShjYWxsRnJhbWUsIGZ1bmN0aW9uKTsKIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAg
bV9zdGFjay5wb3BGcmFtZShuZXdDYWxsRnJhbWUpOworI2VuZGlmCiAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4ocmVzdWx0KTsKIH0KIApAQCAtMTAwNSw3ICsxMDMyLDcgQEAgSlNPYmplY3QqIElu
dGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogCiAgICAgaWYgKFVOTElLRUxZKHZtLndhdGNo
ZG9nLmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKLQorI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hGcmFtZShjYWxsRnJh
bWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgY29uc3RydWN0b3IpOwogICAgIGlm
IChVTkxJS0VMWSghbmV3Q2FsbEZyYW1lKSkKICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CkBAIC0xMDE0LDYgKzEwNDEsMTMg
QEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogICAgIG5ld0NhbGxG
cmFtZS0+c2V0VGhpc1ZhbHVlKGpzVW5kZWZpbmVkKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYXJncy5zaXplKCk7ICsraSkKICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1bWVu
dChpLCBhcmdzLmF0KGkpKTsKKyNlbHNlCisgICAgaWYgKFVOTElLRUxZKCFtX3N0YWNrLmVudHJ5
Q2hlY2sobmV3Q29kZUJsb2NrLCBhcmdzQ291bnQpKSkKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisKKyAgICBQcm90b0Nh
bGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0NvZGVC
bG9jaywgc2NvcGUsIGNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBhcmdzQ291bnQsIGFyZ3Mu
ZGF0YSgpKTsKKyNlbmRpZgogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZt
LmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2FsbEZy
YW1lLCBjb25zdHJ1Y3Rvcik7CkBAIC0xMDI4LDIyICsxMDYyLDI1IEBAIEpTT2JqZWN0KiBJbnRl
cnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAg
ICAgICAgICAgcmVzdWx0ID0gTExJbnQ6OkNMb29wOjpleGVjdXRlKG5ld0NhbGxGcmFtZSwgbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7CiAjZWxpZiBFTkFCTEUoSklUKQot
ICAgICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKS0+ZXhlY3V0ZSgmbV9zdGFjaywgbmV3Q2Fs
bEZyYW1lLCAmdm0pOworICAgICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RGF0YS5qcy5mdW5j
dGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKS0+ZXhlY3V0ZSgm
dm0sICZwcm90b0NhbGxGcmFtZSwgbV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpOwogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAgICAgICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
ICAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2
ZS5mdW5jdGlvbihuZXdDYWxsRnJhbWUpKTsKLSAgICAgICAgICAgIGlmICghY2FsbEZyYW1lLT5o
YWRFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVz
dWx0LmlzT2JqZWN0KCksICJIb3N0IGNvbnN0cnVjdG9yIHJldHVybmVkIG5vbiBvYmplY3QuIik7
Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKLSAgICAgICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IobmV3Q2FsbEZyYW1lKTsKLSAgICAgICAgICAgIH0KKyNlbHNl
CisgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbFRvTmF0aXZlRnVuY3Rp
b24ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24p
LCAmdm0udG9wQ2FsbEZyYW1lLCAmcHJvdG9DYWxsRnJhbWUsIG1fc3RhY2suZ2V0VG9wT2ZTdGFj
aygpKSk7CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNPYmplY3QoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0u
ZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFt
ZSwgY29uc3RydWN0b3IpOwogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBtX3N0YWNr
LnBvcEZyYW1lKG5ld0NhbGxGcmFtZSk7CisjZW5kaWYKIAogICAgIGlmIChjYWxsRnJhbWUtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNTEsNyArMTA4OCwxMSBAQCBK
U09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4oYXNPYmplY3QocmVzdWx0KSk7CiB9CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQogQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBK
U1Njb3BlKiBzY29wZSkKKyNlbHNlCitDYWxsRnJhbWVDbG9zdXJlIEludGVycHJldGVyOjpwcmVw
YXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFByb3RvQ2FsbEZyYW1lKiBwcm90b0NhbGxGcmFtZSwgSlNG
dW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSlNTY29w
ZSogc2NvcGUsIEpTVmFsdWUqIGFyZ3MpCisjZW5kaWYKIHsKICAgICBWTSYgdm0gPSAqc2NvcGUt
PnZtKCk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CkBAIC0xMDcwLDE5ICsxMTExLDI2
IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIAogICAgIHNpemVf
dCBhcmdzQ291bnQgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKIAotICAgIENhbGxGcmFt
ZSogbmV3Q2FsbEZyYW1lID0gbV9zdGFjay5wdXNoRnJhbWUoY2FsbEZyYW1lLCBuZXdDb2RlQmxv
Y2ssIHNjb3BlLCBhcmdzQ291bnQsIGZ1bmN0aW9uKTsgIAorI2lmIEVOQUJMRShMTElOVF9DX0xP
T1ApCisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hGcmFtZShjYWxs
RnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgZnVuY3Rpb24pOworCiAgICAg
aWYgKFVOTElLRUxZKCFuZXdDYWxsRnJhbWUpKSB7CiAgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAg
ICAgfQogCi0gICAgaWYgKFVOTElLRUxZKCFuZXdDYWxsRnJhbWUpKSB7CisgICAgLy8gUmV0dXJu
IHRoZSBzdWNjZXNzZnVsIGNsb3N1cmU6CisgICAgQ2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQgPSB7
IGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25FeGVjdXRhYmxlLCAm
dm0sIHNjb3BlLCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgfTsKKyNlbHNlCisgICAgaWYgKFVOTElLRUxZKCFtX3N0YWNrLmVudHJ5Q2hl
Y2sobmV3Q29kZUJsb2NrLCBhcmdzQ291bnQpKSkgewogICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gQ2FsbEZyYW1lQ2xvc3VyZSgpOwog
ICAgIH0KIAorICAgIHByb3RvQ2FsbEZyYW1lLT5pbml0KG5ld0NvZGVCbG9jaywgc2NvcGUsIGZ1
bmN0aW9uLCBqc1VuZGVmaW5lZCgpLCBhcmdzQ291bnQsIGFyZ3MpOwogICAgIC8vIFJldHVybiB0
aGUgc3VjY2Vzc2Z1bCBjbG9zdXJlOgotICAgIENhbGxGcmFtZUNsb3N1cmUgcmVzdWx0ID0geyBj
YWxsRnJhbWUsIG5ld0NhbGxGcmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgJnZt
LCBzY29wZSwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIH07CisgICAgQ2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwg
cHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBmdW5jdGlvbkV4ZWN1dGFibGUsICZ2bSwgc2NvcGUs
IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyB9OworI2VuZGlmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA5Niw5ICsxMTQ0LDEz
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOwogCiAgICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9p
bnQ7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBtX3N0YWNrLnZhbGlkYXRlRmVuY2Uo
Y2xvc3VyZS5uZXdDYWxsRnJhbWUsICJCRUZPUkUiKTsKKyNlbmRpZgogICAgIGNsb3N1cmUucmVz
ZXRDYWxsRnJhbWUoKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgIG1fc3RhY2sudmFs
aWRhdGVGZW5jZShjbG9zdXJlLm5ld0NhbGxGcmFtZSwgIlNURVAgMSIpOworI2VuZGlmCiAKICAg
ICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAg
ICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjbG9zdXJlLm9sZENhbGxGcmFtZSwgY2xvc3Vy
ZS5mdW5jdGlvbik7CkBAIC0xMTE0LDcgKzExNjYsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlKENhbGxGcmFtZUNsCiAgICAgLy8gSGVuY2UsIHdlIG5lZWQgdG8gcHJlc2VydmUgdGhl
IHRvcENhbGxGcmFtZSBoZXJlIG91cnNlbHZlcyBiZWZvcmUKICAgICAvLyByZXBlYXRpbmcgdGhp
cyBjYWxsIG9uIGEgc2Vjb25kIGNhbGxiYWNrIGZ1bmN0aW9uLgogCisjaWYgRU5BQkxFKExMSU5U
X0NfTE9PUCkKICAgICBUb3BDYWxsRnJhbWVTZXR0ZXIgdG9wQ2FsbEZyYW1lKHZtLCBjbG9zdXJl
Lm5ld0NhbGxGcmFtZSk7CisjZW5kaWYKIAogICAgIC8vIEV4ZWN1dGUgdGhlIGNvZGU6CiAgICAg
SlNWYWx1ZSByZXN1bHQ7CkBAIC0xMTI1LDIxICsxMTc5LDI1IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAg
ICByZXN1bHQgPSBMTEludDo6Q0xvb3A6OmV4ZWN1dGUoY2xvc3VyZS5uZXdDYWxsRnJhbWUsIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAg
ICAgIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2Rl
Rm9yQ2FsbCgpLT5leGVjdXRlKCZtX3N0YWNrLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSwgJnZtKTsK
KyAgICAgICAgcmVzdWx0ID0gY2xvc3VyZS5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJ
VENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSwgbV9zdGFj
ay5nZXRUb3BPZlN0YWNrKCkpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgfQogCiAgICAg
aWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAg
ICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjbG9zdXJlLm9sZENhbGxGcmFtZSwgY2xvc3VyZS5m
dW5jdGlvbik7CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgIG1fc3RhY2sudmFsaWRh
dGVGZW5jZShjbG9zdXJlLm5ld0NhbGxGcmFtZSwgIkFGVEVSIik7CisjZW5kaWYKICAgICByZXR1
cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
IHZvaWQgSW50ZXJwcmV0ZXI6OmVuZFJlcGVhdENhbGwoQ2FsbEZyYW1lQ2xvc3VyZSYgY2xvc3Vy
ZSkKIHsKICAgICBtX3N0YWNrLnBvcEZyYW1lKGNsb3N1cmUubmV3Q2FsbEZyYW1lKTsKIH0KKyNl
bmRpZgogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFs
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqIHNjb3Bl
KQogewpAQCAtMTIwMywxMiArMTI2MSwyMCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
KEV2YWxFeGVjdXRhCiAKICAgICAvLyBQdXNoIHRoZSBmcmFtZToKICAgICBBU1NFUlQoY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhpcycuCisj
aWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IG1f
c3RhY2sucHVzaEZyYW1lKGNhbGxGcmFtZSwgY29kZUJsb2NrLCBzY29wZSwgMSwgMCk7CiAgICAg
aWYgKFVOTElLRUxZKCFuZXdDYWxsRnJhbWUpKQogICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKIAogICAgIC8vIFNldCB0aGUg
YXJndW1lbnRzIGZvciB0aGUgY2FsbGVlOgogICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1ZhbHVl
KHRoaXNWYWx1ZSk7CisjZWxzZQorICAgIGlmIChVTkxJS0VMWSghbV9zdGFjay5lbnRyeUNoZWNr
KGNvZGVCbG9jaywgMSkpKQorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKKworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2Fs
bEZyYW1lOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBzY29wZSwgMCwgdGhp
c1ZhbHVlLCAxKTsKKyNlbmRpZgogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9
IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+d2lsbEV4ZWN1dGUoY2Fs
bEZyYW1lLCBldmFsLT5zb3VyY2VVUkwoKSwgZXZhbC0+bGluZU5vKCkpOwpAQCAtMTIyMiwxNCAr
MTI4OCwxNiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAjaWYg
RU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgcmVzdWx0ID0gTExJbnQ6OkNMb29wOjpleGVj
dXRlKG5ld0NhbGxGcmFtZSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7CiAjZWxpZiBFTkFCTEUoSklU
KQotICAgICAgICByZXN1bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCktPmV4ZWN1dGUoJm1f
c3RhY2ssIG5ld0NhbGxGcmFtZSwgJnZtKTsKKyAgICAgICAgcmVzdWx0ID0gZXZhbC0+Z2VuZXJh
dGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lLCBtX3N0YWNrLmdldFRv
cE9mU3RhY2soKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICB9CiAKICAgICBpZiAoTGVn
YWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHBy
b2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXZhbC0+c291cmNlVVJMKCksIGV2YWwtPmxp
bmVObygpKTsKIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgbV9zdGFjay5wb3BGcmFt
ZShuZXdDYWxsRnJhbWUpOworI2VuZGlmCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgJKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBDYWxsRnJhbWVDbG9zdXJlOwogICAgIHN0cnVj
dCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci0gICAgCisgICAgc3RydWN0
IFByb3RvQ2FsbEZyYW1lOworCiAgICAgZW51bSBEZWJ1Z0hvb2tJRCB7CiAgICAgICAgIFdpbGxF
eGVjdXRlUHJvZ3JhbSwKICAgICAgICAgRGlkRXhlY3V0ZVByb2dyYW0sCkBAIC0yNTYsOCArMjU3
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGVudW0gRXhlY3V0
aW9uRmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwogCisjaWYgIUVOQUJMRShM
TElOVF9DX0xPT1ApCisgICAgICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFyZUZvclJlcGVhdENh
bGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxsRnJhbWUqLCBKU0Z1
bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiwgSlNWYWx1
ZSopOworI2Vsc2UKICAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJlRm9yUmVwZWF0Q2Fs
bChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKik7CiAgICAgICAgIHZvaWQgZW5kUmVwZWF0
Q2FsbChDYWxsRnJhbWVDbG9zdXJlJik7CisjZW5kaWYKICAgICAgICAgSlNWYWx1ZSBleGVjdXRl
KENhbGxGcmFtZUNsb3N1cmUmKTsKIAogICAgICAgICB2b2lkIGdldFN0YWNrVHJhY2UoVmVjdG9y
PFN0YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSlNTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9KU1N0YWNrLmgJKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFnZVJlc2VydmF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZN
VGFncy5oPgogCisjZGVmaW5lIEVOQUJMRV9ERUJVR19KU1NUQUNLIDAKICNpZiAhZGVmaW5lZChO
REVCVUcpICYmICFkZWZpbmVkKEVOQUJMRV9ERUJVR19KU1NUQUNLKQogI2RlZmluZSBFTkFCTEVf
REVCVUdfSlNTVEFDSyAxCiAjZW5kaWYKQEAgLTk5LDYgKzEwMCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWdpc3RlciogZ2V0U3RhcnRPZkZyYW1lKENhbGxGcmFtZSopOwogICAgICAg
ICBSZWdpc3RlciogZ2V0VG9wT2ZTdGFjaygpOwogCisgICAgICAgIGJvb2wgZW50cnlDaGVjayhj
bGFzcyBDb2RlQmxvY2sqLCBpbnQpOworCiAgICAgICAgIENhbGxGcmFtZSogcHVzaEZyYW1lKENh
bGxGcmFtZSogY2FsbGVyRnJhbWUsIGNsYXNzIENvZGVCbG9jayosCiAgICAgICAgICAgICBKU1Nj
b3BlKiwgaW50IGFyZ3NDb3VudCwgSlNPYmplY3QqIGNhbGxlZSk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCShyZXZp
c2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFj
a0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsMzUgQEAgaW5saW5lIFJlZ2lz
dGVyKiBKU1N0YWNrOjpnZXRTdGFydE9mRnJhbQogICAgIHJldHVybiBnZXRUb3BPZkZyYW1lKGNh
bGxlckZyYW1lKTsKIH0KIAoraW5saW5lIGJvb2wgSlNTdGFjazo6ZW50cnlDaGVjayhjbGFzcyBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IGFyZ3NDb3VudCkKK3sKKyAgICBSZWdpc3Rlciogb2xk
RW5kID0gZ2V0VG9wT2ZTdGFjaygpOworCisgICAgLy8gRW5zdXJlIHRoYXQgd2UgaGF2ZSBlbm91
Z2ggc3BhY2UgZm9yIHRoZSBwYXJhbWV0ZXJzOgorICAgIHNpemVfdCBwYWRkZWRBcmdzQ291bnQg
PSBhcmdzQ291bnQ7CisgICAgaWYgKGNvZGVCbG9jaykgeworICAgICAgICBzaXplX3QgbnVtUGFy
YW1ldGVycyA9IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOworICAgICAgICBpZiAocGFkZGVk
QXJnc0NvdW50IDwgbnVtUGFyYW1ldGVycykKKyAgICAgICAgICAgIHBhZGRlZEFyZ3NDb3VudCA9
IG51bVBhcmFtZXRlcnM7CisgICAgfQorCisgICAgUmVnaXN0ZXIqIG5ld0NhbGxGcmFtZVNsb3Qg
PSBvbGRFbmQgLSBwYWRkZWRBcmdzQ291bnQgLSAoMiAqIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRl
clNpemUpICsgMTsKKworI2lmIEVOQUJMRShERUJVR19KU1NUQUNLKQorICAgIG5ld0NhbGxGcmFt
ZVNsb3QgLT0gSlNTdGFjazo6RmVuY2VTaXplOworI2VuZGlmCisKKyAgICBSZWdpc3RlciogbmV3
RW5kID0gbmV3Q2FsbEZyYW1lU2xvdDsKKyAgICBpZiAoISFjb2RlQmxvY2spCisgICAgICAgIG5l
d0VuZCArPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChjb2RlQmxvY2stPmZyYW1lUmVnaXN0ZXJD
b3VudCgpKS5vZmZzZXQoKTsKKworICAgIC8vIEVuc3VyZSB0aGF0IHdlIGhhdmUgdGhlIG5lZWRl
ZCBzdGFjayBjYXBhY2l0eSB0byBwdXNoIHRoZSBuZXcgZnJhbWU6CisgICAgaWYgKCFncm93KG5l
d0VuZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBp
bmxpbmUgQ2FsbEZyYW1lKiBKU1N0YWNrOjpwdXNoRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFt
ZSwKICAgICBjbGFzcyBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNTY29wZSogc2NvcGUsIGludCBh
cmdzQ291bnQsIEpTT2JqZWN0KiBjYWxsZWUpCiB7CkBAIC03OSw5ICsxMDgsOSBAQCBpbmxpbmUg
Q2FsbEZyYW1lKiBKU1N0YWNrOjpwdXNoRnJhbWUoQ2FsCiAgICAgaWYgKCFncm93KG5ld0VuZCkp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLy8gQ29tcHV0ZSB0aGUgYWRkcmVzcyBvZiB0aGUg
bmV3IFZNIHNlbnRpbmFsIGZyYW1lIGZvciB0aGlzIGludm9jYXRpb246Ci0gICAgQ2FsbEZyYW1l
KiBuZXdWTUVudHJ5U2VudGluYWxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxGcmFt
ZVNsb3QgKyBwYWRkZWRBcmdzQ291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsK
LSAgICBBU1NFUlQoISFuZXdWTUVudHJ5U2VudGluYWxGcmFtZSk7CisgICAgLy8gQ29tcHV0ZSB0
aGUgYWRkcmVzcyBvZiB0aGUgbmV3IFZNIHNlbnRpbmVsIGZyYW1lIGZvciB0aGlzIGludm9jYXRp
b246CisgICAgQ2FsbEZyYW1lKiBuZXdWTUVudHJ5U2VudGluZWxGcmFtZSA9IENhbGxGcmFtZTo6
Y3JlYXRlKG5ld0NhbGxGcmFtZVNsb3QgKyBwYWRkZWRBcmdzQ291bnQgKyBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplKTsKKyAgICBBU1NFUlQoISFuZXdWTUVudHJ5U2VudGluZWxGcmFtZSk7
CiAKICAgICAvLyBDb21wdXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBuZXcgZnJhbWUgZm9yIHRoaXMg
aW52b2NhdGlvbjoKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3Jl
YXRlKG5ld0NhbGxGcmFtZVNsb3QpOwpAQCAtOTIsMTEgKzEyMSwxMSBAQCBpbmxpbmUgQ2FsbEZy
YW1lKiBKU1N0YWNrOjpwdXNoRnJhbWUoQ2FsCiAgICAgLy8gdGhlIHRvcCBmcmFtZSBvbiB0aGUg
c3RhY2suCiAgICAgY2FsbGVyRnJhbWUgPSBtX3RvcENhbGxGcmFtZTsKIAotICAgIC8vIEluaXRp
YWxpemUgdGhlIFZNIHNlbnRpbmFsIGZyYW1lIGhlYWRlcjoKLSAgICBuZXdWTUVudHJ5U2VudGlu
YWxGcmFtZS0+aW5pdGlhbGl6ZVZNRW50cnlTZW50aW5lbEZyYW1lKGNhbGxlckZyYW1lKTsKKyAg
ICAvLyBJbml0aWFsaXplIHRoZSBWTSBzZW50aW5lbCBmcmFtZSBoZWFkZXI6CisgICAgbmV3Vk1F
bnRyeVNlbnRpbmVsRnJhbWUtPmluaXRpYWxpemVWTUVudHJ5U2VudGluZWxGcmFtZShjYWxsZXJG
cmFtZSk7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBjYWxsZWUgZnJhbWUgaGVhZGVyOgotICAg
IG5ld0NhbGxGcmFtZS0+aW5pdChjb2RlQmxvY2ssIDAsIHNjb3BlLCBuZXdWTUVudHJ5U2VudGlu
YWxGcmFtZSwgYXJnc0NvdW50LCBjYWxsZWUpOworICAgIG5ld0NhbGxGcmFtZS0+aW5pdChjb2Rl
QmxvY2ssIDAsIHNjb3BlLCBuZXdWTUVudHJ5U2VudGluZWxGcmFtZSwgYXJnc0NvdW50LCBjYWxs
ZWUpOwogCiAgICAgQVNTRVJUKCEhbmV3Q2FsbEZyYW1lLT5zY29wZSgpKTsKIApAQCAtMTIwLDcg
KzE0OSw3IEBAIGlubGluZSB2b2lkIEpTU3RhY2s6OnBvcEZyYW1lKENhbGxGcmFtZSoKIHsKICAg
ICB2YWxpZGF0ZUZlbmNlKGZyYW1lLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKTsKIAotICAgIC8v
IFBvcCBvZmYgdGhlIGNhbGxlZSBmcmFtZSBhbmQgdGhlIHNlbnRpbmFsIGZyYW1lLgorICAgIC8v
IFBvcCBvZmYgdGhlIGNhbGxlZSBmcmFtZSBhbmQgdGhlIHNlbnRpbmVsIGZyYW1lLgogICAgIENh
bGxGcmFtZSogY2FsbGVyRnJhbWUgPSBmcmFtZS0+Y2FsbGVyRnJhbWUoKS0+dm1FbnRyeVNlbnRp
bmVsQ2FsbGVyRnJhbWUoKTsKIAogICAgIC8vIFBvcCB0byB0aGUgY2FsbGVyOgpAQCAtMTgzLDcg
KzIxMiw3IEBAIGlubGluZSBKU1ZhbHVlIEpTU3RhY2s6OmdlbmVyYXRlRmVuY2VWYWwKIC8vICAg
ICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fAogLy8gICAgICAgICAgICAgICAgICAgICB8ICoqKiB0aGUgRmVuY2UgKioqICAgICAgICAgICAg
ICAgICAgICB8CiAvLyAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwKLS8vICAgICAgICAgICAgICAgICAgICAgfCBWTSBlbnRyeSBzZW50
aW5hbCBmcmFtZSBoZWFkZXIgICAgICAgfAorLy8gICAgICAgICAgICAgICAgICAgICB8IFZNIGVu
dHJ5IHNlbnRpbmVsIGZyYW1lIGhlYWRlciAgICAgICB8CiAvLyAgICAgICAgICAgICAgICAgICAg
IHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKIC8vICAgICAgICAgICAg
ICAgICAgICAgfCBBcmdzIG9mIG5ldyBmcmFtZSAgICAgICAgICAgICAgICAgICAgfAogLy8gICAg
ICAgICAgICAgICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90
b0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCisKKyNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUHJvdG9DYWxsRnJhbWU6Omlu
aXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBKU09iamVjdCogY2FsbGVl
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhpcywgSlNWYWx1ZSog
b3RoZXJBcmdzKQoreworICAgIHRoaXMtPmFyZ3MgPSBvdGhlckFyZ3M7CisgICAgdGhpcy0+c2V0
Q29kZUJsb2NrKGNvZGVCbG9jayk7CisgICAgdGhpcy0+c2V0U2NvcGUoc2NvcGUpOworICAgIHRo
aXMtPnNldENhbGxlZShjYWxsZWUpOworICAgIHRoaXMtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgc2l6ZV90IHBhZGRlZEFyZ3NDb3Vu
dCA9IGFyZ0NvdW50SW5jbHVkaW5nVGhpczsKKyAgICBpZiAoY29kZUJsb2NrKSB7CisgICAgICAg
IHNpemVfdCBudW1QYXJhbWV0ZXJzID0gY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7CisgICAg
ICAgIGlmIChwYWRkZWRBcmdzQ291bnQgPCBudW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgcGFk
ZGVkQXJnc0NvdW50ID0gbnVtUGFyYW1ldGVyczsKKyAgICB9CisgICAgdGhpcy0+c2V0UGFkZGVk
QXJnc0NvdW50KHBhZGRlZEFyZ3NDb3VudCk7CisgICAgdGhpcy0+Y2xlYXJDdXJyZW50VlBDKCk7
CisgICAgdGhpcy0+c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2FsbEZy
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1By
b3RvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQ
cm90b0NhbGxGcmFtZV9oCisjZGVmaW5lIFByb3RvQ2FsbEZyYW1lX2gKKworI2luY2x1ZGUgIlJl
Z2lzdGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJvdG9DYWxsRnJhbWUgewor
ICAgIFJlZ2lzdGVyIGNvZGVCbG9ja1ZhbHVlOworICAgIFJlZ2lzdGVyIHNjb3BlQ2hhaW5WYWx1
ZTsKKyAgICBSZWdpc3RlciBjYWxsZWVWYWx1ZTsKKyAgICBSZWdpc3RlciBhcmdDb3VudEFuZENv
ZGVPcmlnaW5WYWx1ZTsKKyAgICBSZWdpc3RlciB0aGlzQXJnOworICAgIHNpemVfdCBwYWRkZWRB
cmdDb3VudDsKKyAgICBKU1ZhbHVlICphcmdzOworCisgICAgdm9pZCBpbml0KENvZGVCbG9jayos
IEpTU2NvcGUqLCBKU09iamVjdCosIEpTVmFsdWUsIGludCwgSlNWYWx1ZSogb3RoZXJBcmdzID0g
MCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBjb2RlQmxvY2tW
YWx1ZS5SZWdpc3Rlcjo6Y29kZUJsb2NrKCk7IH0KKyAgICB2b2lkIHNldENvZGVCbG9jayhDb2Rl
QmxvY2sqIGNvZGVCbG9jaykgeyBjb2RlQmxvY2tWYWx1ZSA9IGNvZGVCbG9jazsgfQorICAgIHZv
aWQgc2V0U2NvcGUoSlNTY29wZSogc2NvcGUpIHsgc2NvcGVDaGFpblZhbHVlID0gc2NvcGU7IH0K
KyAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKSB7IGNhbGxlZVZhbHVlID0gUmVn
aXN0ZXI6OndpdGhDYWxsZWUoY2FsbGVlKTsgfQorICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIGFyZ0NvdW50QW5kQ29kZU9yaWdpblZhbHVlLnBheWxv
YWQoKTsgfQorICAgIGludCBhcmd1bWVudENvdW50KCkgY29uc3QgeyByZXR1cm4gYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSAtIDE7IH0KKyAgICB2b2lkIHNldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKGludCBjb3VudCkgeyBhcmdDb3VudEFuZENvZGVPcmlnaW5WYWx1ZS5wYXlsb2Fk
KCkgPSBjb3VudDsgfQorICAgIHZvaWQgc2V0UGFkZGVkQXJnc0NvdW50KHNpemVfdCBhcmdDb3Vu
dCkgeyBwYWRkZWRBcmdDb3VudCA9IGFyZ0NvdW50OyB9CisKKyAgICB2b2lkIGNsZWFyQ3VycmVu
dFZQQygpIHsgYXJnQ291bnRBbmRDb2RlT3JpZ2luVmFsdWUudGFnKCkgPSAwOyB9CisgICAgdm9p
ZCBzZXRUaGlzVmFsdWUoSlNWYWx1ZSB2YWx1ZSkgeyB0aGlzQXJnID0gdmFsdWU7IH0KKyAgICB2
b2lkIHNldEFyZ3VtZW50KHNpemVfdCBhcmd1bWVudCwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50KSA8IGFyZ3VtZW50Q291bnQo
KSk7CisgICAgICAgIGFyZ3NbYXJndW1lbnRdID0gdmFsdWU7CisgICAgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBQcm90b0NhbGxGcmFtZV9oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0
MiwxMSBAQCBKSVRDb2RlOjp+SklUQ29kZSgpCiB9CiAKICNpZiBFTkFCTEUoSklUKQotSlNWYWx1
ZSBKSVRDb2RlOjpleGVjdXRlKEpTU3RhY2sqIHN0YWNrLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
Vk0qIHZtKQorSlNWYWx1ZSBKSVRDb2RlOjpleGVjdXRlKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUq
IHByb3RvQ2FsbEZyYW1lLCBSZWdpc3RlciogdG9wT2ZTdGFjaykKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhY2spOworICAgIEFTU0VSVCghdm0tPnRvcENhbGxGcmFtZSB8fCAoKFJlZ2lzdGVyKiko
dm0tPnRvcENhbGxGcmFtZSkgPj0gdG9wT2ZTdGFjaykpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQg
PSBKU1ZhbHVlOjpkZWNvZGUoY2FsbFRvSmF2YVNjcmlwdChleGVjdXRhYmxlQWRkcmVzcygpLCBj
YWxsRnJhbWUpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZShjYWxsVG9K
YXZhU2NyaXB0KGV4ZWN1dGFibGVBZGRyZXNzKCksICZ2bS0+dG9wQ2FsbEZyYW1lLCBwcm90b0Nh
bGxGcmFtZSwgdG9wT2ZTdGFjaykpOwogICAgIHJldHVybiB2bS0+ZXhjZXB0aW9uKCkgPyBqc051
bGwoKSA6IHJlc3VsdDsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
b2RlLmgJKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDSlNW
YWx1ZS5oIgogI2luY2x1ZGUgIkxlZ2FjeVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKICNlbmRpZgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTE3Nyw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBG
VEw6OkpJVENvZGUqIGZ0bCgpOwogICAgIHZpcnR1YWwgRlRMOjpGb3JPU1JFbnRyeUpJVENvZGUq
IGZ0bEZvck9TUkVudHJ5KCk7CiAgICAgCi0gICAgSlNWYWx1ZSBleGVjdXRlKEpTU3RhY2sqLCBD
YWxsRnJhbWUqLCBWTSopOworICAgIEpTVmFsdWUgZXhlY3V0ZShWTSosIFByb3RvQ2FsbEZyYW1l
KiwgUmVnaXN0ZXIqKTsKICAgICAKICAgICB2b2lkKiBzdGFydCgpIHsgcmV0dXJuIGRhdGFBZGRy
ZXNzQXRPZmZzZXQoMCk7IH0KICAgICB2aXJ0dWFsIHNpemVfdCBzaXplKCkgPSAwOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAx
NjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25TdGFja0NoZWNrKEUKICAgICAvLyBXZSBwYXNzIGluIG91ciBvd24gY29kZSBibG9jaywgYmVj
YXVzZSB0aGUgY2FsbGZyYW1lIGhhc24ndCBiZWVuIHBvcHVsYXRlZC4KICAgICBWTSogdm0gPSBj
b2RlQmxvY2stPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxl
ckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBpZiAoIWNhbGxlckZyYW1lKQor
ICAgICAgICBjYWxsZXJGcmFtZSA9IGV4ZWM7CisKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsZXJGcmFtZSk7CiAKICAgICBKU1N0YWNrJiBzdGFjayA9IHZtLT5pbnRl
cnByZXRlci0+c3RhY2soKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJ
KHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAj
aWYgT1MoV0lORE9XUykKIGNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIFJlZ2lzdGVyOworc3RydWN0
IFByb3RvQ2FsbEZyYW1lOwogCiBleHRlcm4gIkMiIHsKLSAgICBFbmNvZGVkSlNWYWx1ZSBjYWxs
VG9KYXZhU2NyaXB0KHZvaWQqLCBFeGVjU3RhdGUqKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSBjYWxs
VG9KYXZhU2NyaXB0KHZvaWQqLCBFeGVjU3RhdGUqKiwgUHJvdG9DYWxsRnJhbWUqLCBSZWdpc3Rl
ciopOwogICAgIHZvaWQgcmV0dXJuRnJvbUphdmFTY3JpcHQoKTsKKyAgICBFbmNvZGVkSlNWYWx1
ZSBjYWxsVG9OYXRpdmVGdW5jdGlvbih2b2lkKiwgRXhlY1N0YXRlKiosIFByb3RvQ2FsbEZyYW1l
KiwgUmVnaXN0ZXIqKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzTVNWQzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzTVNWQzY0LmFzbQkocmV2aXNpb24gMTYwMDY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic01TVkM2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDEwIEBAIFBVQkxJQyBnZXRIb3N0Q2FsbFJldHVyblZhbHVlCiBfVEVYVCAgIFNFR01F
TlQKIAogY2FsbFRvSmF2YVNjcmlwdCBQUk9DCisgICAgOzsgRklYTUU6IFRoaXMgZnVuY3Rpb24g
aGFzIG5vdCBiZWVuIHRlc3RlZCBhcyB0aGUgV2luIDY0IHBvcnQgZG9lc24ndCBjdXJyZW50bHkg
dXNlIHRoZSBKSVQuCisgICAgOzsgSXQgaXMgYmVsaWV2ZWQgdG8gYmUgYW4gYWNjdXJhdGUgYWRh
cHRhdGlvbiBvZiB0aGUgYXNzZW1ibHkgY3JlYXRlZCBieSB0aGUgbGxpbnQgc3R1YiBvZiB0aGUK
KyAgICA7OyBzYW1lIG5hbWUgd2l0aCBjaGFuZ2VzIGZvciBhZ3J1bWVudCByZWdpc3RlciBkaWZm
ZXJlbmNlcy4KKyAgICBpbnQgMwogICAgIG1vdiByMTAsIHF3b3JkIHB0cltyc3BdCiAgICAgcHVz
aCByYnAKICAgICBtb3YgcmF4LCByYnAgOyBTYXZlIHByZXZpb3VzIGZyYW1lIHBvaW50ZXIKQEAg
LTQ5LDEzICs1Myw3MiBAQCBjYWxsVG9KYXZhU2NyaXB0IFBST0MKICAgICA7IHJlcXVpcmVtZW50
IGlzIDMyIGJ5dGVzLiBCYXNlZCBvbiB0aGVzZSBmYWN0b3JzLCB3ZSBuZWVkIHRvIHBhZCB0aGUg
c3RhY2sKICAgICA7IGFuIGFkZGl0aW9uYWwgMjhoIGJ5dGVzLgogICAgIHN1YiByc3AsIDI4aAot
ICAgIG1vdiByYnAsIHJkeAotICAgIG1vdiByMTEsIHF3b3JkIHB0cltyYnBdIDsgUHV0IHRoZSBw
cmV2aW91cyBmcmFtZSBwb2ludGVyIGluIHRoZSBzZW50aW5lbCBjYWxsIGZyYW1lIGFib3ZlIHVz
Ci0gICAgbW92IHF3b3JkIHB0cltyMTFdLCByYXgKLSAgICBtb3YgcXdvcmQgcHRyW3IxMSArIDhd
LCByMTAKKworICAgIG1vdiByYnAsIHI5CisgICAgc3ViIHJicCwgNDAKKyAgICBtb3YgcXdvcmQg
cHRyW3JicCArIDQwXSwgMAorICAgIG1vdiBxd29yZCBwdHJbcmJwICsgMzJdLCByZHgKKworICAg
IG1vdiByYXgsIHF3b3JkIHB0cltyZHhdCisgICAgbW92IHF3b3JkIHB0cltyYnAgKyAyNF0sIHJh
eAorICAgIG1vdiBxd29yZCBwdHJbcmJwICsgMTZdLCAxCisgICAgbW92IHF3b3JkIHB0cltyYnAg
KyA4XSwgcjEwCisgICAgbW92IHF3b3JkIHB0cltyYnBdLCByYXgKKyAgICBtb3YgcmF4LCByYnAK
KworICAgIG1vdiBlYngsIGR3b3JkIHB0cltyOCArIDQwXQorICAgIGFkZCByYngsIDYKKyAgICBz
YWwgcmJ4LCAzCisgICAgc3ViIHJicCwgcmJ4CisgICAgbW92IHF3b3JkIHB0cltyYnBdLCByYXgK
KworICAgIG1vdiByYXgsIDUKKworY29weUhlYWRlckxvb3A6CisgICAgc3ViIHJheCwgMQorICAg
IG1vdiByMTAsIHF3b3JkIHB0cltyOCArIHJheCAqIDhdCisgICAgbW92IHF3b3JkIHB0cltyYnAg
KyByYXggKiA4ICsgMTZdLCByMTAKKyAgICB0ZXN0IHJheCwgcmF4CisgICAgam56IGNvcHlIZWFk
ZXJMb29wCisKKyAgICBtb3YgZWJ4LCBkd29yZCBwdHJbcjggKyAyNF0KKyAgICBzdWIgcmJ4LCAx
CisgICAgbW92IHIxMGQsIGR3b3JkIHB0cltyOCArIDQwXQorICAgIHN1YiByMTAsIDEKKyAgICBj
bXAgcmJ4LCByMTAKKyAgICBqZSBjb3B5QXJncworICAgIG1vdiByYXgsIDBhaAorCitmaWxsRXh0
cmFBcmdzTG9vcDoKKyAgICBzdWIgcjEwLCAxCisgICAgbW92IHF3b3JkIHB0cltyYnAgKyByMTAg
KiA4ICsgNTZdLCByYXgKKyAgICBjbXAgcmJ4LCByMTAKKyAgICBqbmUgZmlsbEV4dHJhQXJnc0xv
b3AKKworY29weUFyZ3M6CisgICAgbW92IHJheCwgcXdvcmQgcHRyW3I4ICsgNDhdCisKK2NvcHlB
cmdzTG9vcDoKKyAgICB0ZXN0IGVieCwgZWJ4CisgICAganogY29weUFyZ3NEb25lCisgICAgc3Vi
IGVieCwgMQorICAgIG1vdiByMTAsIHF3b3JkIHB0cltyYXggKyByYnggKiA4XQorICAgIG1vdiBx
d29yZCBwdHJbcmJwICsgcmJ4ICogOCArIDU2XSwgcjEwCisgICAgam1wIGNvcHlBcmdzTG9vcAor
Citjb3B5QXJnc0RvbmU6CisgICAgbW92IHF3b3JkIHB0cltyZHhdLCByYnAKICAgICBtb3YgcjE0
LCAwRkZGRjAwMDAwMDAwMDAwMGgKICAgICBtb3YgcjE1LCAwRkZGRjAwMDAwMDAwMDAwMmgKICAg
ICBjYWxsIHJjeAorICAgIGNtcCBxd29yZCBwdHJbcmJwICsgMTZdLCAxCisgICAgamUgY2FsbGVl
RnJhbWVQb3BwZWQKKyAgICBtb3YgcmJwLCBxd29yZCBwdHJbcmJwXQorCitjYWxsZWVGcmFtZVBv
cHBlZDoKKyAgICBtb3YgcmJ4LCBxd29yZCBwdHJbcmJwICsgMzJdIDsgVk0udG9wQ2FsbEZyYW1l
CisgICAgbW92IHIxMCwgcXdvcmQgcHRyW3JicCArIDI0XQorICAgIG1vdiBxd29yZCBwdHJbcmJ4
XSwgcjEwCiAgICAgYWRkIHJzcCwgMjhoCiAgICAgcG9wIHJkaQogICAgIHBvcCByc2kKQEAgLTY4
LDYgKzEzMSwxMTAgQEAgY2FsbFRvSmF2YVNjcmlwdCBQUk9DCiAgICAgcmV0CiBjYWxsVG9KYXZh
U2NyaXB0IEVORFAKIAorY2FsbFRvTmF0aXZlRnVuY3Rpb24gUFJPQworICAgIDs7IEZJWE1FOiBU
aGlzIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiB0ZXN0ZWQgYXMgdGhlIFdpbiA2NCBwb3J0IGRvZXNu
J3QgY3VycmVudGx5IHVzZSB0aGUgSklULgorICAgIDs7IEl0IGlzIGJlbGlldmVkIHRvIGJlIGFu
IGFjY3VyYXRlIGFkYXB0YXRpb24gb2YgdGhlIGFzc2VtYmx5IGNyZWF0ZWQgYnkgdGhlIGxsaW50
IHN0dWIgb2YgdGhlCisgICAgOzsgc2FtZSBuYW1lIHdpdGggY2hhbmdlcyBmb3IgYWdydW1lbnQg
cmVnaXN0ZXIgZGlmZmVyZW5jZXMuCisgICAgaW50IDMKKyAgICBtb3YgcjEwLCBxd29yZCBwdHJb
cnNwXQorICAgIHB1c2ggcmJwCisgICAgbW92IHJheCwgcmJwIDsgU2F2ZSBwcmV2aW91cyBmcmFt
ZSBwb2ludGVyCisgICAgbW92IHJicCwgcnNwCisgICAgcHVzaCByMTIKKyAgICBwdXNoIHIxMwor
ICAgIHB1c2ggcjE0CisgICAgcHVzaCByMTUKKyAgICBwdXNoIHJieAorICAgIHB1c2ggcnNpCisg
ICAgcHVzaCByZGkKKworICAgIDsgSklUIG9wZXJhdGlvbnMgY2FuIHVzZSB1cCB0byA2IGFyZ3Mg
KDQgaW4gcmVnaXN0ZXJzIGFuZCAyIG9uIHRoZSBzdGFjaykuCisgICAgOyBJbiBhZGRpdGlvbiwg
WDg2XzY0IEFCSSBzcGVjaWZpZXMgdGhhdCB0aGUgd29yc2UgY2FzZSBzdGFjayBhbGlnbm1lbnQK
KyAgICA7IHJlcXVpcmVtZW50IGlzIDMyIGJ5dGVzLiBCYXNlZCBvbiB0aGVzZSBmYWN0b3JzLCB3
ZSBuZWVkIHRvIHBhZCB0aGUgc3RhY2sKKyAgICA7IGFuIGFkZGl0aW9uYWwgMjhoIGJ5dGVzLgor
ICAgIHN1YiByc3AsIDI4aAorCisgICAgbW92IHJicCwgcjkKKyAgICBzdWIgcmJwLCA0MAorICAg
IG1vdiBxd29yZCBwdHJbcmJwICsgNDBdLCAwCisgICAgbW92IHF3b3JkIHB0cltyYnAgKyAzMl0s
IHJkeAorCisgICAgbW92IHJheCwgcXdvcmQgcHRyW3JkeF0KKyAgICBtb3YgcXdvcmQgcHRyW3Ji
cCArIDI0XSwgcmF4CisgICAgbW92IHF3b3JkIHB0cltyYnAgKyAxNl0sIDEKKyAgICBtb3YgcXdv
cmQgcHRyW3JicCArIDhdLCByMTAKKyAgICBtb3YgcXdvcmQgcHRyW3JicF0sIHJheAorICAgIG1v
diByYXgsIHJicAorCisgICAgbW92IGVieCwgZHdvcmQgcHRyW3I4ICsgNDBdCisgICAgYWRkIHJi
eCwgNgorICAgIHNhbCByYngsIDMKKyAgICBzdWIgcmJwLCByYngKKyAgICBtb3YgcXdvcmQgcHRy
W3JicF0sIHJheAorCisgICAgbW92IHJheCwgNQorCitjb3B5SGVhZGVyTG9vcDoKKyAgICBzdWIg
cmF4LCAxCisgICAgbW92IHIxMCwgcXdvcmQgcHRyW3I4ICsgcmF4ICogOF0KKyAgICBtb3YgcXdv
cmQgcHRyW3JicCArIHJheCAqIDggKyAxNl0sIHIxMAorICAgIHRlc3QgcmF4LCByYXgKKyAgICBq
bnogY29weUhlYWRlckxvb3AKKworICAgIG1vdiBlYngsIGR3b3JkIHB0cltyOCArIDI0XQorICAg
IHN1YiByYngsIDEKKyAgICBtb3YgcjEwZCwgZHdvcmQgcHRyW3I4ICsgNDBdCisgICAgc3ViIHIx
MCwgMQorICAgIGNtcCByYngsIHIxMAorICAgIGplIGNvcHlBcmdzCisgICAgbW92IHJheCwgMGFo
CisKK2ZpbGxFeHRyYUFyZ3NMb29wOgorICAgIHN1YiByMTAsIDEKKyAgICBtb3YgcXdvcmQgcHRy
W3JicCArIHIxMCAqIDggKyA1Nl0sIHJheAorICAgIGNtcCByYngsIHIxMAorICAgIGpuZSBmaWxs
RXh0cmFBcmdzTG9vcAorCitjb3B5QXJnczoKKyAgICBtb3YgcmF4LCBxd29yZCBwdHJbcjggKyA0
OF0KKworY29weUFyZ3NMb29wOgorICAgIHRlc3QgcmJ4LCByYngKKyAgICBqeiBjb3B5QXJnc0Rv
bmUKKyAgICBzdWIgcmJ4LCAxCisgICAgbW92IHIxMCwgcXdvcmQgcHRyW3JheCArIHJieCAqIDhd
CisgICAgbW92IHF3b3JkIHB0cltyYnAgKyByYnggKiA4ICsgNTZdLCByMTAKKyAgICBqbXAgY29w
eUFyZ3NMb29wCisKK2NvcHlBcmdzRG9uZToKKyAgICBtb3YgcXdvcmQgcHRyW3JkeF0sIHJicAor
ICAgIG1vdiByMTQsIDBGRkZGMDAwMDAwMDAwMDAwaAorICAgIG1vdiByMTUsIDBGRkZGMDAwMDAw
MDAwMDAyaAorCisgICAgbW92IHJheCwgcmN4CisgICAgbW92IHJjeCwgcmJwCisgICAgY2FsbCBy
YXgKKworICAgIGNtcCBxd29yZCBwdHJbcmJwICsgMTZdLCAxCisgICAgamUgY2FsbGVlRnJhbWVQ
b3BwZWQKKyAgICBtb3YgcmJwLCBxd29yZCBwdHJbcmJwXQorCitjYWxsZWVGcmFtZVBvcHBlZDoK
KyAgICBtb3YgcmJ4LCBxd29yZCBwdHJbcmJwICsgMzJdIDsgVk0udG9wQ2FsbEZyYW1lCisgICAg
bW92IHIxMCwgcXdvcmQgcHRyW3JicCArIDI0XQorICAgIG1vdiBxd29yZCBwdHJbcmJ4XSwgcjEw
CisgICAgYWRkIHJzcCwgMjhoCisgICAgcG9wIHJkaQorICAgIHBvcCByc2kKKyAgICBwb3AgcmJ4
CisgICAgcG9wIHIxNQorICAgIHBvcCByMTQKKyAgICBwb3AgcjEzCisgICAgcG9wIHIxMgorICAg
IHBvcCByYnAKKyAgICByZXQKK2NhbGxUb05hdGl2ZUZ1bmN0aW9uIEVORFAKKwogcmV0dXJuRnJv
bUphdmFTY3JpcHQgUFJPQwogICAgIGFkZCByc3AsIDI4aAogICAgIHBvcCByZGkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2LmgJKHJldmlzaW9uIDE2MDA2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAkod29ya2luZyBjb3B5KQpA
QCAtMjA2LDcgKzIwNiw3IEBAIGV4dGVybiAiQyIgewogCiAgICAgLy8gRklYTUU6IFNpbmNlIFdp
bmRvd3MgZG9lc24ndCB1c2UgdGhlIExMSW50LCB3ZSBoYXZlIGlubGluZSBzdHVicyBoZXJlLgog
ICAgIC8vIFVudGlsIHRoZSBMTEludCBpcyBjaGFuZ2VkIHRvIHN1cHBvcnQgV2luZG93cywgdGhl
c2Ugc3R1YiBuZWVkcyB0byBiZSB1cGRhdGVkLgotICAgIF9fZGVjbHNwZWMobmFrZWQpIEVuY29k
ZWRKU1ZhbHVlIGNhbGxUb0phdmFTY3JpcHQodm9pZCogY29kZSwgRXhlY1N0YXRlKikKKyAgICBf
X2RlY2xzcGVjKG5ha2VkKSBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqIGNv
ZGUsIEV4ZWNTdGF0ZSoqLCBQcm90b0NhbGxGcmFtZSosIFJlZ2lzdGVyKikKICAgICB7CiAgICAg
ICAgIF9fYXNtIHsKICAgICAgICAgICAgIG1vdiBlZHgsIFtlc3BdCkBAIC0yMTcsMTEgKzIxNyw4
NiBAQCBleHRlcm4gIkMiIHsKICAgICAgICAgICAgIHB1c2ggZWRpOwogICAgICAgICAgICAgcHVz
aCBlYng7CiAgICAgICAgICAgICBzdWIgZXNwLCAweDFjOwotICAgICAgICAgICAgbW92IGVicCwg
W2VzcCArIDB4MzRdOwotICAgICAgICAgICAgbW92IGVieCwgW2VicF07Ci0gICAgICAgICAgICBt
b3YgW2VieF0sIGVheDsKLSAgICAgICAgICAgIG1vdiA0W2VieF0sIGVkeAotICAgICAgICAgICAg
Y2FsbCBbZXNwICsgMHgzMF07CisgICAgICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHJbZXNwICsg
MHgzNF07CisgICAgICAgICAgICBtb3YgZXNpLCBkd29yZCBwdHJbZXNwICsgMHgzOF07CisgICAg
ICAgICAgICBtb3YgZWJwLCBkd29yZCBwdHJbZXNwICsgMHgzY107CisgICAgICAgICAgICBzdWIg
ZWJwLCAweDIwOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAgKyAweDI0XSwgMDsKKyAg
ICAgICAgICAgIG1vdiBkd29yZCBwdHJbZWJwICsgMHgyMF0sIDA7CisgICAgICAgICAgICBtb3Yg
ZHdvcmQgcHRyW2VicCArIDB4MWNdLCAwOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAg
KyAweDE4XSwgZWN4OworICAgICAgICAgICAgbW92IGVieCwgW2VjeF07CisgICAgICAgICAgICBt
b3YgZHdvcmQgcHRyW2VicCArIDB4MTRdLCAwOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltl
YnAgKyAweDEwXSwgZWJ4OworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAgKyAweGNdLCAw
OworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAgKyAweDhdLCAxOworICAgICAgICAgICAg
bW92IGR3b3JkIHB0cltlYnAgKyAweDRdLCBlZHg7CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRy
W2VicF0sIGVheDsKKyAgICAgICAgICAgIG1vdiBlYXgsIGVicDsKKworICAgICAgICAgICAgbW92
IGVkeCwgZHdvcmQgcHRyW2VzaSArIDB4MjhdOworICAgICAgICAgICAgYWRkIGVkeCwgNTsKKyAg
ICAgICAgICAgIHNhbCBlZHgsIDM7CisgICAgICAgICAgICBzdWIgZWJwLCBlZHg7CisgICAgICAg
ICAgICBtb3YgZHdvcmQgcHRyW2VicF0sIGVheDsKKworICAgICAgICAgICAgbW92IGVheCwgNTsK
KworICAgICAgICBjb3B5SGVhZGVyTG9vcDoKKyAgICAgICAgICAgIHN1YiBlYXgsIDE7CisgICAg
ICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHJbZXNpICsgZWF4ICogOF07CisgICAgICAgICAgICBt
b3YgZHdvcmQgcHRyIDhbZWJwICsgZWF4ICogOF0sIGVjeDsKKyAgICAgICAgICAgIG1vdiBlY3gs
IGR3b3JkIHB0ciA0W2VzaSArIGVheCAqIDhdOworICAgICAgICAgICAgbW92IGR3b3JkIHB0ciAx
MltlYnAgKyBlYXggKiA4XSwgZWN4OworICAgICAgICAgICAgdGVzdCBlYXgsIGVheDsKKyAgICAg
ICAgICAgIGpueiBjb3B5SGVhZGVyTG9vcDsKKworICAgICAgICAgICAgbW92IGVkeCwgZHdvcmQg
cHRyW2VzaSArIDB4MThdOworICAgICAgICAgICAgc3ViIGVkeCwgMTsKKyAgICAgICAgICAgIG1v
diBlY3gsIGR3b3JkIHB0cltlc2kgKyAweDI4XTsKKyAgICAgICAgICAgIHN1YiBlY3gsIDE7CisK
KyAgICAgICAgICAgIGNtcCBlZHgsIGVjeDsKKyAgICAgICAgICAgIGplIGNvcHlBcmdzOworCisg
ICAgICAgICAgICB4b3IgZWF4LCBlYXg7CisgICAgICAgICAgICBtb3YgZWJ4LCAtNDsKKworICAg
ICAgICBmaWxsRXh0cmFBcmdzTG9vcDoKKyAgICAgICAgICAgIHN1YiBlY3gsIDE7CisgICAgICAg
ICAgICBtb3YgZHdvcmQgcHRyIDB4MzBbZWJwICsgZWN4ICogOF0sIGVheDsgICAgICAgICAgICAK
KyAgICAgICAgICAgIG1vdiBkd29yZCBwdHIgMHgzNFtlYnAgKyBlY3ggKiA4XSwgZWJ4OworICAg
ICAgICAgICAgY21wIGVkeCwgZWN4OworICAgICAgICAgICAgam5lIGZpbGxFeHRyYUFyZ3NMb29w
OworCisgICAgICAgIGNvcHlBcmdzOgorICAgICAgICAgICAgbW92IGVheCwgZHdvcmQgcHRyW2Vz
aSArIDB4MmNdOworCisgICAgICAgIGNvcHlBcmdzTG9vcDoKKyAgICAgICAgICAgIHRlc3QgZWR4
LCBlZHg7CisgICAgICAgICAgICBqeiBjb3B5QXJnc0RvbmU7CisgICAgICAgICAgICBzdWIgZWR4
LCAxOworICAgICAgICAgICAgbW92IGVjeCwgZHdvcmQgcHRyIDBbZWF4ICsgZWR4ICogOF07Cisg
ICAgICAgICAgICBtb3YgZWJ4LCBkd29yZCBwdHIgNFtlYXggKyBlZHggKiA4XTsKKyAgICAgICAg
ICAgIG1vdiBkd29yZCBwdHIgMHgzMFtlYnAgKyBlZHggKiA4XSwgZWN4OworICAgICAgICAgICAg
bW92IGR3b3JkIHB0ciAweDM0W2VicCArIGVkeCAqIDhdLCBlYng7CisgICAgICAgICAgICBqbXAg
Y29weUFyZ3NMb29wOworCisgICAgICAgIGNvcHlBcmdzRG9uZToKKyAgICAgICAgICAgIG1vdiBl
Y3gsIGR3b3JkIHB0cltlc3AgKyAweDM0XTsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHJbZWN4
XSwgZWJwOworCisgICAgICAgICAgICBjYWxsIGR3b3JkIHB0cltlc3AgKyAweDMwXTsKKworICAg
ICAgICAgICAgY21wIGR3b3JkIHB0cltlYnAgKyA4XSwgMTsKKyAgICAgICAgICAgIGplIGNhbGxl
ZUZyYW1lUG9wcGVkOworICAgICAgICAgICAgbW92IGVicCwgZHdvcmQgcHRyW2VicF07CisKKyAg
ICAgICAgY2FsbGVlRnJhbWVQb3BwZWQ6CisgICAgICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHJb
ZWJwICsgMHgxOF07CisgICAgICAgICAgICBtb3YgZWJ4LCBkd29yZCBwdHJbZWJwICsgMHgxMF07
CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyW2VjeF0sIGVieDsKKwogICAgICAgICAgICAgYWRk
IGVzcCwgMHgxYzsKICAgICAgICAgICAgIHBvcCBlYng7CiAgICAgICAgICAgICBwb3AgZWRpOwpA
QCAtMjQyLDYgKzMxNywxMDkgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgICAgICByZXQ7CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICBfX2RlY2xzcGVjKG5ha2VkKSBFbmNvZGVkSlNWYWx1ZSBjYWxs
VG9OYXRpdmVGdW5jdGlvbih2b2lkKiBjb2RlLCBFeGVjU3RhdGUqKiwgUHJvdG9DYWxsRnJhbWUq
LCBSZWdpc3RlciopCisgICAgeworICAgICAgICBfX2FzbSB7CisgICAgICAgICAgICBtb3YgZWR4
LCBbZXNwXQorICAgICAgICAgICAgcHVzaCBlYnA7CisgICAgICAgICAgICBtb3YgZWF4LCBlYnA7
CisgICAgICAgICAgICBtb3YgZWJwLCBlc3A7CisgICAgICAgICAgICBwdXNoIGVzaTsKKyAgICAg
ICAgICAgIHB1c2ggZWRpOworICAgICAgICAgICAgcHVzaCBlYng7CisgICAgICAgICAgICBzdWIg
ZXNwLCAweDFjOworICAgICAgICAgICAgbW92IGVjeCwgW2VzcCArIDB4MzRdOworICAgICAgICAg
ICAgbW92IGVzaSwgW2VzcCArIDB4MzhdOworICAgICAgICAgICAgbW92IGVicCwgW2VzcCArIDB4
M2NdOworICAgICAgICAgICAgc3ViIGVicCwgMHgyMDsKKyAgICAgICAgICAgIG1vdiBkd29yZCBw
dHJbZWJwICsgMHgyNF0sIDA7CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyW2VicCArIDB4MjBd
LCAwOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAgKyAweDFjXSwgMDsKKyAgICAgICAg
ICAgIG1vdiBkd29yZCBwdHJbZWJwICsgMHgxOF0sIGVjeDsKKyAgICAgICAgICAgIG1vdiBlYngs
IFtlY3hdOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAgKyAweDE0XSwgMDsKKyAgICAg
ICAgICAgIG1vdiBkd29yZCBwdHJbZWJwICsgMHgxMF0sIGVieDsKKyAgICAgICAgICAgIG1vdiBk
d29yZCBwdHJbZWJwICsgMHhjXSwgMDsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHJbZWJwICsg
MHg4XSwgMTsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHJbZWJwICsgMHg0XSwgZWR4OworICAg
ICAgICAgICAgbW92IGR3b3JkIHB0cltlYnBdLCBlYXg7CisgICAgICAgICAgICBtb3YgZWF4LCBl
YnA7CisKKyAgICAgICAgICAgIG1vdiBlZHgsIGR3b3JkIHB0cltlc2kgKyAweDI4XTsKKyAgICAg
ICAgICAgIGFkZCBlZHgsIDU7CisgICAgICAgICAgICBzYWwgZWR4LCAzOworICAgICAgICAgICAg
c3ViIGVicCwgZWR4OworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnBdLCBlYXg7CisKKyAg
ICAgICAgICAgIG1vdiBlYXgsIDU7CisKKyAgICAgICAgY29weUhlYWRlckxvb3A6CisgICAgICAg
ICAgICBzdWIgZWF4LCAxOworICAgICAgICAgICAgbW92IGVjeCwgZHdvcmQgcHRyW2VzaSArIGVh
eCAqIDhdOworICAgICAgICAgICAgbW92IGR3b3JkIHB0ciA4W2VicCArIGVheCAqIDhdLCBlY3g7
CisgICAgICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHIgNFtlc2kgKyBlYXggKiA4XTsKKyAgICAg
ICAgICAgIG1vdiBkd29yZCBwdHIgMTJbZWJwICsgZWF4ICogOF0sIGVjeDsKKyAgICAgICAgICAg
IHRlc3QgZWF4LCBlYXg7CisgICAgICAgICAgICBqbnogY29weUhlYWRlckxvb3A7CisKKyAgICAg
ICAgICAgIG1vdiBlZHgsIGR3b3JkIHB0cltlc2kgKyAweDE4XTsKKyAgICAgICAgICAgIHN1YiBl
ZHgsIDE7CisgICAgICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHJbZXNpICsgMHgyOF07CisgICAg
ICAgICAgICBzdWIgZWN4LCAxOworCisgICAgICAgICAgICBjbXAgZWR4LCBlY3g7CisgICAgICAg
ICAgICBqZSBjb3B5QXJnczsKKworICAgICAgICAgICAgeG9yIGVheCwgZWF4OworICAgICAgICAg
ICAgbW92IGVieCwgLTQ7CisKKyAgICAgICAgZmlsbEV4dHJhQXJnc0xvb3A6CisgICAgICAgICAg
ICBzdWIgZWN4LCAxOworICAgICAgICAgICAgbW92IGR3b3JkIHB0ciAweDMwW2VicCArIGVjeCAq
IDhdLCBlYXg7ICAgICAgICAgICAgCisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyIDB4MzRbZWJw
ICsgZWN4ICogOF0sIGVieDsKKyAgICAgICAgICAgIGNtcCBlZHgsIGVjeDsKKyAgICAgICAgICAg
IGpuZSBmaWxsRXh0cmFBcmdzTG9vcDsKKworICAgICAgICBjb3B5QXJnczoKKyAgICAgICAgICAg
IG1vdiBlYXgsIGR3b3JkIHB0cltlc2kgKyAweDJjXTsKKworICAgICAgICBjb3B5QXJnc0xvb3A6
CisgICAgICAgICAgICB0ZXN0IGVkeCwgZWR4OworICAgICAgICAgICAganogY29weUFyZ3NEb25l
OworICAgICAgICAgICAgc3ViIGVkeCwgMTsKKyAgICAgICAgICAgIG1vdiBlY3gsIGR3b3JkIHB0
ciAwW2VheCArIGVkeCAqIDhdOworICAgICAgICAgICAgbW92IGVieCwgZHdvcmQgcHRyIDRbZWF4
ICsgZWR4ICogOF07CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyIDB4MzBbZWJwICsgZWR4ICog
OF0sIGVjeDsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHIgMHgzNFtlYnAgKyBlZHggKiA4XSwg
ZWJ4OworICAgICAgICAgICAgam1wIGNvcHlBcmdzTG9vcDsKKworICAgICAgICBjb3B5QXJnc0Rv
bmU6CisgICAgICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHJbZXNwICsgMHgzNF07CisgICAgICAg
ICAgICBtb3YgZHdvcmQgcHRyW2VjeF0sIGVicDsKKworICAgICAgICAgICAgbW92IGVkaSwgZHdv
cmQgcHRyW2VzcCArIDB4MzBdOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlc3AgKyAweDMw
XSwgZWJwOworICAgICAgICAgICAgbW92IGVjeCwgZWJwOworICAgICAgICAgICAgY2FsbCBlZGk7
CisKKyAgICAgICAgICAgIGNtcCBkd29yZCBwdHJbZWJwICsgOF0sIDE7CisgICAgICAgICAgICBq
ZSBjYWxsZWVGcmFtZVBvcHBlZDsKKyAgICAgICAgICAgIG1vdiBlYnAsIGR3b3JkIHB0cltlYnBd
OworCisgICAgICAgIGNhbGxlZUZyYW1lUG9wcGVkOgorICAgICAgICAgICAgbW92IGVjeCwgZHdv
cmQgcHRyW2VicCArIDB4MThdOworICAgICAgICAgICAgbW92IGVieCwgZHdvcmQgcHRyW2VicCAr
IDB4MTBdOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlY3hdLCBlYng7CisKKyAgICAgICAg
ICAgIGFkZCBlc3AsIDB4MWM7CisgICAgICAgICAgICBwb3AgZWJ4OworICAgICAgICAgICAgcG9w
IGVkaTsKKyAgICAgICAgICAgIHBvcCBlc2k7CisgICAgICAgICAgICBwb3AgZWJwOworICAgICAg
ICAgICAgcmV0OworICAgICAgICB9CisgICAgfQogfQogCiAjZW5kaWYgLy8gQ09NUElMRVIoTVNW
QykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZp
c2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDE0IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgRXhlY1N0YXRlOworY2xhc3MgUmVnaXN0ZXI7CiBjbGFzcyBWTTsKK3N0cnVjdCBQcm90
b0NhbGxGcmFtZTsKIAogZXh0ZXJuICJDIiB7Ci0gICAgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2
YVNjcmlwdCh2b2lkKiwgRXhlY1N0YXRlKik7CisgICAgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2
YVNjcmlwdCh2b2lkKiwgRXhlY1N0YXRlKiosIFByb3RvQ2FsbEZyYW1lKiwgUmVnaXN0ZXIqKTsK
ICAgICB2b2lkIHJldHVybkZyb21KYXZhU2NyaXB0KCk7CisgICAgRW5jb2RlZEpTVmFsdWUgY2Fs
bFRvTmF0aXZlRnVuY3Rpb24odm9pZCosIEV4ZWNTdGF0ZSoqLCBQcm90b0NhbGxGcmFtZSosIFJl
Z2lzdGVyKik7CiB9CiAKIG5hbWVzcGFjZSBMTEludCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQko
cmV2aXNpb24gMTYwMDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE3MCwzNyArMTcwLDcxIEBA
IG1hY3JvIGZ1bmN0aW9uRXBpbG9ndWUoZXh0cmFTdGFja1NwYWNlKQogICAgIGVuZAogZW5kCiAK
LW1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdCgpCittYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFr
ZUNhbGwsIGRvUmV0dXJuKQogICAgIGlmIFg4NgorICAgICAgICBjb25zdCBlbnRyeSA9IHQ1Cisg
ICAgICAgIGNvbnN0IHZtVG9wQ2FsbEZyYW1lID0gdDIKKyAgICAgICAgY29uc3QgcHJvdG9DYWxs
RnJhbWUgPSB0NAorCiAgICAgICAgIGNvbnN0IGV4dHJhU3RhY2tTcGFjZSA9IDI4CiAgICAgICAg
IGNvbnN0IHByZXZpb3VzQ0ZSID0gdDAKICAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IHQxCi0g
ICAgICAgIGNvbnN0IGVudHJ5ID0gdDUKLSAgICAgICAgY29uc3QgbmV3Q2FsbEZyYW1lID0gdDQK
KyAgICAgICAgY29uc3QgdGVtcDEgPSB0MCAjIFNhbWUgYXMgcHJldmlvdXNDRlIKKyAgICAgICAg
Y29uc3QgdGVtcDIgPSB0MSAjIFNhbWUgYXMgcHJldmlvdXNQQworICAgICAgICBjb25zdCB0ZW1w
MyA9IHQyICMgc2FtZSBhcyB2bVRvcENhbGxGcmFtZQorICAgICAgICBjb25zdCB0ZW1wNCA9IHQz
CiAgICAgZWxzaWYgQVJNIG9yIEFSTXY3X1RSQURJVElPTkFMCisgICAgICAgIGNvbnN0IGVudHJ5
ID0gYTAKKyAgICAgICAgY29uc3Qgdm1Ub3BDYWxsRnJhbWUgPSBhMQorICAgICAgICBjb25zdCBw
cm90b0NhbGxGcmFtZSA9IGEyCisgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSBhMworCiAgICAg
ICAgIGNvbnN0IGV4dHJhU3RhY2tTcGFjZSA9IDE2Ci0gICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZS
ID0gdDMgIAorICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQzCiAgICAgICAgIGNvbnN0IHBy
ZXZpb3VzUEMgPSBscgotICAgICAgICBjb25zdCBlbnRyeSA9IGEwCi0gICAgICAgIGNvbnN0IG5l
d0NhbGxGcmFtZSA9IGExCisgICAgICAgIGNvbnN0IHRlbXAxID0gdDMgIyBTYW1lIGFzIHByZXZp
b3VzQ0ZSCisgICAgICAgIGNvbnN0IHRlbXAyID0gYTMgIyBTYW1lIGFzIHRvcE9mU3RhY2sKKyAg
ICAgICAgY29uc3QgdGVtcDMgPSB0NAorICAgICAgICBjb25zdCB0ZW1wNCA9IHQ1CiAgICAgZWxz
aWYgQVJNdjcKKyAgICAgICAgY29uc3QgZW50cnkgPSBhMAorICAgICAgICBjb25zdCB2bVRvcENh
bGxGcmFtZSA9IGExCisgICAgICAgIGNvbnN0IHByb3RvQ2FsbEZyYW1lID0gYTIKKyAgICAgICAg
Y29uc3QgdG9wT2ZTdGFjayA9IGEzCisKICAgICAgICAgY29uc3QgZXh0cmFTdGFja1NwYWNlID0g
MjgKLSAgICAgICAgY29uc3QgcHJldmlvdXNDRlIgPSB0MyAgCisgICAgICAgIGNvbnN0IHByZXZp
b3VzQ0ZSID0gdDMKICAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IGxyCi0gICAgICAgIGNvbnN0
IGVudHJ5ID0gYTAKLSAgICAgICAgY29uc3QgbmV3Q2FsbEZyYW1lID0gYTEKKyAgICAgICAgY29u
c3QgdGVtcDEgPSB0MyAjIFNhbWUgYXMgcHJldmlvdXNDRlIKKyAgICAgICAgY29uc3QgdGVtcDIg
PSBhMyAjIFNhbWUgYXMgdG9wT2ZTdGFjaworICAgICAgICBjb25zdCB0ZW1wMyA9IHQ0CisgICAg
ICAgIGNvbnN0IHRlbXA0ID0gdDUKICAgICBlbHNpZiBNSVBTCisgICAgICAgIGNvbnN0IGVudHJ5
ID0gYTAKKyAgICAgICAgY29uc3Qgdm1Ub3BDYWxsRnJhbWUgPSBhMQorICAgICAgICBjb25zdCBw
cm90b0NhbGxGcmFtZSA9IGEyCisgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSBhMworCiAgICAg
ICAgIGNvbnN0IGV4dHJhU3RhY2tTcGFjZSA9IDM2CiAgICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZS
ID0gdDIKICAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IGxyCi0gICAgICAgIGNvbnN0IGVudHJ5
ID0gYTAKLSAgICAgICAgY29uc3QgbmV3Q2FsbEZyYW1lID0gYTEKKyAgICAgICAgY29uc3QgdGVt
cDEgPSB0MworICAgICAgICBjb25zdCB0ZW1wMiA9IHQ0CisgICAgICAgIGNvbnN0IHRlbXAzID0g
dDUKKyAgICAgICAgY29uc3QgdGVtcDQgPSB0NgogICAgIGVsc2lmIFNINAorICAgICAgICBjb25z
dCBlbnRyeSA9IGEwCisgICAgICAgIGNvbnN0IHZtVG9wQ2FsbEZyYW1lID0gYTEKKyAgICAgICAg
Y29uc3QgcHJvdG9DYWxsRnJhbWUgPSBhMgorICAgICAgICBjb25zdCB0b3BPZlN0YWNrID0gYTMK
KwogICAgICAgICBjb25zdCBleHRyYVN0YWNrU3BhY2UgPSAyMAotICAgICAgICBjb25zdCBwcmV2
aW91c0NGUiA9IHQzICAKKyAgICAgICAgY29uc3QgcHJldmlvdXNDRlIgPSB0MwogICAgICAgICBj
b25zdCBwcmV2aW91c1BDID0gbHIKLSAgICAgICAgY29uc3QgZW50cnkgPSBhMAotICAgICAgICBj
b25zdCBuZXdDYWxsRnJhbWUgPSBhMQorICAgICAgICBjb25zdCB0ZW1wMSA9IHQzICMgU2FtZSBh
cyBwcmV2aW91c0NGUgorICAgICAgICBjb25zdCB0ZW1wMiA9IGEzICMgU2FtZSBhcyB0b3BPZlN0
YWNrCisgICAgICAgIGNvbnN0IHRlbXAzID0gdDQKKyAgICAgICAgY29uc3QgdGVtcDQgPSB0NQog
ICAgIGVuZAogCiAgICAgaWYgWDg2CkBAIC0yMTAsMjIgKzI0NCwxMTYgQEAgbWFjcm8gZG9DYWxs
VG9KYXZhU2NyaXB0KCkKICAgICBmdW5jdGlvblByb2xvZ3VlKGV4dHJhU3RhY2tTcGFjZSkKICAg
ICBpZiBYODYKICAgICAgICAgbG9hZHAgZXh0cmFTdGFja1NwYWNlKzIwW3NwXSwgZW50cnkKLSAg
ICAgICAgbG9hZHAgZXh0cmFTdGFja1NwYWNlKzI0W3NwXSwgbmV3Q2FsbEZyYW1lCisgICAgICAg
IGxvYWRwIGV4dHJhU3RhY2tTcGFjZSsyNFtzcF0sIHZtVG9wQ2FsbEZyYW1lCisgICAgICAgIGxv
YWRwIGV4dHJhU3RhY2tTcGFjZSsyOFtzcF0sIHByb3RvQ2FsbEZyYW1lCisgICAgICAgIGxvYWRw
IGV4dHJhU3RhY2tTcGFjZSszMltzcF0sIGNmcgogICAgIGVsc2UKICAgICAgICAgbW92ZSBjZnIs
IHByZXZpb3VzQ0ZSCisgICAgICAgIG1vdmUgdG9wT2ZTdGFjaywgY2ZyCisgICAgZW5kCisKKyAg
ICBzdWJwIChDYWxsRnJhbWVIZWFkZXJTbG90cy0xKSo4LCBjZnIKKyAgICBzdG9yZXAgMCwgQXJn
dW1lbnRDb3VudCs0W2Nmcl0KKyAgICBzdG9yZXAgMCwgQXJndW1lbnRDb3VudFtjZnJdCisgICAg
c3RvcmVwIDAsIENhbGxlZSs0W2Nmcl0KKyAgICBzdG9yZXAgdm1Ub3BDYWxsRnJhbWUsIENhbGxl
ZVtjZnJdCisgICAgbG9hZHAgW3ZtVG9wQ2FsbEZyYW1lXSwgdGVtcDQKKyAgICBzdG9yZXAgMCwg
U2NvcGVDaGFpbis0W2Nmcl0KKyAgICBzdG9yZXAgdGVtcDQsIFNjb3BlQ2hhaW5bY2ZyXQorICAg
IHN0b3JlcCAwLCBDb2RlQmxvY2srNFtjZnJdCisgICAgc3RvcmVwIDEsIENvZGVCbG9ja1tjZnJd
CisgICAgc3RvcmVwIHByZXZpb3VzUEMsIFJldHVyblBDW2Nmcl0KKyAgICBzdG9yZXAgcHJldmlv
dXNDRlIsIENhbGxlckZyYW1lW2Nmcl0KKyAgICBtb3ZlIGNmciwgdGVtcDEKKworICAgIGxvYWRp
IFByb3RvQ2FsbEZyYW1lOjpwYWRkZWRBcmdDb3VudFtwcm90b0NhbGxGcmFtZV0sIHRlbXAyCisg
ICAgYWRkcCBDYWxsRnJhbWVIZWFkZXJTbG90cywgdGVtcDIsIHRlbXAyCisgICAgbHNoaWZ0cCAz
LCB0ZW1wMgorICAgIHN1YnAgdGVtcDIsIGNmcgorICAgIHN0b3JlcCB0ZW1wMSwgQ2FsbGVyRnJh
bWVbY2ZyXQorCisgICAgbW92ZSA1LCB0ZW1wMQorCisuY29weUhlYWRlckxvb3A6CisgICAgc3Vi
aSAxLCB0ZW1wMQorICAgIGxvYWRwIFtwcm90b0NhbGxGcmFtZSwgdGVtcDEsIDhdLCB0ZW1wMwor
ICAgIHN0b3JlcCB0ZW1wMywgQ29kZUJsb2NrW2NmciwgdGVtcDEsIDhdCisgICAgbG9hZHAgNFtw
cm90b0NhbGxGcmFtZSwgdGVtcDEsIDhdLCB0ZW1wMworICAgIHN0b3JlcCB0ZW1wMywgQ29kZUJs
b2NrKzRbY2ZyLCB0ZW1wMSwgOF0KKyAgICBidGlueiB0ZW1wMSwgLmNvcHlIZWFkZXJMb29wCisK
KyAgICBsb2FkaSBQcm90b0NhbGxGcmFtZTo6YXJnQ291bnRBbmRDb2RlT3JpZ2luVmFsdWVbcHJv
dG9DYWxsRnJhbWVdLCB0ZW1wMgorICAgIHN1YmkgMSwgdGVtcDIKKyAgICBsb2FkaSBQcm90b0Nh
bGxGcmFtZTo6cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxsRnJhbWVdLCB0ZW1wMworICAgIHN1Ymkg
MSwgdGVtcDMKKworICAgIGJpZXEgdGVtcDIsIHRlbXAzLCAuY29weUFyZ3MKKyAgICBtb3ZlIDAs
IHRlbXAxCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHRlbXA0CisuZmlsbEV4dHJhQXJnc0xvb3A6
CisgICAgc3ViaSAxLCB0ZW1wMworICAgIHN0b3JlcCB0ZW1wMSwgVGhpc0FyZ3VtZW50T2Zmc2V0
KzgrUGF5bG9hZE9mZnNldFtjZnIsIHRlbXAzLCA4XQorICAgIHN0b3JlcCB0ZW1wNCwgVGhpc0Fy
Z3VtZW50T2Zmc2V0KzgrVGFnT2Zmc2V0W2NmciwgdGVtcDMsIDhdCisgICAgYmluZXEgdGVtcDIs
IHRlbXAzLCAuZmlsbEV4dHJhQXJnc0xvb3AKKworLmNvcHlBcmdzOgorICAgIGxvYWRwIFByb3Rv
Q2FsbEZyYW1lOjphcmdzW3Byb3RvQ2FsbEZyYW1lXSwgdGVtcDEKKworLmNvcHlBcmdzTG9vcDoK
KyAgICBidGl6IHRlbXAyLCAuY29weUFyZ3NEb25lCisgICAgc3ViaSAxLCB0ZW1wMgorICAgIGxv
YWRwIFBheWxvYWRPZmZzZXRbdGVtcDEsIHRlbXAyLCA4XSwgdGVtcDMKKyAgICBsb2FkcCBUYWdP
ZmZzZXRbdGVtcDEsIHRlbXAyLCA4XSwgdGVtcDQKKyAgICBzdG9yZXAgdGVtcDMsIFRoaXNBcmd1
bWVudE9mZnNldCs4K1BheWxvYWRPZmZzZXRbY2ZyLCB0ZW1wMiwgOF0KKyAgICBzdG9yZXAgdGVt
cDQsIFRoaXNBcmd1bWVudE9mZnNldCs4K1RhZ09mZnNldFtjZnIsIHRlbXAyLCA4XQorICAgIGpt
cCAuY29weUFyZ3NMb29wCisKKy5jb3B5QXJnc0RvbmU6CisgICAgaWYgWDg2CisgICAgICAgIGxv
YWRwIGV4dHJhU3RhY2tTcGFjZSsyNFtzcF0sIHZtVG9wQ2FsbEZyYW1lCiAgICAgZW5kCisgICAg
c3RvcmVwIGNmciwgW3ZtVG9wQ2FsbEZyYW1lXQorCisgICAgbWFrZUNhbGwoZW50cnksIHRlbXAx
KQorCisgICAgYnBlcSBDb2RlQmxvY2tbY2ZyXSwgMSwgLmNhbGxlZUZyYW1lUG9wcGVkCisgICAg
bG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisKKy5jYWxsZWVGcmFtZVBvcHBlZDoKKyAgICBs
b2FkcCBDYWxsZWVbY2ZyXSwgdGVtcDMgIyBWTS50b3BDYWxsRnJhbWUKKyAgICBsb2FkcCBTY29w
ZUNoYWluW2Nmcl0sIHRlbXA0CisgICAgc3RvcmVwIHRlbXA0LCBbdGVtcDNdCiAKLSAgICBtb3Zl
IG5ld0NhbGxGcmFtZSwgY2ZyCi0gICAgbG9hZHAgW2Nmcl0sIG5ld0NhbGxGcmFtZQotICAgIHN0
b3JlcCBwcmV2aW91c0NGUiwgW25ld0NhbGxGcmFtZV0KLSAgICBzdG9yZXAgcHJldmlvdXNQQywg
NFtuZXdDYWxsRnJhbWVdCisgICAgZG9SZXR1cm4oZXh0cmFTdGFja1NwYWNlKQorZW5kCisKK21h
Y3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwgdGVtcCkKICAgICBjYWxsIGVudHJ5CitlbmQK
IAorbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50cnksIHRlbXApCisgICAgbW92ZSBlbnRy
eSwgdGVtcAorICAgIGlmIFg4NgorICAgICAgICAjIFB1dCBjZnIgb24gc3RhY2sgYXMgYXJnMCwg
YWxzbyBwdXQgaXQgaW4gZWN4IGZvciAiZmFzdGNhbGwiIHRhcmdldHMKKyAgICAgICAgcG9rZSBj
ZnIsIDAKKyAgICAgICAgbW92ZSBjZnIsIHQyCisgICAgZWxzZQorICAgICAgICBtb3ZlIGNmciwg
YTAKKyAgICBlbmQKKyAgICBjYWxsIHRlbXAKK2VuZAorCittYWNybyBkb1JldHVybkZyb21KYXZh
U2NyaXB0KGV4dHJhU3RhY2tTcGFjZSkKIF9yZXR1cm5Gcm9tSmF2YVNjcmlwdDoKICAgICBmdW5j
dGlvbkVwaWxvZ3VlKGV4dHJhU3RhY2tTcGFjZSkKICAgICByZXQKIGVuZAogCittYWNybyBkb1Jl
dHVybkZyb21Ib3N0RnVuY3Rpb24oZXh0cmFTdGFja1NwYWNlKQorICAgIGZ1bmN0aW9uRXBpbG9n
dWUoZXh0cmFTdGFja1NwYWNlKQorICAgIHJldAorZW5kCisKICMgRGVidWdnaW5nIG9wZXJhdGlv
biBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uIHN0
cmVhbS4gZnJvbVdoZXJlCiAjIHNob3VsZCBiZSBhbiBpbW1lZGlhdGUgaW50ZWdlciAtIGFueSBp
bnRlZ2VyIHlvdSBsaWtlOyB1c2UgaXQgdG8gaWRlbnRpZnkgdGhlIHBsYWNlIHlvdSdyZQogIyBk
ZWJ1Z2dpbmcgZnJvbS4gb3BlcmFuZCBzaG91bGQgbGlrZXdpc2UgYmUgYW4gaW1tZWRpYXRlLCBh
bmQgc2hvdWxkIGlkZW50aWZ5IHRoZSBvcGVyYW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24g
MTYwMDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTExMywyNSArMTEzLDMxIEBAIG1hY3JvIGZ1bmN0
aW9uRXBpbG9ndWUoZXh0cmFTdGFja1NwYWNlKQogICAgIGVuZAogZW5kCiAKLW1hY3JvIGRvQ2Fs
bFRvSmF2YVNjcmlwdCgpCittYWNybyBkb0NhbGxUb0phdmFTY3JpcHQobWFrZUNhbGwsIGRvUmV0
dXJuKQogICAgIGlmIFg4Nl82NAorICAgICAgICBjb25zdCBlbnRyeSA9IHQ1CisgICAgICAgIGNv
bnN0IHZtVG9wQ2FsbEZyYW1lID0gdDQKKyAgICAgICAgY29uc3QgcHJvdG9DYWxsRnJhbWUgPSB0
MQorICAgICAgICBjb25zdCB0b3BPZlN0YWNrID0gdDIKKwogICAgICAgICBjb25zdCBleHRyYVN0
YWNrU3BhY2UgPSA4CiAgICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDAKICAgICAgICAgY29u
c3QgcHJldmlvdXNQQyA9IHQ2Ci0gICAgICAgIGNvbnN0IGVudHJ5ID0gdDUKLSAgICAgICAgY29u
c3QgbmV3Q2FsbEZyYW1lID0gdDQKKyAgICAgICAgY29uc3QgdGVtcDEgPSB0MAorICAgICAgICBj
b25zdCB0ZW1wMiA9IHQzCisgICAgICAgIGNvbnN0IHRlbXAzID0gdDYKICAgICBlbHNpZiBBUk02
NAotICAgICAgICBjb25zdCBleHRyYVN0YWNrU3BhY2UgPSAwCi0gICAgICAgIGNvbnN0IHByZXZp
b3VzQ0ZSID0gdDQKLSAgICAgICAgY29uc3QgcHJldmlvdXNQQyA9IGxyCiAgICAgICAgIGNvbnN0
IGVudHJ5ID0gYTAKLSAgICAgICAgY29uc3QgbmV3Q2FsbEZyYW1lID0gYTEKLSAgICBlbHNpZiBD
X0xPT1AKKyAgICAgICAgY29uc3Qgdm1Ub3BDYWxsRnJhbWUgPSBhMQorICAgICAgICBjb25zdCBw
cm90b0NhbGxGcmFtZSA9IGEyCisgICAgICAgIGNvbnN0IHRvcE9mU3RhY2sgPSBhMworCiAgICAg
ICAgIGNvbnN0IGV4dHJhU3RhY2tTcGFjZSA9IDAKLSAgICAgICAgY29uc3QgcHJldmlvdXNDRlIg
PSB0NCAgCisgICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDQKICAgICAgICAgY29uc3QgcHJl
dmlvdXNQQyA9IGxyCi0gICAgICAgIGNvbnN0IGVudHJ5ID0gYTAKLSAgICAgICAgY29uc3QgbmV3
Q2FsbEZyYW1lID0gYTEKKyAgICAgICAgY29uc3QgdGVtcDEgPSB0MworICAgICAgICBjb25zdCB0
ZW1wMiA9IHQ1CisgICAgICAgIGNvbnN0IHRlbXAzID0gdDYKICAgICBlbmQKIAogICAgIGlmIFg4
Nl82NApAQCAtMTQwLDE5ICsxNDYsOTcgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KCkKICAg
ICBtb3ZlIGNmciwgcHJldmlvdXNDRlIKICAgICBmdW5jdGlvblByb2xvZ3VlKGV4dHJhU3RhY2tT
cGFjZSkKIAotICAgIG1vdmUgbmV3Q2FsbEZyYW1lLCBjZnIKLSAgICBsb2FkcCBbY2ZyXSwgbmV3
Q2FsbEZyYW1lCi0gICAgc3RvcmVwIHByZXZpb3VzQ0ZSLCBbbmV3Q2FsbEZyYW1lXQotICAgIHN0
b3JlcCBwcmV2aW91c1BDLCA4W25ld0NhbGxGcmFtZV0KKyAgICBtb3ZlIHRvcE9mU3RhY2ssIGNm
cgorICAgIHN1YnAgKENhbGxGcmFtZUhlYWRlclNsb3RzLTEpKjgsIGNmcgorICAgIHN0b3JlcCAw
LCBBcmd1bWVudENvdW50W2Nmcl0KKyAgICBzdG9yZXAgdm1Ub3BDYWxsRnJhbWUsIENhbGxlZVtj
ZnJdCisgICAgbG9hZHAgW3ZtVG9wQ2FsbEZyYW1lXSwgdGVtcDEKKyAgICBzdG9yZXAgdGVtcDEs
IFNjb3BlQ2hhaW5bY2ZyXQorICAgIHN0b3JlcCAxLCBDb2RlQmxvY2tbY2ZyXQorICAgIHN0b3Jl
cCBwcmV2aW91c1BDLCBSZXR1cm5QQ1tjZnJdCisgICAgc3RvcmVwIHByZXZpb3VzQ0ZSLCBDYWxs
ZXJGcmFtZVtjZnJdCisgICAgbW92ZSBjZnIsIHRlbXAxCisKKyAgICBsb2FkaSBQcm90b0NhbGxG
cmFtZTo6cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxsRnJhbWVdLCB0ZW1wMgorICAgIGFkZHAgQ2Fs
bEZyYW1lSGVhZGVyU2xvdHMsIHRlbXAyLCB0ZW1wMgorICAgIGxzaGlmdHAgMywgdGVtcDIKKyAg
ICBzdWJwIHRlbXAyLCBjZnIKKyAgICBzdG9yZXAgdGVtcDEsIENhbGxlckZyYW1lW2Nmcl0KKwor
ICAgIG1vdmUgNSwgdGVtcDEKKworLmNvcHlIZWFkZXJMb29wOgorICAgIHN1YmkgMSwgdGVtcDEK
KyAgICBsb2FkcCBbcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCA4XSwgdGVtcDMKKyAgICBzdG9yZXAg
dGVtcDMsIENvZGVCbG9ja1tjZnIsIHRlbXAxLCA4XQorICAgIGJ0aW56IHRlbXAxLCAuY29weUhl
YWRlckxvb3AKKworICAgIGxvYWRpIFByb3RvQ2FsbEZyYW1lOjphcmdDb3VudEFuZENvZGVPcmln
aW5WYWx1ZVtwcm90b0NhbGxGcmFtZV0sIHRlbXAyCisgICAgc3ViaSAxLCB0ZW1wMgorICAgIGxv
YWRpIFByb3RvQ2FsbEZyYW1lOjpwYWRkZWRBcmdDb3VudFtwcm90b0NhbGxGcmFtZV0sIHRlbXAz
CisgICAgc3ViaSAxLCB0ZW1wMworCisgICAgYmllcSB0ZW1wMiwgdGVtcDMsIC5jb3B5QXJncwor
ICAgIG1vdmUgVmFsdWVVbmRlZmluZWQsIHRlbXAxCisuZmlsbEV4dHJhQXJnc0xvb3A6CisgICAg
c3ViaSAxLCB0ZW1wMworICAgIHN0b3JlcCB0ZW1wMSwgVGhpc0FyZ3VtZW50T2Zmc2V0KzhbY2Zy
LCB0ZW1wMywgOF0KKyAgICBiaW5lcSB0ZW1wMiwgdGVtcDMsIC5maWxsRXh0cmFBcmdzTG9vcAor
CisuY29weUFyZ3M6CisgICAgbG9hZHAgUHJvdG9DYWxsRnJhbWU6OmFyZ3NbcHJvdG9DYWxsRnJh
bWVdLCB0ZW1wMQorCisuY29weUFyZ3NMb29wOgorICAgIGJ0aXogdGVtcDIsIC5jb3B5QXJnc0Rv
bmUKKyAgICBzdWJpIDEsIHRlbXAyCisgICAgbG9hZHAgW3RlbXAxLCB0ZW1wMiwgOF0sIHRlbXAz
CisgICAgc3RvcmVwIHRlbXAzLCBUaGlzQXJndW1lbnRPZmZzZXQrOFtjZnIsIHRlbXAyLCA4XQor
ICAgIGptcCAuY29weUFyZ3NMb29wCisKKy5jb3B5QXJnc0RvbmU6CisgICAgc3RvcmVwIGNmciwg
W3ZtVG9wQ2FsbEZyYW1lXQorCiAgICAgbW92ZSAweGZmZmYwMDAwMDAwMDAwMDAsIGNzcjEKICAg
ICBhZGRwIDIsIGNzcjEsIGNzcjIKKworICAgIG1ha2VDYWxsKGVudHJ5LCB0ZW1wMSkKKworICAg
IGJwZXEgQ29kZUJsb2NrW2Nmcl0sIDEsIC5jYWxsZWVGcmFtZVBvcHBlZAorICAgIGxvYWRwIENh
bGxlckZyYW1lW2Nmcl0sIGNmcgorCisuY2FsbGVlRnJhbWVQb3BwZWQ6CisgICAgbG9hZHAgQ2Fs
bGVlW2Nmcl0sIHRlbXAyICMgVk0udG9wQ2FsbEZyYW1lCisgICAgbG9hZHAgU2NvcGVDaGFpbltj
ZnJdLCB0ZW1wMworICAgIHN0b3JlcCB0ZW1wMywgW3RlbXAyXQorCisgICAgZG9SZXR1cm4oZXh0
cmFTdGFja1NwYWNlKQorZW5kCisKK21hY3JvIG1ha2VKYXZhU2NyaXB0Q2FsbChlbnRyeSwgdGVt
cCkKICAgICBjYWxsIGVudHJ5CitlbmQKIAorbWFjcm8gbWFrZUhvc3RGdW5jdGlvbkNhbGwoZW50
cnksIHRlbXApCisgICAgbW92ZSBlbnRyeSwgdGVtcAorICAgIGlmIFg4Nl82NAorICAgICAgICBt
b3ZlIGNmciwgdDUKKyAgICBlbHNpZiBBUk02NCBvciBDX0xPT1AKKyAgICAgICAgbW92ZSBjZnIs
IGEwCisgICAgZW5kCisgICAgY2FsbCB0ZW1wCitlbmQKKworbWFjcm8gZG9SZXR1cm5Gcm9tSmF2
YVNjcmlwdChleHRyYVN0YWNrU3BhY2UpCiBfcmV0dXJuRnJvbUphdmFTY3JpcHQ6CiAgICAgZnVu
Y3Rpb25FcGlsb2d1ZShleHRyYVN0YWNrU3BhY2UpCiAgICAgcmV0CiBlbmQKIAorbWFjcm8gZG9S
ZXR1cm5Gcm9tSG9zdEZ1bmN0aW9uKGV4dHJhU3RhY2tTcGFjZSkKKyAgICBmdW5jdGlvbkVwaWxv
Z3VlKGV4dHJhU3RhY2tTcGFjZSkKKyAgICByZXQKK2VuZAorCiBtYWNybyBwcmVwYXJlU3RhdGVG
b3JDQ2FsbCgpCiAgICAgbGVhcCBbUEIsIFBDLCA4XSwgUEMKICAgICBtb3ZlIFBCLCB0MwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkocmV2aXNpb24gMTYwMDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsMTIgKzQyMywx
NiBAQCBlbmQKIAogaWYgQ19MT09QCiBlbHNlCi0jIHN0dWIgdG8gY2FsbCBpbnRvIEphdmFTY3Jp
cHQKLSMgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlwdCh2b2lkKiBjb2RlLCBSZWdpc3Rl
ciogdG9wT2ZTdGFjaykKLSMgTm90ZSwgaWYgdGhpcyBzdHViIG9yIG9uZSBvZiBpdCdzIHJlbGF0
ZWQgbWFjcm9zIGlzIGNoYW5nZWQsIG1ha2UgdGhlCisjIHN0dWIgdG8gY2FsbCBpbnRvIEphdmFT
Y3JpcHQgb3IgTmF0aXZlIGZ1bmN0aW9ucworIyBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9KYXZhU2Ny
aXB0KHZvaWQqIGNvZGUsIEV4ZWNTdGF0ZSoqIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFt
ZSwgUmVnaXN0ZXIqIHRvcE9mU3RhY2spCisjIEVuY29kZWRKU1ZhbHVlIGNhbGxUb05hdGl2ZUZ1
bmN0aW9uKHZvaWQqIGNvZGUsIEV4ZWNTdGF0ZSoqIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9G
cmFtZSwgUmVnaXN0ZXIqIHRvcE9mU3RhY2spCisjIE5vdGUsIGlmIHRoZXNlIHN0dWJzIG9yIG9u
ZSBvZiB0aGVpciByZWxhdGVkIG1hY3JvcyBhcmUgY2hhbmdlZCwgbWFrZSB0aGUKICMgZXF1aXZh
bGVudCBjaGFuZ2VzIGluIGppdC9KSVRTdHVic1g4Ni5oIGFuZC9vciBqaXQvSklUU3R1YnNNU1ZD
NjQuYXNtCiBfY2FsbFRvSmF2YVNjcmlwdDoKLSAgICBkb0NhbGxUb0phdmFTY3JpcHQoKQorICAg
IGRvQ2FsbFRvSmF2YVNjcmlwdChtYWtlSmF2YVNjcmlwdENhbGwsIGRvUmV0dXJuRnJvbUphdmFT
Y3JpcHQpCisKK19jYWxsVG9OYXRpdmVGdW5jdGlvbjoKKyAgICBkb0NhbGxUb0phdmFTY3JpcHQo
bWFrZUhvc3RGdW5jdGlvbkNhbGwsIGRvUmV0dXJuRnJvbUhvc3RGdW5jdGlvbikKIGVuZAogCiAj
IEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJnTGlzdC5oCShyZXZpc2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzks
NyBAQCBwcml2YXRlOgogfTsKIAogY2xhc3MgQXJnTGlzdCB7CisgICAgZnJpZW5kIGNsYXNzIElu
dGVycHJldGVyOwogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiBwdWJsaWM6CiAgICAgQXJnTGlzdCgp
CkBAIC0xNzIsNiArMTczLDggQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
Z2V0U2xpY2UoaW50IHN0YXJ0SW5kZXgsIEFyZ0xpc3QmIHJlc3VsdCkgY29uc3Q7CiAKIHByaXZh
dGU6CisgICAgSlNWYWx1ZSogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJnczsgfQorCiAgICAg
SlNWYWx1ZSogbV9hcmdzOwogICAgIGludCBtX2FyZ0NvdW50OwogfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAxNjAwNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMyMCw3ICsxMzIwLDExIEBAIHN0cnVjdCBBVkxUcmVlQWJzdHJhY3RvckZvckFycmF5Q29t
cGFyZSAKICAgICAgICAgICAgIG1fY2FjaGVkQ2FsbC0+c2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsK
ICAgICAgICAgICAgIG1fY2FjaGVkQ2FsbC0+c2V0QXJndW1lbnQoMCwgdmEpOwogICAgICAgICAg
ICAgbV9jYWNoZWRDYWxsLT5zZXRBcmd1bWVudCgxLCB2Yik7CisjaWYgRU5BQkxFKExMSU5UX0Nf
TE9PUCkKICAgICAgICAgICAgIGNvbXBhcmVSZXN1bHQgPSBtX2NhY2hlZENhbGwtPmNhbGwoKS50
b051bWJlcihtX2NhY2hlZENhbGwtPm5ld0NhbGxGcmFtZShtX2V4ZWMpKTsKKyNlbHNlCisgICAg
ICAgICAgICBjb21wYXJlUmVzdWx0ID0gbV9jYWNoZWRDYWxsLT5jYWxsKCkudG9OdW1iZXIobV9l
eGVjKTsKKyNlbmRpZgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIgYXJndW1lbnRzOwogICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE2
MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJQcm9wZXJ0eVNsb3QuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVN0b3JhZ2UuaCIKKyNpbmNsdWRl
ICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlB1dERpcmVjdEluZGV4TW9kZS5oIgogI2lu
Y2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE2MDA2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwNCw3ICs1MDQsMTEgQEAgc3RhdGljIE5FVkVSX0lOTElORSBFbmNvZGVk
SlNWYWx1ZSByZXBsYQogCiAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGpzVW5k
ZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNSZXN1bHQgPSBjYWNoZWRDYWxs
LmNhbGwoKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICAgICAgICAgIHJlcGxh
Y2VtZW50cy5hcHBlbmQoanNSZXN1bHQudG9TdHJpbmcoY2FjaGVkQ2FsbC5uZXdDYWxsRnJhbWUo
ZXhlYykpLT52YWx1ZShleGVjKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50
cy5hcHBlbmQoanNSZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyNlbmRpZgog
ICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAKQEAgLTU0Myw3ICs1NDcsMTEgQEAgc3RhdGljIE5FVkVSX0lOTElORSBF
bmNvZGVkSlNWYWx1ZSByZXBsYQogCiAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlz
KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIEpTVmFsdWUganNSZXN1bHQgPSBjYWNo
ZWRDYWxsLmNhbGwoKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICAgICAgICAg
IHJlcGxhY2VtZW50cy5hcHBlbmQoanNSZXN1bHQudG9TdHJpbmcoY2FjaGVkQ2FsbC5uZXdDYWxs
RnJhbWUoZXhlYykpLT52YWx1ZShleGVjKSk7CisjZWxzZQorICAgICAgICAgICAgICAgIHJlcGxh
Y2VtZW50cy5hcHBlbmQoanNSZXN1bHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyNl
bmRpZgogICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAK
</data>
<flag name="review"
          id="241778"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="241779"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218404</attachid>
            <date>2013-12-04 06:15:33 -0800</date>
            <delta_ts>2013-12-04 06:15:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>123999-2.patch</filename>
            <type>text/plain</type>
            <size>67417</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMDkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDEzLTEyLTA0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgdGhlIHNldHRpbmcgdXAgb2YgY2FsbGVlJ3MgY2FsbEZyYW1lIGZyb20gcHVzaEZy
YW1lIHRvIGNhbGxUb0phdmFTY3JpcHQgdGh1bmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlw
IFBpemxvLgorCisgICAgICAgIENoYW5nZWQgTExJbnQgYW5kL29yIEpJVCBlbmFibGVkIHBvcnRz
IHRvIGFsbG9jYXRlIHRoZSBzdGFjayBmcmFtZSBpbiB0aGUKKyAgICAgICAgY2FsbFRvSmF2YVNj
cmlwdCBzdHViLiAgQWRkZWQgYW4gYWRkaXRpb25hbCBzdHViLCBjYWxsVG9OYXRpdmVGdW5jdGlv
biB0aGF0CisgICAgICAgIGFsbG9jYXRlcyBhIHN0YWNrIGZyYW1lIGluIGEgc2ltaWxhciB3YXkg
Zm9yIGNhbGxpbmcgbmF0aXZlIGVudHJ5IHBvaW50cworICAgICAgICB0aGF0IHRha2UgYSBzaW5n
bGUgRXhlY1N0YXRlKiBhcmd1bWVudC4gIFRoZXNlIHN0dWJzIGFyZSBpbXBsZW1lbnRlZAorICAg
ICAgICB1c2luZyBjb21tb24gbWFjcm9zIGluIExvd0xldmVsSW50ZXJwcmV0ZXJ7MzJfNjQsNjR9
LmFzbS4gIFRoZXJlIGFyZSBhbHNvCisgICAgICAgIFdpbmRvd3MgWDg2IGFuZCBYODYtNjQgdmVy
c2lvbnMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgSml0U3R1YnNYWC5oLgorICAgICAgICBUaGUgc3R1
YnMgYWxsb2NhdGUgYW5kIGNyZWF0ZSBhIHNlbnRpbmVsIGZyYW1lLCB0aGVuIGNyZWF0ZSB0aGUg
Y2FsbGVlJ3MKKyAgICAgICAgZnJhbWUsIHBvcHVsYXRpbmcgIHRoZSBoZWFkZXIgYW5kIGFyZ3Vt
ZW50cyBmcm9tIHRoZSBwYXNzZWQgaW4gUHJvdG9DYWxsRnJhbWUqLgorICAgICAgICBJdCBpcyBh
c3N1bWVkIHRoYXQgdGhlIGNhbGxlciBvZiBlaXRoZXIgc3R1YiBkb2VzIGEgY2hlY2sgZm9yIGVu
b3VnaCBzdGFjayBzcGFjZQorICAgICAgICB2aWEgSlNTdGFjazo6ZW50cnlDaGVjaygpLgorCisg
ICAgICAgIEZvciBwb3J0cyB1c2luZyB0aGUgQy1Mb29wIGludGVycHJldGVyLCB0aGUgcHJpb3Ig
bWV0aG9kIGZvciBhbGxvY2F0aW5nIHN0YWNrCisgICAgICAgIGZyYW1lIGFuZCBpbnZva2luZyBm
dW5jdGlvbnMgaXMgdXNlZCwgbmFtZWx5IHdpdGggSlNTdGFjazo6cHVzaEZyYW1lKCkgYW5kCisg
ICAgICAgIDo6cG9wRnJhbWUoKS4KKworICAgICAgICBNYWRlIHNwZWxsaW5nIGNoYW5nZXMgInNl
bnRpbmFsIiAtPiAic2VudGluZWwiLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnRlcnByZXRlci9D
YWNoZWRDYWxsLmg6CisgICAgICAgIChKU0M6OkNhY2hlZENhbGw6OkNhY2hlZENhbGwpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRDYWxsOjpzZXRUaGlzKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2Fs
bDo6c2V0QXJndW1lbnQpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZUNsb3N1cmUu
aDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lQ2xvc3VyZTo6cmVzZXRDYWxsRnJhbWUpOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0YWNrLmg6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNTdGFjazo6ZW50cnlDaGVjayk6CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnB1c2hGcmFtZSk6
CisgICAgICAgIChKU0M6OkpTU3RhY2s6OnBvcEZyYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9Qcm90b0NhbGxGcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpQcm90b0NhbGxGcmFt
ZTo6aW5pdCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaDogQWRkZWQu
CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjpjb2RlQmxvY2spOgorICAgICAgICAoSlND
OjpQcm90b0NhbGxGcmFtZTo6c2V0Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxs
RnJhbWU6OnNldFNjb3BlKToKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OnNldENhbGxl
ZSk6CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjphcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk6CisgICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjphcmd1bWVudENvdW50KToKKyAg
ICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KToKKyAgICAgICAgKEpTQzo6UHJvdG9DYWxsRnJhbWU6OnNldFBhZGRlZEFyZ3NDb3VudCk6Cisg
ICAgICAgIChKU0M6OlByb3RvQ2FsbEZyYW1lOjpjbGVhckN1cnJlbnRWUEMpOgorICAgICAgICAo
SlNDOjpQcm90b0NhbGxGcmFtZTo6c2V0VGhpc1ZhbHVlKToKKyAgICAgICAgKEpTQzo6UHJvdG9D
YWxsRnJhbWU6OnNldEFyZ3VtZW50KToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5jcHA6CisgICAg
ICAgIChKU0M6OkpJVENvZGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRTdHVicy5o
OgorICAgICAgICAqIGppdC9KSVRTdHVic01TVkM2NC5hc206CisgICAgICAgICogaml0L0pJVFN0
dWJzWDg2Lmg6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAg
ICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKEpTQzo6QXJnTGlzdDo6ZGF0YSk6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6QVZMVHJlZUFic3RyYWN0
b3JGb3JBcnJheUNvbXBhcmU6OmNvbXBhcmVfa2V5X2tleSk6CisgICAgICAgICogcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZXBsYWNlVXNpbmdSZWdFeHBTZWFy
Y2gpOgorCiAyMDEzLTEyLTA0ICBQZXRlciBNb2xuYXIgIDxwbW9sbmFyLnUtc3plZ2VkQHBhcnRu
ZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4ICFFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgYnVpbGQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTIxNyw2ICsyMTcsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKICAgICBpbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKICAgICBpbnRlcnByZXRlci9KU1N0YWNrLmNwcAorICAgIGludGVycHJldGVyL1Byb3Rv
Q2FsbEZyYW1lLmNwcAogICAgIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKICAgICBpbnRl
cnByZXRlci9WTUluc3BlY3Rvci5jcHAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC02MjIsNiArNjIyLDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0pTU3RhY2suY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSlNTdGFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFj
a0lubGluZXMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2Fs
bEZyYW1lLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Byb3RvQ2Fs
bEZyYW1lLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTYwMDY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDU5LDYgKzQ1OSw3IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcSW50ZXJwcmV0ZXIuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcSlNTdGFjay5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxQcm90b0NhbGxGcmFtZS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxTdGFja1Zpc2l0b3Iu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcVk1JbnNwZWN0
b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEFzc2VtYmx5SGVscGVy
cy5jcHAiIC8+CkBAIC0xMDAzLDYgKzEwMDQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW50ZXJwcmV0ZXJcSW50ZXJwcmV0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGludGVycHJldGVyXEpTU3RhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGludGVycHJldGVyXEpTU3RhY2tJbmxpbmVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnRlcnByZXRlclxQcm90b0NhbGxGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW50ZXJwcmV0ZXJcUmVnaXN0ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGludGVycHJldGVyXFN0YWNrVmlzaXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW50ZXJwcmV0ZXJcVk1JbnNwZWN0b3IuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2MDA2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjg4LDYgKzI4OCw5
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxKU1N0YWNrLmNwcCI+
CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxQcm90b0NhbGxGcmFtZS5jcHAi
PgorICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcU3RhY2tWaXNpdG9yLmNwcCI+
CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBA
IC0xNzI3LDYgKzE3MzAsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcSlNTdGFja0lubGluZXMuaCI+CiAgICAgICA8RmlsdGVyPmludGVycHJldGVyPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRl
clxQcm90b0NhbGxGcmFtZS5oIj4KKyAgICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVy
XFJlZ2lzdGVyLmgiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2
MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MzUsNiArNzM1LDcgQEAKIAkJNjVD
MDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODRGMTcxNzk1RTIwMDM1
MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTY1QzAyODVDMTcxNzk2Njgw
MDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDMDI4NUExNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29k
ZS5jcHAgKi87IH07CiAJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QzAyODVC
MTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCAqLzsgfTsKKwkJNjVGQjUxMTcxODRF
RUU3MDAwQzEyQjcwIC8qIFByb3RvQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RkI1MTE2MTg0RUU5QkMwMEMxMkI3MCAvKiBQcm90
b0NhbGxGcmFtZS5jcHAgKi87IH07CiAJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzE1RjY1QjE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9taXNlQ2FsbGJhY2suY3Bw
ICovOyB9OwogCQk3QzE1RjY1RTE3QzE5OUNFMDA3OTRENDAgLyogSlNQcm9taXNlQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTVGNjVD
MTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICovOyB9OwogCQk3QzE4NEUx
QTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTg0RTE4MTdCRURCRDMwMDdDQjYzQSAvKiBKU1By
b21pc2UuY3BwICovOyB9OwpAQCAtMjAxNSw2ICsyMDE2LDggQEAKIAkJNjVFQTRDOUEwOTJBRjlF
MjAwOTNEODAwIC8qIEpTTG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRlbnRpZmll
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbW1vbklkZW50
aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVFQTczNjMwQkFFMzVE
MTAwMUJCNTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb21tb25JZGVudGlmaWVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2NUZCNTExNTE4NEVFOEY4MDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdG9DYWxsRnJhbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjVGQjUxMTYxODRFRTlCQzAwQzEyQjcwIC8qIFByb3RvQ2FsbEZy
YW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3RvQ2FsbEZy
YW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAw
M0RCRUQ5IC8qIEJvb2xlYW5PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTdDMTVGNjVCMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1By
b21pc2VDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Byb21pc2VDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTVG
NjVDMTdDMTk5Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjkxOCw2ICsyOTIxLDggQEAKIAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5
NjE5IC8qIGludGVycHJldGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk2NUZCNTExNjE4NEVFOUJDMDBDMTJCNzAgLyogUHJvdG9DYWxsRnJhbWUuY3Bw
ICovLAorCQkJCTY1RkI1MTE1MTg0RUU4RjgwMEMxMkI3MCAvKiBQcm90b0NhbGxGcmFtZS5oICov
LAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLywKIAkJ
CQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovLAogCQkJCUE3Rjg2
OTBFMEY5NTg0QTEwMDU1ODY5NyAvKiBDYWNoZWRDYWxsLmggKi8sCkBAIC01Mjc3LDYgKzUyODIs
NyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNjVGQjUxMTcxODRFRUU3MDAwQzEyQjcw
IC8qIFByb3RvQ2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkE1NDk3MTZCODgz
NTAwMEIzQTk4MiAvKiBBNjRET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0
MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCShy
ZXZpc2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fj
aGVkQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlZNRW50cnlT
Y29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQzLDkgKzQ0LDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlv
bi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgICAgICAgICAgaWYgKGNhbGxGcmFt
ZS0+dm0oKS5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPnZt
KCkuaXNTYWZlVG9SZWN1cnNlKCkpIHsKKyNpZiAhRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAg
ICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNpemUoYXJndW1lbnRDb3VudCk7CisgICAgICAgICAg
ICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVu
Y3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5j
dGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cy5k
YXRhKCkpOworI2Vsc2UKICAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVy
LT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFt
ZSwgZnVuY3Rpb24sIGFyZ3VtZW50Q291bnQgKyAxLCBmdW5jdGlvbi0+c2NvcGUoKSk7Ci0gICAg
ICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICBtX3ZhbGlk
ID0gIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCk7CiAgICAgICAgIH0KQEAgLTU1LDYgKzYxLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKG1fdmFsaWQpOwogICAgICAg
ICAgICAgcmV0dXJuIG1faW50ZXJwcmV0ZXItPmV4ZWN1dGUobV9jbG9zdXJlKTsKICAgICAgICAg
fQorI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICB2b2lkIHNldFRoaXMoSlNWYWx1
ZSB2KSB7IG1fcHJvdG9DYWxsRnJhbWUuc2V0VGhpc1ZhbHVlKHYpOyB9CisgICAgICAgIHZvaWQg
c2V0QXJndW1lbnQoaW50IG4sIEpTVmFsdWUgdikgeyBtX3Byb3RvQ2FsbEZyYW1lLnNldEFyZ3Vt
ZW50KG4sIHYpOyB9CisjZWxzZQogICAgICAgICB2b2lkIHNldFRoaXMoSlNWYWx1ZSB2KSB7IG1f
Y2xvc3VyZS5zZXRUaGlzKHYpOyB9CiAgICAgICAgIHZvaWQgc2V0QXJndW1lbnQoaW50IG4sIEpT
VmFsdWUgdikgeyBtX2Nsb3N1cmUuc2V0QXJndW1lbnQobiwgdik7IH0KIApAQCAtNzAsMTEgKzgw
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKG1fdmFsaWQpCiAgICAgICAg
ICAgICAgICAgbV9pbnRlcnByZXRlci0+ZW5kUmVwZWF0Q2FsbChtX2Nsb3N1cmUpOwogICAgICAg
ICB9Ci0gICAgICAgIAorI2VuZGlmCisKICAgICBwcml2YXRlOgogICAgICAgICBib29sIG1fdmFs
aWQ7CiAgICAgICAgIEludGVycHJldGVyKiBtX2ludGVycHJldGVyOwogICAgICAgICBWTUVudHJ5
U2NvcGUgbV9lbnRyeVNjb3BlOworI2lmICFFTkFCTEUoTExJTlRfQ19MT09QKQorICAgICAgICBQ
cm90b0NhbGxGcmFtZSBtX3Byb3RvQ2FsbEZyYW1lOworICAgICAgICBWZWN0b3I8SlNWYWx1ZT4g
bV9hcmd1bWVudHM7CisjZW5kaWYKICAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBtX2Nsb3N1cmU7
CiAgICAgfTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWVDbG9zdXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZUNsb3N1cmUuaAkocmV2aXNpb24gMTYwMDY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZUNsb3N1cmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTEgKzI2LDE3IEBACiAjaWZuZGVmIENhbGxGcmFtZUNsb3N1cmVfaAogI2RlZmlu
ZSBDYWxsRnJhbWVDbG9zdXJlX2gKIAorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCisKIG5h
bWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgQ2FsbEZyYW1lQ2xvc3VyZSB7CiAgICAgQ2FsbEZyYW1l
KiBvbGRDYWxsRnJhbWU7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBDYWxsRnJhbWUq
IG5ld0NhbGxGcmFtZTsKKyNlbHNlCisgICAgUHJvdG9DYWxsRnJhbWUqIG5ld0NhbGxGcmFtZTsK
KyNlbmRpZgogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIFZNKiB2bTsKQEAgLTUxLDEyICs1NywxNCBAQCBz
dHJ1Y3QgQ2FsbEZyYW1lQ2xvc3VyZSB7CiAgICAgdm9pZCByZXNldENhbGxGcmFtZSgpCiAgICAg
ewogICAgICAgICBuZXdDYWxsRnJhbWUtPnNldFNjb3BlKHNjb3BlKTsKKyNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQogICAgICAgICAvLyBzZXRBcmd1bWVudCgpIHRha2VzIGFuIGFyZyBpbmRleCB0
aGF0IHN0YXJ0cyBmcm9tIDAgZm9yIHRoZSBmaXJzdAogICAgICAgICAvLyBhcmd1bWVudCBhZnRl
ciB0aGUgJ3RoaXMnIHZhbHVlLiBTaW5jZSBib3RoIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
CiAgICAgICAgIC8vIGFuZCBwYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXMgaW5jbHVkZXMgdGhl
ICd0aGlzJyB2YWx1ZSwgd2UgbmVlZCB0bwotICAgICAgICAvLyBzdWJ0cmFjdCAxIGZyb20gdGhl
bSB0byBtYWtlIGkgYSB2YWxpZCBhcmd1bWVudCBpbmRleCBmb3Igc2V0QXJndW1lbnQoKS4KKyAg
ICAgICAgLy8gc3VidHJhY3QgMSBmcm9tIHRoZW0gdG8gbWFrZSBpdCBhIHZhbGlkIGFyZ3VtZW50
IGluZGV4IGZvciBzZXRBcmd1bWVudCgpLgogICAgICAgICBmb3IgKGludCBpID0gYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMtMTsgaSA8IHBhcmFtZXRlckNvdW50SW5jbHVkaW5nVGhpcy0xOyAr
K2kpCiAgICAgICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGpzVW5kZWZpbmVk
KCkpOworI2VuZGlmCiAgICAgfQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNjAwNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MywxMiArNTMsMTQgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1
ZGUgIkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDTG9vcC5oIgorI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRlICJMaXRl
cmFsUGFyc2VyLmgiCiAjaW5jbHVkZSAiTmFtZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiT2JqZWN0
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlci5o
IgorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXIuaCIKQEAg
LTg2MCwxMiArODYyLDIwIEBAIGZhaWxlZEpTT05QOgogCiAgICAgLy8gUHVzaCB0aGUgY2FsbCBm
cmFtZSBmb3IgdGhpcyBpbnZvY2F0aW9uOgogICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQogICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gbV9zdGFjay5wdXNoRnJh
bWUoY2FsbEZyYW1lLCBjb2RlQmxvY2ssIHNjb3BlLCAxLCAwKTsKICAgICBpZiAoVU5MSUtFTFko
IW5ld0NhbGxGcmFtZSkpCiAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOwogCiAgICAgLy8gU2V0IHRoZSBhcmd1bWVudHMgZm9y
IHRoZSBjYWxsZWU6CiAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlzVmFsdWUodGhpc09iaik7Cisj
ZWxzZQorICAgIGlmIChVTkxJS0VMWSghbV9zdGFjay5lbnRyeUNoZWNrKGNvZGVCbG9jaywgMSkp
KQorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsRnJhbWUpKTsKKworICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHBy
b3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBzY29wZSwgMCwgdGhpc09iaiwgMSk7CisjZW5k
aWYKIAogICAgIGlmIChMZWdhY3lQcm9maWxlciogcHJvZmlsZXIgPSB2bS5lbmFibGVkUHJvZmls
ZXIoKSkKICAgICAgICAgcHJvZmlsZXItPndpbGxFeGVjdXRlKGNhbGxGcmFtZSwgcHJvZ3JhbS0+
c291cmNlVVJMKCksIHByb2dyYW0tPmxpbmVObygpKTsKQEAgLTg3OSwxNCArODg5LDE2IEBAIGZh
aWxlZEpTT05QOgogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIHJlc3VsdCA9IExM
SW50OjpDTG9vcDo6ZXhlY3V0ZShuZXdDYWxsRnJhbWUsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUp
OwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgcmVzdWx0ID0gcHJvZ3JhbS0+Z2VuZXJhdGVk
SklUQ29kZSgpLT5leGVjdXRlKCZtX3N0YWNrLCBuZXdDYWxsRnJhbWUsICZ2bSk7CisgICAgICAg
IHJlc3VsdCA9IHByb2dyYW0tPmdlbmVyYXRlZEpJVENvZGUoKS0+ZXhlY3V0ZSgmdm0sICZwcm90
b0NhbGxGcmFtZSwgbV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpOwogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCiAgICAgfQogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJs
ZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIHBy
b2dyYW0tPnNvdXJjZVVSTCgpLCBwcm9ncmFtLT5saW5lTm8oKSk7CiAKKyNpZiBFTkFCTEUoTExJ
TlRfQ19MT09QKQogICAgIG1fc3RhY2sucG9wRnJhbWUobmV3Q2FsbEZyYW1lKTsKKyNlbmRpZgog
CiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KQEAgLTkzMCw2ICs5NDIsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAgaWYgKFVOTElL
RUxZKHZtLndhdGNoZG9nLmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKIAorI2lmIEVOQUJMRShM
TElOVF9DX0xPT1ApCiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hG
cmFtZShjYWxsRnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgZnVuY3Rpb24p
OwogICAgIGlmIChVTkxJS0VMWSghbmV3Q2FsbEZyYW1lKSkKICAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CkBAIC05MzgsNiAr
OTUxLDEzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICBu
ZXdDYWxsRnJhbWUtPnNldFRoaXNWYWx1ZSh0aGlzVmFsdWUpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKICAgICAgICAgbmV3Q2FsbEZyYW1lLT5zZXRBcmd1
bWVudChpLCBhcmdzLmF0KGkpKTsKKyNlbHNlCisgICAgaWYgKFVOTElLRUxZKCFtX3N0YWNrLmVu
dHJ5Q2hlY2sobmV3Q29kZUJsb2NrLCBhcmdzQ291bnQpKSkKKyAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisKKyAgICBQcm90
b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKKyAgICBwcm90b0NhbGxGcmFtZS5pbml0KG5ld0Nv
ZGVCbG9jaywgc2NvcGUsIGZ1bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRh
KCkpOworI2VuZGlmCiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5h
YmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjYWxsRnJhbWUs
IGZ1bmN0aW9uKTsKQEAgLTk1MiwxNiArOTcyLDIzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGVDYWxsKENhbGxGcmEKICNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgICAgICAgICAg
cmVzdWx0ID0gTExJbnQ6OkNMb29wOjpleGVjdXRlKG5ld0NhbGxGcmFtZSwgbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfcHJvbG9ndWUpOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgICAgIHJl
c3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZv
ckNhbGwoKS0+ZXhlY3V0ZSgmbV9zdGFjaywgbmV3Q2FsbEZyYW1lLCAmdm0pOworICAgICAgICAg
ICAgcmVzdWx0ID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lLCBtX3N0YWNrLmdldFRv
cE9mU3RhY2soKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKLSAgICAgICAgfSBlbHNlCisgICAg
ICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgICAgIHJlc3Vs
dCA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24obmV3Q2FsbEZyYW1l
KSk7CisjZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxUb05h
dGl2ZUZ1bmN0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbiksICZ2bS50b3BDYWxsRnJhbWUsICZwcm90b0NhbGxGcmFtZSwgbV9zdGFjay5nZXRUb3BP
ZlN0YWNrKCkpKTsKKyNlbmRpZgorICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKExlZ2FjeVBy
b2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxl
ci0+ZGlkRXhlY3V0ZShjYWxsRnJhbWUsIGZ1bmN0aW9uKTsKIAorI2lmIEVOQUJMRShMTElOVF9D
X0xPT1ApCiAgICAgbV9zdGFjay5wb3BGcmFtZShuZXdDYWxsRnJhbWUpOworI2VuZGlmCiAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIApAQCAtMTAwNSw3ICsxMDMyLDcgQEAg
SlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogCiAgICAgaWYgKFVOTElL
RUxZKHZtLndhdGNoZG9nLmRpZEZpcmUoY2FsbEZyYW1lKSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKLQorI2lmIEVOQUJMRShM
TElOVF9DX0xPT1ApCiAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1c2hG
cmFtZShjYWxsRnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgY29uc3RydWN0
b3IpOwogICAgIGlmIChVTkxJS0VMWSghbmV3Q2FsbEZyYW1lKSkKICAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CkBAIC0xMDE0
LDYgKzEwNDEsMTMgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAog
ICAgIG5ld0NhbGxGcmFtZS0+c2V0VGhpc1ZhbHVlKGpzVW5kZWZpbmVkKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKICAgICAgICAgbmV3Q2FsbEZyYW1l
LT5zZXRBcmd1bWVudChpLCBhcmdzLmF0KGkpKTsKKyNlbHNlCisgICAgaWYgKFVOTElLRUxZKCFt
X3N0YWNrLmVudHJ5Q2hlY2sobmV3Q29kZUJsb2NrLCBhcmdzQ291bnQpKSkKKyAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisK
KyAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKKyAgICBwcm90b0NhbGxGcmFtZS5p
bml0KG5ld0NvZGVCbG9jaywgc2NvcGUsIGNvbnN0cnVjdG9yLCBqc1VuZGVmaW5lZCgpLCBhcmdz
Q291bnQsIGFyZ3MuZGF0YSgpKTsKKyNlbmRpZgogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBw
cm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+d2lsbEV4
ZWN1dGUoY2FsbEZyYW1lLCBjb25zdHJ1Y3Rvcik7CkBAIC0xMDI4LDIyICsxMDYyLDI1IEBAIEpT
T2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQogICAgICAgICAgICAgcmVzdWx0ID0gTExJbnQ6OkNMb29wOjpleGVjdXRlKG5ld0Nh
bGxGcmFtZSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7CiAjZWxpZiBF
TkFCTEUoSklUKQotICAgICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlv
bkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKS0+ZXhlY3V0ZSgmbV9z
dGFjaywgbmV3Q2FsbEZyYW1lLCAmdm0pOworICAgICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3Qo
KS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSwgbV9zdGFjay5nZXRUb3BPZlN0YWNrKCkp
OwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExM
SU5UX0NfTE9PUCkKICAgICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1
Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihuZXdDYWxsRnJhbWUpKTsKLSAgICAgICAgICAgIGlmICgh
Y2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UocmVzdWx0LmlzT2JqZWN0KCksICJIb3N0IGNvbnN0cnVjdG9yIHJldHVybmVkIG5v
biBvYmplY3QuIik7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKLSAg
ICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobmV3Q2FsbEZyYW1lKTsKLSAgICAgICAg
ICAgIH0KKyNlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbFRv
TmF0aXZlRnVuY3Rpb24ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24pLCAmdm0udG9wQ2FsbEZyYW1lLCAmcHJvdG9DYWxsRnJhbWUsIG1fc3RhY2su
Z2V0VG9wT2ZTdGFjaygpKSk7CisjZW5kaWYKKyAgICAgICAgICAgIGlmICghY2FsbEZyYW1lLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuaXNP
YmplY3QoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHBy
b2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVj
dXRlKGNhbGxGcmFtZSwgY29uc3RydWN0b3IpOwogCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
ICAgICBtX3N0YWNrLnBvcEZyYW1lKG5ld0NhbGxGcmFtZSk7CisjZW5kaWYKIAogICAgIGlmIChj
YWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNTEsNyAr
MTA4OCwxMSBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4oYXNPYmplY3QocmVzdWx0KSk7CiB9CiAKKyNpZiBFTkFCTEUo
TExJTlRfQ19MT09QKQogQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJl
cGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSkKKyNlbHNlCitDYWxsRnJhbWVDbG9zdXJlIEludGVy
cHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFByb3RvQ2FsbEZyYW1lKiBwcm90b0Nh
bGxGcmFtZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgSlNTY29wZSogc2NvcGUsIEpTVmFsdWUqIGFyZ3MpCisjZW5kaWYKIHsKICAgICBWTSYg
dm0gPSAqc2NvcGUtPnZtKCk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CkBAIC0xMDcw
LDE5ICsxMTExLDI2IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IK
IAogICAgIHNpemVfdCBhcmdzQ291bnQgPSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKIAot
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gbV9zdGFjay5wdXNoRnJhbWUoY2FsbEZyYW1l
LCBuZXdDb2RlQmxvY2ssIHNjb3BlLCBhcmdzQ291bnQsIGZ1bmN0aW9uKTsgIAorI2lmIEVOQUJM
RShMTElOVF9DX0xPT1ApCisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBtX3N0YWNrLnB1
c2hGcmFtZShjYWxsRnJhbWUsIG5ld0NvZGVCbG9jaywgc2NvcGUsIGFyZ3NDb3VudCwgZnVuY3Rp
b24pOworCiAgICAgaWYgKFVOTElLRUxZKCFuZXdDYWxsRnJhbWUpKSB7CiAgICAgICAgIHRocm93
U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVD
bG9zdXJlKCk7CiAgICAgfQogCi0gICAgaWYgKFVOTElLRUxZKCFuZXdDYWxsRnJhbWUpKSB7Cisg
ICAgLy8gUmV0dXJuIHRoZSBzdWNjZXNzZnVsIGNsb3N1cmU6CisgICAgQ2FsbEZyYW1lQ2xvc3Vy
ZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBmdW5jdGlvbiwgZnVuY3Rpb25F
eGVjdXRhYmxlLCAmdm0sIHNjb3BlLCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgfTsKKyNlbHNlCisgICAgaWYgKFVOTElLRUxZKCFtX3N0
YWNrLmVudHJ5Q2hlY2sobmV3Q29kZUJsb2NrLCBhcmdzQ291bnQpKSkgewogICAgICAgICB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gQ2FsbEZyYW1l
Q2xvc3VyZSgpOwogICAgIH0KIAorICAgIHByb3RvQ2FsbEZyYW1lLT5pbml0KG5ld0NvZGVCbG9j
aywgc2NvcGUsIGZ1bmN0aW9uLCBqc1VuZGVmaW5lZCgpLCBhcmdzQ291bnQsIGFyZ3MpOwogICAg
IC8vIFJldHVybiB0aGUgc3VjY2Vzc2Z1bCBjbG9zdXJlOgotICAgIENhbGxGcmFtZUNsb3N1cmUg
cmVzdWx0ID0geyBjYWxsRnJhbWUsIG5ld0NhbGxGcmFtZSwgZnVuY3Rpb24sIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgJnZtLCBzY29wZSwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzIH07CisgICAgQ2FsbEZyYW1lQ2xvc3VyZSByZXN1bHQgPSB7
IGNhbGxGcmFtZSwgcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBmdW5jdGlvbkV4ZWN1dGFibGUs
ICZ2bSwgc2NvcGUsIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyB9OworI2VuZGlmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA5
Niw5ICsxMTQ0LDEzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wK
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBz
dGFja0NoZWNrUG9pbnQ7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBtX3N0YWNrLnZh
bGlkYXRlRmVuY2UoY2xvc3VyZS5uZXdDYWxsRnJhbWUsICJCRUZPUkUiKTsKKyNlbmRpZgogICAg
IGNsb3N1cmUucmVzZXRDYWxsRnJhbWUoKTsKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAg
IG1fc3RhY2sudmFsaWRhdGVGZW5jZShjbG9zdXJlLm5ld0NhbGxGcmFtZSwgIlNURVAgMSIpOwor
I2VuZGlmCiAKICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFBy
b2ZpbGVyKCkpCiAgICAgICAgIHByb2ZpbGVyLT53aWxsRXhlY3V0ZShjbG9zdXJlLm9sZENhbGxG
cmFtZSwgY2xvc3VyZS5mdW5jdGlvbik7CkBAIC0xMTE0LDcgKzExNjYsOSBAQCBKU1ZhbHVlIElu
dGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiAgICAgLy8gSGVuY2UsIHdlIG5lZWQgdG8g
cHJlc2VydmUgdGhlIHRvcENhbGxGcmFtZSBoZXJlIG91cnNlbHZlcyBiZWZvcmUKICAgICAvLyBy
ZXBlYXRpbmcgdGhpcyBjYWxsIG9uIGEgc2Vjb25kIGNhbGxiYWNrIGZ1bmN0aW9uLgogCisjaWYg
RU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBUb3BDYWxsRnJhbWVTZXR0ZXIgdG9wQ2FsbEZyYW1l
KHZtLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSk7CisjZW5kaWYKIAogICAgIC8vIEV4ZWN1dGUgdGhl
IGNvZGU6CiAgICAgSlNWYWx1ZSByZXN1bHQ7CkBAIC0xMTI1LDIxICsxMTc5LDI1IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICNpZiBFTkFCTEUoTExJTlRfQ19M
T09QKQogICAgICAgICByZXN1bHQgPSBMTEludDo6Q0xvb3A6OmV4ZWN1dGUoY2xvc3VyZS5uZXdD
YWxsRnJhbWUsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKICNlbGlmIEVOQUJM
RShKSVQpCi0gICAgICAgIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5l
cmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZtX3N0YWNrLCBjbG9zdXJlLm5ld0NhbGxG
cmFtZSwgJnZtKTsKKyAgICAgICAgcmVzdWx0ID0gY2xvc3VyZS5mdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZtLCBjbG9zdXJlLm5ld0NhbGxG
cmFtZSwgbV9zdGFjay5nZXRUb3BPZlN0YWNrKCkpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAg
ICAgfQogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9m
aWxlcigpKQogICAgICAgICBwcm9maWxlci0+ZGlkRXhlY3V0ZShjbG9zdXJlLm9sZENhbGxGcmFt
ZSwgY2xvc3VyZS5mdW5jdGlvbik7CiAKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQogICAgIG1f
c3RhY2sudmFsaWRhdGVGZW5jZShjbG9zdXJlLm5ld0NhbGxGcmFtZSwgIkFGVEVSIik7CisjZW5k
aWYKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCisjaWYgRU5BQkxFKExM
SU5UX0NfTE9PUCkKIHZvaWQgSW50ZXJwcmV0ZXI6OmVuZFJlcGVhdENhbGwoQ2FsbEZyYW1lQ2xv
c3VyZSYgY2xvc3VyZSkKIHsKICAgICBtX3N0YWNrLnBvcEZyYW1lKGNsb3N1cmUubmV3Q2FsbEZy
YW1lKTsKIH0KKyNlbmRpZgogCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVj
dXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpT
U2NvcGUqIHNjb3BlKQogewpAQCAtMTIwMywxMiArMTI2MSwyMCBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICAvLyBQdXNoIHRoZSBmcmFtZToKICAgICBB
U1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZv
ciAndGhpcycuCisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICBDYWxsRnJhbWUqIG5ld0Nh
bGxGcmFtZSA9IG1fc3RhY2sucHVzaEZyYW1lKGNhbGxGcmFtZSwgY29kZUJsb2NrLCBzY29wZSwg
MSwgMCk7CiAgICAgaWYgKFVOTElLRUxZKCFuZXdDYWxsRnJhbWUpKQogICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKIAogICAg
IC8vIFNldCB0aGUgYXJndW1lbnRzIGZvciB0aGUgY2FsbGVlOgogICAgIG5ld0NhbGxGcmFtZS0+
c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7CisjZWxzZQorICAgIGlmIChVTkxJS0VMWSghbV9zdGFj
ay5lbnRyeUNoZWNrKGNvZGVCbG9jaywgMSkpKQorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKKworICAgIFByb3RvQ2FsbEZy
YW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBz
Y29wZSwgMCwgdGhpc1ZhbHVlLCAxKTsKKyNlbmRpZgogCiAgICAgaWYgKExlZ2FjeVByb2ZpbGVy
KiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICBwcm9maWxlci0+d2ls
bEV4ZWN1dGUoY2FsbEZyYW1lLCBldmFsLT5zb3VyY2VVUkwoKSwgZXZhbC0+bGluZU5vKCkpOwpA
QCAtMTIyMiwxNCArMTI4OCwxNiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxF
eGVjdXRhCiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKICAgICAgICAgcmVzdWx0ID0gTExJbnQ6
OkNMb29wOjpleGVjdXRlKG5ld0NhbGxGcmFtZSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7CiAjZWxp
ZiBFTkFCTEUoSklUKQotICAgICAgICByZXN1bHQgPSBldmFsLT5nZW5lcmF0ZWRKSVRDb2RlKCkt
PmV4ZWN1dGUoJm1fc3RhY2ssIG5ld0NhbGxGcmFtZSwgJnZtKTsKKyAgICAgICAgcmVzdWx0ID0g
ZXZhbC0+Z2VuZXJhdGVkSklUQ29kZSgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lLCBt
X3N0YWNrLmdldFRvcE9mU3RhY2soKSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICB9CiAK
ICAgICBpZiAoTGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0uZW5hYmxlZFByb2ZpbGVyKCkp
CiAgICAgICAgIHByb2ZpbGVyLT5kaWRFeGVjdXRlKGNhbGxGcmFtZSwgZXZhbC0+c291cmNlVVJM
KCksIGV2YWwtPmxpbmVObygpKTsKIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgbV9z
dGFjay5wb3BGcmFtZShuZXdDYWxsRnJhbWUpOworI2VuZGlmCiAgICAgcmV0dXJuIGNoZWNrZWRS
ZXR1cm4ocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw3ICs1OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBDYWxsRnJhbWVDbG9zdXJl
OwogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247Ci0gICAg
CisgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOworCiAgICAgZW51bSBEZWJ1Z0hvb2tJRCB7CiAg
ICAgICAgIFdpbGxFeGVjdXRlUHJvZ3JhbSwKICAgICAgICAgRGlkRXhlY3V0ZVByb2dyYW0sCkBA
IC0yNTYsOCArMjU3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAg
IGVudW0gRXhlY3V0aW9uRmxhZyB7IE5vcm1hbCwgSW5pdGlhbGl6ZUFuZFJldHVybiB9OwogCisj
aWYgIUVOQUJMRShMTElOVF9DX0xPT1ApCisgICAgICAgIENhbGxGcmFtZUNsb3N1cmUgcHJlcGFy
ZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgUHJvdG9DYWxs
RnJhbWUqLCBKU0Z1bmN0aW9uKiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Nj
b3BlKiwgSlNWYWx1ZSopOworI2Vsc2UKICAgICAgICAgQ2FsbEZyYW1lQ2xvc3VyZSBwcmVwYXJl
Rm9yUmVwZWF0Q2FsbChGdW5jdGlvbkV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU0Z1bmN0aW9u
KiwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKik7CiAgICAgICAgIHZv
aWQgZW5kUmVwZWF0Q2FsbChDYWxsRnJhbWVDbG9zdXJlJik7CisjZW5kaWYKICAgICAgICAgSlNW
YWx1ZSBleGVjdXRlKENhbGxGcmFtZUNsb3N1cmUmKTsKIAogICAgICAgICB2b2lkIGdldFN0YWNr
VHJhY2UoVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzLCBzaXplX3QgbWF4U3RhY2tTaXplID0g
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHJldmlzaW9uIDE2MDA2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFnZVJlc2VydmF0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL1ZNVGFncy5oPgogCisjZGVmaW5lIEVOQUJMRV9ERUJVR19KU1NUQUNLIDAKICNp
ZiAhZGVmaW5lZChOREVCVUcpICYmICFkZWZpbmVkKEVOQUJMRV9ERUJVR19KU1NUQUNLKQogI2Rl
ZmluZSBFTkFCTEVfREVCVUdfSlNTVEFDSyAxCiAjZW5kaWYKQEAgLTk5LDYgKzEwMCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlciogZ2V0U3RhcnRPZkZyYW1lKENhbGxGcmFt
ZSopOwogICAgICAgICBSZWdpc3RlciogZ2V0VG9wT2ZTdGFjaygpOwogCisgICAgICAgIGJvb2wg
ZW50cnlDaGVjayhjbGFzcyBDb2RlQmxvY2sqLCBpbnQpOworCiAgICAgICAgIENhbGxGcmFtZSog
cHVzaEZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIGNsYXNzIENvZGVCbG9jayosCiAgICAg
ICAgICAgICBKU1Njb3BlKiwgaW50IGFyZ3NDb3VudCwgSlNPYmplY3QqIGNhbGxlZSk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5s
aW5lcy5oCShyZXZpc2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSlNTdGFja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsMzUgQEAg
aW5saW5lIFJlZ2lzdGVyKiBKU1N0YWNrOjpnZXRTdGFydE9mRnJhbQogICAgIHJldHVybiBnZXRU
b3BPZkZyYW1lKGNhbGxlckZyYW1lKTsKIH0KIAoraW5saW5lIGJvb2wgSlNTdGFjazo6ZW50cnlD
aGVjayhjbGFzcyBDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IGFyZ3NDb3VudCkKK3sKKyAgICBS
ZWdpc3Rlciogb2xkRW5kID0gZ2V0VG9wT2ZTdGFjaygpOworCisgICAgLy8gRW5zdXJlIHRoYXQg
d2UgaGF2ZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBwYXJhbWV0ZXJzOgorICAgIHNpemVfdCBwYWRk
ZWRBcmdzQ291bnQgPSBhcmdzQ291bnQ7CisgICAgaWYgKGNvZGVCbG9jaykgeworICAgICAgICBz
aXplX3QgbnVtUGFyYW1ldGVycyA9IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOworICAgICAg
ICBpZiAocGFkZGVkQXJnc0NvdW50IDwgbnVtUGFyYW1ldGVycykKKyAgICAgICAgICAgIHBhZGRl
ZEFyZ3NDb3VudCA9IG51bVBhcmFtZXRlcnM7CisgICAgfQorCisgICAgUmVnaXN0ZXIqIG5ld0Nh
bGxGcmFtZVNsb3QgPSBvbGRFbmQgLSBwYWRkZWRBcmdzQ291bnQgLSAoMiAqIEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlclNpemUpICsgMTsKKworI2lmIEVOQUJMRShERUJVR19KU1NUQUNLKQorICAg
IG5ld0NhbGxGcmFtZVNsb3QgLT0gSlNTdGFjazo6RmVuY2VTaXplOworI2VuZGlmCisKKyAgICBS
ZWdpc3RlciogbmV3RW5kID0gbmV3Q2FsbEZyYW1lU2xvdDsKKyAgICBpZiAoISFjb2RlQmxvY2sp
CisgICAgICAgIG5ld0VuZCArPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChjb2RlQmxvY2stPmZy
YW1lUmVnaXN0ZXJDb3VudCgpKS5vZmZzZXQoKTsKKworICAgIC8vIEVuc3VyZSB0aGF0IHdlIGhh
dmUgdGhlIG5lZWRlZCBzdGFjayBjYXBhY2l0eSB0byBwdXNoIHRoZSBuZXcgZnJhbWU6CisgICAg
aWYgKCFncm93KG5ld0VuZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorCiBpbmxpbmUgQ2FsbEZyYW1lKiBKU1N0YWNrOjpwdXNoRnJhbWUoQ2FsbEZyYW1l
KiBjYWxsZXJGcmFtZSwKICAgICBjbGFzcyBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNTY29wZSog
c2NvcGUsIGludCBhcmdzQ291bnQsIEpTT2JqZWN0KiBjYWxsZWUpCiB7CkBAIC03OSw5ICsxMDgs
OSBAQCBpbmxpbmUgQ2FsbEZyYW1lKiBKU1N0YWNrOjpwdXNoRnJhbWUoQ2FsCiAgICAgaWYgKCFn
cm93KG5ld0VuZCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLy8gQ29tcHV0ZSB0aGUgYWRk
cmVzcyBvZiB0aGUgbmV3IFZNIHNlbnRpbmFsIGZyYW1lIGZvciB0aGlzIGludm9jYXRpb246Ci0g
ICAgQ2FsbEZyYW1lKiBuZXdWTUVudHJ5U2VudGluYWxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRl
KG5ld0NhbGxGcmFtZVNsb3QgKyBwYWRkZWRBcmdzQ291bnQgKyBKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKTsKLSAgICBBU1NFUlQoISFuZXdWTUVudHJ5U2VudGluYWxGcmFtZSk7CisgICAg
Ly8gQ29tcHV0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgbmV3IFZNIHNlbnRpbmVsIGZyYW1lIGZvciB0
aGlzIGludm9jYXRpb246CisgICAgQ2FsbEZyYW1lKiBuZXdWTUVudHJ5U2VudGluZWxGcmFtZSA9
IENhbGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxGcmFtZVNsb3QgKyBwYWRkZWRBcmdzQ291bnQgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKKyAgICBBU1NFUlQoISFuZXdWTUVudHJ5U2Vu
dGluZWxGcmFtZSk7CiAKICAgICAvLyBDb21wdXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBuZXcgZnJh
bWUgZm9yIHRoaXMgaW52b2NhdGlvbjoKICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENh
bGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxGcmFtZVNsb3QpOwpAQCAtOTIsMTEgKzEyMSwxMSBAQCBp
bmxpbmUgQ2FsbEZyYW1lKiBKU1N0YWNrOjpwdXNoRnJhbWUoQ2FsCiAgICAgLy8gdGhlIHRvcCBm
cmFtZSBvbiB0aGUgc3RhY2suCiAgICAgY2FsbGVyRnJhbWUgPSBtX3RvcENhbGxGcmFtZTsKIAot
ICAgIC8vIEluaXRpYWxpemUgdGhlIFZNIHNlbnRpbmFsIGZyYW1lIGhlYWRlcjoKLSAgICBuZXdW
TUVudHJ5U2VudGluYWxGcmFtZS0+aW5pdGlhbGl6ZVZNRW50cnlTZW50aW5lbEZyYW1lKGNhbGxl
ckZyYW1lKTsKKyAgICAvLyBJbml0aWFsaXplIHRoZSBWTSBzZW50aW5lbCBmcmFtZSBoZWFkZXI6
CisgICAgbmV3Vk1FbnRyeVNlbnRpbmVsRnJhbWUtPmluaXRpYWxpemVWTUVudHJ5U2VudGluZWxG
cmFtZShjYWxsZXJGcmFtZSk7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBjYWxsZWUgZnJhbWUg
aGVhZGVyOgotICAgIG5ld0NhbGxGcmFtZS0+aW5pdChjb2RlQmxvY2ssIDAsIHNjb3BlLCBuZXdW
TUVudHJ5U2VudGluYWxGcmFtZSwgYXJnc0NvdW50LCBjYWxsZWUpOworICAgIG5ld0NhbGxGcmFt
ZS0+aW5pdChjb2RlQmxvY2ssIDAsIHNjb3BlLCBuZXdWTUVudHJ5U2VudGluZWxGcmFtZSwgYXJn
c0NvdW50LCBjYWxsZWUpOwogCiAgICAgQVNTRVJUKCEhbmV3Q2FsbEZyYW1lLT5zY29wZSgpKTsK
IApAQCAtMTIwLDcgKzE0OSw3IEBAIGlubGluZSB2b2lkIEpTU3RhY2s6OnBvcEZyYW1lKENhbGxG
cmFtZSoKIHsKICAgICB2YWxpZGF0ZUZlbmNlKGZyYW1lLCBfX0ZVTkNUSU9OX18sIF9fTElORV9f
KTsKIAotICAgIC8vIFBvcCBvZmYgdGhlIGNhbGxlZSBmcmFtZSBhbmQgdGhlIHNlbnRpbmFsIGZy
YW1lLgorICAgIC8vIFBvcCBvZmYgdGhlIGNhbGxlZSBmcmFtZSBhbmQgdGhlIHNlbnRpbmVsIGZy
YW1lLgogICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBmcmFtZS0+Y2FsbGVyRnJhbWUoKS0+
dm1FbnRyeVNlbnRpbmVsQ2FsbGVyRnJhbWUoKTsKIAogICAgIC8vIFBvcCB0byB0aGUgY2FsbGVy
OgpAQCAtMTgzLDcgKzIxMiw3IEBAIGlubGluZSBKU1ZhbHVlIEpTU3RhY2s6OmdlbmVyYXRlRmVu
Y2VWYWwKIC8vICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAogLy8gICAgICAgICAgICAgICAgICAgICB8ICoqKiB0aGUgRmVuY2UgKioq
ICAgICAgICAgICAgICAgICAgICB8CiAvLyAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLS8vICAgICAgICAgICAgICAgICAgICAgfCBW
TSBlbnRyeSBzZW50aW5hbCBmcmFtZSBoZWFkZXIgICAgICAgfAorLy8gICAgICAgICAgICAgICAg
ICAgICB8IFZNIGVudHJ5IHNlbnRpbmVsIGZyYW1lIGhlYWRlciAgICAgICB8CiAvLyAgICAgICAg
ICAgICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKIC8v
ICAgICAgICAgICAgICAgICAgICAgfCBBcmdzIG9mIG5ldyBmcmFtZSAgICAgICAgICAgICAgICAg
ICAgfAogLy8gICAgICAgICAgICAgICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJv
dG9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9Qcm90b0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCisK
KyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUHJvdG9D
YWxsRnJhbWU6OmluaXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTU2NvcGUqIHNjb3BlLCBKU09i
amVjdCogY2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IGFyZ0NvdW50SW5jbHVkaW5nVGhp
cywgSlNWYWx1ZSogb3RoZXJBcmdzKQoreworICAgIHRoaXMtPmFyZ3MgPSBvdGhlckFyZ3M7Cisg
ICAgdGhpcy0+c2V0Q29kZUJsb2NrKGNvZGVCbG9jayk7CisgICAgdGhpcy0+c2V0U2NvcGUoc2Nv
cGUpOworICAgIHRoaXMtPnNldENhbGxlZShjYWxsZWUpOworICAgIHRoaXMtPnNldEFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKGFyZ0NvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgc2l6ZV90IHBh
ZGRlZEFyZ3NDb3VudCA9IGFyZ0NvdW50SW5jbHVkaW5nVGhpczsKKyAgICBpZiAoY29kZUJsb2Nr
KSB7CisgICAgICAgIHNpemVfdCBudW1QYXJhbWV0ZXJzID0gY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCk7CisgICAgICAgIGlmIChwYWRkZWRBcmdzQ291bnQgPCBudW1QYXJhbWV0ZXJzKQorICAg
ICAgICAgICAgcGFkZGVkQXJnc0NvdW50ID0gbnVtUGFyYW1ldGVyczsKKyAgICB9CisgICAgdGhp
cy0+c2V0UGFkZGVkQXJnc0NvdW50KHBhZGRlZEFyZ3NDb3VudCk7CisgICAgdGhpcy0+Y2xlYXJD
dXJyZW50VlBDKCk7CisgICAgdGhpcy0+c2V0VGhpc1ZhbHVlKHRoaXNWYWx1ZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1Byb3RvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1Byb3RvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJvdG9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQcm90b0NhbGxGcmFtZV9oCisjZGVmaW5lIFByb3RvQ2FsbEZyYW1lX2gKKwor
I2luY2x1ZGUgIlJlZ2lzdGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUHJvdG9D
YWxsRnJhbWUgeworICAgIFJlZ2lzdGVyIGNvZGVCbG9ja1ZhbHVlOworICAgIFJlZ2lzdGVyIHNj
b3BlQ2hhaW5WYWx1ZTsKKyAgICBSZWdpc3RlciBjYWxsZWVWYWx1ZTsKKyAgICBSZWdpc3RlciBh
cmdDb3VudEFuZENvZGVPcmlnaW5WYWx1ZTsKKyAgICBSZWdpc3RlciB0aGlzQXJnOworICAgIHNp
emVfdCBwYWRkZWRBcmdDb3VudDsKKyAgICBKU1ZhbHVlICphcmdzOworCisgICAgdm9pZCBpbml0
KENvZGVCbG9jayosIEpTU2NvcGUqLCBKU09iamVjdCosIEpTVmFsdWUsIGludCwgSlNWYWx1ZSog
b3RoZXJBcmdzID0gMCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVy
biBjb2RlQmxvY2tWYWx1ZS5SZWdpc3Rlcjo6Y29kZUJsb2NrKCk7IH0KKyAgICB2b2lkIHNldENv
ZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaykgeyBjb2RlQmxvY2tWYWx1ZSA9IGNvZGVCbG9j
azsgfQorICAgIHZvaWQgc2V0U2NvcGUoSlNTY29wZSogc2NvcGUpIHsgc2NvcGVDaGFpblZhbHVl
ID0gc2NvcGU7IH0KKyAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKSB7IGNhbGxl
ZVZhbHVlID0gUmVnaXN0ZXI6OndpdGhDYWxsZWUoY2FsbGVlKTsgfQorICAgIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpIGNvbnN0IHsgcmV0dXJuIGFyZ0NvdW50QW5kQ29kZU9yaWdp
blZhbHVlLnBheWxvYWQoKTsgfQorICAgIGludCBhcmd1bWVudENvdW50KCkgY29uc3QgeyByZXR1
cm4gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSAtIDE7IH0KKyAgICB2b2lkIHNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKGludCBjb3VudCkgeyBhcmdDb3VudEFuZENvZGVPcmlnaW5W
YWx1ZS5wYXlsb2FkKCkgPSBjb3VudDsgfQorICAgIHZvaWQgc2V0UGFkZGVkQXJnc0NvdW50KHNp
emVfdCBhcmdDb3VudCkgeyBwYWRkZWRBcmdDb3VudCA9IGFyZ0NvdW50OyB9CisKKyAgICB2b2lk
IGNsZWFyQ3VycmVudFZQQygpIHsgYXJnQ291bnRBbmRDb2RlT3JpZ2luVmFsdWUudGFnKCkgPSAw
OyB9CisgICAgdm9pZCBzZXRUaGlzVmFsdWUoSlNWYWx1ZSB2YWx1ZSkgeyB0aGlzQXJnID0gdmFs
dWU7IH0KKyAgICB2b2lkIHNldEFyZ3VtZW50KHNpemVfdCBhcmd1bWVudCwgSlNWYWx1ZSB2YWx1
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50KSA8IGFy
Z3VtZW50Q291bnQoKSk7CisgICAgICAgIGFyZ3NbYXJndW1lbnRdID0gdmFsdWU7CisgICAgfQor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBQcm90b0NhbGxGcmFtZV9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJKHJldmlzaW9uIDE2MDA2OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDExICs0MiwxMSBAQCBKSVRDb2RlOjp+SklUQ29kZSgpCiB9CiAKICNpZiBFTkFCTEUo
SklUKQotSlNWYWx1ZSBKSVRDb2RlOjpleGVjdXRlKEpTU3RhY2sqIHN0YWNrLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgVk0qIHZtKQorSlNWYWx1ZSBKSVRDb2RlOjpleGVjdXRlKFZNKiB2bSwgUHJv
dG9DYWxsRnJhbWUqIHByb3RvQ2FsbEZyYW1lLCBSZWdpc3RlciogdG9wT2ZTdGFjaykKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhY2spOworICAgIEFTU0VSVCghdm0tPnRvcENhbGxGcmFtZSB8fCAo
KFJlZ2lzdGVyKikodm0tPnRvcENhbGxGcmFtZSkgPj0gdG9wT2ZTdGFjaykpOwogCi0gICAgSlNW
YWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbFRvSmF2YVNjcmlwdChleGVjdXRhYmxl
QWRkcmVzcygpLCBjYWxsRnJhbWUpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmRl
Y29kZShjYWxsVG9KYXZhU2NyaXB0KGV4ZWN1dGFibGVBZGRyZXNzKCksICZ2bS0+dG9wQ2FsbEZy
YW1lLCBwcm90b0NhbGxGcmFtZSwgdG9wT2ZTdGFjaykpOwogICAgIHJldHVybiB2bS0+ZXhjZXB0
aW9uKCkgPyBqc051bGwoKSA6IHJlc3VsdDsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNz
IEpJVENvZGU7CiAjaWYgRU5BQkxFKEpJVCkKIGNsYXNzIFZNOwogY2xhc3MgSlNTdGFjazsKK3N0
cnVjdCBQcm90b0NhbGxGcmFtZTsKICNlbmRpZgogCiBjbGFzcyBKSVRDb2RlIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEpJVENvZGU+IHsKQEAgLTE3Nyw3ICsxNzgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBGVEw6OkpJVENvZGUqIGZ0bCgpOwogICAgIHZpcnR1YWwgRlRMOjpGb3JP
U1JFbnRyeUpJVENvZGUqIGZ0bEZvck9TUkVudHJ5KCk7CiAgICAgCi0gICAgSlNWYWx1ZSBleGVj
dXRlKEpTU3RhY2sqLCBDYWxsRnJhbWUqLCBWTSopOworICAgIEpTVmFsdWUgZXhlY3V0ZShWTSos
IFByb3RvQ2FsbEZyYW1lKiwgUmVnaXN0ZXIqKTsKICAgICAKICAgICB2b2lkKiBzdGFydCgpIHsg
cmV0dXJuIGRhdGFBZGRyZXNzQXRPZmZzZXQoMCk7IH0KICAgICB2aXJ0dWFsIHNpemVfdCBzaXpl
KCkgPSAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCShyZXZpc2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw5IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25TdGFja0NoZWNrKEUKICAgICAvLyBXZSBwYXNzIGluIG91ciBvd24g
Y29kZSBibG9jaywgYmVjYXVzZSB0aGUgY2FsbGZyYW1lIGhhc24ndCBiZWVuIHBvcHVsYXRlZC4K
ICAgICBWTSogdm0gPSBjb2RlQmxvY2stPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFt
ZSA9IGV4ZWMtPmNhbGxlckZyYW1lU2tpcHBpbmdWTUVudHJ5U2VudGluZWwoKTsKKyAgICBpZiAo
IWNhbGxlckZyYW1lKQorICAgICAgICBjYWxsZXJGcmFtZSA9IGV4ZWM7CisKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsZXJGcmFtZSk7CiAKICAgICBKU1N0YWNrJiBz
dGFjayA9IHZtLT5pbnRlcnByZXRlci0+c3RhY2soKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEzIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAjaWYgT1MoV0lORE9XUykKIGNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIFJl
Z2lzdGVyOworc3RydWN0IFByb3RvQ2FsbEZyYW1lOwogCiBleHRlcm4gIkMiIHsKLSAgICBFbmNv
ZGVkSlNWYWx1ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqLCBFeGVjU3RhdGUqKTsKKyAgICBFbmNv
ZGVkSlNWYWx1ZSBjYWxsVG9KYXZhU2NyaXB0KHZvaWQqLCBFeGVjU3RhdGUqKiwgUHJvdG9DYWxs
RnJhbWUqLCBSZWdpc3RlciopOwogICAgIHZvaWQgcmV0dXJuRnJvbUphdmFTY3JpcHQoKTsKKyAg
ICBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9OYXRpdmVGdW5jdGlvbih2b2lkKiwgRXhlY1N0YXRlKios
IFByb3RvQ2FsbEZyYW1lKiwgUmVnaXN0ZXIqKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzTVNWQzY0LmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzTVNWQzY0LmFzbQkocmV2aXNpb24gMTYwMDY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic01TVkM2NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTMyLDYgKzMyLDEwIEBAIFBVQkxJQyBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
CiBfVEVYVCAgIFNFR01FTlQKIAogY2FsbFRvSmF2YVNjcmlwdCBQUk9DCisgICAgOzsgRklYTUU6
IFRoaXMgZnVuY3Rpb24gaGFzIG5vdCBiZWVuIHRlc3RlZCBhcyB0aGUgV2luIDY0IHBvcnQgZG9l
c24ndCBjdXJyZW50bHkgdXNlIHRoZSBKSVQuCisgICAgOzsgSXQgaXMgYmVsaWV2ZWQgdG8gYmUg
YW4gYWNjdXJhdGUgYWRhcHRhdGlvbiBvZiB0aGUgYXNzZW1ibHkgY3JlYXRlZCBieSB0aGUgbGxp
bnQgc3R1YiBvZiB0aGUKKyAgICA7OyBzYW1lIG5hbWUgd2l0aCBjaGFuZ2VzIGZvciBhZ3J1bWVu
dCByZWdpc3RlciBkaWZmZXJlbmNlcy4KKyAgICBpbnQgMwogICAgIG1vdiByMTAsIHF3b3JkIHB0
cltyc3BdCiAgICAgcHVzaCByYnAKICAgICBtb3YgcmF4LCByYnAgOyBTYXZlIHByZXZpb3VzIGZy
YW1lIHBvaW50ZXIKQEAgLTQ5LDEzICs1Myw3MiBAQCBjYWxsVG9KYXZhU2NyaXB0IFBST0MKICAg
ICA7IHJlcXVpcmVtZW50IGlzIDMyIGJ5dGVzLiBCYXNlZCBvbiB0aGVzZSBmYWN0b3JzLCB3ZSBu
ZWVkIHRvIHBhZCB0aGUgc3RhY2sKICAgICA7IGFuIGFkZGl0aW9uYWwgMjhoIGJ5dGVzLgogICAg
IHN1YiByc3AsIDI4aAotICAgIG1vdiByYnAsIHJkeAotICAgIG1vdiByMTEsIHF3b3JkIHB0clty
YnBdIDsgUHV0IHRoZSBwcmV2aW91cyBmcmFtZSBwb2ludGVyIGluIHRoZSBzZW50aW5lbCBjYWxs
IGZyYW1lIGFib3ZlIHVzCi0gICAgbW92IHF3b3JkIHB0cltyMTFdLCByYXgKLSAgICBtb3YgcXdv
cmQgcHRyW3IxMSArIDhdLCByMTAKKworICAgIG1vdiByYnAsIHI5CisgICAgc3ViIHJicCwgNDAK
KyAgICBtb3YgcXdvcmQgcHRyW3JicCArIDQwXSwgMAorICAgIG1vdiBxd29yZCBwdHJbcmJwICsg
MzJdLCByZHgKKworICAgIG1vdiByYXgsIHF3b3JkIHB0cltyZHhdCisgICAgbW92IHF3b3JkIHB0
cltyYnAgKyAyNF0sIHJheAorICAgIG1vdiBxd29yZCBwdHJbcmJwICsgMTZdLCAxCisgICAgbW92
IHF3b3JkIHB0cltyYnAgKyA4XSwgcjEwCisgICAgbW92IHF3b3JkIHB0cltyYnBdLCByYXgKKyAg
ICBtb3YgcmF4LCByYnAKKworICAgIG1vdiBlYngsIGR3b3JkIHB0cltyOCArIDQwXQorICAgIGFk
ZCByYngsIDYKKyAgICBzYWwgcmJ4LCAzCisgICAgc3ViIHJicCwgcmJ4CisgICAgbW92IHF3b3Jk
IHB0cltyYnBdLCByYXgKKworICAgIG1vdiByYXgsIDUKKworY29weUhlYWRlckxvb3A6CisgICAg
c3ViIHJheCwgMQorICAgIG1vdiByMTAsIHF3b3JkIHB0cltyOCArIHJheCAqIDhdCisgICAgbW92
IHF3b3JkIHB0cltyYnAgKyByYXggKiA4ICsgMTZdLCByMTAKKyAgICB0ZXN0IHJheCwgcmF4Cisg
ICAgam56IGNvcHlIZWFkZXJMb29wCisKKyAgICBtb3YgZWJ4LCBkd29yZCBwdHJbcjggKyAyNF0K
KyAgICBzdWIgcmJ4LCAxCisgICAgbW92IHIxMGQsIGR3b3JkIHB0cltyOCArIDQwXQorICAgIHN1
YiByMTAsIDEKKyAgICBjbXAgcmJ4LCByMTAKKyAgICBqZSBjb3B5QXJncworICAgIG1vdiByYXgs
IDBhaAorCitmaWxsRXh0cmFBcmdzTG9vcDoKKyAgICBzdWIgcjEwLCAxCisgICAgbW92IHF3b3Jk
IHB0cltyYnAgKyByMTAgKiA4ICsgNTZdLCByYXgKKyAgICBjbXAgcmJ4LCByMTAKKyAgICBqbmUg
ZmlsbEV4dHJhQXJnc0xvb3AKKworY29weUFyZ3M6CisgICAgbW92IHJheCwgcXdvcmQgcHRyW3I4
ICsgNDhdCisKK2NvcHlBcmdzTG9vcDoKKyAgICB0ZXN0IGVieCwgZWJ4CisgICAganogY29weUFy
Z3NEb25lCisgICAgc3ViIGVieCwgMQorICAgIG1vdiByMTAsIHF3b3JkIHB0cltyYXggKyByYngg
KiA4XQorICAgIG1vdiBxd29yZCBwdHJbcmJwICsgcmJ4ICogOCArIDU2XSwgcjEwCisgICAgam1w
IGNvcHlBcmdzTG9vcAorCitjb3B5QXJnc0RvbmU6CisgICAgbW92IHF3b3JkIHB0cltyZHhdLCBy
YnAKICAgICBtb3YgcjE0LCAwRkZGRjAwMDAwMDAwMDAwMGgKICAgICBtb3YgcjE1LCAwRkZGRjAw
MDAwMDAwMDAwMmgKICAgICBjYWxsIHJjeAorICAgIGNtcCBxd29yZCBwdHJbcmJwICsgMTZdLCAx
CisgICAgamUgY2FsbGVlRnJhbWVQb3BwZWQKKyAgICBtb3YgcmJwLCBxd29yZCBwdHJbcmJwXQor
CitjYWxsZWVGcmFtZVBvcHBlZDoKKyAgICBtb3YgcmJ4LCBxd29yZCBwdHJbcmJwICsgMzJdIDsg
Vk0udG9wQ2FsbEZyYW1lCisgICAgbW92IHIxMCwgcXdvcmQgcHRyW3JicCArIDI0XQorICAgIG1v
diBxd29yZCBwdHJbcmJ4XSwgcjEwCiAgICAgYWRkIHJzcCwgMjhoCiAgICAgcG9wIHJkaQogICAg
IHBvcCByc2kKQEAgLTY4LDYgKzEzMSwxMTAgQEAgY2FsbFRvSmF2YVNjcmlwdCBQUk9DCiAgICAg
cmV0CiBjYWxsVG9KYXZhU2NyaXB0IEVORFAKIAorY2FsbFRvTmF0aXZlRnVuY3Rpb24gUFJPQwor
ICAgIDs7IEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiB0ZXN0ZWQgYXMgdGhlIFdp
biA2NCBwb3J0IGRvZXNuJ3QgY3VycmVudGx5IHVzZSB0aGUgSklULgorICAgIDs7IEl0IGlzIGJl
bGlldmVkIHRvIGJlIGFuIGFjY3VyYXRlIGFkYXB0YXRpb24gb2YgdGhlIGFzc2VtYmx5IGNyZWF0
ZWQgYnkgdGhlIGxsaW50IHN0dWIgb2YgdGhlCisgICAgOzsgc2FtZSBuYW1lIHdpdGggY2hhbmdl
cyBmb3IgYWdydW1lbnQgcmVnaXN0ZXIgZGlmZmVyZW5jZXMuCisgICAgaW50IDMKKyAgICBtb3Yg
cjEwLCBxd29yZCBwdHJbcnNwXQorICAgIHB1c2ggcmJwCisgICAgbW92IHJheCwgcmJwIDsgU2F2
ZSBwcmV2aW91cyBmcmFtZSBwb2ludGVyCisgICAgbW92IHJicCwgcnNwCisgICAgcHVzaCByMTIK
KyAgICBwdXNoIHIxMworICAgIHB1c2ggcjE0CisgICAgcHVzaCByMTUKKyAgICBwdXNoIHJieAor
ICAgIHB1c2ggcnNpCisgICAgcHVzaCByZGkKKworICAgIDsgSklUIG9wZXJhdGlvbnMgY2FuIHVz
ZSB1cCB0byA2IGFyZ3MgKDQgaW4gcmVnaXN0ZXJzIGFuZCAyIG9uIHRoZSBzdGFjaykuCisgICAg
OyBJbiBhZGRpdGlvbiwgWDg2XzY0IEFCSSBzcGVjaWZpZXMgdGhhdCB0aGUgd29yc2UgY2FzZSBz
dGFjayBhbGlnbm1lbnQKKyAgICA7IHJlcXVpcmVtZW50IGlzIDMyIGJ5dGVzLiBCYXNlZCBvbiB0
aGVzZSBmYWN0b3JzLCB3ZSBuZWVkIHRvIHBhZCB0aGUgc3RhY2sKKyAgICA7IGFuIGFkZGl0aW9u
YWwgMjhoIGJ5dGVzLgorICAgIHN1YiByc3AsIDI4aAorCisgICAgbW92IHJicCwgcjkKKyAgICBz
dWIgcmJwLCA0MAorICAgIG1vdiBxd29yZCBwdHJbcmJwICsgNDBdLCAwCisgICAgbW92IHF3b3Jk
IHB0cltyYnAgKyAzMl0sIHJkeAorCisgICAgbW92IHJheCwgcXdvcmQgcHRyW3JkeF0KKyAgICBt
b3YgcXdvcmQgcHRyW3JicCArIDI0XSwgcmF4CisgICAgbW92IHF3b3JkIHB0cltyYnAgKyAxNl0s
IDEKKyAgICBtb3YgcXdvcmQgcHRyW3JicCArIDhdLCByMTAKKyAgICBtb3YgcXdvcmQgcHRyW3Ji
cF0sIHJheAorICAgIG1vdiByYXgsIHJicAorCisgICAgbW92IGVieCwgZHdvcmQgcHRyW3I4ICsg
NDBdCisgICAgYWRkIHJieCwgNgorICAgIHNhbCByYngsIDMKKyAgICBzdWIgcmJwLCByYngKKyAg
ICBtb3YgcXdvcmQgcHRyW3JicF0sIHJheAorCisgICAgbW92IHJheCwgNQorCitjb3B5SGVhZGVy
TG9vcDoKKyAgICBzdWIgcmF4LCAxCisgICAgbW92IHIxMCwgcXdvcmQgcHRyW3I4ICsgcmF4ICog
OF0KKyAgICBtb3YgcXdvcmQgcHRyW3JicCArIHJheCAqIDggKyAxNl0sIHIxMAorICAgIHRlc3Qg
cmF4LCByYXgKKyAgICBqbnogY29weUhlYWRlckxvb3AKKworICAgIG1vdiBlYngsIGR3b3JkIHB0
cltyOCArIDI0XQorICAgIHN1YiByYngsIDEKKyAgICBtb3YgcjEwZCwgZHdvcmQgcHRyW3I4ICsg
NDBdCisgICAgc3ViIHIxMCwgMQorICAgIGNtcCByYngsIHIxMAorICAgIGplIGNvcHlBcmdzCisg
ICAgbW92IHJheCwgMGFoCisKK2ZpbGxFeHRyYUFyZ3NMb29wOgorICAgIHN1YiByMTAsIDEKKyAg
ICBtb3YgcXdvcmQgcHRyW3JicCArIHIxMCAqIDggKyA1Nl0sIHJheAorICAgIGNtcCByYngsIHIx
MAorICAgIGpuZSBmaWxsRXh0cmFBcmdzTG9vcAorCitjb3B5QXJnczoKKyAgICBtb3YgcmF4LCBx
d29yZCBwdHJbcjggKyA0OF0KKworY29weUFyZ3NMb29wOgorICAgIHRlc3QgcmJ4LCByYngKKyAg
ICBqeiBjb3B5QXJnc0RvbmUKKyAgICBzdWIgcmJ4LCAxCisgICAgbW92IHIxMCwgcXdvcmQgcHRy
W3JheCArIHJieCAqIDhdCisgICAgbW92IHF3b3JkIHB0cltyYnAgKyByYnggKiA4ICsgNTZdLCBy
MTAKKyAgICBqbXAgY29weUFyZ3NMb29wCisKK2NvcHlBcmdzRG9uZToKKyAgICBtb3YgcXdvcmQg
cHRyW3JkeF0sIHJicAorICAgIG1vdiByMTQsIDBGRkZGMDAwMDAwMDAwMDAwaAorICAgIG1vdiBy
MTUsIDBGRkZGMDAwMDAwMDAwMDAyaAorCisgICAgbW92IHJheCwgcmN4CisgICAgbW92IHJjeCwg
cmJwCisgICAgY2FsbCByYXgKKworICAgIGNtcCBxd29yZCBwdHJbcmJwICsgMTZdLCAxCisgICAg
amUgY2FsbGVlRnJhbWVQb3BwZWQKKyAgICBtb3YgcmJwLCBxd29yZCBwdHJbcmJwXQorCitjYWxs
ZWVGcmFtZVBvcHBlZDoKKyAgICBtb3YgcmJ4LCBxd29yZCBwdHJbcmJwICsgMzJdIDsgVk0udG9w
Q2FsbEZyYW1lCisgICAgbW92IHIxMCwgcXdvcmQgcHRyW3JicCArIDI0XQorICAgIG1vdiBxd29y
ZCBwdHJbcmJ4XSwgcjEwCisgICAgYWRkIHJzcCwgMjhoCisgICAgcG9wIHJkaQorICAgIHBvcCBy
c2kKKyAgICBwb3AgcmJ4CisgICAgcG9wIHIxNQorICAgIHBvcCByMTQKKyAgICBwb3AgcjEzCisg
ICAgcG9wIHIxMgorICAgIHBvcCByYnAKKyAgICByZXQKK2NhbGxUb05hdGl2ZUZ1bmN0aW9uIEVO
RFAKKwogcmV0dXJuRnJvbUphdmFTY3JpcHQgUFJPQwogICAgIGFkZCByc3AsIDI4aAogICAgIHBv
cCByZGkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzWDg2LmgJKHJldmlz
aW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNYODYuaAko
d29ya2luZyBjb3B5KQpAQCAtMjA2LDcgKzIwNiw3IEBAIGV4dGVybiAiQyIgewogCiAgICAgLy8g
RklYTUU6IFNpbmNlIFdpbmRvd3MgZG9lc24ndCB1c2UgdGhlIExMSW50LCB3ZSBoYXZlIGlubGlu
ZSBzdHVicyBoZXJlLgogICAgIC8vIFVudGlsIHRoZSBMTEludCBpcyBjaGFuZ2VkIHRvIHN1cHBv
cnQgV2luZG93cywgdGhlc2Ugc3R1YiBuZWVkcyB0byBiZSB1cGRhdGVkLgotICAgIF9fZGVjbHNw
ZWMobmFrZWQpIEVuY29kZWRKU1ZhbHVlIGNhbGxUb0phdmFTY3JpcHQodm9pZCogY29kZSwgRXhl
Y1N0YXRlKikKKyAgICBfX2RlY2xzcGVjKG5ha2VkKSBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9KYXZh
U2NyaXB0KHZvaWQqIGNvZGUsIEV4ZWNTdGF0ZSoqLCBQcm90b0NhbGxGcmFtZSosIFJlZ2lzdGVy
KikKICAgICB7CiAgICAgICAgIF9fYXNtIHsKICAgICAgICAgICAgIG1vdiBlZHgsIFtlc3BdCkBA
IC0yMTcsMTEgKzIxNyw4NiBAQCBleHRlcm4gIkMiIHsKICAgICAgICAgICAgIHB1c2ggZWRpOwog
ICAgICAgICAgICAgcHVzaCBlYng7CiAgICAgICAgICAgICBzdWIgZXNwLCAweDFjOwotICAgICAg
ICAgICAgbW92IGVicCwgW2VzcCArIDB4MzRdOwotICAgICAgICAgICAgbW92IGVieCwgW2VicF07
Ci0gICAgICAgICAgICBtb3YgW2VieF0sIGVheDsKLSAgICAgICAgICAgIG1vdiA0W2VieF0sIGVk
eAotICAgICAgICAgICAgY2FsbCBbZXNwICsgMHgzMF07CisgICAgICAgICAgICBtb3YgZWN4LCBk
d29yZCBwdHJbZXNwICsgMHgzNF07CisgICAgICAgICAgICBtb3YgZXNpLCBkd29yZCBwdHJbZXNw
ICsgMHgzOF07CisgICAgICAgICAgICBtb3YgZWJwLCBkd29yZCBwdHJbZXNwICsgMHgzY107Cisg
ICAgICAgICAgICBzdWIgZWJwLCAweDIwOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAg
KyAweDI0XSwgMDsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHJbZWJwICsgMHgyMF0sIDA7Cisg
ICAgICAgICAgICBtb3YgZHdvcmQgcHRyW2VicCArIDB4MWNdLCAwOworICAgICAgICAgICAgbW92
IGR3b3JkIHB0cltlYnAgKyAweDE4XSwgZWN4OworICAgICAgICAgICAgbW92IGVieCwgW2VjeF07
CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyW2VicCArIDB4MTRdLCAwOworICAgICAgICAgICAg
bW92IGR3b3JkIHB0cltlYnAgKyAweDEwXSwgZWJ4OworICAgICAgICAgICAgbW92IGR3b3JkIHB0
cltlYnAgKyAweGNdLCAwOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAgKyAweDhdLCAx
OworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAgKyAweDRdLCBlZHg7CisgICAgICAgICAg
ICBtb3YgZHdvcmQgcHRyW2VicF0sIGVheDsKKyAgICAgICAgICAgIG1vdiBlYXgsIGVicDsKKwor
ICAgICAgICAgICAgbW92IGVkeCwgZHdvcmQgcHRyW2VzaSArIDB4MjhdOworICAgICAgICAgICAg
YWRkIGVkeCwgNTsKKyAgICAgICAgICAgIHNhbCBlZHgsIDM7CisgICAgICAgICAgICBzdWIgZWJw
LCBlZHg7CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyW2VicF0sIGVheDsKKworICAgICAgICAg
ICAgbW92IGVheCwgNTsKKworICAgICAgICBjb3B5SGVhZGVyTG9vcDoKKyAgICAgICAgICAgIHN1
YiBlYXgsIDE7CisgICAgICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHJbZXNpICsgZWF4ICogOF07
CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyIDhbZWJwICsgZWF4ICogOF0sIGVjeDsKKyAgICAg
ICAgICAgIG1vdiBlY3gsIGR3b3JkIHB0ciA0W2VzaSArIGVheCAqIDhdOworICAgICAgICAgICAg
bW92IGR3b3JkIHB0ciAxMltlYnAgKyBlYXggKiA4XSwgZWN4OworICAgICAgICAgICAgdGVzdCBl
YXgsIGVheDsKKyAgICAgICAgICAgIGpueiBjb3B5SGVhZGVyTG9vcDsKKworICAgICAgICAgICAg
bW92IGVkeCwgZHdvcmQgcHRyW2VzaSArIDB4MThdOworICAgICAgICAgICAgc3ViIGVkeCwgMTsK
KyAgICAgICAgICAgIG1vdiBlY3gsIGR3b3JkIHB0cltlc2kgKyAweDI4XTsKKyAgICAgICAgICAg
IHN1YiBlY3gsIDE7CisKKyAgICAgICAgICAgIGNtcCBlZHgsIGVjeDsKKyAgICAgICAgICAgIGpl
IGNvcHlBcmdzOworCisgICAgICAgICAgICB4b3IgZWF4LCBlYXg7CisgICAgICAgICAgICBtb3Yg
ZWJ4LCAtNDsKKworICAgICAgICBmaWxsRXh0cmFBcmdzTG9vcDoKKyAgICAgICAgICAgIHN1YiBl
Y3gsIDE7CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyIDB4MzBbZWJwICsgZWN4ICogOF0sIGVh
eDsgICAgICAgICAgICAKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHIgMHgzNFtlYnAgKyBlY3gg
KiA4XSwgZWJ4OworICAgICAgICAgICAgY21wIGVkeCwgZWN4OworICAgICAgICAgICAgam5lIGZp
bGxFeHRyYUFyZ3NMb29wOworCisgICAgICAgIGNvcHlBcmdzOgorICAgICAgICAgICAgbW92IGVh
eCwgZHdvcmQgcHRyW2VzaSArIDB4MmNdOworCisgICAgICAgIGNvcHlBcmdzTG9vcDoKKyAgICAg
ICAgICAgIHRlc3QgZWR4LCBlZHg7CisgICAgICAgICAgICBqeiBjb3B5QXJnc0RvbmU7CisgICAg
ICAgICAgICBzdWIgZWR4LCAxOworICAgICAgICAgICAgbW92IGVjeCwgZHdvcmQgcHRyIDBbZWF4
ICsgZWR4ICogOF07CisgICAgICAgICAgICBtb3YgZWJ4LCBkd29yZCBwdHIgNFtlYXggKyBlZHgg
KiA4XTsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHIgMHgzMFtlYnAgKyBlZHggKiA4XSwgZWN4
OworICAgICAgICAgICAgbW92IGR3b3JkIHB0ciAweDM0W2VicCArIGVkeCAqIDhdLCBlYng7Cisg
ICAgICAgICAgICBqbXAgY29weUFyZ3NMb29wOworCisgICAgICAgIGNvcHlBcmdzRG9uZToKKyAg
ICAgICAgICAgIG1vdiBlY3gsIGR3b3JkIHB0cltlc3AgKyAweDM0XTsKKyAgICAgICAgICAgIG1v
diBkd29yZCBwdHJbZWN4XSwgZWJwOworCisgICAgICAgICAgICBjYWxsIGR3b3JkIHB0cltlc3Ag
KyAweDMwXTsKKworICAgICAgICAgICAgY21wIGR3b3JkIHB0cltlYnAgKyA4XSwgMTsKKyAgICAg
ICAgICAgIGplIGNhbGxlZUZyYW1lUG9wcGVkOworICAgICAgICAgICAgbW92IGVicCwgZHdvcmQg
cHRyW2VicF07CisKKyAgICAgICAgY2FsbGVlRnJhbWVQb3BwZWQ6CisgICAgICAgICAgICBtb3Yg
ZWN4LCBkd29yZCBwdHJbZWJwICsgMHgxOF07CisgICAgICAgICAgICBtb3YgZWJ4LCBkd29yZCBw
dHJbZWJwICsgMHgxMF07CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyW2VjeF0sIGVieDsKKwog
ICAgICAgICAgICAgYWRkIGVzcCwgMHgxYzsKICAgICAgICAgICAgIHBvcCBlYng7CiAgICAgICAg
ICAgICBwb3AgZWRpOwpAQCAtMjQyLDYgKzMxNywxMDkgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAg
ICAgICByZXQ7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBfX2RlY2xzcGVjKG5ha2VkKSBFbmNv
ZGVkSlNWYWx1ZSBjYWxsVG9OYXRpdmVGdW5jdGlvbih2b2lkKiBjb2RlLCBFeGVjU3RhdGUqKiwg
UHJvdG9DYWxsRnJhbWUqLCBSZWdpc3RlciopCisgICAgeworICAgICAgICBfX2FzbSB7CisgICAg
ICAgICAgICBtb3YgZWR4LCBbZXNwXQorICAgICAgICAgICAgcHVzaCBlYnA7CisgICAgICAgICAg
ICBtb3YgZWF4LCBlYnA7CisgICAgICAgICAgICBtb3YgZWJwLCBlc3A7CisgICAgICAgICAgICBw
dXNoIGVzaTsKKyAgICAgICAgICAgIHB1c2ggZWRpOworICAgICAgICAgICAgcHVzaCBlYng7Cisg
ICAgICAgICAgICBzdWIgZXNwLCAweDFjOworICAgICAgICAgICAgbW92IGVjeCwgW2VzcCArIDB4
MzRdOworICAgICAgICAgICAgbW92IGVzaSwgW2VzcCArIDB4MzhdOworICAgICAgICAgICAgbW92
IGVicCwgW2VzcCArIDB4M2NdOworICAgICAgICAgICAgc3ViIGVicCwgMHgyMDsKKyAgICAgICAg
ICAgIG1vdiBkd29yZCBwdHJbZWJwICsgMHgyNF0sIDA7CisgICAgICAgICAgICBtb3YgZHdvcmQg
cHRyW2VicCArIDB4MjBdLCAwOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAgKyAweDFj
XSwgMDsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHJbZWJwICsgMHgxOF0sIGVjeDsKKyAgICAg
ICAgICAgIG1vdiBlYngsIFtlY3hdOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnAgKyAw
eDE0XSwgMDsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHJbZWJwICsgMHgxMF0sIGVieDsKKyAg
ICAgICAgICAgIG1vdiBkd29yZCBwdHJbZWJwICsgMHhjXSwgMDsKKyAgICAgICAgICAgIG1vdiBk
d29yZCBwdHJbZWJwICsgMHg4XSwgMTsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHJbZWJwICsg
MHg0XSwgZWR4OworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlYnBdLCBlYXg7CisgICAgICAg
ICAgICBtb3YgZWF4LCBlYnA7CisKKyAgICAgICAgICAgIG1vdiBlZHgsIGR3b3JkIHB0cltlc2kg
KyAweDI4XTsKKyAgICAgICAgICAgIGFkZCBlZHgsIDU7CisgICAgICAgICAgICBzYWwgZWR4LCAz
OworICAgICAgICAgICAgc3ViIGVicCwgZWR4OworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltl
YnBdLCBlYXg7CisKKyAgICAgICAgICAgIG1vdiBlYXgsIDU7CisKKyAgICAgICAgY29weUhlYWRl
ckxvb3A6CisgICAgICAgICAgICBzdWIgZWF4LCAxOworICAgICAgICAgICAgbW92IGVjeCwgZHdv
cmQgcHRyW2VzaSArIGVheCAqIDhdOworICAgICAgICAgICAgbW92IGR3b3JkIHB0ciA4W2VicCAr
IGVheCAqIDhdLCBlY3g7CisgICAgICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHIgNFtlc2kgKyBl
YXggKiA4XTsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHIgMTJbZWJwICsgZWF4ICogOF0sIGVj
eDsKKyAgICAgICAgICAgIHRlc3QgZWF4LCBlYXg7CisgICAgICAgICAgICBqbnogY29weUhlYWRl
ckxvb3A7CisKKyAgICAgICAgICAgIG1vdiBlZHgsIGR3b3JkIHB0cltlc2kgKyAweDE4XTsKKyAg
ICAgICAgICAgIHN1YiBlZHgsIDE7CisgICAgICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHJbZXNp
ICsgMHgyOF07CisgICAgICAgICAgICBzdWIgZWN4LCAxOworCisgICAgICAgICAgICBjbXAgZWR4
LCBlY3g7CisgICAgICAgICAgICBqZSBjb3B5QXJnczsKKworICAgICAgICAgICAgeG9yIGVheCwg
ZWF4OworICAgICAgICAgICAgbW92IGVieCwgLTQ7CisKKyAgICAgICAgZmlsbEV4dHJhQXJnc0xv
b3A6CisgICAgICAgICAgICBzdWIgZWN4LCAxOworICAgICAgICAgICAgbW92IGR3b3JkIHB0ciAw
eDMwW2VicCArIGVjeCAqIDhdLCBlYXg7ICAgICAgICAgICAgCisgICAgICAgICAgICBtb3YgZHdv
cmQgcHRyIDB4MzRbZWJwICsgZWN4ICogOF0sIGVieDsKKyAgICAgICAgICAgIGNtcCBlZHgsIGVj
eDsKKyAgICAgICAgICAgIGpuZSBmaWxsRXh0cmFBcmdzTG9vcDsKKworICAgICAgICBjb3B5QXJn
czoKKyAgICAgICAgICAgIG1vdiBlYXgsIGR3b3JkIHB0cltlc2kgKyAweDJjXTsKKworICAgICAg
ICBjb3B5QXJnc0xvb3A6CisgICAgICAgICAgICB0ZXN0IGVkeCwgZWR4OworICAgICAgICAgICAg
anogY29weUFyZ3NEb25lOworICAgICAgICAgICAgc3ViIGVkeCwgMTsKKyAgICAgICAgICAgIG1v
diBlY3gsIGR3b3JkIHB0ciAwW2VheCArIGVkeCAqIDhdOworICAgICAgICAgICAgbW92IGVieCwg
ZHdvcmQgcHRyIDRbZWF4ICsgZWR4ICogOF07CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyIDB4
MzBbZWJwICsgZWR4ICogOF0sIGVjeDsKKyAgICAgICAgICAgIG1vdiBkd29yZCBwdHIgMHgzNFtl
YnAgKyBlZHggKiA4XSwgZWJ4OworICAgICAgICAgICAgam1wIGNvcHlBcmdzTG9vcDsKKworICAg
ICAgICBjb3B5QXJnc0RvbmU6CisgICAgICAgICAgICBtb3YgZWN4LCBkd29yZCBwdHJbZXNwICsg
MHgzNF07CisgICAgICAgICAgICBtb3YgZHdvcmQgcHRyW2VjeF0sIGVicDsKKworICAgICAgICAg
ICAgbW92IGVkaSwgZHdvcmQgcHRyW2VzcCArIDB4MzBdOworICAgICAgICAgICAgbW92IGR3b3Jk
IHB0cltlc3AgKyAweDMwXSwgZWJwOworICAgICAgICAgICAgbW92IGVjeCwgZWJwOworICAgICAg
ICAgICAgY2FsbCBlZGk7CisKKyAgICAgICAgICAgIGNtcCBkd29yZCBwdHJbZWJwICsgOF0sIDE7
CisgICAgICAgICAgICBqZSBjYWxsZWVGcmFtZVBvcHBlZDsKKyAgICAgICAgICAgIG1vdiBlYnAs
IGR3b3JkIHB0cltlYnBdOworCisgICAgICAgIGNhbGxlZUZyYW1lUG9wcGVkOgorICAgICAgICAg
ICAgbW92IGVjeCwgZHdvcmQgcHRyW2VicCArIDB4MThdOworICAgICAgICAgICAgbW92IGVieCwg
ZHdvcmQgcHRyW2VicCArIDB4MTBdOworICAgICAgICAgICAgbW92IGR3b3JkIHB0cltlY3hdLCBl
Yng7CisKKyAgICAgICAgICAgIGFkZCBlc3AsIDB4MWM7CisgICAgICAgICAgICBwb3AgZWJ4Owor
ICAgICAgICAgICAgcG9wIGVkaTsKKyAgICAgICAgICAgIHBvcCBlc2k7CisgICAgICAgICAgICBw
b3AgZWJwOworICAgICAgICAgICAgcmV0OworICAgICAgICB9CisgICAgfQogfQogCiAjZW5kaWYg
Ly8gQ09NUElMRVIoTVNWQykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAxNjAwNjkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQAogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgogI2lu
Y2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgi
Ci0KKyNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24g
MTYwMDY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxNCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IEV4ZWNTdGF0ZTsKK2NsYXNzIFJlZ2lzdGVyOwogY2xhc3MgVk07CitzdHJ1Y3QgUHJvdG9DYWxs
RnJhbWU7CiAKIGV4dGVybiAiQyIgewotICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxUb0phdmFTY3Jp
cHQodm9pZCosIEV4ZWNTdGF0ZSopOworICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxUb0phdmFTY3Jp
cHQodm9pZCosIEV4ZWNTdGF0ZSoqLCBQcm90b0NhbGxGcmFtZSosIFJlZ2lzdGVyKik7CiAgICAg
dm9pZCByZXR1cm5Gcm9tSmF2YVNjcmlwdCgpOworICAgIEVuY29kZWRKU1ZhbHVlIGNhbGxUb05h
dGl2ZUZ1bmN0aW9uKHZvaWQqLCBFeGVjU3RhdGUqKiwgUHJvdG9DYWxsRnJhbWUqLCBSZWdpc3Rl
ciopOwogfQogCiBuYW1lc3BhY2UgTExJbnQgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlz
aW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMzcgKzE3MCw3MSBAQCBtYWNy
byBmdW5jdGlvbkVwaWxvZ3VlKGV4dHJhU3RhY2tTcGFjZSkKICAgICBlbmQKIGVuZAogCi1tYWNy
byBkb0NhbGxUb0phdmFTY3JpcHQoKQorbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxs
LCBkb1JldHVybikKICAgICBpZiBYODYKKyAgICAgICAgY29uc3QgZW50cnkgPSB0NQorICAgICAg
ICBjb25zdCB2bVRvcENhbGxGcmFtZSA9IHQyCisgICAgICAgIGNvbnN0IHByb3RvQ2FsbEZyYW1l
ID0gdDQKKwogICAgICAgICBjb25zdCBleHRyYVN0YWNrU3BhY2UgPSAyOAogICAgICAgICBjb25z
dCBwcmV2aW91c0NGUiA9IHQwCiAgICAgICAgIGNvbnN0IHByZXZpb3VzUEMgPSB0MQotICAgICAg
ICBjb25zdCBlbnRyeSA9IHQ1Ci0gICAgICAgIGNvbnN0IG5ld0NhbGxGcmFtZSA9IHQ0CisgICAg
ICAgIGNvbnN0IHRlbXAxID0gdDAgIyBTYW1lIGFzIHByZXZpb3VzQ0ZSCisgICAgICAgIGNvbnN0
IHRlbXAyID0gdDEgIyBTYW1lIGFzIHByZXZpb3VzUEMKKyAgICAgICAgY29uc3QgdGVtcDMgPSB0
MiAjIHNhbWUgYXMgdm1Ub3BDYWxsRnJhbWUKKyAgICAgICAgY29uc3QgdGVtcDQgPSB0MwogICAg
IGVsc2lmIEFSTSBvciBBUk12N19UUkFESVRJT05BTAorICAgICAgICBjb25zdCBlbnRyeSA9IGEw
CisgICAgICAgIGNvbnN0IHZtVG9wQ2FsbEZyYW1lID0gYTEKKyAgICAgICAgY29uc3QgcHJvdG9D
YWxsRnJhbWUgPSBhMgorICAgICAgICBjb25zdCB0b3BPZlN0YWNrID0gYTMKKwogICAgICAgICBj
b25zdCBleHRyYVN0YWNrU3BhY2UgPSAxNgotICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQz
ICAKKyAgICAgICAgY29uc3QgcHJldmlvdXNDRlIgPSB0MwogICAgICAgICBjb25zdCBwcmV2aW91
c1BDID0gbHIKLSAgICAgICAgY29uc3QgZW50cnkgPSBhMAotICAgICAgICBjb25zdCBuZXdDYWxs
RnJhbWUgPSBhMQorICAgICAgICBjb25zdCB0ZW1wMSA9IHQzICMgU2FtZSBhcyBwcmV2aW91c0NG
UgorICAgICAgICBjb25zdCB0ZW1wMiA9IGEzICMgU2FtZSBhcyB0b3BPZlN0YWNrCisgICAgICAg
IGNvbnN0IHRlbXAzID0gdDQKKyAgICAgICAgY29uc3QgdGVtcDQgPSB0NQogICAgIGVsc2lmIEFS
TXY3CisgICAgICAgIGNvbnN0IGVudHJ5ID0gYTAKKyAgICAgICAgY29uc3Qgdm1Ub3BDYWxsRnJh
bWUgPSBhMQorICAgICAgICBjb25zdCBwcm90b0NhbGxGcmFtZSA9IGEyCisgICAgICAgIGNvbnN0
IHRvcE9mU3RhY2sgPSBhMworCiAgICAgICAgIGNvbnN0IGV4dHJhU3RhY2tTcGFjZSA9IDI4Ci0g
ICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDMgIAorICAgICAgICBjb25zdCBwcmV2aW91c0NG
UiA9IHQzCiAgICAgICAgIGNvbnN0IHByZXZpb3VzUEMgPSBscgotICAgICAgICBjb25zdCBlbnRy
eSA9IGEwCi0gICAgICAgIGNvbnN0IG5ld0NhbGxGcmFtZSA9IGExCisgICAgICAgIGNvbnN0IHRl
bXAxID0gdDMgIyBTYW1lIGFzIHByZXZpb3VzQ0ZSCisgICAgICAgIGNvbnN0IHRlbXAyID0gYTMg
IyBTYW1lIGFzIHRvcE9mU3RhY2sKKyAgICAgICAgY29uc3QgdGVtcDMgPSB0NAorICAgICAgICBj
b25zdCB0ZW1wNCA9IHQ1CiAgICAgZWxzaWYgTUlQUworICAgICAgICBjb25zdCBlbnRyeSA9IGEw
CisgICAgICAgIGNvbnN0IHZtVG9wQ2FsbEZyYW1lID0gYTEKKyAgICAgICAgY29uc3QgcHJvdG9D
YWxsRnJhbWUgPSBhMgorICAgICAgICBjb25zdCB0b3BPZlN0YWNrID0gYTMKKwogICAgICAgICBj
b25zdCBleHRyYVN0YWNrU3BhY2UgPSAzNgogICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQy
CiAgICAgICAgIGNvbnN0IHByZXZpb3VzUEMgPSBscgotICAgICAgICBjb25zdCBlbnRyeSA9IGEw
Ci0gICAgICAgIGNvbnN0IG5ld0NhbGxGcmFtZSA9IGExCisgICAgICAgIGNvbnN0IHRlbXAxID0g
dDMKKyAgICAgICAgY29uc3QgdGVtcDIgPSB0NAorICAgICAgICBjb25zdCB0ZW1wMyA9IHQ1Cisg
ICAgICAgIGNvbnN0IHRlbXA0ID0gdDYKICAgICBlbHNpZiBTSDQKKyAgICAgICAgY29uc3QgZW50
cnkgPSBhMAorICAgICAgICBjb25zdCB2bVRvcENhbGxGcmFtZSA9IGExCisgICAgICAgIGNvbnN0
IHByb3RvQ2FsbEZyYW1lID0gYTIKKyAgICAgICAgY29uc3QgdG9wT2ZTdGFjayA9IGEzCisKICAg
ICAgICAgY29uc3QgZXh0cmFTdGFja1NwYWNlID0gMjAKLSAgICAgICAgY29uc3QgcHJldmlvdXND
RlIgPSB0MyAgCisgICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDMKICAgICAgICAgY29uc3Qg
cHJldmlvdXNQQyA9IGxyCi0gICAgICAgIGNvbnN0IGVudHJ5ID0gYTAKLSAgICAgICAgY29uc3Qg
bmV3Q2FsbEZyYW1lID0gYTEKKyAgICAgICAgY29uc3QgdGVtcDEgPSB0MyAjIFNhbWUgYXMgcHJl
dmlvdXNDRlIKKyAgICAgICAgY29uc3QgdGVtcDIgPSBhMyAjIFNhbWUgYXMgdG9wT2ZTdGFjawor
ICAgICAgICBjb25zdCB0ZW1wMyA9IHQ0CisgICAgICAgIGNvbnN0IHRlbXA0ID0gdDUKICAgICBl
bmQKIAogICAgIGlmIFg4NgpAQCAtMjEwLDIyICsyNDQsMTE2IEBAIG1hY3JvIGRvQ2FsbFRvSmF2
YVNjcmlwdCgpCiAgICAgZnVuY3Rpb25Qcm9sb2d1ZShleHRyYVN0YWNrU3BhY2UpCiAgICAgaWYg
WDg2CiAgICAgICAgIGxvYWRwIGV4dHJhU3RhY2tTcGFjZSsyMFtzcF0sIGVudHJ5Ci0gICAgICAg
IGxvYWRwIGV4dHJhU3RhY2tTcGFjZSsyNFtzcF0sIG5ld0NhbGxGcmFtZQorICAgICAgICBsb2Fk
cCBleHRyYVN0YWNrU3BhY2UrMjRbc3BdLCB2bVRvcENhbGxGcmFtZQorICAgICAgICBsb2FkcCBl
eHRyYVN0YWNrU3BhY2UrMjhbc3BdLCBwcm90b0NhbGxGcmFtZQorICAgICAgICBsb2FkcCBleHRy
YVN0YWNrU3BhY2UrMzJbc3BdLCBjZnIKICAgICBlbHNlCiAgICAgICAgIG1vdmUgY2ZyLCBwcmV2
aW91c0NGUgorICAgICAgICBtb3ZlIHRvcE9mU3RhY2ssIGNmcgorICAgIGVuZAorCisgICAgc3Vi
cCAoQ2FsbEZyYW1lSGVhZGVyU2xvdHMtMSkqOCwgY2ZyCisgICAgc3RvcmVwIDAsIEFyZ3VtZW50
Q291bnQrNFtjZnJdCisgICAgc3RvcmVwIDAsIEFyZ3VtZW50Q291bnRbY2ZyXQorICAgIHN0b3Jl
cCAwLCBDYWxsZWUrNFtjZnJdCisgICAgc3RvcmVwIHZtVG9wQ2FsbEZyYW1lLCBDYWxsZWVbY2Zy
XQorICAgIGxvYWRwIFt2bVRvcENhbGxGcmFtZV0sIHRlbXA0CisgICAgc3RvcmVwIDAsIFNjb3Bl
Q2hhaW4rNFtjZnJdCisgICAgc3RvcmVwIHRlbXA0LCBTY29wZUNoYWluW2Nmcl0KKyAgICBzdG9y
ZXAgMCwgQ29kZUJsb2NrKzRbY2ZyXQorICAgIHN0b3JlcCAxLCBDb2RlQmxvY2tbY2ZyXQorICAg
IHN0b3JlcCBwcmV2aW91c1BDLCBSZXR1cm5QQ1tjZnJdCisgICAgc3RvcmVwIHByZXZpb3VzQ0ZS
LCBDYWxsZXJGcmFtZVtjZnJdCisgICAgbW92ZSBjZnIsIHRlbXAxCisKKyAgICBsb2FkaSBQcm90
b0NhbGxGcmFtZTo6cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxsRnJhbWVdLCB0ZW1wMgorICAgIGFk
ZHAgQ2FsbEZyYW1lSGVhZGVyU2xvdHMsIHRlbXAyLCB0ZW1wMgorICAgIGxzaGlmdHAgMywgdGVt
cDIKKyAgICBzdWJwIHRlbXAyLCBjZnIKKyAgICBzdG9yZXAgdGVtcDEsIENhbGxlckZyYW1lW2Nm
cl0KKworICAgIG1vdmUgNSwgdGVtcDEKKworLmNvcHlIZWFkZXJMb29wOgorICAgIHN1YmkgMSwg
dGVtcDEKKyAgICBsb2FkcCBbcHJvdG9DYWxsRnJhbWUsIHRlbXAxLCA4XSwgdGVtcDMKKyAgICBz
dG9yZXAgdGVtcDMsIENvZGVCbG9ja1tjZnIsIHRlbXAxLCA4XQorICAgIGxvYWRwIDRbcHJvdG9D
YWxsRnJhbWUsIHRlbXAxLCA4XSwgdGVtcDMKKyAgICBzdG9yZXAgdGVtcDMsIENvZGVCbG9jays0
W2NmciwgdGVtcDEsIDhdCisgICAgYnRpbnogdGVtcDEsIC5jb3B5SGVhZGVyTG9vcAorCisgICAg
bG9hZGkgUHJvdG9DYWxsRnJhbWU6OmFyZ0NvdW50QW5kQ29kZU9yaWdpblZhbHVlW3Byb3RvQ2Fs
bEZyYW1lXSwgdGVtcDIKKyAgICBzdWJpIDEsIHRlbXAyCisgICAgbG9hZGkgUHJvdG9DYWxsRnJh
bWU6OnBhZGRlZEFyZ0NvdW50W3Byb3RvQ2FsbEZyYW1lXSwgdGVtcDMKKyAgICBzdWJpIDEsIHRl
bXAzCisKKyAgICBiaWVxIHRlbXAyLCB0ZW1wMywgLmNvcHlBcmdzCisgICAgbW92ZSAwLCB0ZW1w
MQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0ZW1wNAorLmZpbGxFeHRyYUFyZ3NMb29wOgorICAg
IHN1YmkgMSwgdGVtcDMKKyAgICBzdG9yZXAgdGVtcDEsIFRoaXNBcmd1bWVudE9mZnNldCs4K1Bh
eWxvYWRPZmZzZXRbY2ZyLCB0ZW1wMywgOF0KKyAgICBzdG9yZXAgdGVtcDQsIFRoaXNBcmd1bWVu
dE9mZnNldCs4K1RhZ09mZnNldFtjZnIsIHRlbXAzLCA4XQorICAgIGJpbmVxIHRlbXAyLCB0ZW1w
MywgLmZpbGxFeHRyYUFyZ3NMb29wCisKKy5jb3B5QXJnczoKKyAgICBsb2FkcCBQcm90b0NhbGxG
cmFtZTo6YXJnc1twcm90b0NhbGxGcmFtZV0sIHRlbXAxCisKKy5jb3B5QXJnc0xvb3A6CisgICAg
YnRpeiB0ZW1wMiwgLmNvcHlBcmdzRG9uZQorICAgIHN1YmkgMSwgdGVtcDIKKyAgICBsb2FkcCBQ
YXlsb2FkT2Zmc2V0W3RlbXAxLCB0ZW1wMiwgOF0sIHRlbXAzCisgICAgbG9hZHAgVGFnT2Zmc2V0
W3RlbXAxLCB0ZW1wMiwgOF0sIHRlbXA0CisgICAgc3RvcmVwIHRlbXAzLCBUaGlzQXJndW1lbnRP
ZmZzZXQrOCtQYXlsb2FkT2Zmc2V0W2NmciwgdGVtcDIsIDhdCisgICAgc3RvcmVwIHRlbXA0LCBU
aGlzQXJndW1lbnRPZmZzZXQrOCtUYWdPZmZzZXRbY2ZyLCB0ZW1wMiwgOF0KKyAgICBqbXAgLmNv
cHlBcmdzTG9vcAorCisuY29weUFyZ3NEb25lOgorICAgIGlmIFg4NgorICAgICAgICBsb2FkcCBl
eHRyYVN0YWNrU3BhY2UrMjRbc3BdLCB2bVRvcENhbGxGcmFtZQogICAgIGVuZAorICAgIHN0b3Jl
cCBjZnIsIFt2bVRvcENhbGxGcmFtZV0KKworICAgIG1ha2VDYWxsKGVudHJ5LCB0ZW1wMSkKKwor
ICAgIGJwZXEgQ29kZUJsb2NrW2Nmcl0sIDEsIC5jYWxsZWVGcmFtZVBvcHBlZAorICAgIGxvYWRw
IENhbGxlckZyYW1lW2Nmcl0sIGNmcgorCisuY2FsbGVlRnJhbWVQb3BwZWQ6CisgICAgbG9hZHAg
Q2FsbGVlW2Nmcl0sIHRlbXAzICMgVk0udG9wQ2FsbEZyYW1lCisgICAgbG9hZHAgU2NvcGVDaGFp
bltjZnJdLCB0ZW1wNAorICAgIHN0b3JlcCB0ZW1wNCwgW3RlbXAzXQogCi0gICAgbW92ZSBuZXdD
YWxsRnJhbWUsIGNmcgotICAgIGxvYWRwIFtjZnJdLCBuZXdDYWxsRnJhbWUKLSAgICBzdG9yZXAg
cHJldmlvdXNDRlIsIFtuZXdDYWxsRnJhbWVdCi0gICAgc3RvcmVwIHByZXZpb3VzUEMsIDRbbmV3
Q2FsbEZyYW1lXQorICAgIGRvUmV0dXJuKGV4dHJhU3RhY2tTcGFjZSkKK2VuZAorCittYWNybyBt
YWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXApCiAgICAgY2FsbCBlbnRyeQorZW5kCiAKK21h
Y3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCB0ZW1wKQorICAgIG1vdmUgZW50cnksIHRl
bXAKKyAgICBpZiBYODYKKyAgICAgICAgIyBQdXQgY2ZyIG9uIHN0YWNrIGFzIGFyZzAsIGFsc28g
cHV0IGl0IGluIGVjeCBmb3IgImZhc3RjYWxsIiB0YXJnZXRzCisgICAgICAgIHBva2UgY2ZyLCAw
CisgICAgICAgIG1vdmUgY2ZyLCB0MgorICAgIGVsc2UKKyAgICAgICAgbW92ZSBjZnIsIGEwCisg
ICAgZW5kCisgICAgY2FsbCB0ZW1wCitlbmQKKworbWFjcm8gZG9SZXR1cm5Gcm9tSmF2YVNjcmlw
dChleHRyYVN0YWNrU3BhY2UpCiBfcmV0dXJuRnJvbUphdmFTY3JpcHQ6CiAgICAgZnVuY3Rpb25F
cGlsb2d1ZShleHRyYVN0YWNrU3BhY2UpCiAgICAgcmV0CiBlbmQKIAorbWFjcm8gZG9SZXR1cm5G
cm9tSG9zdEZ1bmN0aW9uKGV4dHJhU3RhY2tTcGFjZSkKKyAgICBmdW5jdGlvbkVwaWxvZ3VlKGV4
dHJhU3RhY2tTcGFjZSkKKyAgICByZXQKK2VuZAorCiAjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYg
eW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0u
IGZyb21XaGVyZQogIyBzaG91bGQgYmUgYW4gaW1tZWRpYXRlIGludGVnZXIgLSBhbnkgaW50ZWdl
ciB5b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBwbGFjZSB5b3UncmUKICMgZGVidWdn
aW5nIGZyb20uIG9wZXJhbmQgc2hvdWxkIGxpa2V3aXNlIGJlIGFuIGltbWVkaWF0ZSwgYW5kIHNo
b3VsZCBpZGVudGlmeSB0aGUgb3BlcmFuZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE2MDA2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjUgKzExMywzMSBAQCBtYWNybyBmdW5jdGlvbkVw
aWxvZ3VlKGV4dHJhU3RhY2tTcGFjZSkKICAgICBlbmQKIGVuZAogCi1tYWNybyBkb0NhbGxUb0ph
dmFTY3JpcHQoKQorbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VDYWxsLCBkb1JldHVybikK
ICAgICBpZiBYODZfNjQKKyAgICAgICAgY29uc3QgZW50cnkgPSB0NQorICAgICAgICBjb25zdCB2
bVRvcENhbGxGcmFtZSA9IHQ0CisgICAgICAgIGNvbnN0IHByb3RvQ2FsbEZyYW1lID0gdDEKKyAg
ICAgICAgY29uc3QgdG9wT2ZTdGFjayA9IHQyCisKICAgICAgICAgY29uc3QgZXh0cmFTdGFja1Nw
YWNlID0gOAogICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQwCiAgICAgICAgIGNvbnN0IHBy
ZXZpb3VzUEMgPSB0NgotICAgICAgICBjb25zdCBlbnRyeSA9IHQ1Ci0gICAgICAgIGNvbnN0IG5l
d0NhbGxGcmFtZSA9IHQ0CisgICAgICAgIGNvbnN0IHRlbXAxID0gdDAKKyAgICAgICAgY29uc3Qg
dGVtcDIgPSB0MworICAgICAgICBjb25zdCB0ZW1wMyA9IHQ2CiAgICAgZWxzaWYgQVJNNjQKLSAg
ICAgICAgY29uc3QgZXh0cmFTdGFja1NwYWNlID0gMAotICAgICAgICBjb25zdCBwcmV2aW91c0NG
UiA9IHQ0Ci0gICAgICAgIGNvbnN0IHByZXZpb3VzUEMgPSBscgogICAgICAgICBjb25zdCBlbnRy
eSA9IGEwCi0gICAgICAgIGNvbnN0IG5ld0NhbGxGcmFtZSA9IGExCi0gICAgZWxzaWYgQ19MT09Q
CisgICAgICAgIGNvbnN0IHZtVG9wQ2FsbEZyYW1lID0gYTEKKyAgICAgICAgY29uc3QgcHJvdG9D
YWxsRnJhbWUgPSBhMgorICAgICAgICBjb25zdCB0b3BPZlN0YWNrID0gYTMKKwogICAgICAgICBj
b25zdCBleHRyYVN0YWNrU3BhY2UgPSAwCi0gICAgICAgIGNvbnN0IHByZXZpb3VzQ0ZSID0gdDQg
IAorICAgICAgICBjb25zdCBwcmV2aW91c0NGUiA9IHQ0CiAgICAgICAgIGNvbnN0IHByZXZpb3Vz
UEMgPSBscgotICAgICAgICBjb25zdCBlbnRyeSA9IGEwCi0gICAgICAgIGNvbnN0IG5ld0NhbGxG
cmFtZSA9IGExCisgICAgICAgIGNvbnN0IHRlbXAxID0gdDMKKyAgICAgICAgY29uc3QgdGVtcDIg
PSB0NQorICAgICAgICBjb25zdCB0ZW1wMyA9IHQ2CiAgICAgZW5kCiAKICAgICBpZiBYODZfNjQK
QEAgLTE0MCwxOSArMTQ2LDk3IEBAIG1hY3JvIGRvQ2FsbFRvSmF2YVNjcmlwdCgpCiAgICAgbW92
ZSBjZnIsIHByZXZpb3VzQ0ZSCiAgICAgZnVuY3Rpb25Qcm9sb2d1ZShleHRyYVN0YWNrU3BhY2Up
CiAKLSAgICBtb3ZlIG5ld0NhbGxGcmFtZSwgY2ZyCi0gICAgbG9hZHAgW2Nmcl0sIG5ld0NhbGxG
cmFtZQotICAgIHN0b3JlcCBwcmV2aW91c0NGUiwgW25ld0NhbGxGcmFtZV0KLSAgICBzdG9yZXAg
cHJldmlvdXNQQywgOFtuZXdDYWxsRnJhbWVdCisgICAgbW92ZSB0b3BPZlN0YWNrLCBjZnIKKyAg
ICBzdWJwIChDYWxsRnJhbWVIZWFkZXJTbG90cy0xKSo4LCBjZnIKKyAgICBzdG9yZXAgMCwgQXJn
dW1lbnRDb3VudFtjZnJdCisgICAgc3RvcmVwIHZtVG9wQ2FsbEZyYW1lLCBDYWxsZWVbY2ZyXQor
ICAgIGxvYWRwIFt2bVRvcENhbGxGcmFtZV0sIHRlbXAxCisgICAgc3RvcmVwIHRlbXAxLCBTY29w
ZUNoYWluW2Nmcl0KKyAgICBzdG9yZXAgMSwgQ29kZUJsb2NrW2Nmcl0KKyAgICBzdG9yZXAgcHJl
dmlvdXNQQywgUmV0dXJuUENbY2ZyXQorICAgIHN0b3JlcCBwcmV2aW91c0NGUiwgQ2FsbGVyRnJh
bWVbY2ZyXQorICAgIG1vdmUgY2ZyLCB0ZW1wMQorCisgICAgbG9hZGkgUHJvdG9DYWxsRnJhbWU6
OnBhZGRlZEFyZ0NvdW50W3Byb3RvQ2FsbEZyYW1lXSwgdGVtcDIKKyAgICBhZGRwIENhbGxGcmFt
ZUhlYWRlclNsb3RzLCB0ZW1wMiwgdGVtcDIKKyAgICBsc2hpZnRwIDMsIHRlbXAyCisgICAgc3Vi
cCB0ZW1wMiwgY2ZyCisgICAgc3RvcmVwIHRlbXAxLCBDYWxsZXJGcmFtZVtjZnJdCisKKyAgICBt
b3ZlIDUsIHRlbXAxCisKKy5jb3B5SGVhZGVyTG9vcDoKKyAgICBzdWJpIDEsIHRlbXAxCisgICAg
bG9hZHAgW3Byb3RvQ2FsbEZyYW1lLCB0ZW1wMSwgOF0sIHRlbXAzCisgICAgc3RvcmVwIHRlbXAz
LCBDb2RlQmxvY2tbY2ZyLCB0ZW1wMSwgOF0KKyAgICBidGlueiB0ZW1wMSwgLmNvcHlIZWFkZXJM
b29wCisKKyAgICBsb2FkaSBQcm90b0NhbGxGcmFtZTo6YXJnQ291bnRBbmRDb2RlT3JpZ2luVmFs
dWVbcHJvdG9DYWxsRnJhbWVdLCB0ZW1wMgorICAgIHN1YmkgMSwgdGVtcDIKKyAgICBsb2FkaSBQ
cm90b0NhbGxGcmFtZTo6cGFkZGVkQXJnQ291bnRbcHJvdG9DYWxsRnJhbWVdLCB0ZW1wMworICAg
IHN1YmkgMSwgdGVtcDMKKworICAgIGJpZXEgdGVtcDIsIHRlbXAzLCAuY29weUFyZ3MKKyAgICBt
b3ZlIFZhbHVlVW5kZWZpbmVkLCB0ZW1wMQorLmZpbGxFeHRyYUFyZ3NMb29wOgorICAgIHN1Ymkg
MSwgdGVtcDMKKyAgICBzdG9yZXAgdGVtcDEsIFRoaXNBcmd1bWVudE9mZnNldCs4W2NmciwgdGVt
cDMsIDhdCisgICAgYmluZXEgdGVtcDIsIHRlbXAzLCAuZmlsbEV4dHJhQXJnc0xvb3AKKworLmNv
cHlBcmdzOgorICAgIGxvYWRwIFByb3RvQ2FsbEZyYW1lOjphcmdzW3Byb3RvQ2FsbEZyYW1lXSwg
dGVtcDEKKworLmNvcHlBcmdzTG9vcDoKKyAgICBidGl6IHRlbXAyLCAuY29weUFyZ3NEb25lCisg
ICAgc3ViaSAxLCB0ZW1wMgorICAgIGxvYWRwIFt0ZW1wMSwgdGVtcDIsIDhdLCB0ZW1wMworICAg
IHN0b3JlcCB0ZW1wMywgVGhpc0FyZ3VtZW50T2Zmc2V0KzhbY2ZyLCB0ZW1wMiwgOF0KKyAgICBq
bXAgLmNvcHlBcmdzTG9vcAorCisuY29weUFyZ3NEb25lOgorICAgIHN0b3JlcCBjZnIsIFt2bVRv
cENhbGxGcmFtZV0KKwogICAgIG1vdmUgMHhmZmZmMDAwMDAwMDAwMDAwLCBjc3IxCiAgICAgYWRk
cCAyLCBjc3IxLCBjc3IyCisKKyAgICBtYWtlQ2FsbChlbnRyeSwgdGVtcDEpCisKKyAgICBicGVx
IENvZGVCbG9ja1tjZnJdLCAxLCAuY2FsbGVlRnJhbWVQb3BwZWQKKyAgICBsb2FkcCBDYWxsZXJG
cmFtZVtjZnJdLCBjZnIKKworLmNhbGxlZUZyYW1lUG9wcGVkOgorICAgIGxvYWRwIENhbGxlZVtj
ZnJdLCB0ZW1wMiAjIFZNLnRvcENhbGxGcmFtZQorICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwg
dGVtcDMKKyAgICBzdG9yZXAgdGVtcDMsIFt0ZW1wMl0KKworICAgIGRvUmV0dXJuKGV4dHJhU3Rh
Y2tTcGFjZSkKK2VuZAorCittYWNybyBtYWtlSmF2YVNjcmlwdENhbGwoZW50cnksIHRlbXApCiAg
ICAgY2FsbCBlbnRyeQorZW5kCiAKK21hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCB0
ZW1wKQorICAgIG1vdmUgZW50cnksIHRlbXAKKyAgICBpZiBYODZfNjQKKyAgICAgICAgbW92ZSBj
ZnIsIHQ1CisgICAgZWxzaWYgQVJNNjQgb3IgQ19MT09QCisgICAgICAgIG1vdmUgY2ZyLCBhMAor
ICAgIGVuZAorICAgIGNhbGwgdGVtcAorZW5kCisKK21hY3JvIGRvUmV0dXJuRnJvbUphdmFTY3Jp
cHQoZXh0cmFTdGFja1NwYWNlKQogX3JldHVybkZyb21KYXZhU2NyaXB0OgogICAgIGZ1bmN0aW9u
RXBpbG9ndWUoZXh0cmFTdGFja1NwYWNlKQogICAgIHJldAogZW5kCiAKK21hY3JvIGRvUmV0dXJu
RnJvbUhvc3RGdW5jdGlvbihleHRyYVN0YWNrU3BhY2UpCisgICAgZnVuY3Rpb25FcGlsb2d1ZShl
eHRyYVN0YWNrU3BhY2UpCisgICAgcmV0CitlbmQKKwogbWFjcm8gcHJlcGFyZVN0YXRlRm9yQ0Nh
bGwoKQogICAgIGxlYXAgW1BCLCBQQywgOF0sIFBDCiAgICAgbW92ZSBQQiwgdDMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20JKHJldmlzaW9uIDE2MDA2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDIzLDEyICs0MjMsMTYgQEAg
ZW5kCiAKIGlmIENfTE9PUAogZWxzZQotIyBzdHViIHRvIGNhbGwgaW50byBKYXZhU2NyaXB0Ci0j
IEVuY29kZWRKU1ZhbHVlIGNhbGxUb0phdmFTY3JpcHQodm9pZCogY29kZSwgUmVnaXN0ZXIqIHRv
cE9mU3RhY2spCi0jIE5vdGUsIGlmIHRoaXMgc3R1YiBvciBvbmUgb2YgaXQncyByZWxhdGVkIG1h
Y3JvcyBpcyBjaGFuZ2VkLCBtYWtlIHRoZQorIyBzdHViIHRvIGNhbGwgaW50byBKYXZhU2NyaXB0
IG9yIE5hdGl2ZSBmdW5jdGlvbnMKKyMgRW5jb2RlZEpTVmFsdWUgY2FsbFRvSmF2YVNjcmlwdCh2
b2lkKiBjb2RlLCBFeGVjU3RhdGUqKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUsIFJl
Z2lzdGVyKiB0b3BPZlN0YWNrKQorIyBFbmNvZGVkSlNWYWx1ZSBjYWxsVG9OYXRpdmVGdW5jdGlv
bih2b2lkKiBjb2RlLCBFeGVjU3RhdGUqKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUs
IFJlZ2lzdGVyKiB0b3BPZlN0YWNrKQorIyBOb3RlLCBpZiB0aGVzZSBzdHVicyBvciBvbmUgb2Yg
dGhlaXIgcmVsYXRlZCBtYWNyb3MgYXJlIGNoYW5nZWQsIG1ha2UgdGhlCiAjIGVxdWl2YWxlbnQg
Y2hhbmdlcyBpbiBqaXQvSklUU3R1YnNYODYuaCBhbmQvb3Igaml0L0pJVFN0dWJzTVNWQzY0LmFz
bQogX2NhbGxUb0phdmFTY3JpcHQ6Ci0gICAgZG9DYWxsVG9KYXZhU2NyaXB0KCkKKyAgICBkb0Nh
bGxUb0phdmFTY3JpcHQobWFrZUphdmFTY3JpcHRDYWxsLCBkb1JldHVybkZyb21KYXZhU2NyaXB0
KQorCitfY2FsbFRvTmF0aXZlRnVuY3Rpb246CisgICAgZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VI
b3N0RnVuY3Rpb25DYWxsLCBkb1JldHVybkZyb21Ib3N0RnVuY3Rpb24pCiBlbmQKIAogIyBJbmRp
Y2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gMTYwMDY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAg
cHJpdmF0ZToKIH07CiAKIGNsYXNzIEFyZ0xpc3QgeworICAgIGZyaWVuZCBjbGFzcyBJbnRlcnBy
ZXRlcjsKICAgICBmcmllbmQgY2xhc3MgSklUOwogcHVibGljOgogICAgIEFyZ0xpc3QoKQpAQCAt
MTcyLDYgKzE3Myw4IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdldFNs
aWNlKGludCBzdGFydEluZGV4LCBBcmdMaXN0JiByZXN1bHQpIGNvbnN0OwogCiBwcml2YXRlOgor
ICAgIEpTVmFsdWUqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2FyZ3M7IH0KKwogICAgIEpTVmFs
dWUqIG1fYXJnczsKICAgICBpbnQgbV9hcmdDb3VudDsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTYwMDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MjAsNyArMTMyMCwxMSBAQCBzdHJ1Y3QgQVZMVHJlZUFic3RyYWN0b3JGb3JBcnJheUNvbXBhcmUg
CiAgICAgICAgICAgICBtX2NhY2hlZENhbGwtPnNldFRoaXMoanNVbmRlZmluZWQoKSk7CiAgICAg
ICAgICAgICBtX2NhY2hlZENhbGwtPnNldEFyZ3VtZW50KDAsIHZhKTsKICAgICAgICAgICAgIG1f
Y2FjaGVkQ2FsbC0+c2V0QXJndW1lbnQoMSwgdmIpOworI2lmIEVOQUJMRShMTElOVF9DX0xPT1Ap
CiAgICAgICAgICAgICBjb21wYXJlUmVzdWx0ID0gbV9jYWNoZWRDYWxsLT5jYWxsKCkudG9OdW1i
ZXIobV9jYWNoZWRDYWxsLT5uZXdDYWxsRnJhbWUobV9leGVjKSk7CisjZWxzZQorICAgICAgICAg
ICAgY29tcGFyZVJlc3VsdCA9IG1fY2FjaGVkQ2FsbC0+Y2FsbCgpLnRvTnVtYmVyKG1fZXhlYyk7
CisjZW5kaWYKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3VtZW50czsKICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmEpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAxNjAwNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsNyArNTA0LDExIEBAIHN0YXRp
YyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGEKIAogICAgICAgICAgICAgICAgIGNh
Y2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVl
IGpzUmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7CisjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkK
ICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvU3RyaW5nKGNh
Y2hlZENhbGwubmV3Q2FsbEZyYW1lKGV4ZWMpKS0+dmFsdWUoZXhlYykpOworI2Vsc2UKKyAgICAg
ICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01NDMsNyArNTQ3LDExIEBA
IHN0YXRpYyBORVZFUl9JTkxJTkUgRW5jb2RlZEpTVmFsdWUgcmVwbGEKIAogICAgICAgICAgICAg
ICAgIGNhY2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICBK
U1ZhbHVlIGpzUmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7CisjaWYgRU5BQkxFKExMSU5UX0Nf
TE9PUCkKICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvU3Ry
aW5nKGNhY2hlZENhbGwubmV3Q2FsbEZyYW1lKGV4ZWMpKS0+dmFsdWUoZXhlYykpOworI2Vsc2UK
KyAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGpzUmVzdWx0LnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>