<?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>148434</bug_id>
          
          <creation_ts>2015-08-25 10:02:47 -0700</creation_ts>
          <short_desc>Distinguish Web IDL callback interfaces from Web IDL callback functions</short_desc>
          <delta_ts>2015-08-26 15:09:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148415</blocked>
    
    <blocked>148449</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1120611</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-25 10:02:47 -0700</bug_when>
    <thetext>Distinguish Web IDL callback interfaces [2] from Web IDL callback functions [2].

One Web Exposed difference is that when using a callback interface, the user can pass either a function / callable object or a non-callable object that has a method with the same name as the callback interface operation:
https://heycam.github.io/webidl/#es-user-objects

When using a callback function, the user needs to pass a function / callable object:
https://heycam.github.io/webidl/#es-callback-function

[1] https://heycam.github.io/webidl/#dfn-callback-interface
[2] https://heycam.github.io/webidl/#idl-callback-functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120624</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-25 10:21:47 -0700</bug_when>
    <thetext>Currently, it seems our bindings code enforces that callback arguments are Functions:
EncodedJSValue JSC_HOST_CALL jsDataTransferItemPrototypeFunctionGetAsString(ExecState* exec)
{
    JSValue thisValue = exec-&gt;thisValue();
    JSDataTransferItem* castedThis = jsDynamicCast&lt;JSDataTransferItem*&gt;(thisValue);
    if (UNLIKELY(!castedThis))
        return throwThisTypeError(*exec, &quot;DataTransferItem&quot;, &quot;getAsString&quot;);
    ASSERT_GC_OBJECT_INHERITS(castedThis, JSDataTransferItem::info());
    auto&amp; impl = castedThis-&gt;impl();
    RefPtr&lt;StringCallback&gt; callback;
    if (!exec-&gt;argument(0).isUndefinedOrNull()) {
        if (!exec-&gt;uncheckedArgument(0).isFunction())
            return throwArgumentMustBeFunctionError(*exec, 0, &quot;callback&quot;, &quot;DataTransferItem&quot;, &quot;getAsString&quot;);
        callback = JSStringCallback::create(asObject(exec-&gt;uncheckedArgument(0)), castedThis-&gt;globalObject());
    }
    impl.getAsString(callback);
    return JSValue::encode(jsUndefined());
}

Corresponding spec: https://html.spec.whatwg.org/multipage/interaction.html#the-datatransferitem-interface

We have no distinction between callback functions and callback interfaces. We basically only support callback functions even though they are specified as callback interfaces in our IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120719</commentid>
    <comment_count>2</comment_count>
      <attachid>259881</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-25 14:40:49 -0700</bug_when>
    <thetext>Created attachment 259881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120720</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-25 14:44:25 -0700</bug_when>
    <thetext>Attachment 259881 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp:25:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp:83:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/bindings/scripts/test/ObjC/DOMTestCallbackFunction.mm:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.h:46:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 44 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120722</commentid>
    <comment_count>4</comment_count>
      <attachid>259881</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-25 14:52:57 -0700</bug_when>
    <thetext>Comment on attachment 259881
Patch

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

&gt; Source/WebCore/bindings/js/JSCallbackData.h:69
&gt; +    enum class InvokeMethod { FunctionOnly, NonCallableObjectOnly, FunctionAndNonCallableObject };

enum class CallbackType { Function, Object, FunctionOrObject };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120723</commentid>
    <comment_count>5</comment_count>
      <attachid>259883</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-25 14:57:55 -0700</bug_when>
    <thetext>Created attachment 259883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120725</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-25 14:59:35 -0700</bug_when>
    <thetext>Attachment 259883 did not pass style-queue:


ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp:25:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.cpp:83:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/bindings/scripts/test/ObjC/DOMTestCallbackFunction.mm:33:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/scripts/test/JS/JSTestCallbackFunction.h:46:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Total errors found: 4 in 44 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121061</commentid>
    <comment_count>7</comment_count>
      <attachid>259883</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-26 14:23:25 -0700</bug_when>
    <thetext>Comment on attachment 259883
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121072</commentid>
    <comment_count>8</comment_count>
      <attachid>259883</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-26 15:09:46 -0700</bug_when>
    <thetext>Comment on attachment 259883
Patch

Clearing flags on attachment: 259883

Committed r188994: &lt;http://trac.webkit.org/changeset/188994&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121073</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-26 15:09:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259881</attachid>
            <date>2015-08-25 14:40:49 -0700</date>
            <delta_ts>2015-08-25 14:57:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148434-20150825144039.patch</filename>
            <type>text/plain</type>
            <size>92897</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NzY4ODc3N2I4M2UxZGQxY2UwZGMxMTUxNmMwY2VjOWY2OGJjZjM1Li40YTczMWY3M2E4ZDVjZjBk
NGY5ODgzY2U3ZDQ0MThhMTg2ZTY4YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0wOC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIFdlYiBJREwgY2FsbGJhY2sgaW50ZXJmYWNlcyBmcm9tIFdl
YiBJREwgY2FsbGJhY2sgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDg0MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgaXNOdWxsKCkgY29udmVuaWVuY2UgbWV0aG9kIG9uIFByb3Bl
cnR5TmFtZS4KKworICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChK
U0M6OlByb3BlcnR5TmFtZTo6aXNOdWxsKToKKwogMjAxNS0wOC0yNCAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgcHJvdG9jb2wgdGVz
dCBmb3IgZXhpc3RpbmcgZXJyb3IgaGFuZGxpbmcgcGVyZm9ybWVkIGJ5IHRoZSBiYWNrZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNTlhMzA4MTZiMjlkOTA2NjgyNWY3OTk2NTU3MjdiN2UzZjc5ZjlkMy4uNDM4
ODMwOTQxM2IzOTQ3NDQyYWY0ZmIzMTIzMDNiYTQzNTAwNmQ0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE1MCBAQAogMjAxNS0wOC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CisgICAgICAgIERpc3Rpbmd1aXNoIFdlYiBJREwgY2FsbGJhY2sgaW50ZXJmYWNlcyBmcm9tIFdl
YiBJREwgY2FsbGJhY2sgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDg0MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEaXN0aW5ndWlzaCBXZWIgSURMIGNhbGxiYWNrIGludGVyZmFjZXMg
WzFdIGZyb20gV2ViIElETCBjYWxsYmFjaworICAgICAgICBmdW5jdGlvbnMgWzJdLgorCisgICAg
ICAgIE9uZSBXZWItZXhwb3NlZCBkaWZmZXJlbmNlIGlzIHRoYXQgd2hlbiB1c2luZyBhIGNhbGxi
YWNrIGludGVyZmFjZSwKKyAgICAgICAgdGhlIHVzZXIgY2FuIHBhc3MgZWl0aGVyIGEgZnVuY3Rp
b24gLyBjYWxsYWJsZSBvYmplY3Qgb3IgYSBub24tY2FsbGFibGUKKyAgICAgICAgb2JqZWN0IHRo
YXQgaGFzIGEgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgY2FsbGJhY2sgaW50ZXJm
YWNlCisgICAgICAgIG9wZXJhdGlvbjoKKyAgICAgICAgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jZXMtdXNlci1vYmplY3RzCisKKyAgICAgICAgV2hlbiB1c2luZyBhIGNhbGxiYWNr
IGZ1bmN0aW9uLCB0aGUgdXNlciBuZWVkcyB0byBwYXNzIGEgZnVuY3Rpb24gLworICAgICAgICBj
YWxsYWJsZSBvYmplY3Q6CisgICAgICAgIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2VzLWNhbGxiYWNrLWZ1bmN0aW9uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IFtD
YWxsYmFjaz1GdW5jdGlvbk9ubHldIElETCBleHRlbmRlZCBhdHRyaWJ1dGUgdG8KKyAgICAgICAg
aW5kaWNhdGUgdGhhdCBhIGNhbGxiYWNrIGludGVyZmFjZSBzaG91bGQgYmUgZnVuY3Rpb24tb25s
eSAoaS5lLiBhIGNhbGxiYWNrCisgICAgICAgIGZ1bmN0aW9uIGluIHRoZSBsYXRlc3QgV2ViIElE
TCBzcGVjaWZpY2F0aW9uKS4gV2l0aG91dCB0aGlzIElETCBleHRlbmRlZAorICAgICAgICBhdHRy
aWJ1dGUsIHRoZSBjYWxsYmFjayBpbnRlcmZhY2Ugd2lsbCBiZSB0cmVhdGVkIGFzIGEgcmVndWxh
ciBjYWxsYmFjaworICAgICAgICBpbnRlcmZhY2UuIFRoaXMgd2lsbCBiZSBuZWVkZWQgZm9yIEJ1
ZyAxNDg0MTUsIGFzIE5vZGVGaWx0ZXIgc2hvdWxkIGJlCisgICAgICAgIGFuIGFjdHVhbCBjYWxs
YmFjayBpbnRlcmZhY2UuCisKKyAgICAgICAgTm90ZSB0aGF0IGxvbmdlciB0ZXJtLCB3ZSBzaG91
bGQgcmVhbGx5IGRyb3AgdGhlIG9sZC1zdHlsZQorICAgICAgICBbQ2FsbGJhY2s9RnVuY3Rpb25P
bmx5XSBleHRlbmRkIGF0dHJpYnV0ZSBhbmQgdXNlIGFjdHVhbCBJREwgY2FsbGJhY2sKKyAgICAg
ICAgZnVuY3Rpb25zIGFzIHBlciB0aGUgbGF0ZXN0IFdlYiBJREwgc3BlY2lmaWNhdGlvbi4gSG93
ZXZlciwgSSBkaWQgbm90CisgICAgICAgIGRvIHRoaXMgaW4gdGhpcyBwYXRjaCB0byBtaW5pbWl6
ZSBwYXRjaCBzaXplLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBDYWxsYmFjaz1GdW5jdGlv
bk9ubHldIElETCBleHRlbmRlZCBhdHRyaWJ1dGUgdG8gYWxsCisgICAgICAgIG91ciBwcmUtZXhp
c3RpbmcgY2FsbGJhY2sgaW50ZXJmYWNlcyBzbyB0aGF0IHRoZXJlIGlzIG5vIGJlaGF2aW9yCisg
ICAgICAgIGNoYW5nZS4KKworICAgICAgIFsxXSBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2Vi
aWRsLyNkZm4tY2FsbGJhY2staW50ZXJmYWNlCisgICAgICAgWzJdIGh0dHBzOi8vaGV5Y2FtLmdp
dGh1Yi5pby93ZWJpZGwvI2lkbC1jYWxsYmFjay1mdW5jdGlvbnMKKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25DYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9n
ZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nl
c3NDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbkVycm9yQ2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDU3RhdHNDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGw6CisgICAgICAgICogTW9k
dWxlcy9xdW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9x
dW90YS9TdG9yYWdlUXVvdGFDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9T
dG9yYWdlVXNhZ2VDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlckNhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVt
ZW50Q2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkNhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6Omludm9r
ZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAg
ICAgICh0cmltKToKKyAgICAgICAgKElzRnVuY3Rpb25Pbmx5Q2FsbGJhY2tJbnRlcmZhY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uKToKKyAgICAgICAgKEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0
Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RDYWxsYmFja0Z1bmN0aW9uKToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY29uc3RydWN0b3IpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NsYXNzX2luaXQpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2luaXQpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfbm9fcGFyYW0p
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dp
dGhfYXJyYXlfcGFyYW0pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0
aW9uX2NhbGxiYWNrX3dpdGhfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfcGFyYW0pOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfbm9uX2Jv
b2xfcmV0dXJuX3R5cGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0
aW9uX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfYm9vbGVhbik6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfcmVxdWlyZXNfdGhpc190b19w
YXNzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0Q2FsbGJhY2tGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGUuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaWRsLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTm9QYXJhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aFN0cmluZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2s6
OmNhbGxiYWNrV2l0aEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2s6
OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb246On5KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrRnVuY3Rp
b246OmNhbGxiYWNrV2l0aE5vUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbjo6Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQ
YXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFj
a1dpdGhTdHJpbmdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrRnVuY3Rp
b246OmNhbGxiYWNrV2l0aEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbjo6Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlv
bmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0
aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5k
T3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDEwKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRl
ZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0VHlwZWRlZnMpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVm9pZENhbGxiYWNrLmlkbC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5tbTogQWRkZWQu
CisgICAgICAgICgtW0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gZmluYWxpemVdKToKKyAgICAgICAgKC1bRE9NVGVz
dENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2tXaXRoTm9QYXJhbV0pOgorICAgICAgICAoLVtET01U
ZXN0Q2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFja1dpdGhBcnJheVBhcmFtOl0pOgorICAgICAgICAo
LVtET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFs
dWVQYXJhbTpzdHJBcmc6XSk6CisgICAgICAgICgtW0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uIGNh
bGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlOl0pOgorICAgICAgICAoLVtET01UZXN0Q2FsbGJh
Y2tGdW5jdGlvbiBjdXN0b21DYWxsYmFjazpjbGFzczZQYXJhbTpdKToKKyAgICAgICAgKC1bRE9N
VGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2tXaXRoU3RyaW5nTGlzdDpdKToKKyAgICAgICAg
KC1bRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2tXaXRoQm9vbGVhbjpdKToKKyAgICAg
ICAgKC1bRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3M6
dGVzdE5vZGVQYXJhbTpdKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoa2l0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2tGdW5jdGlvbklu
dGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVm9pZENhbGxiYWNrLmlk
bC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rpb24u
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ2FsbGJhY2suaWRsLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5pZGw6CisgICAgICAg
ICogZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBkb20v
U3RyaW5nQ2FsbGJhY2suaWRsOgorICAgICAgICAqIGh0bWwvVm9pZENhbGxiYWNrLmlkbDoKKwor
MjAxNS0wOC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBjYWxsYmFjayBpbnRlcmZhY2VzIHVzaW5nIG90aGVyIGNhbGxiYWNrIG5h
bWVzIHRoYW4gImhhbmRsZUV2ZW50IgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4NDE4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lLmgKaW5kZXggZWFiYTYyODA0NzZiYmE5NTMwNmNlYjQ2YzYwMTMwMzExODk0
MTIyNi4uM2E0MjkyZWEyZTIwNDZiZDM3NzE4ZDM1OTVhMTJlZjVhNDgxNTI2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTUxLDYgKzUxLDgg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1N5bWJvbCgpKTsKICAgICB9CiAK
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsgfQorCiAgICAgYm9vbCBp
c1N5bWJvbCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+aXNTeW1i
b2woKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9z
aXRpb25DYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bv
c2l0aW9uQ2FsbGJhY2suaWRsCmluZGV4IDUxY2JkZTVhY2E4ODkwNzUyNGUyYTc5YzQwYWI1NDcx
MGY3MzUzM2EuLjgxOWIzODUyYWYyODM1YWYzNDQ1NmUwNjQ1MWU1MWM2ODNjNDdkZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25DYWxsYmFj
ay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkNh
bGxiYWNrLmlkbApAQCAtMjQsNiArMjQsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9R0VPTE9D
QVRJT04sCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAogXSBjYWxsYmFjayBpbnRlcmZhY2Ug
UG9zaXRpb25DYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChHZW9wb3NpdGlvbiBw
b3NpdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCmluZGV4IDc4MTIxYjhjZmU1NzE2
NDMwZGIwMGEyODBjMDY3ZmM1ZWQwMDc2ZjguLjJhNjA5ZDNlZjk3ODhkNmRlMmE2YWJkMmZkN2U0
NGQ5MzkxNzVhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwKQEAgLTI0LDYgKzI0LDcgQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPUdFT0xPQ0FUSU9OLAorICAgIENhbGxiYWNrPUZ1bmN0aW9u
T25seSwKIF0gY2FsbGJhY2sgaW50ZXJmYWNlIFBvc2l0aW9uRXJyb3JDYWxsYmFjayB7CiAgICAg
Ym9vbGVhbiBoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yIGVycm9yKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbAppbmRleCA0YzA1OTNmY2Y1MzI3MzYyYzI2
MDJhZDIzYmU3NGU3OGVhYWEyODRmLi4zYmM0YTJlNTQ3MmY3ZmEwNjdkMzZiNmU5ZmE2YzZjYmM5
MThjYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGwKQEAg
LTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNr
IGludGVyZmFjZSBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrIHsKICAgICBib29sZWFu
IGhhbmRsZUV2ZW50KHNlcXVlbmNlPFNvdXJjZUluZm8+IHNvdXJjZXMpOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3JDYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsCmluZGV4IGU3NzU0ZjE4YTI0MjJhZTQ5
NzVkYWU3NWQ0MjY1YzRlOTNhMDM2YjQuLmYwYWM3ZGQxYmY5YTNmZTJkMmZjZjIwMTNkNjYwNDdj
ZWYzYzZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbApA
QCAtMjQsNiArMjQsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAg
IENhbGxiYWNrPUZ1bmN0aW9uT25seSwKIF0gY2FsbGJhY2sgaW50ZXJmYWNlIE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2sgewogICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3IgZXJyb3IpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrLmlkbAppbmRleCAzOTEyNzk3ZDMxM2UyYWFlZTRiODA4YjJkMDBjMTRhN2Vl
MWFiMDVlLi4yZDE5MGNmMmViMTkyMjA5NThhOGNlOGJjYmY3OGQzNDRjZmQyZTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRp
YVN1Y2Nlc3NDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsCkBAIC0yNCw2ICsyNCw3
IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgQ2FsbGJhY2s9RnVu
Y3Rpb25Pbmx5LAogXSBjYWxsYmFjayBpbnRlcmZhY2UgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrIHsKICAgICBib29sZWFuIGhhbmRsZUV2ZW50KE1lZGlhU3RyZWFtIHN0cmVhbSk7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2suaWRsCmluZGV4IDRiODdh
ZDdmZjA0ZTM3M2NhNGMwMDM1ZGEyZjY0MjhiZjI4ZjA3MjIuLjA2MzIxMjdjZjFiOGQ3YzEzMmMz
ZDFiNTMwMDNhNjdhNDhhMTU1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxs
YmFjay5pZGwKQEAgLTI1LDYgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPU1FRElBX1NU
UkVBTSwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNrIGludGVyZmFjZSBS
VENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2sgewogICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQo
RE9NRXJyb3IgZXJyb3IpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2suaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjay5p
ZGwKaW5kZXggMzBjZTA4NTY4YjlkNTRmNjFlYjQxMGYxZGZhNTU2NTU3NjYwMmE3MS4uYjNiYzJj
ZmNiZjE3MjYyMjA5MzNiYmZiNTJhYWFlZDFhZTcxYjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjay5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVz
Y3JpcHRpb25DYWxsYmFjay5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKIAogWwogICAgIENvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTSwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNr
IGludGVyZmFjZSBSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjayB7CiAgICAgYm9vbGVhbiBo
YW5kbGVFdmVudChSVENTZXNzaW9uRGVzY3JpcHRpb24gc2RwKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzQ2FsbGJhY2suaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0NhbGxiYWNrLmlkbApp
bmRleCBiMzJmNDNkMmZmZjhlM2I5NzI5Yzc3YWEyMmM4MTc4YzJmMjRiYWMyLi42MjY3MDQ2Nzdh
NTZjOGFjZjZhYjQ1MDE1NmE4MTM2NzhlMzg5YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNDYWxsYmFjay5pZGwKQEAgLTI0LDYg
KzI0LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICBDYWxsYmFj
az1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNrIGludGVyZmFjZSBSVENTdGF0c0NhbGxiYWNrIHsK
ICAgICBib29sZWFuIGhhbmRsZUV2ZW50KFJUQ1N0YXRzUmVzcG9uc2UgcmVzcG9uc2UpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKaW5kZXggMzA5MDcx
NmY3ZjJhNjJjMjY2ZjBjYTFmMzllN2U1ZWExYzcwN2ZmNi4uZTJjNWVlZjM2ZmU5ODI0YjljOWJh
OTQwYWQ2YmIzZGU2ZTBjZDlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5pZGwKQEAgLTI1LDYgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPU5PVElG
SUNBVElPTlMsCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAogXSBjYWxsYmFjayBpbnRlcmZh
Y2UgTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrIHsKICAgICBib29sZWFuIGhhbmRsZUV2
ZW50KERPTVN0cmluZyBwZXJtaXNzaW9uKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VFcnJvckNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaWRsCmluZGV4IGIzN2ZiZDRmYWY3
MDAwODk3ZTQ0NDJlNjlmNTQ5NjJhOGNhNjdjY2EuLjA4OGY3OGY2ZmEzYWIyMzZkMjQxODgxMWNk
OGY4NTM0NzY5ZDUzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZUVycm9yQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVv
dGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaWRsCkBAIC0zMCw2ICszMCw3IEBACiAKIFsKICAgICBD
b25kaXRpb25hbD1RVU9UQSwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNr
IGludGVyZmFjZSBTdG9yYWdlRXJyb3JDYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVu
dChET01Db3JlRXhjZXB0aW9uIGVycm9yKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VRdW90YUNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhQ2FsbGJhY2suaWRsCmluZGV4IDQzNTlmMjYyNzA4
NDkyNjk5Y2I1YTk2ZDNlNDE3ZjliYjNlMjdjY2QuLjg5YTgyZTdjZDVjMWE0NjAzYjM2NTJkODI4
NDFkNjc0ZjJiZGJjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVv
dGEvU3RvcmFnZVF1b3RhQ2FsbGJhY2suaWRsCkBAIC0zMCw2ICszMCw3IEBACiAKIFsKICAgICBD
b25kaXRpb25hbD1RVU9UQSwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNr
IGludGVyZmFjZSBTdG9yYWdlUXVvdGFDYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVu
dCh1bnNpZ25lZCBsb25nIGxvbmcgZ3JhbnRlZFF1b3RhSW5CeXRlcyk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlVXNhZ2VDYWxsYmFjay5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmlkbApp
bmRleCA1ZWE3YTBlYmM3ZDA4NTRhNDFmYzMwNTAyYTQ4ZTk3NjQ5ZTVkZjhjLi43ZTUwZjVkYTQ5
NzEyMWFiMTFjZWVjMDM5YmJlMzYxN2JkYzlmNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmlkbApAQCAtMzAsNiArMzAs
NyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9UVVPVEEsCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25P
bmx5LAogXSBjYWxsYmFjayBpbnRlcmZhY2UgU3RvcmFnZVVzYWdlQ2FsbGJhY2sgewogICAgIGJv
b2xlYW4gaGFuZGxlRXZlbnQodW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZUluQnl0ZXMs
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGFJbkJ5dGVzKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlk
bAppbmRleCA5MTNmNTc3Nzk3MGY2YjRkY2I0YTZkMjgwNzc3YWEzOTA3YTg4OTRlLi5jMDMxYmRl
OTVmNzQzMmU4MmIwZDIwYzIzMzRiYTMxYWEzMWFmODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwKQEAgLTI1
LDYgKzI1LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0
ZVRvSlNPYmplY3QsCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAogXSBjYWxsYmFjayBpbnRl
cmZhY2UgQXVkaW9CdWZmZXJDYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChBdWRp
b0J1ZmZlciBhdWRpb0J1ZmZlcik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxsYmFjay5pZGwKaW5kZXggZjZkMTEwMDAwMjMy
NGYwNWY4YzgxMjllNGEzODk2Mjk0NzdkOGM4MC4uYjVjODAzNjliNTVmYjRiNDAwZWM4NDdjNWJj
YWY1ZTliNmQ5NTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ2FsbGJhY2suaWRsCkBAIC0yNiw2ICsyNiw4IEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLWNhbGxiYWNrIGludGVyZmFjZSBEYXRhYmFzZUNhbGxiYWNrIHsKK1sKKyAg
ICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCitdIGNhbGxiYWNrIGludGVyZmFjZSBEYXRhYmFzZUNh
bGxiYWNrIHsKICAgICBib29sZWFuIGhhbmRsZUV2ZW50KERhdGFiYXNlIGRhdGFiYXNlKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50Q2FsbGJhY2suaWRsCmluZGV4IDg5Y2M1MzA0NGM2OTJiMTVlYjBhOTdiYmNmYTk3
M2VlYjRiZGViZjAuLjliZjYzYmY5MWVjODRmMmI5YjY1OWJlN2IwZjExYTFlYmVlNzIwZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50
Q2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50Q2FsbGJhY2suaWRsCkBAIC0yNSw3ICsyNSw4IEBACiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotY2FsbGJhY2sgaW50ZXJmYWNlIFNRTFN0YXRlbWVudENh
bGxiYWNrIHsKK1sKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCitdIGNhbGxiYWNrIGludGVy
ZmFjZSBTUUxTdGF0ZW1lbnRDYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChTUUxU
cmFuc2FjdGlvbiB0cmFuc2FjdGlvbiwgU1FMUmVzdWx0U2V0IHJlc3VsdFNldCk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjay5pZGwKaW5kZXggMWM4NDFkM2U1NTMyZjI4YmZlNWUzYTNk
ZjNiZDY5ODIzNzZlYTY3OC4uYTI3Y2U0Yzg4N2UxMmQxNTZmMjYzZDZlZTE2ZGFjNDNiMmUxYjRi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaWRsCkBAIC0yNSw3ICsyNSw4IEBACiAg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotY2FsbGJhY2sgaW50ZXJmYWNl
IFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2sgeworWworICAgIENhbGxiYWNrPUZ1bmN0aW9uT25s
eSwKK10gY2FsbGJhY2sgaW50ZXJmYWNlIFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2sgewogICAg
IFtDdXN0b21dIGJvb2xlYW4gaGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24s
IFNRTEVycm9yIGVycm9yKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmlkbAppbmRleCBlNmJh
MTdjZjgwYTNiM2U0NGVhYWNjNjY2ZTM2M2ZhMzc2ODA1YjIyLi5kNWFmYmRiZmM5NDkzYzc5NDU5
NjE3NTgxYTM3MThiYWQzYTVmMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwKQEAgLTI1
LDcgKzI1LDggQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi1jYWxs
YmFjayBpbnRlcmZhY2UgU1FMVHJhbnNhY3Rpb25DYWxsYmFjayB7CitbCisgICAgQ2FsbGJhY2s9
RnVuY3Rpb25Pbmx5LAorXSBjYWxsYmFjayBpbnRlcmZhY2UgU1FMVHJhbnNhY3Rpb25DYWxsYmFj
ayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbik7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsCmluZGV4IDcwNzFiMzI0Nzcy
YTMyMjNjNGIwZmM0Y2NlOWExYzZjMDZjODg0M2QuLjUxMGRjNmMzZGQ4NmY4NGQxNDAzNDI2ZTQy
MDBhMzU3MDFlYzFjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwKQEAg
LTI2LDYgKzI2LDggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotY2FsbGJhY2sgaW50ZXJmYWNlIFNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayB7CitbCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5
LAorXSBjYWxsYmFjayBpbnRlcmZhY2UgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIHsKICAg
ICBib29sZWFuIGhhbmRsZUV2ZW50KFNRTEVycm9yIGVycm9yKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKaW5kZXggOGQ5Nzc1NjdjODdjMDU5
MDI2MTdlMTk3YTM3ZWI2YWExNDQ2NGQ0Zi4uNGQyOWU3NjU5YTIwY2UyMmEwNjA3MTQ2NjllMGU1
ZmFmMGVhODJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxs
YmFja0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tE
YXRhLmNwcApAQCAtNDMsMjkgKzQzLDQwIEBAIHZvaWQgSlNDYWxsYmFja0RhdGE6OmRlbGV0ZURh
dGEodm9pZCogY29udGV4dCkKICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja0RhdGEq
Pihjb250ZXh0KTsKIH0KIAotSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2so
TWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIFByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIGJv
b2wqIHJhaXNlZEV4Y2VwdGlvbikKK0pTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxi
YWNrKE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBJbnZva2VNZXRob2QgbWV0aG9kLCBQcm9w
ZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBib29sKiByYWlzZWRFeGNlcHRpb24pCiB7CiAgICAgQVNT
RVJUKGNhbGxiYWNrKCkpOwotICAgIHJldHVybiBpbnZva2VDYWxsYmFjayhjYWxsYmFjaygpLCBh
cmdzLCBmdW5jdGlvbk5hbWUsIHJhaXNlZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuIGludm9rZUNh
bGxiYWNrKGNhbGxiYWNrKCksIGFyZ3MsIG1ldGhvZCwgZnVuY3Rpb25OYW1lLCByYWlzZWRFeGNl
cHRpb24pOwogfQogCi1KU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhKU1Zh
bHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIFByb3BlcnR5TmFtZSBm
dW5jdGlvbk5hbWUsIGJvb2wqIHJhaXNlZEV4Y2VwdGlvbikKK0pTVmFsdWUgSlNDYWxsYmFja0Rh
dGE6Omludm9rZUNhbGxiYWNrKEpTVmFsdWUgdGhpc1ZhbHVlLCBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciYgYXJncywgSW52b2tlTWV0aG9kIG1ldGhvZCwgUHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwg
Ym9vbCogcmFpc2VkRXhjZXB0aW9uKQogewogICAgIEFTU0VSVChjYWxsYmFjaygpKTsKICAgICBB
U1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gY2FsbGJhY2soKTsK
LQorICAgIEpTVmFsdWUgZnVuY3Rpb247CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBjYWxsYmFjaygpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShj
YWxsYmFjaygpLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBDYWxsVHlwZU5v
bmU7CisKKyAgICBpZiAobWV0aG9kICE9IEludm9rZU1ldGhvZDo6Tm9uQ2FsbGFibGVPYmplY3RP
bmx5KSB7CisgICAgICAgIGZ1bmN0aW9uID0gY2FsbGJhY2soKTsKKyAgICAgICAgY2FsbFR5cGUg
PSBjYWxsYmFjaygpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShjYWxsYmFjaygpLCBjYWxs
RGF0YSk7CisgICAgfQogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAg
ICAgaWYgKG1ldGhvZCA9PSBJbnZva2VNZXRob2Q6OkZ1bmN0aW9uT25seSkKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisKKyAgICAgICAgQVNTRVJUKCFmdW5jdGlvbk5hbWUuaXNOdWxs
KCkpOwogICAgICAgICBmdW5jdGlvbiA9IGNhbGxiYWNrKCktPmdldChleGVjLCBmdW5jdGlvbk5h
bWUpOwogICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7
CiAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwogICAgIH0KIAorICAgIEFTU0VSVCghZnVuY3Rpb24uaXNFbXB0eSgpKTsK
KyAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKwogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIC8vIFdlIHdpbGwgZmFpbCB0byBnZXQgdGhlIGNvbnRleHQgaWYgdGhlIGZy
YW1lIGhhcyBiZWVuIGRldGFjaGVkLgogICAgIGlmICghY29udGV4dCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCmluZGV4IGI1MjM5YTg3MDA4NzE4MjU4MmQx
MGU3OTE3NGU3MDRjNDdiMjNmMmUuLmVjZDQ5MTM2MDg4ZGU3NzdkYTQ0ODNiMzFiOTdmZDk2MzIw
NWFlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaApA
QCAtNjYsOCArNjYsOSBAQCBwdWJsaWM6CiAgICAgSlNDOjpKU09iamVjdCogY2FsbGJhY2soKSB7
IHJldHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCgpIHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CiAgICAgCi0gICAgSlND
OjpKU1ZhbHVlIGludm9rZUNhbGxiYWNrKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImLCBKU0M6
OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIGJvb2wqIHJhaXNlZEV4Y2VwdGlvbiA9IG51bGxw
dHIpOwotICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0M6OkpTVmFsdWUgdGhpc1Zh
bHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rp
b25OYW1lLCBib29sKiByYWlzZWRFeGNlcHRpb24gPSBudWxscHRyKTsKKyAgICBlbnVtIGNsYXNz
IEludm9rZU1ldGhvZCB7IEZ1bmN0aW9uT25seSwgTm9uQ2FsbGFibGVPYmplY3RPbmx5LCBGdW5j
dGlvbkFuZE5vbkNhbGxhYmxlT2JqZWN0IH07CisgICAgSlNDOjpKU1ZhbHVlIGludm9rZUNhbGxi
YWNrKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImLCBJbnZva2VNZXRob2QsIEpTQzo6UHJvcGVy
dHlOYW1lIGZ1bmN0aW9uTmFtZSwgYm9vbCogcmFpc2VkRXhjZXB0aW9uID0gbnVsbHB0cik7Cisg
ICAgSlNDOjpKU1ZhbHVlIGludm9rZUNhbGxiYWNrKEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpT
Qzo6TWFya2VkQXJndW1lbnRCdWZmZXImLCBJbnZva2VNZXRob2QsIEpTQzo6UHJvcGVydHlOYW1l
IGZ1bmN0aW9uTmFtZSwgYm9vbCogcmFpc2VkRXhjZXB0aW9uID0gbnVsbHB0cik7CiAKIHByaXZh
dGU6CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JD
YWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2suY3BwCmluZGV4IGQzMzcyYmRhMTYxZWQ0YTAxZDM4ZjI0YWEwMmEy
YzhhZTQzMDgyMzguLjg4OTNlZDI3ZDM4MGUyNTcxY2E1ZDdkZmZkNGY2MmI4ODJmYzRkYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBib29sIEpT
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uLCBTUUxFcgogICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgbV9kYXRhLT5nbG9i
YWxPYmplY3QoKSwgZXJyb3IpKTsKIAogICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImhhbmRsZUV2ZW50IiksICZyYWlzZWRFeGNlcHRpb24p
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0Nh
bGxiYWNrRGF0YTo6SW52b2tlTWV0aG9kOjpGdW5jdGlvbk9ubHksIElkZW50aWZpZXIoKSwgJnJh
aXNlZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJhaXNlZEV4Y2VwdGlvbikgewogICAgICAgICAvLyBU
aGUgc3BlYyBzYXlzOgogICAgICAgICAvLyAiSWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMg
ZmFsc2UsIHRoZW4gbW92ZSBvbiB0byB0aGUgbmV4dCBzdGF0ZW1lbnQuLi4iCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggODE3ZjIw
MTgwMDk1MjFkMWIzY2YxYTIzYWEyZTZkNTQyNDI2MjA1Ni4uOGUxODU4NWM4M2QzZWI4NjhkMjM2
MjlmMWVkNTBlMjZkMDE2OGZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtNDk2LDYgKzQ5NiwxMyBAQCBzdWIgV0tfbGNmaXJz
dAogICAgIHJldHVybiAkcmV0OwogfQogCitzdWIgdHJpbQoreworICAgIG15ICRzdHJpbmcgPSBz
aGlmdDsKKyAgICAkc3RyaW5nID1+IHMvXlxzK3xccyskLy9nOworICAgIHJldHVybiAkc3RyaW5n
OworfQorCiAjIFJldHVybiB0aGUgQysrIG5hbWVzcGFjZSB0aGF0IGEgZ2l2ZW4gYXR0cmlidXRl
IG5hbWUgc3RyaW5nIGlzIGRlZmluZWQgaW4uCiBzdWIgTmFtZXNwYWNlRm9yQXR0cmlidXRlTmFt
ZQogewpAQCAtNjUzLDYgKzY2MCw0MCBAQCBzdWIgSXNDYWxsYmFja0ludGVyZmFjZQogICByZXR1
cm4gKCRmaWxlQ29udGVudHMgPX4gL2NhbGxiYWNrXHMraW50ZXJmYWNlXHMrKFx3KykvZ3MpOwog
fQogCisjIENhbGxiYWNrIGludGVyZmFjZSB3aXRoIFtDYWxsYmFjaz1GdW5jdGlvbk9ubHldLgor
IyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBjYWxsYmFjayBmdW5jdGlvbjoKKyMgaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLWNhbGxiYWNrLWZ1bmN0aW9ucworc3ViIElzRnVu
Y3Rpb25Pbmx5Q2FsbGJhY2tJbnRlcmZhY2UKK3sKKyAgbXkgJG9iamVjdCA9IHNoaWZ0OworICBt
eSAkdHlwZSA9IHNoaWZ0OworCisgIHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc0NhbGxiYWNr
SW50ZXJmYWNlKCR0eXBlKTsKKworICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVGb3JJ
bnRlcmZhY2UoJHR5cGUpCisgICAgICBvciBkaWUoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxlIGZv
ciBpbnRlcmZhY2UgXCIkdHlwZVwiIVxuIik7CisKKyAgb3BlbiBGSUxFLCAiPCIsICRpZGxGaWxl
OworICBteSBAbGluZXMgPSA8RklMRT47CisgIGNsb3NlIEZJTEU7CisKKyAgbXkgJGZpbGVDb250
ZW50cyA9IGpvaW4oJycsIEBsaW5lcyk7CisgIGlmICgkZmlsZUNvbnRlbnRzID1+IC9cWyguKilc
XVxzK2NhbGxiYWNrXHMraW50ZXJmYWNlXHMrKFx3KykvZ3MpIHsKKyAgICAgIG15IEBwYXJ0cyA9
IHNwbGl0KCcsJywgJDEpOworICAgICAgZm9yZWFjaCBteSAkcGFydCAoQHBhcnRzKSB7CisgICAg
ICAgICAgbXkgQGtleVZhbHVlID0gc3BsaXQoJz0nLCAkcGFydCk7CisgICAgICAgICAgbXkgJGtl
eSA9IHRyaW0oJGtleVZhbHVlWzBdKTsKKyAgICAgICAgICBuZXh0IHVubGVzcyBsZW5ndGgoJGtl
eSk7CisgICAgICAgICAgbXkgJHZhbHVlID0gIlZBTFVFX0lTX01JU1NJTkciOworICAgICAgICAg
ICR2YWx1ZSA9IHRyaW0oJGtleVZhbHVlWzFdKSBpZiBAa2V5VmFsdWUgPiAxOworCisgICAgICAg
ICAgcmV0dXJuIDEgaWYgKCRrZXkgZXEgIkNhbGxiYWNrIiAmJiAkdmFsdWUgZXEgIkZ1bmN0aW9u
T25seSIpOworICAgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKIHN1YiBHZW5lcmF0ZUNv
bmRpdGlvbmFsU3RyaW5nCiB7CiAgICAgbXkgJGdlbmVyYXRvciA9IHNoaWZ0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA2
YTYxOTQwYmRjZDllNDVmOTEwMWI4YTlhYTM4OTllZjJiYzRmODk4Li40MzRlYTZjMTdiODhkMzdj
Y2I3NDZjMmZjZjgxNzMyMzYzNjNhOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTM3OSw3ICsxMzc5LDExIEBAIHN1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24KICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJhY2tJbnRlcmZhY2UoJHBhcmFtZXRl
ci0+dHlwZSkpIHsKICAgICAgICAgICAgICMgRm9yIENhbGxiYWNrcyBvbmx5IGNoZWNrcyBpZiB0
aGUgdmFsdWUgaXMgbnVsbCBvciBvYmplY3QuCi0gICAgICAgICAgICBwdXNoKEBhbmRFeHByZXNz
aW9uLCAiKCR7dmFsdWV9LmlzTnVsbCgpIHx8ICR7dmFsdWV9LmlzRnVuY3Rpb24oKSkiKTsKKyAg
ICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNGdW5jdGlvbk9ubHlDYWxsYmFja0ludGVy
ZmFjZSgkcGFyYW1ldGVyLT50eXBlKSkgeworICAgICAgICAgICAgICAgIHB1c2goQGFuZEV4cHJl
c3Npb24sICIoJHt2YWx1ZX0uaXNOdWxsKCkgfHwgJHt2YWx1ZX0uaXNGdW5jdGlvbigpKSIpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBhbmRFeHByZXNzaW9u
LCAiKCR7dmFsdWV9LmlzTnVsbCgpIHx8ICR7dmFsdWV9LmlzT2JqZWN0KCkpIik7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAkdXNlZEFyZ3VtZW50c3skcGFyYW1ldGVySW5kZXh9ID0gMTsK
ICAgICAgICAgfSBlbHNpZiAoIUlzTmF0aXZlVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgIG15
ICRjb25kaXRpb24gPSAiIjsKQEAgLTMyNzEsNyArMzI3NSwxMSBAQCBzdWIgR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIGlmICgkb3B0aW9uYWwpIHsKICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZTtcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KCRhcmdzSW5kZXgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHtcbiIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgkYXJnc0luZGV4KS5pc0Z1bmN0aW9uKCkpXG4iKTsKKyAgICAgICAgICAgICAgICBpZiAo
JGNvZGVHZW5lcmF0b3ItPklzRnVuY3Rpb25Pbmx5Q2FsbGJhY2tJbnRlcmZhY2UoJHBhcmFtZXRl
ci0+dHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzRnVuY3Rpb24o
KSlcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVudCgk
YXJnc0luZGV4KS5pc09iamVjdCgpKVxuIik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBcIiRp
bnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAgICAgICAg
ICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIkNhbGxiYWNrRnVuY3Rpb24uaCIpOwpAQCAtMzI4MSw3ICszMjg5LDExIEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWV4ZWMt
PmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzRnVuY3Rpb24oKSlcbiIpOworICAgICAgICAgICAgICAg
IGlmICgkY29kZUdlbmVyYXRvci0+SXNGdW5jdGlvbk9ubHlDYWxsYmFja0ludGVyZmFjZSgkcGFy
YW1ldGVyLT50eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgaWYgKCFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc0Z1bmN0aW9uKCkpXG4iKTsK
KyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgaWYgKCFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc09iamVjdCgp
KVxuIik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpl
eGVjLCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1
bmN0aW9uTmFtZSk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRp
YykgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ2FsbGJhY2tGdW5j
dGlvbi5oIik7CkBAIC0zNTk4LDcgKzM2MTAsMjIgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBcIiR7ZnVuY3Rpb25OYW1lfVwiKSwgJnJhaXNlZEV4
Y2VwdGlvbik7XG4iKTsKKworICAgICAgICAgICAgbXkgJHByb3BlcnR5VG9Mb29rdXAgPSAiSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBcIiR7ZnVuY3Rpb25OYW1lfVwiKSI7CisgICAgICAg
ICAgICBteSAkaW52b2tlTWV0aG9kID0gIkpTQ2FsbGJhY2tEYXRhOjpJbnZva2VNZXRob2Q6OkZ1
bmN0aW9uQW5kTm9uQ2FsbGFibGVPYmplY3QiOworICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDYWxsYmFjayJ9LCAiRnVuY3Rpb25Pbmx5IikpIHsKKyAgICAgICAgICAgICAgICAj
IEZvciBjYWxsYmFjayBmdW5jdGlvbnMsIGRvIG5vdCBsb29rIHVwIGNhbGxhYmxlIHByb3BlcnR5
IG9uIHRoZSB1c2VyIG9iamVjdC4KKyAgICAgICAgICAgICAgICAjIGh0dHBzOi8vaGV5Y2FtLmdp
dGh1Yi5pby93ZWJpZGwvI2VzLWNhbGxiYWNrLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgJGlu
dm9rZU1ldGhvZCA9ICJKU0NhbGxiYWNrRGF0YTo6SW52b2tlTWV0aG9kOjpGdW5jdGlvbk9ubHki
OworICAgICAgICAgICAgICAgICRwcm9wZXJ0eVRvTG9va3VwID0gIklkZW50aWZpZXIoKSI7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
O1xuIik7ICAgIAorICAgICAgICAgICAgfSBlbHNpZiAoJG51bUZ1bmN0aW9ucyA+IDEpIHsKKyAg
ICAgICAgICAgICAgICAjIFRoZSBjYWxsYmFjayBpbnRlcmZhY2UgaGFzIG1vcmUgdGhhbiBvbmUg
b3BlcmF0aW9uIHNvIHdlIHNob3VsZCBub3QgY2FsbCB0aGUgdXNlciBvYmplY3QgYXMgYSBmdW5j
dGlvbi4KKyAgICAgICAgICAgICAgICAjIGluc3RlYWQsIHdlIHNob3VsZCBsb29rIGZvciBhIHBy
b3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgb3BlcmF0aW9uIG9uIHRoZSB1c2VyIG9i
amVjdC4KKyAgICAgICAgICAgICAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2VzLXVzZXItb2JqZWN0cworICAgICAgICAgICAgICAgICRpbnZva2VNZXRob2QgPSAiSlNDYWxs
YmFja0RhdGE6Okludm9rZU1ldGhvZDo6Tm9uQ2FsbGFibGVPYmplY3RPbmx5IjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIG1fZGF0YS0+aW52b2tl
Q2FsbGJhY2soYXJncywgJGludm9rZU1ldGhvZCwgJHByb3BlcnR5VG9Mb29rdXAsICZyYWlzZWRF
eGNlcHRpb24pO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gIXJhaXNlZEV4Y2VwdGlvbjtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG4iKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMQXR0cmlidXRlcy50eHQKaW5kZXggZDMzMWE3Y2JjN2M0ZmNlZjUyYjdhMWJhYWM3NWYz
MmE4MWQxZThkMC4uMTZiNGExOWEzOGIyM2FjZDcxNDU2ZmUwMjFjMzU5NjJmNGUxYTA3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0
CkBAIC0yMyw2ICsyMyw3IEBAIEF0b21pY1N0cmluZwogQ1BQUHVyZUludGVyZmFjZQogQ2FjaGVk
QXR0cmlidXRlCiBDYWxsYmFja05lZWRzT3BlcmF0b3JFcXVhbAorQ2FsbGJhY2s9RnVuY3Rpb25P
bmx5CiBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0fFNjcmlwdFN0YXRlfFNjcmlwdEFy
Z3VtZW50c3xDYWxsU3RhY2sKIENoZWNrU2VjdXJpdHkKIENoZWNrU2VjdXJpdHlGb3JOb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzU4YzRlNmE1ZGIyZTBlYTc2ODljNTYyN2JjNzRjMDZjODJhZjY0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDIzOCBAQAor
LyoKKyAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCisgKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJDU1NJ
bXBvcnRSdWxlLmgiCisjaW5jbHVkZSAiRE9NT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01ET01T
dHJpbmdMaXN0UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdERPTUZsb2F0MzJBcnJheVByaXZh
dGUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9N
VGVzdENhbGxiYWNrRnVuY3Rpb25Qcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdE5v
ZGVQcml2YXRlLmgiCisjaW5jbHVkZSAiZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCisj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2RlZmlu
ZSBXRUJLSVRfRE9NX1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT05fR0VUX1BSSVZBVEUob2JqKSBHX1RZ
UEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DQUxMQkFD
S19GVU5DVElPTiwgV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25Qcml2YXRlKQorCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25Qcml2YXRlIHsKKyNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdENhbGxiYWNr
RnVuY3Rpb24+IGNvcmVPYmplY3Q7CisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMp
Cit9IFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uUHJpdmF0ZTsKKworI2lmIEVOQUJMRShT
UEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViS2l0RE9NVGVzdENh
bGxiYWNrRnVuY3Rpb24qIGtpdChXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogb2JqKQor
eworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChncG9pbnRlciBy
ZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCisgICAgICAgIHJldHVybiBXRUJLSVRfRE9N
X1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT04ocmV0KTsKKworICAgIHJldHVybiB3cmFwVGVzdENhbGxi
YWNrRnVuY3Rpb24ob2JqKTsKK30KKworV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGNv
cmUoV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24qIHJlcXVlc3QpCit7CisgICAgcmV0dXJu
IHJlcXVlc3QgPyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbio+KFdF
QktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KSA6IDA7Cit9CisKK1dlYktpdERP
TVRlc3RDYWxsYmFja0Z1bmN0aW9uKiB3cmFwVGVzdENhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6
VGVzdENhbGxiYWNrRnVuY3Rpb24qIGNvcmVPYmplY3QpCit7CisgICAgQVNTRVJUKGNvcmVPYmpl
Y3QpOworICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT04oZ19vYmpl
Y3RfbmV3KFdFQktJVF9ET01fVFlQRV9URVNUX0NBTExCQUNLX0ZVTkNUSU9OLCAiY29yZS1vYmpl
Y3QiLCBjb3JlT2JqZWN0LCBudWxscHRyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKK0dfREVGSU5FX1RZUEUoV2Vi
S2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24sIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5j
dGlvbiwgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sKKyAgICBX
ZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RF
U1RfQ0FMTEJBQ0tfRlVOQ1RJT05fR0VUX1BSSVZBVEUob2JqZWN0KTsKKyNpZiBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+
Y29yZU9iamVjdC5nZXQoKSk7CisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisg
ICAgcHJpdi0+fldlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uUHJpdmF0ZSgpOworICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90
ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0
cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9w
ZXJ0aWVzKQoreworICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9k
b21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBl
LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOworI2lmIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9u
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9DQUxMQkFDS19GVU5DVElPTl9HRVRfUFJJ
VkFURShvYmplY3QpOworICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpUZXN0Q2FsbGJhY2tGdW5jdGlvbio+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVP
YmplY3QpOworICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0
LmdldCgpLCBvYmplY3QpOworI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAg
IHJldHVybiBvYmplY3Q7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFj
a19mdW5jdGlvbl9jbGFzc19pbml0KFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uQ2xhc3Mq
IHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdv
YmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uUHJpdmF0ZSkp
OworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJh
Y2tfZnVuY3Rpb25fY29uc3RydWN0b3I7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdl
YmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9maW5hbGl6ZTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2luaXQoV2ViS2l0RE9NVGVzdENh
bGxiYWNrRnVuY3Rpb24qIHJlcXVlc3QpCit7CisgICAgV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVu
Y3Rpb25Qcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX0NBTExCQUNLX0ZVTkNUSU9OX0dF
VF9QUklWQVRFKHJlcXVlc3QpOworICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVGVzdENhbGxiYWNr
RnVuY3Rpb25Qcml2YXRlKCk7Cit9CisKK2dib29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFj
a19mdW5jdGlvbl9jYWxsYmFja193aXRoX25vX3BhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFja0Z1
bmN0aW9uKiBzZWxmKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT04oc2VsZiksIEZBTFNFKTsKKyAg
ICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhOb1BhcmFtKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOworICAgIFdF
QktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlNwZWVjaCBTeW50aGVzaXMiKQorICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7CisjZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpICovCit9CisKK2dib29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5j
dGlvbl9jYWxsYmFja193aXRoX2FycmF5X3BhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0
aW9uKiBzZWxmLCBXZWJLaXRET01GbG9hdDMyQXJyYXkqIGFycmF5UGFyYW0pCit7CisjaWYgRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9DQUxM
QkFDS19GVU5DVElPTihzZWxmKSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9ET01fSVNfRkxPQVQzMkFSUkFZKGFycmF5UGFyYW0pLCBGQUxTRSk7CisgICAgV2ViQ29y
ZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAg
V2ViQ29yZTo6RmxvYXQzMkFycmF5KiBjb252ZXJ0ZWRBcnJheVBhcmFtID0gV2ViS2l0Ojpjb3Jl
KGFycmF5UGFyYW0pOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aEFy
cmF5UGFyYW0oY29udmVydGVkQXJyYXlQYXJhbSk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOworICAgIFVOVVNFRF9QQVJBTShhcnJheVBhcmFtKTsK
KyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2ggU3ludGhlc2lzIikK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOworI2VuZGlmIC8qIEVOQUJMRShT
UEVFQ0hfU1lOVEhFU0lTKSAqLworfQorCitnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJh
Y2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9wYXJhbShX
ZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiogc2VsZiwgY29uc3QgZ2NoYXIqIHNyelBhcmFt
LCBjb25zdCBnY2hhciogc3RyQXJnKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT04oc2VsZiksIEZB
TFNFKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzcnpQYXJhbSwgRkFMU0UpOworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHN0ckFyZywgRkFMU0UpOworICAgIFdlYkNvcmU6OlRlc3RDYWxs
YmFja0Z1bmN0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdURjo6U3RyaW5n
IGNvbnZlcnRlZFN0ckFyZyA9IFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJBcmcpOworICAgIGdi
b29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBh
cmFtKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFdURjo6U3RyaW5nOjpm
cm9tVVRGOChzcnpQYXJhbSkpLCBjb252ZXJ0ZWRTdHJBcmcpOworICAgIHJldHVybiByZXN1bHQ7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0oc3J6UGFy
YW0pOworICAgIFVOVVNFRF9QQVJBTShzdHJBcmcpOworICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIlNwZWVjaCBTeW50aGVzaXMiKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxn
Ym9vbGVhbj4oMCk7CisjZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCit9CisK
K2dsb25nIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja193aXRoX25v
bl9ib29sX3JldHVybl90eXBlKFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uKiBzZWxmLCBj
b25zdCBnY2hhciogc3RyQXJnKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT04oc2VsZiksIDApOwor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN0ckFyZywgMCk7CisgICAgV2ViQ29yZTo6VGVzdENh
bGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV1RGOjpTdHJp
bmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0ckFyZyk7CisgICAg
Z2xvbmcgcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tXaXRoTm9uQm9vbFJldHVyblR5cGUoY29udmVy
dGVkU3RyQXJnKTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
c2VsZik7CisgICAgVU5VU0VEX1BBUkFNKHN0ckFyZyk7CisgICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGdsb25nPigwKTsKKyNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KK30KKwor
Z2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhf
c3RyaW5nX2xpc3QoV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24qIHNlbGYsIFdlYktpdERP
TURPTVN0cmluZ0xpc3QqIGxpc3RQYXJhbSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0NBTExCQUNLX0ZVTkNUSU9OKHNlbGYp
LCBGQUxTRSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19ET01fU1RS
SU5HX0xJU1QobGlzdFBhcmFtKSwgRkFMU0UpOworICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFja0Z1
bmN0aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OkRPTVN0cmlu
Z0xpc3QqIGNvbnZlcnRlZExpc3RQYXJhbSA9IFdlYktpdDo6Y29yZShsaXN0UGFyYW0pOworICAg
IGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoY29udmVydGVk
TGlzdFBhcmFtKTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
c2VsZik7CisgICAgVU5VU0VEX1BBUkFNKGxpc3RQYXJhbSk7CisgICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGdib29sZWFuPigwKTsKKyNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8K
K30KKworZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNr
X3dpdGhfYm9vbGVhbihXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiogc2VsZiwgZ2Jvb2xl
YW4gYm9vbFBhcmFtKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfRE9NX0lTX1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT04oc2VsZiksIEZBTFNFKTsKKyAg
ICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBnYm9vbGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhCb29sZWFuKGJvb2xQ
YXJhbSk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYp
OworICAgIFVOVVNFRF9QQVJBTShib29sUGFyYW0pOworICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIlNwZWVjaCBTeW50aGVzaXMiKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxn
Ym9vbGVhbj4oMCk7CisjZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCit9CisK
K2dib29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja19yZXF1
aXJlc190aGlzX3RvX3Bhc3MoV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24qIHNlbGYsIGds
b25nIGxvbmdQYXJhbSwgV2ViS2l0RE9NVGVzdE5vZGUqIHRlc3ROb2RlUGFyYW0pCit7CisjaWYg
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9D
QUxMQkFDS19GVU5DVElPTihzZWxmKSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9ET01fSVNfVEVTVF9OT0RFKHRlc3ROb2RlUGFyYW0pLCBGQUxTRSk7CisgICAgV2Vi
Q29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7Cisg
ICAgV2ViQ29yZTo6VGVzdE5vZGUqIGNvbnZlcnRlZFRlc3ROb2RlUGFyYW0gPSBXZWJLaXQ6OmNv
cmUodGVzdE5vZGVQYXJhbSk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tS
ZXF1aXJlc1RoaXNUb1Bhc3MobG9uZ1BhcmFtLCBjb252ZXJ0ZWRUZXN0Tm9kZVBhcmFtKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CisgICAgVU5V
U0VEX1BBUkFNKGxvbmdQYXJhbSk7CisgICAgVU5VU0VEX1BBUkFNKHRlc3ROb2RlUGFyYW0pOwor
ICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlNwZWVjaCBTeW50aGVzaXMiKQor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7CisjZW5kaWYgLyogRU5BQkxFKFNQ
RUVDSF9TWU5USEVTSVMpICovCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4OWE3ODE2Y2Y2ZmUxZGIzYWE0MDM5
ZTAzYjNhNDQ2ZTgyNDRmNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5o
CkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZu
ZGVmIFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uX2gKKyNkZWZpbmUgV2ViS2l0RE9NVGVz
dENhbGxiYWNrRnVuY3Rpb25faAorCisjaWZkZWYgV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJ
CisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRE
T01PYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy11bnN0YWJs
ZS5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lUX0RPTV9UWVBFX1RFU1RfQ0FM
TEJBQ0tfRlVOQ1RJT04gICAgICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0
aW9uX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9DQUxMQkFDS19GVU5DVElP
TihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJL
SVRfRE9NX1RZUEVfVEVTVF9DQUxMQkFDS19GVU5DVElPTiwgV2ViS2l0RE9NVGVzdENhbGxiYWNr
RnVuY3Rpb24pKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT05fQ0xB
U1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgV0VCS0lUX0RP
TV9UWVBFX1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT04sIFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0
aW9uQ2xhc3MpCisjZGVmaW5lIFdFQktJVF9ET01fSVNfVEVTVF9DQUxMQkFDS19GVU5DVElPTihv
YmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfRE9N
X1RZUEVfVEVTVF9DQUxMQkFDS19GVU5DVElPTikpCisjZGVmaW5lIFdFQktJVF9ET01fSVNfVEVT
VF9DQUxMQkFDS19GVU5DVElPTl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DQUxMQkFDS19GVU5DVElPTikpCisjZGVm
aW5lIFdFQktJVF9ET01fVEVTVF9DQUxMQkFDS19GVU5DVElPTl9HRVRfQ0xBU1Mob2JqKSAgKEdf
VFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DQUxM
QkFDS19GVU5DVElPTiwgV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25DbGFzcykpCisKK3N0
cnVjdCBfV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24geworICAgIFdlYktpdERPTU9iamVj
dCBwYXJlbnRfaW5zdGFuY2U7Cit9OworCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RDYWxsYmFja0Z1
bmN0aW9uQ2xhc3MgeworICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307
CisKK1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9n
ZXRfdHlwZSh2b2lkKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rp
b25fY2FsbGJhY2tfd2l0aF9ub19wYXJhbToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvbgorICoKKyAqIFJldHVybnM6IEEgI2dib29sZWFuCisgKgorICogU3RhYmls
aXR5OiBVbnN0YWJsZQorKiovCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZG9tX3Rlc3Rf
Y2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9ub19wYXJhbShXZWJLaXRET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvbiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNr
X2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfYXJyYXlfcGFyYW06CisgKiBAc2VsZjogQSAjV2ViS2l0
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24KKyAqIEBhcnJheVBhcmFtOiBBICNXZWJLaXRET01GbG9h
dDMyQXJyYXkKKyAqCisgKiBSZXR1cm5zOiBBICNnYm9vbGVhbgorICoKKyAqIFN0YWJpbGl0eTog
VW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2RvbV90ZXN0X2NhbGxi
YWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfYXJyYXlfcGFyYW0oV2ViS2l0RE9NVGVzdENhbGxi
YWNrRnVuY3Rpb24qIHNlbGYsIFdlYktpdERPTUZsb2F0MzJBcnJheSogYXJyYXlQYXJhbSk7CisK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhf
c2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfcGFyYW06CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVz
dENhbGxiYWNrRnVuY3Rpb24KKyAqIEBzcnpQYXJhbTogQSAjZ2NoYXIKKyAqIEBzdHJBcmc6IEEg
I2djaGFyCisgKgorICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KKyAqCisgKiBTdGFiaWxpdHk6IFVu
c3RhYmxlCisqKi8KK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFj
a19mdW5jdGlvbl9jYWxsYmFja193aXRoX3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX3BhcmFtKFdl
YktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uKiBzZWxmLCBjb25zdCBnY2hhciogc3J6UGFyYW0s
IGNvbnN0IGdjaGFyKiBzdHJBcmcpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFj
a19mdW5jdGlvbl9jYWxsYmFja193aXRoX25vbl9ib29sX3JldHVybl90eXBlOgorICogQHNlbGY6
IEEgI1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uCisgKiBAc3RyQXJnOiBBICNnY2hhcgor
ICoKKyAqIFJldHVybnM6IEEgI2dsb25nCisgKgorICogU3RhYmlsaXR5OiBVbnN0YWJsZQorKiov
CitXRUJLSVRfQVBJIGdsb25nCit3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2Fs
bGJhY2tfd2l0aF9ub25fYm9vbF9yZXR1cm5fdHlwZShXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5j
dGlvbiogc2VsZiwgY29uc3QgZ2NoYXIqIHN0ckFyZyk7CisKKy8qKgorICogd2Via2l0X2RvbV90
ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3Q6CisgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24KKyAqIEBsaXN0UGFyYW06IEEgI1dl
YktpdERPTURPTVN0cmluZ0xpc3QKKyAqCisgKiBSZXR1cm5zOiBBICNnYm9vbGVhbgorICoKKyAq
IFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2Rv
bV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QoV2ViS2l0
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24qIHNlbGYsIFdlYktpdERPTURPTVN0cmluZ0xpc3QqIGxp
c3RQYXJhbSk7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2Nh
bGxiYWNrX3dpdGhfYm9vbGVhbjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0Q2FsbGJhY2tG
dW5jdGlvbgorICogQGJvb2xQYXJhbTogQSAjZ2Jvb2xlYW4KKyAqCisgKiBSZXR1cm5zOiBBICNn
Ym9vbGVhbgorICoKKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSBnYm9v
bGVhbgord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfYm9v
bGVhbihXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiogc2VsZiwgZ2Jvb2xlYW4gYm9vbFBh
cmFtKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJh
Y2tfcmVxdWlyZXNfdGhpc190b19wYXNzOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RDYWxs
YmFja0Z1bmN0aW9uCisgKiBAbG9uZ1BhcmFtOiBBICNnbG9uZworICogQHRlc3ROb2RlUGFyYW06
IEEgI1dlYktpdERPTVRlc3ROb2RlCisgKgorICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KKyAqCisg
KiBTdGFiaWxpdHk6IFVuc3RhYmxlCisqKi8KK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9k
b21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja19yZXF1aXJlc190aGlzX3RvX3Bhc3Mo
V2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24qIHNlbGYsIGdsb25nIGxvbmdQYXJhbSwgV2Vi
S2l0RE9NVGVzdE5vZGUqIHRlc3ROb2RlUGFyYW0pOworCitHX0VORF9ERUNMUworCisjZW5kaWYg
LyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovCisjZW5kaWYgLyogV2ViS2l0RE9NVGVz
dENhbGxiYWNrRnVuY3Rpb25faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25Qcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODkwYTkyYjJi
ZGI1ZGE3OTUxYTQyODU2MzM3MDI4Njg5ZTAwMzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxi
YWNrRnVuY3Rpb25Qcml2YXRlLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZh
dGVfaAorI2RlZmluZSBXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGVfaAorCisj
aW5jbHVkZSAiVGVzdENhbGxiYWNrRnVuY3Rpb24uaCIKKyNpbmNsdWRlIDx3ZWJraXRkb20vV2Vi
S2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uaD4KKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKKworbmFtZXNwYWNlIFdlYktpdCB7CitXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiog
d3JhcFRlc3RDYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OlRlc3RDYWxsYmFja0Z1bmN0aW9uKik7
CitXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbioga2l0KFdlYkNvcmU6OlRlc3RDYWxsYmFj
a0Z1bmN0aW9uKik7CitXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogY29yZShXZWJLaXRE
T01UZXN0Q2FsbGJhY2tGdW5jdGlvbiopOworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KKworI2VuZGlmIC8qIFdlYktpdERPTVRl
c3RDYWxsYmFja0Z1bmN0aW9uUHJpdmF0ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrLmNwcAppbmRleCAz
OTIwNDQ2NGJlMTUzY2M2NTQ4NDI5YjRkNTlkZDI3OWEzYjc0Y2NkLi4wZDdlZjEwNjkxMjk3MWRm
NWM5NmY4YTNlNTk0MTZkZDQ1NTMwODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAKQEAgLTc1LDcg
Kzc1LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTm9QYXJhbSgpCiAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKIAogICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0g
ZmFsc2U7Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGV4ZWMsICJjYWxsYmFja1dpdGhOb1BhcmFtIiksICZyYWlzZWRFeGNlcHRpb24pOwor
ICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6Okludm9rZU1l
dGhvZDo6Tm9uQ2FsbGFibGVPYmplY3RPbmx5LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJjYWxsYmFja1dpdGhOb1BhcmFtIiksICZyYWlzZWRFeGNlcHRpb24pOwogICAgIHJldHVybiAh
cmFpc2VkRXhjZXB0aW9uOwogfQogCkBAIC05Myw3ICs5Myw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJh
Y2s6OmNhbGxiYWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZsb2F0MzJBcnJheT4gYXJyYXlQYXJh
bSkKICAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIFdU
Rjo6Z2V0UHRyKGFycmF5UGFyYW0pKSk7CiAKICAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZh
bHNlOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJhbSIpLCAmcmFpc2VkRXhjZXB0aW9uKTsK
KyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpJbnZva2VN
ZXRob2Q6Ok5vbkNhbGxhYmxlT2JqZWN0T25seSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVj
LCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJhbSIpLCAmcmFpc2VkRXhjZXB0aW9uKTsKICAgICByZXR1
cm4gIXJhaXNlZEV4Y2VwdGlvbjsKIH0KIApAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgSlNUZXN0
Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtKFBhc3NSZWZQ
dHI8U2VyaWFsaXplCiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgc3Ry
QXJnKSk7CiAKICAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIG1fZGF0YS0+
aW52b2tlQ2FsbGJhY2soYXJncywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY2FsbGJh
Y2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0iKSwgJnJhaXNlZEV4Y2VwdGlvbik7Cisg
ICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6SW52b2tlTWV0
aG9kOjpOb25DYWxsYWJsZU9iamVjdE9ubHksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
ImNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksICZyYWlzZWRFeGNlcHRp
b24pOwogICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOwogfQogCkBAIC0xMzAsNyArMTMwLDcg
QEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSkKICAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIG1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGxpc3RQYXJhbSkpKTsKIAogICAgIGJv
b2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhh
cmdzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjYWxsYmFja1dpdGhTdHJpbmdMaXN0
IiksICZyYWlzZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywg
SlNDYWxsYmFja0RhdGE6Okludm9rZU1ldGhvZDo6Tm9uQ2FsbGFibGVPYmplY3RPbmx5LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjYWxsYmFja1dpdGhTdHJpbmdMaXN0IiksICZyYWlz
ZWRFeGNlcHRpb24pOwogICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOwogfQogCkBAIC0xNDgs
NyArMTQ4LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQm9vbGVhbihib29s
IGJvb2xQYXJhbSkKICAgICBhcmdzLmFwcGVuZChqc0Jvb2xlYW4oYm9vbFBhcmFtKSk7CiAKICAg
ICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJh
Y2soYXJncywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY2FsbGJhY2tXaXRoQm9vbGVh
biIpLCAmcmFpc2VkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3Ms
IEpTQ2FsbGJhY2tEYXRhOjpJbnZva2VNZXRob2Q6Ok5vbkNhbGxhYmxlT2JqZWN0T25seSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY2FsbGJhY2tXaXRoQm9vbGVhbiIpLCAmcmFpc2Vk
RXhjZXB0aW9uKTsKICAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlvbjsKIH0KIApAQCAtMTY3LDcg
KzE2Nyw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNz
KGludCBsb25nUGFyYW0sIFRlc3ROb2RlKiB0ZXN0Tm9kCiAgICAgYXJncy5hcHBlbmQodG9KUyhl
eGVjLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cih0ZXN0Tm9kZVBhcmFtKSkp
OwogCiAgICAgYm9vbCByYWlzZWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKGFyZ3MsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNhbGxiYWNrUmVx
dWlyZXNUaGlzVG9QYXNzIiksICZyYWlzZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tl
Q2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6Okludm9rZU1ldGhvZDo6Tm9uQ2FsbGFibGVP
YmplY3RPbmx5LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjYWxsYmFja1JlcXVpcmVz
VGhpc1RvUGFzcyIpLCAmcmFpc2VkRXhjZXB0aW9uKTsKICAgICByZXR1cm4gIXJhaXNlZEV4Y2Vw
dGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM4MTUxNDA0ZDMwMDczMmZkMjIxOTI4MWQzZmQ2MTZlMmEwMDAzZTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSwxODIgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisK
KyNpbmNsdWRlICJKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJET01TdHJp
bmdMaXN0LmgiCisjaW5jbHVkZSAiSlNET01TdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiSlNUZXN0
Tm9kZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJUZXN0Tm9kZS5oIgorI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8cnVudGltZS9K
U1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0pTVGVzdENhbGxiYWNrRnVuY3Rpb246OkpTVGVzdENhbGxiYWNrRnVuY3Rpb24oSlNPYmpl
Y3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIDogVGVz
dENhbGxiYWNrRnVuY3Rpb24oKQorICAgICwgQWN0aXZlRE9NQ2FsbGJhY2soZ2xvYmFsT2JqZWN0
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tE
YXRhKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKQoreworfQorCitKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uOjp+SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbigpCit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICAvLyBXaGVuIHRo
ZSBjb250ZXh0IGlzIGRlc3Ryb3llZCwgYWxsIHRhc2tzIHdpdGggYSByZWZlcmVuY2UgdG8gYSBj
YWxsYmFjaworICAgIC8vIHNob3VsZCBiZSBkZWxldGVkLiBTbyBpZiB0aGUgY29udGV4dCBpcyAw
LCB3ZSBhcmUgb24gdGhlIGNvbnRleHQgdGhyZWFkLgorICAgIGlmICghY29udGV4dCB8fCBjb250
ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSkKKyAgICAgICAgZGVsZXRlIG1fZGF0YTsKKyAgICBlbHNl
CisgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKERlbGV0ZUNhbGxiYWNrRGF0YVRhc2sobV9kYXRh
KSk7CisjaWZuZGVmIE5ERUJVRworICAgIG1fZGF0YSA9IDA7CisjZW5kaWYKK30KKworCisvLyBG
dW5jdGlvbnMKKworYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhOb1Bh
cmFtKCkKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+IHByb3RlY3QoKnRoaXMpOwor
CisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+dm0oKSk7CisK
KyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKworICAgIGJvb2wgcmFpc2VkRXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIG1fZGF0YS0+aW52
b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6Okludm9rZU1ldGhvZDo6RnVuY3Rpb25P
bmx5LCBJZGVudGlmaWVyKCksICZyYWlzZWRFeGNlcHRpb24pOworICAgIHJldHVybiAhcmFpc2Vk
RXhjZXB0aW9uOworfQorCitib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNhbGxiYWNrV2l0
aEFycmF5UGFyYW0oUmVmUHRyPEZsb2F0MzJBcnJheT4gYXJyYXlQYXJhbSkKK3sKKyAgICBpZiAo
IWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUmVmPEpT
VGVzdENhbGxiYWNrRnVuY3Rpb24+IHByb3RlY3QoKnRoaXMpOworCisgICAgSlNMb2NrSG9sZGVy
IGxvY2sobV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+dm0oKSk7CisKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIG1fZGF0YS0+Z2xv
YmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGFycmF5UGFyYW0pKSk7CisKKyAgICBib29sIHJhaXNl
ZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpJbnZva2VNZXRob2Q6OkZ1bmN0
aW9uT25seSwgSWRlbnRpZmllcigpLCAmcmFpc2VkRXhjZXB0aW9uKTsKKyAgICByZXR1cm4gIXJh
aXNlZEV4Y2VwdGlvbjsKK30KKworYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFj
a1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc3J6UGFyYW0sIGNvbnN0IFN0cmluZyYgc3RyQXJnKQoreworICAgIGlmICghY2Fu
SW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBSZWY8SlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbj4gcHJvdGVjdCgqdGhpcyk7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9j
ayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHNyelBhcmFtID8gc3J6UGFyYW0tPmRlc2Vy
aWFsaXplKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpKTsK
KyAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBzdHJBcmcpKTsKKworICAg
IGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwor
ICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6Okludm9rZU1l
dGhvZDo6RnVuY3Rpb25Pbmx5LCBJZGVudGlmaWVyKCksICZyYWlzZWRFeGNlcHRpb24pOworICAg
IHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOworfQorCitib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rp
b246OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0
UGFyYW0pCit7CisgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBwcm90ZWN0KCp0aGlzKTsK
KworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpOwor
CisgICAgRXhlY1N0YXRlKiBleGVjID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9K
UyhleGVjLCBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihsaXN0UGFyYW0pKSk7
CisKKyAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpJ
bnZva2VNZXRob2Q6OkZ1bmN0aW9uT25seSwgSWRlbnRpZmllcigpLCAmcmFpc2VkRXhjZXB0aW9u
KTsKKyAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlvbjsKK30KKworYm9vbCBKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhCb29sZWFuKGJvb2wgYm9vbFBhcmFtKQoreworICAgIGlm
ICghY2FuSW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBSZWY8
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gcHJvdGVjdCgqdGhpcyk7CisKKyAgICBKU0xvY2tIb2xk
ZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKKworICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKGpzQm9vbGVhbihib29sUGFyYW0p
KTsKKworICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6
Okludm9rZU1ldGhvZDo6RnVuY3Rpb25Pbmx5LCBJZGVudGlmaWVyKCksICZyYWlzZWRFeGNlcHRp
b24pOworICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOworfQorCitib29sIEpTVGVzdENhbGxi
YWNrRnVuY3Rpb246OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKGludCBsb25nUGFyYW0sIFRl
c3ROb2RlKiB0ZXN0Tm9kZVBhcmFtKQoreworICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4g
cHJvdGVjdCgqdGhpcyk7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9i
amVjdCgpLT52bSgpKTsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAg
IGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGxvbmdQYXJhbSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlMo
ZXhlYywgbV9kYXRhLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIodGVzdE5vZGVQYXJhbSkp
KTsKKworICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6
Okludm9rZU1ldGhvZDo6RnVuY3Rpb25Pbmx5LCBJZGVudGlmaWVyKCksICZyYWlzZWRFeGNlcHRp
b24pOworICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOworfQorCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNmZTNmMjA4ZGFlNTFiMjhlNmU5YzcwZGQ1ZGM4ZTZmYjVlZGY1OTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworI2lmbmRlZiBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uX2gKKyNkZWZpbmUgSlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbl9oCisKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKworI2lu
Y2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0RhdGEuaCIK
KyNpbmNsdWRlICJUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
biA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNr
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+IGNyZWF0
ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb24oY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOworICAgIH0KKworICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
IH0KKworICAgIHZpcnR1YWwgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb24oKTsKKworICAgIC8vIEZ1
bmN0aW9ucworICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1dpdGhOb1BhcmFtKCk7CisgICAgdmly
dHVhbCBib29sIGNhbGxiYWNrV2l0aEFycmF5UGFyYW0oUmVmUHRyPEZsb2F0MzJBcnJheT4gYXJy
YXlQYXJhbSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVBhcmFtKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzcnpQYXJhbSwgY29u
c3QgU3RyaW5nJiBzdHJBcmcpOworICAgIENPTVBJTEVfQVNTRVJUKGZhbHNlKSAgICB2aXJ0dWFs
IGludCBjYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZShjb25zdCBTdHJpbmcmIHN0ckFyZyk7
CisgICAgdmlydHVhbCBpbnQgY3VzdG9tQ2FsbGJhY2soQ2xhc3M1KiBjbGFzczVQYXJhbSwgQ2xh
c3M2KiBjbGFzczZQYXJhbSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aFN0cmluZ0xp
c3QoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0UGFyYW0pOworICAgIHZpcnR1YWwgYm9v
bCBjYWxsYmFja1dpdGhCb29sZWFuKGJvb2wgYm9vbFBhcmFtKTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MoaW50IGxvbmdQYXJhbSwgVGVzdE5vZGUqIHRlc3RO
b2RlUGFyYW0pOworCitwcml2YXRlOgorICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb24oSlNDOjpK
U09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisKKyAgICBKU0NhbGxiYWNr
RGF0YSogbV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA3ZDk0MDkw
NTJjZmRiOTBjNmIxMGM5ODM3ODhjNzg3ZjEyMGQwODZkLi4wNmNiNzhkOGRjZTcxYTg4MjU5MzI0
MWUxYWFjMjc1ZTEyMTM1Mjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIkpTU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRl
ICJKU1Rlc3RDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU1Rlc3ROb2RlLmgiCiAjaW5jbHVkZSAiSlNUZXN0T2JqLmgiCiAjaW5jbHVk
ZSAiSlNUZXN0U3ViT2JqLmgiCkBAIC0xMTYsNiArMTE3LDkgQEAgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3QKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhKU0M6OkV4ZWNTdGF0ZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhKU0M6OkV4ZWNT
dGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhKU0M6
OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoSlNDOjpFeGVj
U3RhdGUqKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKQEAgLTQ1MSwxMiArNDU1LDE1IEBAIENP
TVBJTEVfQVNTRVJUKDAgPT0gVGVzdE9iajo6cmVhZG9ubHksIFRlc3RPYmpFbnVtcmVhZG9ubHlJ
c1dyb25nVXNlRG9Ob3RDaGVja0NvCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVz
dE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RPYmooRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqQ29uc3RydWN0b3IqPihleGVj
LT5jYWxsZWUoKSk7Ci0gICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQorICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihl
eGVjKSk7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCisgICAgaWYg
KCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9i
aiIsIG51bGxwdHIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IHRlc3RDYWxsYmFjayA9IEpT
VGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgUmVmUHRyPFRlc3RPYmo+IG9iamVj
dCA9IFRlc3RPYmo6OmNyZWF0ZSh0ZXN0Q2FsbGJhY2spOworICAgIGlmICghZXhlYy0+YXJndW1l
bnQoMSkuaXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1
bmN0aW9uRXJyb3IoKmV4ZWMsIDEsICJ0ZXN0Q2FsbGJhY2tGdW5jdGlvbiIsICJUZXN0T2JqIiwg
bnVsbHB0cik7CisgICAgUmVmUHRyPFRlc3RDYWxsYmFja0Z1bmN0aW9uPiB0ZXN0Q2FsbGJhY2tG
dW5jdGlvbiA9IEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShhc09iamVjdChleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBS
ZWZQdHI8VGVzdE9iaj4gb2JqZWN0ID0gVGVzdE9iajo6Y3JlYXRlKHRlc3RDYWxsYmFjaywgdGVz
dENhbGxiYWNrRnVuY3Rpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3Qo
dG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOwog
fQogCkBAIC00NzMsNyArNDgwLDcgQEAgdm9pZCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBBU1NF
UlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTVGVzdE9iajo6Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlM
aXRlcmFsKCJUZXN0T2JqZWN0IikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogfQogCkBA
IC02MTgsNiArNjI1LDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBy
b3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIsIEpT
Qzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKSwg
KGludHB0cl90KSAoMSkgfSwKICAgICB7ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0FyZyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcpLCAoaW50cHRyX3QpICgyKSB9LAogICAgIHsgIm1l
dGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5z
aWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyksIChpbnRwdHJfdCkg
KDApIH0sCisgICAgeyAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciLCBKU0M6OkZ1bmN0
aW9uLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKSwg
KGludHB0cl90KSAoMSkgfSwKKyAgICB7ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0Z1bmN0aW9uQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKSwgKGludHB0cl90KSAo
MikgfSwKKyAgICB7ICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIiwg
SlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5j
dGlvbkFuZE9wdGlvbmFsQXJnKSwgKGludHB0cl90KSAoMCkgfSwKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkKICAgICB7ICJjb25kaXRpb25hbE1ldGhvZDEiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJp
bnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMSksIChpbnRwdHJfdCkgKDApIH0sCiAjZWxz
ZQpAQCAtMzU5OSw3ICszNjA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhFeGUKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgwKS5pc0Z1bmN0aW9uKCkpCisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMs
IDAsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAg
IFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShh
c09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjayk7CkBAIC0z
NjE5LDcgKzM2MjksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQQogICAgIGludCBub25DYWxs
YmFjayA9IHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgxKS5pc0Z1bmN0aW9uKCkpCisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMs
IDEsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrQXJnIik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RD
YWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNr
QXJnQW5kQ2FsbGJhY2tBcmcobm9uQ2FsbGJhY2ssIGNhbGxiYWNrKTsKQEAgLTM2MzYsNyArMzY0
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgaWYgKCFl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCisgICAgICAgIGlmICghZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICAgICAgY2Fs
bGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIH0KQEAgLTM2NDQs
MTEgKzM2NTQsNjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGkKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25B
cmcoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdp
dGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoZXhlYykpOworICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigp
KQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMs
IDAsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
Iik7CisgICAgUmVmUHRyPFRlc3RDYWxsYmFja0Z1bmN0aW9uPiBjYWxsYmFjayA9IEpTVGVzdENh
bGxiYWNrRnVuY3Rpb246OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBpbXBsLm1ldGhvZFdpdGhDYWxs
YmFja0Z1bmN0aW9uQXJnKGNhbGxiYWNrKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5j
dGlvbkFyZyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOworICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgaWYgKFVOTElLRUxZKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDIpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBpbnQgbm9uQ2FsbGJh
Y2sgPSB0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsK
KyAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICghZXhlYy0+YXJndW1lbnQo
MSkuaXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0
aW9uRXJyb3IoKmV4ZWMsIDEsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhOb25D
YWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICBSZWZQdHI8VGVzdENhbGxi
YWNrRnVuY3Rpb24+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGFz
T2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpOworICAgIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5j
dGlvbkFyZyhub25DYWxsYmFjaywgY2FsbGJhY2spOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlv
bmFsQXJnKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBSZWZQdHI8VGVzdENhbGxiYWNrRnVuY3Rp
b24+IGNhbGxiYWNrOworICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51
bGwoKSkgeworICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzRnVuY3Rp
b24oKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVu
Y3Rpb25BbmRPcHRpb25hbEFyZyIpOworICAgICAgICBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNr
RnVuY3Rpb246OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKKyAgICB9CisgICAgaW1wbC5tZXRob2RXaXRoQ2Fs
bGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKGNhbGxiYWNrKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tB
bmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFj
az4gY2FsbGJhY2s7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7Ci0gICAgICAgIGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNGdW5jdGlv
bigpKQorICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzT2JqZWN0KCkp
CiAgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4
ZWMsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnIik7CiAgICAgICAgIGNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2Fs
bGJhY2s8SlNUZXN0Q2FsbGJhY2s+KGV4ZWMsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICB9CkBAIC0zNjYwLDcgKzM3MjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhYwogewog
ICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVj
KSk7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCisgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgInN0
YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNh
bGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNUZXN0Q2FsbGJhY2s+KGV4ZWMs
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSks
IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RX
aXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2spOwpAQCAtMzgwMyw3ICszODY4LDcgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kNSgKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7
Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCisgICAgaWYgKCFleGVj
LT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11
c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjayA9IEpTVGVz
dENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKGNh
bGxiYWNrKTsKQEAgLTM5NDMsNyArNDAwOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNTdGF0CiAg
ICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qz
KGV4ZWMpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkKICAgICAgICAgcmV0dXJuIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoZXhlYyk7Ci0gICAgaWYgKChhcmdz
Q291bnQgPT0gMSAmJiAoYXJnMC5pc051bGwoKSB8fCBhcmcwLmlzRnVuY3Rpb24oKSkpKQorICAg
IGlmICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNOdWxsKCkgfHwgYXJnMC5pc09iamVjdCgp
KSkpCiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2Q1KGV4ZWMpOwogICAgIGlmICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNOdWxsKCkg
fHwgKGFyZzAuaXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoSlNET01TdHJp
bmdMaXN0OjppbmZvKCkpKSkpKQogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kNihleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGRh
MWQ0Yzk2ZmE0ZjlkYzhjNDQwNTVhNjJjOWE2Yjk3Y2FkNDRkOTEuLjEzY2U5YzU4ZDY5Yzk0ZGRm
ZjA3ZDk4ZmUxYTkyNTliMjAxNDVkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0VHlwZWRlZnMoCiAgICAgU3RyaW5nIGhlbGxvID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9u
KCkpCisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKmV4ZWMsIDEsICJ0ZXN0Q2FsbGJh
Y2siLCAiVGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4g
dGVzdENhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBSZWZQ
dHI8VGVzdFR5cGVkZWZzPiBvYmplY3QgPSBUZXN0VHlwZWRlZnM6OmNyZWF0ZShoZWxsbywgdGVz
dENhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkzMmEzMjRmYTZmZmI3ZTkxZjQyMjEyMTA5ZjhhNWZlNDBjYzIwNDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
Q2FsbGJhY2tGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworQGNsYXNzIERPTUNsYXNzNTsKK0Bj
bGFzcyBET01DbGFzczY7CitAY2xhc3MgRE9NRE9NU3RyaW5nTGlzdDsKK0BjbGFzcyBET01GbG9h
dDMyQXJyYXk7CitAY2xhc3MgRE9NVGVzdE5vZGU7CitAY2xhc3MgTlNTdHJpbmc7CisKK1dFQktJ
VF9DTEFTU19BVkFJTEFCTEVfTUFDKDk4NzZfNSkKK1dFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2Ug
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gOiBET01PYmplY3QKKy0gKEJPT0wpY2FsbGJhY2tXaXRo
Tm9QYXJhbTsKKy0gKEJPT0wpY2FsbGJhY2tXaXRoQXJyYXlQYXJhbTooRE9NRmxvYXQzMkFycmF5
ICopYXJyYXlQYXJhbTsKKy0gKEJPT0wpY2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVl
UGFyYW06KE5TU3RyaW5nICopc3J6UGFyYW0gc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZzsKKy0g
KGludCljYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZTooTlNTdHJpbmcgKilzdHJBcmc7Cist
IChpbnQpY3VzdG9tQ2FsbGJhY2s6KERPTUNsYXNzNSAqKWNsYXNzNVBhcmFtIGNsYXNzNlBhcmFt
OihET01DbGFzczYgKiljbGFzczZQYXJhbTsKKy0gKEJPT0wpY2FsbGJhY2tXaXRoU3RyaW5nTGlz
dDooRE9NRE9NU3RyaW5nTGlzdCAqKWxpc3RQYXJhbTsKKy0gKEJPT0wpY2FsbGJhY2tXaXRoQm9v
bGVhbjooQk9PTClib29sUGFyYW07CistIChCT09MKWNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNz
OihpbnQpbG9uZ1BhcmFtIHRlc3ROb2RlUGFyYW06KERPTVRlc3ROb2RlICopdGVzdE5vZGVQYXJh
bTsKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24ubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWIxMmVkNDM0ZDMyYzY1Y2I0MTIzZTEzMWQwZmVmNGY1YWQ2NGY2NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RD
YWxsYmFja0Z1bmN0aW9uLm1tCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKKyNpbXBvcnQgIkRPTUlu
dGVybmFsLmgiCisKKyNpbXBvcnQgIkRPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmgiCisKKyNpbXBv
cnQgIkNsYXNzNS5oIgorI2ltcG9ydCAiQ2xhc3M2LmgiCisjaW1wb3J0ICJET01DbGFzczVJbnRl
cm5hbC5oIgorI2ltcG9ydCAiRE9NQ2xhc3M2SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTURPTVN0
cmluZ0xpc3RJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NRmxvYXQzMkFycmF5SW50ZXJuYWwuaCIK
KyNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NU3RyaW5nTGlzdC5oIgor
I2ltcG9ydCAiRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9N
VGVzdE5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKKyNpbXBv
cnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2ltcG9ydCAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCisjaW1wb3J0ICJUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oIgorI2ltcG9ydCAiVGVzdE5v
ZGUuaCIKKyNpbXBvcnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJVUkwuaCIKKyNpbXBvcnQg
IldlYkNvcmVPYmpDRXh0cmFzLmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgi
CisjaW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0
PFdlYkNvcmU6OlRlc3RDYWxsYmFja0Z1bmN0aW9uKj4oX2ludGVybmFsKQorCitAaW1wbGVtZW50
YXRpb24gRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
aWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvbiBjbGFzc10sIHNlbGYpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
X2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOworICAgIFtzdXBlciBkZWFsbG9jXTsK
K30KKworLSAodm9pZClmaW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElN
UEwtPmRlcmVmKCk7CisgICAgW3N1cGVyIGZpbmFsaXplXTsKK30KKworLSAoQk9PTCljYWxsYmFj
a1dpdGhOb1BhcmFtCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhOb1BhcmFtKCk7Cit9CisKKy0gKEJPT0wp
Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbTooRE9NRmxvYXQzMkFycmF5ICopYXJyYXlQYXJhbQorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1Q
TC0+Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbShjb3JlKGFycmF5UGFyYW0pKTsKK30KKworLSAoQk9P
TCljYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbTooTlNTdHJpbmcgKilzcnpQ
YXJhbSBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJnCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhTZXJpYWxp
emVkU2NyaXB0VmFsdWVQYXJhbShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShXVEY6OlN0cmluZyhzcnpQYXJhbSkpLCBzdHJBcmcpOworfQorCistIChpbnQpY2FsbGJhY2tX
aXRoTm9uQm9vbFJldHVyblR5cGU6KE5TU3RyaW5nICopc3RyQXJnCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dp
dGhOb25Cb29sUmV0dXJuVHlwZShzdHJBcmcpOworfQorCistIChpbnQpY3VzdG9tQ2FsbGJhY2s6
KERPTUNsYXNzNSAqKWNsYXNzNVBhcmFtIGNsYXNzNlBhcmFtOihET01DbGFzczYgKiljbGFzczZQ
YXJhbQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBy
ZXR1cm4gSU1QTC0+Y3VzdG9tQ2FsbGJhY2soY29yZShjbGFzczVQYXJhbSksIGNvcmUoY2xhc3M2
UGFyYW0pKTsKK30KKworLSAoQk9PTCljYWxsYmFja1dpdGhTdHJpbmdMaXN0OihET01ET01TdHJp
bmdMaXN0ICopbGlzdFBhcmFtCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KGNvcmUobGlz
dFBhcmFtKSk7Cit9CisKKy0gKEJPT0wpY2FsbGJhY2tXaXRoQm9vbGVhbjooQk9PTClib29sUGFy
YW0KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPmNhbGxiYWNrV2l0aEJvb2xlYW4oYm9vbFBhcmFtKTsKK30KKworLSAoQk9PTClj
YWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzczooaW50KWxvbmdQYXJhbSB0ZXN0Tm9kZVBhcmFtOihE
T01UZXN0Tm9kZSAqKXRlc3ROb2RlUGFyYW0KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9Q
YXNzKGxvbmdQYXJhbSwgY29yZSh0ZXN0Tm9kZVBhcmFtKSk7Cit9CisKK0BlbmQKKworV2ViQ29y
ZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGNvcmUoRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gKndy
YXBwZXIpCit7CisgICAgcmV0dXJuIHdyYXBwZXIgPyByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OlRlc3RDYWxsYmFja0Z1bmN0aW9uKj4od3JhcHBlci0+X2ludGVybmFsKSA6IDA7Cit9CisKK0RP
TVRlc3RDYWxsYmFja0Z1bmN0aW9uICpraXQoV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24q
IHZhbHVlKQoreworICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7Cisg
ICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBpZiAoRE9NVGVzdENhbGxi
YWNrRnVuY3Rpb24gKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBET01UZXN0Q2FsbGJhY2tG
dW5jdGlvbiAqd3JhcHBlciA9IFtbRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gYWxsb2NdIF9pbml0
XTsKKyAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdElu
dGVybmFsKj4odmFsdWUpOworICAgIHZhbHVlLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHdy
YXBwZXIsIHZhbHVlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2tGdW5jdGlvbklu
dGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0Q2FsbGJhY2tGdW5jdGlvbkludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQzMGE5MGRiZmU5NmFk
OGM3MWM0NDg0OTNkMTg3NGNhNDM4YTdmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uSW50
ZXJuYWwuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NVGVz
dENhbGxiYWNrRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVGVzdENh
bGxiYWNrRnVuY3Rpb247Cit9CisKK1dFQkNPUkVfRVhQT1JUIFdlYkNvcmU6OlRlc3RDYWxsYmFj
a0Z1bmN0aW9uKiBjb3JlKERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uICopOworV0VCQ09SRV9FWFBP
UlQgRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gKmtpdChXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5j
dGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0Q2FsbGJhY2tGdW5jdGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgzODdkNzdmMTU5
MDllYjc5YzRhYmQ0YzVkMGE3NGJkMzBhZjQ0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tGdW5jdGlvbi5pZGwKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUgYmluZGlu
Z3MgY29kZSBnZW5lcmF0b3Igd2l0aCBmdW5jdGlvbiBvbmx5IGNhbGxiYWNrCisvLyBpbnRlcmZh
Y2UgYW5kIGZvciB0cmFja2luZyBjaGFuZ2VzIGluIGl0cyBvdXB1dC4KK1sKKyAgICBDb25kaXRp
b25hbD1TUEVFQ0hfU1lOVEhFU0lTLAorICAgIENhbGxiYWNrPUZ1bmN0aW9uT25seSwKK10gY2Fs
bGJhY2sgaW50ZXJmYWNlIFRlc3RDYWxsYmFja0Z1bmN0aW9uIHsKKyAgYm9vbGVhbiBjYWxsYmFj
a1dpdGhOb1BhcmFtKCk7CisgIGJvb2xlYW4gY2FsbGJhY2tXaXRoQXJyYXlQYXJhbShGbG9hdDMy
QXJyYXkgYXJyYXlQYXJhbSk7CisgIGJvb2xlYW4gY2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlw
dFZhbHVlUGFyYW0oU2VyaWFsaXplZFNjcmlwdFZhbHVlIHNyelBhcmFtLCBET01TdHJpbmcgc3Ry
QXJnKTsKKyAgbG9uZyBjYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZShET01TdHJpbmcgc3Ry
QXJnKTsKKyAgW0N1c3RvbV0gbG9uZyBjdXN0b21DYWxsYmFjayhDbGFzczUgY2xhc3M1UGFyYW0s
IENsYXNzNiBjbGFzczZQYXJhbSk7CisgIGJvb2xlYW4gY2FsbGJhY2tXaXRoU3RyaW5nTGlzdChE
T01TdHJpbmdMaXN0IGxpc3RQYXJhbSk7CisgIGJvb2xlYW4gY2FsbGJhY2tXaXRoQm9vbGVhbihi
b29sZWFuIGJvb2xQYXJhbSk7CisgIGJvb2xlYW4gY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3Mo
bG9uZyBsb25nUGFyYW0sIFRlc3ROb2RlIHRlc3ROb2RlUGFyYW0pOworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCBhNTY3NGY4
NmIyNTQ1MTY1M2NkNTIwMjBjMmUyZDE3ODYzY2JjZmFmLi5kMDM3ZWM0ZmI5MWY4YWFmY2M3MGZj
NmM4NWQyZDg3NjdjOTRiOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0zNiw3ICszNiw3IEBAIGVudW0gVGVzdEVudW1UeXBl
IHsgIiIsICJFbnVtVmFsdWUxIiwgIkVudW1WYWx1ZTIiLCAiRW51bVZhbHVlMyIgfTsKIGVudW0g
X29wdGlvbmFsIHsgIiIsICJPcHRpb25hbFZhbHVlMSIsICJPcHRpb25hbFZhbHVlMiIsICJPcHRp
b25hbFZhbHVlMyIgfTsKIAogWwotICAgIENvbnN0cnVjdG9yKFRlc3RDYWxsYmFjayB0ZXN0Q2Fs
bGJhY2spLAorICAgIENvbnN0cnVjdG9yKFRlc3RDYWxsYmFjayB0ZXN0Q2FsbGJhY2ssIFRlc3RD
YWxsYmFja0Z1bmN0aW9uIHRlc3RDYWxsYmFja0Z1bmN0aW9uKSwKICAgICBJbnRlcmZhY2VOYW1l
PVRlc3RPYmplY3QKIF0gaW50ZXJmYWNlIFRlc3RPYmogewogICAgIC8vIEF0dHJpYnV0ZXMKQEAg
LTE0NiwxMCArMTQ2LDE2IEBAIGVudW0gX29wdGlvbmFsIHsgIiIsICJPcHRpb25hbFZhbHVlMSIs
ICJPcHRpb25hbFZhbHVlMiIsICJPcHRpb25hbFZhbHVlMyIgfTsKICAgICB2b2lkICAgIG1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyhbRGVmYXVsdD1OdWxsU3RyaW5nXSBvcHRp
b25hbCBET01TdHJpbmcgc3RyKTsKIAogI2lmIGRlZmluZWQoVEVTVElOR19KUykKLSAgICAvLyAn
Q2FsbGJhY2snIGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgIC8vIENhbGxiYWNrIGludGVyZmFjZSBw
YXJhbWV0ZXJzLgogICAgIHZvaWQgICAgbWV0aG9kV2l0aENhbGxiYWNrQXJnKFRlc3RDYWxsYmFj
ayBjYWxsYmFjayk7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0FyZyhsb25nIG5vbkNhbGxiYWNrLCBUZXN0Q2FsbGJhY2sgY2FsbGJhY2spOwogICAgIHZv
aWQgICAgbWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcob3B0aW9uYWwgVGVzdENhbGxi
YWNrIGNhbGxiYWNrKTsKKworICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIHBhcmFtZXRlcnMuCisg
ICAgdm9pZCAgICBtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhUZXN0Q2FsbGJhY2tGdW5j
dGlvbiBjYWxsYmFjayk7CisgICAgdm9pZCAgICBtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0Z1bmN0aW9uQXJnKGxvbmcgbm9uQ2FsbGJhY2ssIFRlc3RDYWxsYmFja0Z1bmN0aW9u
IGNhbGxiYWNrKTsKKyAgICB2b2lkICAgIG1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0
aW9uYWxBcmcob3B0aW9uYWwgVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spOworCiAgICAg
Ly8gc3RhdGljIG1ldGhvZHMgd2l0aCAnQ2FsbGJhY2snIGV4dGVuZGVkIGF0dHJpYnV0ZQogICAg
IHN0YXRpYyB2b2lkICAgIHN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKG9w
dGlvbmFsIFRlc3RDYWxsYmFjayBjYWxsYmFjayk7CiAgICAgc3RhdGljIHZvaWQgICAgc3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQXJnKFRlc3RDYWxsYmFjayBjYWxsYmFjayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5pZGwKaW5kZXggM2YxNjkyODRhMzNk
ZWVhMGU0MWFlYTc2ZWEyODNiMDZlMTIzNDM3My4uMjNmNDAxMmE0ZGI0ZmI5ZWMzZWI4Nzk4ZjYy
YmM5NzViNzk2YmFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmlkbApAQCAtMTksNiArMTksNyBAQAogCiBbCiAgICAgQ2FsbGJhY2tOZWVkc09wZXJh
dG9yRXF1YWwsCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAogXSBjYWxsYmFjayBpbnRlcmZh
Y2UgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lciB7CiAgICAgYm9vbGVhbiBxdWVyeUNoYW5nZWQoW0Rl
ZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBNZWRpYVF1ZXJ5TGlzdCBsaXN0KTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlk
bAppbmRleCBlMTY5YTM2MjhhNDBhYmExZGM3YzYzZjYzMjAwMWI0OTEzMjQzNzIxLi5jNWY1Yzcx
ZmM2YjMxZTRlNzY3OGRmMmNhYjZkMjZjOGEyNWMxODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwKQEAgLTMwLDYgKzMw
LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPVJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FLAorICAg
IENhbGxiYWNrPUZ1bmN0aW9uT25seSwKIF0gY2FsbGJhY2sgaW50ZXJmYWNlIFJlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrIHsKICAgICAvLyBoaWdoUmVzVGltZSBpcyBwYXNzZWQgYXMgaGln
aCByZXNvbHV0aW9uIHRpbWVzdGFtcCwgc2VlCiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIv
aHItdGltZS8gZm9yIGRldGFpbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3Ry
aW5nQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmlkbApp
bmRleCA5YWI3OWMxM2NlZGUyOTUwZDQ0ZGUyMDUyNDk0ZDMzODgyNTJmYzRmLi45MjM2ODdhYjMw
YmZiZjVjZmQ4MTQzZGQzODNlODFkMTUwNzY1YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3RyaW5nQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdD
YWxsYmFjay5pZGwKQEAgLTI4LDYgKzI4LDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotY2Fs
bGJhY2sgaW50ZXJmYWNlIFN0cmluZ0NhbGxiYWNrIHsKK1sKKyAgICBDYWxsYmFjaz1GdW5jdGlv
bk9ubHksCitdIGNhbGxiYWNrIGludGVyZmFjZSBTdHJpbmdDYWxsYmFjayB7CiAgICAgYm9vbGVh
biBoYW5kbGVFdmVudChET01TdHJpbmcgZGF0YSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Wb2lkQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Wb2lkQ2Fs
bGJhY2suaWRsCmluZGV4IDU1ZmExODI1NzcxYmU1ZTk5YTExNDRlMzU1MzE4NThjYjI3NWY5NWIu
LjlmYzQ5YWZjYjE4NjY2ZDdkZDZmM2RhN2FkYzliYzIwN2FkZWVmNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVm9pZENhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1ZvaWRDYWxsYmFjay5pZGwKQEAgLTIyLDcgKzIyLDggQEAKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCiAgKi8KLQotY2FsbGJhY2sgaW50ZXJmYWNlIFZvaWRDYWxsYmFjayB7
CitbCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAorXSBjYWxsYmFjayBpbnRlcmZhY2UgVm9p
ZENhbGxiYWNrIHsKICAgICBib29sZWFuIGhhbmRsZUV2ZW50KCk7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259883</attachid>
            <date>2015-08-25 14:57:55 -0700</date>
            <delta_ts>2015-08-26 15:09:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148434-20150825145745.patch</filename>
            <type>text/plain</type>
            <size>92698</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NzY4ODc3N2I4M2UxZGQxY2UwZGMxMTUxNmMwY2VjOWY2OGJjZjM1Li40YTczMWY3M2E4ZDVjZjBk
NGY5ODgzY2U3ZDQ0MThhMTg2ZTY4YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0wOC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIFdlYiBJREwgY2FsbGJhY2sgaW50ZXJmYWNlcyBmcm9tIFdl
YiBJREwgY2FsbGJhY2sgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDg0MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgaXNOdWxsKCkgY29udmVuaWVuY2UgbWV0aG9kIG9uIFByb3Bl
cnR5TmFtZS4KKworICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChK
U0M6OlByb3BlcnR5TmFtZTo6aXNOdWxsKToKKwogMjAxNS0wOC0yNCAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgcHJvdG9jb2wgdGVz
dCBmb3IgZXhpc3RpbmcgZXJyb3IgaGFuZGxpbmcgcGVyZm9ybWVkIGJ5IHRoZSBiYWNrZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNTlhMzA4MTZiMjlkOTA2NjgyNWY3OTk2NTU3MjdiN2UzZjc5ZjlkMy4uNDM4
ODMwOTQxM2IzOTQ3NDQyYWY0ZmIzMTIzMDNiYTQzNTAwNmQ0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE1MCBAQAogMjAxNS0wOC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CisgICAgICAgIERpc3Rpbmd1aXNoIFdlYiBJREwgY2FsbGJhY2sgaW50ZXJmYWNlcyBmcm9tIFdl
YiBJREwgY2FsbGJhY2sgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDg0MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEaXN0aW5ndWlzaCBXZWIgSURMIGNhbGxiYWNrIGludGVyZmFjZXMg
WzFdIGZyb20gV2ViIElETCBjYWxsYmFjaworICAgICAgICBmdW5jdGlvbnMgWzJdLgorCisgICAg
ICAgIE9uZSBXZWItZXhwb3NlZCBkaWZmZXJlbmNlIGlzIHRoYXQgd2hlbiB1c2luZyBhIGNhbGxi
YWNrIGludGVyZmFjZSwKKyAgICAgICAgdGhlIHVzZXIgY2FuIHBhc3MgZWl0aGVyIGEgZnVuY3Rp
b24gLyBjYWxsYWJsZSBvYmplY3Qgb3IgYSBub24tY2FsbGFibGUKKyAgICAgICAgb2JqZWN0IHRo
YXQgaGFzIGEgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgY2FsbGJhY2sgaW50ZXJm
YWNlCisgICAgICAgIG9wZXJhdGlvbjoKKyAgICAgICAgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jZXMtdXNlci1vYmplY3RzCisKKyAgICAgICAgV2hlbiB1c2luZyBhIGNhbGxiYWNr
IGZ1bmN0aW9uLCB0aGUgdXNlciBuZWVkcyB0byBwYXNzIGEgZnVuY3Rpb24gLworICAgICAgICBj
YWxsYWJsZSBvYmplY3Q6CisgICAgICAgIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwv
I2VzLWNhbGxiYWNrLWZ1bmN0aW9uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3IFtD
YWxsYmFjaz1GdW5jdGlvbk9ubHldIElETCBleHRlbmRlZCBhdHRyaWJ1dGUgdG8KKyAgICAgICAg
aW5kaWNhdGUgdGhhdCBhIGNhbGxiYWNrIGludGVyZmFjZSBzaG91bGQgYmUgZnVuY3Rpb24tb25s
eSAoaS5lLiBhIGNhbGxiYWNrCisgICAgICAgIGZ1bmN0aW9uIGluIHRoZSBsYXRlc3QgV2ViIElE
TCBzcGVjaWZpY2F0aW9uKS4gV2l0aG91dCB0aGlzIElETCBleHRlbmRlZAorICAgICAgICBhdHRy
aWJ1dGUsIHRoZSBjYWxsYmFjayBpbnRlcmZhY2Ugd2lsbCBiZSB0cmVhdGVkIGFzIGEgcmVndWxh
ciBjYWxsYmFjaworICAgICAgICBpbnRlcmZhY2UuIFRoaXMgd2lsbCBiZSBuZWVkZWQgZm9yIEJ1
ZyAxNDg0MTUsIGFzIE5vZGVGaWx0ZXIgc2hvdWxkIGJlCisgICAgICAgIGFuIGFjdHVhbCBjYWxs
YmFjayBpbnRlcmZhY2UuCisKKyAgICAgICAgTm90ZSB0aGF0IGxvbmdlciB0ZXJtLCB3ZSBzaG91
bGQgcmVhbGx5IGRyb3AgdGhlIG9sZC1zdHlsZQorICAgICAgICBbQ2FsbGJhY2s9RnVuY3Rpb25P
bmx5XSBleHRlbmRkIGF0dHJpYnV0ZSBhbmQgdXNlIGFjdHVhbCBJREwgY2FsbGJhY2sKKyAgICAg
ICAgZnVuY3Rpb25zIGFzIHBlciB0aGUgbGF0ZXN0IFdlYiBJREwgc3BlY2lmaWNhdGlvbi4gSG93
ZXZlciwgSSBkaWQgbm90CisgICAgICAgIGRvIHRoaXMgaW4gdGhpcyBwYXRjaCB0byBtaW5pbWl6
ZSBwYXRjaCBzaXplLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBDYWxsYmFjaz1GdW5jdGlv
bk9ubHldIElETCBleHRlbmRlZCBhdHRyaWJ1dGUgdG8gYWxsCisgICAgICAgIG91ciBwcmUtZXhp
c3RpbmcgY2FsbGJhY2sgaW50ZXJmYWNlcyBzbyB0aGF0IHRoZXJlIGlzIG5vIGJlaGF2aW9yCisg
ICAgICAgIGNoYW5nZS4KKworICAgICAgIFsxXSBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2Vi
aWRsLyNkZm4tY2FsbGJhY2staW50ZXJmYWNlCisgICAgICAgWzJdIGh0dHBzOi8vaGV5Y2FtLmdp
dGh1Yi5pby93ZWJpZGwvI2lkbC1jYWxsYmFjay1mdW5jdGlvbnMKKworICAgICAgICAqIE1vZHVs
ZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25DYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9n
ZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGw6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nl
c3NDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbkVycm9yQ2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDU3RhdHNDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGw6CisgICAgICAgICogTW9k
dWxlcy9xdW90YS9TdG9yYWdlRXJyb3JDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9x
dW90YS9TdG9yYWdlUXVvdGFDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9T
dG9yYWdlVXNhZ2VDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlckNhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVt
ZW50Q2FsbGJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkNhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGw6CisgICAgICAgICogYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6Omludm9r
ZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAg
ICAgICh0cmltKToKKyAgICAgICAgKElzRnVuY3Rpb25Pbmx5Q2FsbGJhY2tJbnRlcmZhY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uKToKKyAgICAgICAgKEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5j
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0
Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RDYWxsYmFja0Z1bmN0aW9uKToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY29uc3RydWN0b3IpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NsYXNzX2luaXQpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2luaXQpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfbm9fcGFyYW0p
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dp
dGhfYXJyYXlfcGFyYW0pOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0
aW9uX2NhbGxiYWNrX3dpdGhfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfcGFyYW0pOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfbm9uX2Jv
b2xfcmV0dXJuX3R5cGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0
aW9uX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfYm9vbGVhbik6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfcmVxdWlyZXNfdGhpc190b19w
YXNzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0Q2FsbGJhY2tGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGUuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaWRsLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoTm9QYXJhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2s6OmNh
bGxiYWNrV2l0aFN0cmluZ0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2s6
OmNhbGxiYWNrV2l0aEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2s6
OmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb246On5KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrRnVuY3Rp
b246OmNhbGxiYWNrV2l0aE5vUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbjo6Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQ
YXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFj
a1dpdGhTdHJpbmdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrRnVuY3Rp
b246OmNhbGxiYWNrV2l0aEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbjo6Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Q2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlv
bmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0
aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5k
T3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDEwKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRl
ZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0VHlwZWRlZnMpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVm9pZENhbGxiYWNrLmlkbC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5tbTogQWRkZWQu
CisgICAgICAgICgtW0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gZmluYWxpemVdKToKKyAgICAgICAgKC1bRE9NVGVz
dENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2tXaXRoTm9QYXJhbV0pOgorICAgICAgICAoLVtET01U
ZXN0Q2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFja1dpdGhBcnJheVBhcmFtOl0pOgorICAgICAgICAo
LVtET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFs
dWVQYXJhbTpzdHJBcmc6XSk6CisgICAgICAgICgtW0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uIGNh
bGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlOl0pOgorICAgICAgICAoLVtET01UZXN0Q2FsbGJh
Y2tGdW5jdGlvbiBjdXN0b21DYWxsYmFjazpjbGFzczZQYXJhbTpdKToKKyAgICAgICAgKC1bRE9N
VGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2tXaXRoU3RyaW5nTGlzdDpdKToKKyAgICAgICAg
KC1bRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2tXaXRoQm9vbGVhbjpdKToKKyAgICAg
ICAgKC1bRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3M6
dGVzdE5vZGVQYXJhbTpdKToKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoa2l0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2tGdW5jdGlvbklu
dGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVm9pZENhbGxiYWNrLmlk
bC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rpb24u
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlQ2FsbGJhY2suaWRsLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbDoKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5pZGw6CisgICAgICAg
ICogZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBkb20v
U3RyaW5nQ2FsbGJhY2suaWRsOgorICAgICAgICAqIGh0bWwvVm9pZENhbGxiYWNrLmlkbDoKKwor
MjAxNS0wOC0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBjYWxsYmFjayBpbnRlcmZhY2VzIHVzaW5nIG90aGVyIGNhbGxiYWNrIG5h
bWVzIHRoYW4gImhhbmRsZUV2ZW50IgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ4NDE4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlOYW1lLmgKaW5kZXggZWFiYTYyODA0NzZiYmE5NTMwNmNlYjQ2YzYwMTMwMzExODk0
MTIyNi4uM2E0MjkyZWEyZTIwNDZiZDM3NzE4ZDM1OTVhMTJlZjVhNDgxNTI2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTUxLDYgKzUxLDgg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9pbXBsLT5pc1N5bWJvbCgpKTsKICAgICB9CiAK
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsgfQorCiAgICAgYm9vbCBp
c1N5bWJvbCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+aXNTeW1i
b2woKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9z
aXRpb25DYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bv
c2l0aW9uQ2FsbGJhY2suaWRsCmluZGV4IDUxY2JkZTVhY2E4ODkwNzUyNGUyYTc5YzQwYWI1NDcx
MGY3MzUzM2EuLjgxOWIzODUyYWYyODM1YWYzNDQ1NmUwNjQ1MWU1MWM2ODNjNDdkZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25DYWxsYmFj
ay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkNh
bGxiYWNrLmlkbApAQCAtMjQsNiArMjQsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9R0VPTE9D
QVRJT04sCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAogXSBjYWxsYmFjayBpbnRlcmZhY2Ug
UG9zaXRpb25DYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChHZW9wb3NpdGlvbiBw
b3NpdGlvbik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9n
ZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCmluZGV4IDc4MTIxYjhjZmU1NzE2
NDMwZGIwMGEyODBjMDY3ZmM1ZWQwMDc2ZjguLjJhNjA5ZDNlZjk3ODhkNmRlMmE2YWJkMmZkN2U0
NGQ5MzkxNzVhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwKQEAgLTI0LDYgKzI0LDcgQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPUdFT0xPQ0FUSU9OLAorICAgIENhbGxiYWNrPUZ1bmN0aW9u
T25seSwKIF0gY2FsbGJhY2sgaW50ZXJmYWNlIFBvc2l0aW9uRXJyb3JDYWxsYmFjayB7CiAgICAg
Ym9vbGVhbiBoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yIGVycm9yKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tTb3Vy
Y2VzQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmlkbAppbmRleCA0YzA1OTNmY2Y1MzI3MzYyYzI2
MDJhZDIzYmU3NGU3OGVhYWEyODRmLi4zYmM0YTJlNTQ3MmY3ZmEwNjdkMzZiNmU5ZmE2YzZjYmM5
MThjYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFjay5pZGwKQEAg
LTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKLSAgICBO
b0ludGVyZmFjZU9iamVjdCwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNr
IGludGVyZmFjZSBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrIHsKICAgICBib29sZWFu
IGhhbmRsZUV2ZW50KHNlcXVlbmNlPFNvdXJjZUluZm8+IHNvdXJjZXMpOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3JDYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsCmluZGV4IGU3NzU0ZjE4YTI0MjJhZTQ5
NzVkYWU3NWQ0MjY1YzRlOTNhMDM2YjQuLmYwYWM3ZGQxYmY5YTNmZTJkMmZjZjIwMTNkNjYwNDdj
ZWYzYzZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbApA
QCAtMjQsNiArMjQsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAg
IENhbGxiYWNrPUZ1bmN0aW9uT25seSwKIF0gY2FsbGJhY2sgaW50ZXJmYWNlIE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2sgewogICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3IgZXJyb3IpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrLmlkbAppbmRleCAzOTEyNzk3ZDMxM2UyYWFlZTRiODA4YjJkMDBjMTRhN2Vl
MWFiMDVlLi4yZDE5MGNmMmViMTkyMjA5NThhOGNlOGJjYmY3OGQzNDRjZmQyZTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRp
YVN1Y2Nlc3NDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsCkBAIC0yNCw2ICsyNCw3
IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgQ2FsbGJhY2s9RnVu
Y3Rpb25Pbmx5LAogXSBjYWxsYmFjayBpbnRlcmZhY2UgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrIHsKICAgICBib29sZWFuIGhhbmRsZUV2ZW50KE1lZGlhU3RyZWFtIHN0cmVhbSk7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2suaWRsCmluZGV4IDRiODdh
ZDdmZjA0ZTM3M2NhNGMwMDM1ZGEyZjY0MjhiZjI4ZjA3MjIuLjA2MzIxMjdjZjFiOGQ3YzEzMmMz
ZDFiNTMwMDNhNjdhNDhhMTU1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxs
YmFjay5pZGwKQEAgLTI1LDYgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPU1FRElBX1NU
UkVBTSwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNrIGludGVyZmFjZSBS
VENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2sgewogICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQo
RE9NRXJyb3IgZXJyb3IpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2suaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjay5p
ZGwKaW5kZXggMzBjZTA4NTY4YjlkNTRmNjFlYjQxMGYxZGZhNTU2NTU3NjYwMmE3MS4uYjNiYzJj
ZmNiZjE3MjYyMjA5MzNiYmZiNTJhYWFlZDFhZTcxYjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjay5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVz
Y3JpcHRpb25DYWxsYmFjay5pZGwKQEAgLTMwLDYgKzMwLDcgQEAKIAogWwogICAgIENvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTSwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNr
IGludGVyZmFjZSBSVENTZXNzaW9uRGVzY3JpcHRpb25DYWxsYmFjayB7CiAgICAgYm9vbGVhbiBo
YW5kbGVFdmVudChSVENTZXNzaW9uRGVzY3JpcHRpb24gc2RwKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzQ2FsbGJhY2suaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c0NhbGxiYWNrLmlkbApp
bmRleCBiMzJmNDNkMmZmZjhlM2I5NzI5Yzc3YWEyMmM4MTc4YzJmMjRiYWMyLi42MjY3MDQ2Nzdh
NTZjOGFjZjZhYjQ1MDE1NmE4MTM2NzhlMzg5YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNDYWxsYmFjay5pZGwKQEAgLTI0LDYg
KzI0LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICBDYWxsYmFj
az1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNrIGludGVyZmFjZSBSVENTdGF0c0NhbGxiYWNrIHsK
ICAgICBib29sZWFuIGhhbmRsZUV2ZW50KFJUQ1N0YXRzUmVzcG9uc2UgcmVzcG9uc2UpOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKaW5kZXggMzA5MDcx
NmY3ZjJhNjJjMjY2ZjBjYTFmMzllN2U1ZWExYzcwN2ZmNi4uZTJjNWVlZjM2ZmU5ODI0YjljOWJh
OTQwYWQ2YmIzZGU2ZTBjZDlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25D
YWxsYmFjay5pZGwKQEAgLTI1LDYgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPU5PVElG
SUNBVElPTlMsCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAogXSBjYWxsYmFjayBpbnRlcmZh
Y2UgTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrIHsKICAgICBib29sZWFuIGhhbmRsZUV2
ZW50KERPTVN0cmluZyBwZXJtaXNzaW9uKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VFcnJvckNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaWRsCmluZGV4IGIzN2ZiZDRmYWY3
MDAwODk3ZTQ0NDJlNjlmNTQ5NjJhOGNhNjdjY2EuLjA4OGY3OGY2ZmEzYWIyMzZkMjQxODgxMWNk
OGY4NTM0NzY5ZDUzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZUVycm9yQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVv
dGEvU3RvcmFnZUVycm9yQ2FsbGJhY2suaWRsCkBAIC0zMCw2ICszMCw3IEBACiAKIFsKICAgICBD
b25kaXRpb25hbD1RVU9UQSwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNr
IGludGVyZmFjZSBTdG9yYWdlRXJyb3JDYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVu
dChET01Db3JlRXhjZXB0aW9uIGVycm9yKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VRdW90YUNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhQ2FsbGJhY2suaWRsCmluZGV4IDQzNTlmMjYyNzA4
NDkyNjk5Y2I1YTk2ZDNlNDE3ZjliYjNlMjdjY2QuLjg5YTgyZTdjZDVjMWE0NjAzYjM2NTJkODI4
NDFkNjc0ZjJiZGJjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
U3RvcmFnZVF1b3RhQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVv
dGEvU3RvcmFnZVF1b3RhQ2FsbGJhY2suaWRsCkBAIC0zMCw2ICszMCw3IEBACiAKIFsKICAgICBD
b25kaXRpb25hbD1RVU9UQSwKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCiBdIGNhbGxiYWNr
IGludGVyZmFjZSBTdG9yYWdlUXVvdGFDYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVu
dCh1bnNpZ25lZCBsb25nIGxvbmcgZ3JhbnRlZFF1b3RhSW5CeXRlcyk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9TdG9yYWdlVXNhZ2VDYWxsYmFjay5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmlkbApp
bmRleCA1ZWE3YTBlYmM3ZDA4NTRhNDFmYzMwNTAyYTQ4ZTk3NjQ5ZTVkZjhjLi43ZTUwZjVkYTQ5
NzEyMWFiMTFjZWVjMDM5YmJlMzYxN2JkYzlmNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3F1b3RhL1N0b3JhZ2VVc2FnZUNhbGxiYWNrLmlkbApAQCAtMzAsNiArMzAs
NyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9UVVPVEEsCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25P
bmx5LAogXSBjYWxsYmFjayBpbnRlcmZhY2UgU3RvcmFnZVVzYWdlQ2FsbGJhY2sgewogICAgIGJv
b2xlYW4gaGFuZGxlRXZlbnQodW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZUluQnl0ZXMs
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGFJbkJ5dGVzKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlk
bAppbmRleCA5MTNmNTc3Nzk3MGY2YjRkY2I0YTZkMjgwNzc3YWEzOTA3YTg4OTRlLi5jMDMxYmRl
OTVmNzQzMmU4MmIwZDIwYzIzMzRiYTMxYWEzMWFmODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwKQEAgLTI1
LDYgKzI1LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0
ZVRvSlNPYmplY3QsCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAogXSBjYWxsYmFjayBpbnRl
cmZhY2UgQXVkaW9CdWZmZXJDYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChBdWRp
b0J1ZmZlciBhdWRpb0J1ZmZlcik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDYWxsYmFjay5pZGwKaW5kZXggZjZkMTEwMDAwMjMy
NGYwNWY4YzgxMjllNGEzODk2Mjk0NzdkOGM4MC4uYjVjODAzNjliNTVmYjRiNDAwZWM4NDdjNWJj
YWY1ZTliNmQ5NTI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ2FsbGJhY2suaWRsCkBAIC0yNiw2ICsyNiw4IEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLWNhbGxiYWNrIGludGVyZmFjZSBEYXRhYmFzZUNhbGxiYWNrIHsKK1sKKyAg
ICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCitdIGNhbGxiYWNrIGludGVyZmFjZSBEYXRhYmFzZUNh
bGxiYWNrIHsKICAgICBib29sZWFuIGhhbmRsZUV2ZW50KERhdGFiYXNlIGRhdGFiYXNlKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRl
bWVudENhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50Q2FsbGJhY2suaWRsCmluZGV4IDg5Y2M1MzA0NGM2OTJiMTVlYjBhOTdiYmNmYTk3
M2VlYjRiZGViZjAuLjliZjYzYmY5MWVjODRmMmI5YjY1OWJlN2IwZjExYTFlYmVlNzIwZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50
Q2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50Q2FsbGJhY2suaWRsCkBAIC0yNSw3ICsyNSw4IEBACiAgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotY2FsbGJhY2sgaW50ZXJmYWNlIFNRTFN0YXRlbWVudENh
bGxiYWNrIHsKK1sKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHksCitdIGNhbGxiYWNrIGludGVy
ZmFjZSBTUUxTdGF0ZW1lbnRDYWxsYmFjayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChTUUxU
cmFuc2FjdGlvbiB0cmFuc2FjdGlvbiwgU1FMUmVzdWx0U2V0IHJlc3VsdFNldCk7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
U3RhdGVtZW50RXJyb3JDYWxsYmFjay5pZGwKaW5kZXggMWM4NDFkM2U1NTMyZjI4YmZlNWUzYTNk
ZjNiZDY5ODIzNzZlYTY3OC4uYTI3Y2U0Yzg4N2UxMmQxNTZmMjYzZDZlZTE2ZGFjNDNiMmUxYjRi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaWRsCkBAIC0yNSw3ICsyNSw4IEBACiAg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQotY2FsbGJhY2sgaW50ZXJmYWNl
IFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2sgeworWworICAgIENhbGxiYWNrPUZ1bmN0aW9uT25s
eSwKK10gY2FsbGJhY2sgaW50ZXJmYWNlIFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2sgewogICAg
IFtDdXN0b21dIGJvb2xlYW4gaGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24s
IFNRTEVycm9yIGVycm9yKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmlkbAppbmRleCBlNmJh
MTdjZjgwYTNiM2U0NGVhYWNjNjY2ZTM2M2ZhMzc2ODA1YjIyLi5kNWFmYmRiZmM5NDkzYzc5NDU5
NjE3NTgxYTM3MThiYWQzYTVmMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwKQEAgLTI1
LDcgKzI1LDggQEAKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCi1jYWxs
YmFjayBpbnRlcmZhY2UgU1FMVHJhbnNhY3Rpb25DYWxsYmFjayB7CitbCisgICAgQ2FsbGJhY2s9
RnVuY3Rpb25Pbmx5LAorXSBjYWxsYmFjayBpbnRlcmZhY2UgU1FMVHJhbnNhY3Rpb25DYWxsYmFj
ayB7CiAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbik7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsCmluZGV4IDcwNzFiMzI0Nzcy
YTMyMjNjNGIwZmM0Y2NlOWExYzZjMDZjODg0M2QuLjUxMGRjNmMzZGQ4NmY4NGQxNDAzNDI2ZTQy
MDBhMzU3MDFlYzFjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwKQEAg
LTI2LDYgKzI2LDggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotY2FsbGJhY2sgaW50ZXJmYWNlIFNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayB7CitbCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5
LAorXSBjYWxsYmFjayBpbnRlcmZhY2UgU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIHsKICAg
ICBib29sZWFuIGhhbmRsZUV2ZW50KFNRTEVycm9yIGVycm9yKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKaW5kZXggOGQ5Nzc1NjdjODdjMDU5
MDI2MTdlMTk3YTM3ZWI2YWExNDQ2NGQ0Zi4uNGUzNDVmYjlkZmYzMzVhNjBjYmY0YzAyMjRmZTlh
YTA2MjVlOThhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxs
YmFja0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tE
YXRhLmNwcApAQCAtNDMsMjkgKzQzLDQwIEBAIHZvaWQgSlNDYWxsYmFja0RhdGE6OmRlbGV0ZURh
dGEodm9pZCogY29udGV4dCkKICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja0RhdGEq
Pihjb250ZXh0KTsKIH0KIAotSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2so
TWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIFByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIGJv
b2wqIHJhaXNlZEV4Y2VwdGlvbikKK0pTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxi
YWNrKE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgbWV0aG9kLCBQcm9w
ZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBib29sKiByYWlzZWRFeGNlcHRpb24pCiB7CiAgICAgQVNT
RVJUKGNhbGxiYWNrKCkpOwotICAgIHJldHVybiBpbnZva2VDYWxsYmFjayhjYWxsYmFjaygpLCBh
cmdzLCBmdW5jdGlvbk5hbWUsIHJhaXNlZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuIGludm9rZUNh
bGxiYWNrKGNhbGxiYWNrKCksIGFyZ3MsIG1ldGhvZCwgZnVuY3Rpb25OYW1lLCByYWlzZWRFeGNl
cHRpb24pOwogfQogCi1KU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhKU1Zh
bHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIFByb3BlcnR5TmFtZSBm
dW5jdGlvbk5hbWUsIGJvb2wqIHJhaXNlZEV4Y2VwdGlvbikKK0pTVmFsdWUgSlNDYWxsYmFja0Rh
dGE6Omludm9rZUNhbGxiYWNrKEpTVmFsdWUgdGhpc1ZhbHVlLCBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciYgYXJncywgQ2FsbGJhY2tUeXBlIG1ldGhvZCwgUHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwg
Ym9vbCogcmFpc2VkRXhjZXB0aW9uKQogewogICAgIEFTU0VSVChjYWxsYmFjaygpKTsKICAgICBB
U1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gY2FsbGJhY2soKTsK
LQorICAgIEpTVmFsdWUgZnVuY3Rpb247CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBjYWxsYmFjaygpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShj
YWxsYmFjaygpLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBDYWxsVHlwZU5v
bmU7CisKKyAgICBpZiAobWV0aG9kICE9IENhbGxiYWNrVHlwZTo6T2JqZWN0KSB7CisgICAgICAg
IGZ1bmN0aW9uID0gY2FsbGJhY2soKTsKKyAgICAgICAgY2FsbFR5cGUgPSBjYWxsYmFjaygpLT5t
ZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShjYWxsYmFjaygpLCBjYWxsRGF0YSk7CisgICAgfQog
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgaWYgKG1ldGhvZCA9
PSBDYWxsYmFja1R5cGU6OkZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
KworICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uTmFtZS5pc051bGwoKSk7CiAgICAgICAgIGZ1bmN0
aW9uID0gY2FsbGJhY2soKS0+Z2V0KGV4ZWMsIGZ1bmN0aW9uTmFtZSk7CiAgICAgICAgIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAg
fQogCisgICAgQVNTRVJUKCFmdW5jdGlvbi5pc0VtcHR5KCkpOworICAgIEFTU0VSVChjYWxsVHlw
ZSAhPSBDYWxsVHlwZU5vbmUpOworCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IGdsb2JhbE9iamVjdCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgLy8gV2Ug
d2lsbCBmYWlsIHRvIGdldCB0aGUgY29udGV4dCBpZiB0aGUgZnJhbWUgaGFzIGJlZW4gZGV0YWNo
ZWQuCiAgICAgaWYgKCFjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fs
bGJhY2tEYXRhLmgKaW5kZXggYjUyMzlhODcwMDg3MTgyNTgyZDEwZTc5MTc0ZTcwNGM0N2IyM2Yy
ZS4uNmRiNzcwNmRlY2NjNTU4NDZjN2U2MmVkOGIzNDA4ZTc4YzhlYmUzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCkBAIC02Niw4ICs2Niw5IEBAIHB1
YmxpYzoKICAgICBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJhY2su
Z2V0KCk7IH0KICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4g
bV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KICAgICAKLSAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2Fs
bGJhY2soSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYsIEpTQzo6UHJvcGVydHlOYW1lIGZ1bmN0
aW9uTmFtZSwgYm9vbCogcmFpc2VkRXhjZXB0aW9uID0gbnVsbHB0cik7Ci0gICAgSlNDOjpKU1Zh
bHVlIGludm9rZUNhbGxiYWNrKEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6TWFya2VkQXJn
dW1lbnRCdWZmZXImLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIGJvb2wqIHJhaXNl
ZEV4Y2VwdGlvbiA9IG51bGxwdHIpOworICAgIGVudW0gY2xhc3MgQ2FsbGJhY2tUeXBlIHsgRnVu
Y3Rpb24sIE9iamVjdCwgRnVuY3Rpb25Pck9iamVjdCB9OworICAgIEpTQzo6SlNWYWx1ZSBpbnZv
a2VDYWxsYmFjayhKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgQ2FsbGJhY2tUeXBlLCBKU0M6
OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIGJvb2wqIHJhaXNlZEV4Y2VwdGlvbiA9IG51bGxw
dHIpOworICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0M6OkpTVmFsdWUgdGhpc1Zh
bHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgQ2FsbGJhY2tUeXBlLCBKU0M6OlByb3Bl
cnR5TmFtZSBmdW5jdGlvbk5hbWUsIGJvb2wqIHJhaXNlZEV4Y2VwdGlvbiA9IG51bGxwdHIpOwog
CiBwcml2YXRlOgogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAppbmRleCBkMzM3MmJkYTE2MWVkNGEwMWQzOGYy
NGFhMDJhMmM4YWU0MzA4MjM4Li5jY2Y1OWNlMDVhNDIxNGZiZWJmNGVlYzkyZGY4OTU0ZjVkZGQ2
N2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAKQEAgLTU0LDcgKzU0LDcgQEAg
Ym9vbCBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgU1FMRXIKICAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIG1fZGF0
YS0+Z2xvYmFsT2JqZWN0KCksIGVycm9yKSk7CiAKICAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9
IGZhbHNlOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdz
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJoYW5kbGVFdmVudCIpLCAmcmFpc2VkRXhj
ZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwg
JnJhaXNlZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJhaXNlZEV4Y2VwdGlvbikgewogICAgICAgICAv
LyBUaGUgc3BlYyBzYXlzOgogICAgICAgICAvLyAiSWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVy
bnMgZmFsc2UsIHRoZW4gbW92ZSBvbiB0byB0aGUgbmV4dCBzdGF0ZW1lbnQuLi4iCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggODE3
ZjIwMTgwMDk1MjFkMWIzY2YxYTIzYWEyZTZkNTQyNDI2MjA1Ni4uOGUxODU4NWM4M2QzZWI4Njhk
MjM2MjlmMWVkNTBlMjZkMDE2OGZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtNDk2LDYgKzQ5NiwxMyBAQCBzdWIgV0tfbGNm
aXJzdAogICAgIHJldHVybiAkcmV0OwogfQogCitzdWIgdHJpbQoreworICAgIG15ICRzdHJpbmcg
PSBzaGlmdDsKKyAgICAkc3RyaW5nID1+IHMvXlxzK3xccyskLy9nOworICAgIHJldHVybiAkc3Ry
aW5nOworfQorCiAjIFJldHVybiB0aGUgQysrIG5hbWVzcGFjZSB0aGF0IGEgZ2l2ZW4gYXR0cmli
dXRlIG5hbWUgc3RyaW5nIGlzIGRlZmluZWQgaW4uCiBzdWIgTmFtZXNwYWNlRm9yQXR0cmlidXRl
TmFtZQogewpAQCAtNjUzLDYgKzY2MCw0MCBAQCBzdWIgSXNDYWxsYmFja0ludGVyZmFjZQogICBy
ZXR1cm4gKCRmaWxlQ29udGVudHMgPX4gL2NhbGxiYWNrXHMraW50ZXJmYWNlXHMrKFx3KykvZ3Mp
OwogfQogCisjIENhbGxiYWNrIGludGVyZmFjZSB3aXRoIFtDYWxsYmFjaz1GdW5jdGlvbk9ubHld
LgorIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBjYWxsYmFjayBmdW5jdGlvbjoKKyMgaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLWNhbGxiYWNrLWZ1bmN0aW9ucworc3ViIElz
RnVuY3Rpb25Pbmx5Q2FsbGJhY2tJbnRlcmZhY2UKK3sKKyAgbXkgJG9iamVjdCA9IHNoaWZ0Owor
ICBteSAkdHlwZSA9IHNoaWZ0OworCisgIHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc0NhbGxi
YWNrSW50ZXJmYWNlKCR0eXBlKTsKKworICBteSAkaWRsRmlsZSA9ICRvYmplY3QtPklETEZpbGVG
b3JJbnRlcmZhY2UoJHR5cGUpCisgICAgICBvciBkaWUoIkNvdWxkIE5PVCBmaW5kIElETCBmaWxl
IGZvciBpbnRlcmZhY2UgXCIkdHlwZVwiIVxuIik7CisKKyAgb3BlbiBGSUxFLCAiPCIsICRpZGxG
aWxlOworICBteSBAbGluZXMgPSA8RklMRT47CisgIGNsb3NlIEZJTEU7CisKKyAgbXkgJGZpbGVD
b250ZW50cyA9IGpvaW4oJycsIEBsaW5lcyk7CisgIGlmICgkZmlsZUNvbnRlbnRzID1+IC9cWygu
KilcXVxzK2NhbGxiYWNrXHMraW50ZXJmYWNlXHMrKFx3KykvZ3MpIHsKKyAgICAgIG15IEBwYXJ0
cyA9IHNwbGl0KCcsJywgJDEpOworICAgICAgZm9yZWFjaCBteSAkcGFydCAoQHBhcnRzKSB7Cisg
ICAgICAgICAgbXkgQGtleVZhbHVlID0gc3BsaXQoJz0nLCAkcGFydCk7CisgICAgICAgICAgbXkg
JGtleSA9IHRyaW0oJGtleVZhbHVlWzBdKTsKKyAgICAgICAgICBuZXh0IHVubGVzcyBsZW5ndGgo
JGtleSk7CisgICAgICAgICAgbXkgJHZhbHVlID0gIlZBTFVFX0lTX01JU1NJTkciOworICAgICAg
ICAgICR2YWx1ZSA9IHRyaW0oJGtleVZhbHVlWzFdKSBpZiBAa2V5VmFsdWUgPiAxOworCisgICAg
ICAgICAgcmV0dXJuIDEgaWYgKCRrZXkgZXEgIkNhbGxiYWNrIiAmJiAkdmFsdWUgZXEgIkZ1bmN0
aW9uT25seSIpOworICAgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKIHN1YiBHZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nCiB7CiAgICAgbXkgJGdlbmVyYXRvciA9IHNoaWZ0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRl
eCA2YTYxOTQwYmRjZDllNDVmOTEwMWI4YTlhYTM4OTllZjJiYzRmODk4Li4wNTljYThiYjhlNjEz
NTJhYTNhOGU1MDZhNTNkNzZlZDFmOTM0YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTM3OSw3ICsxMzc5LDExIEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24KICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJhY2tJbnRlcmZhY2UoJHBhcmFt
ZXRlci0+dHlwZSkpIHsKICAgICAgICAgICAgICMgRm9yIENhbGxiYWNrcyBvbmx5IGNoZWNrcyBp
ZiB0aGUgdmFsdWUgaXMgbnVsbCBvciBvYmplY3QuCi0gICAgICAgICAgICBwdXNoKEBhbmRFeHBy
ZXNzaW9uLCAiKCR7dmFsdWV9LmlzTnVsbCgpIHx8ICR7dmFsdWV9LmlzRnVuY3Rpb24oKSkiKTsK
KyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNGdW5jdGlvbk9ubHlDYWxsYmFja0lu
dGVyZmFjZSgkcGFyYW1ldGVyLT50eXBlKSkgeworICAgICAgICAgICAgICAgIHB1c2goQGFuZEV4
cHJlc3Npb24sICIoJHt2YWx1ZX0uaXNOdWxsKCkgfHwgJHt2YWx1ZX0uaXNGdW5jdGlvbigpKSIp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBhbmRFeHByZXNz
aW9uLCAiKCR7dmFsdWV9LmlzTnVsbCgpIHx8ICR7dmFsdWV9LmlzT2JqZWN0KCkpIik7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAkdXNlZEFyZ3VtZW50c3skcGFyYW1ldGVySW5kZXh9ID0g
MTsKICAgICAgICAgfSBlbHNpZiAoIUlzTmF0aXZlVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAg
IG15ICRjb25kaXRpb24gPSAiIjsKQEAgLTMyNzEsNyArMzI3NSwxMSBAQCBzdWIgR2VuZXJhdGVQ
YXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIGlmICgkb3B0aW9uYWwpIHsKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZTtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50KCRhcmdzSW5kZXgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHtcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgkYXJnc0luZGV4KS5pc0Z1bmN0aW9uKCkpXG4iKTsKKyAgICAgICAgICAgICAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzRnVuY3Rpb25Pbmx5Q2FsbGJhY2tJbnRlcmZhY2UoJHBhcmFt
ZXRlci0+dHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzRnVuY3Rp
b24oKSlcbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgkYXJnc0luZGV4KS5pc09iamVjdCgpKVxuIik7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBc
IiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAgICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkNhbGxiYWNrRnVuY3Rpb24uaCIpOwpAQCAtMzI4MSw3ICszMjg5LDEx
IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzRnVuY3Rpb24oKSlcbiIpOworICAgICAgICAgICAg
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNGdW5jdGlvbk9ubHlDYWxsYmFja0ludGVyZmFjZSgk
cGFyYW1ldGVyLT50eXBlKSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgaWYgKCFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc0Z1bmN0aW9uKCkpXG4i
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaWYgKCFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc09iamVj
dCgpKVxuIik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpleGVjLCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgJHF1b3Rl
ZEZ1bmN0aW9uTmFtZSk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0
YXRpYykgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ2FsbGJhY2tG
dW5jdGlvbi5oIik7CkBAIC0zNTk4LDcgKzM2MTAsMjIgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIlxuICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBcIiR7ZnVuY3Rpb25OYW1lfVwiKSwgJnJhaXNl
ZEV4Y2VwdGlvbik7XG4iKTsKKworICAgICAgICAgICAgbXkgJHByb3BlcnR5VG9Mb29rdXAgPSAi
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBcIiR7ZnVuY3Rpb25OYW1lfVwiKSI7CisgICAg
ICAgICAgICBteSAkaW52b2tlTWV0aG9kID0gIkpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
OkZ1bmN0aW9uT3JPYmplY3QiOworICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRl
bmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YWxsYmFjayJ9LCAiRnVuY3Rpb25Pbmx5IikpIHsKKyAgICAgICAgICAgICAgICAjIEZvciBjYWxs
YmFjayBmdW5jdGlvbnMsIGRvIG5vdCBsb29rIHVwIGNhbGxhYmxlIHByb3BlcnR5IG9uIHRoZSB1
c2VyIG9iamVjdC4KKyAgICAgICAgICAgICAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI2VzLWNhbGxiYWNrLWZ1bmN0aW9uCisgICAgICAgICAgICAgICAgJGludm9rZU1ldGhv
ZCA9ICJKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiI7CisgICAgICAgICAg
ICAgICAgJHByb3BlcnR5VG9Mb29rdXAgPSAiSWRlbnRpZmllcigpIjsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4iKTsgICAgCisg
ICAgICAgICAgICB9IGVsc2lmICgkbnVtRnVuY3Rpb25zID4gMSkgeworICAgICAgICAgICAgICAg
ICMgVGhlIGNhbGxiYWNrIGludGVyZmFjZSBoYXMgbW9yZSB0aGFuIG9uZSBvcGVyYXRpb24gc28g
d2Ugc2hvdWxkIG5vdCBjYWxsIHRoZSB1c2VyIG9iamVjdCBhcyBhIGZ1bmN0aW9uLgorICAgICAg
ICAgICAgICAgICMgaW5zdGVhZCwgd2Ugc2hvdWxkIGxvb2sgZm9yIGEgcHJvcGVydHkgd2l0aCB0
aGUgc2FtZSBuYW1lIGFzIHRoZSBvcGVyYXRpb24gb24gdGhlIHVzZXIgb2JqZWN0LgorICAgICAg
ICAgICAgICAgICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZXMtdXNlci1vYmpl
Y3RzCisgICAgICAgICAgICAgICAgJGludm9rZU1ldGhvZCA9ICJKU0NhbGxiYWNrRGF0YTo6Q2Fs
bGJhY2tUeXBlOjpPYmplY3QiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCAkaW52b2tlTWV0aG9k
LCAkcHJvcGVydHlUb0xvb2t1cCwgJnJhaXNlZEV4Y2VwdGlvbik7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCBk
MzMxYTdjYmM3YzRmY2VmNTJiN2ExYmFhYzc1ZjMyYTgxZDFlOGQwLi4xNmI0YTE5YTM4YjIzYWNk
NzE0NTZmZTAyMWMzNTk2MmY0ZTFhMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTIzLDYgKzIzLDcgQEAgQXRvbWljU3Ry
aW5nCiBDUFBQdXJlSW50ZXJmYWNlCiBDYWNoZWRBdHRyaWJ1dGUKIENhbGxiYWNrTmVlZHNPcGVy
YXRvckVxdWFsCitDYWxsYmFjaz1GdW5jdGlvbk9ubHkKIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHR8U2NyaXB0U3RhdGV8U2NyaXB0QXJndW1lbnRzfENhbGxTdGFjawogQ2hlY2tTZWN1
cml0eQogQ2hlY2tTZWN1cml0eUZvck5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNThjNGU2YTVkYjJlMGVh
NzY4OWM1NjI3YmM3NGMwNmM4MmFmNjQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVu
Y3Rpb24uY3BwCkBAIC0wLDAgKzEsMjM4IEBACisvKgorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdENhbGxiYWNr
RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkNTU0ltcG9ydFJ1bGUuaCIKKyNpbmNsdWRlICJET01P
YmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUg
IkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2luY2x1ZGUgIldlYktpdERPTURPTVN0cmluZ0xpc3RQcml2YXRlLmgiCisjaW5jbHVk
ZSAiV2ViS2l0RE9NRmxvYXQzMkFycmF5UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdERPTVBy
aXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGUu
aCIKKyNpbmNsdWRlICJXZWJLaXRET01UZXN0Tm9kZVByaXZhdGUuaCIKKyNpbmNsdWRlICJnb2Jq
ZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9DQUxMQkFDS19G
VU5DVElPTl9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmos
IFdFQktJVF9ET01fVFlQRV9URVNUX0NBTExCQUNLX0ZVTkNUSU9OLCBXZWJLaXRET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvblByaXZhdGUpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvblByaXZhdGUgeworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAg
IFJlZlB0cjxXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY29yZU9iamVjdDsKKyNlbmRp
ZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKK30gV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVu
Y3Rpb25Qcml2YXRlOworCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbioga2l0KFdlYkNvcmU6
OlRlc3RDYWxsYmFja0Z1bmN0aW9uKiBvYmopCit7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJl
dHVybiAwOworCisgICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2Jq
KSkKKyAgICAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9DQUxMQkFDS19GVU5DVElPTihyZXQp
OworCisgICAgcmV0dXJuIHdyYXBUZXN0Q2FsbGJhY2tGdW5jdGlvbihvYmopOworfQorCitXZWJD
b3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogY29yZShXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5j
dGlvbiogcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gcmVxdWVzdCA/IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlRlc3RDYWxsYmFja0Z1bmN0aW9uKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNv
cmVPYmplY3QpIDogMDsKK30KKworV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24qIHdyYXBU
ZXN0Q2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogY29yZU9i
amVjdCkKK3sKKyAgICBBU1NFUlQoY29yZU9iamVjdCk7CisgICAgcmV0dXJuIFdFQktJVF9ET01f
VEVTVF9DQUxMQkFDS19GVU5DVElPTihnX29iamVjdF9uZXcoV0VCS0lUX0RPTV9UWVBFX1RFU1Rf
Q0FMTEJBQ0tfRlVOQ1RJT04sICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIG51bGxwdHIpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykKKworR19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiwg
d2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uLCBXRUJLSVRfRE9NX1RZUEVfT0JKRUNU
KQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fZmluYWxp
emUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9u
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9DQUxMQkFDS19GVU5DVElPTl9HRVRfUFJJ
VkFURShvYmplY3QpOworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIFdlYktpdDo6
RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKKyNlbmRpZiAv
LyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBwcml2LT5+V2ViS2l0RE9NVGVzdENhbGxi
YWNrRnVuY3Rpb25Qcml2YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0
X2NhbGxiYWNrX2Z1bmN0aW9uX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisK
K3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY29uc3Ry
dWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0
Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCit7CisgICAgR09iamVjdCogb2Jq
ZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX3Bh
cmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwg
Y29uc3RydWN0UHJvcGVydGllcyk7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAg
V2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25Qcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9U
RVNUX0NBTExCQUNLX0ZVTkNUSU9OX0dFVF9QUklWQVRFKG9iamVjdCk7CisgICAgcHJpdi0+Y29y
ZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RDYWxsYmFja0Z1bmN0aW9uKj4oV0VC
S0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmpl
Y3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7CisjZW5kaWYgLy8g
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgcmV0dXJuIG9iamVjdDsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NsYXNzX2luaXQoV2ViS2l0
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25DbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmpl
Y3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9N
VGVzdENhbGxiYWNrRnVuY3Rpb25Qcml2YXRlKSk7CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1
Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jb25zdHJ1Y3RvcjsKKyAg
ICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0
aW9uX2ZpbmFsaXplOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tf
ZnVuY3Rpb25faW5pdChXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiogcmVxdWVzdCkKK3sK
KyAgICBXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGUqIHByaXYgPSBXRUJLSVRf
RE9NX1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT05fR0VUX1BSSVZBVEUocmVxdWVzdCk7CisgICAgbmV3
IChwcml2KSBXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGUoKTsKK30KKworZ2Jv
b2xlYW4gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfbm9f
cGFyYW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24qIHNlbGYpCit7CisjaWYgRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9DQUxMQkFD
S19GVU5DVElPTihzZWxmKSwgRkFMU0UpOworICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFja0Z1bmN0
aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0
ZW0tPmNhbGxiYWNrV2l0aE5vUGFyYW0oKTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oc2VsZik7CisgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiU3BlZWNoIFN5bnRoZXNpcyIpCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigw
KTsKKyNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KK30KKworZ2Jvb2xlYW4g
d2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfYXJyYXlfcGFy
YW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24qIHNlbGYsIFdlYktpdERPTUZsb2F0MzJB
cnJheSogYXJyYXlQYXJhbSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0NBTExCQUNLX0ZVTkNUSU9OKHNlbGYpLCBGQUxTRSk7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19GTE9BVDMyQVJSQVkoYXJy
YXlQYXJhbSksIEZBTFNFKTsKKyAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpGbG9hdDMyQXJyYXkqIGNvbnZl
cnRlZEFycmF5UGFyYW0gPSBXZWJLaXQ6OmNvcmUoYXJyYXlQYXJhbSk7CisgICAgZ2Jvb2xlYW4g
cmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbShjb252ZXJ0ZWRBcnJheVBhcmFt
KTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7Cisg
ICAgVU5VU0VEX1BBUkFNKGFycmF5UGFyYW0pOworICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIlNwZWVjaCBTeW50aGVzaXMiKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9v
bGVhbj4oMCk7CisjZW5kaWYgLyogRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpICovCit9CisKK2di
b29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja193aXRoX3Nl
cmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX3BhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9u
KiBzZWxmLCBjb25zdCBnY2hhciogc3J6UGFyYW0sIGNvbnN0IGdjaGFyKiBzdHJBcmcpCit7Cisj
aWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9DQUxMQkFDS19GVU5DVElPTihzZWxmKSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHNyelBhcmFtLCBGQUxTRSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3RyQXJnLCBG
QUxTRSk7CisgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CisgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU3RyQXJnID0gV1RGOjpTdHJp
bmc6OmZyb21VVEY4KHN0ckFyZyk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJh
Y2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0oV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHNyelBhcmFtKSksIGNvbnZlcnRl
ZFN0ckFyZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNl
bGYpOworICAgIFVOVVNFRF9QQVJBTShzcnpQYXJhbSk7CisgICAgVU5VU0VEX1BBUkFNKHN0ckFy
Zyk7CisgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNp
cyIpCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigwKTsKKyNlbmRpZiAvKiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KK30KKworZ2xvbmcgd2Via2l0X2RvbV90ZXN0X2NhbGxi
YWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfbm9uX2Jvb2xfcmV0dXJuX3R5cGUoV2ViS2l0RE9N
VGVzdENhbGxiYWNrRnVuY3Rpb24qIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHJBcmcpCit7CisjaWYg
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9D
QUxMQkFDS19GVU5DVElPTihzZWxmKSwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc3Ry
QXJnLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHJBcmcgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgoc3RyQXJnKTsKKyAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5jYWxsYmFj
a1dpdGhOb25Cb29sUmV0dXJuVHlwZShjb252ZXJ0ZWRTdHJBcmcpOworICAgIHJldHVybiByZXN1
bHQ7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0oc3Ry
QXJnKTsKKyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2ggU3ludGhl
c2lzIikKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2xvbmc+KDApOworI2VuZGlmIC8qIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKSAqLworfQorCitnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2Fs
bGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9zdHJpbmdfbGlzdChXZWJLaXRET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvbiogc2VsZiwgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCogbGlzdFBhcmFtKQor
eworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lT
X1RFU1RfQ0FMTEJBQ0tfRlVOQ1RJT04oc2VsZiksIEZBTFNFKTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfRE9NX0lTX0RPTV9TVFJJTkdfTElTVChsaXN0UGFyYW0pLCBGQUxTRSk7
CisgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CisgICAgV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogY29udmVydGVkTGlzdFBhcmFtID0g
V2ViS2l0Ojpjb3JlKGxpc3RQYXJhbSk7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2Fs
bGJhY2tXaXRoU3RyaW5nTGlzdChjb252ZXJ0ZWRMaXN0UGFyYW0pOworICAgIHJldHVybiByZXN1
bHQ7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0obGlz
dFBhcmFtKTsKKyAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTcGVlY2ggU3lu
dGhlc2lzIikKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4+KDApOworI2VuZGlmIC8q
IEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKSAqLworfQorCitnYm9vbGVhbiB3ZWJraXRfZG9tX3Rl
c3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9ib29sZWFuKFdlYktpdERPTVRlc3RD
YWxsYmFja0Z1bmN0aW9uKiBzZWxmLCBnYm9vbGVhbiBib29sUGFyYW0pCit7CisjaWYgRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9DQUxMQkFD
S19GVU5DVElPTihzZWxmKSwgRkFMU0UpOworICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFja0Z1bmN0
aW9uKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0
ZW0tPmNhbGxiYWNrV2l0aEJvb2xlYW4oYm9vbFBhcmFtKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CisgICAgVU5VU0VEX1BBUkFNKGJvb2xQYXJh
bSk7CisgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNp
cyIpCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigwKTsKKyNlbmRpZiAvKiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KK30KKworZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X2Nh
bGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3JlcXVpcmVzX3RoaXNfdG9fcGFzcyhXZWJLaXRET01U
ZXN0Q2FsbGJhY2tGdW5jdGlvbiogc2VsZiwgZ2xvbmcgbG9uZ1BhcmFtLCBXZWJLaXRET01UZXN0
Tm9kZSogdGVzdE5vZGVQYXJhbSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0NBTExCQUNLX0ZVTkNUSU9OKHNlbGYpLCBGQUxT
RSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX05PREUodGVz
dE5vZGVQYXJhbSksIEZBTFNFKTsKKyAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0Tm9kZSogY29udmVy
dGVkVGVzdE5vZGVQYXJhbSA9IFdlYktpdDo6Y29yZSh0ZXN0Tm9kZVBhcmFtKTsKKyAgICBnYm9v
bGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nUGFyYW0s
IGNvbnZlcnRlZFRlc3ROb2RlUGFyYW0pOworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0obG9uZ1BhcmFtKTsKKyAgICBV
TlVTRURfUEFSQU0odGVzdE5vZGVQYXJhbSk7CisgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1Rf
UFJFU0VOVCgiU3BlZWNoIFN5bnRoZXNpcyIpCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29s
ZWFuPigwKTsKKyNlbmRpZiAvKiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykgKi8KK30KKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDg5YTc4MTZjZjZmZTFkYjNhYTQwMzllMDNiM2E0NDZlODI0NGY2MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICog
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVu
Y3Rpb25faAorI2RlZmluZSBXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbl9oCisKKyNpZmRl
ZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+
CisjaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTU9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtp
dGRvbS93ZWJraXRkb21kZWZpbmVzLXVuc3RhYmxlLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2Rl
ZmluZSBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DQUxMQkFDS19GVU5DVElPTiAgICAgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VC
S0lUX0RPTV9URVNUX0NBTExCQUNLX0ZVTkNUSU9OKG9iaikgICAgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFdFQktJVF9ET01fVFlQRV9URVNUX0NBTExCQUNLX0ZV
TkNUSU9OLCBXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbikpCisjZGVmaW5lIFdFQktJVF9E
T01fVEVTVF9DQUxMQkFDS19GVU5DVElPTl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfRE9NX1RZUEVfVEVTVF9DQUxMQkFDS19GVU5DVElP
TiwgV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25DbGFzcykKKyNkZWZpbmUgV0VCS0lUX0RP
TV9JU19URVNUX0NBTExCQUNLX0ZVTkNUSU9OKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9ET01fVFlQRV9URVNUX0NBTExCQUNLX0ZVTkNUSU9O
KSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX0NBTExCQUNLX0ZVTkNUSU9OX0NMQVNTKGts
YXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9ET01fVFlQRV9U
RVNUX0NBTExCQUNLX0ZVTkNUSU9OKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX0NBTExCQUNL
X0ZVTkNUSU9OX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2Jq
KSwgIFdFQktJVF9ET01fVFlQRV9URVNUX0NBTExCQUNLX0ZVTkNUSU9OLCBXZWJLaXRET01UZXN0
Q2FsbGJhY2tGdW5jdGlvbkNsYXNzKSkKKworc3RydWN0IF9XZWJLaXRET01UZXN0Q2FsbGJhY2tG
dW5jdGlvbiB7CisgICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKK307CisKK3N0
cnVjdCBfV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25DbGFzcyB7CisgICAgV2ViS2l0RE9N
T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0
X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2dldF90eXBlKHZvaWQpOworCisvKioKKyAqIHdl
YmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja193aXRoX25vX3BhcmFtOgor
ICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uCisgKgorICogUmV0dXJu
czogQSAjZ2Jvb2xlYW4KKyAqCisgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisqKi8KK1dFQktJVF9B
UEkgZ2Jvb2xlYW4KK3dlYmtpdF9kb21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja193
aXRoX25vX3BhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uKiBzZWxmKTsKKworLyoq
CisgKiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9hcnJh
eV9wYXJhbToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbgorICog
QGFycmF5UGFyYW06IEEgI1dlYktpdERPTUZsb2F0MzJBcnJheQorICoKKyAqIFJldHVybnM6IEEg
I2dib29sZWFuCisgKgorICogU3RhYmlsaXR5OiBVbnN0YWJsZQorKiovCitXRUJLSVRfQVBJIGdi
b29sZWFuCit3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9h
cnJheV9wYXJhbShXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiogc2VsZiwgV2ViS2l0RE9N
RmxvYXQzMkFycmF5KiBhcnJheVBhcmFtKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfY2Fs
bGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9wYXJh
bToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbgorICogQHNyelBh
cmFtOiBBICNnY2hhcgorICogQHN0ckFyZzogQSAjZ2NoYXIKKyAqCisgKiBSZXR1cm5zOiBBICNn
Ym9vbGVhbgorICoKKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSBnYm9v
bGVhbgord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfc2Vy
aWFsaXplZF9zY3JpcHRfdmFsdWVfcGFyYW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24q
IHNlbGYsIGNvbnN0IGdjaGFyKiBzcnpQYXJhbSwgY29uc3QgZ2NoYXIqIHN0ckFyZyk7CisKKy8q
KgorICogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2NhbGxiYWNrX3dpdGhfbm9u
X2Jvb2xfcmV0dXJuX3R5cGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVu
Y3Rpb24KKyAqIEBzdHJBcmc6IEEgI2djaGFyCisgKgorICogUmV0dXJuczogQSAjZ2xvbmcKKyAq
CisgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisqKi8KK1dFQktJVF9BUEkgZ2xvbmcKK3dlYmtpdF9k
b21fdGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja193aXRoX25vbl9ib29sX3JldHVybl90
eXBlKFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uKiBzZWxmLCBjb25zdCBnY2hhciogc3Ry
QXJnKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJh
Y2tfd2l0aF9zdHJpbmdfbGlzdDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0Q2FsbGJhY2tG
dW5jdGlvbgorICogQGxpc3RQYXJhbTogQSAjV2ViS2l0RE9NRE9NU3RyaW5nTGlzdAorICoKKyAq
IFJldHVybnM6IEEgI2dib29sZWFuCisgKgorICogU3RhYmlsaXR5OiBVbnN0YWJsZQorKiovCitX
RUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2Fs
bGJhY2tfd2l0aF9zdHJpbmdfbGlzdChXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiogc2Vs
ZiwgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCogbGlzdFBhcmFtKTsKKworLyoqCisgKiB3ZWJraXRf
ZG9tX3Rlc3RfY2FsbGJhY2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9ib29sZWFuOgorICogQHNl
bGY6IEEgI1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uCisgKiBAYm9vbFBhcmFtOiBBICNn
Ym9vbGVhbgorICoKKyAqIFJldHVybnM6IEEgI2dib29sZWFuCisgKgorICogU3RhYmlsaXR5OiBV
bnN0YWJsZQorKiovCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZG9tX3Rlc3RfY2FsbGJh
Y2tfZnVuY3Rpb25fY2FsbGJhY2tfd2l0aF9ib29sZWFuKFdlYktpdERPTVRlc3RDYWxsYmFja0Z1
bmN0aW9uKiBzZWxmLCBnYm9vbGVhbiBib29sUGFyYW0pOworCisvKioKKyAqIHdlYmtpdF9kb21f
dGVzdF9jYWxsYmFja19mdW5jdGlvbl9jYWxsYmFja19yZXF1aXJlc190aGlzX3RvX3Bhc3M6Cisg
KiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24KKyAqIEBsb25nUGFyYW06
IEEgI2dsb25nCisgKiBAdGVzdE5vZGVQYXJhbTogQSAjV2ViS2l0RE9NVGVzdE5vZGUKKyAqCisg
KiBSZXR1cm5zOiBBICNnYm9vbGVhbgorICoKKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLwor
V0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Z1bmN0aW9uX2Nh
bGxiYWNrX3JlcXVpcmVzX3RoaXNfdG9fcGFzcyhXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlv
biogc2VsZiwgZ2xvbmcgbG9uZ1BhcmFtLCBXZWJLaXRET01UZXN0Tm9kZSogdGVzdE5vZGVQYXJh
bSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9B
UEkgKi8KKyNlbmRpZiAvKiBXZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbl9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uUHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk4OTBhOTJiMmJkYjVkYTc5NTFhNDI4NTYzMzcwMjg2ODllMDAz
NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvblByaXZhdGUuaApAQCAtMCww
ICsxLDM2IEBACisvKgorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYktp
dERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uUHJpdmF0ZV9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RD
YWxsYmFja0Z1bmN0aW9uUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJUZXN0Q2FsbGJhY2tGdW5jdGlv
bi5oIgorI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5o
PgorI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKK1dl
YktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uKiB3cmFwVGVzdENhbGxiYWNrRnVuY3Rpb24oV2Vi
Q29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qKTsKK1dlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0
aW9uKiBraXQoV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qKTsKK1dlYkNvcmU6OlRlc3RD
YWxsYmFja0Z1bmN0aW9uKiBjb3JlKFdlYktpdERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uKik7Cit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8qIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lT
KSAqLworCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25Qcml2YXRlX2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2suY3BwCmluZGV4IDM5MjA0NDY0YmUxNTNjYzY1NDg0MjliNGQ1OWRk
Mjc5YTNiNzRjY2QuLjhiMmM0YzY0NWNhNGYzZjRjZWEwMWQ0MDEzMWIzMDFkMjFmNTg4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIEpTVGVzdENhbGxiYWNr
OjpjYWxsYmFja1dpdGhOb1BhcmFtKCkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwog
CiAgICAgYm9vbCByYWlzZWRFeGNlcHRpb24gPSBmYWxzZTsKLSAgICBtX2RhdGEtPmludm9rZUNh
bGxiYWNrKGFyZ3MsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNhbGxiYWNrV2l0aE5v
UGFyYW0iKSwgJnJhaXNlZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoZXhlYywgImNhbGxiYWNrV2l0aE5vUGFyYW0iKSwgJnJhaXNlZEV4Y2VwdGlvbik7
CiAgICAgcmV0dXJuICFyYWlzZWRFeGNlcHRpb247CiB9CiAKQEAgLTkzLDcgKzkzLDcgQEAgYm9v
bCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQXJyYXlQYXJhbShSZWZQdHI8RmxvYXQzMkFy
cmF5PiBhcnJheVBhcmFtKQogICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgbV9kYXRhLT5nbG9i
YWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoYXJyYXlQYXJhbSkpKTsKIAogICAgIGJvb2wgcmFpc2Vk
RXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIiksICZyYWlz
ZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFj
a0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
ICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIiksICZyYWlzZWRFeGNlcHRpb24pOwogICAgIHJldHVy
biAhcmFpc2VkRXhjZXB0aW9uOwogfQogCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9vbCBKU1Rlc3RD
YWxsYmFjazo6Y2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0oUGFzc1JlZlB0
cjxTZXJpYWxpemUKICAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBzdHJB
cmcpKTsKIAogICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgbV9kYXRhLT5p
bnZva2VDYWxsYmFjayhhcmdzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjYWxsYmFj
a1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbSIpLCAmcmFpc2VkRXhjZXB0aW9uKTsKKyAg
ICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAiY2FsbGJhY2tXaXRoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlUGFyYW0iKSwgJnJhaXNlZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJu
ICFyYWlzZWRFeGNlcHRpb247CiB9CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIEpTVGVzdENh
bGxiYWNrOjpjYWxsYmFja1dpdGhTdHJpbmdMaXN0KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
bGlzdFBhcmFtKQogICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgbV9kYXRhLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIobGlzdFBhcmFtKSkpOwogCiAgICAgYm9vbCByYWlzZWRFeGNlcHRp
b24gPSBmYWxzZTsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgImNhbGxiYWNrV2l0aFN0cmluZ0xpc3QiKSwgJnJhaXNlZEV4Y2Vw
dGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6
Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNhbGxi
YWNrV2l0aFN0cmluZ0xpc3QiKSwgJnJhaXNlZEV4Y2VwdGlvbik7CiAgICAgcmV0dXJuICFyYWlz
ZWRFeGNlcHRpb247CiB9CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCBib29sIEpTVGVzdENhbGxiYWNr
OjpjYWxsYmFja1dpdGhCb29sZWFuKGJvb2wgYm9vbFBhcmFtKQogICAgIGFyZ3MuYXBwZW5kKGpz
Qm9vbGVhbihib29sUGFyYW0pKTsKIAogICAgIGJvb2wgcmFpc2VkRXhjZXB0aW9uID0gZmFsc2U7
Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJjYWxsYmFja1dpdGhCb29sZWFuIiksICZyYWlzZWRFeGNlcHRpb24pOworICAgIG1f
ZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJjYWxsYmFja1dpdGhCb29sZWFu
IiksICZyYWlzZWRFeGNlcHRpb24pOwogICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9uOwogfQog
CkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tSZXF1aXJl
c1RoaXNUb1Bhc3MoaW50IGxvbmdQYXJhbSwgVGVzdE5vZGUqIHRlc3ROb2QKICAgICBhcmdzLmFw
cGVuZCh0b0pTKGV4ZWMsIG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKHRlc3RO
b2RlUGFyYW0pKSk7CiAKICAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIG1f
ZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAi
Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MiKSwgJnJhaXNlZEV4Y2VwdGlvbik7CisgICAgbV9k
YXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImNhbGxiYWNrUmVxdWlyZXNUaGlz
VG9QYXNzIiksICZyYWlzZWRFeGNlcHRpb24pOwogICAgIHJldHVybiAhcmFpc2VkRXhjZXB0aW9u
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U2
ZTI3ZWFiOGQ5NDJhODQzNTQ0MGU1NmYwZTY3YWYwY2EyNTA0NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uLmNwcApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKworI2lu
Y2x1ZGUgIkpTVGVzdENhbGxiYWNrRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkRPTVN0cmluZ0xp
c3QuaCIKKyNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJKU1Rlc3ROb2Rl
LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlRlc3ROb2RlLmgiCisjaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3Ry
aW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihKU09iamVjdCog
Y2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBUZXN0Q2Fs
bGJhY2tGdW5jdGlvbigpCisgICAgLCBBY3RpdmVET01DYWxsYmFjayhnbG9iYWxPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGEo
Y2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpCit7Cit9CisKK0pTVGVzdENhbGxiYWNrRnVuY3Rpb246
On5KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uKCkKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIC8vIFdoZW4gdGhlIGNv
bnRleHQgaXMgZGVzdHJveWVkLCBhbGwgdGFza3Mgd2l0aCBhIHJlZmVyZW5jZSB0byBhIGNhbGxi
YWNrCisgICAgLy8gc2hvdWxkIGJlIGRlbGV0ZWQuIFNvIGlmIHRoZSBjb250ZXh0IGlzIDAsIHdl
IGFyZSBvbiB0aGUgY29udGV4dCB0aHJlYWQuCisgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQt
PmlzQ29udGV4dFRocmVhZCgpKQorICAgICAgICBkZWxldGUgbV9kYXRhOworICAgIGVsc2UKKyAg
ICAgICAgY29udGV4dC0+cG9zdFRhc2soRGVsZXRlQ2FsbGJhY2tEYXRhVGFzayhtX2RhdGEpKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgbV9kYXRhID0gMDsKKyNlbmRpZgorfQorCisKKy8vIEZ1bmN0
aW9ucworCitib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNhbGxiYWNrV2l0aE5vUGFyYW0o
KQoreworICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gcHJvdGVjdCgqdGhpcyk7CisKKyAg
ICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKKworICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsK
KyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworCisgICAgYm9vbCByYWlzZWRFeGNlcHRp
b24gPSBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgbV9kYXRhLT5pbnZva2VD
YWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRl
bnRpZmllcigpLCAmcmFpc2VkRXhjZXB0aW9uKTsKKyAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlv
bjsKK30KKworYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhBcnJheVBh
cmFtKFJlZlB0cjxGbG9hdDMyQXJyYXk+IGFycmF5UGFyYW0pCit7CisgICAgaWYgKCFjYW5JbnZv
a2VDYWxsYmFjaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJlZjxKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uPiBwcm90ZWN0KCp0aGlzKTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpOworCisgICAgRXhlY1N0YXRlKiBleGVjID0gbV9k
YXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBtX2RhdGEtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihhcnJheVBhcmFtKSkpOworCisgICAgYm9vbCByYWlzZWRFeGNlcHRp
b24gPSBmYWxzZTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgbV9kYXRhLT5pbnZva2VD
YWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRl
bnRpZmllcigpLCAmcmFpc2VkRXhjZXB0aW9uKTsKKyAgICByZXR1cm4gIXJhaXNlZEV4Y2VwdGlv
bjsKK30KKworYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhTZXJpYWxp
emVkU2NyaXB0VmFsdWVQYXJhbShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3J6
UGFyYW0sIGNvbnN0IFN0cmluZyYgc3RyQXJnKQoreworICAgIGlmICghY2FuSW52b2tlQ2FsbGJh
Y2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbj4gcHJvdGVjdCgqdGhpcyk7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmds
b2JhbE9iamVjdCgpLT52bSgpKTsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdz
OworICAgIGFyZ3MuYXBwZW5kKHNyelBhcmFtID8gc3J6UGFyYW0tPmRlc2VyaWFsaXplKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpKTsKKyAgICBhcmdzLmFw
cGVuZChqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBzdHJBcmcpKTsKKworICAgIGJvb2wgcmFpc2Vk
RXhjZXB0aW9uID0gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIG1fZGF0YS0+
aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rp
b24sIElkZW50aWZpZXIoKSwgJnJhaXNlZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuICFyYWlzZWRF
eGNlcHRpb247Cit9CisKK2Jvb2wgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y2FsbGJhY2tXaXRo
U3RyaW5nTGlzdChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RQYXJhbSkKK3sKKyAgICBp
ZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUmVm
PEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+IHByb3RlY3QoKnRoaXMpOworCisgICAgSlNMb2NrSG9s
ZGVyIGxvY2sobV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+dm0oKSk7CisKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIG1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGxpc3RQYXJhbSkpKTsKKworICAgIGJvb2wgcmFp
c2VkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIG1fZGF0
YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVu
Y3Rpb24sIElkZW50aWZpZXIoKSwgJnJhaXNlZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuICFyYWlz
ZWRFeGNlcHRpb247Cit9CisKK2Jvb2wgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y2FsbGJhY2tX
aXRoQm9vbGVhbihib29sIGJvb2xQYXJhbSkKK3sKKyAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNr
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rp
b24+IHByb3RlY3QoKnRoaXMpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5nbG9i
YWxPYmplY3QoKS0+dm0oKSk7CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX2RhdGEtPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsK
KyAgICBhcmdzLmFwcGVuZChqc0Jvb2xlYW4oYm9vbFBhcmFtKSk7CisKKyAgICBib29sIHJhaXNl
ZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0
aW9uLCBJZGVudGlmaWVyKCksICZyYWlzZWRFeGNlcHRpb24pOworICAgIHJldHVybiAhcmFpc2Vk
RXhjZXB0aW9uOworfQorCitib29sIEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNhbGxiYWNrUmVx
dWlyZXNUaGlzVG9QYXNzKGludCBsb25nUGFyYW0sIFRlc3ROb2RlKiB0ZXN0Tm9kZVBhcmFtKQor
eworICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gcHJvdGVjdCgqdGhpcyk7CisKKyAgICBK
U0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKKworICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGxv
bmdQYXJhbSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgbV9kYXRhLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIodGVzdE5vZGVQYXJhbSkpKTsKKworICAgIGJvb2wgcmFpc2VkRXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIG1fZGF0YS0+aW52
b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24s
IElkZW50aWZpZXIoKSwgJnJhaXNlZEV4Y2VwdGlvbik7CisgICAgcmV0dXJuICFyYWlzZWRFeGNl
cHRpb247Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZlM2YyMDhkYWU1MWIyOGU2
ZTljNzBkZDVkYzhlNmZiNWVkZjU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTAs
MCArMSw2NCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIEpTVGVzdENhbGxi
YWNrRnVuY3Rpb25faAorI2RlZmluZSBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uX2gKKworI2lmIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIK
KyNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5oIgorI2luY2x1ZGUgIlRlc3RDYWxsYmFja0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uIDogcHVibGljIFRlc3RDYWxsYmFja0Z1bmN0
aW9uLCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihjYWxsYmFjaywgZ2xvYmFsT2JqZWN0
KSk7CisgICAgfQorCisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorCisgICAgdmlydHVhbCB+SlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbigpOworCisgICAgLy8gRnVuY3Rpb25zCisgICAgdmlydHVhbCBib29sIGNh
bGxiYWNrV2l0aE5vUGFyYW0oKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tXaXRoQXJyYXlQ
YXJhbShSZWZQdHI8RmxvYXQzMkFycmF5PiBhcnJheVBhcmFtKTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0oUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHNyelBhcmFtLCBjb25zdCBTdHJpbmcmIHN0ckFyZyk7CisgICAgQ09N
UElMRV9BU1NFUlQoZmFsc2UpICAgIHZpcnR1YWwgaW50IGNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1
cm5UeXBlKGNvbnN0IFN0cmluZyYgc3RyQXJnKTsKKyAgICB2aXJ0dWFsIGludCBjdXN0b21DYWxs
YmFjayhDbGFzczUqIGNsYXNzNVBhcmFtLCBDbGFzczYqIGNsYXNzNlBhcmFtKTsKKyAgICB2aXJ0
dWFsIGJvb2wgY2FsbGJhY2tXaXRoU3RyaW5nTGlzdChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGxpc3RQYXJhbSk7CisgICAgdmlydHVhbCBib29sIGNhbGxiYWNrV2l0aEJvb2xlYW4oYm9vbCBi
b29sUGFyYW0pOworICAgIHZpcnR1YWwgYm9vbCBjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhp
bnQgbG9uZ1BhcmFtLCBUZXN0Tm9kZSogdGVzdE5vZGVQYXJhbSk7CisKK3ByaXZhdGU6CisgICAg
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9i
YWxPYmplY3QqKTsKKworICAgIEpTQ2FsbGJhY2tEYXRhKiBtX2RhdGE7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCmluZGV4IDdkOTQwOTA1MmNmZGI5MGM2YjEwYzk4Mzc4OGM3ODdmMTIw
ZDA4NmQuLjA2Y2I3OGQ4ZGNlNzFhODgyNTkzMjQxZTFhYWMyNzVlMTIxMzUyNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNTVkdQb2ludC5oIgogI2luY2x1ZGUg
IkpTU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKICNp
bmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKQEAgLTExNiw2
ICsxMTcsOSBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
QXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9u
YWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
KEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFj
a0Z1bmN0aW9uQXJnKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5j
dGlvbkFuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01l
dGhvZFdpdGhDYWxsYmFja0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwogI2lmIEVOQUJMRShDb25kaXRp
b24xKQpAQCAtNDUxLDEyICs0NTUsMTUgQEAgQ09NUElMRV9BU1NFUlQoMCA9PSBUZXN0T2JqOjpy
ZWFkb25seSwgVGVzdE9iakVudW1yZWFkb25seUlzV3JvbmdVc2VEb05vdENoZWNrQ28KIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
VGVzdE9iaihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKLSAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzRnVuY3Rpb24oKSkKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhl
YywgMCwgInRlc3RDYWxsYmFjayIsICJUZXN0T2JqIiwgbnVsbHB0cik7CiAgICAgUmVmUHRyPFRl
c3RDYWxsYmFjaz4gdGVzdENhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVj
dChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
KTsKLSAgICBSZWZQdHI8VGVzdE9iaj4gb2JqZWN0ID0gVGVzdE9iajo6Y3JlYXRlKHRlc3RDYWxs
YmFjayk7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9uKCkpCisgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMSwgInRlc3RD
YWxsYmFja0Z1bmN0aW9uIiwgIlRlc3RPYmoiLCBudWxscHRyKTsKKyAgICBSZWZQdHI8VGVzdENh
bGxiYWNrRnVuY3Rpb24+IHRlc3RDYWxsYmFja0Z1bmN0aW9uID0gSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbjo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpOworICAgIFJlZlB0cjxUZXN0T2JqPiBvYmplY3QgPSBUZXN0
T2JqOjpjcmVhdGUodGVzdENhbGxiYWNrLCB0ZXN0Q2FsbGJhY2tGdW5jdGlvbik7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7CiB9CiAKQEAgLTQ3Myw3ICs0ODAsNyBAQCB2b2lk
IEpTVGVzdE9iakNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplYwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T2JqOjpnZXRQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJp
dmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RPYmplY3QiKSkpLCBSZWFk
T25seSB8IERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigyKSwgUmVhZE9ubHkgfCBEb250
RW51bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RPYmpDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzLCAqdGhpcyk7CiB9CiAKQEAgLTYxOCw2ICs2MjUsOSBAQCBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAg
eyAibWV0aG9kV2l0aENhbGxiYWNrQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpLCAoaW50cHRyX3QpICgxKSB9LAogICAgIHsgIm1l
dGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9J
bnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyks
IChpbnRwdHJfdCkgKDIpIH0sCiAgICAgeyAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxB
cmciLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnKSwgKGludHB0cl90KSAoMCkgfSwKKyAgICB7ICJtZXRob2RXaXRoQ2Fs
bGJhY2tGdW5jdGlvbkFyZyIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpLCAoaW50cHRyX3QpICgxKSB9LAorICAgIHsgIm1l
dGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmciLCBKU0M6OkZ1bmN0
aW9uLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxi
YWNrRnVuY3Rpb25BcmcpLCAoaW50cHRyX3QpICgyKSB9LAorICAgIHsgIm1ldGhvZFdpdGhDYWxs
YmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcpLCAoaW50cHRy
X3QpICgwKSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIHsgImNvbmRpdGlvbmFsTWV0
aG9kMSIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRo
b2QxKSwgKGludHB0cl90KSAoMCkgfSwKICNlbHNlCkBAIC0zNTk5LDcgKzM2MDksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENhbGxiYWNrQXJnKEV4ZQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4
ZWMpKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKKyAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAi
bWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGltcGwubWV0aG9kV2l0
aENhbGxiYWNrQXJnKGNhbGxiYWNrKTsKQEAgLTM2MTksNyArMzYyOSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBCiAgICAgaW50IG5vbkNhbGxiYWNrID0gdG9JbnQzMihleGVjLCBleGVjLT5h
cmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzRnVuY3Rpb24oKSkKKyAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAi
bWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsKICAgICBSZWZQdHI8VGVz
dENhbGxiYWNrPiBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAg
ICAgaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhub25DYWxsYmFj
aywgY2FsbGJhY2spOwpAQCAtMzYzNiw3ICszNjQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9w
dGkKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFJlZlB0cjxUZXN0
Q2FsbGJhY2s+IGNhbGxiYWNrOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWRPck51bGwoKSkgewotICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlz
RnVuY3Rpb24oKSkKKyAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc09i
amVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKCpleGVjLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tB
bmRPcHRpb25hbEFyZyIpOwogICAgICAgICBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVh
dGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSk7CiAgICAgfQpAQCAtMzY0NCwxMSArMzY1NCw2NiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CisgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGlmIChVTkxJS0VM
WShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAi
bWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICBSZWZQdHI8VGVzdENhbGxiYWNr
RnVuY3Rpb24+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGFzT2Jq
ZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCkpOworICAgIGltcGwubWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoY2FsbGJhY2spOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Tm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0Z1bmN0aW9uQXJnIik7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoZXhlYykpOworICAgIGludCBub25DYWxsYmFjayA9IHRvSW50MzIoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOworICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRF
eGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9uKCkpCisgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMSwgImNhbGxiYWNr
IiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlv
bkFyZyIpOworICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY2FsbGJhY2sgPSBKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMSkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CisgICAgaW1wbC5tZXRob2RXaXRo
Tm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKG5vbkNhbGxiYWNrLCBjYWxsYmFj
ayk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOworICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0
aW9uYWxBcmciKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY2FsbGJhY2s7CisgICAgaWYgKCFleGVj
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGlmICghZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpleGVjLCAwLCAiY2FsbGJhY2siLCAiVGVz
dE9iaiIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CisgICAg
ICAgIGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGFzT2JqZWN0KGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwor
ICAgIH0KKyAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmco
Y2FsbGJhY2spOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9
CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoIWV4ZWMt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgaWYgKCFleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCisgICAgICAgIGlmICghZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmoi
LCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICAgICAgY2Fs
bGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Rlc3RDYWxsYmFjaz4oZXhlYywg
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwg
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIH0KQEAgLTM2NjAsNyArMzcyNSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
blN0YXRpY01ldGhvZFdpdGhDYWxsYmFjCiB7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
KDApLmlzRnVuY3Rpb24oKSkKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywg
MCwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7
CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlD
YWxsYmFjazxKU1Rlc3RDYWxsYmFjaz4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgIFRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjayk7CkBA
IC0zODAzLDcgKzM4NjgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KAogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDAp
LmlzRnVuY3Rpb24oKSkKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqZXhlYywgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIFJlZlB0cjxU
ZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsK
ICAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoY2FsbGJhY2spOwpAQCAtMzk0Myw3ICs0MDA4LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QoRXhlY1N0YXQKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoZXhlYyk7CiAgICAgaWYgKGFyZ3NDb3VudCA9
PSAxKQogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kNChleGVjKTsKLSAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmIChhcmcwLmlzTnVsbCgp
IHx8IGFyZzAuaXNGdW5jdGlvbigpKSkpCisgICAgaWYgKChhcmdzQ291bnQgPT0gMSAmJiAoYXJn
MC5pc051bGwoKSB8fCBhcmcwLmlzT2JqZWN0KCkpKSkKICAgICAgICAgcmV0dXJuIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoZXhlYyk7CiAgICAgaWYgKChhcmdz
Q291bnQgPT0gMSAmJiAoYXJnMC5pc051bGwoKSB8fCAoYXJnMC5pc09iamVjdCgpICYmIGFzT2Jq
ZWN0KGFyZzApLT5pbmhlcml0cyhKU0RPTVN0cmluZ0xpc3Q6OmluZm8oKSkpKSkpCiAgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KGV4ZWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggZGExZDRjOTZmYTRmOWRjOGM0NDA1NWE2MmM5YTZi
OTdjYWQ0NGQ5MS4uMTNjZTljNThkNjljOTRkZGZmMDdkOThmZTFhOTI1OWIyMDE0NWRiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5
cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RUeXBl
ZGVmcygKICAgICBTdHJpbmcgaGVsbG8gPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDEpLmlzRnVuY3Rpb24oKSkKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
KDEpLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcigqZXhlYywgMSwgInRlc3RDYWxsYmFjayIsICJUZXN0VHlwZWRlZnMiLCBudWxscHRy
KTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFj
azo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFJlZlB0cjxUZXN0VHlwZWRlZnM+IG9iamVjdCA9IFRl
c3RUeXBlZGVmczo6Y3JlYXRlKGhlbGxvLCB0ZXN0Q2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrRnVu
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RDYWxsYmFja0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMyYTMyNGZhNmZmYjdlOTFmNDIyMTIx
MDlmOGE1ZmU0MGNjMjA0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTAsMCAr
MSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTU9iamVj
dC5oPgorCitAY2xhc3MgRE9NQ2xhc3M1OworQGNsYXNzIERPTUNsYXNzNjsKK0BjbGFzcyBET01E
T01TdHJpbmdMaXN0OworQGNsYXNzIERPTUZsb2F0MzJBcnJheTsKK0BjbGFzcyBET01UZXN0Tm9k
ZTsKK0BjbGFzcyBOU1N0cmluZzsKKworV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoOTg3Nl81
KQorV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiA6IERP
TU9iamVjdAorLSAoQk9PTCljYWxsYmFja1dpdGhOb1BhcmFtOworLSAoQk9PTCljYWxsYmFja1dp
dGhBcnJheVBhcmFtOihET01GbG9hdDMyQXJyYXkgKilhcnJheVBhcmFtOworLSAoQk9PTCljYWxs
YmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbTooTlNTdHJpbmcgKilzcnpQYXJhbSBz
dHJBcmc6KE5TU3RyaW5nICopc3RyQXJnOworLSAoaW50KWNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1
cm5UeXBlOihOU1N0cmluZyAqKXN0ckFyZzsKKy0gKGludCljdXN0b21DYWxsYmFjazooRE9NQ2xh
c3M1ICopY2xhc3M1UGFyYW0gY2xhc3M2UGFyYW06KERPTUNsYXNzNiAqKWNsYXNzNlBhcmFtOwor
LSAoQk9PTCljYWxsYmFja1dpdGhTdHJpbmdMaXN0OihET01ET01TdHJpbmdMaXN0ICopbGlzdFBh
cmFtOworLSAoQk9PTCljYWxsYmFja1dpdGhCb29sZWFuOihCT09MKWJvb2xQYXJhbTsKKy0gKEJP
T0wpY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3M6KGludClsb25nUGFyYW0gdGVzdE5vZGVQYXJh
bTooRE9NVGVzdE5vZGUgKil0ZXN0Tm9kZVBhcmFtOworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrRnVuY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
Q2FsbGJhY2tGdW5jdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjEyZWQ0MzRkMzJjNjVjYjQxMjNlMTMx
ZDBmZWY0ZjVhZDY0ZjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24ubW0KQEAgLTAsMCAr
MSwxNDYgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRl
LWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1BFRUNI
X1NZTlRIRVNJUykKKworI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9NVGVz
dENhbGxiYWNrRnVuY3Rpb24uaCIKKworI2ltcG9ydCAiQ2xhc3M1LmgiCisjaW1wb3J0ICJDbGFz
czYuaCIKKyNpbXBvcnQgIkRPTUNsYXNzNUludGVybmFsLmgiCisjaW1wb3J0ICJET01DbGFzczZJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NRE9NU3RyaW5nTGlzdEludGVybmFsLmgiCisjaW1wb3J0
ICJET01GbG9hdDMyQXJyYXlJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgi
CisjaW1wb3J0ICJET01TdHJpbmdMaXN0LmgiCisjaW1wb3J0ICJET01UZXN0Q2FsbGJhY2tGdW5j
dGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJET01UZXN0Tm9kZUludGVybmFsLmgiCisjaW1wb3J0
ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgi
CisjaW1wb3J0ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbXBvcnQgIlRlc3RDYWxsYmFj
a0Z1bmN0aW9uLmgiCisjaW1wb3J0ICJUZXN0Tm9kZS5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2su
aCIKKyNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKKyNpbXBv
cnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KKwor
I2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rp
b24qPihfaW50ZXJuYWwpCisKK0BpbXBsZW1lbnRhdGlvbiBET01UZXN0Q2FsbGJhY2tGdW5jdGlv
bgorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxs
b2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uIGNsYXNzXSwgc2VsZikp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwtPmRl
cmVmKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWZpbmFsaXplCit7Cisg
ICAgaWYgKF9pbnRlcm5hbCkKKyAgICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZmlu
YWxpemVdOworfQorCistIChCT09MKWNhbGxiYWNrV2l0aE5vUGFyYW0KK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmNhbGxiYWNr
V2l0aE5vUGFyYW0oKTsKK30KKworLSAoQk9PTCljYWxsYmFja1dpdGhBcnJheVBhcmFtOihET01G
bG9hdDMyQXJyYXkgKilhcnJheVBhcmFtCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5jYWxsYmFja1dpdGhBcnJheVBhcmFtKGNv
cmUoYXJyYXlQYXJhbSkpOworfQorCistIChCT09MKWNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZVBhcmFtOihOU1N0cmluZyAqKXNyelBhcmFtIHN0ckFyZzooTlNTdHJpbmcgKilzdHJB
cmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPmNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtKFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKFdURjo6U3RyaW5nKHNyelBhcmFtKSksIHN0
ckFyZyk7Cit9CisKKy0gKGludCljYWxsYmFja1dpdGhOb25Cb29sUmV0dXJuVHlwZTooTlNTdHJp
bmcgKilzdHJBcmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgcmV0dXJuIElNUEwtPmNhbGxiYWNrV2l0aE5vbkJvb2xSZXR1cm5UeXBlKHN0ckFyZyk7
Cit9CisKKy0gKGludCljdXN0b21DYWxsYmFjazooRE9NQ2xhc3M1ICopY2xhc3M1UGFyYW0gY2xh
c3M2UGFyYW06KERPTUNsYXNzNiAqKWNsYXNzNlBhcmFtCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT5jdXN0b21DYWxsYmFjayhj
b3JlKGNsYXNzNVBhcmFtKSwgY29yZShjbGFzczZQYXJhbSkpOworfQorCistIChCT09MKWNhbGxi
YWNrV2l0aFN0cmluZ0xpc3Q6KERPTURPTVN0cmluZ0xpc3QgKilsaXN0UGFyYW0KK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPmNh
bGxiYWNrV2l0aFN0cmluZ0xpc3QoY29yZShsaXN0UGFyYW0pKTsKK30KKworLSAoQk9PTCljYWxs
YmFja1dpdGhCb29sZWFuOihCT09MKWJvb2xQYXJhbQoreworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+Y2FsbGJhY2tXaXRoQm9vbGVh
bihib29sUGFyYW0pOworfQorCistIChCT09MKWNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzOihp
bnQpbG9uZ1BhcmFtIHRlc3ROb2RlUGFyYW06KERPTVRlc3ROb2RlICopdGVzdE5vZGVQYXJhbQor
eworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4g
SU1QTC0+Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MobG9uZ1BhcmFtLCBjb3JlKHRlc3ROb2Rl
UGFyYW0pKTsKK30KKworQGVuZAorCitXZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogY29y
ZShET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBl
ciA/IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qPih3cmFw
cGVyLT5faW50ZXJuYWwpIDogMDsKK30KKworRE9NVGVzdENhbGxiYWNrRnVuY3Rpb24gKmtpdChX
ZWJDb3JlOjpUZXN0Q2FsbGJhY2tGdW5jdGlvbiogdmFsdWUpCit7CisgICAgV2ViQ29yZVRocmVh
ZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIGlmIChET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiAqd3JhcHBlciA9IGdldERP
TVdyYXBwZXIodmFsdWUpKQorICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOworICAgIERPTVRlc3RDYWxsYmFja0Z1bmN0aW9uICp3cmFwcGVyID0gW1tET01UZXN0
Q2FsbGJhY2tGdW5jdGlvbiBhbGxvY10gX2luaXRdOworICAgIHdyYXBwZXItPl9pbnRlcm5hbCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RE9NT2JqZWN0SW50ZXJuYWwqPih2YWx1ZSk7CisgICAgdmFsdWUt
PnJlZigpOworICAgIGFkZERPTVdyYXBwZXIod3JhcHBlciwgdmFsdWUpOworICAgIHJldHVybiBb
d3JhcHBlciBhdXRvcmVsZWFzZV07Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFja0Z1bmN0aW9uSW50ZXJuYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NDMwYTkwZGJmZTk2YWQ4YzcxYzQ0ODQ5M2QxODc0Y2E0MzhhN2YzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25JbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8q
CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3Qu
CisgKiBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUZXN0Q2FsbGJhY2tGdW5jdGlvbjsKK30KKworV0VCQ09S
RV9FWFBPUlQgV2ViQ29yZTo6VGVzdENhbGxiYWNrRnVuY3Rpb24qIGNvcmUoRE9NVGVzdENhbGxi
YWNrRnVuY3Rpb24gKik7CitXRUJDT1JFX0VYUE9SVCBET01UZXN0Q2FsbGJhY2tGdW5jdGlvbiAq
a2l0KFdlYkNvcmU6OlRlc3RDYWxsYmFja0Z1bmN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rpb24uaWRsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0Z1bmN0aW9u
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ODM4N2Q3N2YxNTkwOWViNzljNGFiZDRjNWQwYTc0YmQzMGFmNDQx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmlkbApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBm
aWxlIGlzIGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciB3aXRoIGZ1bmN0
aW9uIG9ubHkgY2FsbGJhY2sKKy8vIGludGVyZmFjZSBhbmQgZm9yIHRyYWNraW5nIGNoYW5nZXMg
aW4gaXRzIG91cHV0LgorWworICAgIENvbmRpdGlvbmFsPVNQRUVDSF9TWU5USEVTSVMsCisgICAg
Q2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAorXSBjYWxsYmFjayBpbnRlcmZhY2UgVGVzdENhbGxiYWNr
RnVuY3Rpb24geworICBib29sZWFuIGNhbGxiYWNrV2l0aE5vUGFyYW0oKTsKKyAgYm9vbGVhbiBj
YWxsYmFja1dpdGhBcnJheVBhcmFtKEZsb2F0MzJBcnJheSBhcnJheVBhcmFtKTsKKyAgYm9vbGVh
biBjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbShTZXJpYWxpemVkU2NyaXB0
VmFsdWUgc3J6UGFyYW0sIERPTVN0cmluZyBzdHJBcmcpOworICBsb25nIGNhbGxiYWNrV2l0aE5v
bkJvb2xSZXR1cm5UeXBlKERPTVN0cmluZyBzdHJBcmcpOworICBbQ3VzdG9tXSBsb25nIGN1c3Rv
bUNhbGxiYWNrKENsYXNzNSBjbGFzczVQYXJhbSwgQ2xhc3M2IGNsYXNzNlBhcmFtKTsKKyAgYm9v
bGVhbiBjYWxsYmFja1dpdGhTdHJpbmdMaXN0KERPTVN0cmluZ0xpc3QgbGlzdFBhcmFtKTsKKyAg
Ym9vbGVhbiBjYWxsYmFja1dpdGhCb29sZWFuKGJvb2xlYW4gYm9vbFBhcmFtKTsKKyAgYm9vbGVh
biBjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nIGxvbmdQYXJhbSwgVGVzdE5vZGUgdGVz
dE5vZGVQYXJhbSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCmluZGV4IGE1Njc0Zjg2YjI1NDUxNjUzY2Q1MjAyMGMyZTJkMTc4NjNj
YmNmYWYuLmQwMzdlYzRmYjkxZjhhYWZjYzcwZmM2Yzg1ZDJkODc2N2M5NGI4ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTM2
LDcgKzM2LDcgQEAgZW51bSBUZXN0RW51bVR5cGUgeyAiIiwgIkVudW1WYWx1ZTEiLCAiRW51bVZh
bHVlMiIsICJFbnVtVmFsdWUzIiB9OwogZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFs
dWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwgIk9wdGlvbmFsVmFsdWUzIiB9OwogCiBbCi0gICAgQ29u
c3RydWN0b3IoVGVzdENhbGxiYWNrIHRlc3RDYWxsYmFjayksCisgICAgQ29uc3RydWN0b3IoVGVz
dENhbGxiYWNrIHRlc3RDYWxsYmFjaywgVGVzdENhbGxiYWNrRnVuY3Rpb24gdGVzdENhbGxiYWNr
RnVuY3Rpb24pLAogICAgIEludGVyZmFjZU5hbWU9VGVzdE9iamVjdAogXSBpbnRlcmZhY2UgVGVz
dE9iaiB7CiAgICAgLy8gQXR0cmlidXRlcwpAQCAtMTQ2LDEwICsxNDYsMTYgQEAgZW51bSBfb3B0
aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwgIk9wdGlvbmFs
VmFsdWUzIiB9OwogICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3Ry
aW5nKFtEZWZhdWx0PU51bGxTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyBzdHIpOwogCiAjaWYg
ZGVmaW5lZChURVNUSU5HX0pTKQotICAgIC8vICdDYWxsYmFjaycgZXh0ZW5kZWQgYXR0cmlidXRl
CisgICAgLy8gQ2FsbGJhY2sgaW50ZXJmYWNlIHBhcmFtZXRlcnMuCiAgICAgdm9pZCAgICBtZXRo
b2RXaXRoQ2FsbGJhY2tBcmcoVGVzdENhbGxiYWNrIGNhbGxiYWNrKTsKICAgICB2b2lkICAgIG1l
dGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKGxvbmcgbm9uQ2FsbGJhY2ssIFRl
c3RDYWxsYmFjayBjYWxsYmFjayk7CiAgICAgdm9pZCAgICBtZXRob2RXaXRoQ2FsbGJhY2tBbmRP
cHRpb25hbEFyZyhvcHRpb25hbCBUZXN0Q2FsbGJhY2sgY2FsbGJhY2spOworCisgICAgLy8gQ2Fs
bGJhY2sgZnVuY3Rpb24gcGFyYW1ldGVycy4KKyAgICB2b2lkICAgIG1ldGhvZFdpdGhDYWxsYmFj
a0Z1bmN0aW9uQXJnKFRlc3RDYWxsYmFja0Z1bmN0aW9uIGNhbGxiYWNrKTsKKyAgICB2b2lkICAg
IG1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcobG9uZyBub25D
YWxsYmFjaywgVGVzdENhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spOworICAgIHZvaWQgICAgbWV0
aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhvcHRpb25hbCBUZXN0Q2FsbGJh
Y2tGdW5jdGlvbiBjYWxsYmFjayk7CisKICAgICAvLyBzdGF0aWMgbWV0aG9kcyB3aXRoICdDYWxs
YmFjaycgZXh0ZW5kZWQgYXR0cmlidXRlCiAgICAgc3RhdGljIHZvaWQgICAgc3RhdGljTWV0aG9k
V2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcob3B0aW9uYWwgVGVzdENhbGxiYWNrIGNhbGxiYWNr
KTsKICAgICBzdGF0aWMgdm9pZCAgICBzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoVGVzdENh
bGxiYWNrIGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmlkbAppbmRleCAzZjE2OTI4NGEzM2RlZWEwZTQxYWVhNzZlYTI4M2IwNmUxMjM0Mzcz
Li4yM2Y0MDEyYTRkYjRmYjllYzNlYjg3OThmNjJiYzk3NWI3OTZiYWNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaWRsCkBAIC0xOSw2ICsxOSw3IEBA
CiAKIFsKICAgICBDYWxsYmFja05lZWRzT3BlcmF0b3JFcXVhbCwKKyAgICBDYWxsYmFjaz1GdW5j
dGlvbk9ubHksCiBdIGNhbGxiYWNrIGludGVyZmFjZSBNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsK
ICAgICBib29sZWFuIHF1ZXJ5Q2hhbmdlZChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIE1l
ZGlhUXVlcnlMaXN0IGxpc3QpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9S
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsCmluZGV4IGUxNjlhMzYyOGE0MGFiYTFkYzdj
NjNmNjMyMDAxYjQ5MTMyNDM3MjEuLmM1ZjVjNzFmYzZiMzFlNGU3Njc4ZGYyY2FiNmQyNmM4YTI1
YzE4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SZXF1ZXN0QW5pbWF0aW9uRnJh
bWVDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JlcXVlc3RBbmltYXRpb25G
cmFtZUNhbGxiYWNrLmlkbApAQCAtMzAsNiArMzAsNyBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9
UkVRVUVTVF9BTklNQVRJT05fRlJBTUUsCisgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LAogXSBj
YWxsYmFjayBpbnRlcmZhY2UgUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2sgewogICAgIC8v
IGhpZ2hSZXNUaW1lIGlzIHBhc3NlZCBhcyBoaWdoIHJlc29sdXRpb24gdGltZXN0YW1wLCBzZWUK
ICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9oci10aW1lLyBmb3IgZGV0YWlscy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3RyaW5nQ2FsbGJhY2suaWRsCmluZGV4IDlhYjc5YzEzY2VkZTI5NTBkNDRkZTIw
NTI0OTRkMzM4ODI1MmZjNGYuLjkyMzY4N2FiMzBiZmJmNWNmZDgxNDNkZDM4M2U4MWQxNTA3NjVh
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmlkbApAQCAtMjgsNiArMjgsOCBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1jYWxsYmFjayBpbnRlcmZhY2UgU3RyaW5nQ2FsbGJh
Y2sgeworWworICAgIENhbGxiYWNrPUZ1bmN0aW9uT25seSwKK10gY2FsbGJhY2sgaW50ZXJmYWNl
IFN0cmluZ0NhbGxiYWNrIHsKICAgICBib29sZWFuIGhhbmRsZUV2ZW50KERPTVN0cmluZyBkYXRh
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZvaWRDYWxsYmFjay5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZvaWRDYWxsYmFjay5pZGwKaW5kZXggNTVmYTE4MjU3NzFi
ZTVlOTlhMTE0NGUzNTUzMTg1OGNiMjc1Zjk1Yi4uOWZjNDlhZmNiMTg2NjZkN2RkNmYzZGE3YWRj
OWJjMjA3YWRlZWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Wb2lkQ2FsbGJh
Y2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVm9pZENhbGxiYWNrLmlkbApAQCAtMjIs
NyArMjIsOCBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwotCi1jYWxs
YmFjayBpbnRlcmZhY2UgVm9pZENhbGxiYWNrIHsKK1sKKyAgICBDYWxsYmFjaz1GdW5jdGlvbk9u
bHksCitdIGNhbGxiYWNrIGludGVyZmFjZSBWb2lkQ2FsbGJhY2sgewogICAgIGJvb2xlYW4gaGFu
ZGxlRXZlbnQoKTsKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>