<?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>234548</bug_id>
          
          <creation_ts>2021-12-20 23:53:58 -0800</creation_ts>
          <short_desc>ScriptState.h/cpp is a remnant of JavaScript engine abstraction that can be removed</short_desc>
          <delta_ts>2021-12-21 13:57:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>ashvayka</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>pangle</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825888</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-20 23:53:58 -0800</bug_when>
    <thetext>ScriptState.h/cpp is a remnant of JavaScript engine abstraction that can be removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825902</commentid>
    <comment_count>1</comment_count>
      <attachid>447695</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 00:45:28 -0800</bug_when>
    <thetext>Created attachment 447695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825906</commentid>
    <comment_count>2</comment_count>
      <attachid>447696</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 00:51:08 -0800</bug_when>
    <thetext>Created attachment 447696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825923</commentid>
    <comment_count>3</comment_count>
      <attachid>447697</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 01:36:43 -0800</bug_when>
    <thetext>Created attachment 447697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825927</commentid>
    <comment_count>4</comment_count>
      <attachid>447697</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-21 01:51:57 -0800</bug_when>
    <thetext>Comment on attachment 447697
Patch

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

r=me with comments.

&gt; Source/WebCore/ChangeLog:15
&gt; +        Also begin to just call global objects &quot;global object&quot;, and not &quot;script state&quot;.

Nice.

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:164
&gt; +    auto&amp; globalObject = *m_frontendPage-&gt;mainFrame().script().globalObject(world);

In the old code, m_frontendPage can be nullptr.

&gt; Source/WebCore/inspector/WebInjectedScriptManager.cpp:91
&gt; +    {
&gt; +        Vector&lt;long&gt; idsToRemove;
&gt; +        for (auto&amp; entry : m_idToInjectedScript) {
&gt; +            auto* globalObject = entry.value.globalObject();
&gt; +            if (executionContext(globalObject) == document) {
&gt; +                m_scriptStateToId.remove(globalObject);
&gt; +                idsToRemove.append(entry.key);
&gt; +            }
&gt; +        }
&gt; +        for (auto&amp; id : idsToRemove)
&gt; +            m_idToInjectedScript.remove(id);
&gt;      }

How about using `HashMap::removeIf`?

&gt; Source/WebCore/inspector/WebInjectedScriptManager.cpp:103
&gt; +    // Now remove global objects that have no injected script.
&gt; +    {
&gt; +        Vector&lt;JSC::JSGlobalObject*&gt; globalObjectsToRemove;
&gt; +        for (auto&amp; entry : m_scriptStateToId) {
&gt; +            auto* globalObject = entry.key;
&gt; +            if (executionContext(globalObject) == document)
&gt; +                globalObjectsToRemove.append(globalObject);
&gt; +        }
&gt; +        for (auto&amp; globalObject : globalObjectsToRemove)
&gt; +            m_scriptStateToId.remove(globalObject);
&gt; +    }

How about using `HashMap::removeIf`?

&gt; Source/WebCore/inspector/agents/InspectorApplicationCacheAgent.cpp:117
&gt; +    m_inspectedPage.forEachFrame([&amp;] (Frame&amp; frame) {

Remove space between [&amp;] and (Frame&amp; frame).

&gt; Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp:297
&gt;  void InspectorTimelineAgent::startFromConsole(JSC::JSGlobalObject* exec, const String&amp; title)

Let&apos;s rename exec to `globalObject` or `lexicalGlobalObject`.

&gt; Source/WebCore/inspector/agents/page/PageRuntimeAgent.cpp:136
&gt; +    m_inspectedPage.forEachFrame([&amp;] (Frame&amp; frame) {

Remove space between [] part and () part in lambda.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825941</commentid>
    <comment_count>5</comment_count>
      <attachid>447702</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 02:12:21 -0800</bug_when>
    <thetext>Created attachment 447702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825944</commentid>
    <comment_count>6</comment_count>
      <attachid>447703</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 02:26:25 -0800</bug_when>
    <thetext>Created attachment 447703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826011</commentid>
    <comment_count>7</comment_count>
      <attachid>447718</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 08:28:50 -0800</bug_when>
    <thetext>Created attachment 447718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826065</commentid>
    <comment_count>8</comment_count>
      <attachid>447738</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 11:28:48 -0800</bug_when>
    <thetext>Created attachment 447738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826104</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 13:56:43 -0800</bug_when>
    <thetext>Committed r287327 (245477@trunk): &lt;https://commits.webkit.org/245477@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826105</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-21 13:57:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86783286&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447695</attachid>
            <date>2021-12-21 00:45:28 -0800</date>
            <delta_ts>2021-12-21 01:17:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234548-20211221004528.patch</filename>
            <type>text/plain</type>
            <size>78882</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Mjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJjOWJmNzhlZmU3ODY3
NzQ2NzRmZDZmNTgwODNjZjA1OGUzMGU3Yy4uNDk1Y2U1YWIyNGUyOTgyYWFjOWMxMjRmODgzNzU5
ZThlMmQzZmQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAyMS0xMi0yMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
aXMgYSByZW1uYW50IG9mIEphdmFTY3JpcHQgZW5naW5lIGFic3RyYWN0aW9uIHRoYXQgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNjcmlwdFN0YXRlLmgvY3BwIGlzIGZpbGUgbGVmdCBvdmVyIGZyb20gd2hlbiB3ZSBoYWQgYSBs
YXllciB0byBhYnN0cmFjdAorICAgICAgICBKYXZhU2NyaXB0IGJpbmRpbmcgYW5kIHVzYWdlIGlu
IFdlYkNvcmUgc28gaXQgY291bGQgd29yayB3aXRoIGJvdGggSmF2YVNjcmlwdENvcmUKKyAgICAg
ICAgYW5kIEdvb2dsZSdzIFY4IGVuZ2luZS4gV2UgaGF2ZW4ndCBuZWVkZWQgdGhhdCBmb3IgeWVh
cnMsIGFuZCBzdHJpcHBpbmcgYXdheSBzb21lCisgICAgICAgIG9mIHRoZSBsYXllcnMgbWlnaHQg
aGVscCB1cyBtYWtlIGNvZGUgbW9yZSByZWFkYWJsZSBhbmQgcGVyaGFwcyBldmVuIG5vdGljZSB3
YXlzCisgICAgICAgIHRvIG1ha2UgaXQgbW9yZSBlZmZpY2llbnQuIEZvciBub3csIHRoaXMgcGF0
Y2ggcmVtb3ZlcyB0aGUgZnVuY3Rpb25zIGZyb20KKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
YW5kIG1vdmVzIHRoZW0gdG8gbW9yZSBzdWl0YWJsZSBwbGFjZXMsIHNpbXBsaWZ5aW5nIGluIHRo
ZSBwcm9jZXNzLgorCisgICAgICAgIEFsc28gYmVnaW4gdG8ganVzdCBjYWxsIGdsb2JhbCBvYmpl
Y3RzICJnbG9iYWwgb2JqZWN0IiwgYW5kIG5vdCAic2NyaXB0IHN0YXRlIi4KKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9m
IFNjcmlwdFN0YXRlLmguCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwOiBEaXR0by4KKworICAgICAgICAqIFNvdXJjZXMudHh0OiBSZW1vdmVkIFNjcmlwdFN0
YXRlLmNwcC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJl
bW92ZWQgU2NyaXB0U3RhdGUuaCBhbmQgLmNwcC4KKyAgICAgICAgQWxzbyBhbGxvd2VkIHRoZSBz
Y3JpcHQgdG8gc29ydCB0aGUgZmlsZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1haW5Xb3JsZEdsb2JhbE9iamVjdCk6
IFJlbmFtZWQgdGhlIG1haW5Xb3JsZEV4ZWNTdGF0ZSBmdW5jdGlvbiBhbmQKKyAgICAgICAgbW92
ZWQgaXQgaGVyZSBmcm9tIFNjcmlwdFN0YXRlLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5oOiBUd2Vha2VkIGZvcm1hdHRpbmcgb2YgdGhlIGhlYWRlci4gQWRk
ZWQgdGhlCisgICAgICAgIG1haW5Xb3JsZEdsb2JhbE9iamVjdCBmdW5jdGlvbi4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlw
dFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRD
b250ZXh0KTogQ2FsbCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0aW9uQ29udGV4dCk6IFJlbmFtZWQgdGhlIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9t
RXhlY1N0YXRlCisgICAgICAgIGZ1bmN0aW9uIGFuZCBtb3ZlZCBpdCBoZXJlIGZyb20gU2NyaXB0
U3RhdGUuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmg6IEFkZGVkIHRo
ZSBleGVjdXRpb25Db250ZXh0IGZ1bmN0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmgsIGFkZGVkIGlu
Y2x1ZGUKKyAgICAgICAgb2YgSlNET01XaW5kb3dDdXN0b20uaC4KKyAgICAgICAgKFdlYkNvcmU6
OndpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dDYXNlKTogQ2FsbCBt
YWluV29ybGRHbG9iYWxPYmplY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uaDogQ2hhbmdlZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwKKyAg
ICAgICAgZnVuY3Rpb25zIHRvIHRha2UgYSBOb2RlJiBpbnN0ZWFkIG9mIGEgbmV2ZXItbnVsbCBO
b2RlKi4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaDogVHdlYWtlZCBm
b3JtYXR0aW5nIGEgYml0LgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmg6IFJlbW92ZWQu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOiBSZW1v
dmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OndyYXBDcnlw
dG9LZXkpOiBVcGRhdGUgZm9yIG5hbWUgY2hhbmdlIG9mIGV4ZWN1dGlvbkNvbnRleHQgZnVuY3Rp
b24uCisgICAgICAgIChXZWJDb3JlOjp1bndyYXBDcnlwdG9LZXkpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkRmlsZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRPZmZzY3JlZW5DYW52YXMpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkUlRDRGF0YUNoYW5uZWwp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkSW1hZ2VC
aXRtYXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFk
VGVybWluYWwpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlw
dEFzc2VydGlvbik6CisgICAgICAgIFBhc3MgcmVmZXJlbmNlIHRvIHdpbGxDcmVhdGVQb3NzaWJs
eU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6
OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaCwgYWRkZWQgaW5j
bHVkZQorICAgICAgICBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UpOiBVc2UgbWFpbldvcmxkR2xvYmFsT2JqZWN0LgorCisg
ICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBSZW1vdmVkIGluY2x1ZGUg
b2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6Omdsb2JhbE9iamVjdCk6IFVzZSB0aGUKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciBkaXJl
Y3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggaGVscGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOiBSZW1vdmVkIGluY2x1
ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHA6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTZWxmVG9HbG9iYWxPYmpl
Y3RJbldvcmxkKToKKyAgICAgICAgVXNlIHRoZSBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KTogRGl0dG8uCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKTog
RG8KKyAgICAgICAgdGhlIG51bGwgY2hlY2sgaGVyZSBpbnN0ZWFkIG9mIGluIGZyYW1lV2luZG93
RGlzY2FyZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKToK
KyAgICAgICAgUmV3b3JlZCBsb2dpYyB0byB1c2UgZXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9m
IGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNhbnZhc0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmgu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDogUmVt
b3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6Zm9jdXNOb2RlKTogVXNlIHN0ZDo6ZXhjaGFuZ2UgaGVyZSBpbiB0aGUKKyAg
ICAgICAgaWRpb21hdGljICJ0YWtlIGFuZCBudWxsIGEgdmFsdWUiIGNhc2UgaGVyZS4gVXNlIG1h
aW5Xb3JsZEdsb2JhbE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOiBVc2UKKyAgICAgICAgU2NyaXB0Q29udHJv
bGxlciBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggYSBoZWxwZXIgZnVuY3Rpb24uCisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOiBVc2UgbWFpbldv
cmxkR2xvYmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0
ZS5oIGFuZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEpOiBVc2UgbWFpbldv
cmxkR2xvYmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YKKyAgICAgICAgU2NyaXB0U3RhdGUu
aCBhbmQgYWRkZWQgaW5jbHVkZSBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZXNvbHZlV2ViU29ja2V0KTogVXNlIG1haW5X
b3JsZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAg
ICAgICAoV2ViQ29yZTo6ZnJhbWUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBmcm9t
IGEgZ2xvYmFsIG9iamVjdCB0byBhIGZyYW1lLgorICAgICAgICBDYWxscyBleGVjdXRpb25Db250
ZXh0IGFuZCBnZXRzIHRvIHRoZSBmcmFtZSBmcm9tIHRoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6IFVzZSBmcmFtZS4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Q
cm9iZSk6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdl
bnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOiBUYWtlIGEgcmVmZXJl
bmNlIGluc3RlYWQgb2YKKyAgICAgICAgYSBwb2ludGVyIHRoYXQgbXVzdCBub3QgYmUgbnVsbC4g
VXNlIGV4ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBkb21XaW5kb3dGcm9tRXhl
Y1N0YXRlLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaDog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4gUmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBXVEZf
TUFLRV9OT05DT1BZQUJMRSAoYmFzZSBjbGFzcyBpcyBhbHJlYWR5IG5vdCBjb3B5YWJsZSkgYW5k
CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIChjbGFzcyBpcyBhbiBhYnN0cmFjdCBi
YXNlIGNsYXNzIGFuZCBuZXZlciBhbGxvY2F0ZWQpLgorICAgICAgICBNYWRlIGNvbnN0cnVjdG9y
IHByb3RlY3RlZC4gQ2hhbmdlZCB0aGUgRE9NV2luZG93IGFyZ3VtZW50IHRvCisgICAgICAgIGZy
YW1lV2luZG93RGlzY2FyZGVkIHRvIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyIHRo
YXQgbXVzdCBub3QgYmUgbnVsbC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlQXVkaXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0
ZS5oIGFuZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5X
b3JsZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RGVidWdnZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0
ZS5oIGFuZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChX
ZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1h
aW5Xb3JsZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlTmV0d29ya0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6IFJl
bW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFuZCBhZGRlZCBpbmNsdWRl
IG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFn
ZW50OjpmcmFtZU5hdmlnYXRlZCk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisgICAgICAg
IChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNv
bnRleHRDcmVhdGlvbik6IERpdHRvLgorICAgICAgICBBbHNvIHVzZSBQYWdlOjpmb3JFYWNoRnJh
bWUgaW5zdGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAgICAg
aW5zdGVhZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVk
ZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2Vu
dDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkK
KyAgICAgICAgaW5zdGVhZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDogUmVtb3Zl
ZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50
aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6IFVzZSBTY3JpcHRDb250cm9sbGVyIGRp
cmVjdGx5CisgICAgICAgIGluc3RlYWQgb2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKwog
MjAyMS0xMi0yMCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAog
ICAgICAgICBbV2luXSBNU1ZDIHJlcG9ydHMgIkRvd25sb2FkQnVuZGxlV2luLmNwcCg4Nyk6IGVy
cm9yIEMyMzYyOiBpbml0aWFsaXphdGlvbiBvZiAnbWFnaWMnIGlzIHNraXBwZWQgYnkgJ2dvdG8g
ZXhpdCciIHdpdGggL3N0ZDpjKysyMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IGVkZGJlOGJlMWUzMTEwODcxYzM3NzEx
ODRhMmY5NWJhN2ZiODAyZmQuLjE0MzUxNDBhNWNiNGExYTFkNDA3YTJkYjI5ZDE1YmRmMmQ1MmMw
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwSW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDY3ZDNiYTRjNzk4MzExMTI3OTMxZTI5
NTI4NDg0ZTY2ZWNkMzRjZmYuLjU4NDM2MTU2NTAwMTY3ODc3OGRiNzUwMTk1ZjZlYjBmMmQxYzFi
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2Uu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiVHJhbnNhY3Rpb25PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDk1MzBmNjI0YjAxMGY3
NmE0ODMyNGJmZGQ5OWMyZDI2ODhhNzc4My4uYmQ1YTc0NzljYjM5ZTQ2Y2M5MTA0MDBmNGVlMzg0
OTMyNGM3NTMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTYzMiw3ICs2MzIsNiBAQCBiaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEu
Y3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAogYmluZGluZ3MvanMvU2NyaXB0
TW9kdWxlTG9hZGVyLmNwcAotYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCiBiaW5kaW5ncy9q
cy9TY3JpcHRXcmFwcGFibGUuY3BwCiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCiBiaW5kaW5ncy9qcy9TdHJ1Y3R1cmVkQ2xvbmUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmM0ZThkZTA1MTVhM2U3
ZGUwODNmZDU3NjdkMDg5ZmE3YzI3OTQ5NC4uM2QxMWU0NzM1NmZhZjA0YTYwNzUyYmJiZmEyNTUz
MGFlZGFhZjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTIwMCw3ICsxMjAwLDYgQEAKIAkJNDFDMTRCQzkyNkRGNzlENzAw
Njg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMxNEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1JlZ2lz
dGVyRXJyb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MUMzQjhBMTI2NDlCMUUwMDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQxQzNCOEEyMjY0OUIxRTUwMDRFRDRERSAvKiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxQzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIw
MEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQ0I4NDAxMjVDQUI3QjMwMDEwRTJCMSAvKiBS
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDQjg0MDAyNUNBQjdCMDAwMTBFMkIxIC8qIFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDQjg0MDIyNUNBQjgxRTAwMTBFMkIxIC8qIFJlYWx0
aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNERDgzM0ExRTQzMjRCQjAwNjIxRTkyIC8qIFJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzgwRjRCNUM3
MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg1MjMsNyArODUyMiw2IEBACiAJCTQxMjA5RTk0MjE2RUE2
OUEwMEE3M0ExMiAvKiBSVENDZXJ0aWZpY2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSVENDZXJ0aWZpY2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxMjA5RTk1MjE2RUMzNEUwMEE3M0ExMiAvKiBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdl
bmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENDZXJ0
aWZpY2F0ZUdlbmVyYXRvci5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRl
R2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk2MjE2RUMz
NEYwMEE3M0ExMiAvKiBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRv
ci5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUg
LyogU2NyaXB0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFG
NTg2MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTI5Qzk4MTFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5r
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVh
ZGFibGVTdHJlYW1TaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWRhYmxlU3RyZWFtU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
ODUxLDcgKzg4NDksNiBAQAogCQk0MUMzQjg5RTI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MUMzQjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFDM0I4QTAyNjQ5QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUM3
NjBCMDBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFD
N0UxMDYxRTZBNTQzNjAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA4MUU2QUEzN0Mw
MDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTkyNTcsMTIgKzE5MjU0LDEyIEBACiAJCTExQTFFNkZCMjZG
QkI2Q0UwMDQzNUQzNiAvKiBkaXNwbGF5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKLQkJCQk2RjYwRTVBOTI3NzEwRjM5MDA1QzE1QjkgLyogSW5saW5lRGlzcGxh
eUxpbmVCdWlsZGVyLmggKi8sCi0JCQkJNkY2MEU1QTcyNzcxMEYyRjAwNUMxNUI5IC8qIElubGlu
ZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgKi8sCiAJCQkJNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVB
IC8qIElubGluZURpc3BsYXlCb3guaCAqLywKIAkJCQkxMTUxM0QwMDI2RDk4MUREMDA0RDNGQUEg
LyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCAqLywKIAkJCQkxMTUxM0QwMjI2RDk4
MUU3MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggKi8sCiAJCQkJNkY5
MTQyMEYyNTE1MjEzNzAwNEU0RkVBIC8qIElubGluZURpc3BsYXlMaW5lLmggKi8sCisJCQkJNkY2
MEU1QTcyNzcxMEYyRjAwNUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgKi8s
CisJCQkJNkY2MEU1QTkyNzcxMEYzOTAwNUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRl
ci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBkaXNwbGF5OwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTI5MjA3LDggKzI5MjA0LDYgQEAKIAkJCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLywKIAkJCQlFMzg4Mzg5NTFCQUQxNDVGMDBE
NjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8sCiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAw
QTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLywKLQkJCQk0MTI3RDUzNjBGOEFBQjFEMDBF
NDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovLAotCQkJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1
RiAvKiBTY3JpcHRTdGF0ZS5oICovLAogCQkJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBT
Y3JpcHRXcmFwcGFibGUuaCAqLywKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2Ny
aXB0V3JhcHBhYmxlSW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAv
KiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovLApAQCAtMzQ4MzQsNiArMzQ4MjksNyBAQAog
CQkJCTZGQzNGOTQ3MjUxNjc1NjcwMEE0OUJFQSAvKiBJbmxpbmVEaXNwbGF5Qm94LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxMTUxM0QwMzI2RDk4MUU4MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjkxNDIxMTI1MTUyMTM4MDA0RTRG
RUEgLyogSW5saW5lRGlzcGxheUxpbmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGNjBFNUFBMjc3
MTBGMzkwMDVDMTVCOSAvKiBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTZGN0NBM0NBMjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDdDNEQ1N0QyNjUwOEJDQjAwQzdBQjFGIC8qIElubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZFNjM2RTgyNjQ3OTYy
OTAwRjA5NTFFIC8qIElubGluZUZvcm1hdHRpbmdRdWlya3MuaCBpbiBIZWFkZXJzICovLApAQCAt
MzY5MDgsNyArMzY5MDQsNiBAQAogCQkJCUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3Jp
cHRQcm9jZXNzb3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4
MjAxNkUgLyogU2NyaXB0UnVubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIy
MjM5MDBBNjU4RjIgLyogU2NyaXB0U291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFD
NzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QUUzNEYxMkVBMDk2QTAwRUIzQUU2IC8qIFNj
cm9sbGFibGVBcmVhLmggaW4gSGVhZGVycyAqLywKQEAgLTM3NjY2LDcgKzM3NjYxLDYgQEAKIAkJ
CQlCRUYyOUVFQzE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEMzM2RjY0MTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkY2MEU1QUEyNzcx
MEYzOTAwNUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0QxRjlCMTQyNzAyMzVGNzAwNjE3RUI2IC8qIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDhCNUE0MzE4MEQxNDlBMDA4QjhFNjUgLyogVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MEU4
MUQxMUJGMjc2NTYwMDFGREE0OCAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAppbmRleCA1NDc2MjdhOWY4OWM3NTY0Y2ZiNWY4NzBkMjVjODZmNTIzMGRmNTVk
Li4xMjVlYzAwNzMyMzVjMGZjYmE0OTc0MWU0MWZiZmE0ZDNlMjA2OWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MzcsNCAr
NjM3LDEyIEBAIHZvaWQgSlNET01XaW5kb3c6OnNldE9wZW5EYXRhYmFzZShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6CiAgICAgY3JlYXRlRGF0YVByb3BlcnR5
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9i
YWxPYmplY3Qudm0oKSwgIm9wZW5EYXRhYmFzZSIpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQog
CitKU0RPTVdpbmRvdyYgbWFpbldvcmxkR2xvYmFsT2JqZWN0KEZyYW1lJiBmcmFtZSkKK3sKKyAg
ICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoZSByZXN1bHQgb2YganNXaW5kb3dQcm94eSgp
IGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCBv
ZiB3aW5kb3coKSBpcyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRo
ZSByZXN1bHQgb2Ygd2luZG93KCkgYSBKU0RPTVdpbmRvdz8KKyAgICByZXR1cm4gKmpzQ2FzdDxK
U0RPTVdpbmRvdyo+KGZyYW1lLndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eShtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSktPndpbmRvdygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgKaW5kZXgg
N2NmYTdhNmJiM2E3YzRhMGFkZjZjYWZhNzM2OWI3MmJiNTcwN2E3Ny4uMmIxMmJjY2E0ZTJlNTBj
MjU0MDczNjExOTcwMDRmM2Q3ZDNmODg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC0yNSw2ICsyNSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBYnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIEFic3RyYWN0RnJhbWU7CiAKK0pTRE9NV2lu
ZG93KiBhc0pTRE9NV2luZG93KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKK2NvbnN0IEpTRE9NV2lu
ZG93KiBhc0pTRE9NV2luZG93KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKworZW51bSBj
bGFzcyBET01XaW5kb3dUeXBlIDogYm9vbCB7IExvY2FsLCBSZW1vdGUgfTsKK3RlbXBsYXRlPERP
TVdpbmRvd1R5cGU+IGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVk
QWNjZXNzKEpTRE9NR2xvYmFsT2JqZWN0KiwgQWJzdHJhY3RET01XaW5kb3cmLCBKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgY29uc3Qg
U3RyaW5nJik7CisKK2VudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PYmplY3QgOiBib29sIHsgV2luZG93
LCBMb2NhdGlvbiB9OwordGVtcGxhdGU8Q3Jvc3NPcmlnaW5PYmplY3Q+IHZvaWQgYWRkQ3Jvc3NP
cmlnaW5Pd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlByb3BlcnR5
TmFtZUFycmF5Jik7CisKK2Jvb2wgaGFuZGxlQ29tbW9uQ3Jvc3NPcmlnaW5Qcm9wZXJ0aWVzKEpT
Qzo6SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTQzo6Vk0mLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKKworSlNET01XaW5kb3cmIG1haW5Xb3JsZEdsb2JhbE9iamVjdChG
cmFtZSYpOworSlNET01XaW5kb3cqIG1haW5Xb3JsZEdsb2JhbE9iamVjdChGcmFtZSopOworCiBp
bmxpbmUgSlNET01XaW5kb3cqIGFzSlNET01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2Jh
bE9iamVjdCk7CkBAIC0zNSwxNSArNDksOSBAQCBpbmxpbmUgY29uc3QgSlNET01XaW5kb3cqIGFz
SlNET01XaW5kb3coY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CiB9
CiAKLWVudW0gY2xhc3MgRE9NV2luZG93VHlwZSB7IExvY2FsLCBSZW1vdGUgfTsKLQotdGVtcGxh
dGUgPERPTVdpbmRvd1R5cGUgd2luZG93VHlwZT4KLWJvb2wganNET01XaW5kb3dHZXRPd25Qcm9w
ZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKEpTRE9NR2xvYmFsT2JqZWN0KiwgQWJzdHJhY3RET01X
aW5kb3cmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90JiwgY29uc3QgU3RyaW5nJik7Ci0KLWVudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PYmpl
Y3QgeyBXaW5kb3csIExvY2F0aW9uIH07Ci0KLXRlbXBsYXRlIDxDcm9zc09yaWdpbk9iamVjdCBv
YmplY3RUeXBlPgotdm9pZCBhZGRDcm9zc09yaWdpbk93blByb3BlcnR5TmFtZXMoSlNDOjpKU0ds
b2JhbE9iamVjdCYsIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmKTsKLWJvb2wgaGFuZGxlQ29tbW9u
Q3Jvc3NPcmlnaW5Qcm9wZXJ0aWVzKEpTQzo6SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTQzo6Vk0m
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKK2lubGluZSBKU0RPTVdp
bmRvdyogbWFpbldvcmxkR2xvYmFsT2JqZWN0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4g
ZnJhbWUgPyAmbWFpbldvcmxkR2xvYmFsT2JqZWN0KCpmcmFtZSkgOiBudWxscHRyOworfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V4ZWNTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNT
dGF0ZS5jcHAKaW5kZXggYmVjYTU2M2Y1NzliMTQ2ZDczMjM4YWQ4NjgxZWJlMGYyNDNmNTdiYi4u
MGRmMDYzNzExODJkM2YyZGY5ZDlmMDExYTExNzZhZjFhNjg5Njg1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcApAQCAtMjksMTQgKzI5LDEzIEBACiAjaW5j
bHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdm9pZCBKU0V4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQobGV4
aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAg
ICAgY29udGV4dC0+ZXZlbnRMb29wKCkucGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKQEAg
LTUzLDQgKzUyLDExIEBAIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFk
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplCiAgICAgcmV0dXJuIEpTRXhl
Y1N0YXRlOjpldmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1ZSwg
cmV0dXJuZWRFeGNlcHRpb24pOwogfQogCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRp
b25Db250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAo
IWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01HbG9iYWxPYmplY3Q+KGdsb2JhbE9iamVjdC0+
dm0oKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4
ZWNTdGF0ZS5oCmluZGV4IDI3Zjc2NTBkYTZhOGVlNDRmMzVmOTQ3ZDQ5OGVhMzgxYzZjOTQzMWYu
LmUyNjViMTMzOGFjODc0OTAzZTFmN2ZjMjM2ZWQ1NzNkNTVmZjMxZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsMjUgKzQ3LDI1IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgSlNDOjpKU0dsb2JhbE9iamVjdCogY3VycmVudFN0YXRlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCkuY3VycmVudFN0YXRlKCk7Ci0gICAgfTsK
KyAgICB9CiAgICAgCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjYWxsKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwg
Y29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNv
bnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5l
ZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpTRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBmdW5jdGlvbk9iamVjdCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywgcmV0dXJu
ZWRFeGNlcHRpb24pOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBl
dmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBK
U0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8
SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpTRXhl
Y1N0YXRlIGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJu
IEpTQzo6ZXZhbHVhdGUobGV4aWNhbEdsb2JhbE9iamVjdCwgc291cmNlLCB0aGlzVmFsdWUsIHJl
dHVybmVkRXhjZXB0aW9uKTsKLSAgICB9OworICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgY29u
c3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUgPSBKU0M6
OkpTVmFsdWUoKSkKICAgICB7CiAgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiB1bnVz
ZWQ7CiAgICAgICAgIHJldHVybiBldmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzb3VyY2Us
IHRoaXNWYWx1ZSwgdW51c2VkKTsKLSAgICB9OworICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgcHJvZmlsZWRDYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2Jq
ZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1
ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJl
dHVybmVkRXhjZXB0aW9uKQogICAgIHsKQEAgLTE4NSw0ICsxODUsNiBAQCBwcml2YXRlOgogSlND
OjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpTQzo6Q2FsbERhdGEm
LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpT
Qzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBl
eGVjdXRpb25Db250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5k
ZXggMWZjYzI0NGQ4ZDk1MGUxNzgxZTJlMGJkYTZhNjRlYzdkN2EyOWE3MS4uZDQxZjhlZWE1ZjM0
MTc4MGI0MjNmNmI3ZTZlNzg2M2IxOWFiOWNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSlNDREFU
QVNlY3Rpb24uaCIKICNpbmNsdWRlICJKU0NvbW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJKU0RvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJKU0RvY3Vt
ZW50VHlwZS5oIgpAQCAtNjEsMTcgKzYyLDE1IEBACiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAjaW5jbHVkZSAiR0NSZWFjaGFibGVSZWYuaCIKICNpbmNsdWRlICJTdHlsZVNo
ZWV0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwogCit1c2luZyBuYW1l
c3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGlubGluZSBi
b29sIGlzUmVhY2hhYmxlRnJvbURPTShOb2RlKiBub2RlLCBBYnN0cmFjdFNsb3RWaXNpdG9yJiB2
aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQpAQCAtMjEyLDE0ICsyMTEsMTUgQEAgSlNDOjpK
U09iamVjdCogZ2V0T3V0T2ZMaW5lQ2FjaGVkV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBOb2RlJgogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPndvcmxkKCkud3JhcHBl
cnMoKS5nZXQoJm5vZGUpOwogfQogCi12b2lkIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJl
ZUJ5UmVtb3ZhbFNsb3dDYXNlKE5vZGUqIHJvb3QpCit2b2lkIHdpbGxDcmVhdGVQb3NzaWJseU9y
cGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dDYXNlKE5vZGUmIHJvb3QpCiB7Ci0gICAgSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IG1haW5Xb3JsZEV4ZWNTdGF0ZShyb290
LT5kb2N1bWVudCgpLmZyYW1lKCkpOwotICAgIGlmICghbGV4aWNhbEdsb2JhbE9iamVjdCkKKyAg
ICBhdXRvIGZyYW1lID0gcm9vdC5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sobGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCAqcm9vdCk7CisgICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gbWFpbldvcmxkR2xvYmFsT2JqZWN0KCpmcmFtZSk7CisgICAgSlNMb2NrSG9s
ZGVyIGxvY2soJmdsb2JhbE9iamVjdCk7CisgICAgdG9KUygmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFs
T2JqZWN0LCByb290KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAppbmRleCBkNzFiMjVjMGQ4N2FhZTU2MThkZDI3
NzI0MGM5Y2RjNTBhMDhjMzFkLi43NTkyZWQ3NGJjZTk3ZWEwY2EzYTQ4MmE5NDkxOGQ3MDE3ZGI5
Y2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaApAQCAtNjks
MTYgKzY5LDExIEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iCiAvLyByb290LiBJbiB0aGUgSmF2
YVNjcmlwdCBET00sIGEgbm9kZSB0cmVlIHN1cnZpdmVzIGFzIGxvbmcgYXMgdGhlcmUgaXMgYQog
Ly8gcmVmZXJlbmNlIHRvIGFueSBub2RlIGluIHRoZSB0cmVlLiBUbyBtb2RlbCB0aGUgSmF2YVNj
cmlwdCBET00gb24gdG9wIG9mCiAvLyB0aGUgQysrIERPTSwgd2UgZW5zdXJlIHRoYXQgdGhlIHJv
b3Qgb2YgZXZlcnkgdHJlZSBoYXMgYSBKYXZhU2NyaXB0IHdyYXBwZXIuCi12b2lkIHdpbGxDcmVh
dGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dDYXNlKE5vZGUqIHJvb3QpOwotaW5s
aW5lIHZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKE5vZGUqIHJv
b3QpCit2b2lkIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dDYXNl
KE5vZGUmIHJvb3QpOworaW5saW5lIHZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVl
QnlSZW1vdmFsKE5vZGUmIHJvb3QpCiB7Ci0gICAgaWYgKHJvb3QtPndyYXBwZXIoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKCFyb290LT5oYXNDaGlsZE5vZGVzKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dD
YXNlKHJvb3QpOworICAgIGlmICghcm9vdC53cmFwcGVyKCkgJiYgcm9vdC5oYXNDaGlsZE5vZGVz
KCkpCisgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dD
YXNlKHJvb3QpOwogfQogCiBpbmxpbmUgdm9pZCogcm9vdChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCmluZGV4IDExM2RjY2I4NDZiMGVmMWM2
M2QzMWQxMDQyOWM3Yjk0ZWMxOTRiYzAuLjkxOGI2NjE0YWIwNDM0M2E5NjQ5NzBiZGY3NGY0NDU5
ZTk3ODNiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgK
QEAgLTQ4LDE3ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4K
LSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0g
ICAgewotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKLSAgICB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+IHN0YXRpYyBKU0M6
Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkgeyByZXR1cm4gc3Vic3BhY2VG
b3JJbXBsKHZtKTsgfQogCiAgICAgc3RhdGljIEpTV2luZG93UHJveHkmIGNyZWF0ZShKU0M6OlZN
JiwgQWJzdHJhY3RET01XaW5kb3cmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIERFQ0xBUkVf
SU5GTzsKIAogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB3aW5kb3coKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHRhcmdldCgpKTsgfQorCiAgICAgdm9pZCBz
ZXRXaW5kb3coSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgdm9pZCBzZXRXaW5k
b3coQWJzdHJhY3RET01XaW5kb3cmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2U0OGVkYWE3OGIx
YWM2MmRmYTg3YjU1MWQyYWVmOWI4YzRmYjAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRl
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgot
I2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCi0jaW5jbHVk
ZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3Bl
LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIK
LSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAi
V29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1l
Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QpCi17Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbGV4aWNhbEdsb2JhbE9iamVjdDsKLSAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01XaW5kb3dC
YXNlPih2bSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmSlNDOjpqc0Nh
c3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+d3JhcHBlZCgpOwotfQotCi1GcmFt
ZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QpCi17Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQt
PmZyYW1lKCkgOiBudWxscHRyOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0KQotewotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGxleGljYWxHbG9iYWxPYmplY3Q7Ci0gICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpTRE9NR2xvYmFsT2JqZWN0Pih2
bSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LX0KLQotSlNDOjpKU0dsb2JhbE9iamVjdCogbWFpbldvcmxkRXhlY1N0YXRlKEZyYW1lKiBmcmFt
ZSkKLXsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1
cm4gZnJhbWUtPndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSktPndpbmRvdygpOwotfQotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50
KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0
ZVNjcmlwdCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBmcmFtZS0+c2Ny
aXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKLX0KLQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEZyYW1lKiBmcmFtZSkKLXsKLSAgICBy
ZXR1cm4gZnJhbWUgPyBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKSA6IG51bGxw
dHI7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCi17Ci0gICAgaWYgKGF1
dG8qIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5zY3JpcHQo
KSkKLSAgICAgICAgcmV0dXJuIHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbFNjb3BlV3JhcHBlcigp
OwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U3RhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE1MDYzMDk5NjBi
OTI4MWVkMTAwMjE5Mzc1M2ZjOTI1YWRjNDA4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykg
MjAwOCwgMjAxMSBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBKU0dsb2JhbE9iamVj
dDsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBET01XaW5kb3c7Ci1jbGFzcyBE
T01XcmFwcGVyV29ybGQ7Ci1jbGFzcyBGcmFtZTsKLWNsYXNzIE5vZGU7Ci1jbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7Ci0KLURP
TVdpbmRvdyogZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci1G
cmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKLQotSlNDOjpKU0dsb2JhbE9iamVjdCogbWFpbldvcmxkRXhlY1N0
YXRlKEZyYW1lKik7Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFw
cGVyV29ybGQmLCBOb2RlKik7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiwgRnJhbWUqKTsKLUpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAwYmFmYTc5ODMwOWMxNjUwYzY0MDJiZDA2ZWVh
NzMwMTE5NmUzZTMzLi5kYmFjZGE1ZTQ5YmZhOTI4ZDk2OTBiODRhM2ZhNjA3MzdkMzE5NGE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKQEAgLTU2LDE1ICs1Niw4IEBACiAjaW5jbHVkZSAiSlNSVENDZXJ0aWZpY2F0ZS5o
IgogI2luY2x1ZGUgIkpTUlRDRGF0YUNoYW5uZWwuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNlbmRp
ZgotI2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+Ci0j
ZW5kaWYKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQmlnSW50T2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQm9v
bGVhbk9iamVjdC5oPgpAQCAtMTAxLDYgKzk0LDE0IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCisjaWYgVVNFKENH
KQorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24u
aD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICNp
bmNsdWRlICJKU09mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5o
IgpAQCAtMTEzLDYgKzExNCw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElG
SUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CkBAIC01NTYsMTggKzU1OCwxNCBAQCBwcm90ZWN0
ZWQ6CiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiBzdGF0aWMgYm9vbCB3cmFwQ3J5cHRvS2V5KEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KQogewotICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+d3JhcENyeXB0b0tleShrZXksIHdyYXBwZWRLZXkpOworICAgIGF1dG8g
Y29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIGNvbnRleHQgJiYgY29udGV4dC0+d3JhcENyeXB0b0tleShrZXksIHdyYXBwZWRLZXkpOwog
fQogCiBzdGF0aWMgYm9vbCB1bndyYXBDcnlwdG9LZXkoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXkpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxleGljYWxH
bG9iYWxPYmplY3QpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT51bndyYXBD
cnlwdG9LZXkod3JhcHBlZEtleSwga2V5KTsKKyAgICBhdXRvIGNvbnRleHQgPSBleGVjdXRpb25D
b250ZXh0KGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBjb250ZXh0ICYmIGNvbnRl
eHQtPnVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5LCBrZXkpOwogfQogI2VuZGlmCiAKQEAgLTk1
OCw3ICs5NTYsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvJiB2bSA9IG1fbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gbV9sZXhpY2FsR2xv
YmFsT2JqZWN0OwogICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5pbmhlcml0czxKU0RPTUdsb2Jh
bE9iamVjdD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9sZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLCAmYXJyYXlCdWZm
ZXIpOworICAgICAgICAgICAgcmV0dXJuIHRvSlMoZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLCAmYXJyYXlCdWZmZXIpOwogCiAgICAgICAgIGlm
IChhdXRvKiBidWZmZXIgPSBhcnJheUJ1ZmZlci5tX3dyYXBwZXIuZ2V0KCkpCiAgICAgICAgICAg
ICByZXR1cm4gYnVmZmVyOwpAQCAtMjU2Niw3ICsyNTY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
aWYgKCFtX2NhbkNyZWF0ZURPTU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgICAgIGZpbGUgPSBGaWxlOjpkZXNlcmlhbGl6ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJv
bUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBmaWxlUGF0aCwgVVJMKFVSTCgpLCB1
cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIG5hbWUtPnN0cmluZygpLCBvcHRpb25hbExh
c3RNb2RpZmllZCk7CisgICAgICAgIGZpbGUgPSBGaWxlOjpkZXNlcmlhbGl6ZShleGVjdXRpb25D
b250ZXh0KG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+
c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1v
ZGlmaWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0zMjk2LDcgKzMyOTQs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX29mZnNjcmVlbkNhbnZh
c2VzW2luZGV4XSkKLSAgICAgICAgICAgIG1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5kZXhdID0gT2Zm
c2NyZWVuQ2FudmFzOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRl
KG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIFdURk1vdmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZh
c2VzLmF0KGluZGV4KSkpOworICAgICAgICAgICAgbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0g
PSBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZSgqZXhlY3V0aW9uQ29udGV4dChtX2xleGljYWxHbG9i
YWxPYmplY3QpLCBXVEZNb3ZlKG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcy5hdChpbmRleCkp
KTsKIAogICAgICAgICBhdXRvIG9mZnNjcmVlbkNhbnZhcyA9IG1fb2Zmc2NyZWVuQ2FudmFzZXNb
aW5kZXhdLmdldCgpOwogICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShvZmZzY3JlZW5DYW52YXMp
OwpAQCAtMzM2MCw3ICszMzU4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBpZiAoIW1fcnRjRGF0
YUNoYW5uZWxzW2luZGV4XSkgewogICAgICAgICAgICAgYXV0byBkZXRhY2hlZENoYW5uZWwgPSBX
VEZNb3ZlKG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMuYXQoaW5kZXgpKTsKLSAgICAgICAgICAg
IG1fcnRjRGF0YUNoYW5uZWxzW2luZGV4XSA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGRl
dGFjaGVkQ2hhbm5lbC0+aWRlbnRpZmllciwgV1RGTW92ZShkZXRhY2hlZENoYW5uZWwtPmxhYmVs
KSwgV1RGTW92ZShkZXRhY2hlZENoYW5uZWwtPm9wdGlvbnMpLCBkZXRhY2hlZENoYW5uZWwtPnN0
YXRlKTsKKyAgICAgICAgICAgIG1fcnRjRGF0YUNoYW5uZWxzW2luZGV4XSA9IFJUQ0RhdGFDaGFu
bmVsOjpjcmVhdGUoKmV4ZWN1dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZGV0
YWNoZWRDaGFubmVsLT5pZGVudGlmaWVyLCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+bGFiZWwp
LCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+b3B0aW9ucyksIGRldGFjaGVkQ2hhbm5lbC0+c3Rh
dGUpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUobV9ydGNEYXRhQ2hh
bm5lbHNbaW5kZXhdLmdldCgpKTsKQEAgLTMzODUsNyArMzM4Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGF1dG8gaW1hZ2VEYXRhU2l6ZSA9IGxvZ2ljYWxTaXplOwogICAgICAgICBpbWFnZURhdGFT
aXplLnNjYWxlKHJlc29sdXRpb25TY2FsZSk7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFn
ZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCBjb2xvclNwYWNlLCByZXNvbHV0aW9uU2NhbGUpOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqZXhlY3V0aW9uQ29u
dGV4dChtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgY29sb3JTcGFjZSwgcmVzb2x1dGlvblNjYWxlKTsKICAgICAgICAgaWYg
KCFidWZmZXIpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlKCk7CkBAIC0zNjUxLDcgKzM2NDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIW1fY2FuQ3JlYXRlRE9NT2JqZWN0KQog
ICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRK
U1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIFVSTChVUkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5
cGUtPnN0cmluZygpLCBzaXplLCBibG9iRmlsZVBhdGhGb3JCbG9iVVJMKHVybC0+c3RyaW5nKCkp
KS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpkZXNlcmlhbGl6
ZShleGVjdXRpb25Db250ZXh0KG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIFVSTChVUkwoKSwgdXJs
LT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBzaXplLCBibG9iRmlsZVBhdGhGb3JCbG9iVVJM
KHVybC0+c3RyaW5nKCkpKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJpbmdU
YWc6IHsKICAgICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBjYWNoZWRTdHJpbmc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYzNhODZmNWM0ZDNjMzk5OTU0MTljYjBhNTE1
NDA4ODdhNjY2ZGRkYy4uNjQ5YjIxYTk5NWMyNzgwOGFmNjhhOTA1ZDFiOWQ1NTJlZjhiNGYxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIEFM
V0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbldp
dGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAgICAgICAgICAgICByZW1vdmVCZXR3ZWVuKG51bGxwdHIs
IGNoaWxkLT5uZXh0U2libGluZygpLCAqY2hpbGQpOwogICAgICAgICAgICAgYXV0byBzdWJ0cmVl
T2JzZXJ2YWJpbGl0eSA9IG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoKnRoaXMsICpjaGlsZCk7CiAg
ICAgICAgICAgICBpZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSAmJiBzdWJ0
cmVlT2JzZXJ2YWJpbGl0eSA9PSBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHk6Ok1heWJlT2Jz
ZXJ2YWJsZUJ5UmVmUHRyKQotICAgICAgICAgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhh
bmVkVHJlZUJ5UmVtb3ZhbChjaGlsZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgd2lsbENyZWF0
ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKCpjaGlsZCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6
cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYgY2hpbGRUb1JlbQogICAgIH0KIAog
ICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRyZWVPYnNl
cnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxl
QnlSZWZQdHIpCi0gICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3Zh
bCgmY2hpbGRUb1JlbW92ZSk7CisgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJl
ZUJ5UmVtb3ZhbChjaGlsZFRvUmVtb3ZlKTsKIAogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKCFkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzT3JwaGFuKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkYmE2MDBjYzcxNzk1N2Y5ODlhNjkzM2Jk
ZmQyMjFjNjg1NmE3ZGY1Li40MmRhY2QyZGQ1Y2UzZTVmNjIzMzNhMjE2MmNjMzc2NzQ2ZThmYjg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzMyw2ICsxMzMsNyBAQAogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludGVyc2VjdGlvbk9ic2Vy
dmVyLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
SlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIktleWZyYW1lRWZmZWN0LmgiCkBA
IC0yMTAsNyArMjExLDYgQEAKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRo
ZW1lLmgiCkBAIC04NzE2LDggKzg3MTYsOCBAQCB2b2lkIERvY3VtZW50OjpkaWRMb2dNZXNzYWdl
KGNvbnN0IFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xldmVsIGxldmVsLCBWZQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gbWVzc2FnZUxldmVsID0gbWVzc2FnZUxl
dmVsRnJvbVdURkxvZ0xldmVsKGxldmVsKTsKLSAgICAgICAgYXV0byBtZXNzYWdlID0gbWFrZVVu
aXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29ybGRFeGVj
U3RhdGUod2Vha1RoaXMtPmZyYW1lKCkpKTsKLQorICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3Qg
PSBtYWluV29ybGRHbG9iYWxPYmplY3Qod2Vha1RoaXMtPmZyYW1lKCkpOworICAgICAgICBhdXRv
IG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdl
cyksIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHdlYWtUaGlzLT5hZGRDb25zb2xlTWVzc2FnZShX
VEZNb3ZlKG1lc3NhZ2UpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA5NTQ0Njc5NDM3ZjhlMWUwMTQ3M2NiNmE3MGNk
NWQwNzJmYzcxYzM0Li5kMjk1YjI1NmVmNzkyYjI2YmM5MTdiYjFhNWM0ODQ3YTM0ZTg3ZTkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC01
Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKLSNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuaCIKQEAgLTU0MywxMSArNTQyLDE3IEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogSlNDOjpKU0dsb2JhbE9iamVjdCog
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Z2xvYmFsT2JqZWN0KCkKIHsKLSAgICBpZiAoaXM8RG9j
dW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Omdsb2JhbE9iamVjdChtYWlu
VGhyZWFkTm9ybWFsV29ybGQoKSwgZG93bmNhc3Q8RG9jdW1lbnQ+KCp0aGlzKS5mcmFtZSgpKTsK
KyAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkgeworICAgICAgICAvLyBGSVhNRTogV2hhdCBn
dWFyYW50ZWVzIHRoYXQgZnJhbWUgaXMgbm9uLW51bGw/CisgICAgICAgIC8vIEZJWE1FOiBXaGF0
IGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxPYmplY3Qgd2lsbCBub3QgcmV0dXJuIG51bGw/CisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLmZyYW1lKCktPnNjcmlwdCgpLmds
b2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgfQogCi0gICAgaWYgKGlz
PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAgIHJldHVybiBXZWJD
b3JlOjpnbG9iYWxPYmplY3QoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0
aGlzKSk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpIHsK
KyAgICAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGF0IHNjcmlwdCgpIGlzIG5vbi1u
dWxsPworICAgICAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoYXQgZ2xvYmFsU2NvcGVX
cmFwcGVyKCkgd2lsbCBub3QgcmV0dXJuIG51bGw/CisgICAgICAgIHJldHVybiBkb3duY2FzdDxX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdy
YXBwZXIoKTsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggYjQzOTdiNDZhZDc3ZWE4OTEwYTFm
MjY3NTRjZjNiMTdmMWY5ZGIzMC4uMWFiOTg1Mzc5OTNlYmU2NDA3NmM3MjVlZWE1ZWVkMjZiMWUx
M2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnJhbWVUcmFjZXJzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNQcm9taXNlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcAppbmRleCA5ZGRmY2JiZjhiYjQ0OTdhYzcyZWI2OWIwYzA0NDczNGJlYjJhMDdi
Li5kMWY5MjdkMWM1MTNjYWJlZWYzMWY3M2JkZjQ5ZjMwN2Y3ODZmYTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggOGFhZGFkMWZi
YWVlMzg3ZTg5NzBhNjVmMWYyOTdlZjllZDJhZjk4My4uNWY2MzFkZjU5NzYzODIxZWVlZDhkNTNl
NzFkNTlhMjVhZjEwZDFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVi
b2FyZC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJTeXN0ZW1Tb3VuZE1hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUlu
ZGljYXRvci5oIgpAQCAtMTYwLDE1ICsxNTksMTUgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6OmRpc2Nvbm5lY3RDbGllbnQoKQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRk
U2VsZlRvR2xvYmFsT2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAg
IGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqZ2xvYmFsT2JqZWN0KHdvcmxkLCBtX2Zyb250
ZW5kUGFnZSA/ICZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKTsKLSAgICBh
dXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKKyAgICAvLyBGSVhNRTogV2hhdCBn
dWFyYW50ZWVzIG1fZnJvbnRlbmRQYWdlIGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0
IGd1YXJhbnRlZXMgZ2xvYmFsT2JqZWN0J3MgcmV0dXJuIHZhbHVlIGlzIG5vbi1udWxsPworICAg
IGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0
KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgp
OwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKLQotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6Ompz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBnbG9i
YWxPYmplY3QucHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJJ
bnNwZWN0b3JGcm9udGVuZEhvc3QiKSwgdG9KUzxJRExJbnRlcmZhY2U8SW5zcGVjdG9yRnJvbnRl
bmRIb3N0Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqdGhpcykpOworICAg
IGdsb2JhbE9iamVjdC5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIkluc3BlY3RvckZyb250ZW5kSG9zdCIpLCB0b0pTPElETEludGVyZmFjZTxJbnNwZWN0b3JG
cm9udGVuZEhvc3Q+PihnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKICAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICByZXBvcnRFeGNlcHRpb24o
JmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmVwb3J0
RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIHNjb3BlLmV4Y2VwdGlvbigpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OmxvYWRlZCgpCkBAIC01MDMsMTkgKzUwMiwyMCBAQCBzdGF0
aWMgdm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51KFZlY3RvcjxJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OkNvbnRleHRNZW51SXRlbT4mJgogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250
ZXh0TWVudShFdmVudCYgZXZlbnQsIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiYgaXRlbXMpCiB7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVl
cyBtX2Zyb250ZW5kUGFnZSBpcyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50
ZWVzIGdsb2JhbE9iamVjdCdzIHJldHVybiB2YWx1ZSBpcyBub24tbnVsbD8KICAgICBBU1NFUlQo
bV9mcm9udGVuZFBhZ2UpOwotCi0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpnbG9i
YWxPYmplY3QoZGVidWdnZXJXb3JsZCgpLCAmbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpKTsK
LSAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRvIHZhbHVl
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3RvckZyb250ZW5kQVBJIikpOworICAgIGF1
dG8mIGdsb2JhbE9iamVjdCA9ICptX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
Z2xvYmFsT2JqZWN0KGRlYnVnZ2VyV29ybGQoKSk7CisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmpl
Y3Qudm0oKTsKKyAgICBhdXRvIHZhbHVlID0gZ2xvYmFsT2JqZWN0LmdldCgmZ2xvYmFsT2JqZWN0
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJJbnNwZWN0b3JGcm9udGVuZEFQSSIp
KTsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc09iamVjdCgpKTsKICAg
ICBhdXRvKiBmcm9udGVuZEFQSU9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICAKKwogICAg
IENvbnRleHRNZW51IG1lbnU7CiAgICAgcG9wdWxhdGVDb250ZXh0TWVudShXVEZNb3ZlKGl0ZW1z
KSwgbWVudSk7CiAKLSAgICBhdXRvIG1lbnVQcm92aWRlciA9IEZyb250ZW5kTWVudVByb3ZpZGVy
OjpjcmVhdGUodGhpcywgeyAmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnJvbnRlbmRBUElPYmplY3Qg
fSwgbWVudS5pdGVtcygpKTsKKyAgICBhdXRvIG1lbnVQcm92aWRlciA9IEZyb250ZW5kTWVudVBy
b3ZpZGVyOjpjcmVhdGUodGhpcywgeyAmZ2xvYmFsT2JqZWN0LCBmcm9udGVuZEFQSU9iamVjdCB9
LCBtZW51Lml0ZW1zKCkpOwogICAgIG1fbWVudVByb3ZpZGVyID0gbWVudVByb3ZpZGVyLnB0cigp
OwogICAgIG1fZnJvbnRlbmRQYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5zaG93Q29udGV4
dE1lbnUoZXZlbnQsIG1lbnVQcm92aWRlcik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAxODc5M2Zm
MDY2MzM4ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0Li41YzViYjJhZWE4Mzk5MThiMDY5Nzc1
ODgxY2UzYTM2OWE0MjhlNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjI4LDggKzIyOCwxMSBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGlucwogICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBpZiAoIXdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KGF1dG8qIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50
KCkpCi0gICAgICAgIGNvbnNvbGVBZ2VudC0+ZnJhbWVXaW5kb3dEaXNjYXJkZWQod2luZG93KTsK
KyAgICAgICAgY29uc29sZUFnZW50LT5mcmFtZVdpbmRvd0Rpc2NhcmRlZCgqd2luZG93KTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2Vk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApp
bmRleCBkYWE2MmYyMDVlODA5YTY4MzI4ZGU3MjJkMzI0MTVmMzNjMjA0MGRlLi40ODAyZWQ3NDVk
OTc1M2RhMTAzMTk0OWZmN2Q5ZWZlZDMxZWQ3ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMjcsOCArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAi
Q29tbWFuZExpbmVBUElNb2R1bGUuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzQsMjggKzcyLDM1IEBAIHZvaWQgV2ViSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKERPTVdpbmRvdyogd2luZG93
KQogICAgIGlmIChtX3NjcmlwdFN0YXRlVG9JZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFZlY3Rvcjxsb25nPiBpZHNUb1JlbW92ZTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0
IDogbV9pZFRvSW5qZWN0ZWRTY3JpcHQpIHsKLSAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCA9IGl0LnZhbHVlLmdsb2JhbE9iamVjdCgpOwotICAgICAgICBp
ZiAod2luZG93ICE9IGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9zY3JpcHRTdGF0ZVRvSWQucmVtb3Zl
KGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICBpZHNUb1JlbW92ZS5hcHBlbmQoaXQua2V5
KTsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIGlkIDogaWRzVG9SZW1vdmUpCi0gICAgICAgIG1f
aWRUb0luamVjdGVkU2NyaXB0LnJlbW92ZShpZCk7CisgICAgQVNTRVJUKHdpbmRvdyk7CisgICAg
YXV0byogZG9jdW1lbnQgPSB3aW5kb3ctPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTm93IHJlbW92ZSBzY3JpcHQgc3RhdGVzIHRoYXQg
aGF2ZSBpZCBidXQgbm8gaW5qZWN0ZWQgc2NyaXB0LgotICAgIFZlY3RvcjxKU0M6OkpTR2xvYmFs
T2JqZWN0Kj4gc2NyaXB0U3RhdGVzVG9SZW1vdmU7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdCA6
IG1fc2NyaXB0U3RhdGVUb0lkKSB7Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QgPSBpdC5rZXk7Ci0gICAgICAgIGlmICh3aW5kb3cgPT0gZG9tV2luZG93
RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSkKLSAgICAgICAgICAgIHNjcmlwdFN0
YXRlc1RvUmVtb3ZlLmFwcGVuZChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICB7CisgICAgICAg
IFZlY3Rvcjxsb25nPiBpZHNUb1JlbW92ZTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1f
aWRUb0luamVjdGVkU2NyaXB0KSB7CisgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBl
bnRyeS52YWx1ZS5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIGlmIChleGVjdXRpb25Db250
ZXh0KGdsb2JhbE9iamVjdCkgPT0gZG9jdW1lbnQpIHsKKyAgICAgICAgICAgICAgICBtX3Njcmlw
dFN0YXRlVG9JZC5yZW1vdmUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBpZHNUb1Jl
bW92ZS5hcHBlbmQoZW50cnkua2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBmb3IgKGF1dG8mIGlkIDogaWRzVG9SZW1vdmUpCisgICAgICAgICAgICBtX2lkVG9JbmplY3Rl
ZFNjcmlwdC5yZW1vdmUoaWQpOwogICAgIH0KIAotICAgIGZvciAoYXV0byYgbGV4aWNhbEdsb2Jh
bE9iamVjdCA6IHNjcmlwdFN0YXRlc1RvUmVtb3ZlKQotICAgICAgICBtX3NjcmlwdFN0YXRlVG9J
ZC5yZW1vdmUobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gTm93IHJlbW92ZSBnbG9iYWwg
b2JqZWN0cyB0aGF0IGhhdmUgbm8gaW5qZWN0ZWQgc2NyaXB0LgorICAgIHsKKyAgICAgICAgVmVj
dG9yPEpTQzo6SlNHbG9iYWxPYmplY3QqPiBnbG9iYWxPYmplY3RzVG9SZW1vdmU7CisgICAgICAg
IGZvciAoYXV0byYgZW50cnkgOiBtX3NjcmlwdFN0YXRlVG9JZCkgeworICAgICAgICAgICAgYXV0
byogZ2xvYmFsT2JqZWN0ID0gZW50cnkua2V5OworICAgICAgICAgICAgaWYgKGV4ZWN1dGlvbkNv
bnRleHQoZ2xvYmFsT2JqZWN0KSA9PSBkb2N1bWVudCkKKyAgICAgICAgICAgICAgICBnbG9iYWxP
YmplY3RzVG9SZW1vdmUuYXBwZW5kKGdsb2JhbE9iamVjdCk7CisgICAgICAgIH0KKyAgICAgICAg
Zm9yIChhdXRvJiBnbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3RzVG9SZW1vdmUpCisgICAgICAg
ICAgICBtX3NjcmlwdFN0YXRlVG9JZC5yZW1vdmUoZ2xvYmFsT2JqZWN0KTsKKyAgICB9CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNw
cAppbmRleCBhNDQ3ZjcwNTM5ZTA2ZTRjODMwNDI3NmZjYjRjZTFhNTg1MTZlYWU4Li4yMjgwNjNm
YjU4N2JlZjlkNzhiODk5MGY1ZmMxYzY4ZmVlNjAxZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwCkBAIC0xMTQsMjEgKzExNCwyMSBAQCBFeHBlY3RlZDxSZWY8SlNPTjo6
QXJyYXlPZjxQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+Piwg
UHJvdAogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlBhZ2UgZG9tYWluIG11c3QgYmUg
ZW5hYmxlZCJfcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7Ci0gICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGF1dG8qIGRvY3Vt
ZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CisgICAgbV9pbnNw
ZWN0ZWRQYWdlLmZvckVhY2hGcmFtZShbJl0gKEZyYW1lJiBmcmFtZSkgeworICAgICAgICBhdXRv
KiBkb2N1bWVudExvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAg
ICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBhdXRvJiBob3N0ID0gZG9jdW1lbnRMb2FkZXItPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCk7CiAgICAgICAgIFN0cmluZyBtYW5pZmVzdFVSTCA9IGhvc3QuYXBw
bGljYXRpb25DYWNoZUluZm8oKS5tYW5pZmVzdC5zdHJpbmcoKTsKICAgICAgICAgaWYgKCFtYW5p
ZmVzdFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShQcm90b2Nv
bDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0ZSgpCi0gICAgICAg
ICAgICAgICAgLnNldEZyYW1lSWQocGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKSkKKyAgICAgICAg
ICAgICAgICAuc2V0RnJhbWVJZChwYWdlQWdlbnQtPmZyYW1lSWQoJmZyYW1lKSkKICAgICAgICAg
ICAgICAgICAuc2V0TWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCiAgICAgICAgICAgICAgICAgLnNl
dFN0YXR1cyhzdGF0aWNfY2FzdDxpbnQ+KGhvc3Quc3RhdHVzKCkpKQogICAgICAgICAgICAgICAg
IC5yZWxlYXNlKCkpOwogICAgICAgICB9Ci0gICAgfQorICAgIH0pOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZWE1NjgwMDU1YTRmNDljZTIxYjk0MzYyMTQy
Y2E5OGMzYmQ2NmU0Ni4uODMyMmM4ZGIyYThhN2RhOWI3MTQ5NDEzMWNjNTY0YTZjYmQzMDIxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRlICJKU0V4ZWNTdGF0
ZS5oIgogI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIlBhdGgyRC5oIgot
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMuaCIKICNp
bmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xCdWZmZXIu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKaW5kZXggMzgwNWY4NDI0NWY2Y2I3M2M0NTg0NDM2NGQ1NGY4MjJiNmJlYjI2
ZC4uN2E3OTBiYjIzYzhmMzdhZjU3ZTQyODRiMzY3Y2FkOWQ2NzlhNDM0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAK
QEAgLTg1LDYgKzg1LDcgQEAKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZ1NlY3VyaXR5LmgiCisjaW5j
bHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCkBAIC05Niw3
ICs5Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyR3JpZC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKLSNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWxlY3Rv
ckNoZWNrZXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3RhdGljTm9k
ZUxpc3QuaCIKQEAgLTExNjMsMjAgKzExNjQsMTcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
Zm9jdXNOb2RlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fbm9kZVRvRm9jdXMp
OwotCi0gICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX25vZGVUb0ZvY3VzLmdldCgpOwotICAgIG1f
bm9kZVRvRm9jdXMgPSBudWxscHRyOwotCi0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1l
bnQoKS5mcmFtZSgpOworICAgIGF1dG8gbm9kZSA9IHN0ZDo6ZXhjaGFuZ2UobV9ub2RlVG9Gb2N1
cywgbnVsbHB0cik7CisgICAgYXV0byBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSk7Ci0gICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3Rl
ZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gbWFpbldv
cmxkR2xvYmFsT2JqZWN0KCpmcmFtZSk7CisgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZnbG9iYWxPYmplY3QpOwogICAg
IGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGluamVjdGVkU2NyaXB0Lmluc3BlY3RPYmplY3Qobm9kZUFzU2NyaXB0VmFsdWUoKnNjcmlwdFN0
YXRlLCBub2RlLmdldCgpKSk7CisgICAgaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChub2Rl
QXNTY3JpcHRWYWx1ZShnbG9iYWxPYmplY3QsIG5vZGUuZ2V0KCkpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCB1bnNpZ25lZCkKQEAgLTE4OTIsNyArMTg5MCwxMSBAQCBSZWY8UHJvdG9jb2w6
OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZl
bnRMaXN0ZW5lcgogCiAgICAgICAgIGlmIChkb2N1bWVudCkgewogICAgICAgICAgICAgaGFuZGxl
ck9iamVjdCA9IHNjcmlwdExpc3RlbmVyLmVuc3VyZUpTRnVuY3Rpb24oKmRvY3VtZW50KTsKLSAg
ICAgICAgICAgIGdsb2JhbE9iamVjdCA9IFdlYkNvcmU6Omdsb2JhbE9iamVjdChzY3JpcHRMaXN0
ZW5lci5pc29sYXRlZFdvcmxkKCksIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGlmIChhdXRvIGZy
YW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2h5
IGRvIHdlIG5lZWQgdGhlIGNhbkV4ZWN1dGVTY3JpcHRzIGNoZWNrIGhlcmU/CisgICAgICAgICAg
ICAgICAgaWYgKGZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhl
Y3V0ZVNjcmlwdCkpCisgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IGZyYW1lLT5z
Y3JpcHQoKS5nbG9iYWxPYmplY3Qoc2NyaXB0TGlzdGVuZXIuaXNvbGF0ZWRXb3JsZCgpKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChoYW5kbGVyT2JqZWN0ICYmIGds
b2JhbE9iamVjdCkgewpAQCAtMjg0NiwxMiArMjg0OCwxMiBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKE5vZGUq
IG5vZAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0
byYgc3RhdGUgPSAqbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKTsKLSAgICBhdXRvIGluamVjdGVk
U2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3IoJnN0YXRl
KTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1l
KTsKKyAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5q
ZWN0ZWRTY3JpcHRGb3IoJmdsb2JhbE9iamVjdCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHQud3JhcE9iamVjdChub2RlQXNTY3JpcHRWYWx1ZShzdGF0ZSwgbm9kZSksIG9iamVj
dEdyb3VwKTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChub2RlQXNTY3Jp
cHRWYWx1ZShnbG9iYWxPYmplY3QsIG5vZGUpLCBvYmplY3RHcm91cCk7CiB9CiAKIE5vZGUqIElu
c3BlY3RvckRPTUFnZW50OjpzY3JpcHRWYWx1ZUFzTm9kZShKU0M6OkpTVmFsdWUgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDYyODZiNjUyMTI2ZTBkZDEzM2QyYzI0ZTQ3ZmNkN2Nk
YzczNzZhNzMuLjVkNTEyZTc4ZTIwMDMyODhkMDE1MzEzNjg3ZTY4Mzg5OTA4YjczZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0
cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNsdWRlICJK
U0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC02MTcsMTQgKzYxNywxNyBAQCB2b2lk
IEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcmIHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdAogICAgIGlmICghZ2V0RG9jdW1lbnRBbmRJREJGYWN0b3J5RnJv
bUZyYW1lT3JTZW5kRmFpbHVyZShmcmFtZSwgZG9jdW1lbnQsIGlkYkZhY3RvcnksIGNhbGxiYWNr
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihtYWluV29ybGRFeGVj
U3RhdGUoZnJhbWUpKTsKLSAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlID0ga2V5
UmFuZ2UgPyBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZSgqa2V5UmFuZ2UpIDogbnVsbHB0cjsKLSAg
ICBpZiAoa2V5UmFuZ2UgJiYgIWlkYktleVJhbmdlKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5zZW5k
RmFpbHVyZSgiQ291bGQgbm90IHBhcnNlIGtleSByYW5nZS4iX3MpOwotICAgICAgICByZXR1cm47
CisgICAgUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZTsKKyAgICBpZiAoa2V5UmFuZ2Up
IHsKKyAgICAgICAgaWRiS2V5UmFuZ2UgPSBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZSgqa2V5UmFu
Z2UpOworICAgICAgICBpZiAoIWlkYktleVJhbmdlKSB7CisgICAgICAgICAgICBjYWxsYmFjay0+
c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBwYXJzZSBrZXkgcmFuZ2UuIl9zKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAotICAgIFJlZjxEYXRhTG9hZGVyPiBkYXRhTG9h
ZGVyID0gRGF0YUxvYWRlcjo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKGNhbGxiYWNrKSwgaW5q
ZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBXVEZNb3ZlKGlkYktleVJh
bmdlKSwgc2tpcENvdW50LCBwYWdlU2l6ZSk7CisgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZtYWluV29ybGRHbG9iYWxP
YmplY3QoKmZyYW1lKSk7CisgICAgYXV0byBkYXRhTG9hZGVyID0gRGF0YUxvYWRlcjo6Y3JlYXRl
KGRvY3VtZW50LCBXVEZNb3ZlKGNhbGxiYWNrKSwgaW5qZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3Jl
TmFtZSwgaW5kZXhOYW1lLCBXVEZNb3ZlKGlkYktleVJhbmdlKSwgc2tpcENvdW50LCBwYWdlU2l6
ZSk7CiAgICAgZGF0YUxvYWRlci0+c3RhcnQoaWRiRmFjdG9yeSwgJmRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLCBkYXRhYmFzZU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggMjIz
YTY3NjdiZTI3MWVlNGQyMmRlZDFkNmJlNjBjYTcwNzgxN2M4MS4uM2NlYjRiNDdmMTA2OGEwYWZl
YWYwMGYxNzljMjgwMGM0NzZiZDZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNTEsNiArNTEs
NyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNs
dWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCiAjaW5j
bHVkZSAiSlNXZWJTb2NrZXQuaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgpAQCAtNjQs
NyArNjUsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCiAjaW5j
bHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVy
LmgiCkBAIC0xMDQzLDExICsxMDQzLDExIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gSW5zcGVjdG9yTmV0d29ya0FnCiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIGZyYW1l
IG9mIHdlYiBzb2NrZXQgZm9yIGdpdmVuIHJlcXVlc3RJZCJfcyk7CiAKLSAgICBhdXRvJiBzdGF0
ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoZnJhbWUpOwotICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcigmc3RhdGUpOworICAg
IGF1dG8mIGdsb2JhbE9iamVjdCA9IG1haW5Xb3JsZEdsb2JhbE9iamVjdCgqZnJhbWUpOworICAg
IGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNj
cmlwdEZvcigmZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoIWluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSk7CiAKLSAgICBhdXRvIG9iamVjdCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qo
d2ViU29ja2V0QXNTY3JpcHRWYWx1ZShzdGF0ZSwgd2ViU29ja2V0KSwgb2JqZWN0R3JvdXApOwor
ICAgIGF1dG8gb2JqZWN0ID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdCh3ZWJTb2NrZXRBc1Nj
cmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgd2ViU29ja2V0KSwgb2JqZWN0R3JvdXApOwogICAgIGlm
ICghb2JqZWN0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFsIGVycm9y
OiB1bmFibGUgdG8gY2FzdCBXZWJTb2NrZXQiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXgg
YjdjNmIwZWIyMzRmYjEwMzM5ZWQxYWZkMjhhNTk3MmFhMTQwNDE1Zi4uYzM4ZTgwNjEzODIzNTIx
ZjRhZmYzYmEyMTc4MzdjZDk0M2JlYmU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC00Nyw3
ICs0Nyw2IEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiUGFnZUhlYXBB
Z2VudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgIlRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYkNvbnNv
bGVBZ2VudC5oIgogI2luY2x1ZGUgIldlYkRlYnVnZ2VyQWdlbnQuaCIKQEAgLTY2LDcgKzY1LDYg
QEAKICNpbmNsdWRlICJSdW5Mb29wT2JzZXJ2ZXIuaCIKICNlbmRpZgogCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTI5MCw2ICsyODgsMTIg
QEAgZG91YmxlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCgpCiAgICAgcmV0dXJu
IG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCkuZWxhcHNlZFRpbWUoKS5zZWNvbmRz
KCk7CiB9CiAKK3N0YXRpYyBGcmFtZSogZnJhbWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIGF1dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICByZXR1cm4gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1l
bnQ+KCpjb250ZXh0KS5mcmFtZSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgLy8gQWxsb3cgZHVwbGljYXRlIHVubmFtZWQgcHJv
ZmlsZXMuIERpc2FsbG93IGR1cGxpY2F0ZSBuYW1lZCBwcm9maWxlcy4KQEAgLTMxMCw3ICszMTQs
NyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgUwogICAgIGlmICghbV90cmFja2luZyAmJiBtX3Bl
bmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuaXNFbXB0eSgpKQogICAgICAgICBzdGFydFByb2dy
YW1tYXRpY0NhcHR1cmUoKTsKIAotICAgIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5h
cHBlbmQoY3JlYXRlUmVjb3JkRW50cnkoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVDb25z
b2xlUHJvZmlsZURhdGEodGl0bGUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkNvbnNvbGVQcm9maWxl
LCB0cnVlLCBmcmFtZUZyb21FeGVjU3RhdGUoZXhlYykpKTsKKyAgICBtX3BlbmRpbmdDb25zb2xl
UHJvZmlsZVJlY29yZHMuYXBwZW5kKGNyZWF0ZVJlY29yZEVudHJ5KFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKHRpdGxlKSwgVGltZWxpbmVSZWNvcmRUeXBl
OjpDb25zb2xlUHJvZmlsZSwgdHJ1ZSwgZnJhbWUoZXhlYykpKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYgdGl0bGUpCkBAIC02NzYsNyArNjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFjaygpCiAKIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6QnJlYWtwb2ludEFjdGlvbklEIGFjdGlvbklELCB1bnNp
Z25lZCAvKmJhdGNoSWQqLywgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSkKIHsKLSAg
ICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURh
dGEoYWN0aW9uSUQsIHNhbXBsZUlkKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpQcm9iZVNhbXBsZSwg
ZmFsc2UsIGZyYW1lRnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgYXBw
ZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFj
dGlvbklELCBzYW1wbGVJZCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNl
LCBmcmFtZShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBQcm90b2NvbDo6VGlt
ZWxpbmU6OkV2ZW50VHlwZSB0b1Byb3RvY29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
CmluZGV4IGJkZmY4NDM0ZGJlZjhjNTQ4NWIxNTA2ZWQyMDhhMDFjOWVjYWQyMjYuLmQxNWU1M2E2
OTc4NTg1YmYyYzljN2RhNGNmZGVlYTE1YmMzMzMyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTMyLDE0ICszMiwx
MiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAj
aW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QXJndW1lbnRzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTQ5LDIwICs0NywxNSBAQCBXZWJDb25z
b2xlQWdlbnQ6OldlYkNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiB7CiB9
CiAKLVdlYkNvbnNvbGVBZ2VudDo6fldlYkNvbnNvbGVBZ2VudCgpID0gZGVmYXVsdDsKLQotdm9p
ZCBXZWJDb25zb2xlQWdlbnQ6OmZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRvdyogd2luZG93
KQordm9pZCBXZWJDb25zb2xlQWdlbnQ6OmZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRvdyYg
d2luZG93KQogewotICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fY29uc29sZU1lc3NhZ2VzKSB7
Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBtZXNz
YWdlLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgaWYgKCFsZXhpY2FsR2xvYmFsT2JqZWN0KQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChkb21XaW5kb3dGcm9tRXhlY1N0YXRl
KGxleGljYWxHbG9iYWxPYmplY3QpICE9IHdpbmRvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBtZXNzYWdlLT5jbGVhcigpOworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHdpbmRv
dy5kb2N1bWVudCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fY29uc29sZU1l
c3NhZ2VzKSB7CisgICAgICAgICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dChtZXNzYWdlLT5nbG9i
YWxPYmplY3QoKSkgPT0gZG9jdW1lbnQpCisgICAgICAgICAgICAgICAgbWVzc2FnZS0+Y2xlYXIo
KTsKKyAgICAgICAgfQogICAgIH0KLQotICAgIHN0YXRpY19jYXN0PFdlYkluamVjdGVkU2NyaXB0
TWFuYWdlciY+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKS5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRz
Rm9yKHdpbmRvdyk7CisgICAgc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJj4o
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IoJndpbmRv
dyk7CiB9CiAKIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvV2ViQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dl
YkNvbnNvbGVBZ2VudC5oCmluZGV4IDkwYzcwOGU5YjgwMTcxMmI2NTk0MDdhZTBjMWQ2Njg2OGFl
YTk0YTguLmE2MTQ3NTJlOTBjZGVhZTEzODkxNmZiZjgwZWY4NTU4NGI3YTUxMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaApAQCAt
MjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkluc3BlY3RvcldlYkFn
ZW50QmFzZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oPgogCkBAIC0zNiwxNCAr
MzUsMTIgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAK
IGNsYXNzIFdlYkNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckNvbnNv
bGVBZ2VudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29uc29sZUFnZW50KTsKLSAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXZWJDb25zb2xlQWdlbnQo
V2ViQWdlbnRDb250ZXh0Jik7Ci0gICAgfldlYkNvbnNvbGVBZ2VudCgpIG92ZXJyaWRlOworcHJv
dGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYkNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRleHQmKTsK
IAorcHVibGljOgogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgotICAgIHZvaWQgZnJh
bWVXaW5kb3dEaXNjYXJkZWQoRE9NV2luZG93Kik7CisgICAgdm9pZCBmcmFtZVdpbmRvd0Rpc2Nh
cmRlZChET01XaW5kb3cmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZEZh
aWxMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2Uv
UGFnZUF1ZGl0QWdlbnQuY3BwCmluZGV4IGQ1MTBkYzE3MDU4ZTEyYmFkZTlhZTA5MmQ4MDE5ZWE4
NmM4ZDMzNGYuLjE3NGQ1MTE5MzRiOTk3YjFiYTBmOTVjYWJlMWMzMzY5MDg3OGVmZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRp
dEFnZW50LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXVkaXRET01PYmplY3Qu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5oIgorI2luY2x1ZGUg
IkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJKU0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNJbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KQEAgLTYwLDkgKzYwLDcgQEAgSW5qZWN0ZWRTY3Jp
cHQgUGFnZUF1ZGl0QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChzdGQ6Om9wdGlvbmFsPFBy
b3RvY29sOjpSdW4KIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKQogICAgICAgICByZXR1
cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3JJZCgqZXhlY3V0aW9u
Q29udGV4dElkKTsKLQotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gbWFp
bldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpOwotICAgIHJldHVy
biBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7
CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKCZt
YWluV29ybGRHbG9iYWxPYmplY3QobV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKSk7CiB9CiAK
IEluamVjdGVkU2NyaXB0IFBhZ2VBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJv
dG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IDU1ZDk1MTg0OTQxOTViOTZkZjE2NWE5NGMxYzI5NjNhZGNlYjgz
OTUuLjgyYjVkMjQ0YjYyOTY0NjE1ZmM0YzEyMzcyMzUxNGYyNjgxYjM5MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMzgsMTEgKzM4LDExIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRz
LmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlRGVidWdnZXIuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KQEAgLTEzOCwxMCArMTM4LDggQEAgdm9pZCBQYWdl
RGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2IKIAogSW5qZWN0ZWRTY3JpcHQgUGFnZURlYnVnZ2VyQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBzdGQ6
Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0
aW9uQ29udGV4dElkKQogewotICAgIGlmICghZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0gICAgICAg
IEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKCZt
X2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpOwotICAgICAgICByZXR1cm4gaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwotICAgIH0KKyAgICBp
ZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkKKyAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFu
YWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKCZtYWluV29ybGRHbG9iYWxPYmplY3QobV9pbnNwZWN0
ZWRQYWdlLm1haW5GcmFtZSgpKSk7CiAKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlv
bkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29y
a0FnZW50LmNwcAppbmRleCBiYjRmNmJhN2MyY2M2MTg1ODU4NzE5NmM5NzNhMmMzODZmODhmNGY4
Li5kMDY5MGQ0NGRlM2NlYWVkOWRjMzI1YThiYmYxYmVkN2I4N2ZiZmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdl
bnQuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlw
dFN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hh
bm5lbC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggYjMyZjNmNjk5YzJkMmEzNzcyODk3NjBi
MjQ1YWM4MTc4NDEwMjQ1OC4uNTNhMzVmMjQzM2Y4ZWUxNjA2Zjk2ZjUxYjFjMzEzOTZkNTBiNGQ3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VS
dW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtMzcsMTEgKzM3LDEwIEBACiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVt
ZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVkZSAi
SlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNv
bnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVz
ZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbmpl
Y3RlZFNjcmlwdC5oPgpAQCAtOTEsNyArOTAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBQYWdlUnVudGltZUFnZW50OjpkaXNhYmxlKCkKIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
ZnJhbWVOYXZpZ2F0ZWQoRnJhbWUmIGZyYW1lKQogewogICAgIC8vIEVuc3VyZSBleGVjdXRpb24g
Y29udGV4dCBpcyBjcmVhdGVkIGZvciB0aGUgZnJhbWUgZXZlbiBpZiBpdCBkb2Vzbid0IGhhdmUg
c2NyaXB0cy4KLSAgICBtYWluV29ybGRFeGVjU3RhdGUoJmZyYW1lKTsKKyAgICBtYWluV29ybGRH
bG9iYWxPYmplY3QoZnJhbWUpOwogfQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQp
CkBAIC0xMDYsOCArMTA1LDcgQEAgdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQKIEluamVjdGVkU2Ny
aXB0IFBhZ2VSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlmICghZXhl
Y3V0aW9uQ29udGV4dElkKSB7Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0
YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpOwot
ICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5p
bmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgICAgIEluamVjdGVkU2NyaXB0IHJl
c3VsdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKCZtYWluV29y
bGRHbG9iYWxPYmplY3QobV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKSk7CiAgICAgICAgIGlm
IChyZXN1bHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJu
YWwgZXJyb3I6IG1haW4gd29ybGQgZXhlY3V0aW9uIGNvbnRleHQgbm90IGZvdW5kIl9zOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM1LDI1ICsxMzMsMjUgQEAgdm9pZCBQYWdlUnVudGlt
ZUFnZW50OjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24oKQogICAgIGlmICghcGFnZUFn
ZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8qIGZyYW1lID0gJm1faW5zcGVj
dGVkUGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewotICAgICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0
cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBt
X2luc3BlY3RlZFBhZ2UuZm9yRWFjaEZyYW1lKFsmXSAoRnJhbWUmIGZyYW1lKSB7CisgICAgICAg
IGlmICghZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZnJhbWVJZCA9IHBh
Z2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7CisgICAgICAgIGF1dG8gZnJhbWVJZCA9IHBhZ2VBZ2Vu
dC0+ZnJhbWVJZCgmZnJhbWUpOwogCiAgICAgICAgIC8vIEFsd2F5cyBzZW5kIHRoZSBtYWluIHdv
cmxkIGZpcnN0LgotICAgICAgICBhdXRvKiBtYWluR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhl
Y1N0YXRlKGZyYW1lKTsKLSAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgbWFp
bkdsb2JhbE9iamVjdCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgICAgICBhdXRvJiBt
YWluR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkR2xvYmFsT2JqZWN0KGZyYW1lKTsKKyAgICAgICAg
bm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgJm1haW5HbG9iYWxPYmplY3QsIG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpKTsKIAotICAgICAgICBmb3IgKGF1dG8mIGpzV2luZG93UHJveHkgOiBm
cmFtZS0+d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgICAg
IGZvciAoYXV0byYganNXaW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5KCkuanNXaW5kb3dQ
cm94aWVzQXNWZWN0b3IoKSkgewogICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0ganNX
aW5kb3dQcm94eS0+d2luZG93KCk7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09IG1h
aW5HbG9iYWxPYmplY3QpCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09ICZtYWluR2xv
YmFsT2JqZWN0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRv
JiBzZWN1cml0eU9yaWdpbiA9IGRvd25jYXN0PERPTVdpbmRvdz4oanNXaW5kb3dQcm94eS0+d3Jh
cHBlZCgpKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICAgICAgbm90aWZ5
Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgZ2xvYmFsT2JqZWN0LCBqc1dpbmRvd1Byb3h5LT53b3Js
ZCgpLCAmc2VjdXJpdHlPcmlnaW4pOwogICAgICAgICB9Ci0gICAgfQorICAgIH0pOwogfQogCiBz
dGF0aWMgUHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRUeXBlIHRvUHJvdG9jb2wo
RE9NV3JhcHBlcldvcmxkOjpUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDhm
N2UxNWVkOTVmMWM5MjJmNGU0YjFlOWYwODRmMDkzMWUxMTg4OWQuLmMyM2VmZGU4NGFhNGFkYTll
ZDE4ODdmYzQxMGRjNjgzZTFiNGJhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya2VyQXVkaXRBZ2Vu
dC5oIgogCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CkBA
IC01NSw3ICs1NCw5IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdlbnQ6OmluamVjdGVk
U2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVyCiAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV9nbG9iYWxTY29wZSkpOworICAg
IC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgbV9nbG9iYWxTY29wZS5zY3JpcHQoKSBpcyBub24t
bnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIGdsb2JhbFNjb3BlV3JhcHBlcigp
IGlzIG5vbi1udWxsPworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3Rl
ZFNjcmlwdEZvcihtX2dsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAK
aW5kZXggZDQ2ODQzZmQ2Y2I4MDBkYWJlNTE1MTdjZmExMDQ2MGZjYzdlNDVmYi4uMWJkYzE3YmNh
ZWExMGQ4ZDE0NzE0MmRiYzI1ZGY5N2YyOGI4Y2Y2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
b3JrZXJEZWJ1Z2dlckFnZW50LmgiCiAKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1
ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNj
cmlwdC5oPgpAQCAtNjAsNyArNTksOSBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFn
ZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAg
ICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fZ2xvYmFsU2Nv
cGUpKTsKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZ2xvYmFsU2NvcGUuc2NyaXB0
KCkgaXMgbm9uLW51bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBnbG9iYWxTY29w
ZVdyYXBwZXIoKSBpcyBub24tbnVsbD8KKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KCkuaW5qZWN0ZWRTY3JpcHRGb3IobV9nbG9iYWxTY29wZS5zY3JpcHQoKS0+Z2xvYmFsU2NvcGVX
cmFwcGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFn
ZW50LmNwcAppbmRleCA1ODBkYzBhOTNiMzY3NzgxZjcyODk5NWRiMWFlZGJlYjM3YzEyYmEyLi42
NmRhZjI0YTg4ZWIyMjRkYTlhYWJkZjM4ZTA3YmRlM2Y4N2MzMTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRp
bWVBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAj
aW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVj
dGVkU2NyaXB0TWFuYWdlci5oPgpAQCAtNTgsNyArNTcsOSBAQCBJbmplY3RlZFNjcmlwdCBXb3Jr
ZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJp
bmcmCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVy
biBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3Qo
bV9nbG9iYWxTY29wZSkpOworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgbV9nbG9iYWxT
Y29wZS5zY3JpcHQoKSBpcyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVz
IGdsb2JhbFNjb3BlV3JhcHBlcigpIGlzIG5vbi1udWxsPworICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihtX2dsb2JhbFNjb3BlLnNjcmlwdCgpLT5n
bG9iYWxTY29wZVdyYXBwZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="473387"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447696</attachid>
            <date>2021-12-21 00:51:08 -0800</date>
            <delta_ts>2021-12-21 01:51:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234548-20211221005107.patch</filename>
            <type>text/plain</type>
            <size>79499</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Mjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJjOWJmNzhlZmU3ODY3
NzQ2NzRmZDZmNTgwODNjZjA1OGUzMGU3Yy4uZGM1ZWZjZmQ2NmI2Zjg4MzQxYmJiNmFiM2YzNTUy
NmQ0NzFhZWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMS0xMi0yMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
aXMgYSByZW1uYW50IG9mIEphdmFTY3JpcHQgZW5naW5lIGFic3RyYWN0aW9uIHRoYXQgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNjcmlwdFN0YXRlLmgvY3BwIGlzIGZpbGUgbGVmdCBvdmVyIGZyb20gd2hlbiB3ZSBoYWQgYSBs
YXllciB0byBhYnN0cmFjdAorICAgICAgICBKYXZhU2NyaXB0IGJpbmRpbmcgYW5kIHVzYWdlIGlu
IFdlYkNvcmUgc28gaXQgY291bGQgd29yayB3aXRoIGJvdGggSmF2YVNjcmlwdENvcmUKKyAgICAg
ICAgYW5kIEdvb2dsZSdzIFY4IGVuZ2luZS4gV2UgaGF2ZW4ndCBuZWVkZWQgdGhhdCBmb3IgeWVh
cnMsIGFuZCBzdHJpcHBpbmcgYXdheSBzb21lCisgICAgICAgIG9mIHRoZSBsYXllcnMgbWlnaHQg
aGVscCB1cyBtYWtlIGNvZGUgbW9yZSByZWFkYWJsZSBhbmQgcGVyaGFwcyBldmVuIG5vdGljZSB3
YXlzCisgICAgICAgIHRvIG1ha2UgaXQgbW9yZSBlZmZpY2llbnQuIEZvciBub3csIHRoaXMgcGF0
Y2ggcmVtb3ZlcyB0aGUgZnVuY3Rpb25zIGZyb20KKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
YW5kIG1vdmVzIHRoZW0gdG8gbW9yZSBzdWl0YWJsZSBwbGFjZXMsIHNpbXBsaWZ5aW5nIGluIHRo
ZSBwcm9jZXNzLgorCisgICAgICAgIEFsc28gYmVnaW4gdG8ganVzdCBjYWxsIGdsb2JhbCBvYmpl
Y3RzICJnbG9iYWwgb2JqZWN0IiwgYW5kIG5vdCAic2NyaXB0IHN0YXRlIi4KKworICAgICAgICAq
IEhlYWRlcnMuY21ha2U6IFJlbW92ZWQgU2NyaXB0U3RhdGUuaC4KKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlw
dFN0YXRlLmguCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
OiBEaXR0by4KKworICAgICAgICAqIFNvdXJjZXMudHh0OiBSZW1vdmVkIFNjcmlwdFN0YXRlLmNw
cC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZWQg
U2NyaXB0U3RhdGUuaCBhbmQgLmNwcC4KKyAgICAgICAgQWxzbyBhbGxvd2VkIHRoZSBzY3JpcHQg
dG8gc29ydCB0aGUgZmlsZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1haW5Xb3JsZEdsb2JhbE9iamVjdCk6IFJlbmFt
ZWQgdGhlIG1haW5Xb3JsZEV4ZWNTdGF0ZSBmdW5jdGlvbiBhbmQKKyAgICAgICAgbW92ZWQgaXQg
aGVyZSBmcm9tIFNjcmlwdFN0YXRlLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5oOiBUd2Vha2VkIGZvcm1hdHRpbmcgb2YgdGhlIGhlYWRlci4gQWRkZWQgdGhl
CisgICAgICAgIG1haW5Xb3JsZEdsb2JhbE9iamVjdCBmdW5jdGlvbi4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRl
LmguCisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0
KTogQ2FsbCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
aW9uQ29udGV4dCk6IFJlbmFtZWQgdGhlIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlCisgICAgICAgIGZ1bmN0aW9uIGFuZCBtb3ZlZCBpdCBoZXJlIGZyb20gU2NyaXB0U3RhdGUu
Y3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmg6IEFkZGVkIHRoZSBleGVj
dXRpb25Db250ZXh0IGZ1bmN0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmgsIGFkZGVkIGluY2x1ZGUK
KyAgICAgICAgb2YgSlNET01XaW5kb3dDdXN0b20uaC4KKyAgICAgICAgKFdlYkNvcmU6OndpbGxD
cmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dDYXNlKTogQ2FsbCBtYWluV29y
bGRHbG9iYWxPYmplY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaDog
Q2hhbmdlZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwKKyAgICAgICAg
ZnVuY3Rpb25zIHRvIHRha2UgYSBOb2RlJiBpbnN0ZWFkIG9mIGEgbmV2ZXItbnVsbCBOb2RlKi4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaDogVHdlYWtlZCBmb3JtYXR0
aW5nIGEgYml0LgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmg6IFJlbW92ZWQuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOiBSZW1vdmVkIGlu
Y2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OndyYXBDcnlwdG9LZXkp
OiBVcGRhdGUgZm9yIG5hbWUgY2hhbmdlIG9mIGV4ZWN1dGlvbkNvbnRleHQgZnVuY3Rpb24uCisg
ICAgICAgIChXZWJDb3JlOjp1bndyYXBDcnlwdG9LZXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkRmlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRPZmZzY3JlZW5DYW52YXMpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkUlRDRGF0YUNoYW5uZWwpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkSW1hZ2VCaXRtYXAp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWlu
YWwpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2Vy
dGlvbik6CisgICAgICAgIFBhc3MgcmVmZXJlbmNlIHRvIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhh
bmVkVHJlZUJ5UmVtb3ZhbC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92
ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaCwgYWRkZWQgaW5jbHVkZQor
ICAgICAgICBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmRpZExvZ01lc3NhZ2UpOiBVc2UgbWFpbldvcmxkR2xvYmFsT2JqZWN0LgorCisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2Ny
aXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Omds
b2JhbE9iamVjdCk6IFVzZSB0aGUKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciBkaXJlY3RseSBp
bnN0ZWFkIG9mIHRocm91Z2ggaGVscGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2Yg
U2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHA6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTZWxmVG9HbG9iYWxPYmplY3RJbldv
cmxkKToKKyAgICAgICAgVXNlIHRoZSBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5IGluc3RlYWQg
b2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KTogRGl0dG8uCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKTogRG8KKyAg
ICAgICAgdGhlIG51bGwgY2hlY2sgaGVyZSBpbnN0ZWFkIG9mIGluIGZyYW1lV2luZG93RGlzY2Fy
ZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6
IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKToKKyAgICAg
ICAgUmV3b3JlZCBsb2dpYyB0byB1c2UgZXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIGRvbVdp
bmRvd0Zyb21FeGVjU3RhdGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDogUmVtb3ZlZCBp
bmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Zm9jdXNOb2RlKTogVXNlIHN0ZDo6ZXhjaGFuZ2UgaGVyZSBpbiB0aGUKKyAgICAgICAg
aWRpb21hdGljICJ0YWtlIGFuZCBudWxsIGEgdmFsdWUiIGNhc2UgaGVyZS4gVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOiBVc2UKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciBk
aXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggYSBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YKKyAgICAgICAgU2NyaXB0U3RhdGUuaCBhbmQg
YWRkZWQgaW5jbHVkZSBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZXNvbHZlV2ViU29ja2V0KTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAo
V2ViQ29yZTo6ZnJhbWUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBmcm9tIGEgZ2xv
YmFsIG9iamVjdCB0byBhIGZyYW1lLgorICAgICAgICBDYWxscyBleGVjdXRpb25Db250ZXh0IGFu
ZCBnZXRzIHRvIHRoZSBmcmFtZSBmcm9tIHRoZXJlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6IFVzZSBmcmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6
IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
OiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOiBUYWtlIGEgcmVmZXJlbmNlIGlu
c3RlYWQgb2YKKyAgICAgICAgYSBwb2ludGVyIHRoYXQgbXVzdCBub3QgYmUgbnVsbC4gVXNlIGV4
ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBkb21XaW5kb3dGcm9tRXhlY1N0YXRl
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4gUmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBXVEZfTUFLRV9O
T05DT1BZQUJMRSAoYmFzZSBjbGFzcyBpcyBhbHJlYWR5IG5vdCBjb3B5YWJsZSkgYW5kCisgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIChjbGFzcyBpcyBhbiBhYnN0cmFjdCBiYXNlIGNs
YXNzIGFuZCBuZXZlciBhbGxvY2F0ZWQpLgorICAgICAgICBNYWRlIGNvbnN0cnVjdG9yIHByb3Rl
Y3RlZC4gQ2hhbmdlZCB0aGUgRE9NV2luZG93IGFyZ3VtZW50IHRvCisgICAgICAgIGZyYW1lV2lu
ZG93RGlzY2FyZGVkIHRvIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyIHRoYXQgbXVz
dCBub3QgYmUgbnVsbC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVk
aXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdn
ZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0
d29ya0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6IFJlbW92ZWQg
aW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFuZCBhZGRlZCBpbmNsdWRlIG9mIEpT
RE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojpm
cmFtZU5hdmlnYXRlZCk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbik6IERpdHRvLgorICAgICAgICBBbHNvIHVzZSBQYWdlOjpmb3JFYWNoRnJhbWUgaW5z
dGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRT
dGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVh
ZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAg
ICAgaW5zdGVhZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6IFVzZSBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5
CisgICAgICAgIGluc3RlYWQgb2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKwogMjAyMS0x
Mi0yMCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luXSBNU1ZDIHJlcG9ydHMgIkRvd25sb2FkQnVuZGxlV2luLmNwcCg4Nyk6IGVycm9yIEMy
MzYyOiBpbml0aWFsaXphdGlvbiBvZiAnbWFnaWMnIGlzIHNraXBwZWQgYnkgJ2dvdG8gZXhpdCci
IHdpdGggL3N0ZDpjKysyMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYmMwODRlOWY2YmM5NzFiNDIw
YzU1ZGI0OTcxYjhiNzBlY2U3YzVjNy4uMWU2NTEwMjE5Y2I2N2U3M2MyYjBmOTI5YzA1N2Q2ZTBk
MTAzNjdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00NjUsNyArNDY1LDYgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJpbmRpbmdzL2pzL1J1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAog
ICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAotICAgIGJpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAogICAgIGJpbmRpbmdz
L2pzL1NjcmlwdFdyYXBwYWJsZUlubGluZXMuaAogICAgIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAKaW5kZXggZWRkYmU4YmUxZTMxMTA4NzFjMzc3MTE4NGEyZjk1YmE3
ZmI4MDJmZC4uMTQzNTE0MGE1Y2I0YTFhMWQ0MDdhMmRiMjlkMTViZGYyZDUyYzBiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlw
dFN0YXRlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBJbmxpbmVzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNjdkM2JhNGM3OTgzMTExMjc5MzFlMjk1Mjg0ODRlNjZl
Y2QzNGNmZi4uNTg0MzYxNTY1MDAxNjc4Nzc4ZGI3NTAxOTVmNmViMGYyZDFjMWJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJUcmFuc2FjdGlvbk9wZXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA0OTUzMGY2MjRiMDEwZjc2YTQ4MzI0YmZk
ZDk5YzJkMjY4OGE3NzgzLi5iZDVhNzQ3OWNiMzllNDZjYzkxMDQwMGY0ZWUzODQ5MzI0Yzc1MzFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtNjMyLDcgKzYzMiw2IEBAIGJpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKIGJpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwCi1iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKIGJpbmRpbmdzL2pzL1NjcmlwdFdy
YXBwYWJsZS5jcHAKIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKIGJpbmRp
bmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYzRlOGRlMDUxNWEzZTdkZTA4M2ZkNTc2
N2QwODlmYTdjMjc5NDk0Li4zZDExZTQ3MzU2ZmFmMDRhNjA3NTJiYmJmYTI1NTMwYWVkYWFmMjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjAwLDcgKzEyMDAsNiBAQAogCQk0MUMxNEJDOTI2REY3OUQ3MDA2ODVCRjUgLyog
TUROU1JlZ2lzdGVyRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQzE0QkM4MjZERjc5RDYwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNC
OEExMjY0OUIxRTAwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDFDM0I4QTIyNjQ5QjFFNTAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAw
QzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDFDQjg0MDEyNUNBQjdCMzAwMTBFMkIxIC8qIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUNCODQwMDI1Q0FCN0IwMDAxMEUyQjEgLyogUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MUNCODQwMjI1Q0FCODFFMDAxMEUyQjEgLyogUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0REODMzQTFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDFEMDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYg
LyogQ29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtODUyMyw3ICs4NTIyLDYgQEAKIAkJNDEyMDlFOTQyMTZFQTY5QTAwQTczQTEy
IC8qIFJUQ0NlcnRpZmljYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJUQ0NlcnRpZmljYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEy
MDlFOTUyMTZFQzM0RTAwQTczQTEyIC8qIExpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ0NlcnRpZmljYXRlR2Vu
ZXJhdG9yLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMDlFOTYyMTZFQzM0RjAwQTczQTEy
IC8qIExpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcDsgcGF0
aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRT
dGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRTdGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjlDOTgwMUY1ODYxQzcwMDlE
NzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVhZGFibGVTdHJlYW1TaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMjlDOTgxMUY1ODYxQzcwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMjlDOTg3MUY1ODY2MkQwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVT
dHJlYW1TaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4NTEsNyArODg0
OSw2IEBACiAJCTQxQzNCODlFMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUMzQjhBMDI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJVbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQzc2MEIwMEVERTAz
RDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEw
NTFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwNjFFNkE1
NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDgxRTZBQTM3QzAwMjdCNERFIC8q
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTI1NywxMiArMTkyNTQsMTIgQEAKIAkJMTFBMUU2RkIyNkZCQjZDRTAwNDM1
RDM2IC8qIGRpc3BsYXkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCTZGNjBFNUE5Mjc3MTBGMzkwMDVDMTVCOSAvKiBJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXIuaCAqLywKLQkJCQk2RjYwRTVBNzI3NzEwRjJGMDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyLmNwcCAqLywKIAkJCQk2RkMzRjk0NTI1MTY3NTY2MDBBNDlCRUEgLyogSW5saW5l
RGlzcGxheUJveC5oICovLAogCQkJCTExNTEzRDAwMjZEOTgxREQwMDREM0ZBQSAvKiBJbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICovLAogCQkJCTExNTEzRDAyMjZEOTgxRTcwMDREM0ZB
QSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCAqLywKIAkJCQk2RjkxNDIwRjI1MTUy
MTM3MDA0RTRGRUEgLyogSW5saW5lRGlzcGxheUxpbmUuaCAqLywKKwkJCQk2RjYwRTVBNzI3NzEw
RjJGMDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCAqLywKKwkJCQk2RjYw
RTVBOTI3NzEwRjM5MDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGRpc3BsYXk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MjkyMDcsOCArMjkyMDQsNiBAQAogCQkJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3Jp
cHRNb2R1bGVMb2FkZXIuY3BwICovLAogCQkJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBT
Y3JpcHRNb2R1bGVMb2FkZXIuaCAqLywKIAkJCQk5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyog
U2NyaXB0U291cmNlQ29kZS5oICovLAotCQkJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBT
Y3JpcHRTdGF0ZS5jcHAgKi8sCi0JCQkJNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlw
dFN0YXRlLmggKi8sCiAJCQkJMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBw
YWJsZS5oICovLAogCQkJCTE0MDBEN0E3MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFi
bGVJbmxpbmVzLmggKi8sCiAJCQkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgKi8sCkBAIC0zNDgzNCw2ICszNDgyOSw3IEBACiAJCQkJNkZDM0Y5
NDcyNTE2NzU2NzAwQTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCBpbiBIZWFkZXJzICovLAog
CQkJCTExNTEzRDAzMjZEOTgxRTgwMDREM0ZBQSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGOTE0MjExMjUxNTIxMzgwMDRFNEZFQSAvKiBJbmxp
bmVEaXNwbGF5TGluZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkY2MEU1QUEyNzcxMEYzOTAwNUMx
NUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY3
Q0EzQ0EyMDhDMkIyRTAwMkYyOUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0N0M0RDU3RDI2NTA4QkNCMDBDN0FCMUYgLyogSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkU2MzZFODI2NDc5NjI5MDBGMDk1MUUg
LyogSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjkwOCw3ICsz
NjkwNCw2IEBACiAJCQkJRkQzMTYwMzYxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nv
ck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCThBNDEzQUUwMTIwN0JCQTUwMDgyMDE2RSAvKiBT
Y3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNENDMTBBMEVEQjIyMzkwMEE2NThG
MiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUM3NjBCMTBFREUw
M0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTIyOEMyODQ1
MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFy
ZWEuaCBpbiBIZWFkZXJzICovLApAQCAtMzc2NjYsNyArMzc2NjEsNiBAQAogCQkJCUJFRjI5RUVD
MTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0QzMzZGNjQxN0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDMzNkY2ODE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RjYwRTVBQTI3NzEwRjM5MDA1QzE1
QjkgLyogSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDFG
OUIxNDI3MDIzNUY3MDA2MTdFQjYgLyogVmlkZW9UcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEOEI1QTQzMTgwRDE0OUEwMDhCOEU2NSAvKiBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwRTgxRDExQkYyNzY1
NjAwMUZEQTQ4IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IDU0NzYyN2E5Zjg5Yzc1NjRjZmI1Zjg3MGQyNWM4NmY1MjMwZGY1NWQuLjEyNWVjMDA3
MzIzNWMwZmNiYTQ5NzQxZTQxZmJmYTRkM2UyMDY5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTYzNyw0ICs2MzcsMTIgQEAg
dm9pZCBKU0RPTVdpbmRvdzo6c2V0T3BlbkRhdGFiYXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzoKICAgICBjcmVhdGVEYXRhUHJvcGVydHkoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCAib3BlbkRhdGFiYXNlIiksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKK0pTRE9NV2lu
ZG93JiBtYWluV29ybGRHbG9iYWxPYmplY3QoRnJhbWUmIGZyYW1lKQoreworICAgIC8vIEZJWE1F
OiBXaGF0IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCBvZiBqc1dpbmRvd1Byb3h5KCkgaXMgbm9uLW51
bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGUgcmVzdWx0IG9mIHdpbmRvdygp
IGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCBv
ZiB3aW5kb3coKSBhIEpTRE9NV2luZG93PworICAgIHJldHVybiAqanNDYXN0PEpTRE9NV2luZG93
Kj4oZnJhbWUud2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKS0+d2luZG93KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaAppbmRleCA3Y2ZhN2E2YmIz
YTdjNGEwYWRmNmNhZmE3MzY5YjcyYmI1NzA3YTc3Li4yYjEyYmNjYTRlMmU1MGMyNTQwNzM2MTE5
NzAwNGYzZDdkM2Y4ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI1LDYgKzI1LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFic3Ry
YWN0RE9NV2luZG93OwogY2xhc3MgQWJzdHJhY3RGcmFtZTsKIAorSlNET01XaW5kb3cqIGFzSlNE
T01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCopOworY29uc3QgSlNET01XaW5kb3cqIGFzSlNE
T01XaW5kb3coY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworCitlbnVtIGNsYXNzIERPTVdp
bmRvd1R5cGUgOiBib29sIHsgTG9jYWwsIFJlbW90ZSB9OwordGVtcGxhdGU8RE9NV2luZG93VHlw
ZT4gYm9vbCBqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdFJlc3RyaWN0ZWRBY2Nlc3MoSlNE
T01HbG9iYWxPYmplY3QqLCBBYnN0cmFjdERPTVdpbmRvdyYsIEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBjb25zdCBTdHJpbmcmKTsK
KworZW51bSBjbGFzcyBDcm9zc09yaWdpbk9iamVjdCA6IGJvb2wgeyBXaW5kb3csIExvY2F0aW9u
IH07Cit0ZW1wbGF0ZTxDcm9zc09yaWdpbk9iamVjdD4gdm9pZCBhZGRDcm9zc09yaWdpbk93blBy
b3BlcnR5TmFtZXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkm
KTsKKworYm9vbCBoYW5kbGVDb21tb25Dcm9zc09yaWdpblByb3BlcnRpZXMoSlNDOjpKU09iamVj
dCogdGhpc09iamVjdCwgSlNDOjpWTSYsIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOworCitKU0RPTVdpbmRvdyYgbWFpbldvcmxkR2xvYmFsT2JqZWN0KEZyYW1lJik7CitK
U0RPTVdpbmRvdyogbWFpbldvcmxkR2xvYmFsT2JqZWN0KEZyYW1lKik7CisKIGlubGluZSBKU0RP
TVdpbmRvdyogYXNKU0RPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsK
QEAgLTM1LDE1ICs0OSw5IEBAIGlubGluZSBjb25zdCBKU0RPTVdpbmRvdyogYXNKU0RPTVdpbmRv
dyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAotZW51bSBj
bGFzcyBET01XaW5kb3dUeXBlIHsgTG9jYWwsIFJlbW90ZSB9OwotCi10ZW1wbGF0ZSA8RE9NV2lu
ZG93VHlwZSB3aW5kb3dUeXBlPgotYm9vbCBqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdFJl
c3RyaWN0ZWRBY2Nlc3MoSlNET01HbG9iYWxPYmplY3QqLCBBYnN0cmFjdERPTVdpbmRvdyYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
LCBjb25zdCBTdHJpbmcmKTsKLQotZW51bSBjbGFzcyBDcm9zc09yaWdpbk9iamVjdCB7IFdpbmRv
dywgTG9jYXRpb24gfTsKLQotdGVtcGxhdGUgPENyb3NzT3JpZ2luT2JqZWN0IG9iamVjdFR5cGU+
Ci12b2lkIGFkZENyb3NzT3JpZ2luT3duUHJvcGVydHlOYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYpOwotYm9vbCBoYW5kbGVDb21tb25Dcm9zc09yaWdp
blByb3BlcnRpZXMoSlNDOjpKU09iamVjdCogdGhpc09iamVjdCwgSlNDOjpWTSYsIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworaW5saW5lIEpTRE9NV2luZG93KiBtYWlu
V29ybGRHbG9iYWxPYmplY3QoRnJhbWUqIGZyYW1lKQoreworICAgIHJldHVybiBmcmFtZSA/ICZt
YWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKSA6IG51bGxwdHI7Cit9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhl
Y1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcApp
bmRleCBiZWNhNTYzZjU3OWIxNDZkNzMyMzhhZDg2ODFlYmUwZjI0M2Y1N2JiLi4wZGYwNjM3MTE4
MmQzZjJkZjlkOWYwMTFhMTE3NmFmMWE2ODk2ODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFeGVjU3RhdGUuY3BwCkBAIC0yOSwxNCArMjksMTMgQEAKICNpbmNsdWRlICJFdmVu
dExvb3AuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IEpTRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCkKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byBjb250ZXh0ID0gZXhlY3V0aW9uQ29udGV4dChsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBjb250ZXh0
LT5ldmVudExvb3AoKS5wZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgpOwpAQCAtNTMsNCArNTIs
MTEgQEAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamUKICAgICByZXR1cm4gSlNFeGVjU3RhdGU6OmV2
YWx1YXRlKGxleGljYWxHbG9iYWxPYmplY3QsIHNvdXJjZSwgdGhpc1ZhbHVlLCByZXR1cm5lZEV4
Y2VwdGlvbik7CiB9CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlvbkNvbnRleHQo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIGlmICghZ2xvYmFsT2Jq
ZWN0LT5pbmhlcml0czxKU0RPTUdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmgK
aW5kZXggMjdmNzY1MGRhNmE4ZWU0NGYzNWY5NDdkNDk4ZWEzODFjNmM5NDMxZi4uZTI2NWIxMzM4
YWM4NzQ5MDNlMWY3ZmMyMzZlZDU3M2Q1NWZmMzFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V4ZWNTdGF0ZS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00NywyNSArNDcsMjUgQEAgcHVibGljOgogICAgIHN0YXRp
YyBKU0M6OkpTR2xvYmFsT2JqZWN0KiBjdXJyZW50U3RhdGUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRocmVhZEdsb2JhbERhdGEoKS5jdXJyZW50U3RhdGUoKTsKLSAgICB9OworICAgIH0KICAg
ICAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBKU0M6
OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpB
cmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRlKGxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIGZ1
bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlv
bik7Ci0gICAgfTsKKyAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6U291cmNl
Q29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUgY3Vy
cmVudFN0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gSlNDOjpldmFs
dWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJuZWRFeGNl
cHRpb24pOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFsdWF0
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTQzo6SlNWYWx1ZSgp
KQogICAgIHsKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHVudXNlZDsKICAgICAg
ICAgcmV0dXJuIGV2YWx1YXRlKGxleGljYWxHbG9iYWxPYmplY3QsIHNvdXJjZSwgdGhpc1ZhbHVl
LCB1bnVzZWQpOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm9m
aWxlZENhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpQ
cm9maWxpbmdSZWFzb24gcmVhc29uLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0
IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBK
U0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNl
cHRpb24pCiAgICAgewpAQCAtMTg1LDQgKzE4NSw2IEBAIHByaXZhdGU6CiBKU0M6OkpTVmFsdWUg
ZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYsIEpTQzo6SlNW
YWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBKU0M6OkpTVmFsdWUgZXZhbHVhdGVIYW5k
bGVyRnJvbUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpTb3VyY2VD
b2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlvbkNv
bnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAxZmNjMjQ0
ZDhkOTUwZTE3ODFlMmUwYmRhNmE2NGVjN2Q3YTI5YTcxLi5kNDFmOGVlYTVmMzQxNzgwYjQyM2Y2
YjdlNmU3ODYzYjE5YWI5Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUN1c3RvbS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKU0NEQVRBU2VjdGlvbi5o
IgogI2luY2x1ZGUgIkpTQ29tbWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2lu
Y2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBlLmgi
CkBAIC02MSwxNyArNjIsMTUgQEAKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNWR0VsZW1l
bnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
ICNpbmNsdWRlICJHQ1JlYWNoYWJsZVJlZi5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKICNp
bmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZWFj
aGFibGVGcm9tRE9NKE5vZGUqIG5vZGUsIEFic3RyYWN0U2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNv
bnN0IGNoYXIqKiByZWFzb24pCkBAIC0yMTIsMTQgKzIxMSwxNSBAQCBKU0M6OkpTT2JqZWN0KiBn
ZXRPdXRPZkxpbmVDYWNoZWRXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vZGUmCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+d29ybGQoKS53cmFwcGVycygpLmdldCgm
bm9kZSk7CiB9CiAKLXZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFs
U2xvd0Nhc2UoTm9kZSogcm9vdCkKK3ZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVl
QnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSYgcm9vdCkKIHsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhlY1N0YXRlKHJvb3QtPmRvY3VtZW50
KCkuZnJhbWUoKSk7Ci0gICAgaWYgKCFsZXhpY2FsR2xvYmFsT2JqZWN0KQorICAgIGF1dG8gZnJh
bWUgPSByb290LmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpyb290KTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3Qg
PSBtYWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jaygm
Z2xvYmFsT2JqZWN0KTsKKyAgICB0b0pTKCZnbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QsIHJv
b3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IGQ3MWIyNWMwZDg3YWFlNTYxOGRkMjc3MjQwYzljZGM1
MGEwOGMzMWQuLjc1OTJlZDc0YmNlOTdlYTBjYTNhNDgyYTk0OTE4ZDcwMTdkYjljZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCkBAIC02OSwxNiArNjksMTEg
QEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2IKIC8vIHJvb3QuIEluIHRoZSBKYXZhU2NyaXB0IERP
TSwgYSBub2RlIHRyZWUgc3Vydml2ZXMgYXMgbG9uZyBhcyB0aGVyZSBpcyBhCiAvLyByZWZlcmVu
Y2UgdG8gYW55IG5vZGUgaW4gdGhlIHRyZWUuIFRvIG1vZGVsIHRoZSBKYXZhU2NyaXB0IERPTSBv
biB0b3Agb2YKIC8vIHRoZSBDKysgRE9NLCB3ZSBlbnN1cmUgdGhhdCB0aGUgcm9vdCBvZiBldmVy
eSB0cmVlIGhhcyBhIEphdmFTY3JpcHQgd3JhcHBlci4KLXZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5
T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSogcm9vdCk7Ci1pbmxpbmUgdm9pZCB3
aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoTm9kZSogcm9vdCkKK3ZvaWQg
d2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSYgcm9v
dCk7CitpbmxpbmUgdm9pZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwo
Tm9kZSYgcm9vdCkKIHsKLSAgICBpZiAocm9vdC0+d3JhcHBlcigpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoIXJvb3QtPmhhc0NoaWxkTm9kZXMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2Uocm9vdCk7
CisgICAgaWYgKCFyb290LndyYXBwZXIoKSAmJiByb290Lmhhc0NoaWxkTm9kZXMoKSkKKyAgICAg
ICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2Uocm9vdCk7
CiB9CiAKIGlubGluZSB2b2lkKiByb290KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKaW5kZXggMTEzZGNjYjg0NmIwZWYxYzYzZDMxZDEwNDI5
YzdiOTRlYzE5NGJjMC4uOTE4YjY2MTRhYjA0MzQzYTk2NDk3MGJkZjc0ZjQ0NTllOTc4M2JmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaApAQCAtNDgsMTcg
KzQ4LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVj
dGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4gc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKSB7IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0p
OyB9CiAKICAgICBzdGF0aWMgSlNXaW5kb3dQcm94eSYgY3JlYXRlKEpTQzo6Vk0mLCBBYnN0cmFj
dERPTVdpbmRvdyYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCiAg
ICAgSlNET01HbG9iYWxPYmplY3QqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4odGFyZ2V0KCkpOyB9CisKICAgICB2b2lkIHNldFdpbmRvdyhK
U0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIHNldFdpbmRvdyhBYnN0cmFj
dERPTVdpbmRvdyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTQ4ZWRhYTc4YjFhYzYyZGZhODdi
NTUxZDJhZWY5YjhjNGZiMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAi
RnJhbWUuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKLSNpbmNsdWRlICJKU1dvcmtl
ckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNpbmNs
dWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUg
Ildvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrbGV0R2xv
YmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJhbWUuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ET01XaW5k
b3cqIGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCkKLXsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBs
ZXhpY2FsR2xvYmFsT2JqZWN0OwotICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwotICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0czxKU0RPTVdpbmRvd0Jhc2U+KHZtKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxKU0RPTVdp
bmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7Ci19Ci0KLUZyYW1lKiBmcmFtZUZy
b21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkKLXsK
LSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUoKSA6
IG51bGxwdHI7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QpCi17Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbGV4aWNhbEds
b2JhbE9iamVjdDsKLSAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01HbG9iYWxPYmplY3Q+KHZtKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCi1KU0M6
OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqIGZyYW1lKQotewotICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBmcmFtZS0+
d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+d2lu
ZG93KCk7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgp
OwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghZnJh
bWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS5nbG9i
YWxPYmplY3Qod29ybGQpOwotfQotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRnJhbWUqIGZyYW1lKQotewotICAgIHJldHVybiBmcmFt
ZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpIDogbnVsbHB0cjsKLX0KLQot
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKLXsKLSAgICBpZiAoYXV0byogc2NyaXB0
Q29udHJvbGxlciA9IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAgICAg
ICByZXR1cm4gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci0gICAgcmV0
dXJuIG51bGxwdHI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTUwNjMwOTk2MGI5MjgxZWQxMDAy
MTkzNzUzZmM5MjVhZGM0MDgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDEx
IEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3Bh
Y2UgSlNDIHsKLWNsYXNzIENhbGxGcmFtZTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotfQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIERPTVdyYXBwZXJX
b3JsZDsKLWNsYXNzIEZyYW1lOwotY2xhc3MgTm9kZTsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci1jbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKLQotRE9NV2luZG93KiBk
b21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLUZyYW1lKiBmcmFt
ZUZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwotU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9i
amVjdCopOwotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUq
KTsKLQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYs
IE5vZGUqKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dChET01XcmFwcGVyV29ybGQmLCBGcmFtZSopOwotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCmluZGV4IDBiYWZhNzk4MzA5YzE2NTBjNjQwMmJkMDZlZWE3MzAxMTk2ZTNl
MzMuLmRiYWNkYTVlNDliZmE5MjhkOTY5MGI4NGEzZmE2MDczN2QzMTk0YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApA
QCAtNTYsMTUgKzU2LDggQEAKICNpbmNsdWRlICJKU1JUQ0NlcnRpZmljYXRlLmgiCiAjaW5jbHVk
ZSAiSlNSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpZiBQTEFURk9STShDT0NPQSkKLSNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2VuZGlmCi0jaWYgVVNF
KENHKQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNlbmRpZgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9CaWdJbnRPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Cb29sZWFuT2JqZWN0
Lmg+CkBAIC0xMDEsNiArOTQsMTQgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKKyNpZiBVU0UoQ0cpCisjaW5jbHVk
ZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2VuZGlm
CisKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogI2luY2x1ZGUgIkpT
T2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCkBAIC0xMTMs
NiArMTE0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFs
aXplZFNjcmlwdFZhbHVlKTsKQEAgLTU1NiwxOCArNTU4LDE0IEBAIHByb3RlY3RlZDoKICNpZiBF
TkFCTEUoV0VCX0NSWVBUTykKIHN0YXRpYyBib29sIHdyYXBDcnlwdG9LZXkoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBWZWN0
b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleSk7CisgICAgYXV0byBjb250ZXh0ID0g
ZXhlY3V0aW9uQ29udGV4dChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gY29udGV4
dCAmJiBjb250ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleSk7CiB9CiAKIHN0YXRp
YyBib29sIHVud3JhcENyeXB0b0tleShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtl
eSkKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnVud3JhcENyeXB0b0tleSh3
cmFwcGVkS2V5LCBrZXkpOworICAgIGF1dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQobGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4dC0+dW53cmFw
Q3J5cHRvS2V5KHdyYXBwZWRLZXksIGtleSk7CiB9CiAjZW5kaWYKIApAQCAtOTU4LDcgKzk1Niw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8mIHZtID0gbV9sZXhpY2FsR2xvYmFsT2JqZWN0LT52
bSgpOwogICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBtX2xleGljYWxHbG9iYWxPYmplY3Q7
CiAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpTRE9NR2xvYmFsT2JqZWN0Pih2
bSkpCi0gICAgICAgICAgICByZXR1cm4gdG9KUyhtX2xleGljYWxHbG9iYWxPYmplY3QsIGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksICZhcnJheUJ1ZmZlcik7CisgICAg
ICAgICAgICByZXR1cm4gdG9KUyhnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCksICZhcnJheUJ1ZmZlcik7CiAKICAgICAgICAgaWYgKGF1dG8qIGJ1
ZmZlciA9IGFycmF5QnVmZmVyLm1fd3JhcHBlci5nZXQoKSkKICAgICAgICAgICAgIHJldHVybiBi
dWZmZXI7CkBAIC0yNTY2LDcgKzI1NjQsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fY2Fu
Q3JlYXRlRE9NT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgZmls
ZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRl
KG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+c3RyaW5n
KCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1vZGlmaWVk
KTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGV4ZWN1dGlvbkNvbnRleHQobV9s
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJpbmcoKSks
IHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMyOTYsNyArMzI5NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5kZXhd
KQotICAgICAgICAgICAgbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0gPSBPZmZzY3JlZW5DYW52
YXM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgV1RGTW92ZShtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuYXQoaW5k
ZXgpKSk7CisgICAgICAgICAgICBtX29mZnNjcmVlbkNhbnZhc2VzW2luZGV4XSA9IE9mZnNjcmVl
bkNhbnZhczo6Y3JlYXRlKCpleGVjdXRpb25Db250ZXh0KG1fbGV4aWNhbEdsb2JhbE9iamVjdCks
IFdURk1vdmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLmF0KGluZGV4KSkpOwogCiAgICAg
ICAgIGF1dG8gb2Zmc2NyZWVuQ2FudmFzID0gbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0uZ2V0
KCk7CiAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKG9mZnNjcmVlbkNhbnZhcyk7CkBAIC0zMzYw
LDcgKzMzNTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlmICghbV9ydGNEYXRhQ2hhbm5lbHNb
aW5kZXhdKSB7CiAgICAgICAgICAgICBhdXRvIGRldGFjaGVkQ2hhbm5lbCA9IFdURk1vdmUobV9k
ZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5hdChpbmRleCkpOwotICAgICAgICAgICAgbV9ydGNEYXRh
Q2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZGV0YWNoZWRDaGFu
bmVsLT5pZGVudGlmaWVyLCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+bGFiZWwpLCBXVEZNb3Zl
KGRldGFjaGVkQ2hhbm5lbC0+b3B0aW9ucyksIGRldGFjaGVkQ2hhbm5lbC0+c3RhdGUpOworICAg
ICAgICAgICAgbV9ydGNEYXRhQ2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0
ZSgqZXhlY3V0aW9uQ29udGV4dChtX2xleGljYWxHbG9iYWxPYmplY3QpLCBkZXRhY2hlZENoYW5u
ZWwtPmlkZW50aWZpZXIsIFdURk1vdmUoZGV0YWNoZWRDaGFubmVsLT5sYWJlbCksIFdURk1vdmUo
ZGV0YWNoZWRDaGFubmVsLT5vcHRpb25zKSwgZGV0YWNoZWRDaGFubmVsLT5zdGF0ZSk7CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShtX3J0Y0RhdGFDaGFubmVsc1tpbmRl
eF0uZ2V0KCkpOwpAQCAtMzM4NSw3ICszMzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBp
bWFnZURhdGFTaXplID0gbG9naWNhbFNpemU7CiAgICAgICAgIGltYWdlRGF0YVNpemUuc2NhbGUo
cmVzb2x1dGlvblNjYWxlKTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQml0bWFwOjpj
cmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9s
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIGNvbG9yU3BhY2UsIHJlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpleGVjdXRpb25Db250ZXh0KG1fbGV4
aWNhbEdsb2JhbE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCBjb2xvclNwYWNlLCByZXNvbHV0aW9uU2NhbGUpOwogICAgICAgICBpZiAoIWJ1ZmZlcikg
ewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAg
LTM2NTEsNyArMzY0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICAgICAgICAgIGlmICghbV9jYW5DcmVhdGVET01PYmplY3QpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxv
Yjo6ZGVzZXJpYWxpemUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5n
KCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKGV4ZWN1dGlv
bkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygp
KSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJp
bmcoKSkpLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAg
ICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNhY2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAppbmRleCBjM2E4NmY1YzRkM2MzOTk5NTQxOWNiMGE1MTU0MDg4N2E2NjZk
ZGRjLi42NDliMjFhOTk1YzI3ODA4YWY2OGE5MDVkMWI5ZDU1MmVmOGI0ZjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgQUxXQVlTX0lOTElO
RSBOb2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFz
c2VydGlvbihDaGkKICAgICAgICAgICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQtPm5l
eHRTaWJsaW5nKCksICpjaGlsZCk7CiAgICAgICAgICAgICBhdXRvIHN1YnRyZWVPYnNlcnZhYmls
aXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgKmNoaWxkKTsKICAgICAgICAgICAg
IGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRyZWVPYnNlcnZh
YmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxlQnlS
ZWZQdHIpCi0gICAgICAgICAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlS
ZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgICAgICAgICB3aWxsQ3JlYXRlUG9zc2libHlP
cnBoYW5lZFRyZWVCeVJlbW92YWwoKmNoaWxkKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjEw
LDcgKzIxMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVOb2Rl
V2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgfQogCiAgICAgaWYgKHNv
dXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxpdHkg
PT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0cikK
LSAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKCZjaGlsZFRv
UmVtb3ZlKTsKKyAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFs
KGNoaWxkVG9SZW1vdmUpOwogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
IWRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGRiYTYwMGNjNzE3OTU3Zjk4OWE2OTMzYmRmZDIyMWM2ODU2
YTdkZjUuLjQyZGFjZDJkZDVjZTNlNWY2MjMzM2EyMTYyY2MzNzY3NDZlOGZiODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCIKICNp
bmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRv
d0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJL
ZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3QuaCIKQEAgLTIxMCw3ICsy
MTEsNiBAQAogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIlNjcmlw
dFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3Jp
cHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKQEAg
LTg3MTYsOCArODcxNiw4IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UoY29uc3QgV1RG
TG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIFZlCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBtZXNzYWdlTGV2ZWxGcm9tV1RG
TG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1l
c3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNTdGF0ZSh3ZWFr
VGhpcy0+ZnJhbWUoKSkpOwotCisgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG1haW5Xb3Js
ZEdsb2JhbE9iamVjdCh3ZWFrVGhpcy0+ZnJhbWUoKSk7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9
IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwgTWVz
c2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgd2Vha1RoaXMtPmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVz
c2FnZSkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCmluZGV4IDk1NDQ2Nzk0MzdmOGUxZTAxNDczY2I2YTcwY2Q1ZDA3MmZjNzFj
MzQuLmQyOTViMjU2ZWY3OTJiMjZiYzkxN2JiMWE1YzQ4NDdhMzRlODdlOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTU2LDcgKzU2LDYg
QEAKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgotI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
IgpAQCAtNTQzLDExICs1NDIsMTcgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBKU0M6OkpTR2xvYmFsT2JqZWN0KiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpnbG9iYWxPYmplY3QoKQogewotICAgIGlmIChpczxEb2N1bWVudD4oKnRo
aXMpKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Z2xvYmFsT2JqZWN0KG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpLCBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLmZyYW1lKCkpOworICAgIGlmIChp
czxEb2N1bWVudD4oKnRoaXMpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMg
dGhhdCBmcmFtZSBpcyBub24tbnVsbD8KKyAgICAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVl
cyB0aGF0IGdsb2JhbE9iamVjdCB3aWxsIG5vdCByZXR1cm4gbnVsbD8KKyAgICAgICAgcmV0dXJu
IGRvd25jYXN0PERvY3VtZW50PigqdGhpcykuZnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICB9CiAKLSAgICBpZiAoaXM8V29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Omdsb2Jh
bE9iamVjdChkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsKKyAg
ICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkgeworICAgICAgICAv
LyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoYXQgc2NyaXB0KCkgaXMgbm9uLW51bGw/CisgICAg
ICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxTY29wZVdyYXBwZXIoKSB3
aWxsIG5vdCByZXR1cm4gbnVsbD8KKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPmdsb2JhbFNjb3BlV3JhcHBlcigpOwor
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyLmNwcAppbmRleCBiNDM5N2I0NmFkNzdlYTg5MTBhMWYyNjc1NGNmM2Ix
N2YxZjlkYjMwLi4xYWI5ODUzNzk5M2ViZTY0MDc2YzcyNWVlYTVlZWQyNmIxZTEzYzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRBUElEaXNwYXRjaGVyLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1Byb21pc2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CmluZGV4IDlkZGZjYmJmOGJiNDQ5N2FjNzJlYjY5YjBjMDQ0NzM0YmViMmEwN2IuLmQxZjkyN2Qx
YzUxM2NhYmVlZjMxZjczYmRmNDlmMzA3Zjc4NmZhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAg
LTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNs
dWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCA4YWFkYWQxZmJhZWUzODdlODk3
MGE2NWYxZjI5N2VmOWVkMmFmOTgzLi41ZjYzMWRmNTk3NjM4MjFlZWVkOGQ1M2U3MWQ1OWEyNWFm
MTBkMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmNwcApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlN5c3RlbVNvdW5kTWFuYWdlci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgi
CkBAIC0xNjAsMTUgKzE1OSwxNSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6ZGlzY29u
bmVjdENsaWVudCgpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTZWxmVG9HbG9i
YWxPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgYXV0byYgbGV4
aWNhbEdsb2JhbE9iamVjdCA9ICpnbG9iYWxPYmplY3Qod29ybGQsIG1fZnJvbnRlbmRQYWdlID8g
Jm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKSA6IG51bGxwdHIpOwotICAgIGF1dG8mIHZtID0g
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMg
bV9mcm9udGVuZFBhZ2UgaXMgbm9uLW51bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVl
cyBnbG9iYWxPYmplY3QncyByZXR1cm4gdmFsdWUgaXMgbm9uLW51bGw/CisgICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gKm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9iYWxP
YmplY3Qod29ybGQpOworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOwotCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGdsb2JhbE9iamVjdC5w
dXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3RvckZy
b250ZW5kSG9zdCIpLCB0b0pTPElETEludGVyZmFjZTxJbnNwZWN0b3JGcm9udGVuZEhvc3Q+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICp0aGlzKSk7CisgICAgZ2xvYmFsT2Jq
ZWN0LnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiSW5zcGVj
dG9yRnJvbnRlbmRIb3N0IiksIHRvSlM8SURMSW50ZXJmYWNlPEluc3BlY3RvckZyb250ZW5kSG9z
dD4+KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwogICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICByZXBvcnRFeGNlcHRpb24o
Jmdsb2JhbE9iamVjdCwgc2NvcGUuZXhjZXB0aW9uKCkpOwogfQogCiB2b2lkIEluc3BlY3RvckZy
b250ZW5kSG9zdDo6bG9hZGVkKCkKQEAgLTUwMywxOSArNTAyLDIwIEBAIHN0YXRpYyB2b2lkIHBv
cHVsYXRlQ29udGV4dE1lbnUoVmVjdG9yPEluc3BlY3RvckZyb250ZW5kSG9zdDo6Q29udGV4dE1l
bnVJdGVtPiYmCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV2
ZW50JiBldmVudCwgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mJiBpdGVtcykKIHsKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZnJvbnRl
bmRQYWdlIGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgZ2xvYmFs
T2JqZWN0J3MgcmV0dXJuIHZhbHVlIGlzIG5vbi1udWxsPwogICAgIEFTU0VSVChtX2Zyb250ZW5k
UGFnZSk7Ci0KLSAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmdsb2JhbE9iamVjdChk
ZWJ1Z2dlcldvcmxkKCksICZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGF1dG8m
IHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwotICAgIGF1dG8gdmFsdWUgPSBsZXhpY2Fs
R2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiSW5zcGVjdG9yRnJvbnRlbmRBUEkiKSk7CisgICAgYXV0byYgZ2xvYmFs
T2JqZWN0ID0gKm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9iYWxPYmpl
Y3QoZGVidWdnZXJXb3JsZCgpKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwor
ICAgIGF1dG8gdmFsdWUgPSBnbG9iYWxPYmplY3QuZ2V0KCZnbG9iYWxPYmplY3QsIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3RvckZyb250ZW5kQVBJIikpOwogICAgIEFT
U0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlLmlzT2JqZWN0KCkpOwogICAgIGF1dG8qIGZy
b250ZW5kQVBJT2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIAorCiAgICAgQ29udGV4dE1l
bnUgbWVudTsKICAgICBwb3B1bGF0ZUNvbnRleHRNZW51KFdURk1vdmUoaXRlbXMpLCBtZW51KTsK
IAotICAgIGF1dG8gbWVudVByb3ZpZGVyID0gRnJvbnRlbmRNZW51UHJvdmlkZXI6OmNyZWF0ZSh0
aGlzLCB7ICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmcm9udGVuZEFQSU9iamVjdCB9LCBtZW51Lml0
ZW1zKCkpOworICAgIGF1dG8gbWVudVByb3ZpZGVyID0gRnJvbnRlbmRNZW51UHJvdmlkZXI6OmNy
ZWF0ZSh0aGlzLCB7ICZnbG9iYWxPYmplY3QsIGZyb250ZW5kQVBJT2JqZWN0IH0sIG1lbnUuaXRl
bXMoKSk7CiAgICAgbV9tZW51UHJvdmlkZXIgPSBtZW51UHJvdmlkZXIucHRyKCk7CiAgICAgbV9m
cm9udGVuZFBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLnNob3dDb250ZXh0TWVudShldmVu
dCwgbWVudVByb3ZpZGVyKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDE4NzkzZmYwNjYzMzhmYjYw
YTM0ZGVjOTA5YmMyZGRkMjhiZWFmYjQuLjVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNhMzY5
YTQyOGU1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0yMjgsOCArMjI4LDExIEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zCiAgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JF
bnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmICghd2luZG93KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoYXV0byogY29u
c29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKLSAgICAg
ICAgY29uc29sZUFnZW50LT5mcmFtZVdpbmRvd0Rpc2NhcmRlZCh3aW5kb3cpOworICAgICAgICBj
b25zb2xlQWdlbnQtPmZyYW1lV2luZG93RGlzY2FyZGVkKCp3aW5kb3cpOwogfQogCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGRhYTYy
ZjIwNWU4MDlhNjgzMjhkZTcyMmQzMjQxNWYzM2MyMDQwZGUuLjQ4MDJlZDc0NWQ5NzUzZGExMDMx
OTQ5ZmY3ZDllZmVkMzFlZDdmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0yNyw4ICsyNyw2IEBACiAjaW5j
bHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDb21tYW5kTGlu
ZUFQSU1vZHVsZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC03NCwyOCArNzIsMzUgQEAgdm9pZCBXZWJJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IoRE9NV2luZG93KiB3aW5kb3cpCiAgICAgaWYg
KG1fc2NyaXB0U3RhdGVUb0lkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVj
dG9yPGxvbmc+IGlkc1RvUmVtb3ZlOwotICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2lkVG9J
bmplY3RlZFNjcmlwdCkgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0ID0gaXQudmFsdWUuZ2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGlmICh3aW5kb3cg
IT0gZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBtX3NjcmlwdFN0YXRlVG9JZC5yZW1vdmUobGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgICAgIGlkc1RvUmVtb3ZlLmFwcGVuZChpdC5rZXkpOwotICAgIH0K
LQotICAgIGZvciAoYXV0byYgaWQgOiBpZHNUb1JlbW92ZSkKLSAgICAgICAgbV9pZFRvSW5qZWN0
ZWRTY3JpcHQucmVtb3ZlKGlkKTsKKyAgICBBU1NFUlQod2luZG93KTsKKyAgICBhdXRvKiBkb2N1
bWVudCA9IHdpbmRvdy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBOb3cgcmVtb3ZlIHNjcmlwdCBzdGF0ZXMgdGhhdCBoYXZlIGlkIGJ1
dCBubyBpbmplY3RlZCBzY3JpcHQuCi0gICAgVmVjdG9yPEpTQzo6SlNHbG9iYWxPYmplY3QqPiBz
Y3JpcHRTdGF0ZXNUb1JlbW92ZTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGl0IDogbV9zY3JpcHRT
dGF0ZVRvSWQpIHsKLSAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCA9IGl0LmtleTsKLSAgICAgICAgaWYgKHdpbmRvdyA9PSBkb21XaW5kb3dGcm9tRXhlY1N0
YXRlKGxleGljYWxHbG9iYWxPYmplY3QpKQotICAgICAgICAgICAgc2NyaXB0U3RhdGVzVG9SZW1v
dmUuYXBwZW5kKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHsKKyAgICAgICAgVmVjdG9yPGxv
bmc+IGlkc1RvUmVtb3ZlOworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9pZFRvSW5qZWN0
ZWRTY3JpcHQpIHsKKyAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGVudHJ5LnZhbHVl
Lmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHQoZ2xvYmFs
T2JqZWN0KSA9PSBkb2N1bWVudCkgeworICAgICAgICAgICAgICAgIG1fc2NyaXB0U3RhdGVUb0lk
LnJlbW92ZShnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgICAgIGlkc1RvUmVtb3ZlLmFwcGVu
ZChlbnRyeS5rZXkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoYXV0
byYgaWQgOiBpZHNUb1JlbW92ZSkKKyAgICAgICAgICAgIG1faWRUb0luamVjdGVkU2NyaXB0LnJl
bW92ZShpZCk7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0IDog
c2NyaXB0U3RhdGVzVG9SZW1vdmUpCi0gICAgICAgIG1fc2NyaXB0U3RhdGVUb0lkLnJlbW92ZShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBOb3cgcmVtb3ZlIGdsb2JhbCBvYmplY3RzIHRo
YXQgaGF2ZSBubyBpbmplY3RlZCBzY3JpcHQuCisgICAgeworICAgICAgICBWZWN0b3I8SlNDOjpK
U0dsb2JhbE9iamVjdCo+IGdsb2JhbE9iamVjdHNUb1JlbW92ZTsKKyAgICAgICAgZm9yIChhdXRv
JiBlbnRyeSA6IG1fc2NyaXB0U3RhdGVUb0lkKSB7CisgICAgICAgICAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBlbnRyeS5rZXk7CisgICAgICAgICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dChnbG9i
YWxPYmplY3QpID09IGRvY3VtZW50KQorICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdHNUb1Jl
bW92ZS5hcHBlbmQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8m
IGdsb2JhbE9iamVjdCA6IGdsb2JhbE9iamVjdHNUb1JlbW92ZSkKKyAgICAgICAgICAgIG1fc2Ny
aXB0U3RhdGVUb0lkLnJlbW92ZShnbG9iYWxPYmplY3QpOworICAgIH0KIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCmluZGV4IGE0
NDdmNzA1MzllMDZlNGM4MzA0Mjc2ZmNiNGNlMWE1ODUxNmVhZTguLjIyODA2M2ZiNTg3YmVmOWQ3
OGI4OTkwZjVmYzFjNjhmZWU2MDFkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKQEAgLTExNCwyMSArMTE0LDIxIEBAIEV4cGVjdGVkPFJlZjxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+LCBQcm90CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiUGFnZSBkb21haW4gbXVzdCBiZSBlbmFibGVkIl9z
KTsKIAogICAgIGF1dG8gcmVzdWx0ID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6QXBwbGljYXRp
b25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+OjpjcmVhdGUoKTsKLSAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9ICZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgYXV0byogZG9jdW1lbnRMb2FkZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKKyAgICBtX2luc3BlY3RlZFBhZ2Uu
Zm9yRWFjaEZyYW1lKFsmXSAoRnJhbWUmIGZyYW1lKSB7CisgICAgICAgIGF1dG8qIGRvY3VtZW50
TG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICAgICAgaWYgKCFk
b2N1bWVudExvYWRlcikKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGF1dG8mIGhvc3QgPSBkb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25DYWNo
ZUhvc3QoKTsKICAgICAgICAgU3RyaW5nIG1hbmlmZXN0VVJMID0gaG9zdC5hcHBsaWNhdGlvbkNh
Y2hlSW5mbygpLm1hbmlmZXN0LnN0cmluZygpOwogICAgICAgICBpZiAoIW1hbmlmZXN0VVJMLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKFByb3RvY29sOjpBcHBsaWNh
dGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdDo6Y3JlYXRlKCkKLSAgICAgICAgICAgICAgICAu
c2V0RnJhbWVJZChwYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpKQorICAgICAgICAgICAgICAgIC5z
ZXRGcmFtZUlkKHBhZ2VBZ2VudC0+ZnJhbWVJZCgmZnJhbWUpKQogICAgICAgICAgICAgICAgIC5z
ZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAgICAgICAgICAgICAuc2V0U3RhdHVzKHN0
YXRpY19jYXN0PGludD4oaG9zdC5zdGF0dXMoKSkpCiAgICAgICAgICAgICAgICAgLnJlbGVhc2Uo
KSk7CiAgICAgICAgIH0KLSAgICB9CisgICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcAppbmRleCBlYTU2ODAwNTVhNGY0OWNlMjFiOTQzNjIxNDJjYTk4YzNiZDY2
ZTQ2Li44MzIyYzhkYjJhOGE3ZGE5YjcxNDk0MTMxY2M1NjRhNmNiZDMwMjE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCiAjaW5j
bHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiUGF0aDJELmgiCi0jaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTdHJpbmdBZGFwdG9ycy5oIgogI2luY2x1ZGUgIldl
YkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNw
cAppbmRleCAzODA1Zjg0MjQ1ZjZjYjczYzQ1ODQ0MzY0ZDU0ZjgyMmI2YmViMjZkLi43YTc5MGJi
MjNjOGYzN2FmNTdlNDI4NGIzNjdjYWQ5ZDY3OWE0MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtODUsNiAr
ODUsNyBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nU2VjdXJpdHkuaCIKKyNpbmNsdWRlICJKU0RP
TVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkpTTm9kZS5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKQEAgLTk2LDcgKzk3LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpA
QCAtMTE2MywyMCArMTE2NCwxNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpmb2N1c05vZGUo
KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9ub2RlVG9Gb2N1cyk7Ci0KLSAgICBS
ZWZQdHI8Tm9kZT4gbm9kZSA9IG1fbm9kZVRvRm9jdXMuZ2V0KCk7Ci0gICAgbV9ub2RlVG9Gb2N1
cyA9IG51bGxwdHI7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1l
KCk7CisgICAgYXV0byBub2RlID0gc3RkOjpleGNoYW5nZShtX25vZGVUb0ZvY3VzLCBudWxscHRy
KTsKKyAgICBhdXRvIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlw
dFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKTsKLSAgICBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9y
KHNjcmlwdFN0YXRlKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSBtYWluV29ybGRHbG9iYWxP
YmplY3QoKmZyYW1lKTsKKyAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3IoJmdsb2JhbE9iamVjdCk7CiAgICAgaWYgKGluamVj
dGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5qZWN0ZWRT
Y3JpcHQuaW5zcGVjdE9iamVjdChub2RlQXNTY3JpcHRWYWx1ZSgqc2NyaXB0U3RhdGUsIG5vZGUu
Z2V0KCkpKTsKKyAgICBpbmplY3RlZFNjcmlwdC5pbnNwZWN0T2JqZWN0KG5vZGVBc1NjcmlwdFZh
bHVlKGdsb2JhbE9iamVjdCwgbm9kZS5nZXQoKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQs
IHVuc2lnbmVkKQpAQCAtMTg5Miw3ICsxODkwLDExIEBAIFJlZjxQcm90b2NvbDo6RE9NOjpFdmVu
dExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVy
CiAKICAgICAgICAgaWYgKGRvY3VtZW50KSB7CiAgICAgICAgICAgICBoYW5kbGVyT2JqZWN0ID0g
c2NyaXB0TGlzdGVuZXIuZW5zdXJlSlNGdW5jdGlvbigqZG9jdW1lbnQpOwotICAgICAgICAgICAg
Z2xvYmFsT2JqZWN0ID0gV2ViQ29yZTo6Z2xvYmFsT2JqZWN0KHNjcmlwdExpc3RlbmVyLmlzb2xh
dGVkV29ybGQoKSwgZG9jdW1lbnQpOworICAgICAgICAgICAgaWYgKGF1dG8gZnJhbWUgPSBkb2N1
bWVudC0+ZnJhbWUoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVl
ZCB0aGUgY2FuRXhlY3V0ZVNjcmlwdHMgY2hlY2sgaGVyZT8KKyAgICAgICAgICAgICAgICBpZiAo
ZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0
KSkKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmds
b2JhbE9iamVjdChzY3JpcHRMaXN0ZW5lci5pc29sYXRlZFdvcmxkKCkpOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGhhbmRsZXJPYmplY3QgJiYgZ2xvYmFsT2JqZWN0
KSB7CkBAIC0yODQ2LDEyICsyODQ4LDEyIEBAIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoTm9kZSogbm9kCiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvJiBzdGF0ZSA9
ICptYWluV29ybGRFeGVjU3RhdGUoZnJhbWUpOwotICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcigmc3RhdGUpOworICAgIGF1
dG8mIGdsb2JhbE9iamVjdCA9IG1haW5Xb3JsZEdsb2JhbE9iamVjdCgqZnJhbWUpOworICAgIGF1
dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlw
dEZvcigmZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53
cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKHN0YXRlLCBub2RlKSwgb2JqZWN0R3JvdXApOwor
ICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKGds
b2JhbE9iamVjdCwgbm9kZSksIG9iamVjdEdyb3VwKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9N
QWdlbnQ6OnNjcmlwdFZhbHVlQXNOb2RlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAKaW5kZXggNjI4NmI2NTIxMjZlMGRkMTMzZDJjMjRlNDdmY2Q3Y2RjNzM3NmE3My4u
NWQ1MTJlNzhlMjAwMzI4OGQwMTUzMTM2ODdlNjgzODk5MDhiNzNlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJB
Z2VudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgog
I2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93
Q3VzdG9tLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXaW5kb3dP
cldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcElubGluZXMuaD4KQEAgLTYxNywxNCArNjE3LDE3IEBAIHZvaWQgSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFN0CiAgICAgaWYgKCFnZXREb2N1bWVudEFuZElEQkZhY3RvcnlGcm9tRnJhbWVPclNl
bmRGYWlsdXJlKGZyYW1lLCBkb2N1bWVudCwgaWRiRmFjdG9yeSwgY2FsbGJhY2spKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFt
ZSkpOwotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UgPSBrZXlSYW5nZSA/IGlk
YktleVJhbmdlRnJvbUtleVJhbmdlKCprZXlSYW5nZSkgOiBudWxscHRyOwotICAgIGlmIChrZXlS
YW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsKLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKCJD
b3VsZCBub3QgcGFyc2Uga2V5IHJhbmdlLiJfcyk7Ci0gICAgICAgIHJldHVybjsKKyAgICBSZWZQ
dHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlOworICAgIGlmIChrZXlSYW5nZSkgeworICAgICAg
ICBpZGJLZXlSYW5nZSA9IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKCprZXlSYW5nZSk7CisgICAg
ICAgIGlmICghaWRiS2V5UmFuZ2UpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVy
ZSgiQ291bGQgbm90IHBhcnNlIGtleSByYW5nZS4iX3MpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmPERhdGFMb2FkZXI+IGRhdGFMb2FkZXIgPSBEYXRh
TG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2spLCBpbmplY3RlZFNjcmlw
dCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIFdURk1vdmUoaWRiS2V5UmFuZ2UpLCBza2lw
Q291bnQsIHBhZ2VTaXplKTsKKyAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3IoJm1haW5Xb3JsZEdsb2JhbE9iamVjdCgqZnJh
bWUpKTsKKyAgICBhdXRvIGRhdGFMb2FkZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQs
IFdURk1vdmUoY2FsbGJhY2spLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRl
eE5hbWUsIFdURk1vdmUoaWRiS2V5UmFuZ2UpLCBza2lwQ291bnQsIHBhZ2VTaXplKTsKICAgICBk
YXRhTG9hZGVyLT5zdGFydChpZGJGYWN0b3J5LCAmZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCks
IGRhdGFiYXNlTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCAyMjNhNjc2N2JlMjcx
ZWU0ZDIyZGVkMWQ2YmU2MGNhNzA3ODE3YzgxLi4zY2ViNGI0N2YxMDY4YTBhZmVhZjAwZjE3OWMy
ODAwYzQ3NmJkNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIkpTRE9N
V2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJKU1dl
YlNvY2tldC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCkBAIC02NCw3ICs2NSw2IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTdWJy
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKQEAgLTEw
NDMsMTEgKzEwNDMsMTEgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNwZWN0b3JOZXR3b3JrQWcKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgZnJhbWUgb2Ygd2ViIHNv
Y2tldCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zKTsKIAotICAgIGF1dG8mIHN0YXRlID0gKm1haW5X
b3JsZEV4ZWNTdGF0ZShmcmFtZSk7Ci0gICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZzdGF0ZSk7CisgICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gbWFpbldvcmxkR2xvYmFsT2JqZWN0KCpmcmFtZSk7CisgICAgYXV0byBpbmpl
Y3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZn
bG9iYWxPYmplY3QpOwogICAgIEFTU0VSVCghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKTsK
IAotICAgIGF1dG8gb2JqZWN0ID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdCh3ZWJTb2NrZXRB
c1NjcmlwdFZhbHVlKHN0YXRlLCB3ZWJTb2NrZXQpLCBvYmplY3RHcm91cCk7CisgICAgYXV0byBv
YmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHdlYlNvY2tldEFzU2NyaXB0VmFsdWUo
Z2xvYmFsT2JqZWN0LCB3ZWJTb2NrZXQpLCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFvYmplY3Qp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0
byBjYXN0IFdlYlNvY2tldCIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCBiN2M2YjBlYjIz
NGZiMTAzMzllZDFhZmQyOGE1OTcyYWExNDA0MTVmLi5jMzhlODA2MTM4MjM1MjFmNGFmZjNiYTIx
NzgzN2NkOTQzYmViZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAK
ICNpbmNsdWRlICJQYWdlRGVidWdnZXIuaCIKICNpbmNsdWRlICJQYWdlSGVhcEFnZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVk
ZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50Lmgi
CiAjaW5jbHVkZSAiV2ViRGVidWdnZXJBZ2VudC5oIgpAQCAtNjYsNyArNjUsNiBAQAogI2luY2x1
ZGUgIlJ1bkxvb3BPYnNlcnZlci5oIgogI2VuZGlmCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtMjkwLDYgKzI4OCwxMiBAQCBkb3VibGUg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZXN0YW1wKCkKICAgICByZXR1cm4gbV9lbnZpcm9u
bWVudC5leGVjdXRpb25TdG9wd2F0Y2goKS5lbGFwc2VkVGltZSgpLnNlY29uZHMoKTsKIH0KIAor
c3RhdGljIEZyYW1lKiBmcmFtZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgYXV0byBjb250ZXh0ID0gZXhlY3V0aW9uQ29udGV4dChnbG9iYWxPYmplY3QpOworICAg
IHJldHVybiBpczxEb2N1bWVudD4oY29udGV4dCkgPyBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRl
eHQpLmZyYW1lKCkgOiBudWxscHRyOworfQorCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5n
JiB0aXRsZSkKIHsKICAgICAvLyBBbGxvdyBkdXBsaWNhdGUgdW5uYW1lZCBwcm9maWxlcy4gRGlz
YWxsb3cgZHVwbGljYXRlIG5hbWVkIHByb2ZpbGVzLgpAQCAtMzEwLDcgKzMxNCw3IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBleGVjLCBjb25zdCBTCiAgICAgaWYgKCFtX3RyYWNraW5nICYmIG1fcGVuZGluZ0NvbnNv
bGVQcm9maWxlUmVjb3Jkcy5pc0VtcHR5KCkpCiAgICAgICAgIHN0YXJ0UHJvZ3JhbW1hdGljQ2Fw
dHVyZSgpOwogCi0gICAgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmFwcGVuZChjcmVh
dGVSZWNvcmRFbnRyeShUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxl
RGF0YSh0aXRsZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29uc29sZVByb2ZpbGUsIHRydWUsIGZy
YW1lRnJvbUV4ZWNTdGF0ZShleGVjKSkpOworICAgIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVj
b3Jkcy5hcHBlbmQoY3JlYXRlUmVjb3JkRW50cnkoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVh
dGVDb25zb2xlUHJvZmlsZURhdGEodGl0bGUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkNvbnNvbGVQ
cm9maWxlLCB0cnVlLCBmcmFtZShleGVjKSkpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnN0b3BGcm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKQEAgLTY3Niw3ICs2ODAsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZEZpcmVPYnNlcnZlckNhbGxiYWNrKCkKIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgYWN0aW9uSUQsIHVuc2lnbmVkIC8qYmF0
Y2hJZCovLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlKQogewotICAgIGFwcGVuZFJl
Y29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YShhY3Rpb25J
RCwgc2FtcGxlSWQpLCBUaW1lbGluZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJh
bWVGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICBhcHBlbmRSZWNvcmQo
VGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoYWN0aW9uSUQsIHNh
bXBsZUlkKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpQcm9iZVNhbXBsZSwgZmFsc2UsIGZyYW1lKGxl
eGljYWxHbG9iYWxPYmplY3QpKTsKIH0KIAogc3RhdGljIFByb3RvY29sOjpUaW1lbGluZTo6RXZl
bnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKaW5kZXggYmRm
Zjg0MzRkYmVmOGM1NDg1YjE1MDZlZDIwOGEwMWM5ZWNhZDIyNi4uZDE1ZTUzYTY5Nzg1ODViZjJj
OWM3ZGE0Y2ZkZWVhMTViYzMzMzI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcApAQCAtMzIsMTQgKzMyLDEyIEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJX
ZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25z
b2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtNDksMjAgKzQ3LDE1IEBAIFdlYkNvbnNvbGVBZ2VudDo6
V2ViQ29uc29sZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKIHsKIH0KIAotV2ViQ29u
c29sZUFnZW50Ojp+V2ViQ29uc29sZUFnZW50KCkgPSBkZWZhdWx0OwotCi12b2lkIFdlYkNvbnNv
bGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQoRE9NV2luZG93KiB3aW5kb3cpCit2b2lkIFdl
YkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQoRE9NV2luZG93JiB3aW5kb3cpCiB7
Ci0gICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9jb25zb2xlTWVzc2FnZXMpIHsKLSAgICAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IG1lc3NhZ2UtPmdsb2Jh
bE9iamVjdCgpOwotICAgICAgICBpZiAoIWxleGljYWxHbG9iYWxPYmplY3QpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaWYgKGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUobGV4aWNhbEds
b2JhbE9iamVjdCkgIT0gd2luZG93KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1l
c3NhZ2UtPmNsZWFyKCk7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50
KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9jb25zb2xlTWVzc2FnZXMpIHsK
KyAgICAgICAgICAgIGlmIChleGVjdXRpb25Db250ZXh0KG1lc3NhZ2UtPmdsb2JhbE9iamVjdCgp
KSA9PSBkb2N1bWVudCkKKyAgICAgICAgICAgICAgICBtZXNzYWdlLT5jbGVhcigpOworICAgICAg
ICB9CiAgICAgfQotCi0gICAgc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJj4o
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3Iod2luZG93
KTsKKyAgICBzdGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImPihtX2luamVjdGVk
U2NyaXB0TWFuYWdlcikuZGlzY2FyZEluamVjdGVkU2NyaXB0c0Zvcigmd2luZG93KTsKIH0KIAog
dm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25z
b2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFn
ZW50LmgKaW5kZXggOTBjNzA4ZTliODAxNzEyYjY1OTQwN2FlMGMxZDY2ODY4YWVhOTRhOC4uYTYx
NDc1MmU5MGNkZWFlMTM4OTE2ZmJmODBlZjg1NTg0YjdhNTExMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oCkBAIC0yNSw3ICsyNSw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg+CiAKQEAgLTM2LDE0ICszNSwxMiBAQCBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogY2xhc3MgV2Vi
Q29uc29sZUFnZW50IDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50IHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb25zb2xlQWdlbnQpOwotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdlYkNvbnNvbGVBZ2VudChXZWJBZ2VudENv
bnRleHQmKTsKLSAgICB+V2ViQ29uc29sZUFnZW50KCkgb3ZlcnJpZGU7Citwcm90ZWN0ZWQ6Cisg
ICAgZXhwbGljaXQgV2ViQ29uc29sZUFnZW50KFdlYkFnZW50Q29udGV4dCYpOwogCitwdWJsaWM6
CiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCi0gICAgdm9pZCBmcmFtZVdpbmRvd0Rp
c2NhcmRlZChET01XaW5kb3cqKTsKKyAgICB2b2lkIGZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdp
bmRvdyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRpdEFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRB
Z2VudC5jcHAKaW5kZXggZDUxMGRjMTcwNThlMTJiYWRlOWFlMDkyZDgwMTllYTg2YzhkMzM0Zi4u
MTc0ZDUxMTkzNGI5OTdiMWJhMGY5NWNhYmUxYzMzNjkwODc4ZWZmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRpdEFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuY3Bw
CkBAIC0yOSwxMiArMjksMTIgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBdWRpdERPTU9iamVjdC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNET01XaW5k
b3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVj
dC5oIgogI2luY2x1ZGUgIkpTSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaCIKICNpbmNsdWRlICJK
U0luc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVk
U2NyaXB0TWFuYWdlci5oPgpAQCAtNjAsOSArNjAsNyBAQCBJbmplY3RlZFNjcmlwdCBQYWdlQXVk
aXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1
bgogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQpCiAgICAgICAgIHJldHVybiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQp
OwotCi0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVj
U3RhdGUoJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSk7Ci0gICAgcmV0dXJuIGluamVjdGVk
U2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICByZXR1
cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoJm1haW5Xb3JsZEds
b2JhbE9iamVjdChtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpKTsKIH0KIAogSW5qZWN0ZWRT
Y3JpcHQgUGFnZUF1ZGl0QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpF
eGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggNTVkOTUxODQ5NDE5NWI5NmRmMTY1YTk0YzFjMjk2M2FkY2ViODM5NS4uODJiNWQy
NDRiNjI5NjQ2MTVmYzRjMTIzNzIzNTE0ZjI2ODFiMzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3Bw
CkBAIC0zOCwxMSArMzgsMTEgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNs
dWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
YWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlci5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVk
U2NyaXB0TWFuYWdlci5oPgpAQCAtMTM4LDEwICsxMzgsOCBAQCB2b2lkIFBhZ2VEZWJ1Z2dlckFn
ZW50OjpicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYgogCiBJbmplY3RlZFNjcmlwdCBQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8
UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0
SWQpCiB7Ci0gICAgaWYgKCFleGVjdXRpb25Db250ZXh0SWQpIHsKLSAgICAgICAgSlNDOjpKU0ds
b2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJm1faW5zcGVjdGVk
UGFnZS5tYWluRnJhbWUoKSk7Ci0gICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIo
KS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7Ci0gICAgfQorICAgIGlmICghZXhlY3V0
aW9uQ29udGV4dElkKQorICAgICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5q
ZWN0ZWRTY3JpcHRGb3IoJm1haW5Xb3JsZEdsb2JhbE9iamVjdChtX2luc3BlY3RlZFBhZ2UubWFp
bkZyYW1lKCkpKTsKIAogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3JJZCgqZXhlY3V0aW9uQ29udGV4dElk
KTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3Bw
CmluZGV4IGJiNGY2YmE3YzJjYzYxODU4NTg3MTk2Yzk3M2EyYzM4NmY4OGY0ZjguLmQwNjkwZDQ0
ZGUzY2VhZWQ5ZGMzMjVhOGJiZjFiZWQ3Yjg3ZmJmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAKQEAg
LTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRp
bmdBZ2VudHMuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVu
dGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
UnVudGltZUFnZW50LmNwcAppbmRleCBiMzJmM2Y2OTljMmQyYTM3NzI4OTc2MGIyNDVhYzgxNzg0
MTAyNDU4Li41M2EzNWYyNDMzZjhlZTE2MDZmOTZmNTFiMWMzMTM5NmQ1MGI0ZDdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50
aW1lQWdlbnQuY3BwCkBAIC0zNywxMSArMzcsMTAgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRv
d0N1c3RvbS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVF
bXVsYXRpb25TY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0
Lmg+CkBAIC05MSw3ICs5MCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IFBhZ2VS
dW50aW1lQWdlbnQ6OmRpc2FibGUoKQogdm9pZCBQYWdlUnVudGltZUFnZW50OjpmcmFtZU5hdmln
YXRlZChGcmFtZSYgZnJhbWUpCiB7CiAgICAgLy8gRW5zdXJlIGV4ZWN1dGlvbiBjb250ZXh0IGlz
IGNyZWF0ZWQgZm9yIHRoZSBmcmFtZSBldmVuIGlmIGl0IGRvZXNuJ3QgaGF2ZSBzY3JpcHRzLgot
ICAgIG1haW5Xb3JsZEV4ZWNTdGF0ZSgmZnJhbWUpOworICAgIG1haW5Xb3JsZEdsb2JhbE9iamVj
dChmcmFtZSk7CiB9CiAKIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKQEAgLTEwNiw4
ICsxMDUsNyBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0SW5X
b3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZAogSW5qZWN0ZWRTY3JpcHQgUGFnZVJ1
bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNv
bnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCiB7CiAgICAgaWYgKCFleGVjdXRpb25Db250
ZXh0SWQpIHsKLSAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogc2NyaXB0U3RhdGUgPSBtYWlu
V29ybGRFeGVjU3RhdGUoJm1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSk7Ci0gICAgICAgIElu
amVjdGVkU2NyaXB0IHJlc3VsdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2Ny
aXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICAgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0ID0gaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoJm1haW5Xb3JsZEdsb2JhbE9i
amVjdChtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpKTsKICAgICAgICAgaWYgKHJlc3VsdC5o
YXNOb1ZhbHVlKCkpCiAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjog
bWFpbiB3b3JsZCBleGVjdXRpb24gY29udGV4dCBub3QgZm91bmQiX3M7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CkBAIC0xMzUsMjUgKzEzMywyNSBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnJl
cG9ydEV4ZWN1dGlvbkNvbnRleHRDcmVhdGlvbigpCiAgICAgaWYgKCFwYWdlQWdlbnQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byogZnJhbWUgPSAmbV9pbnNwZWN0ZWRQYWdlLm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
Ci0gICAgICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0
VG9FeGVjdXRlU2NyaXB0KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIG1faW5zcGVjdGVk
UGFnZS5mb3JFYWNoRnJhbWUoWyZdIChGcmFtZSYgZnJhbWUpIHsKKyAgICAgICAgaWYgKCFmcmFt
ZS5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCisg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBmcmFtZUlkID0gcGFnZUFnZW50LT5m
cmFtZUlkKGZyYW1lKTsKKyAgICAgICAgYXV0byBmcmFtZUlkID0gcGFnZUFnZW50LT5mcmFtZUlk
KCZmcmFtZSk7CiAKICAgICAgICAgLy8gQWx3YXlzIHNlbmQgdGhlIG1haW4gd29ybGQgZmlyc3Qu
Ci0gICAgICAgIGF1dG8qIG1haW5HbG9iYWxPYmplY3QgPSBtYWluV29ybGRFeGVjU3RhdGUoZnJh
bWUpOwotICAgICAgICBub3RpZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBtYWluR2xvYmFsT2Jq
ZWN0LCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgICAgIGF1dG8mIG1haW5HbG9iYWxP
YmplY3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3QoZnJhbWUpOworICAgICAgICBub3RpZnlDb250
ZXh0Q3JlYXRlZChmcmFtZUlkLCAmbWFpbkdsb2JhbE9iamVjdCwgbWFpblRocmVhZE5vcm1hbFdv
cmxkKCkpOwogCi0gICAgICAgIGZvciAoYXV0byYganNXaW5kb3dQcm94eSA6IGZyYW1lLT53aW5k
b3dQcm94eSgpLmpzV2luZG93UHJveGllc0FzVmVjdG9yKCkpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBqc1dpbmRvd1Byb3h5IDogZnJhbWUud2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3hpZXNBc1Zl
Y3RvcigpKSB7CiAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc1dpbmRvd1Byb3h5
LT53aW5kb3coKTsKLSAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QgPT0gbWFpbkdsb2JhbE9i
amVjdCkKKyAgICAgICAgICAgIGlmIChnbG9iYWxPYmplY3QgPT0gJm1haW5HbG9iYWxPYmplY3Qp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGF1dG8mIHNlY3VyaXR5
T3JpZ2luID0gZG93bmNhc3Q8RE9NV2luZG93Pihqc1dpbmRvd1Byb3h5LT53cmFwcGVkKCkpLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgICAgICAgICBub3RpZnlDb250ZXh0Q3Jl
YXRlZChmcmFtZUlkLCBnbG9iYWxPYmplY3QsIGpzV2luZG93UHJveHktPndvcmxkKCksICZzZWN1
cml0eU9yaWdpbik7CiAgICAgICAgIH0KLSAgICB9CisgICAgfSk7CiB9CiAKIHN0YXRpYyBQcm90
b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dFR5cGUgdG9Qcm90b2NvbChET01XcmFwcGVy
V29ybGQ6OlR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKaW5kZXggOGY3ZTE1ZWQ5NWYx
YzkyMmY0ZTRiMWU5ZjA4NGYwOTMxZTExODg5ZC4uYzIzZWZkZTg0YWE0YWRhOWVkMTg4N2ZjNDEw
ZGM2ODNlMWI0YmExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrZXJBdWRpdEFnZW50LmgiCiAKLSNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KQEAgLTU1LDcgKzU0
LDkgQEAgSW5qZWN0ZWRTY3JpcHQgV29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXIKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVj
dGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX2dsb2JhbFNjb3BlKSk7CisgICAgLy8gRklYTUU6
IFdoYXQgZ3VhcmFudGVlcyBtX2dsb2JhbFNjb3BlLnNjcmlwdCgpIGlzIG5vbi1udWxsPworICAg
IC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgZ2xvYmFsU2NvcGVXcmFwcGVyKCkgaXMgbm9uLW51
bGw/CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9y
KG1fZ2xvYmFsU2NvcGUuc2NyaXB0KCktPmdsb2JhbFNjb3BlV3JhcHBlcigpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBkNDY4
NDNmZDZjYjgwMGRhYmU1MTUxN2NmYTEwNDYwZmNjN2U0NWZiLi4xYmRjMTdiY2FlYTEwZDhkMTQ3
MTQyZGJjMjVkZjk3ZjI4YjhjZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtlckRlYnVn
Z2VyQWdlbnQuaCIKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xl
TWVzc2FnZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CkBA
IC02MCw3ICs1OSw5IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVj
dGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAgICAgIHJldHVybiBJ
bmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV9nbG9iYWxTY29wZSkpOworICAg
IC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgbV9nbG9iYWxTY29wZS5zY3JpcHQoKSBpcyBub24t
bnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIGdsb2JhbFNjb3BlV3JhcHBlcigp
IGlzIG5vbi1udWxsPworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3Rl
ZFNjcmlwdEZvcihtX2dsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCmlu
ZGV4IDU4MGRjMGE5M2IzNjc3ODFmNzI4OTk1ZGIxYWVkYmViMzdjMTJiYTIuLjY2ZGFmMjRhODhl
YjIyNGRhOWFhYmRmMzhlMDdiZGUzZjg3YzMxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNw
cApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtl
clJ1bnRpbWVBZ2VudC5oIgogCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
amVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmg+CkBAIC01OCw3ICs1Nyw5IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYKICAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGluamVjdGVk
U2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX2dsb2JhbFNj
b3BlKSk7CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBtX2dsb2JhbFNjb3BlLnNjcmlw
dCgpIGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgZ2xvYmFsU2Nv
cGVXcmFwcGVyKCkgaXMgbm9uLW51bGw/CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdl
cigpLmluamVjdGVkU2NyaXB0Rm9yKG1fZ2xvYmFsU2NvcGUuc2NyaXB0KCktPmdsb2JhbFNjb3Bl
V3JhcHBlcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="473392"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447697</attachid>
            <date>2021-12-21 01:36:43 -0800</date>
            <delta_ts>2021-12-21 01:55:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234548-20211221013642.patch</filename>
            <type>text/plain</type>
            <size>79515</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Mjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJjOWJmNzhlZmU3ODY3
NzQ2NzRmZDZmNTgwODNjZjA1OGUzMGU3Yy4uZGM1ZWZjZmQ2NmI2Zjg4MzQxYmJiNmFiM2YzNTUy
NmQ0NzFhZWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMS0xMi0yMCAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
aXMgYSByZW1uYW50IG9mIEphdmFTY3JpcHQgZW5naW5lIGFic3RyYWN0aW9uIHRoYXQgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNjcmlwdFN0YXRlLmgvY3BwIGlzIGZpbGUgbGVmdCBvdmVyIGZyb20gd2hlbiB3ZSBoYWQgYSBs
YXllciB0byBhYnN0cmFjdAorICAgICAgICBKYXZhU2NyaXB0IGJpbmRpbmcgYW5kIHVzYWdlIGlu
IFdlYkNvcmUgc28gaXQgY291bGQgd29yayB3aXRoIGJvdGggSmF2YVNjcmlwdENvcmUKKyAgICAg
ICAgYW5kIEdvb2dsZSdzIFY4IGVuZ2luZS4gV2UgaGF2ZW4ndCBuZWVkZWQgdGhhdCBmb3IgeWVh
cnMsIGFuZCBzdHJpcHBpbmcgYXdheSBzb21lCisgICAgICAgIG9mIHRoZSBsYXllcnMgbWlnaHQg
aGVscCB1cyBtYWtlIGNvZGUgbW9yZSByZWFkYWJsZSBhbmQgcGVyaGFwcyBldmVuIG5vdGljZSB3
YXlzCisgICAgICAgIHRvIG1ha2UgaXQgbW9yZSBlZmZpY2llbnQuIEZvciBub3csIHRoaXMgcGF0
Y2ggcmVtb3ZlcyB0aGUgZnVuY3Rpb25zIGZyb20KKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
YW5kIG1vdmVzIHRoZW0gdG8gbW9yZSBzdWl0YWJsZSBwbGFjZXMsIHNpbXBsaWZ5aW5nIGluIHRo
ZSBwcm9jZXNzLgorCisgICAgICAgIEFsc28gYmVnaW4gdG8ganVzdCBjYWxsIGdsb2JhbCBvYmpl
Y3RzICJnbG9iYWwgb2JqZWN0IiwgYW5kIG5vdCAic2NyaXB0IHN0YXRlIi4KKworICAgICAgICAq
IEhlYWRlcnMuY21ha2U6IFJlbW92ZWQgU2NyaXB0U3RhdGUuaC4KKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlw
dFN0YXRlLmguCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
OiBEaXR0by4KKworICAgICAgICAqIFNvdXJjZXMudHh0OiBSZW1vdmVkIFNjcmlwdFN0YXRlLmNw
cC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZWQg
U2NyaXB0U3RhdGUuaCBhbmQgLmNwcC4KKyAgICAgICAgQWxzbyBhbGxvd2VkIHRoZSBzY3JpcHQg
dG8gc29ydCB0aGUgZmlsZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1haW5Xb3JsZEdsb2JhbE9iamVjdCk6IFJlbmFt
ZWQgdGhlIG1haW5Xb3JsZEV4ZWNTdGF0ZSBmdW5jdGlvbiBhbmQKKyAgICAgICAgbW92ZWQgaXQg
aGVyZSBmcm9tIFNjcmlwdFN0YXRlLmNwcC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5oOiBUd2Vha2VkIGZvcm1hdHRpbmcgb2YgdGhlIGhlYWRlci4gQWRkZWQgdGhl
CisgICAgICAgIG1haW5Xb3JsZEdsb2JhbE9iamVjdCBmdW5jdGlvbi4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRl
LmguCisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0
KTogQ2FsbCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
aW9uQ29udGV4dCk6IFJlbmFtZWQgdGhlIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlCisgICAgICAgIGZ1bmN0aW9uIGFuZCBtb3ZlZCBpdCBoZXJlIGZyb20gU2NyaXB0U3RhdGUu
Y3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmg6IEFkZGVkIHRoZSBleGVj
dXRpb25Db250ZXh0IGZ1bmN0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmgsIGFkZGVkIGluY2x1ZGUK
KyAgICAgICAgb2YgSlNET01XaW5kb3dDdXN0b20uaC4KKyAgICAgICAgKFdlYkNvcmU6OndpbGxD
cmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dDYXNlKTogQ2FsbCBtYWluV29y
bGRHbG9iYWxPYmplY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaDog
Q2hhbmdlZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwKKyAgICAgICAg
ZnVuY3Rpb25zIHRvIHRha2UgYSBOb2RlJiBpbnN0ZWFkIG9mIGEgbmV2ZXItbnVsbCBOb2RlKi4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaDogVHdlYWtlZCBmb3JtYXR0
aW5nIGEgYml0LgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmg6IFJlbW92ZWQuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOiBSZW1vdmVkIGlu
Y2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OndyYXBDcnlwdG9LZXkp
OiBVcGRhdGUgZm9yIG5hbWUgY2hhbmdlIG9mIGV4ZWN1dGlvbkNvbnRleHQgZnVuY3Rpb24uCisg
ICAgICAgIChXZWJDb3JlOjp1bndyYXBDcnlwdG9LZXkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkRmlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRPZmZzY3JlZW5DYW52YXMpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkUlRDRGF0YUNoYW5uZWwpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkSW1hZ2VCaXRtYXAp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWlu
YWwpOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2Vy
dGlvbik6CisgICAgICAgIFBhc3MgcmVmZXJlbmNlIHRvIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhh
bmVkVHJlZUJ5UmVtb3ZhbC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92
ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaCwgYWRkZWQgaW5jbHVkZQor
ICAgICAgICBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmRpZExvZ01lc3NhZ2UpOiBVc2UgbWFpbldvcmxkR2xvYmFsT2JqZWN0LgorCisgICAgICAg
ICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2Ny
aXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Omds
b2JhbE9iamVjdCk6IFVzZSB0aGUKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciBkaXJlY3RseSBp
bnN0ZWFkIG9mIHRocm91Z2ggaGVscGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2Yg
U2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5jcHA6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTZWxmVG9HbG9iYWxPYmplY3RJbldv
cmxkKToKKyAgICAgICAgVXNlIHRoZSBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5IGluc3RlYWQg
b2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KTogRGl0dG8uCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKTogRG8KKyAg
ICAgICAgdGhlIG51bGwgY2hlY2sgaGVyZSBpbnN0ZWFkIG9mIGluIGZyYW1lV2luZG93RGlzY2Fy
ZGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHA6
IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKToKKyAgICAg
ICAgUmV3b3JlZCBsb2dpYyB0byB1c2UgZXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIGRvbVdp
bmRvd0Zyb21FeGVjU3RhdGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDogUmVtb3ZlZCBp
bmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Zm9jdXNOb2RlKTogVXNlIHN0ZDo6ZXhjaGFuZ2UgaGVyZSBpbiB0aGUKKyAgICAgICAg
aWRpb21hdGljICJ0YWtlIGFuZCBudWxsIGEgdmFsdWUiIGNhc2UgaGVyZS4gVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOiBVc2UKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciBk
aXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggYSBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YKKyAgICAgICAgU2NyaXB0U3RhdGUuaCBhbmQg
YWRkZWQgaW5jbHVkZSBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZXNvbHZlV2ViU29ja2V0KTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAo
V2ViQ29yZTo6ZnJhbWUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBmcm9tIGEgZ2xv
YmFsIG9iamVjdCB0byBhIGZyYW1lLgorICAgICAgICBDYWxscyBleGVjdXRpb25Db250ZXh0IGFu
ZCBnZXRzIHRvIHRoZSBmcmFtZSBmcm9tIHRoZXJlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6IFVzZSBmcmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6
IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
OiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOiBUYWtlIGEgcmVmZXJlbmNlIGlu
c3RlYWQgb2YKKyAgICAgICAgYSBwb2ludGVyIHRoYXQgbXVzdCBub3QgYmUgbnVsbC4gVXNlIGV4
ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBkb21XaW5kb3dGcm9tRXhlY1N0YXRl
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4gUmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBXVEZfTUFLRV9O
T05DT1BZQUJMRSAoYmFzZSBjbGFzcyBpcyBhbHJlYWR5IG5vdCBjb3B5YWJsZSkgYW5kCisgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIChjbGFzcyBpcyBhbiBhYnN0cmFjdCBiYXNlIGNs
YXNzIGFuZCBuZXZlciBhbGxvY2F0ZWQpLgorICAgICAgICBNYWRlIGNvbnN0cnVjdG9yIHByb3Rl
Y3RlZC4gQ2hhbmdlZCB0aGUgRE9NV2luZG93IGFyZ3VtZW50IHRvCisgICAgICAgIGZyYW1lV2lu
ZG93RGlzY2FyZGVkIHRvIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyIHRoYXQgbXVz
dCBub3QgYmUgbnVsbC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVk
aXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdn
ZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0
d29ya0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6IFJlbW92ZWQg
aW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFuZCBhZGRlZCBpbmNsdWRlIG9mIEpT
RE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojpm
cmFtZU5hdmlnYXRlZCk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbik6IERpdHRvLgorICAgICAgICBBbHNvIHVzZSBQYWdlOjpmb3JFYWNoRnJhbWUgaW5z
dGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRT
dGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVh
ZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAg
ICAgaW5zdGVhZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6IFVzZSBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5
CisgICAgICAgIGluc3RlYWQgb2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKwogMjAyMS0x
Mi0yMCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luXSBNU1ZDIHJlcG9ydHMgIkRvd25sb2FkQnVuZGxlV2luLmNwcCg4Nyk6IGVycm9yIEMy
MzYyOiBpbml0aWFsaXphdGlvbiBvZiAnbWFnaWMnIGlzIHNraXBwZWQgYnkgJ2dvdG8gZXhpdCci
IHdpdGggL3N0ZDpjKysyMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggYmMwODRlOWY2YmM5NzFiNDIw
YzU1ZGI0OTcxYjhiNzBlY2U3YzVjNy4uMWU2NTEwMjE5Y2I2N2U3M2MyYjBmOTI5YzA1N2Q2ZTBk
MTAzNjdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC00NjUsNyArNDY1LDYgQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJpbmRpbmdzL2pzL1J1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaAog
ICAgIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAotICAgIGJpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAogICAgIGJpbmRpbmdz
L2pzL1NjcmlwdFdyYXBwYWJsZUlubGluZXMuaAogICAgIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAKaW5kZXggZWRkYmU4YmUxZTMxMTA4NzFjMzc3MTE4NGEyZjk1YmE3
ZmI4MDJmZC4uMTQzNTE0MGE1Y2I0YTFhMWQ0MDdhMmRiMjlkMTViZGYyZDUyYzBiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlw
dFN0YXRlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQ2F0Y2hTY29wZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXBJbmxpbmVzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNjdkM2JhNGM3OTgzMTExMjc5MzFlMjk1Mjg0ODRlNjZl
Y2QzNGNmZi4uNTg0MzYxNTY1MDAxNjc4Nzc4ZGI3NTAxOTVmNmViMGYyZDFjMWJjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJUcmFuc2FjdGlvbk9wZXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0
aW9uSGFuZGxlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA0OTUzMGY2MjRiMDEwZjc2YTQ4MzI0YmZk
ZDk5YzJkMjY4OGE3NzgzLi5iZDVhNzQ3OWNiMzllNDZjYzkxMDQwMGY0ZWUzODQ5MzI0Yzc1MzFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtNjMyLDcgKzYzMiw2IEBAIGJpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAKIGJpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwCi1iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKIGJpbmRpbmdzL2pzL1NjcmlwdFdy
YXBwYWJsZS5jcHAKIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKIGJpbmRp
bmdzL2pzL1N0cnVjdHVyZWRDbG9uZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYzRlOGRlMDUxNWEzZTdkZTA4M2ZkNTc2
N2QwODlmYTdjMjc5NDk0Li4zZDExZTQ3MzU2ZmFmMDRhNjA3NTJiYmJmYTI1NTMwYWVkYWFmMjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjAwLDcgKzEyMDAsNiBAQAogCQk0MUMxNEJDOTI2REY3OUQ3MDA2ODVCRjUgLyog
TUROU1JlZ2lzdGVyRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQzE0QkM4MjZERjc5RDYwMDY4NUJGNSAvKiBNRE5TUmVnaXN0ZXJFcnJvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNC
OEExMjY0OUIxRTAwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
SW50ZXJuYWxVbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDFDM0I4QTIyNjQ5QjFFNTAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFDNzYwQjAwRURFMDNEMzAw
QzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDFDQjg0MDEyNUNBQjdCMzAwMTBFMkIxIC8qIFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUNCODQwMDI1Q0FCN0IwMDAxMEUyQjEgLyogUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MUNCODQwMjI1Q0FCODFFMDAxMEUyQjEgLyogUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0REODMzQTFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDFEMDE1Q0EwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDODBGNEI1QzcxMDA0QTY2MkYg
LyogQ29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtODUyMyw3ICs4NTIyLDYgQEAKIAkJNDEyMDlFOTQyMTZFQTY5QTAwQTczQTEy
IC8qIFJUQ0NlcnRpZmljYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJUQ0NlcnRpZmljYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEy
MDlFOTUyMTZFQzM0RTAwQTczQTEyIC8qIExpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ0NlcnRpZmljYXRlR2Vu
ZXJhdG9yLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMDlFOTYyMTZFQzM0RjAwQTczQTEy
IC8qIExpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcDsgcGF0
aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBTY3JpcHRT
dGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRTdGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjlDOTgwMUY1ODYxQzcwMDlE
NzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVhZGFibGVTdHJlYW1TaW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxMjlDOTgxMUY1ODYxQzcwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMjlDOTg3MUY1ODY2MkQwMDlENzQwMyAvKiBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVT
dHJlYW1TaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4NTEsNyArODg0
OSw2IEBACiAJCTQxQzNCODlFMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckludGVybmFsVW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUMzQjhBMDI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJVbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQzc2MEIwMEVERTAz
RDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEw
NTFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwNjFFNkE1
NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDgxRTZBQTM3QzAwMjdCNERFIC8q
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTI1NywxMiArMTkyNTQsMTIgQEAKIAkJMTFBMUU2RkIyNkZCQjZDRTAwNDM1
RDM2IC8qIGRpc3BsYXkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCTZGNjBFNUE5Mjc3MTBGMzkwMDVDMTVCOSAvKiBJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXIuaCAqLywKLQkJCQk2RjYwRTVBNzI3NzEwRjJGMDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyLmNwcCAqLywKIAkJCQk2RkMzRjk0NTI1MTY3NTY2MDBBNDlCRUEgLyogSW5saW5l
RGlzcGxheUJveC5oICovLAogCQkJCTExNTEzRDAwMjZEOTgxREQwMDREM0ZBQSAvKiBJbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICovLAogCQkJCTExNTEzRDAyMjZEOTgxRTcwMDREM0ZB
QSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCAqLywKIAkJCQk2RjkxNDIwRjI1MTUy
MTM3MDA0RTRGRUEgLyogSW5saW5lRGlzcGxheUxpbmUuaCAqLywKKwkJCQk2RjYwRTVBNzI3NzEw
RjJGMDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCAqLywKKwkJCQk2RjYw
RTVBOTI3NzEwRjM5MDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGRpc3BsYXk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MjkyMDcsOCArMjkyMDQsNiBAQAogCQkJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3Jp
cHRNb2R1bGVMb2FkZXIuY3BwICovLAogCQkJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBT
Y3JpcHRNb2R1bGVMb2FkZXIuaCAqLywKIAkJCQk5MzRDQzEwOTBFREIyMjM5MDBBNjU4RjIgLyog
U2NyaXB0U291cmNlQ29kZS5oICovLAotCQkJCTQxMjdENTM2MEY4QUFCMUQwMEU0MjRGNSAvKiBT
Y3JpcHRTdGF0ZS5jcHAgKi8sCi0JCQkJNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlw
dFN0YXRlLmggKi8sCiAJCQkJMjI4QzI4NDQxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBw
YWJsZS5oICovLAogCQkJCTE0MDBEN0E3MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFi
bGVJbmxpbmVzLmggKi8sCiAJCQkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgKi8sCkBAIC0zNDgzNCw2ICszNDgyOSw3IEBACiAJCQkJNkZDM0Y5
NDcyNTE2NzU2NzAwQTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCBpbiBIZWFkZXJzICovLAog
CQkJCTExNTEzRDAzMjZEOTgxRTgwMDREM0ZBQSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGOTE0MjExMjUxNTIxMzgwMDRFNEZFQSAvKiBJbmxp
bmVEaXNwbGF5TGluZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkY2MEU1QUEyNzcxMEYzOTAwNUMx
NUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY3
Q0EzQ0EyMDhDMkIyRTAwMkYyOUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0N0M0RDU3RDI2NTA4QkNCMDBDN0FCMUYgLyogSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkU2MzZFODI2NDc5NjI5MDBGMDk1MUUg
LyogSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNjkwOCw3ICsz
NjkwNCw2IEBACiAJCQkJRkQzMTYwMzYxMkIwMjY3NjAwQzFBMzU5IC8qIFNjcmlwdFByb2Nlc3Nv
ck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCThBNDEzQUUwMTIwN0JCQTUwMDgyMDE2RSAvKiBT
Y3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNENDMTBBMEVEQjIyMzkwMEE2NThG
MiAvKiBTY3JpcHRTb3VyY2VDb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MUM3NjBCMTBFREUw
M0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTIyOEMyODQ1
MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFy
ZWEuaCBpbiBIZWFkZXJzICovLApAQCAtMzc2NjYsNyArMzc2NjEsNiBAQAogCQkJCUJFRjI5RUVD
MTcxNUREMDkwMEM0QjRDOSAvKiBWaWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0QzMzZGNjQxN0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDMzNkY2ODE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1By
aXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKLQkJCQk2RjYwRTVBQTI3NzEwRjM5MDA1QzE1
QjkgLyogSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDFG
OUIxNDI3MDIzNUY3MDA2MTdFQjYgLyogVmlkZW9UcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNEOEI1QTQzMTgwRDE0OUEwMDhCOEU2NSAvKiBWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwRTgxRDExQkYyNzY1
NjAwMUZEQTQ4IC8qIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IDU0NzYyN2E5Zjg5Yzc1NjRjZmI1Zjg3MGQyNWM4NmY1MjMwZGY1NWQuLjEyNWVjMDA3
MzIzNWMwZmNiYTQ5NzQxZTQxZmJmYTRkM2UyMDY5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTYzNyw0ICs2MzcsMTIgQEAg
dm9pZCBKU0RPTVdpbmRvdzo6c2V0T3BlbkRhdGFiYXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzoKICAgICBjcmVhdGVEYXRhUHJvcGVydHkoJmxleGljYWxH
bG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLCAib3BlbkRhdGFiYXNlIiksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKK0pTRE9NV2lu
ZG93JiBtYWluV29ybGRHbG9iYWxPYmplY3QoRnJhbWUmIGZyYW1lKQoreworICAgIC8vIEZJWE1F
OiBXaGF0IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCBvZiBqc1dpbmRvd1Byb3h5KCkgaXMgbm9uLW51
bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGUgcmVzdWx0IG9mIHdpbmRvdygp
IGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCBv
ZiB3aW5kb3coKSBhIEpTRE9NV2luZG93PworICAgIHJldHVybiAqanNDYXN0PEpTRE9NV2luZG93
Kj4oZnJhbWUud2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKS0+d2luZG93KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaAppbmRleCA3Y2ZhN2E2YmIz
YTdjNGEwYWRmNmNhZmE3MzY5YjcyYmI1NzA3YTc3Li4yYjEyYmNjYTRlMmU1MGMyNTQwNzM2MTE5
NzAwNGYzZDdkM2Y4ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI1LDYgKzI1LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFic3Ry
YWN0RE9NV2luZG93OwogY2xhc3MgQWJzdHJhY3RGcmFtZTsKIAorSlNET01XaW5kb3cqIGFzSlNE
T01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCopOworY29uc3QgSlNET01XaW5kb3cqIGFzSlNE
T01XaW5kb3coY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworCitlbnVtIGNsYXNzIERPTVdp
bmRvd1R5cGUgOiBib29sIHsgTG9jYWwsIFJlbW90ZSB9OwordGVtcGxhdGU8RE9NV2luZG93VHlw
ZT4gYm9vbCBqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdFJlc3RyaWN0ZWRBY2Nlc3MoSlNE
T01HbG9iYWxPYmplY3QqLCBBYnN0cmFjdERPTVdpbmRvdyYsIEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmLCBjb25zdCBTdHJpbmcmKTsK
KworZW51bSBjbGFzcyBDcm9zc09yaWdpbk9iamVjdCA6IGJvb2wgeyBXaW5kb3csIExvY2F0aW9u
IH07Cit0ZW1wbGF0ZTxDcm9zc09yaWdpbk9iamVjdD4gdm9pZCBhZGRDcm9zc09yaWdpbk93blBy
b3BlcnR5TmFtZXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkm
KTsKKworYm9vbCBoYW5kbGVDb21tb25Dcm9zc09yaWdpblByb3BlcnRpZXMoSlNDOjpKU09iamVj
dCogdGhpc09iamVjdCwgSlNDOjpWTSYsIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5
U2xvdCYpOworCitKU0RPTVdpbmRvdyYgbWFpbldvcmxkR2xvYmFsT2JqZWN0KEZyYW1lJik7CitK
U0RPTVdpbmRvdyogbWFpbldvcmxkR2xvYmFsT2JqZWN0KEZyYW1lKik7CisKIGlubGluZSBKU0RP
TVdpbmRvdyogYXNKU0RPTVdpbmRvdyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsK
QEAgLTM1LDE1ICs0OSw5IEBAIGlubGluZSBjb25zdCBKU0RPTVdpbmRvdyogYXNKU0RPTVdpbmRv
dyhjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAotZW51bSBj
bGFzcyBET01XaW5kb3dUeXBlIHsgTG9jYWwsIFJlbW90ZSB9OwotCi10ZW1wbGF0ZSA8RE9NV2lu
ZG93VHlwZSB3aW5kb3dUeXBlPgotYm9vbCBqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdFJl
c3RyaWN0ZWRBY2Nlc3MoSlNET01HbG9iYWxPYmplY3QqLCBBYnN0cmFjdERPTVdpbmRvdyYsIEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3Qm
LCBjb25zdCBTdHJpbmcmKTsKLQotZW51bSBjbGFzcyBDcm9zc09yaWdpbk9iamVjdCB7IFdpbmRv
dywgTG9jYXRpb24gfTsKLQotdGVtcGxhdGUgPENyb3NzT3JpZ2luT2JqZWN0IG9iamVjdFR5cGU+
Ci12b2lkIGFkZENyb3NzT3JpZ2luT3duUHJvcGVydHlOYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYpOwotYm9vbCBoYW5kbGVDb21tb25Dcm9zc09yaWdp
blByb3BlcnRpZXMoSlNDOjpKU09iamVjdCogdGhpc09iamVjdCwgSlNDOjpWTSYsIEpTQzo6UHJv
cGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworaW5saW5lIEpTRE9NV2luZG93KiBtYWlu
V29ybGRHbG9iYWxPYmplY3QoRnJhbWUqIGZyYW1lKQoreworICAgIHJldHVybiBmcmFtZSA/ICZt
YWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKSA6IG51bGxwdHI7Cit9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhl
Y1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcApp
bmRleCBiZWNhNTYzZjU3OWIxNDZkNzMyMzhhZDg2ODFlYmUwZjI0M2Y1N2JiLi43OTVkMGYwMzdi
ZWIwMTIzODU5OWZlZjk3MDM1NzFhMTc2MmYxYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFeGVjU3RhdGUuY3BwCkBAIC0yOSwxNCArMjksMTMgQEAKICNpbmNsdWRlICJFdmVu
dExvb3AuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IEpTRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCkKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byBjb250ZXh0ID0gZXhlY3V0aW9uQ29udGV4dChsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBjb250ZXh0
LT5ldmVudExvb3AoKS5wZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgpOwpAQCAtNTMsNCArNTIs
MTEgQEAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamUKICAgICByZXR1cm4gSlNFeGVjU3RhdGU6OmV2
YWx1YXRlKGxleGljYWxHbG9iYWxPYmplY3QsIHNvdXJjZSwgdGhpc1ZhbHVlLCByZXR1cm5lZEV4
Y2VwdGlvbik7CiB9CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlvbkNvbnRleHQo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIGlmICghZ2xvYmFsT2Jl
Y3QgfHwgIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01HbG9iYWxPYmplY3Q+KGdsb2JhbE9i
amVjdC0+dm0oKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V4ZWNTdGF0ZS5oCmluZGV4IDI3Zjc2NTBkYTZhOGVlNDRmMzVmOTQ3ZDQ5OGVhMzgxYzZj
OTQzMWYuLmUyNjViMTMzOGFjODc0OTAzZTFmN2ZjMjM2ZWQ1NzNkNTVmZjMxZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsMjUgKzQ3LDI1IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgSlNDOjpKU0dsb2JhbE9iamVjdCogY3VycmVudFN0YXRlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCkuY3VycmVudFN0YXRlKCk7Ci0g
ICAgfTsKKyAgICB9CiAgICAgCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBjYWxsKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9i
amVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFs
dWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiBy
ZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIEpTRXhlY1N0YXRlIGN1cnJlbnRTdGF0
ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBmdW5jdGlvbk9iamVjdCwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywg
cmV0dXJuZWRFeGNlcHRpb24pOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
b25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFr
ZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAg
IEpTRXhlY1N0YXRlIGN1cnJlbnRTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAg
cmV0dXJuIEpTQzo6ZXZhbHVhdGUobGV4aWNhbEdsb2JhbE9iamVjdCwgc291cmNlLCB0aGlzVmFs
dWUsIHJldHVybmVkRXhjZXB0aW9uKTsKLSAgICB9OworICAgIH0KIAogICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBzb3VyY2UsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUg
PSBKU0M6OkpTVmFsdWUoKSkKICAgICB7CiAgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiB1bnVzZWQ7CiAgICAgICAgIHJldHVybiBldmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
b3VyY2UsIHRoaXNWYWx1ZSwgdW51c2VkKTsKLSAgICB9OworICAgIH0KIAogICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgcHJvZmlsZWRDYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6UHJvZmlsaW5nUmVhc29uIHJlYXNvbiwgSlNDOjpKU1ZhbHVlIGZ1bmN0
aW9uT2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKQEAgLTE4NSw0ICsxODUsNiBAQCBwcml2YXRl
OgogSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpTQzo6Q2Fs
bERhdGEmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3Ms
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogSlNDOjpKU1Zh
bHVlIGV2YWx1YXRlSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNv
bnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCitTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBleGVjdXRpb25Db250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAKaW5kZXggMWZjYzI0NGQ4ZDk1MGUxNzgxZTJlMGJkYTZhNjRlYzdkN2EyOWE3MS4uZDQxZjhl
ZWE1ZjM0MTc4MGI0MjNmNmI3ZTZlNzg2M2IxOWFiOWNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
SlNDREFUQVNlY3Rpb24uaCIKICNpbmNsdWRlICJKU0NvbW1lbnQuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpT
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJKU0RvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJK
U0RvY3VtZW50VHlwZS5oIgpAQCAtNjEsMTcgKzYyLDE1IEBACiAjaW5jbHVkZSAiUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiR0NSZWFjaGFibGVSZWYuaCIKICNpbmNsdWRlICJT
dHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHQu
aCIKIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwogCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGlu
bGluZSBib29sIGlzUmVhY2hhYmxlRnJvbURPTShOb2RlKiBub2RlLCBBYnN0cmFjdFNsb3RWaXNp
dG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQpAQCAtMjEyLDE0ICsyMTEsMTUgQEAg
SlNDOjpKU09iamVjdCogZ2V0T3V0T2ZMaW5lQ2FjaGVkV3JhcHBlcihKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBOb2RlJgogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPndvcmxkKCku
d3JhcHBlcnMoKS5nZXQoJm5vZGUpOwogfQogCi12b2lkIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhh
bmVkVHJlZUJ5UmVtb3ZhbFNsb3dDYXNlKE5vZGUqIHJvb3QpCit2b2lkIHdpbGxDcmVhdGVQb3Nz
aWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dDYXNlKE5vZGUmIHJvb3QpCiB7Ci0gICAgSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IG1haW5Xb3JsZEV4ZWNTdGF0
ZShyb290LT5kb2N1bWVudCgpLmZyYW1lKCkpOwotICAgIGlmICghbGV4aWNhbEdsb2JhbE9iamVj
dCkKKyAgICBhdXRvIGZyYW1lID0gcm9vdC5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sobGV4aWNhbEds
b2JhbE9iamVjdCk7Ci0gICAgdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCAqcm9vdCk7CisgICAgYXV0
byYgZ2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkR2xvYmFsT2JqZWN0KCpmcmFtZSk7CisgICAgSlNM
b2NrSG9sZGVyIGxvY2soJmdsb2JhbE9iamVjdCk7CisgICAgdG9KUygmZ2xvYmFsT2JqZWN0LCAm
Z2xvYmFsT2JqZWN0LCByb290KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAppbmRleCBkNzFiMjVjMGQ4N2FhZTU2
MThkZDI3NzI0MGM5Y2RjNTBhMDhjMzFkLi43NTkyZWQ3NGJjZTk3ZWEwY2EzYTQ4MmE5NDkxOGQ3
MDE3ZGI5Y2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVD
dXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaApA
QCAtNjksMTYgKzY5LDExIEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iCiAvLyByb290LiBJbiB0
aGUgSmF2YVNjcmlwdCBET00sIGEgbm9kZSB0cmVlIHN1cnZpdmVzIGFzIGxvbmcgYXMgdGhlcmUg
aXMgYQogLy8gcmVmZXJlbmNlIHRvIGFueSBub2RlIGluIHRoZSB0cmVlLiBUbyBtb2RlbCB0aGUg
SmF2YVNjcmlwdCBET00gb24gdG9wIG9mCiAvLyB0aGUgQysrIERPTSwgd2UgZW5zdXJlIHRoYXQg
dGhlIHJvb3Qgb2YgZXZlcnkgdHJlZSBoYXMgYSBKYXZhU2NyaXB0IHdyYXBwZXIuCi12b2lkIHdp
bGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNsb3dDYXNlKE5vZGUqIHJvb3Qp
OwotaW5saW5lIHZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKE5v
ZGUqIHJvb3QpCit2b2lkIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbFNs
b3dDYXNlKE5vZGUmIHJvb3QpOworaW5saW5lIHZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFu
ZWRUcmVlQnlSZW1vdmFsKE5vZGUmIHJvb3QpCiB7Ci0gICAgaWYgKHJvb3QtPndyYXBwZXIoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFyb290LT5oYXNDaGlsZE5vZGVzKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3Zh
bFNsb3dDYXNlKHJvb3QpOworICAgIGlmICghcm9vdC53cmFwcGVyKCkgJiYgcm9vdC5oYXNDaGls
ZE5vZGVzKCkpCisgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3Zh
bFNsb3dDYXNlKHJvb3QpOwogfQogCiBpbmxpbmUgdm9pZCogcm9vdChOb2RlKiBub2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oCmluZGV4IDExM2RjY2I4NDZi
MGVmMWM2M2QzMWQxMDQyOWM3Yjk0ZWMxOTRiYzAuLjkxOGI2NjE0YWIwNDM0M2E5NjQ5NzBiZGY3
NGY0NDU5ZTk3ODNiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2luZG93UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1By
b3h5LmgKQEAgLTQ4LDE3ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFj
Y2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCi0gICAgewotICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKLSAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+IHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkgeyByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsgfQogCiAgICAgc3RhdGljIEpTV2luZG93UHJveHkmIGNyZWF0ZShK
U0M6OlZNJiwgQWJzdHJhY3RET01XaW5kb3cmLCBET01XcmFwcGVyV29ybGQmKTsKIAogICAgIERF
Q0xBUkVfSU5GTzsKIAogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiB3aW5kb3coKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHRhcmdldCgpKTsgfQorCiAgICAg
dm9pZCBzZXRXaW5kb3coSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgdm9pZCBz
ZXRXaW5kb3coQWJzdHJhY3RET01XaW5kb3cmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RhdGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2U0OGVk
YWE3OGIxYWM2MmRmYTg3YjU1MWQyYWVmOWI4YzRmYjAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0YXRlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVu
dC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCi0j
aW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIkpTV29ya2xldEdsb2Jh
bFNjb3BlLmgiCi0jaW5jbHVkZSAiTm9kZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKLSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5j
bHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2Fs
bEZyYW1lLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHbG9iYWxPYmplY3QuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmdJbmxpbmVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpCi17Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbGV4aWNhbEdsb2JhbE9iamVjdDsKLSAgICBKU0M6OlZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01X
aW5kb3dCYXNlPih2bSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAmSlND
Ojpqc0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KS0+d3JhcHBlZCgpOwotfQot
Ci1GcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QpCi17Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwot
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0
PERvY3VtZW50Pihjb250ZXh0KSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGRvY3VtZW50ID8gZG9j
dW1lbnQtPmZyYW1lKCkgOiBudWxscHRyOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNTdGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0KQotewotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGxleGljYWxHbG9iYWxPYmplY3Q7Ci0gICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpTRE9NR2xvYmFsT2Jq
ZWN0Pih2bSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKLX0KLQotSlNDOjpKU0dsb2JhbE9iamVjdCogbWFpbldvcmxkRXhlY1N0YXRlKEZyYW1l
KiBmcmFtZSkKLXsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gZnJhbWUtPndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eShtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSktPndpbmRvdygpOwotfQotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5v
ZGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRv
Y3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRv
RXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBmcmFt
ZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKLX0KLQotSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEZyYW1lKiBmcmFtZSkKLXsK
LSAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKSA6
IG51bGxwdHI7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSYgd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUpCi17Ci0gICAg
aWYgKGF1dG8qIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5z
Y3JpcHQoKSkKLSAgICAgICAgcmV0dXJuIHNjcmlwdENvbnRyb2xsZXItPmdsb2JhbFNjb3BlV3Jh
cHBlcigpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE1MDYz
MDk5NjBiOTI4MWVkMTAwMjE5Mzc1M2ZjOTI1YWRjNDA4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoYykgMjAwOCwgMjAxMSBHb29nbGUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBKU0dsb2Jh
bE9iamVjdDsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBET01XaW5kb3c7Ci1j
bGFzcyBET01XcmFwcGVyV29ybGQ7Ci1jbGFzcyBGcmFtZTsKLWNsYXNzIE5vZGU7Ci1jbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7
Ci0KLURPTVdpbmRvdyogZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7Ci1GcmFtZSogZnJhbWVGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLQotSlNDOjpKU0dsb2JhbE9iamVjdCogbWFpbldvcmxk
RXhlY1N0YXRlKEZyYW1lKik7Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChE
T01XcmFwcGVyV29ybGQmLCBOb2RlKik7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiwgRnJhbWUqKTsKLUpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdChXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCAwYmFmYTc5ODMwOWMxNjUwYzY0MDJi
ZDA2ZWVhNzMwMTE5NmUzZTMzLi5kYmFjZGE1ZTQ5YmZhOTI4ZDk2OTBiODRhM2ZhNjA3MzdkMzE5
NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKQEAgLTU2LDE1ICs1Niw4IEBACiAjaW5jbHVkZSAiSlNSVENDZXJ0aWZp
Y2F0ZS5oIgogI2luY2x1ZGUgIkpTUlRDRGF0YUNoYW5uZWwuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCi0jaWYgUExB
VEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
LSNlbmRpZgotI2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNz
Lmg+Ci0jZW5kaWYKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQmlnSW50T2JqZWN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQm9vbGVhbk9iamVjdC5oPgpAQCAtMTAxLDYgKzk0LDE0IEBACiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgogCisjaWYg
VVNFKENHKQorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNlbmRpZgor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VS
UykKICNpbmNsdWRlICJKU09mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIk9mZnNjcmVlbkNh
bnZhcy5oIgpAQCAtMTEzLDYgKzExNCw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CkBAIC01NTYsMTggKzU1OCwxNCBAQCBw
cm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCiBzdGF0aWMgYm9vbCB3cmFwQ3J5cHRv
S2V5KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KQogewotICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+d3JhcENyeXB0b0tleShrZXksIHdyYXBwZWRLZXkpOworICAg
IGF1dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQobGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4dC0+d3JhcENyeXB0b0tleShrZXksIHdyYXBwZWRL
ZXkpOwogfQogCiBzdGF0aWMgYm9vbCB1bndyYXBDcnlwdG9LZXkoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXkpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxl
eGljYWxHbG9iYWxPYmplY3QpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT51
bndyYXBDcnlwdG9LZXkod3JhcHBlZEtleSwga2V5KTsKKyAgICBhdXRvIGNvbnRleHQgPSBleGVj
dXRpb25Db250ZXh0KGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBjb250ZXh0ICYm
IGNvbnRleHQtPnVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5LCBrZXkpOwogfQogI2VuZGlmCiAK
QEAgLTk1OCw3ICs5NTYsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvJiB2bSA9IG1fbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gbV9sZXhp
Y2FsR2xvYmFsT2JqZWN0OwogICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5pbmhlcml0czxKU0RP
TUdsb2JhbE9iamVjdD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIHRvSlMobV9sZXhpY2FsR2xv
YmFsT2JqZWN0LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLCAmYXJy
YXlCdWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIHRvSlMoZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLCAmYXJyYXlCdWZmZXIpOwogCiAgICAg
ICAgIGlmIChhdXRvKiBidWZmZXIgPSBhcnJheUJ1ZmZlci5tX3dyYXBwZXIuZ2V0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gYnVmZmVyOwpAQCAtMjU2Niw3ICsyNTY0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKCFtX2NhbkNyZWF0ZURPTU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgICAgIGZpbGUgPSBGaWxlOjpkZXNlcmlhbGl6ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0RnJvbUV4ZWNTdGF0ZShtX2xleGljYWxHbG9iYWxPYmplY3QpLCBmaWxlUGF0aCwgVVJMKFVS
TCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIG5hbWUtPnN0cmluZygpLCBvcHRp
b25hbExhc3RNb2RpZmllZCk7CisgICAgICAgIGZpbGUgPSBGaWxlOjpkZXNlcmlhbGl6ZShleGVj
dXRpb25Db250ZXh0KG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBVUkwoVVJMKCks
IHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFs
TGFzdE1vZGlmaWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0zMjk2LDcg
KzMyOTQsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX29mZnNjcmVl
bkNhbnZhc2VzW2luZGV4XSkKLSAgICAgICAgICAgIG1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5kZXhd
ID0gT2Zmc2NyZWVuQ2FudmFzOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIFdURk1vdmUobV9kZXRhY2hlZE9mZnNjcmVl
bkNhbnZhc2VzLmF0KGluZGV4KSkpOworICAgICAgICAgICAgbV9vZmZzY3JlZW5DYW52YXNlc1tp
bmRleF0gPSBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZSgqZXhlY3V0aW9uQ29udGV4dChtX2xleGlj
YWxHbG9iYWxPYmplY3QpLCBXVEZNb3ZlKG1fZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcy5hdChp
bmRleCkpKTsKIAogICAgICAgICBhdXRvIG9mZnNjcmVlbkNhbnZhcyA9IG1fb2Zmc2NyZWVuQ2Fu
dmFzZXNbaW5kZXhdLmdldCgpOwogICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShvZmZzY3JlZW5D
YW52YXMpOwpAQCAtMzM2MCw3ICszMzU4LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBpZiAoIW1f
cnRjRGF0YUNoYW5uZWxzW2luZGV4XSkgewogICAgICAgICAgICAgYXV0byBkZXRhY2hlZENoYW5u
ZWwgPSBXVEZNb3ZlKG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMuYXQoaW5kZXgpKTsKLSAgICAg
ICAgICAgIG1fcnRjRGF0YUNoYW5uZWxzW2luZGV4XSA9IFJUQ0RhdGFDaGFubmVsOjpjcmVhdGUo
KnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVj
dCksIGRldGFjaGVkQ2hhbm5lbC0+aWRlbnRpZmllciwgV1RGTW92ZShkZXRhY2hlZENoYW5uZWwt
PmxhYmVsKSwgV1RGTW92ZShkZXRhY2hlZENoYW5uZWwtPm9wdGlvbnMpLCBkZXRhY2hlZENoYW5u
ZWwtPnN0YXRlKTsKKyAgICAgICAgICAgIG1fcnRjRGF0YUNoYW5uZWxzW2luZGV4XSA9IFJUQ0Rh
dGFDaGFubmVsOjpjcmVhdGUoKmV4ZWN1dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0
KSwgZGV0YWNoZWRDaGFubmVsLT5pZGVudGlmaWVyLCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+
bGFiZWwpLCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+b3B0aW9ucyksIGRldGFjaGVkQ2hhbm5l
bC0+c3RhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUobV9ydGNE
YXRhQ2hhbm5lbHNbaW5kZXhdLmdldCgpKTsKQEAgLTMzODUsNyArMzM4Myw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGF1dG8gaW1hZ2VEYXRhU2l6ZSA9IGxvZ2ljYWxTaXplOwogICAgICAgICBpbWFn
ZURhdGFTaXplLnNjYWxlKHJlc29sdXRpb25TY2FsZSk7CiAKLSAgICAgICAgYXV0byBidWZmZXIg
PSBJbWFnZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRG
cm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBjb2xvclNwYWNlLCByZXNvbHV0aW9uU2NhbGUpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqZXhlY3V0
aW9uQ29udGV4dChtX2xleGljYWxHbG9iYWxPYmplY3QpLCBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgY29sb3JTcGFjZSwgcmVzb2x1dGlvblNjYWxlKTsKICAgICAg
ICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CkBAIC0zNjUxLDcgKzM2NDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIW1fY2FuQ3JlYXRlRE9NT2Jq
ZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICAgICAgICAgIHJldHVy
biBnZXRKU1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9t
RXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIFVSTChVUkwoKSwgdXJsLT5zdHJpbmco
KSksIHR5cGUtPnN0cmluZygpLCBzaXplLCBibG9iRmlsZVBhdGhGb3JCbG9iVVJMKHVybC0+c3Ry
aW5nKCkpKS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpkZXNl
cmlhbGl6ZShleGVjdXRpb25Db250ZXh0KG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIFVSTChVUkwo
KSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBzaXplLCBibG9iRmlsZVBhdGhGb3JC
bG9iVVJMKHVybC0+c3RyaW5nKCkpKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBT
dHJpbmdUYWc6IHsKICAgICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBjYWNoZWRTdHJpbmc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYzNhODZmNWM0ZDNjMzk5OTU0MTlj
YjBhNTE1NDA4ODdhNjY2ZGRkYy4uNjQ5YjIxYTk5NWMyNzgwOGFmNjhhOTA1ZDFiOWQ1NTJlZjhi
NGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMTI4LDcgKzEyOCw3
IEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGls
ZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAgICAgICAgICAgICByZW1vdmVCZXR3ZWVuKG51
bGxwdHIsIGNoaWxkLT5uZXh0U2libGluZygpLCAqY2hpbGQpOwogICAgICAgICAgICAgYXV0byBz
dWJ0cmVlT2JzZXJ2YWJpbGl0eSA9IG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoKnRoaXMsICpjaGls
ZCk7CiAgICAgICAgICAgICBpZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSAm
JiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9PSBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHk6Ok1h
eWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQotICAgICAgICAgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJs
eU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbChjaGlsZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgd2ls
bENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKCpjaGlsZCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTIxMCw3ICsyMTAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgQ29udGFpbmVy
Tm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYgY2hpbGRUb1JlbQogICAg
IH0KIAogICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRy
ZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNl
cnZhYmxlQnlSZWZQdHIpCi0gICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5
UmVtb3ZhbCgmY2hpbGRUb1JlbW92ZSk7CisgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhh
bmVkVHJlZUJ5UmVtb3ZhbChjaGlsZFRvUmVtb3ZlKTsKIAogICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzT3Jw
aGFuKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkYmE2MDBjYzcxNzk1N2Y5ODlh
NjkzM2JkZmQyMjFjNjg1NmE3ZGY1Li40MmRhY2QyZGQ1Y2UzZTVmNjIzMzNhMjE2MmNjMzc2NzQ2
ZThmYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzMyw2ICsxMzMsNyBAQAogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkludGVyc2VjdGlv
bk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmgiCisjaW5j
bHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0xhenlFdmVudExpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIktleWZyYW1lRWZmZWN0
LmgiCkBAIC0yMTAsNyArMjExLDYgQEAKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIK
ICNpbmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lLmgiCkBAIC04NzE2LDggKzg3MTYsOCBAQCB2b2lkIERvY3VtZW50OjpkaWRMb2dN
ZXNzYWdlKGNvbnN0IFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xldmVsIGxldmVsLCBW
ZQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gbWVzc2FnZUxldmVsID0gbWVz
c2FnZUxldmVsRnJvbVdURkxvZ0xldmVsKGxldmVsKTsKLSAgICAgICAgYXV0byBtZXNzYWdlID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihtZXNzYWdlU291cmNlLCBNZXNz
YWdlVHlwZTo6TG9nLCBtZXNzYWdlTGV2ZWwsIFdURk1vdmUobG9nTWVzc2FnZXMpLCBtYWluV29y
bGRFeGVjU3RhdGUod2Vha1RoaXMtPmZyYW1lKCkpKTsKLQorICAgICAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3Qod2Vha1RoaXMtPmZyYW1lKCkpOworICAgICAg
ICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1l
c3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dN
ZXNzYWdlcyksIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHdlYWtUaGlzLT5hZGRDb25zb2xlTWVz
c2FnZShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA5NTQ0Njc5NDM3ZjhlMWUwMTQ3M2Ni
NmE3MGNkNWQwNzJmYzcxYzM0Li5kMjk1YjI1NmVmNzkyYjI2YmM5MTdiYjFhNWM0ODQ3YTM0ZTg3
ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUu
aCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyUHJvdmlkZXIuaCIKQEAgLTU0MywxMSArNTQyLDE3IEBAIGJvb2wgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIAogSlNDOjpKU0dsb2JhbE9i
amVjdCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Z2xvYmFsT2JqZWN0KCkKIHsKLSAgICBpZiAo
aXM8RG9jdW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Omdsb2JhbE9iamVj
dChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgZG93bmNhc3Q8RG9jdW1lbnQ+KCp0aGlzKS5mcmFt
ZSgpKTsKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkgeworICAgICAgICAvLyBGSVhNRTog
V2hhdCBndWFyYW50ZWVzIHRoYXQgZnJhbWUgaXMgbm9uLW51bGw/CisgICAgICAgIC8vIEZJWE1F
OiBXaGF0IGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxPYmplY3Qgd2lsbCBub3QgcmV0dXJuIG51bGw/
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLmZyYW1lKCktPnNjcmlw
dCgpLmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgfQogCi0gICAg
aWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykpCi0gICAgICAgIHJldHVy
biBXZWJDb3JlOjpnbG9iYWxPYmplY3QoZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KCp0aGlzKSk7CisgICAgaWYgKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhp
cykpIHsKKyAgICAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0aGF0IHNjcmlwdCgpIGlz
IG5vbi1udWxsPworICAgICAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoYXQgZ2xvYmFs
U2NvcGVXcmFwcGVyKCkgd2lsbCBub3QgcmV0dXJuIG51bGw/CisgICAgICAgIHJldHVybiBkb3du
Y2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpLnNjcmlwdCgpLT5nbG9iYWxT
Y29wZVdyYXBwZXIoKTsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggYjQzOTdiNDZhZDc3ZWE4
OTEwYTFmMjY3NTRjZjNiMTdmMWY5ZGIzMC4uMWFiOTg1Mzc5OTNlYmU2NDA3NmM3MjVlZWE1ZWVk
MjZiMWUxM2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNp
bmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNj
b3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnJhbWVUcmFjZXJzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9taXNlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcAppbmRleCA5ZGRmY2JiZjhiYjQ0OTdhYzcyZWI2OWIwYzA0NDczNGJl
YjJhMDdiLi5kMWY5MjdkMWM1MTNjYWJlZWYzMWY3M2JkZjQ5ZjMwN2Y3ODZmYTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggOGFh
ZGFkMWZiYWVlMzg3ZTg5NzBhNjVmMWYyOTdlZjllZDJhZjk4My4uNWY2MzFkZjU5NzYzODIxZWVl
ZDhkNTNlNzFkNTlhMjVhZjEwZDFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAi
UGFzdGVib2FyZC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNpbmNsdWRlICJTeXN0ZW1Tb3VuZE1hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyR2Vz
dHVyZUluZGljYXRvci5oIgpAQCAtMTYwLDE1ICsxNTksMTUgQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q6OmRpc2Nvbm5lY3RDbGllbnQoKQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9z
dDo6YWRkU2VsZlRvR2xvYmFsT2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQog
ewotICAgIGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqZ2xvYmFsT2JqZWN0KHdvcmxkLCBt
X2Zyb250ZW5kUGFnZSA/ICZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKTsK
LSAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKKyAgICAvLyBGSVhNRTog
V2hhdCBndWFyYW50ZWVzIG1fZnJvbnRlbmRQYWdlIGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1F
OiBXaGF0IGd1YXJhbnRlZXMgZ2xvYmFsT2JqZWN0J3MgcmV0dXJuIHZhbHVlIGlzIG5vbi1udWxs
PworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCku
c2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVj
dC52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLQotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpK
U0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAg
ICBnbG9iYWxPYmplY3QucHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJJbnNwZWN0b3JGcm9udGVuZEhvc3QiKSwgdG9KUzxJRExJbnRlcmZhY2U8SW5zcGVjdG9y
RnJvbnRlbmRIb3N0Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqdGhpcykp
OworICAgIGdsb2JhbE9iamVjdC5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIkluc3BlY3RvckZyb250ZW5kSG9zdCIpLCB0b0pTPElETEludGVyZmFjZTxJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q+PihnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKnRoaXMpKTsK
ICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICByZXBvcnRFeGNl
cHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAg
cmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIHNjb3BlLmV4Y2VwdGlvbigpKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmxvYWRlZCgpCkBAIC01MDMsMTkgKzUwMiwyMCBA
QCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51KFZlY3RvcjxJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q6OkNvbnRleHRNZW51SXRlbT4mJgogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNo
b3dDb250ZXh0TWVudShFdmVudCYgZXZlbnQsIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiYgaXRl
bXMpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgLy8gRklYTUU6IFdoYXQgZ3Vh
cmFudGVlcyBtX2Zyb250ZW5kUGFnZSBpcyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBn
dWFyYW50ZWVzIGdsb2JhbE9iamVjdCdzIHJldHVybiB2YWx1ZSBpcyBub24tbnVsbD8KICAgICBB
U1NFUlQobV9mcm9udGVuZFBhZ2UpOwotCi0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9
ICpnbG9iYWxPYmplY3QoZGVidWdnZXJXb3JsZCgpLCAmbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFt
ZSgpKTsKLSAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRv
IHZhbHVlID0gbGV4aWNhbEdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3RvckZyb250ZW5kQVBJIikpOwor
ICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2Ny
aXB0KCkuZ2xvYmFsT2JqZWN0KGRlYnVnZ2VyV29ybGQoKSk7CisgICAgYXV0byYgdm0gPSBnbG9i
YWxPYmplY3Qudm0oKTsKKyAgICBhdXRvIHZhbHVlID0gZ2xvYmFsT2JqZWN0LmdldCgmZ2xvYmFs
T2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJJbnNwZWN0b3JGcm9udGVu
ZEFQSSIpKTsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc09iamVjdCgp
KTsKICAgICBhdXRvKiBmcm9udGVuZEFQSU9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICAK
KwogICAgIENvbnRleHRNZW51IG1lbnU7CiAgICAgcG9wdWxhdGVDb250ZXh0TWVudShXVEZNb3Zl
KGl0ZW1zKSwgbWVudSk7CiAKLSAgICBhdXRvIG1lbnVQcm92aWRlciA9IEZyb250ZW5kTWVudVBy
b3ZpZGVyOjpjcmVhdGUodGhpcywgeyAmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnJvbnRlbmRBUElP
YmplY3QgfSwgbWVudS5pdGVtcygpKTsKKyAgICBhdXRvIG1lbnVQcm92aWRlciA9IEZyb250ZW5k
TWVudVByb3ZpZGVyOjpjcmVhdGUodGhpcywgeyAmZ2xvYmFsT2JqZWN0LCBmcm9udGVuZEFQSU9i
amVjdCB9LCBtZW51Lml0ZW1zKCkpOwogICAgIG1fbWVudVByb3ZpZGVyID0gbWVudVByb3ZpZGVy
LnB0cigpOwogICAgIG1fZnJvbnRlbmRQYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5zaG93
Q29udGV4dE1lbnUoZXZlbnQsIG1lbnVQcm92aWRlcik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAx
ODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0Li41YzViYjJhZWE4Mzk5MThi
MDY5Nzc1ODgxY2UzYTM2OWE0MjhlNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjI4LDggKzIyOCwxMSBA
QCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGlucwogICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoIXdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29s
ZUFnZW50KCkpCi0gICAgICAgIGNvbnNvbGVBZ2VudC0+ZnJhbWVXaW5kb3dEaXNjYXJkZWQod2lu
ZG93KTsKKyAgICAgICAgY29uc29sZUFnZW50LT5mcmFtZVdpbmRvd0Rpc2NhcmRlZCgqd2luZG93
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1lZGlhUXVlcnlSZXN1bHRD
aGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcAppbmRleCBkYWE2MmYyMDVlODA5YTY4MzI4ZGU3MjJkMzI0MTVmMzNjMjA0MGRlLi40ODAy
ZWQ3NDVkOTc1M2RhMTAzMTk0OWZmN2Q5ZWZlZDMxZWQ3ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMjcs
OCArMjcsNiBAQAogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCiAjaW5j
bHVkZSAiQ29tbWFuZExpbmVBUElNb2R1bGUuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgot
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzQsMjggKzcyLDM1IEBAIHZvaWQgV2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKERPTVdpbmRvdyog
d2luZG93KQogICAgIGlmIChtX3NjcmlwdFN0YXRlVG9JZC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFZlY3Rvcjxsb25nPiBpZHNUb1JlbW92ZTsKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0IDogbV9pZFRvSW5qZWN0ZWRTY3JpcHQpIHsKLSAgICAgICAgSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGl0LnZhbHVlLmdsb2JhbE9iamVjdCgpOwotICAg
ICAgICBpZiAod2luZG93ICE9IGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9i
amVjdCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9zY3JpcHRTdGF0ZVRvSWQu
cmVtb3ZlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgICAgICBpZHNUb1JlbW92ZS5hcHBlbmQo
aXQua2V5KTsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIGlkIDogaWRzVG9SZW1vdmUpCi0gICAg
ICAgIG1faWRUb0luamVjdGVkU2NyaXB0LnJlbW92ZShpZCk7CisgICAgQVNTRVJUKHdpbmRvdyk7
CisgICAgYXV0byogZG9jdW1lbnQgPSB3aW5kb3ctPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1
bWVudCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTm93IHJlbW92ZSBzY3JpcHQgc3RhdGVz
IHRoYXQgaGF2ZSBpZCBidXQgbm8gaW5qZWN0ZWQgc2NyaXB0LgotICAgIFZlY3RvcjxKU0M6OkpT
R2xvYmFsT2JqZWN0Kj4gc2NyaXB0U3RhdGVzVG9SZW1vdmU7Ci0gICAgZm9yIChjb25zdCBhdXRv
JiBpdCA6IG1fc2NyaXB0U3RhdGVUb0lkKSB7Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QgPSBpdC5rZXk7Ci0gICAgICAgIGlmICh3aW5kb3cgPT0gZG9t
V2luZG93RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSkKLSAgICAgICAgICAgIHNj
cmlwdFN0YXRlc1RvUmVtb3ZlLmFwcGVuZChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICB7Cisg
ICAgICAgIFZlY3Rvcjxsb25nPiBpZHNUb1JlbW92ZTsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IG1faWRUb0luamVjdGVkU2NyaXB0KSB7CisgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmpl
Y3QgPSBlbnRyeS52YWx1ZS5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIGlmIChleGVjdXRp
b25Db250ZXh0KGdsb2JhbE9iamVjdCkgPT0gZG9jdW1lbnQpIHsKKyAgICAgICAgICAgICAgICBt
X3NjcmlwdFN0YXRlVG9JZC5yZW1vdmUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBp
ZHNUb1JlbW92ZS5hcHBlbmQoZW50cnkua2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBmb3IgKGF1dG8mIGlkIDogaWRzVG9SZW1vdmUpCisgICAgICAgICAgICBtX2lkVG9J
bmplY3RlZFNjcmlwdC5yZW1vdmUoaWQpOwogICAgIH0KIAotICAgIGZvciAoYXV0byYgbGV4aWNh
bEdsb2JhbE9iamVjdCA6IHNjcmlwdFN0YXRlc1RvUmVtb3ZlKQotICAgICAgICBtX3NjcmlwdFN0
YXRlVG9JZC5yZW1vdmUobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gTm93IHJlbW92ZSBn
bG9iYWwgb2JqZWN0cyB0aGF0IGhhdmUgbm8gaW5qZWN0ZWQgc2NyaXB0LgorICAgIHsKKyAgICAg
ICAgVmVjdG9yPEpTQzo6SlNHbG9iYWxPYmplY3QqPiBnbG9iYWxPYmplY3RzVG9SZW1vdmU7Cisg
ICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3NjcmlwdFN0YXRlVG9JZCkgeworICAgICAgICAg
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZW50cnkua2V5OworICAgICAgICAgICAgaWYgKGV4ZWN1
dGlvbkNvbnRleHQoZ2xvYmFsT2JqZWN0KSA9PSBkb2N1bWVudCkKKyAgICAgICAgICAgICAgICBn
bG9iYWxPYmplY3RzVG9SZW1vdmUuYXBwZW5kKGdsb2JhbE9iamVjdCk7CisgICAgICAgIH0KKyAg
ICAgICAgZm9yIChhdXRvJiBnbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3RzVG9SZW1vdmUpCisg
ICAgICAgICAgICBtX3NjcmlwdFN0YXRlVG9JZC5yZW1vdmUoZ2xvYmFsT2JqZWN0KTsKKyAgICB9
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcAppbmRleCBhNDQ3ZjcwNTM5ZTA2ZTRjODMwNDI3NmZjYjRjZTFhNTg1MTZlYWU4Li4y
MjgwNjNmYjU4N2JlZjlkNzhiODk5MGY1ZmMxYzY4ZmVlNjAxZGQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0xMTQsMjEgKzExNCwyMSBAQCBFeHBlY3RlZDxSZWY8
SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZl
c3Q+PiwgUHJvdAogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlBhZ2UgZG9tYWluIG11
c3QgYmUgZW5hYmxlZCJfcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7Ci0g
ICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGF1dG8q
IGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CisgICAg
bV9pbnNwZWN0ZWRQYWdlLmZvckVhY2hGcmFtZShbJl0gKEZyYW1lJiBmcmFtZSkgeworICAgICAg
ICBhdXRvKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7
CiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvJiBob3N0ID0gZG9jdW1lbnRMb2FkZXIt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCk7CiAgICAgICAgIFN0cmluZyBtYW5pZmVzdFVSTCA9IGhv
c3QuYXBwbGljYXRpb25DYWNoZUluZm8oKS5tYW5pZmVzdC5zdHJpbmcoKTsKICAgICAgICAgaWYg
KCFtYW5pZmVzdFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShQ
cm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q6OmNyZWF0ZSgpCi0g
ICAgICAgICAgICAgICAgLnNldEZyYW1lSWQocGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKSkKKyAg
ICAgICAgICAgICAgICAuc2V0RnJhbWVJZChwYWdlQWdlbnQtPmZyYW1lSWQoJmZyYW1lKSkKICAg
ICAgICAgICAgICAgICAuc2V0TWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCiAgICAgICAgICAgICAg
ICAgLnNldFN0YXR1cyhzdGF0aWNfY2FzdDxpbnQ+KGhvc3Quc3RhdHVzKCkpKQogICAgICAgICAg
ICAgICAgIC5yZWxlYXNlKCkpOwogICAgICAgICB9Ci0gICAgfQorICAgIH0pOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggZWE1NjgwMDU1YTRmNDljZTIxYjk0
MzYyMTQyY2E5OGMzYmQ2NmU0Ni4uODMyMmM4ZGIyYThhN2RhOWI3MTQ5NDEzMWNjNTY0YTZjYmQz
MDIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRlICJKU0V4
ZWNTdGF0ZS5oIgogI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIlBhdGgy
RC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMu
aCIKICNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xC
dWZmZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMzgwNWY4NDI0NWY2Y2I3M2M0NTg0NDM2NGQ1NGY4MjJi
NmJlYjI2ZC4uN2E3OTBiYjIzYzhmMzdhZjU3ZTQyODRiMzY3Y2FkOWQ2NzlhNDM0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTg1LDYgKzg1LDcgQEAKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZ1NlY3VyaXR5Lmgi
CisjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCkBA
IC05Niw3ICs5Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyR3JpZC5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKLSNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJT
ZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3Rh
dGljTm9kZUxpc3QuaCIKQEAgLTExNjMsMjAgKzExNjQsMTcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6Zm9jdXNOb2RlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fbm9kZVRv
Rm9jdXMpOwotCi0gICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX25vZGVUb0ZvY3VzLmdldCgpOwot
ICAgIG1fbm9kZVRvRm9jdXMgPSBudWxscHRyOwotCi0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpOworICAgIGF1dG8gbm9kZSA9IHN0ZDo6ZXhjaGFuZ2UobV9ub2Rl
VG9Gb2N1cywgbnVsbHB0cik7CisgICAgYXV0byBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJh
bWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSk7Ci0gICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
bWFpbldvcmxkR2xvYmFsT2JqZWN0KCpmcmFtZSk7CisgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZnbG9iYWxPYmplY3Qp
OwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGluamVjdGVkU2NyaXB0Lmluc3BlY3RPYmplY3Qobm9kZUFzU2NyaXB0VmFsdWUoKnNj
cmlwdFN0YXRlLCBub2RlLmdldCgpKSk7CisgICAgaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVj
dChub2RlQXNTY3JpcHRWYWx1ZShnbG9iYWxPYmplY3QsIG5vZGUuZ2V0KCkpKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCkKQEAgLTE4OTIsNyArMTg5MCwxMSBAQCBSZWY8UHJv
dG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9yRXZlbnRMaXN0ZW5lcgogCiAgICAgICAgIGlmIChkb2N1bWVudCkgewogICAgICAgICAgICAg
aGFuZGxlck9iamVjdCA9IHNjcmlwdExpc3RlbmVyLmVuc3VyZUpTRnVuY3Rpb24oKmRvY3VtZW50
KTsKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IFdlYkNvcmU6Omdsb2JhbE9iamVjdChzY3Jp
cHRMaXN0ZW5lci5pc29sYXRlZFdvcmxkKCksIGRvY3VtZW50KTsKKyAgICAgICAgICAgIGlmIChh
dXRvIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2h5IGRvIHdlIG5lZWQgdGhlIGNhbkV4ZWN1dGVTY3JpcHRzIGNoZWNrIGhlcmU/CisgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91
dFRvRXhlY3V0ZVNjcmlwdCkpCisgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IGZy
YW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qoc2NyaXB0TGlzdGVuZXIuaXNvbGF0ZWRXb3JsZCgp
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChoYW5kbGVyT2JqZWN0
ICYmIGdsb2JhbE9iamVjdCkgewpAQCAtMjg0NiwxMiArMjg0OCwxMiBAQCBSZWZQdHI8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2Rl
KE5vZGUqIG5vZAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byYgc3RhdGUgPSAqbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKTsKLSAgICBhdXRvIGlu
amVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Io
JnN0YXRlKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3Qo
KmZyYW1lKTsKKyAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaW5qZWN0ZWRTY3JpcHRGb3IoJmdsb2JhbE9iamVjdCk7CiAgICAgaWYgKGluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChub2RlQXNTY3JpcHRWYWx1ZShzdGF0ZSwgbm9kZSks
IG9iamVjdEdyb3VwKTsKKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChub2Rl
QXNTY3JpcHRWYWx1ZShnbG9iYWxPYmplY3QsIG5vZGUpLCBvYmplY3RHcm91cCk7CiB9CiAKIE5v
ZGUqIEluc3BlY3RvckRPTUFnZW50OjpzY3JpcHRWYWx1ZUFzTm9kZShKU0M6OkpTVmFsdWUgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDYyODZiNjUyMTI2ZTBkZDEzM2QyYzI0ZTQ3
ZmNkN2NkYzczNzZhNzMuLjVkNTEyZTc4ZTIwMDMyODhkMDE1MzEzNjg3ZTY4Mzg5OTA4YjczZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKyNpbmNs
dWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC02MTcsMTQgKzYxNywxNyBA
QCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShjb25zdCBTdHJpbmcm
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdAogICAgIGlmICghZ2V0RG9jdW1lbnRBbmRJREJGYWN0
b3J5RnJvbUZyYW1lT3JTZW5kRmFpbHVyZShmcmFtZSwgZG9jdW1lbnQsIGlkYkZhY3RvcnksIGNh
bGxiYWNrKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihtYWluV29y
bGRFeGVjU3RhdGUoZnJhbWUpKTsKLSAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdl
ID0ga2V5UmFuZ2UgPyBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZSgqa2V5UmFuZ2UpIDogbnVsbHB0
cjsKLSAgICBpZiAoa2V5UmFuZ2UgJiYgIWlkYktleVJhbmdlKSB7Ci0gICAgICAgIGNhbGxiYWNr
LT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IHBhcnNlIGtleSByYW5nZS4iX3MpOwotICAgICAgICBy
ZXR1cm47CisgICAgUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZTsKKyAgICBpZiAoa2V5
UmFuZ2UpIHsKKyAgICAgICAgaWRiS2V5UmFuZ2UgPSBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZSgq
a2V5UmFuZ2UpOworICAgICAgICBpZiAoIWlkYktleVJhbmdlKSB7CisgICAgICAgICAgICBjYWxs
YmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBwYXJzZSBrZXkgcmFuZ2UuIl9zKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAotICAgIFJlZjxEYXRhTG9hZGVyPiBk
YXRhTG9hZGVyID0gRGF0YUxvYWRlcjo6Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKGNhbGxiYWNr
KSwgaW5qZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBXVEZNb3ZlKGlk
YktleVJhbmdlKSwgc2tpcENvdW50LCBwYWdlU2l6ZSk7CisgICAgYXV0byBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZtYWluV29ybGRH
bG9iYWxPYmplY3QoKmZyYW1lKSk7CisgICAgYXV0byBkYXRhTG9hZGVyID0gRGF0YUxvYWRlcjo6
Y3JlYXRlKGRvY3VtZW50LCBXVEZNb3ZlKGNhbGxiYWNrKSwgaW5qZWN0ZWRTY3JpcHQsIG9iamVj
dFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBXVEZNb3ZlKGlkYktleVJhbmdlKSwgc2tpcENvdW50LCBw
YWdlU2l6ZSk7CiAgICAgZGF0YUxvYWRlci0+c3RhcnQoaWRiRmFjdG9yeSwgJmRvY3VtZW50LT5z
ZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5k
ZXggMjIzYTY3NjdiZTI3MWVlNGQyMmRlZDFkNmJlNjBjYTcwNzgxN2M4MS4uM2NlYjRiNDdmMTA2
OGEwYWZlYWYwMGYxNzljMjgwMGM0NzZiZDZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNTEs
NiArNTEsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIK
KyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgi
CiAjaW5jbHVkZSAiSlNXZWJTb2NrZXQuaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgpA
QCAtNjQsNyArNjUsNiBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1
ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgi
CiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VE
ZWNvZGVyLmgiCkBAIC0xMDQzLDExICsxMDQzLDExIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pj4gSW5zcGVjdG9yTmV0d29ya0Fn
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5n
IGZyYW1lIG9mIHdlYiBzb2NrZXQgZm9yIGdpdmVuIHJlcXVlc3RJZCJfcyk7CiAKLSAgICBhdXRv
JiBzdGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoZnJhbWUpOwotICAgIGF1dG8gaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcigmc3RhdGUp
OworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IG1haW5Xb3JsZEdsb2JhbE9iamVjdCgqZnJhbWUp
OworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmpl
Y3RlZFNjcmlwdEZvcigmZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoIWluamVjdGVkU2NyaXB0
Lmhhc05vVmFsdWUoKSk7CiAKLSAgICBhdXRvIG9iamVjdCA9IGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3Qod2ViU29ja2V0QXNTY3JpcHRWYWx1ZShzdGF0ZSwgd2ViU29ja2V0KSwgb2JqZWN0R3Jv
dXApOworICAgIGF1dG8gb2JqZWN0ID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdCh3ZWJTb2Nr
ZXRBc1NjcmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgd2ViU29ja2V0KSwgb2JqZWN0R3JvdXApOwog
ICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkludGVybmFs
IGVycm9yOiB1bmFibGUgdG8gY2FzdCBXZWJTb2NrZXQiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
aW5kZXggYjdjNmIwZWIyMzRmYjEwMzM5ZWQxYWZkMjhhNTk3MmFhMTQwNDE1Zi4uYzM4ZTgwNjEz
ODIzNTIxZjRhZmYzYmEyMTc4MzdjZDk0M2JlYmU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBA
IC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiUGFn
ZUhlYXBBZ2VudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgogI2luY2x1ZGUgIlRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIgogI2luY2x1ZGUgIldl
YkNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUgIldlYkRlYnVnZ2VyQWdlbnQuaCIKQEAgLTY2LDcg
KzY1LDYgQEAKICNpbmNsdWRlICJSdW5Mb29wT2JzZXJ2ZXIuaCIKICNlbmRpZgogCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTI5MCw2ICsy
ODgsMTIgQEAgZG91YmxlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCgpCiAgICAg
cmV0dXJuIG1fZW52aXJvbm1lbnQuZXhlY3V0aW9uU3RvcHdhdGNoKCkuZWxhcHNlZFRpbWUoKS5z
ZWNvbmRzKCk7CiB9CiAKK3N0YXRpYyBGcmFtZSogZnJhbWUoSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIGF1dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQoZ2xv
YmFsT2JqZWN0KTsKKyAgICByZXR1cm4gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8
RG9jdW1lbnQ+KCpjb250ZXh0KS5mcmFtZSgpIDogbnVsbHB0cjsKK30KKwogdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4
ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgLy8gQWxsb3cgZHVwbGljYXRlIHVubmFt
ZWQgcHJvZmlsZXMuIERpc2FsbG93IGR1cGxpY2F0ZSBuYW1lZCBwcm9maWxlcy4KQEAgLTMxMCw3
ICszMTQsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0RnJvbUNvbnNvbGUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgUwogICAgIGlmICghbV90cmFja2luZyAm
JiBtX3BlbmRpbmdDb25zb2xlUHJvZmlsZVJlY29yZHMuaXNFbXB0eSgpKQogICAgICAgICBzdGFy
dFByb2dyYW1tYXRpY0NhcHR1cmUoKTsKIAotICAgIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVj
b3Jkcy5hcHBlbmQoY3JlYXRlUmVjb3JkRW50cnkoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVh
dGVDb25zb2xlUHJvZmlsZURhdGEodGl0bGUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkNvbnNvbGVQ
cm9maWxlLCB0cnVlLCBmcmFtZUZyb21FeGVjU3RhdGUoZXhlYykpKTsKKyAgICBtX3BlbmRpbmdD
b25zb2xlUHJvZmlsZVJlY29yZHMuYXBwZW5kKGNyZWF0ZVJlY29yZEVudHJ5KFRpbWVsaW5lUmVj
b3JkRmFjdG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKHRpdGxlKSwgVGltZWxpbmVSZWNv
cmRUeXBlOjpDb25zb2xlUHJvZmlsZSwgdHJ1ZSwgZnJhbWUoZXhlYykpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdG9wRnJvbUNvbnNvbGUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IFN0cmluZyYgdGl0bGUpCkBAIC02NzYsNyArNjgwLDcgQEAgdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFjaygpCiAKIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6QnJlYWtwb2ludEFjdGlvbklEIGFjdGlvbklE
LCB1bnNpZ25lZCAvKmJhdGNoSWQqLywgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSkK
IHsKLSAgICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNh
bXBsZURhdGEoYWN0aW9uSUQsIHNhbXBsZUlkKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpQcm9iZVNh
bXBsZSwgZmFsc2UsIGZyYW1lRnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cisg
ICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVE
YXRhKGFjdGlvbklELCBzYW1wbGVJZCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6UHJvYmVTYW1wbGUs
IGZhbHNlLCBmcmFtZShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBQcm90b2Nv
bDo6VGltZWxpbmU6OkV2ZW50VHlwZSB0b1Byb3RvY29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdl
bnQuY3BwCmluZGV4IGJkZmY4NDM0ZGJlZjhjNTQ4NWIxNTA2ZWQyMDhhMDFjOWVjYWQyMjYuLmQx
NWU1M2E2OTc4NTg1YmYyYzljN2RhNGNmZGVlYTE1YmMzMzMyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTMyLDE0
ICszMiwxMiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9y
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCiAjaW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QXJndW1lbnRzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTQ5LDIwICs0NywxNSBAQCBX
ZWJDb25zb2xlQWdlbnQ6OldlYkNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQp
CiB7CiB9CiAKLVdlYkNvbnNvbGVBZ2VudDo6fldlYkNvbnNvbGVBZ2VudCgpID0gZGVmYXVsdDsK
LQotdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRvdyog
d2luZG93KQordm9pZCBXZWJDb25zb2xlQWdlbnQ6OmZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdp
bmRvdyYgd2luZG93KQogewotICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fY29uc29sZU1lc3Nh
Z2VzKSB7Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qg
PSBtZXNzYWdlLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgaWYgKCFsZXhpY2FsR2xvYmFsT2Jq
ZWN0KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChkb21XaW5kb3dGcm9tRXhl
Y1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpICE9IHdpbmRvdykKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBtZXNzYWdlLT5jbGVhcigpOworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IHdpbmRvdy5kb2N1bWVudCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fY29u
c29sZU1lc3NhZ2VzKSB7CisgICAgICAgICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dChtZXNzYWdl
LT5nbG9iYWxPYmplY3QoKSkgPT0gZG9jdW1lbnQpCisgICAgICAgICAgICAgICAgbWVzc2FnZS0+
Y2xlYXIoKTsKKyAgICAgICAgfQogICAgIH0KLQotICAgIHN0YXRpY19jYXN0PFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlciY+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKS5kaXNjYXJkSW5qZWN0ZWRT
Y3JpcHRzRm9yKHdpbmRvdyk7CisgICAgc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyJj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3Io
JndpbmRvdyk7CiB9CiAKIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL1dlYkNvbnNvbGVBZ2VudC5oCmluZGV4IDkwYzcwOGU5YjgwMTcxMmI2NTk0MDdhZTBjMWQ2
Njg2OGFlYTk0YTguLmE2MTQ3NTJlOTBjZGVhZTEzODkxNmZiZjgwZWY4NTU4NGI3YTUxMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQu
aApAQCAtMjUsNyArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkluc3BlY3Rv
cldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVySWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oPgogCkBAIC0z
NiwxNCArMzUsMTIgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiAKIGNsYXNzIFdlYkNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3Rv
ckNvbnNvbGVBZ2VudCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29uc29sZUFnZW50
KTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXZWJDb25zb2xl
QWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7Ci0gICAgfldlYkNvbnNvbGVBZ2VudCgpIG92ZXJyaWRl
OworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYkNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRl
eHQmKTsKIAorcHVibGljOgogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgotICAgIHZv
aWQgZnJhbWVXaW5kb3dEaXNjYXJkZWQoRE9NV2luZG93Kik7CisgICAgdm9pZCBmcmFtZVdpbmRv
d0Rpc2NhcmRlZChET01XaW5kb3cmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZUF1ZGl0QWdlbnQuY3BwCmluZGV4IGQ1MTBkYzE3MDU4ZTEyYmFkZTlhZTA5MmQ4
MDE5ZWE4NmM4ZDMzNGYuLjE3NGQ1MTE5MzRiOTk3YjFiYTBmOTVjYWJlMWMzMzY5MDg3OGVmZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVk
aXRBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VBdWRpdEFnZW50LmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXVkaXRET01P
YmplY3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJKU0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgotI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ2FsbEZyYW1lLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KQEAgLTYwLDkgKzYwLDcgQEAgSW5qZWN0
ZWRTY3JpcHQgUGFnZUF1ZGl0QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChzdGQ6Om9wdGlv
bmFsPFByb3RvY29sOjpSdW4KIHsKICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dElkKQogICAgICAg
ICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3JJZCgqZXhl
Y3V0aW9uQ29udGV4dElkKTsKLQotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRl
ID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpOwotICAg
IHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRT
dGF0ZSk7CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0
Rm9yKCZtYWluV29ybGRHbG9iYWxPYmplY3QobV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKSk7
CiB9CiAKIEluamVjdGVkU2NyaXB0IFBhZ2VBdWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2
YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25hbDxQcm90
b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVi
dWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDU1ZDk1MTg0OTQxOTViOTZkZjE2NWE5NGMxYzI5NjNh
ZGNlYjgzOTUuLjgyYjVkMjQ0YjYyOTY0NjE1ZmM0YzEyMzcyMzUxNGYyNjgxYjM5MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtMzgsMTEgKzM4LDExIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJQYWdlRGVidWdn
ZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2Ny
aXB0U3RhdGUuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KQEAgLTEzOCwxMCArMTM4LDggQEAgdm9p
ZCBQYWdlRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2IKIAogSW5qZWN0ZWRTY3JpcHQgUGFnZURlYnVnZ2VyQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYg
ZXhlY3V0aW9uQ29udGV4dElkKQogewotICAgIGlmICghZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0g
ICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0
YXRlKCZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkpOwotICAgICAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwotICAgIH0K
KyAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkKKyAgICAgICAgcmV0dXJuIGluamVjdGVkU2Ny
aXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKCZtYWluV29ybGRHbG9iYWxPYmplY3QobV9p
bnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKSk7CiAKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4
ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0
d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
TmV0d29ya0FnZW50LmNwcAppbmRleCBiYjRmNmJhN2MyY2M2MTg1ODU4NzE5NmM5NzNhMmMzODZm
ODhmNGY4Li5kMDY5MGQ0NGRlM2NlYWVkOWRjMzI1YThiYmYxYmVkN2I4N2ZiZmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3
b3JrQWdlbnQuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAjaW5jbHVkZSAiV2ViU29j
a2V0Q2hhbm5lbC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggYjMyZjNmNjk5YzJkMmEzNzcy
ODk3NjBiMjQ1YWM4MTc4NDEwMjQ1OC4uNTNhMzVmMjQzM2Y4ZWUxNjA2Zjk2ZjUxYjFjMzEzOTZk
NTBiNGQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcApAQCAtMzcsMTEgKzM3LDEwIEBACiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5j
bHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbmplY3RlZFNjcmlwdC5oPgpAQCAtOTEsNyArOTAsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBQYWdlUnVudGltZUFnZW50OjpkaXNhYmxlKCkKIHZvaWQgUGFnZVJ1bnRpbWVB
Z2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRnJhbWUmIGZyYW1lKQogewogICAgIC8vIEVuc3VyZSBleGVj
dXRpb24gY29udGV4dCBpcyBjcmVhdGVkIGZvciB0aGUgZnJhbWUgZXZlbiBpZiBpdCBkb2Vzbid0
IGhhdmUgc2NyaXB0cy4KLSAgICBtYWluV29ybGRFeGVjU3RhdGUoJmZyYW1lKTsKKyAgICBtYWlu
V29ybGRHbG9iYWxPYmplY3QoZnJhbWUpOwogfQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSYgZnJhbWUsIERPTVdyYXBwZXJXb3JsZCYg
d29ybGQpCkBAIC0xMDYsOCArMTA1LDcgQEAgdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDbGVh
cldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQKIEluamVj
dGVkU2NyaXB0IFBhZ2VSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFByb3RvY29sOjpSdW50
aW1lOjpFeGVjdXRpb25Db250ZXh0SWQ+JiYgZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlm
ICghZXhlY3V0aW9uQ29udGV4dElkKSB7Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNj
cmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKCZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1l
KCkpOwotICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CisgICAgICAgIEluamVjdGVkU2Ny
aXB0IHJlc3VsdCA9IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKCZt
YWluV29ybGRHbG9iYWxPYmplY3QobV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKSk7CiAgICAg
ICAgIGlmIChyZXN1bHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAi
SW50ZXJuYWwgZXJyb3I6IG1haW4gd29ybGQgZXhlY3V0aW9uIGNvbnRleHQgbm90IGZvdW5kIl9z
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM1LDI1ICsxMzMsMjUgQEAgdm9pZCBQYWdl
UnVudGltZUFnZW50OjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24oKQogICAgIGlmICgh
cGFnZUFnZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8qIGZyYW1lID0gJm1f
aW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS5jYW5FeGVjdXRl
U2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
KyAgICBtX2luc3BlY3RlZFBhZ2UuZm9yRWFjaEZyYW1lKFsmXSAoRnJhbWUmIGZyYW1lKSB7Cisg
ICAgICAgIGlmICghZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4
ZWN1dGVTY3JpcHQpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZnJhbWVJ
ZCA9IHBhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7CisgICAgICAgIGF1dG8gZnJhbWVJZCA9IHBh
Z2VBZ2VudC0+ZnJhbWVJZCgmZnJhbWUpOwogCiAgICAgICAgIC8vIEFsd2F5cyBzZW5kIHRoZSBt
YWluIHdvcmxkIGZpcnN0LgotICAgICAgICBhdXRvKiBtYWluR2xvYmFsT2JqZWN0ID0gbWFpbldv
cmxkRXhlY1N0YXRlKGZyYW1lKTsKLSAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJ
ZCwgbWFpbkdsb2JhbE9iamVjdCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgICAgICBh
dXRvJiBtYWluR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkR2xvYmFsT2JqZWN0KGZyYW1lKTsKKyAg
ICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgJm1haW5HbG9iYWxPYmplY3QsIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIAotICAgICAgICBmb3IgKGF1dG8mIGpzV2luZG93UHJv
eHkgOiBmcmFtZS0+d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7Cisg
ICAgICAgIGZvciAoYXV0byYganNXaW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5KCkuanNX
aW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgewogICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0ganNXaW5kb3dQcm94eS0+d2luZG93KCk7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0
ID09IG1haW5HbG9iYWxPYmplY3QpCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09ICZt
YWluR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAg
ICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IGRvd25jYXN0PERPTVdpbmRvdz4oanNXaW5kb3dQcm94
eS0+d3JhcHBlZCgpKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICAgICAg
bm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgZ2xvYmFsT2JqZWN0LCBqc1dpbmRvd1Byb3h5
LT53b3JsZCgpLCAmc2VjdXJpdHlPcmlnaW4pOwogICAgICAgICB9Ci0gICAgfQorICAgIH0pOwog
fQogCiBzdGF0aWMgUHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRUeXBlIHRvUHJv
dG9jb2woRE9NV3JhcHBlcldvcmxkOjpUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmlu
ZGV4IDhmN2UxNWVkOTVmMWM5MjJmNGU0YjFlOWYwODRmMDkzMWUxMTg4OWQuLmMyM2VmZGU4NGFh
NGFkYTllZDE4ODdmYzQxMGRjNjgzZTFiNGJhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya2VyQXVk
aXRBZ2VudC5oIgogCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVk
U2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmg+CkBAIC01NSw3ICs1NCw5IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdlbnQ6Omlu
amVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVyCiAgICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV9nbG9iYWxTY29wZSkp
OworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgbV9nbG9iYWxTY29wZS5zY3JpcHQoKSBp
cyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIGdsb2JhbFNjb3BlV3Jh
cHBlcigpIGlzIG5vbi1udWxsPworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5p
bmplY3RlZFNjcmlwdEZvcihtX2dsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBw
ZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggZDQ2ODQzZmQ2Y2I4MDBkYWJlNTE1MTdjZmExMDQ2MGZjYzdlNDVmYi4uMWJk
YzE3YmNhZWExMGQ4ZDE0NzE0MmRiYzI1ZGY5N2YyOGI4Y2Y2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdn
ZXJBZ2VudC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXb3JrZXJEZWJ1Z2dlckFnZW50LmgiCiAKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgog
I2luY2x1ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbmpl
Y3RlZFNjcmlwdC5oPgpAQCAtNjAsNyArNTksOSBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1
Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgog
ICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fZ2xv
YmFsU2NvcGUpKTsKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZ2xvYmFsU2NvcGUu
c2NyaXB0KCkgaXMgbm9uLW51bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBnbG9i
YWxTY29wZVdyYXBwZXIoKSBpcyBub24tbnVsbD8KKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IobV9nbG9iYWxTY29wZS5zY3JpcHQoKS0+Z2xvYmFs
U2NvcGVXcmFwcGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVu
dGltZUFnZW50LmNwcAppbmRleCA1ODBkYzBhOTNiMzY3NzgxZjcyODk5NWRiMWFlZGJlYjM3YzEy
YmEyLi42NmRhZjI0YTg4ZWIyMjRkYTlhYWJkZjM4ZTA3YmRlM2Y4N2MzMTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
clJ1bnRpbWVBZ2VudC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgpAQCAtNTgsNyArNTcsOSBAQCBJbmplY3RlZFNjcmlw
dCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJy
b3JTdHJpbmcmCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAg
IHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxP
YmplY3QobV9nbG9iYWxTY29wZSkpOworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgbV9n
bG9iYWxTY29wZS5zY3JpcHQoKSBpcyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFy
YW50ZWVzIGdsb2JhbFNjb3BlV3JhcHBlcigpIGlzIG5vbi1udWxsPworICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihtX2dsb2JhbFNjb3BlLnNjcmlw
dCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="473390"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="473394"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447702</attachid>
            <date>2021-12-21 02:12:21 -0800</date>
            <delta_ts>2021-12-21 02:53:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234548-20211221021220.patch</filename>
            <type>text/plain</type>
            <size>79044</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFiYzJiOTM0OTMwNWM1
NjJhMzdiYTI2ODdlNDQ1YjlkNWJkMGRiNC4uNGM3MDk2ZjY1NDY0OTc5YzNmOTMwMDUyMWU3ZWM2
MTM0YTNkYWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMS0xMi0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
aXMgYSByZW1uYW50IG9mIEphdmFTY3JpcHQgZW5naW5lIGFic3RyYWN0aW9uIHRoYXQgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAg
U2NyaXB0U3RhdGUuaC9jcHAgaXMgZmlsZSBsZWZ0IG92ZXIgZnJvbSB3aGVuIHdlIGhhZCBhIGxh
eWVyIHRvIGFic3RyYWN0CisgICAgICAgIEphdmFTY3JpcHQgYmluZGluZyBhbmQgdXNhZ2UgaW4g
V2ViQ29yZSBzbyBpdCBjb3VsZCB3b3JrIHdpdGggYm90aCBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBhbmQgR29vZ2xlJ3MgVjggZW5naW5lLiBXZSBoYXZlbid0IG5lZWRlZCB0aGF0IGZvciB5ZWFy
cywgYW5kIHN0cmlwcGluZyBhd2F5IHNvbWUKKyAgICAgICAgb2YgdGhlIGxheWVycyBtaWdodCBo
ZWxwIHVzIG1ha2UgY29kZSBtb3JlIHJlYWRhYmxlIGFuZCBwZXJoYXBzIGV2ZW4gbm90aWNlIHdh
eXMKKyAgICAgICAgdG8gbWFrZSBpdCBtb3JlIGVmZmljaWVudC4gRm9yIG5vdywgdGhpcyBwYXRj
aCByZW1vdmVzIHRoZSBmdW5jdGlvbnMgZnJvbQorICAgICAgICBTY3JpcHRTdGF0ZS5oL2NwcCBh
bmQgbW92ZXMgdGhlbSB0byBtb3JlIHN1aXRhYmxlIHBsYWNlcywgc2ltcGxpZnlpbmcgaW4gdGhl
IHByb2Nlc3MuCisKKyAgICAgICAgQWxzbyBiZWdpbiB0byBqdXN0IGNhbGwgZ2xvYmFsIG9iamVj
dHMgImdsb2JhbCBvYmplY3QiLCBhbmQgbm90ICJzY3JpcHQgc3RhdGUiLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBTY3JpcHRTdGF0ZS5oLgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0
U3RhdGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6
IERpdHRvLgorCisgICAgICAgICogU291cmNlcy50eHQ6IFJlbW92ZWQgU2NyaXB0U3RhdGUuY3Bw
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBT
Y3JpcHRTdGF0ZS5oIGFuZCAuY3BwLgorICAgICAgICBBbHNvIGFsbG93ZWQgdGhlIHNjcmlwdCB0
byBzb3J0IHRoZSBmaWxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFpbldvcmxkR2xvYmFsT2JqZWN0KTogUmVuYW1l
ZCB0aGUgbWFpbldvcmxkRXhlY1N0YXRlIGZ1bmN0aW9uIGFuZAorICAgICAgICBtb3ZlZCBpdCBo
ZXJlIGZyb20gU2NyaXB0U3RhdGUuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmg6IFR3ZWFrZWQgZm9ybWF0dGluZyBvZiB0aGUgaGVhZGVyLiBBZGRlZCB0aGUK
KyAgICAgICAgbWFpbldvcmxkR2xvYmFsT2JqZWN0IGZ1bmN0aW9uLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUu
aC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQp
OiBDYWxsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRp
b25Db250ZXh0KTogUmVuYW1lZCB0aGUgc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUKKyAgICAgICAgZnVuY3Rpb24gYW5kIG1vdmVkIGl0IGhlcmUgZnJvbSBTY3JpcHRTdGF0ZS5j
cHAuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaDogQWRkZWQgdGhlIGV4ZWN1
dGlvbkNvbnRleHQgZnVuY3Rpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaCwgYWRkZWQgaW5jbHVkZQor
ICAgICAgICBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6d2lsbENy
ZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UpOiBDYWxsIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOiBD
aGFuZ2VkIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbAorICAgICAgICBm
dW5jdGlvbnMgdG8gdGFrZSBhIE5vZGUmIGluc3RlYWQgb2YgYSBuZXZlci1udWxsIE5vZGUqLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oOiBUd2Vha2VkIGZvcm1hdHRp
bmcgYSBiaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDogUmVtb3ZlZC4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6IFJlbW92ZWQgaW5j
bHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6d3JhcENyeXB0b0tleSk6
IFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2Ugb2YgZXhlY3V0aW9uQ29udGV4dCBmdW5jdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OnVud3JhcENyeXB0b0tleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZE9mZnNjcmVlbkNhbnZhcyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRSVENEYXRhQ2hhbm5lbCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5h
bCk6IERpdHRvLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0
aW9uKToKKyAgICAgICAgUGFzcyByZWZlcmVuY2UgdG8gd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFu
ZWRUcmVlQnlSZW1vdmFsLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3Zl
Tm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLCBhZGRlZCBpbmNsdWRlCisg
ICAgICAgIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZGlkTG9nTWVzc2FnZSk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3Jp
cHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Z2xv
YmFsT2JqZWN0KTogVXNlIHRoZQorICAgICAgICBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBoZWxwZXIgZnVuY3Rpb25zLgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmFkZFNlbGZUb0dsb2JhbE9iamVjdEluV29y
bGQpOgorICAgICAgICBVc2UgdGhlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkgaW5zdGVhZCBv
ZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUpOiBEaXR0by4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwpOiBEbworICAg
ICAgICB0aGUgbnVsbCBjaGVjayBoZXJlIGluc3RlYWQgb2YgaW4gZnJhbWVXaW5kb3dEaXNjYXJk
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDog
UmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IpOgorICAgICAg
ICBSZXdvcmtlZCBsb2dpYyB0byB1c2UgZXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIGRvbVdp
bmRvd0Zyb21FeGVjU3RhdGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDogUmVtb3ZlZCBp
bmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Zm9jdXNOb2RlKTogVXNlIHN0ZDo6ZXhjaGFuZ2UgaGVyZSBpbiB0aGUKKyAgICAgICAg
aWRpb21hdGljICJ0YWtlIGFuZCBudWxsIGEgdmFsdWUiIGNhc2UgaGVyZS4gVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOiBVc2UKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciBk
aXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggYSBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YKKyAgICAgICAgU2NyaXB0U3RhdGUuaCBhbmQg
YWRkZWQgaW5jbHVkZSBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZXNvbHZlV2ViU29ja2V0KTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAo
V2ViQ29yZTo6ZnJhbWUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBmcm9tIGEgZ2xv
YmFsIG9iamVjdCB0byBhIGZyYW1lLgorICAgICAgICBDYWxscyBleGVjdXRpb25Db250ZXh0IGFu
ZCBnZXRzIHRvIHRoZSBmcmFtZSBmcm9tIHRoZXJlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6IFVzZSBmcmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6
IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
OiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOiBUYWtlIGEgcmVmZXJlbmNlIGlu
c3RlYWQgb2YKKyAgICAgICAgYSBwb2ludGVyIHRoYXQgbXVzdCBub3QgYmUgbnVsbC4gVXNlIGV4
ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBkb21XaW5kb3dGcm9tRXhlY1N0YXRl
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4gUmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBXVEZfTUFLRV9O
T05DT1BZQUJMRSAoYmFzZSBjbGFzcyBpcyBhbHJlYWR5IG5vdCBjb3B5YWJsZSkgYW5kCisgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIChjbGFzcyBpcyBhbiBhYnN0cmFjdCBiYXNlIGNs
YXNzIGFuZCBuZXZlciBhbGxvY2F0ZWQpLgorICAgICAgICBNYWRlIGNvbnN0cnVjdG9yIHByb3Rl
Y3RlZC4gQ2hhbmdlZCB0aGUgRE9NV2luZG93IGFyZ3VtZW50IHRvCisgICAgICAgIGZyYW1lV2lu
ZG93RGlzY2FyZGVkIHRvIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyIHRoYXQgbXVz
dCBub3QgYmUgbnVsbC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVk
aXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdn
ZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0
d29ya0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6IFJlbW92ZWQg
aW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFuZCBhZGRlZCBpbmNsdWRlIG9mIEpT
RE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojpm
cmFtZU5hdmlnYXRlZCk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbik6IERpdHRvLgorICAgICAgICBBbHNvIHVzZSBQYWdlOjpmb3JFYWNoRnJhbWUgaW5z
dGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRT
dGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVh
ZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAg
ICAgaW5zdGVhZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6IFVzZSBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5
CisgICAgICAgIGluc3RlYWQgb2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKwogMjAyMS0x
Mi0yMSAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgog
CiAgICAgICAgIFtMQ01TXSBVc2Ugc3RkOjp1bnFpdWVfcHRyIHRvIHJldGFpbiBMQ01TIG9iamVj
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGJjMDg0ZTlmNmJjOTcxYjQyMGM1NWRiNDk3MWI4Yjcw
ZWNlN2M1YzcuLjFlNjUxMDIxOWNiNjdlNzNjMmIwZjkyOWMwNTdkNmUwZDEwMzY3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtNDY1LDcgKzQ2NSw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
CiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKLSAgICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCiAgICAg
YmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGVJbmxpbmVzLmgKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCmluZGV4IGVkZGJlOGJlMWUzMTEwODcxYzM3NzExODRhMmY5NWJhN2ZiODAyZmQuLjE0MzUx
NDBhNWNiNGExYTFkNDA3YTJkYjI5ZDE1YmRmMmQ1MmMwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTQyLDcgKzQy
LDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDY3ZDNiYTRjNzk4MzExMTI3OTMxZTI5NTI4NDg0ZTY2ZWNkMzRjZmYuLjU4NDM2
MTU2NTAwMTY3ODc3OGRiNzUwMTk1ZjZlYjBmMmQxYzFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTUwLDcgKzUw
LDYgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVHJh
bnNhY3Rpb25PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggNDk1MzBmNjI0YjAxMGY3NmE0ODMyNGJmZGQ5OWMyZDI2ODhhNzc4
My4uYmQ1YTc0NzljYjM5ZTQ2Y2M5MTA0MDBmNGVlMzg0OTMyNGM3NTMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTYzMiw3ICs2MzIsNiBAQCBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCiBi
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAotYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuY3BwCiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCiBiaW5kaW5ncy9qcy9TdHJ1Y3R1
cmVkQ2xvbmUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZmM0ZThkZTA1MTVhM2U3ZGUwODNmZDU3NjdkMDg5ZmE3YzI3OTQ5
NC4uM2QxMWU0NzM1NmZhZjA0YTYwNzUyYmJiZmEyNTUzMGFlZGFhZjI4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIwMCw3
ICsxMjAwLDYgQEAKIAkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVy
cm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMx
NEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUMzQjhBMTI2NDlCMUUwMDA0
RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzNCODlGMjY0OUIx
QjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNC
OEEyMjY0OUIxRTUwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzNCODlC
MjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MUM3NjBC
MTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3Jp
cHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxQ0I4NDAxMjVDQUI3QjMwMDEwRTJCMSAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFDQjg0MDAyNUNBQjdCMDAwMTBFMkIxIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDFDQjg0MDIyNUNBQjgxRTAwMTBFMkIxIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDgzM0Ex
RTQzMjRCQjAwNjIxRTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRDAxNUNBMEY0QjVD
NzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg1
MjMsNyArODUyMiw2IEBACiAJCTQxMjA5RTk0MjE2RUE2OUEwMEE3M0ExMiAvKiBSVENDZXJ0aWZp
Y2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDZXJ0aWZp
Y2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk1MjE2RUMzNEUw
MEE3M0ExMiAvKiBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oOyBwYXRo
ID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk2MjE2RUMzNEYwMEE3M0ExMiAvKiBMaWJXZWJSVEND
ZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHA7IHBhdGggPSBsaWJ3ZWJydGMv
TGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFi
bGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxl
U3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MTFGNTg2
MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODUxLDcgKzg4NDksNiBAQAogCQk0MUMz
Qjg5RTI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMz
Qjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4QTAyNjQ5
QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyog
U2NyaXB0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdC
NERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8q
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTky
NTcsMTIgKzE5MjU0LDEyIEBACiAJCTExQTFFNkZCMjZGQkI2Q0UwMDQzNUQzNiAvKiBkaXNwbGF5
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk2RjYwRTVB
OTI3NzEwRjM5MDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggKi8sCi0JCQkJ
NkY2MEU1QTcyNzcxMEYyRjAwNUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAg
Ki8sCiAJCQkJNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCAq
LywKIAkJCQkxMTUxM0QwMDI2RDk4MUREMDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcCAqLywKIAkJCQkxMTUxM0QwMjI2RDk4MUU3MDA0RDNGQUEgLyogSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyLmggKi8sCiAJCQkJNkY5MTQyMEYyNTE1MjEzNzAwNEU0RkVBIC8q
IElubGluZURpc3BsYXlMaW5lLmggKi8sCisJCQkJNkY2MEU1QTcyNzcxMEYyRjAwNUMxNUI5IC8q
IElubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgKi8sCisJCQkJNkY2MEU1QTkyNzcxMEYzOTAw
NUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBkaXNwbGF5OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5MjA3LDggKzI5MjA0
LDYgQEAKIAkJCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcCAqLywKIAkJCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9h
ZGVyLmggKi8sCiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNv
ZGUuaCAqLywKLQkJCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3Bw
ICovLAotCQkJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovLAog
CQkJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLywKIAkJ
CQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICov
LAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwICovLApAQCAtMzQ4MzQsNiArMzQ4MjksNyBAQAogCQkJCTZGQzNGOTQ3MjUxNjc1NjcwMEE0
OUJFQSAvKiBJbmxpbmVEaXNwbGF5Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTUxM0QwMzI2
RDk4MUU4MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RjkxNDIxMTI1MTUyMTM4MDA0RTRGRUEgLyogSW5saW5lRGlzcGxheUxpbmUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTZGNjBFNUFBMjc3MTBGMzkwMDVDMTVCOSAvKiBJbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGN0NBM0NBMjA4QzJCMkUw
MDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDdDNEQ1N0QyNjUwOEJDQjAwQzdBQjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkZFNjM2RTgyNjQ3OTYyOTAwRjA5NTFFIC8qIElubGluZUZvcm1h
dHRpbmdRdWlya3MuaCBpbiBIZWFkZXJzICovLApAQCAtMzY5MDgsNyArMzY5MDQsNiBAQAogCQkJ
CUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291
cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8q
IFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBE
MEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwRDdBODE3MTM2
RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM4QUUzNEYxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVy
cyAqLywKQEAgLTM3NjY2LDcgKzM3NjYxLDYgQEAKIAkJCQlCRUYyOUVFQzE3MTVERDA5MDBDNEI0
QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMzM2RjY0MTdG
QTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNkY2MEU1QUEyNzcxMEYzOTAwNUMxNUI5IC8qIElubGluZURp
c3BsYXlMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxRjlCMTQyNzAyMzVGNzAw
NjE3RUI2IC8qIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDhCNUE0MzE4MEQxNDlBMDA4QjhFNjUgLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MEU4MUQxMUJGMjc2NTYwMDFGREE0OCAvKiBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA1NDc2Mjdh
OWY4OWM3NTY0Y2ZiNWY4NzBkMjVjODZmNTIzMGRmNTVkLi4xMjVlYzAwNzMyMzVjMGZjYmE0OTc0
MWU0MWZiZmE0ZDNlMjA2OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MzcsNCArNjM3LDEyIEBAIHZvaWQgSlNET01XaW5k
b3c6OnNldE9wZW5EYXRhYmFzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6CiAgICAgY3JlYXRlRGF0YVByb3BlcnR5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgIm9wZW5EYXRh
YmFzZSIpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCitKU0RPTVdpbmRvdyYgbWFpbldvcmxk
R2xvYmFsT2JqZWN0KEZyYW1lJiBmcmFtZSkKK3sKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50
ZWVzIHRoZSByZXN1bHQgb2YganNXaW5kb3dQcm94eSgpIGlzIG5vbi1udWxsPworICAgIC8vIEZJ
WE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCBvZiB3aW5kb3coKSBpcyBub24tbnVsbD8K
KyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoZSByZXN1bHQgb2Ygd2luZG93KCkgYSBK
U0RPTVdpbmRvdz8KKyAgICByZXR1cm4gKmpzQ2FzdDxKU0RPTVdpbmRvdyo+KGZyYW1lLndpbmRv
d1Byb3h5KCkuanNXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPndpbmRvdygp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgKaW5kZXggN2NmYTdhNmJiM2E3YzRhMGFkZjZjYWZh
NzM2OWI3MmJiNTcwN2E3Ny4uMmIxMmJjY2E0ZTJlNTBjMjU0MDczNjExOTcwMDRmM2Q3ZDNmODg5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNSw2
ICsyNSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsK
IGNsYXNzIEFic3RyYWN0RnJhbWU7CiAKK0pTRE9NV2luZG93KiBhc0pTRE9NV2luZG93KEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKK2NvbnN0IEpTRE9NV2luZG93KiBhc0pTRE9NV2luZG93KGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKworZW51bSBjbGFzcyBET01XaW5kb3dUeXBlIDogYm9v
bCB7IExvY2FsLCBSZW1vdGUgfTsKK3RlbXBsYXRlPERPTVdpbmRvd1R5cGU+IGJvb2wganNET01X
aW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKEpTRE9NR2xvYmFsT2JqZWN0
KiwgQWJzdHJhY3RET01XaW5kb3cmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgY29uc3QgU3RyaW5nJik7CisKK2VudW0gY2xhc3Mg
Q3Jvc3NPcmlnaW5PYmplY3QgOiBib29sIHsgV2luZG93LCBMb2NhdGlvbiB9OwordGVtcGxhdGU8
Q3Jvc3NPcmlnaW5PYmplY3Q+IHZvaWQgYWRkQ3Jvc3NPcmlnaW5Pd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jik7CisKK2Jvb2wgaGFu
ZGxlQ29tbW9uQ3Jvc3NPcmlnaW5Qcm9wZXJ0aWVzKEpTQzo6SlNPYmplY3QqIHRoaXNPYmplY3Qs
IEpTQzo6Vk0mLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKworSlNE
T01XaW5kb3cmIG1haW5Xb3JsZEdsb2JhbE9iamVjdChGcmFtZSYpOworSlNET01XaW5kb3cqIG1h
aW5Xb3JsZEdsb2JhbE9iamVjdChGcmFtZSopOworCiBpbmxpbmUgSlNET01XaW5kb3cqIGFzSlNE
T01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVy
biBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CkBAIC0zNSwxNSArNDks
OSBAQCBpbmxpbmUgY29uc3QgSlNET01XaW5kb3cqIGFzSlNET01XaW5kb3coY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CiB9CiAKLWVudW0gY2xhc3MgRE9NV2luZG93
VHlwZSB7IExvY2FsLCBSZW1vdGUgfTsKLQotdGVtcGxhdGUgPERPTVdpbmRvd1R5cGUgd2luZG93
VHlwZT4KLWJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNz
KEpTRE9NR2xvYmFsT2JqZWN0KiwgQWJzdHJhY3RET01XaW5kb3cmLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgY29uc3QgU3RyaW5n
Jik7Ci0KLWVudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PYmplY3QgeyBXaW5kb3csIExvY2F0aW9uIH07
Ci0KLXRlbXBsYXRlIDxDcm9zc09yaWdpbk9iamVjdCBvYmplY3RUeXBlPgotdm9pZCBhZGRDcm9z
c09yaWdpbk93blByb3BlcnR5TmFtZXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6UHJvcGVy
dHlOYW1lQXJyYXkmKTsKLWJvb2wgaGFuZGxlQ29tbW9uQ3Jvc3NPcmlnaW5Qcm9wZXJ0aWVzKEpT
Qzo6SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTQzo6Vk0mLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKK2lubGluZSBKU0RPTVdpbmRvdyogbWFpbldvcmxkR2xvYmFsT2Jq
ZWN0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4gZnJhbWUgPyAmbWFpbldvcmxkR2xvYmFs
T2JqZWN0KCpmcmFtZSkgOiBudWxscHRyOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5jcHAKaW5kZXggYmVjYTU2M2Y1
NzliMTQ2ZDczMjM4YWQ4NjgxZWJlMGYyNDNmNTdiYi4uYjUzMDhlMjM1MzFlOGFlZDJkMTQyMWQ3
MjExNmZkY2YxODlkNTJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0
YXRlLmNwcApAQCAtMjksMTQgKzI5LDEzIEBACiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0V4ZWNTdGF0ZTo6
ZGlkTGVhdmVTY3JpcHRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1
dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgY29udGV4dC0+ZXZlbnRMb29wKCku
cGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKQEAgLTUzLDQgKzUyLDExIEBAIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplCiAgICAgcmV0dXJuIEpTRXhlY1N0YXRlOjpldmFsdWF0ZShsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwogfQog
CitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRpb25Db250ZXh0KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAoIWdsb2JhbE9iamVjdCB8fCAhZ2xvYmFs
T2JqZWN0LT5pbmhlcml0czxKU0RPTUdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRl
LmgKaW5kZXggMjdmNzY1MGRhNmE4ZWU0NGYzNWY5NDdkNDk4ZWEzODFjNmM5NDMxZi4uZTI2NWIx
MzM4YWM4NzQ5MDNlMWY3ZmMyMzZlZDU3M2Q1NWZmMzFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V4ZWNTdGF0ZS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NywyNSArNDcsMjUgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6OkpTR2xvYmFsT2JqZWN0KiBjdXJyZW50U3RhdGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5jdXJyZW50U3RhdGUoKTsKLSAgICB9OworICAgIH0K
ICAgICAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBK
U0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0
aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRlKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2Vw
dGlvbik7Ci0gICAgfTsKKyAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6U291
cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUg
Y3VycmVudFN0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gSlNDOjpl
dmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJuZWRF
eGNlcHRpb24pOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFs
dWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6
OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTQzo6SlNWYWx1
ZSgpKQogICAgIHsKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHVudXNlZDsKICAg
ICAgICAgcmV0dXJuIGV2YWx1YXRlKGxleGljYWxHbG9iYWxPYmplY3QsIHNvdXJjZSwgdGhpc1Zh
bHVlLCB1bnVzZWQpOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBw
cm9maWxlZENhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpQcm9maWxpbmdSZWFzb24gcmVhc29uLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNv
bnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25z
dCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pCiAgICAgewpAQCAtMTg1LDQgKzE4NSw2IEBAIHByaXZhdGU6CiBKU0M6OkpTVmFs
dWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYsIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBKU0M6OkpTVmFsdWUgZXZhbHVhdGVI
YW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpTb3Vy
Y2VDb2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlv
bkNvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAxZmNj
MjQ0ZDhkOTUwZTE3ODFlMmUwYmRhNmE2NGVjN2Q3YTI5YTcxLi5kNDFmOGVlYTVmMzQxNzgwYjQy
M2Y2YjdlNmU3ODYzYjE5YWI5Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKU0NEQVRBU2VjdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ29tbWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBl
LmgiCkBAIC02MSwxNyArNjIsMTUgQEAKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aCIKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNWR0Vs
ZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKICNpbmNsdWRlICJHQ1JlYWNoYWJsZVJlZi5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIK
ICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNS
ZWFjaGFibGVGcm9tRE9NKE5vZGUqIG5vZGUsIEFic3RyYWN0U2xvdFZpc2l0b3ImIHZpc2l0b3Is
IGNvbnN0IGNoYXIqKiByZWFzb24pCkBAIC0yMTIsMTQgKzIxMSwxNSBAQCBKU0M6OkpTT2JqZWN0
KiBnZXRPdXRPZkxpbmVDYWNoZWRXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE5vZGUmCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+d29ybGQoKS53cmFwcGVycygpLmdl
dCgmbm9kZSk7CiB9CiAKLXZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1v
dmFsU2xvd0Nhc2UoTm9kZSogcm9vdCkKK3ZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRU
cmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSYgcm9vdCkKIHsKLSAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhlY1N0YXRlKHJvb3QtPmRvY3Vt
ZW50KCkuZnJhbWUoKSk7Ci0gICAgaWYgKCFsZXhpY2FsR2xvYmFsT2JqZWN0KQorICAgIGF1dG8g
ZnJhbWUgPSByb290LmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpyb290KTsKKyAgICBhdXRvJiBnbG9iYWxPYmpl
Y3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
aygmZ2xvYmFsT2JqZWN0KTsKKyAgICB0b0pTKCZnbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3Qs
IHJvb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IGQ3MWIyNWMwZDg3YWFlNTYxOGRkMjc3MjQwYzlj
ZGM1MGEwOGMzMWQuLjc1OTJlZDc0YmNlOTdlYTBjYTNhNDgyYTk0OTE4ZDcwMTdkYjljZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCkBAIC02OSwxNiArNjks
MTEgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2IKIC8vIHJvb3QuIEluIHRoZSBKYXZhU2NyaXB0
IERPTSwgYSBub2RlIHRyZWUgc3Vydml2ZXMgYXMgbG9uZyBhcyB0aGVyZSBpcyBhCiAvLyByZWZl
cmVuY2UgdG8gYW55IG5vZGUgaW4gdGhlIHRyZWUuIFRvIG1vZGVsIHRoZSBKYXZhU2NyaXB0IERP
TSBvbiB0b3Agb2YKIC8vIHRoZSBDKysgRE9NLCB3ZSBlbnN1cmUgdGhhdCB0aGUgcm9vdCBvZiBl
dmVyeSB0cmVlIGhhcyBhIEphdmFTY3JpcHQgd3JhcHBlci4KLXZvaWQgd2lsbENyZWF0ZVBvc3Np
Ymx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSogcm9vdCk7Ci1pbmxpbmUgdm9p
ZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoTm9kZSogcm9vdCkKK3Zv
aWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSYg
cm9vdCk7CitpbmxpbmUgdm9pZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92
YWwoTm9kZSYgcm9vdCkKIHsKLSAgICBpZiAocm9vdC0+d3JhcHBlcigpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIXJvb3QtPmhhc0NoaWxkTm9kZXMoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2Uocm9v
dCk7CisgICAgaWYgKCFyb290LndyYXBwZXIoKSAmJiByb290Lmhhc0NoaWxkTm9kZXMoKSkKKyAg
ICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2Uocm9v
dCk7CiB9CiAKIGlubGluZSB2b2lkKiByb290KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKaW5kZXggMTEzZGNjYjg0NmIwZWYxYzYzZDMxZDEw
NDI5YzdiOTRlYzE5NGJjMC4uOTE4YjY2MTRhYjA0MzQzYTk2NDk3MGJkZjc0ZjQ0NTllOTc4M2Jm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaApAQCAtNDgs
MTcgKzQ4LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4gc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKSB7IHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOyB9CiAKICAgICBzdGF0aWMgSlNXaW5kb3dQcm94eSYgY3JlYXRlKEpTQzo6Vk0mLCBBYnN0
cmFjdERPTVdpbmRvdyYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwog
CiAgICAgSlNET01HbG9iYWxPYmplY3QqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odGFyZ2V0KCkpOyB9CisKICAgICB2b2lkIHNldFdpbmRv
dyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIHNldFdpbmRvdyhBYnN0
cmFjdERPTVdpbmRvdyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTQ4ZWRhYTc4YjFhYzYyZGZh
ODdiNTUxZDJhZWY5YjhjNGZiMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKLSNpbmNsdWRlICJKU1dv
cmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1
ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJhbWUuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ET01X
aW5kb3cqIGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCkKLXsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwotICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0czxKU0RPTVdpbmRvd0Jhc2U+KHZt
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxKU0RP
TVdpbmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7Ci19Ci0KLUZyYW1lKiBmcmFt
ZUZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkK
LXsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUo
KSA6IG51bGxwdHI7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QpCi17Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbGV4aWNh
bEdsb2JhbE9iamVjdDsKLSAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01HbG9iYWxPYmplY3Q+KHZtKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCi1K
U0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqIGZyYW1lKQotewot
ICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBmcmFt
ZS0+d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+
d2luZG93KCk7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICgh
ZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS5n
bG9iYWxPYmplY3Qod29ybGQpOwotfQotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRnJhbWUqIGZyYW1lKQotewotICAgIHJldHVybiBm
cmFtZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpIDogbnVsbHB0cjsKLX0K
LQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKLXsKLSAgICBpZiAoYXV0byogc2Ny
aXB0Q29udHJvbGxlciA9IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAg
ICAgICByZXR1cm4gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTUwNjMwOTk2MGI5MjgxZWQx
MDAyMTkzNzUzZmM5MjVhZGM0MDgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDExIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIENhbGxGcmFtZTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIERPTVdyYXBw
ZXJXb3JsZDsKLWNsYXNzIEZyYW1lOwotY2xhc3MgTm9kZTsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Ci1jbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKLQotRE9NV2luZG93
KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLUZyYW1lKiBm
cmFtZUZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwotU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJh
bWUqKTsKLQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3Js
ZCYsIE5vZGUqKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdChET01XcmFwcGVyV29ybGQmLCBGcmFtZSopOwotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDBiYWZhNzk4MzA5YzE2NTBjNjQwMmJkMDZlZWE3MzAxMTk2
ZTNlMzMuLmRiYWNkYTVlNDliZmE5MjhkOTY5MGI4NGEzZmE2MDczN2QzMTk0YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cApAQCAtNTYsMTUgKzU2LDggQEAKICNpbmNsdWRlICJKU1JUQ0NlcnRpZmljYXRlLmgiCiAjaW5j
bHVkZSAiSlNSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpZiBQTEFURk9STShDT0NPQSkK
LSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2VuZGlmCi0jaWYg
VVNFKENHKQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNlbmRpZgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9CaWdJbnRPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Cb29sZWFuT2Jq
ZWN0Lmg+CkBAIC0xMDEsNiArOTQsMTQgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKKyNpZiBVU0UoQ0cpCisjaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogI2luY2x1ZGUg
IkpTT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCkBAIC0x
MTMsNiArMTE0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKQEAgLTU1NiwxOCArNTU4LDE0IEBAIHByb3RlY3RlZDoKICNp
ZiBFTkFCTEUoV0VCX0NSWVBUTykKIHN0YXRpYyBib29sIHdyYXBDcnlwdG9LZXkoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBW
ZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleSk7CisgICAgYXV0byBjb250ZXh0
ID0gZXhlY3V0aW9uQ29udGV4dChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gY29u
dGV4dCAmJiBjb250ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleSk7CiB9CiAKIHN0
YXRpYyBib29sIHVud3JhcENyeXB0b0tleShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4m
IGtleSkKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnVud3JhcENyeXB0b0tl
eSh3cmFwcGVkS2V5LCBrZXkpOworICAgIGF1dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQo
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4dC0+dW53
cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXksIGtleSk7CiB9CiAjZW5kaWYKIApAQCAtOTU4LDcgKzk1
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8mIHZtID0gbV9sZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpOwogICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBtX2xleGljYWxHbG9iYWxPYmpl
Y3Q7CiAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpTRE9NR2xvYmFsT2JqZWN0
Pih2bSkpCi0gICAgICAgICAgICByZXR1cm4gdG9KUyhtX2xleGljYWxHbG9iYWxPYmplY3QsIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksICZhcnJheUJ1ZmZlcik7Cisg
ICAgICAgICAgICByZXR1cm4gdG9KUyhnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCksICZhcnJheUJ1ZmZlcik7CiAKICAgICAgICAgaWYgKGF1dG8q
IGJ1ZmZlciA9IGFycmF5QnVmZmVyLm1fd3JhcHBlci5nZXQoKSkKICAgICAgICAgICAgIHJldHVy
biBidWZmZXI7CkBAIC0yNTY2LDcgKzI1NjQsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1f
Y2FuQ3JlYXRlRE9NT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAg
ZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+c3Ry
aW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1vZGlm
aWVkKTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGV4ZWN1dGlvbkNvbnRleHQo
bV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJpbmco
KSksIHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMyOTYsNyArMzI5NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5k
ZXhdKQotICAgICAgICAgICAgbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0gPSBPZmZzY3JlZW5D
YW52YXM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgV1RGTW92ZShtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuYXQo
aW5kZXgpKSk7CisgICAgICAgICAgICBtX29mZnNjcmVlbkNhbnZhc2VzW2luZGV4XSA9IE9mZnNj
cmVlbkNhbnZhczo6Y3JlYXRlKCpleGVjdXRpb25Db250ZXh0KG1fbGV4aWNhbEdsb2JhbE9iamVj
dCksIFdURk1vdmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLmF0KGluZGV4KSkpOwogCiAg
ICAgICAgIGF1dG8gb2Zmc2NyZWVuQ2FudmFzID0gbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0u
Z2V0KCk7CiAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKG9mZnNjcmVlbkNhbnZhcyk7CkBAIC0z
MzYwLDcgKzMzNTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlmICghbV9ydGNEYXRhQ2hhbm5l
bHNbaW5kZXhdKSB7CiAgICAgICAgICAgICBhdXRvIGRldGFjaGVkQ2hhbm5lbCA9IFdURk1vdmUo
bV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5hdChpbmRleCkpOwotICAgICAgICAgICAgbV9ydGNE
YXRhQ2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZGV0YWNoZWRD
aGFubmVsLT5pZGVudGlmaWVyLCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+bGFiZWwpLCBXVEZN
b3ZlKGRldGFjaGVkQ2hhbm5lbC0+b3B0aW9ucyksIGRldGFjaGVkQ2hhbm5lbC0+c3RhdGUpOwor
ICAgICAgICAgICAgbV9ydGNEYXRhQ2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNy
ZWF0ZSgqZXhlY3V0aW9uQ29udGV4dChtX2xleGljYWxHbG9iYWxPYmplY3QpLCBkZXRhY2hlZENo
YW5uZWwtPmlkZW50aWZpZXIsIFdURk1vdmUoZGV0YWNoZWRDaGFubmVsLT5sYWJlbCksIFdURk1v
dmUoZGV0YWNoZWRDaGFubmVsLT5vcHRpb25zKSwgZGV0YWNoZWRDaGFubmVsLT5zdGF0ZSk7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShtX3J0Y0RhdGFDaGFubmVsc1tp
bmRleF0uZ2V0KCkpOwpAQCAtMzM4NSw3ICszMzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0
byBpbWFnZURhdGFTaXplID0gbG9naWNhbFNpemU7CiAgICAgICAgIGltYWdlRGF0YVNpemUuc2Nh
bGUocmVzb2x1dGlvblNjYWxlKTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQml0bWFw
OjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUo
bV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIGNvbG9yU3BhY2UsIHJlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpleGVjdXRpb25Db250ZXh0KG1f
bGV4aWNhbEdsb2JhbE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCBjb2xvclNwYWNlLCByZXNvbHV0aW9uU2NhbGUpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
QEAgLTM2NTEsNyArMzY0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgICAgIGlmICghbV9jYW5DcmVhdGVET01PYmplY3QpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUo
QmxvYjo6ZGVzZXJpYWxpemUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9s
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3Ry
aW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgp
KTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKGV4ZWN1
dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmlu
ZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5z
dHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFN0cmluZ1RhZzogewog
ICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNhY2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcAppbmRleCBjM2E4NmY1YzRkM2MzOTk5NTQxOWNiMGE1MTU0MDg4N2E2
NjZkZGRjLi42NDliMjFhOTk1YzI3ODA4YWY2OGE5MDVkMWI5ZDU1MmVmOGI0ZjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgQUxXQVlTX0lO
TElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlw
dEFzc2VydGlvbihDaGkKICAgICAgICAgICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQt
Pm5leHRTaWJsaW5nKCksICpjaGlsZCk7CiAgICAgICAgICAgICBhdXRvIHN1YnRyZWVPYnNlcnZh
YmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgKmNoaWxkKTsKICAgICAgICAg
ICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRyZWVPYnNl
cnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxl
QnlSZWZQdHIpCi0gICAgICAgICAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVl
QnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgICAgICAgICB3aWxsQ3JlYXRlUG9zc2li
bHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoKmNoaWxkKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjEwLDcgKzIxMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVO
b2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgfQogCiAgICAgaWYg
KHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxp
dHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0
cikKLSAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKCZjaGls
ZFRvUmVtb3ZlKTsKKyAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1v
dmFsKGNoaWxkVG9SZW1vdmUpOwogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oIWRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGRiYTYwMGNjNzE3OTU3Zjk4OWE2OTMzYmRmZDIyMWM2
ODU2YTdkZjUuLjQyZGFjZDJkZDVjZTNlNWY2MjMzM2EyMTYyY2MzNzY3NDZlOGZiODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTVdp
bmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3QuaCIKQEAgLTIxMCw3
ICsyMTEsNiBAQAogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIlNj
cmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIK
QEAgLTg3MTYsOCArODcxNiw4IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UoY29uc3Qg
V1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIFZlCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBtZXNzYWdlTGV2ZWxGcm9t
V1RGTG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2cs
IG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNTdGF0ZSh3
ZWFrVGhpcy0+ZnJhbWUoKSkpOwotCisgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG1haW5X
b3JsZEdsb2JhbE9iamVjdCh3ZWFrVGhpcy0+ZnJhbWUoKSk7CisgICAgICAgIGF1dG8gbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgd2Vha1RoaXMtPmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCmluZGV4IDk1NDQ2Nzk0MzdmOGUxZTAxNDczY2I2YTcwY2Q1ZDA3MmZj
NzFjMzQuLmQyOTViMjU2ZWY3OTJiMjZiYzkxN2JiMWE1YzQ4NDdhMzRlODdlOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTU2LDcgKzU2
LDYgQEAKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgotI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRl
ci5oIgpAQCAtNTQzLDExICs1NDIsMTcgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBKU0M6OkpTR2xvYmFsT2JqZWN0KiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpnbG9iYWxPYmplY3QoKQogewotICAgIGlmIChpczxEb2N1bWVudD4o
KnRoaXMpKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Z2xvYmFsT2JqZWN0KG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpLCBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLmZyYW1lKCkpOworICAgIGlm
IChpczxEb2N1bWVudD4oKnRoaXMpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRl
ZXMgdGhhdCBmcmFtZSBpcyBub24tbnVsbD8KKyAgICAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFu
dGVlcyB0aGF0IGdsb2JhbE9iamVjdCB3aWxsIG5vdCByZXR1cm4gbnVsbD8KKyAgICAgICAgcmV0
dXJuIGRvd25jYXN0PERvY3VtZW50PigqdGhpcykuZnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2Jq
ZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICB9CiAKLSAgICBpZiAoaXM8V29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Omds
b2JhbE9iamVjdChkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsK
KyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkgeworICAgICAg
ICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoYXQgc2NyaXB0KCkgaXMgbm9uLW51bGw/Cisg
ICAgICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxTY29wZVdyYXBwZXIo
KSB3aWxsIG5vdCByZXR1cm4gbnVsbD8KKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPmdsb2JhbFNjb3BlV3JhcHBlcigp
OworICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
QVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmNwcAppbmRleCBiNDM5N2I0NmFkNzdlYTg5MTBhMWYyNjc1NGNm
M2IxN2YxZjlkYjMwLi4xYWI5ODUzNzk5M2ViZTY0MDc2YzcyNWVlYTVlZWQyNmIxZTEzYzE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1Byb21pc2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCmluZGV4IDlkZGZjYmJmOGJiNDQ5N2FjNzJlYjY5YjBjMDQ0NzM0YmViMmEwN2IuLmQxZjky
N2QxYzUxM2NhYmVlZjMxZjczYmRmNDlmMzA3Zjc4NmZhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
QEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3Jp
cHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCA4YWFkYWQxZmJhZWUzODdl
ODk3MGE2NWYxZjI5N2VmOWVkMmFmOTgzLi41ZjYzMWRmNTk3NjM4MjFlZWVkOGQ1M2U3MWQ1OWEy
NWFmMTBkMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlN5c3RlbVNvdW5kTWFuYWdlci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9y
LmgiCkBAIC0xNjAsMTUgKzE1OSwxNSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6ZGlz
Y29ubmVjdENsaWVudCgpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTZWxmVG9H
bG9iYWxPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgYXV0byYg
bGV4aWNhbEdsb2JhbE9iamVjdCA9ICpnbG9iYWxPYmplY3Qod29ybGQsIG1fZnJvbnRlbmRQYWdl
ID8gJm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKSA6IG51bGxwdHIpOwotICAgIGF1dG8mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRl
ZXMgbV9mcm9udGVuZFBhZ2UgaXMgbm9uLW51bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFu
dGVlcyBnbG9iYWxPYmplY3QncyByZXR1cm4gdmFsdWUgaXMgbm9uLW51bGw/CisgICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9i
YWxPYmplY3Qod29ybGQpOworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwotCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGdsb2JhbE9iamVj
dC5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3Rv
ckZyb250ZW5kSG9zdCIpLCB0b0pTPElETEludGVyZmFjZTxJbnNwZWN0b3JGcm9udGVuZEhvc3Q+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICp0aGlzKSk7CisgICAgZ2xvYmFs
T2JqZWN0LnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiSW5z
cGVjdG9yRnJvbnRlbmRIb3N0IiksIHRvSlM8SURMSW50ZXJmYWNlPEluc3BlY3RvckZyb250ZW5k
SG9zdD4+KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwogICAgIGlmIChVTkxJ
S0VMWShzY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICByZXBvcnRFeGNlcHRp
b24oJmdsb2JhbE9iamVjdCwgc2NvcGUuZXhjZXB0aW9uKCkpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6bG9hZGVkKCkKQEAgLTUwMywxOSArNTAyLDIwIEBAIHN0YXRpYyB2b2lk
IHBvcHVsYXRlQ29udGV4dE1lbnUoVmVjdG9yPEluc3BlY3RvckZyb250ZW5kSG9zdDo6Q29udGV4
dE1lbnVJdGVtPiYmCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51
KEV2ZW50JiBldmVudCwgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mJiBpdGVtcykKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZnJv
bnRlbmRQYWdlIGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgZ2xv
YmFsT2JqZWN0J3MgcmV0dXJuIHZhbHVlIGlzIG5vbi1udWxsPwogICAgIEFTU0VSVChtX2Zyb250
ZW5kUGFnZSk7Ci0KLSAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmdsb2JhbE9iamVj
dChkZWJ1Z2dlcldvcmxkKCksICZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGF1
dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwotICAgIGF1dG8gdmFsdWUgPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiSW5zcGVjdG9yRnJvbnRlbmRBUEkiKSk7CisgICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gKm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9iYWxP
YmplY3QoZGVidWdnZXJXb3JsZCgpKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgp
OworICAgIGF1dG8gdmFsdWUgPSBnbG9iYWxPYmplY3QuZ2V0KCZnbG9iYWxPYmplY3QsIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3RvckZyb250ZW5kQVBJIikpOwogICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlLmlzT2JqZWN0KCkpOwogICAgIGF1dG8q
IGZyb250ZW5kQVBJT2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIAorCiAgICAgQ29udGV4
dE1lbnUgbWVudTsKICAgICBwb3B1bGF0ZUNvbnRleHRNZW51KFdURk1vdmUoaXRlbXMpLCBtZW51
KTsKIAotICAgIGF1dG8gbWVudVByb3ZpZGVyID0gRnJvbnRlbmRNZW51UHJvdmlkZXI6OmNyZWF0
ZSh0aGlzLCB7ICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmcm9udGVuZEFQSU9iamVjdCB9LCBtZW51
Lml0ZW1zKCkpOworICAgIGF1dG8gbWVudVByb3ZpZGVyID0gRnJvbnRlbmRNZW51UHJvdmlkZXI6
OmNyZWF0ZSh0aGlzLCB7ICZnbG9iYWxPYmplY3QsIGZyb250ZW5kQVBJT2JqZWN0IH0sIG1lbnUu
aXRlbXMoKSk7CiAgICAgbV9tZW51UHJvdmlkZXIgPSBtZW51UHJvdmlkZXIucHRyKCk7CiAgICAg
bV9mcm9udGVuZFBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLnNob3dDb250ZXh0TWVudShl
dmVudCwgbWVudVByb3ZpZGVyKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDE4NzkzZmYwNjYzMzhm
YjYwYTM0ZGVjOTA5YmMyZGRkMjhiZWFmYjQuLjVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNh
MzY5YTQyOGU1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0yMjgsOCArMjI4LDExIEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zCiAgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmICghd2luZG93KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoYXV0byog
Y29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKLSAg
ICAgICAgY29uc29sZUFnZW50LT5mcmFtZVdpbmRvd0Rpc2NhcmRlZCh3aW5kb3cpOworICAgICAg
ICBjb25zb2xlQWdlbnQtPmZyYW1lV2luZG93RGlzY2FyZGVkKCp3aW5kb3cpOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGRh
YTYyZjIwNWU4MDlhNjgzMjhkZTcyMmQzMjQxNWYzM2MyMDQwZGUuLmVjODRiZjQ2MjUyNjhiMjNm
OGY0NDc5YzAwODRkNGY5MWMwNjllYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0yNyw4ICsyNyw2IEBACiAj
aW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDb21tYW5k
TGluZUFQSU1vZHVsZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC03NCwyOCArNzIsMTggQEAgdm9pZCBXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IoRE9NV2luZG93KiB3aW5kb3cpCiAgICAg
aWYgKG1fc2NyaXB0U3RhdGVUb0lkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
VmVjdG9yPGxvbmc+IGlkc1RvUmVtb3ZlOwotICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2lk
VG9JbmplY3RlZFNjcmlwdCkgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0ID0gaXQudmFsdWUuZ2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGlmICh3aW5k
b3cgIT0gZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX3NjcmlwdFN0YXRlVG9JZC5yZW1vdmUobGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlkc1RvUmVtb3ZlLmFwcGVuZChpdC5rZXkpOwotICAg
IH0KLQotICAgIGZvciAoYXV0byYgaWQgOiBpZHNUb1JlbW92ZSkKLSAgICAgICAgbV9pZFRvSW5q
ZWN0ZWRTY3JpcHQucmVtb3ZlKGlkKTsKLQotICAgIC8vIE5vdyByZW1vdmUgc2NyaXB0IHN0YXRl
cyB0aGF0IGhhdmUgaWQgYnV0IG5vIGluamVjdGVkIHNjcmlwdC4KLSAgICBWZWN0b3I8SlNDOjpK
U0dsb2JhbE9iamVjdCo+IHNjcmlwdFN0YXRlc1RvUmVtb3ZlOwotICAgIGZvciAoY29uc3QgYXV0
byYgaXQgOiBtX3NjcmlwdFN0YXRlVG9JZCkgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gaXQua2V5OwotICAgICAgICBpZiAod2luZG93ID09IGRv
bVdpbmRvd0Zyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCkpCi0gICAgICAgICAgICBz
Y3JpcHRTdGF0ZXNUb1JlbW92ZS5hcHBlbmQobGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgfQor
ICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyBmdW5jdGlvbiB0byB0YWtlIGEgRE9NV2luZG93JiBp
bnN0ZWFkIG9mIGEgRE9NV2luZG93KiB0aGF0IG11c3Qgbm90IGJlIG51bGwuCisgICAgQVNTRVJU
KHdpbmRvdyk7CisgICAgYXV0byogZG9jdW1lbnQgPSB3aW5kb3ctPmRvY3VtZW50KCk7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvJiBsZXhpY2Fs
R2xvYmFsT2JqZWN0IDogc2NyaXB0U3RhdGVzVG9SZW1vdmUpCi0gICAgICAgIG1fc2NyaXB0U3Rh
dGVUb0lkLnJlbW92ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBtX2lkVG9JbmplY3RlZFNj
cmlwdC5yZW1vdmVJZihbZG9jdW1lbnRdKGF1dG8mIGVudHJ5KSB7CisgICAgICAgIHJldHVybiBl
eGVjdXRpb25Db250ZXh0KGVudHJ5LnZhbHVlLmdsb2JhbE9iamVjdCgpKSA9PSBkb2N1bWVudDsK
KyAgICB9KTsKKyAgICBtX3NjcmlwdFN0YXRlVG9JZC5yZW1vdmVJZihbZG9jdW1lbnRdKGF1dG8m
IGVudHJ5KSB7CisgICAgICAgIHJldHVybiBleGVjdXRpb25Db250ZXh0KGVudHJ5LmtleSkgPT0g
ZG9jdW1lbnQ7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhNDQ3ZjcwNTM5ZTA2ZTRjODMwNDI3NmZj
YjRjZTFhNTg1MTZlYWU4Li45MTkyYmE5ZDg0MTJhYjZlN2NhNGZlMGZiZWNiZDAyMzU0YTQ5Y2Vk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0xMTQsMjEgKzExNCwy
MSBAQCBFeHBlY3RlZDxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6QXBwbGljYXRpb25DYWNo
ZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiwgUHJvdAogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoIlBhZ2UgZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9
IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlm
ZXN0Pjo6Y3JlYXRlKCk7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9pbnNwZWN0ZWRQYWdl
Lm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7Ci0gICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLmZvckVhY2hGcmFtZShbJl0oRnJhbWUm
IGZyYW1lKSB7CisgICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKTsKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKLSAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8mIGhvc3Qg
PSBkb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKTsKICAgICAgICAgU3RyaW5n
IG1hbmlmZXN0VVJMID0gaG9zdC5hcHBsaWNhdGlvbkNhY2hlSW5mbygpLm1hbmlmZXN0LnN0cmlu
ZygpOwogICAgICAgICBpZiAoIW1hbmlmZXN0VVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
cmVzdWx0LT5hZGRJdGVtKFByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5p
ZmVzdDo6Y3JlYXRlKCkKLSAgICAgICAgICAgICAgICAuc2V0RnJhbWVJZChwYWdlQWdlbnQtPmZy
YW1lSWQoZnJhbWUpKQorICAgICAgICAgICAgICAgIC5zZXRGcmFtZUlkKHBhZ2VBZ2VudC0+ZnJh
bWVJZCgmZnJhbWUpKQogICAgICAgICAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVS
TCkKICAgICAgICAgICAgICAgICAuc2V0U3RhdHVzKHN0YXRpY19jYXN0PGludD4oaG9zdC5zdGF0
dXMoKSkpCiAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KLSAgICB9Cisg
ICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBlYTU2
ODAwNTVhNGY0OWNlMjFiOTQzNjIxNDJjYTk4YzNiZDY2ZTQ2Li44MzIyYzhkYjJhOGE3ZGE5Yjcx
NDk0MTMxY2M1NjRhNmNiZDMwMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNTAsNyArNTAsNiBA
QAogI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgi
CiAjaW5jbHVkZSAiUGF0aDJELmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRl
ICJTdHJpbmdBZGFwdG9ycy5oIgogI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAzODA1Zjg0MjQ1ZjZjYjcz
YzQ1ODQ0MzY0ZDU0ZjgyMmI2YmViMjZkLi43YTc5MGJiMjNjOGYzN2FmNTdlNDI4NGIzNjdjYWQ5
ZDY3OWE0MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgIkluc3Ry
dW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nU2VjdXJpdHkuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1
ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIk11
dGF0aW9uRXZlbnQuaCIKQEAgLTk2LDcgKzk3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJHcmlkLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50
cy5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpAQCAtMTE2MywyMCArMTE2NCwxNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50Ojpmb2N1c05vZGUoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQobV9ub2RlVG9Gb2N1cyk7Ci0KLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fbm9k
ZVRvRm9jdXMuZ2V0KCk7Ci0gICAgbV9ub2RlVG9Gb2N1cyA9IG51bGxwdHI7Ci0KLSAgICBGcmFt
ZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgYXV0byBub2RlID0gc3Rk
OjpleGNoYW5nZShtX25vZGVUb0ZvY3VzLCBudWxscHRyKTsKKyAgICBhdXRvIGZyYW1lID0gbm9k
ZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0
YXRlKGZyYW1lKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBhdXRv
JiBnbG9iYWxPYmplY3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKTsKKyAgICBhdXRv
IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRG
b3IoJmdsb2JhbE9iamVjdCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChub2Rl
QXNTY3JpcHRWYWx1ZSgqc2NyaXB0U3RhdGUsIG5vZGUuZ2V0KCkpKTsKKyAgICBpbmplY3RlZFNj
cmlwdC5pbnNwZWN0T2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgbm9kZS5n
ZXQoKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxl
bWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkKQpAQCAtMTg5Miw3ICsx
ODkwLDExIEBAIFJlZjxQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyCiAKICAgICAgICAgaWYgKGRvY3VtZW50
KSB7CiAgICAgICAgICAgICBoYW5kbGVyT2JqZWN0ID0gc2NyaXB0TGlzdGVuZXIuZW5zdXJlSlNG
dW5jdGlvbigqZG9jdW1lbnQpOwotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gV2ViQ29yZTo6
Z2xvYmFsT2JqZWN0KHNjcmlwdExpc3RlbmVyLmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOwor
ICAgICAgICAgICAgaWYgKGF1dG8gZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCB0aGUgY2FuRXhlY3V0ZVNjcmlwdHMg
Y2hlY2sgaGVyZT8KKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1
dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAgICAgICAgICAgICAgICAg
Z2xvYmFsT2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChzY3JpcHRMaXN0ZW5l
ci5pc29sYXRlZFdvcmxkKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGhhbmRsZXJPYmplY3QgJiYgZ2xvYmFsT2JqZWN0KSB7CkBAIC0yODQ2LDEyICsyODQ4LDEy
IEBAIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbnNwZWN0b3JET01B
Z2VudDo6cmVzb2x2ZU5vZGUoTm9kZSogbm9kCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvJiBzdGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoZnJh
bWUpOwotICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcigmc3RhdGUpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IG1haW5X
b3JsZEdsb2JhbE9iamVjdCgqZnJhbWUpOworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcigmZ2xvYmFsT2JqZWN0KTsKICAg
ICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZh
bHVlKHN0YXRlLCBub2RlKSwgb2JqZWN0R3JvdXApOworICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dC53cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgbm9kZSksIG9iamVj
dEdyb3VwKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OnNjcmlwdFZhbHVlQXNOb2Rl
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNjI4NmI2NTIx
MjZlMGRkMTMzZDJjMjRlNDdmY2Q3Y2RjNzM3NmE3My4uNWQ1MTJlNzhlMjAwMzI4OGQwMTUzMTM2
ODdlNjgzODk5MDhiNzNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRlICJTY3Jp
cHRTdGF0ZS5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlSW5kZXhl
ZERhdGFiYXNlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4KQEAg
LTYxNywxNCArNjE3LDE3IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3RE
YXRhKGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0CiAgICAgaWYgKCFnZXRE
b2N1bWVudEFuZElEQkZhY3RvcnlGcm9tRnJhbWVPclNlbmRGYWlsdXJlKGZyYW1lLCBkb2N1bWVu
dCwgaWRiRmFjdG9yeSwgY2FsbGJhY2spKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVk
U2NyaXB0Rm9yKG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSkpOwotICAgIFJlZlB0cjxJREJLZXlS
YW5nZT4gaWRiS2V5UmFuZ2UgPSBrZXlSYW5nZSA/IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKCpr
ZXlSYW5nZSkgOiBudWxscHRyOwotICAgIGlmIChrZXlSYW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsK
LSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgcGFyc2Uga2V5IHJhbmdl
LiJfcyk7Ci0gICAgICAgIHJldHVybjsKKyAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJh
bmdlOworICAgIGlmIChrZXlSYW5nZSkgeworICAgICAgICBpZGJLZXlSYW5nZSA9IGlkYktleVJh
bmdlRnJvbUtleVJhbmdlKCprZXlSYW5nZSk7CisgICAgICAgIGlmICghaWRiS2V5UmFuZ2UpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IHBhcnNlIGtleSBy
YW5nZS4iX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCi0gICAg
UmVmPERhdGFMb2FkZXI+IGRhdGFMb2FkZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQs
IFdURk1vdmUoY2FsbGJhY2spLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRl
eE5hbWUsIFdURk1vdmUoaWRiS2V5UmFuZ2UpLCBza2lwQ291bnQsIHBhZ2VTaXplKTsKKyAgICBh
dXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3Jp
cHRGb3IoJm1haW5Xb3JsZEdsb2JhbE9iamVjdCgqZnJhbWUpKTsKKyAgICBhdXRvIGRhdGFMb2Fk
ZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2spLCBpbmpl
Y3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIFdURk1vdmUoaWRiS2V5UmFu
Z2UpLCBza2lwQ291bnQsIHBhZ2VTaXplKTsKICAgICBkYXRhTG9hZGVyLT5zdGFydChpZGJGYWN0
b3J5LCAmZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAppbmRleCAyMjNhNjc2N2JlMjcxZWU0ZDIyZGVkMWQ2YmU2MGNhNzA3ODE3
YzgxLi4zY2ViNGI0N2YxMDY4YTBhZmVhZjAwZjE3OWMyODAwYzQ3NmJkNmIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVk
ZSAiSlNFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJKU1dlYlNvY2tldC5oIgogI2luY2x1ZGUgIkxv
YWRlclN0cmF0ZWd5LmgiCkBAIC02NCw3ICs2NSw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKQEAgLTEwNDMsMTEgKzEwNDMsMTEgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJ
bnNwZWN0b3JOZXR3b3JrQWcKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIk1pc3NpbmcgZnJhbWUgb2Ygd2ViIHNvY2tldCBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zKTsKIAotICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSk7Ci0g
ICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVk
U2NyaXB0Rm9yKCZzdGF0ZSk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkR2xv
YmFsT2JqZWN0KCpmcmFtZSk7CisgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZnbG9iYWxPYmplY3QpOwogICAgIEFTU0VS
VCghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKTsKIAotICAgIGF1dG8gb2JqZWN0ID0gaW5q
ZWN0ZWRTY3JpcHQud3JhcE9iamVjdCh3ZWJTb2NrZXRBc1NjcmlwdFZhbHVlKHN0YXRlLCB3ZWJT
b2NrZXQpLCBvYmplY3RHcm91cCk7CisgICAgYXV0byBvYmplY3QgPSBpbmplY3RlZFNjcmlwdC53
cmFwT2JqZWN0KHdlYlNvY2tldEFzU2NyaXB0VmFsdWUoZ2xvYmFsT2JqZWN0LCB3ZWJTb2NrZXQp
LCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBjYXN0IFdlYlNvY2tldCIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcAppbmRleCBiN2M2YjBlYjIzNGZiMTAzMzllZDFhZmQyOGE1OTcyYWEx
NDA0MTVmLi4xMTgyZmEzZWQ3NDJlNzA4OTg4OGM2N2JhYWE1YTJjNmIwNDA4Y2E5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJQYWdlRGVidWdnZXIu
aCIKICNpbmNsdWRlICJQYWdlSGVhcEFnZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgot
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiV2ViRGVidWdnZXJB
Z2VudC5oIgpAQCAtNjYsNyArNjUsNiBAQAogI2luY2x1ZGUgIlJ1bkxvb3BPYnNlcnZlci5oIgog
I2VuZGlmCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwpAQCAtMjkwLDcgKzI4OCwxMyBAQCBkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
dGltZXN0YW1wKCkKICAgICByZXR1cm4gbV9lbnZpcm9ubWVudC5leGVjdXRpb25TdG9wd2F0Y2go
KS5lbGFwc2VkVGltZSgpLnNlY29uZHMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCitzdGF0aWMgRnJhbWUqIGZyYW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0KGdsb2Jh
bE9iamVjdCk7CisgICAgcmV0dXJuIGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERv
Y3VtZW50PigqY29udGV4dCkuZnJhbWUoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgLy8gQWxsb3cgZHVwbGljYXRl
IHVubmFtZWQgcHJvZmlsZXMuIERpc2FsbG93IGR1cGxpY2F0ZSBuYW1lZCBwcm9maWxlcy4KICAg
ICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewpAQCAtMzEwLDcgKzMxNCw3IEBAIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBl
eGVjLCBjb25zdCBTCiAgICAgaWYgKCFtX3RyYWNraW5nICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9m
aWxlUmVjb3Jkcy5pc0VtcHR5KCkpCiAgICAgICAgIHN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVyZSgp
OwogCi0gICAgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmFwcGVuZChjcmVhdGVSZWNv
cmRFbnRyeShUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YSh0
aXRsZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29uc29sZVByb2ZpbGUsIHRydWUsIGZyYW1lRnJv
bUV4ZWNTdGF0ZShleGVjKSkpOworICAgIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5h
cHBlbmQoY3JlYXRlUmVjb3JkRW50cnkoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVDb25z
b2xlUHJvZmlsZURhdGEodGl0bGUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkNvbnNvbGVQcm9maWxl
LCB0cnVlLCBmcmFtZShnbG9iYWxPYmplY3QpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmIHRpdGxlKQpAQCAtNjc2LDcgKzY4MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgLypi
YXRjaElkKi8sIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUpCiB7Ci0gICAgYXBwZW5k
UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlv
bklELCBzYW1wbGVJZCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBm
cmFtZUZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIGFwcGVuZFJlY29y
ZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YShhY3Rpb25JRCwg
c2FtcGxlSWQpLCBUaW1lbGluZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWUo
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwogfQogCiBzdGF0aWMgUHJvdG9jb2w6OlRpbWVsaW5lOjpF
dmVudFR5cGUgdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCBi
ZGZmODQzNGRiZWY4YzU0ODViMTUwNmVkMjA4YTAxYzllY2FkMjI2Li5kMTVlNTNhNjk3ODU4NWJm
MmM5YzdkYTRjZmRlZWExNWJjMzMzMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC0zMiwxNCArMzIsMTIgQEAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUg
IldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC00OSwyMCArNDcsMTUgQEAgV2ViQ29uc29sZUFnZW50
OjpXZWJDb25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogewogfQogCi1XZWJD
b25zb2xlQWdlbnQ6On5XZWJDb25zb2xlQWdlbnQoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgV2ViQ29u
c29sZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKK3ZvaWQg
V2ViQ29uc29sZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cmIHdpbmRvdykK
IHsKLSAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2NvbnNvbGVNZXNzYWdlcykgewotICAgICAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbWVzc2FnZS0+Z2xv
YmFsT2JqZWN0KCk7Ci0gICAgICAgIGlmICghbGV4aWNhbEdsb2JhbE9iamVjdCkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSAhPSB3aW5kb3cpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
bWVzc2FnZS0+Y2xlYXIoKTsKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1l
bnQoKSkgeworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2NvbnNvbGVNZXNzYWdlcykg
eworICAgICAgICAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHQobWVzc2FnZS0+Z2xvYmFsT2JqZWN0
KCkpID09IGRvY3VtZW50KQorICAgICAgICAgICAgICAgIG1lc3NhZ2UtPmNsZWFyKCk7CisgICAg
ICAgIH0KICAgICB9Ci0KLSAgICBzdGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIm
PihtX2luamVjdGVkU2NyaXB0TWFuYWdlcikuZGlzY2FyZEluamVjdGVkU2NyaXB0c0Zvcih3aW5k
b3cpOworICAgIHN0YXRpY19jYXN0PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciY+KG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKS5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKCZ3aW5kb3cpOwogfQog
CiB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNv
bnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xl
QWdlbnQuaAppbmRleCA5MGM3MDhlOWI4MDE3MTJiNjU5NDA3YWUwYzFkNjY4NjhhZWE5NGE4Li5h
NjE0NzUyZTkwY2RlYWUxMzg5MTZmYmY4MGVmODU1ODRiN2E1MTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmgKQEAgLTI1LDcgKzI1
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaD4KIApAQCAtMzYsMTQgKzM1LDEyIEBA
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBjbGFzcyBX
ZWJDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvbnNvbGVBZ2VudCk7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV2ViQ29uc29sZUFnZW50KFdlYkFnZW50
Q29udGV4dCYpOwotICAgIH5XZWJDb25zb2xlQWdlbnQoKSBvdmVycmlkZTsKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBXZWJDb25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7CiAKK3B1Ymxp
YzoKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KLSAgICB2b2lkIGZyYW1lV2luZG93
RGlzY2FyZGVkKERPTVdpbmRvdyopOworICAgIHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWQoRE9N
V2luZG93Jik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRp
dEFnZW50LmNwcAppbmRleCBkNTEwZGMxNzA1OGUxMmJhZGU5YWUwOTJkODAxOWVhODZjOGQzMzRm
Li4xNzRkNTExOTM0Yjk5N2IxYmEwZjk1Y2FiZTFjMzM2OTA4NzhlZmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5j
cHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0RPTVdp
bmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JBdWRpdERPTU9iamVjdC5oIgogI2luY2x1ZGUg
IkpTSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC02MCw5ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFBhZ2VB
dWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
UnVuCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkKICAgICAgICAgcmV0dXJuIGluamVj
dGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlvbkNvbnRleHRJ
ZCk7Ci0KLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4
ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxk
R2xvYmFsT2JqZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSkpOwogfQogCiBJbmplY3Rl
ZFNjcmlwdCBQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6
OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCA1NWQ5NTE4NDk0MTk1Yjk2ZGYxNjVhOTRjMWMyOTYzYWRjZWI4Mzk1Li44MmI1
ZDI0NGI2Mjk2NDYxNWZjNGMxMjM3MjM1MTRmMjY4MWIzOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTM4LDExICszOCwxMSBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2lu
Y2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC0xMzgsMTAgKzEzOCw4IEBAIHZvaWQgUGFnZURlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iCiAKIEluamVjdGVkU2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlw
dEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25h
bDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRl
eHRJZCkKIHsKLSAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkgewotICAgICAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0
ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdl
cigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKLSAgICB9CisgICAgaWYgKCFleGVj
dXRpb25Db250ZXh0SWQpCisgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5p
bmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxkR2xvYmFsT2JqZWN0KG1faW5zcGVjdGVkUGFnZS5t
YWluRnJhbWUoKSkpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggYmI0ZjZiYTdjMmNjNjE4NTg1ODcxOTZjOTczYTJjMzg2Zjg4ZjRmOC4uZDA2OTBk
NDRkZTNjZWFlZDlkYzMyNWE4YmJmMWJlZDdiODdmYmZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IGIzMmYzZjY5OWMyZDJhMzc3Mjg5NzYwYjI0NWFjODE3
ODQxMDI0NTguLmRlNTY4OWFhMzM0NTJhZmQ5NWEzMjkyYWIxODA4YWE5NWUxZjZiMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTM3LDExICszNywxMCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0Fn
ZW50cy5oIgotI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgIkpTRE9NV2lu
ZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUVtdWxhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3Jp
cHQuaD4KQEAgLTkxLDcgKzkwLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gUGFn
ZVJ1bnRpbWVBZ2VudDo6ZGlzYWJsZSgpCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmZyYW1lTmF2
aWdhdGVkKEZyYW1lJiBmcmFtZSkKIHsKICAgICAvLyBFbnN1cmUgZXhlY3V0aW9uIGNvbnRleHQg
aXMgY3JlYXRlZCBmb3IgdGhlIGZyYW1lIGV2ZW4gaWYgaXQgZG9lc24ndCBoYXZlIHNjcmlwdHMu
Ci0gICAgbWFpbldvcmxkRXhlY1N0YXRlKCZmcmFtZSk7CisgICAgbWFpbldvcmxkR2xvYmFsT2Jq
ZWN0KGZyYW1lKTsKIH0KIAogdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMTA2
LDggKzEwNSw3IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkCiBJbmplY3RlZFNjcmlwdCBQYWdl
UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9u
Q29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoIWV4ZWN1dGlvbkNv
bnRleHRJZCkgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1h
aW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICAgICAg
SW5qZWN0ZWRTY3JpcHQgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRT
Y3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBp
bmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxkR2xvYmFs
T2JqZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSkpOwogICAgICAgICBpZiAocmVzdWx0
Lmhhc05vVmFsdWUoKSkKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZCJfczsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTEzNSwyNSArMTMzLDI1IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKCkKICAgICBpZiAoIXBhZ2VBZ2VudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvKiBmcmFtZSA9ICZtX2luc3BlY3RlZFBhZ2Uu
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKLSAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJv
dXRUb0V4ZWN1dGVTY3JpcHQpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgbV9pbnNwZWN0
ZWRQYWdlLmZvckVhY2hGcmFtZShbJl0oRnJhbWUmIGZyYW1lKSB7CisgICAgICAgIGlmICghZnJh
bWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQor
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZnJhbWVJZCA9IHBhZ2VBZ2VudC0+
ZnJhbWVJZChmcmFtZSk7CisgICAgICAgIGF1dG8gZnJhbWVJZCA9IHBhZ2VBZ2VudC0+ZnJhbWVJ
ZCgmZnJhbWUpOwogCiAgICAgICAgIC8vIEFsd2F5cyBzZW5kIHRoZSBtYWluIHdvcmxkIGZpcnN0
LgotICAgICAgICBhdXRvKiBtYWluR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhlY1N0YXRlKGZy
YW1lKTsKLSAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgbWFpbkdsb2JhbE9i
amVjdCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgICAgICBhdXRvJiBtYWluR2xvYmFs
T2JqZWN0ID0gbWFpbldvcmxkR2xvYmFsT2JqZWN0KGZyYW1lKTsKKyAgICAgICAgbm90aWZ5Q29u
dGV4dENyZWF0ZWQoZnJhbWVJZCwgJm1haW5HbG9iYWxPYmplY3QsIG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKIAotICAgICAgICBmb3IgKGF1dG8mIGpzV2luZG93UHJveHkgOiBmcmFtZS0+d2lu
ZG93UHJveHkoKS5qc1dpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgICAgIGZvciAoYXV0
byYganNXaW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94aWVzQXNW
ZWN0b3IoKSkgewogICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0ganNXaW5kb3dQcm94
eS0+d2luZG93KCk7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09IG1haW5HbG9iYWxP
YmplY3QpCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09ICZtYWluR2xvYmFsT2JqZWN0
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiBzZWN1cml0
eU9yaWdpbiA9IGRvd25jYXN0PERPTVdpbmRvdz4oanNXaW5kb3dQcm94eS0+d3JhcHBlZCgpKS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICAgICAgbm90aWZ5Q29udGV4dENy
ZWF0ZWQoZnJhbWVJZCwgZ2xvYmFsT2JqZWN0LCBqc1dpbmRvd1Byb3h5LT53b3JsZCgpLCAmc2Vj
dXJpdHlPcmlnaW4pOwogICAgICAgICB9Ci0gICAgfQorICAgIH0pOwogfQogCiBzdGF0aWMgUHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRUeXBlIHRvUHJvdG9jb2woRE9NV3JhcHBl
cldvcmxkOjpUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDhmN2UxNWVkOTVm
MWM5MjJmNGU0YjFlOWYwODRmMDkzMWUxMTg4OWQuLmMyM2VmZGU4NGFhNGFkYTllZDE4ODdmYzQx
MGRjNjgzZTFiNGJhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya2VyQXVkaXRBZ2VudC5oIgogCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC01NSw3ICs1
NCw5IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9y
RXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVyCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmpl
Y3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV9nbG9iYWxTY29wZSkpOworICAgIC8vIEZJWE1F
OiBXaGF0IGd1YXJhbnRlZXMgbV9nbG9iYWxTY29wZS5zY3JpcHQoKSBpcyBub24tbnVsbD8KKyAg
ICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIGdsb2JhbFNjb3BlV3JhcHBlcigpIGlzIG5vbi1u
dWxsPworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZv
cihtX2dsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZDQ2
ODQzZmQ2Y2I4MDBkYWJlNTE1MTdjZmExMDQ2MGZjYzdlNDVmYi4uMWJkYzE3YmNhZWExMGQ4ZDE0
NzE0MmRiYzI1ZGY5N2YyOGI4Y2Y2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1
Z2dlckFnZW50LmgiCiAKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIldvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29s
ZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgpA
QCAtNjAsNyArNTksOSBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50Ojppbmpl
Y3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4g
SW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fZ2xvYmFsU2NvcGUpKTsKKyAg
ICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZ2xvYmFsU2NvcGUuc2NyaXB0KCkgaXMgbm9u
LW51bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBnbG9iYWxTY29wZVdyYXBwZXIo
KSBpcyBub24tbnVsbD8KKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0
ZWRTY3JpcHRGb3IobV9nbG9iYWxTY29wZS5zY3JpcHQoKS0+Z2xvYmFsU2NvcGVXcmFwcGVyKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcApp
bmRleCA1ODBkYzBhOTNiMzY3NzgxZjcyODk5NWRiMWFlZGJlYjM3YzEyYmEyLi42NmRhZjI0YTg4
ZWIyMjRkYTlhYWJkZjM4ZTA3YmRlM2Y4N2MzMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5j
cHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3Jr
ZXJSdW50aW1lQWdlbnQuaCIKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAi
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0
TWFuYWdlci5oPgpAQCAtNTgsNyArNTcsOSBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1l
QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAg
ICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV9nbG9iYWxT
Y29wZSkpOworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgbV9nbG9iYWxTY29wZS5zY3Jp
cHQoKSBpcyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIGdsb2JhbFNj
b3BlV3JhcHBlcigpIGlzIG5vbi1udWxsPworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcihtX2dsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxTY29w
ZVdyYXBwZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="473398"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447703</attachid>
            <date>2021-12-21 02:26:25 -0800</date>
            <delta_ts>2021-12-21 08:26:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234548-20211221022624.patch</filename>
            <type>text/plain</type>
            <size>79275</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFiYzJiOTM0OTMwNWM1
NjJhMzdiYTI2ODdlNDQ1YjlkNWJkMGRiNC4uNGM3MDk2ZjY1NDY0OTc5YzNmOTMwMDUyMWU3ZWM2
MTM0YTNkYWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMS0xMi0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
aXMgYSByZW1uYW50IG9mIEphdmFTY3JpcHQgZW5naW5lIGFic3RyYWN0aW9uIHRoYXQgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAg
U2NyaXB0U3RhdGUuaC9jcHAgaXMgZmlsZSBsZWZ0IG92ZXIgZnJvbSB3aGVuIHdlIGhhZCBhIGxh
eWVyIHRvIGFic3RyYWN0CisgICAgICAgIEphdmFTY3JpcHQgYmluZGluZyBhbmQgdXNhZ2UgaW4g
V2ViQ29yZSBzbyBpdCBjb3VsZCB3b3JrIHdpdGggYm90aCBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBhbmQgR29vZ2xlJ3MgVjggZW5naW5lLiBXZSBoYXZlbid0IG5lZWRlZCB0aGF0IGZvciB5ZWFy
cywgYW5kIHN0cmlwcGluZyBhd2F5IHNvbWUKKyAgICAgICAgb2YgdGhlIGxheWVycyBtaWdodCBo
ZWxwIHVzIG1ha2UgY29kZSBtb3JlIHJlYWRhYmxlIGFuZCBwZXJoYXBzIGV2ZW4gbm90aWNlIHdh
eXMKKyAgICAgICAgdG8gbWFrZSBpdCBtb3JlIGVmZmljaWVudC4gRm9yIG5vdywgdGhpcyBwYXRj
aCByZW1vdmVzIHRoZSBmdW5jdGlvbnMgZnJvbQorICAgICAgICBTY3JpcHRTdGF0ZS5oL2NwcCBh
bmQgbW92ZXMgdGhlbSB0byBtb3JlIHN1aXRhYmxlIHBsYWNlcywgc2ltcGxpZnlpbmcgaW4gdGhl
IHByb2Nlc3MuCisKKyAgICAgICAgQWxzbyBiZWdpbiB0byBqdXN0IGNhbGwgZ2xvYmFsIG9iamVj
dHMgImdsb2JhbCBvYmplY3QiLCBhbmQgbm90ICJzY3JpcHQgc3RhdGUiLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBTY3JpcHRTdGF0ZS5oLgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0
U3RhdGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6
IERpdHRvLgorCisgICAgICAgICogU291cmNlcy50eHQ6IFJlbW92ZWQgU2NyaXB0U3RhdGUuY3Bw
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBT
Y3JpcHRTdGF0ZS5oIGFuZCAuY3BwLgorICAgICAgICBBbHNvIGFsbG93ZWQgdGhlIHNjcmlwdCB0
byBzb3J0IHRoZSBmaWxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFpbldvcmxkR2xvYmFsT2JqZWN0KTogUmVuYW1l
ZCB0aGUgbWFpbldvcmxkRXhlY1N0YXRlIGZ1bmN0aW9uIGFuZAorICAgICAgICBtb3ZlZCBpdCBo
ZXJlIGZyb20gU2NyaXB0U3RhdGUuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmg6IFR3ZWFrZWQgZm9ybWF0dGluZyBvZiB0aGUgaGVhZGVyLiBBZGRlZCB0aGUK
KyAgICAgICAgbWFpbldvcmxkR2xvYmFsT2JqZWN0IGZ1bmN0aW9uLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUu
aC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQp
OiBDYWxsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRp
b25Db250ZXh0KTogUmVuYW1lZCB0aGUgc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUKKyAgICAgICAgZnVuY3Rpb24gYW5kIG1vdmVkIGl0IGhlcmUgZnJvbSBTY3JpcHRTdGF0ZS5j
cHAuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaDogQWRkZWQgdGhlIGV4ZWN1
dGlvbkNvbnRleHQgZnVuY3Rpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaCwgYWRkZWQgaW5jbHVkZQor
ICAgICAgICBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6d2lsbENy
ZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UpOiBDYWxsIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOiBD
aGFuZ2VkIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbAorICAgICAgICBm
dW5jdGlvbnMgdG8gdGFrZSBhIE5vZGUmIGluc3RlYWQgb2YgYSBuZXZlci1udWxsIE5vZGUqLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oOiBUd2Vha2VkIGZvcm1hdHRp
bmcgYSBiaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDogUmVtb3ZlZC4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6IFJlbW92ZWQgaW5j
bHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6d3JhcENyeXB0b0tleSk6
IFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2Ugb2YgZXhlY3V0aW9uQ29udGV4dCBmdW5jdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OnVud3JhcENyeXB0b0tleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZE9mZnNjcmVlbkNhbnZhcyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRSVENEYXRhQ2hhbm5lbCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5h
bCk6IERpdHRvLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0
aW9uKToKKyAgICAgICAgUGFzcyByZWZlcmVuY2UgdG8gd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFu
ZWRUcmVlQnlSZW1vdmFsLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3Zl
Tm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLCBhZGRlZCBpbmNsdWRlCisg
ICAgICAgIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZGlkTG9nTWVzc2FnZSk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3Jp
cHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Z2xv
YmFsT2JqZWN0KTogVXNlIHRoZQorICAgICAgICBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBoZWxwZXIgZnVuY3Rpb25zLgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmFkZFNlbGZUb0dsb2JhbE9iamVjdEluV29y
bGQpOgorICAgICAgICBVc2UgdGhlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkgaW5zdGVhZCBv
ZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUpOiBEaXR0by4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwpOiBEbworICAg
ICAgICB0aGUgbnVsbCBjaGVjayBoZXJlIGluc3RlYWQgb2YgaW4gZnJhbWVXaW5kb3dEaXNjYXJk
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDog
UmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IpOgorICAgICAg
ICBSZXdvcmtlZCBsb2dpYyB0byB1c2UgZXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIGRvbVdp
bmRvd0Zyb21FeGVjU3RhdGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDogUmVtb3ZlZCBp
bmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Zm9jdXNOb2RlKTogVXNlIHN0ZDo6ZXhjaGFuZ2UgaGVyZSBpbiB0aGUKKyAgICAgICAg
aWRpb21hdGljICJ0YWtlIGFuZCBudWxsIGEgdmFsdWUiIGNhc2UgaGVyZS4gVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOiBVc2UKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciBk
aXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggYSBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YKKyAgICAgICAgU2NyaXB0U3RhdGUuaCBhbmQg
YWRkZWQgaW5jbHVkZSBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZXNvbHZlV2ViU29ja2V0KTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAo
V2ViQ29yZTo6ZnJhbWUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBmcm9tIGEgZ2xv
YmFsIG9iamVjdCB0byBhIGZyYW1lLgorICAgICAgICBDYWxscyBleGVjdXRpb25Db250ZXh0IGFu
ZCBnZXRzIHRvIHRoZSBmcmFtZSBmcm9tIHRoZXJlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6IFVzZSBmcmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6
IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
OiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOiBUYWtlIGEgcmVmZXJlbmNlIGlu
c3RlYWQgb2YKKyAgICAgICAgYSBwb2ludGVyIHRoYXQgbXVzdCBub3QgYmUgbnVsbC4gVXNlIGV4
ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBkb21XaW5kb3dGcm9tRXhlY1N0YXRl
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4gUmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBXVEZfTUFLRV9O
T05DT1BZQUJMRSAoYmFzZSBjbGFzcyBpcyBhbHJlYWR5IG5vdCBjb3B5YWJsZSkgYW5kCisgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIChjbGFzcyBpcyBhbiBhYnN0cmFjdCBiYXNlIGNs
YXNzIGFuZCBuZXZlciBhbGxvY2F0ZWQpLgorICAgICAgICBNYWRlIGNvbnN0cnVjdG9yIHByb3Rl
Y3RlZC4gQ2hhbmdlZCB0aGUgRE9NV2luZG93IGFyZ3VtZW50IHRvCisgICAgICAgIGZyYW1lV2lu
ZG93RGlzY2FyZGVkIHRvIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyIHRoYXQgbXVz
dCBub3QgYmUgbnVsbC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVk
aXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdn
ZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0
d29ya0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6IFJlbW92ZWQg
aW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFuZCBhZGRlZCBpbmNsdWRlIG9mIEpT
RE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojpm
cmFtZU5hdmlnYXRlZCk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbik6IERpdHRvLgorICAgICAgICBBbHNvIHVzZSBQYWdlOjpmb3JFYWNoRnJhbWUgaW5z
dGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRT
dGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVh
ZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAg
ICAgaW5zdGVhZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6IFVzZSBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5
CisgICAgICAgIGluc3RlYWQgb2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKwogMjAyMS0x
Mi0yMSAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgog
CiAgICAgICAgIFtMQ01TXSBVc2Ugc3RkOjp1bnFpdWVfcHRyIHRvIHJldGFpbiBMQ01TIG9iamVj
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGJjMDg0ZTlmNmJjOTcxYjQyMGM1NWRiNDk3MWI4Yjcw
ZWNlN2M1YzcuLjFlNjUxMDIxOWNiNjdlNzNjMmIwZjkyOWMwNTdkNmUwZDEwMzY3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtNDY1LDcgKzQ2NSw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
CiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKLSAgICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCiAgICAg
YmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGVJbmxpbmVzLmgKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCmluZGV4IGVkZGJlOGJlMWUzMTEwODcxYzM3NzExODRhMmY5NWJhN2ZiODAyZmQuLjE0MzUx
NDBhNWNiNGExYTFkNDA3YTJkYjI5ZDE1YmRmMmQ1MmMwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTQyLDcgKzQy
LDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDY3ZDNiYTRjNzk4MzExMTI3OTMxZTI5NTI4NDg0ZTY2ZWNkMzRjZmYuLjU4NDM2
MTU2NTAwMTY3ODc3OGRiNzUwMTk1ZjZlYjBmMmQxYzFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTUwLDcgKzUw
LDYgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVHJh
bnNhY3Rpb25PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggNDk1MzBmNjI0YjAxMGY3NmE0ODMyNGJmZGQ5OWMyZDI2ODhhNzc4
My4uYmQ1YTc0NzljYjM5ZTQ2Y2M5MTA0MDBmNGVlMzg0OTMyNGM3NTMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTYzMiw3ICs2MzIsNiBAQCBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCiBi
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAotYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuY3BwCiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCiBiaW5kaW5ncy9qcy9TdHJ1Y3R1
cmVkQ2xvbmUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZmM0ZThkZTA1MTVhM2U3ZGUwODNmZDU3NjdkMDg5ZmE3YzI3OTQ5
NC4uM2QxMWU0NzM1NmZhZjA0YTYwNzUyYmJiZmEyNTUzMGFlZGFhZjI4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIwMCw3
ICsxMjAwLDYgQEAKIAkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVy
cm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMx
NEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUMzQjhBMTI2NDlCMUUwMDA0
RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzNCODlGMjY0OUIx
QjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNC
OEEyMjY0OUIxRTUwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzNCODlC
MjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MUM3NjBC
MTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3Jp
cHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxQ0I4NDAxMjVDQUI3QjMwMDEwRTJCMSAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFDQjg0MDAyNUNBQjdCMDAwMTBFMkIxIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDFDQjg0MDIyNUNBQjgxRTAwMTBFMkIxIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDgzM0Ex
RTQzMjRCQjAwNjIxRTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRDAxNUNBMEY0QjVD
NzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg1
MjMsNyArODUyMiw2IEBACiAJCTQxMjA5RTk0MjE2RUE2OUEwMEE3M0ExMiAvKiBSVENDZXJ0aWZp
Y2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDZXJ0aWZp
Y2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk1MjE2RUMzNEUw
MEE3M0ExMiAvKiBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oOyBwYXRo
ID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk2MjE2RUMzNEYwMEE3M0ExMiAvKiBMaWJXZWJSVEND
ZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHA7IHBhdGggPSBsaWJ3ZWJydGMv
TGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFi
bGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxl
U3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MTFGNTg2
MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODUxLDcgKzg4NDksNiBAQAogCQk0MUMz
Qjg5RTI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMz
Qjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4QTAyNjQ5
QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyog
U2NyaXB0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdC
NERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8q
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTky
NTcsMTIgKzE5MjU0LDEyIEBACiAJCTExQTFFNkZCMjZGQkI2Q0UwMDQzNUQzNiAvKiBkaXNwbGF5
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk2RjYwRTVB
OTI3NzEwRjM5MDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggKi8sCi0JCQkJ
NkY2MEU1QTcyNzcxMEYyRjAwNUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAg
Ki8sCiAJCQkJNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCAq
LywKIAkJCQkxMTUxM0QwMDI2RDk4MUREMDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcCAqLywKIAkJCQkxMTUxM0QwMjI2RDk4MUU3MDA0RDNGQUEgLyogSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyLmggKi8sCiAJCQkJNkY5MTQyMEYyNTE1MjEzNzAwNEU0RkVBIC8q
IElubGluZURpc3BsYXlMaW5lLmggKi8sCisJCQkJNkY2MEU1QTcyNzcxMEYyRjAwNUMxNUI5IC8q
IElubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgKi8sCisJCQkJNkY2MEU1QTkyNzcxMEYzOTAw
NUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBkaXNwbGF5OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5MjA3LDggKzI5MjA0
LDYgQEAKIAkJCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcCAqLywKIAkJCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9h
ZGVyLmggKi8sCiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNv
ZGUuaCAqLywKLQkJCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3Bw
ICovLAotCQkJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovLAog
CQkJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLywKIAkJ
CQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICov
LAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwICovLApAQCAtMzQ4MzQsNiArMzQ4MjksNyBAQAogCQkJCTZGQzNGOTQ3MjUxNjc1NjcwMEE0
OUJFQSAvKiBJbmxpbmVEaXNwbGF5Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTUxM0QwMzI2
RDk4MUU4MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RjkxNDIxMTI1MTUyMTM4MDA0RTRGRUEgLyogSW5saW5lRGlzcGxheUxpbmUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTZGNjBFNUFBMjc3MTBGMzkwMDVDMTVCOSAvKiBJbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGN0NBM0NBMjA4QzJCMkUw
MDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDdDNEQ1N0QyNjUwOEJDQjAwQzdBQjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkZFNjM2RTgyNjQ3OTYyOTAwRjA5NTFFIC8qIElubGluZUZvcm1h
dHRpbmdRdWlya3MuaCBpbiBIZWFkZXJzICovLApAQCAtMzY5MDgsNyArMzY5MDQsNiBAQAogCQkJ
CUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291
cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8q
IFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBE
MEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwRDdBODE3MTM2
RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM4QUUzNEYxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVy
cyAqLywKQEAgLTM3NjY2LDcgKzM3NjYxLDYgQEAKIAkJCQlCRUYyOUVFQzE3MTVERDA5MDBDNEI0
QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMzM2RjY0MTdG
QTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNkY2MEU1QUEyNzcxMEYzOTAwNUMxNUI5IC8qIElubGluZURp
c3BsYXlMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxRjlCMTQyNzAyMzVGNzAw
NjE3RUI2IC8qIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDhCNUE0MzE4MEQxNDlBMDA4QjhFNjUgLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MEU4MUQxMUJGMjc2NTYwMDFGREE0OCAvKiBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA1NDc2Mjdh
OWY4OWM3NTY0Y2ZiNWY4NzBkMjVjODZmNTIzMGRmNTVkLi4xMjVlYzAwNzMyMzVjMGZjYmE0OTc0
MWU0MWZiZmE0ZDNlMjA2OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MzcsNCArNjM3LDEyIEBAIHZvaWQgSlNET01XaW5k
b3c6OnNldE9wZW5EYXRhYmFzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6CiAgICAgY3JlYXRlRGF0YVByb3BlcnR5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgIm9wZW5EYXRh
YmFzZSIpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCitKU0RPTVdpbmRvdyYgbWFpbldvcmxk
R2xvYmFsT2JqZWN0KEZyYW1lJiBmcmFtZSkKK3sKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50
ZWVzIHRoZSByZXN1bHQgb2YganNXaW5kb3dQcm94eSgpIGlzIG5vbi1udWxsPworICAgIC8vIEZJ
WE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCBvZiB3aW5kb3coKSBpcyBub24tbnVsbD8K
KyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoZSByZXN1bHQgb2Ygd2luZG93KCkgYSBK
U0RPTVdpbmRvdz8KKyAgICByZXR1cm4gKmpzQ2FzdDxKU0RPTVdpbmRvdyo+KGZyYW1lLndpbmRv
d1Byb3h5KCkuanNXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPndpbmRvdygp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgKaW5kZXggN2NmYTdhNmJiM2E3YzRhMGFkZjZjYWZh
NzM2OWI3MmJiNTcwN2E3Ny4uMmIxMmJjY2E0ZTJlNTBjMjU0MDczNjExOTcwMDRmM2Q3ZDNmODg5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNSw2
ICsyNSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsK
IGNsYXNzIEFic3RyYWN0RnJhbWU7CiAKK0pTRE9NV2luZG93KiBhc0pTRE9NV2luZG93KEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKK2NvbnN0IEpTRE9NV2luZG93KiBhc0pTRE9NV2luZG93KGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKworZW51bSBjbGFzcyBET01XaW5kb3dUeXBlIDogYm9v
bCB7IExvY2FsLCBSZW1vdGUgfTsKK3RlbXBsYXRlPERPTVdpbmRvd1R5cGU+IGJvb2wganNET01X
aW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKEpTRE9NR2xvYmFsT2JqZWN0
KiwgQWJzdHJhY3RET01XaW5kb3cmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgY29uc3QgU3RyaW5nJik7CisKK2VudW0gY2xhc3Mg
Q3Jvc3NPcmlnaW5PYmplY3QgOiBib29sIHsgV2luZG93LCBMb2NhdGlvbiB9OwordGVtcGxhdGU8
Q3Jvc3NPcmlnaW5PYmplY3Q+IHZvaWQgYWRkQ3Jvc3NPcmlnaW5Pd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jik7CisKK2Jvb2wgaGFu
ZGxlQ29tbW9uQ3Jvc3NPcmlnaW5Qcm9wZXJ0aWVzKEpTQzo6SlNPYmplY3QqIHRoaXNPYmplY3Qs
IEpTQzo6Vk0mLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKworSlNE
T01XaW5kb3cmIG1haW5Xb3JsZEdsb2JhbE9iamVjdChGcmFtZSYpOworSlNET01XaW5kb3cqIG1h
aW5Xb3JsZEdsb2JhbE9iamVjdChGcmFtZSopOworCiBpbmxpbmUgSlNET01XaW5kb3cqIGFzSlNE
T01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVy
biBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CkBAIC0zNSwxNSArNDks
OSBAQCBpbmxpbmUgY29uc3QgSlNET01XaW5kb3cqIGFzSlNET01XaW5kb3coY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CiB9CiAKLWVudW0gY2xhc3MgRE9NV2luZG93
VHlwZSB7IExvY2FsLCBSZW1vdGUgfTsKLQotdGVtcGxhdGUgPERPTVdpbmRvd1R5cGUgd2luZG93
VHlwZT4KLWJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNz
KEpTRE9NR2xvYmFsT2JqZWN0KiwgQWJzdHJhY3RET01XaW5kb3cmLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgY29uc3QgU3RyaW5n
Jik7Ci0KLWVudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PYmplY3QgeyBXaW5kb3csIExvY2F0aW9uIH07
Ci0KLXRlbXBsYXRlIDxDcm9zc09yaWdpbk9iamVjdCBvYmplY3RUeXBlPgotdm9pZCBhZGRDcm9z
c09yaWdpbk93blByb3BlcnR5TmFtZXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6UHJvcGVy
dHlOYW1lQXJyYXkmKTsKLWJvb2wgaGFuZGxlQ29tbW9uQ3Jvc3NPcmlnaW5Qcm9wZXJ0aWVzKEpT
Qzo6SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTQzo6Vk0mLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKK2lubGluZSBKU0RPTVdpbmRvdyogbWFpbldvcmxkR2xvYmFsT2Jq
ZWN0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4gZnJhbWUgPyAmbWFpbldvcmxkR2xvYmFs
T2JqZWN0KCpmcmFtZSkgOiBudWxscHRyOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5jcHAKaW5kZXggYmVjYTU2M2Y1
NzliMTQ2ZDczMjM4YWQ4NjgxZWJlMGYyNDNmNTdiYi4uYjUzMDhlMjM1MzFlOGFlZDJkMTQyMWQ3
MjExNmZkY2YxODlkNTJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0
YXRlLmNwcApAQCAtMjksMTQgKzI5LDEzIEBACiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0V4ZWNTdGF0ZTo6
ZGlkTGVhdmVTY3JpcHRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1
dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgY29udGV4dC0+ZXZlbnRMb29wKCku
cGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKQEAgLTUzLDQgKzUyLDExIEBAIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplCiAgICAgcmV0dXJuIEpTRXhlY1N0YXRlOjpldmFsdWF0ZShsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwogfQog
CitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRpb25Db250ZXh0KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAoIWdsb2JhbE9iamVjdCB8fCAhZ2xvYmFs
T2JqZWN0LT5pbmhlcml0czxKU0RPTUdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRl
LmgKaW5kZXggMjdmNzY1MGRhNmE4ZWU0NGYzNWY5NDdkNDk4ZWEzODFjNmM5NDMxZi4uZTI2NWIx
MzM4YWM4NzQ5MDNlMWY3ZmMyMzZlZDU3M2Q1NWZmMzFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V4ZWNTdGF0ZS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NywyNSArNDcsMjUgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6OkpTR2xvYmFsT2JqZWN0KiBjdXJyZW50U3RhdGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5jdXJyZW50U3RhdGUoKTsKLSAgICB9OworICAgIH0K
ICAgICAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBK
U0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0
aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRlKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2Vw
dGlvbik7Ci0gICAgfTsKKyAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6U291
cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUg
Y3VycmVudFN0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gSlNDOjpl
dmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJuZWRF
eGNlcHRpb24pOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFs
dWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6
OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTQzo6SlNWYWx1
ZSgpKQogICAgIHsKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHVudXNlZDsKICAg
ICAgICAgcmV0dXJuIGV2YWx1YXRlKGxleGljYWxHbG9iYWxPYmplY3QsIHNvdXJjZSwgdGhpc1Zh
bHVlLCB1bnVzZWQpOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBw
cm9maWxlZENhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpQcm9maWxpbmdSZWFzb24gcmVhc29uLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNv
bnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25z
dCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pCiAgICAgewpAQCAtMTg1LDQgKzE4NSw2IEBAIHByaXZhdGU6CiBKU0M6OkpTVmFs
dWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYsIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBKU0M6OkpTVmFsdWUgZXZhbHVhdGVI
YW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpTb3Vy
Y2VDb2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlv
bkNvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAxZmNj
MjQ0ZDhkOTUwZTE3ODFlMmUwYmRhNmE2NGVjN2Q3YTI5YTcxLi5kNDFmOGVlYTVmMzQxNzgwYjQy
M2Y2YjdlNmU3ODYzYjE5YWI5Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKU0NEQVRBU2VjdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ29tbWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBl
LmgiCkBAIC02MSwxNyArNjIsMTUgQEAKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aCIKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNWR0Vs
ZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKICNpbmNsdWRlICJHQ1JlYWNoYWJsZVJlZi5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIK
ICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNS
ZWFjaGFibGVGcm9tRE9NKE5vZGUqIG5vZGUsIEFic3RyYWN0U2xvdFZpc2l0b3ImIHZpc2l0b3Is
IGNvbnN0IGNoYXIqKiByZWFzb24pCkBAIC0yMTIsMTQgKzIxMSwxNSBAQCBKU0M6OkpTT2JqZWN0
KiBnZXRPdXRPZkxpbmVDYWNoZWRXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE5vZGUmCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+d29ybGQoKS53cmFwcGVycygpLmdl
dCgmbm9kZSk7CiB9CiAKLXZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1v
dmFsU2xvd0Nhc2UoTm9kZSogcm9vdCkKK3ZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRU
cmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSYgcm9vdCkKIHsKLSAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhlY1N0YXRlKHJvb3QtPmRvY3Vt
ZW50KCkuZnJhbWUoKSk7Ci0gICAgaWYgKCFsZXhpY2FsR2xvYmFsT2JqZWN0KQorICAgIGF1dG8g
ZnJhbWUgPSByb290LmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpyb290KTsKKyAgICBhdXRvJiBnbG9iYWxPYmpl
Y3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
aygmZ2xvYmFsT2JqZWN0KTsKKyAgICB0b0pTKCZnbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3Qs
IHJvb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IGQ3MWIyNWMwZDg3YWFlNTYxOGRkMjc3MjQwYzlj
ZGM1MGEwOGMzMWQuLjc1OTJlZDc0YmNlOTdlYTBjYTNhNDgyYTk0OTE4ZDcwMTdkYjljZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCkBAIC02OSwxNiArNjks
MTEgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2IKIC8vIHJvb3QuIEluIHRoZSBKYXZhU2NyaXB0
IERPTSwgYSBub2RlIHRyZWUgc3Vydml2ZXMgYXMgbG9uZyBhcyB0aGVyZSBpcyBhCiAvLyByZWZl
cmVuY2UgdG8gYW55IG5vZGUgaW4gdGhlIHRyZWUuIFRvIG1vZGVsIHRoZSBKYXZhU2NyaXB0IERP
TSBvbiB0b3Agb2YKIC8vIHRoZSBDKysgRE9NLCB3ZSBlbnN1cmUgdGhhdCB0aGUgcm9vdCBvZiBl
dmVyeSB0cmVlIGhhcyBhIEphdmFTY3JpcHQgd3JhcHBlci4KLXZvaWQgd2lsbENyZWF0ZVBvc3Np
Ymx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSogcm9vdCk7Ci1pbmxpbmUgdm9p
ZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoTm9kZSogcm9vdCkKK3Zv
aWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSYg
cm9vdCk7CitpbmxpbmUgdm9pZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92
YWwoTm9kZSYgcm9vdCkKIHsKLSAgICBpZiAocm9vdC0+d3JhcHBlcigpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIXJvb3QtPmhhc0NoaWxkTm9kZXMoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2Uocm9v
dCk7CisgICAgaWYgKCFyb290LndyYXBwZXIoKSAmJiByb290Lmhhc0NoaWxkTm9kZXMoKSkKKyAg
ICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2Uocm9v
dCk7CiB9CiAKIGlubGluZSB2b2lkKiByb290KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKaW5kZXggMTEzZGNjYjg0NmIwZWYxYzYzZDMxZDEw
NDI5YzdiOTRlYzE5NGJjMC4uOTE4YjY2MTRhYjA0MzQzYTk2NDk3MGJkZjc0ZjQ0NTllOTc4M2Jm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaApAQCAtNDgs
MTcgKzQ4LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4gc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKSB7IHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOyB9CiAKICAgICBzdGF0aWMgSlNXaW5kb3dQcm94eSYgY3JlYXRlKEpTQzo6Vk0mLCBBYnN0
cmFjdERPTVdpbmRvdyYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwog
CiAgICAgSlNET01HbG9iYWxPYmplY3QqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odGFyZ2V0KCkpOyB9CisKICAgICB2b2lkIHNldFdpbmRv
dyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIHNldFdpbmRvdyhBYnN0
cmFjdERPTVdpbmRvdyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTQ4ZWRhYTc4YjFhYzYyZGZh
ODdiNTUxZDJhZWY5YjhjNGZiMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKLSNpbmNsdWRlICJKU1dv
cmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1
ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJhbWUuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ET01X
aW5kb3cqIGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCkKLXsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwotICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0czxKU0RPTVdpbmRvd0Jhc2U+KHZt
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxKU0RP
TVdpbmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7Ci19Ci0KLUZyYW1lKiBmcmFt
ZUZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkK
LXsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUo
KSA6IG51bGxwdHI7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QpCi17Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbGV4aWNh
bEdsb2JhbE9iamVjdDsKLSAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01HbG9iYWxPYmplY3Q+KHZtKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCi1K
U0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqIGZyYW1lKQotewot
ICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBmcmFt
ZS0+d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+
d2luZG93KCk7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICgh
ZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS5n
bG9iYWxPYmplY3Qod29ybGQpOwotfQotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRnJhbWUqIGZyYW1lKQotewotICAgIHJldHVybiBm
cmFtZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpIDogbnVsbHB0cjsKLX0K
LQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKLXsKLSAgICBpZiAoYXV0byogc2Ny
aXB0Q29udHJvbGxlciA9IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAg
ICAgICByZXR1cm4gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTUwNjMwOTk2MGI5MjgxZWQx
MDAyMTkzNzUzZmM5MjVhZGM0MDgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDExIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIENhbGxGcmFtZTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIERPTVdyYXBw
ZXJXb3JsZDsKLWNsYXNzIEZyYW1lOwotY2xhc3MgTm9kZTsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Ci1jbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKLQotRE9NV2luZG93
KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLUZyYW1lKiBm
cmFtZUZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwotU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJh
bWUqKTsKLQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3Js
ZCYsIE5vZGUqKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdChET01XcmFwcGVyV29ybGQmLCBGcmFtZSopOwotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDBiYWZhNzk4MzA5YzE2NTBjNjQwMmJkMDZlZWE3MzAxMTk2
ZTNlMzMuLmRiYWNkYTVlNDliZmE5MjhkOTY5MGI4NGEzZmE2MDczN2QzMTk0YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cApAQCAtNTYsMTUgKzU2LDggQEAKICNpbmNsdWRlICJKU1JUQ0NlcnRpZmljYXRlLmgiCiAjaW5j
bHVkZSAiSlNSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpZiBQTEFURk9STShDT0NPQSkK
LSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2VuZGlmCi0jaWYg
VVNFKENHKQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNlbmRpZgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9CaWdJbnRPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Cb29sZWFuT2Jq
ZWN0Lmg+CkBAIC0xMDEsNiArOTQsMTQgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKKyNpZiBVU0UoQ0cpCisjaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogI2luY2x1ZGUg
IkpTT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCkBAIC0x
MTMsNiArMTE0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKQEAgLTU1NiwxOCArNTU4LDE0IEBAIHByb3RlY3RlZDoKICNp
ZiBFTkFCTEUoV0VCX0NSWVBUTykKIHN0YXRpYyBib29sIHdyYXBDcnlwdG9LZXkoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBW
ZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleSk7CisgICAgYXV0byBjb250ZXh0
ID0gZXhlY3V0aW9uQ29udGV4dChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gY29u
dGV4dCAmJiBjb250ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleSk7CiB9CiAKIHN0
YXRpYyBib29sIHVud3JhcENyeXB0b0tleShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4m
IGtleSkKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnVud3JhcENyeXB0b0tl
eSh3cmFwcGVkS2V5LCBrZXkpOworICAgIGF1dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQo
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4dC0+dW53
cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXksIGtleSk7CiB9CiAjZW5kaWYKIApAQCAtOTU4LDcgKzk1
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8mIHZtID0gbV9sZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpOwogICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBtX2xleGljYWxHbG9iYWxPYmpl
Y3Q7CiAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpTRE9NR2xvYmFsT2JqZWN0
Pih2bSkpCi0gICAgICAgICAgICByZXR1cm4gdG9KUyhtX2xleGljYWxHbG9iYWxPYmplY3QsIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksICZhcnJheUJ1ZmZlcik7Cisg
ICAgICAgICAgICByZXR1cm4gdG9KUyhnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCksICZhcnJheUJ1ZmZlcik7CiAKICAgICAgICAgaWYgKGF1dG8q
IGJ1ZmZlciA9IGFycmF5QnVmZmVyLm1fd3JhcHBlci5nZXQoKSkKICAgICAgICAgICAgIHJldHVy
biBidWZmZXI7CkBAIC0yNTY2LDcgKzI1NjQsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1f
Y2FuQ3JlYXRlRE9NT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAg
ZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+c3Ry
aW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1vZGlm
aWVkKTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGV4ZWN1dGlvbkNvbnRleHQo
bV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJpbmco
KSksIHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMyOTYsNyArMzI5NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5k
ZXhdKQotICAgICAgICAgICAgbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0gPSBPZmZzY3JlZW5D
YW52YXM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgV1RGTW92ZShtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuYXQo
aW5kZXgpKSk7CisgICAgICAgICAgICBtX29mZnNjcmVlbkNhbnZhc2VzW2luZGV4XSA9IE9mZnNj
cmVlbkNhbnZhczo6Y3JlYXRlKCpleGVjdXRpb25Db250ZXh0KG1fbGV4aWNhbEdsb2JhbE9iamVj
dCksIFdURk1vdmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLmF0KGluZGV4KSkpOwogCiAg
ICAgICAgIGF1dG8gb2Zmc2NyZWVuQ2FudmFzID0gbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0u
Z2V0KCk7CiAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKG9mZnNjcmVlbkNhbnZhcyk7CkBAIC0z
MzYwLDcgKzMzNTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlmICghbV9ydGNEYXRhQ2hhbm5l
bHNbaW5kZXhdKSB7CiAgICAgICAgICAgICBhdXRvIGRldGFjaGVkQ2hhbm5lbCA9IFdURk1vdmUo
bV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5hdChpbmRleCkpOwotICAgICAgICAgICAgbV9ydGNE
YXRhQ2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZGV0YWNoZWRD
aGFubmVsLT5pZGVudGlmaWVyLCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+bGFiZWwpLCBXVEZN
b3ZlKGRldGFjaGVkQ2hhbm5lbC0+b3B0aW9ucyksIGRldGFjaGVkQ2hhbm5lbC0+c3RhdGUpOwor
ICAgICAgICAgICAgbV9ydGNEYXRhQ2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNy
ZWF0ZSgqZXhlY3V0aW9uQ29udGV4dChtX2xleGljYWxHbG9iYWxPYmplY3QpLCBkZXRhY2hlZENo
YW5uZWwtPmlkZW50aWZpZXIsIFdURk1vdmUoZGV0YWNoZWRDaGFubmVsLT5sYWJlbCksIFdURk1v
dmUoZGV0YWNoZWRDaGFubmVsLT5vcHRpb25zKSwgZGV0YWNoZWRDaGFubmVsLT5zdGF0ZSk7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShtX3J0Y0RhdGFDaGFubmVsc1tp
bmRleF0uZ2V0KCkpOwpAQCAtMzM4NSw3ICszMzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0
byBpbWFnZURhdGFTaXplID0gbG9naWNhbFNpemU7CiAgICAgICAgIGltYWdlRGF0YVNpemUuc2Nh
bGUocmVzb2x1dGlvblNjYWxlKTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQml0bWFw
OjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUo
bV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIGNvbG9yU3BhY2UsIHJlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpleGVjdXRpb25Db250ZXh0KG1f
bGV4aWNhbEdsb2JhbE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCBjb2xvclNwYWNlLCByZXNvbHV0aW9uU2NhbGUpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
QEAgLTM2NTEsNyArMzY0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgICAgIGlmICghbV9jYW5DcmVhdGVET01PYmplY3QpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUo
QmxvYjo6ZGVzZXJpYWxpemUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9s
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3Ry
aW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgp
KTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKGV4ZWN1
dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmlu
ZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5z
dHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFN0cmluZ1RhZzogewog
ICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNhY2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcAppbmRleCBjM2E4NmY1YzRkM2MzOTk5NTQxOWNiMGE1MTU0MDg4N2E2
NjZkZGRjLi42NDliMjFhOTk1YzI3ODA4YWY2OGE5MDVkMWI5ZDU1MmVmOGI0ZjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgQUxXQVlTX0lO
TElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlw
dEFzc2VydGlvbihDaGkKICAgICAgICAgICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQt
Pm5leHRTaWJsaW5nKCksICpjaGlsZCk7CiAgICAgICAgICAgICBhdXRvIHN1YnRyZWVPYnNlcnZh
YmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgKmNoaWxkKTsKICAgICAgICAg
ICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRyZWVPYnNl
cnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxl
QnlSZWZQdHIpCi0gICAgICAgICAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVl
QnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgICAgICAgICB3aWxsQ3JlYXRlUG9zc2li
bHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoKmNoaWxkKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjEwLDcgKzIxMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVO
b2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgfQogCiAgICAgaWYg
KHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxp
dHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0
cikKLSAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKCZjaGls
ZFRvUmVtb3ZlKTsKKyAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1v
dmFsKGNoaWxkVG9SZW1vdmUpOwogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oIWRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGRiYTYwMGNjNzE3OTU3Zjk4OWE2OTMzYmRmZDIyMWM2
ODU2YTdkZjUuLjQyZGFjZDJkZDVjZTNlNWY2MjMzM2EyMTYyY2MzNzY3NDZlOGZiODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTVdp
bmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3QuaCIKQEAgLTIxMCw3
ICsyMTEsNiBAQAogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIlNj
cmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIK
QEAgLTg3MTYsOCArODcxNiw4IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UoY29uc3Qg
V1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIFZlCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBtZXNzYWdlTGV2ZWxGcm9t
V1RGTG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2cs
IG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNTdGF0ZSh3
ZWFrVGhpcy0+ZnJhbWUoKSkpOwotCisgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG1haW5X
b3JsZEdsb2JhbE9iamVjdCh3ZWFrVGhpcy0+ZnJhbWUoKSk7CisgICAgICAgIGF1dG8gbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgd2Vha1RoaXMtPmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCmluZGV4IDk1NDQ2Nzk0MzdmOGUxZTAxNDczY2I2YTcwY2Q1ZDA3MmZj
NzFjMzQuLmQyOTViMjU2ZWY3OTJiMjZiYzkxN2JiMWE1YzQ4NDdhMzRlODdlOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTU2LDcgKzU2
LDYgQEAKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgotI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRl
ci5oIgpAQCAtNTQzLDExICs1NDIsMTcgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBKU0M6OkpTR2xvYmFsT2JqZWN0KiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpnbG9iYWxPYmplY3QoKQogewotICAgIGlmIChpczxEb2N1bWVudD4o
KnRoaXMpKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Z2xvYmFsT2JqZWN0KG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpLCBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLmZyYW1lKCkpOworICAgIGlm
IChpczxEb2N1bWVudD4oKnRoaXMpKSB7CisgICAgICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRl
ZXMgdGhhdCBmcmFtZSBpcyBub24tbnVsbD8KKyAgICAgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFu
dGVlcyB0aGF0IGdsb2JhbE9iamVjdCB3aWxsIG5vdCByZXR1cm4gbnVsbD8KKyAgICAgICAgcmV0
dXJuIGRvd25jYXN0PERvY3VtZW50PigqdGhpcykuZnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2Jq
ZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICB9CiAKLSAgICBpZiAoaXM8V29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Omds
b2JhbE9iamVjdChkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsK
KyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkgeworICAgICAg
ICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoYXQgc2NyaXB0KCkgaXMgbm9uLW51bGw/Cisg
ICAgICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxTY29wZVdyYXBwZXIo
KSB3aWxsIG5vdCByZXR1cm4gbnVsbD8KKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCktPmdsb2JhbFNjb3BlV3JhcHBlcigp
OworICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
QVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmNwcAppbmRleCBiNDM5N2I0NmFkNzdlYTg5MTBhMWYyNjc1NGNm
M2IxN2YxZjlkYjMwLi4xYWI5ODUzNzk5M2ViZTY0MDc2YzcyNWVlYTVlZWQyNmIxZTEzYzE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GcmFtZVRyYWNlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1Byb21pc2UuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCmluZGV4IDlkZGZjYmJmOGJiNDQ5N2FjNzJlYjY5YjBjMDQ0NzM0YmViMmEwN2IuLmQxZjky
N2QxYzUxM2NhYmVlZjMxZjczYmRmNDlmMzA3Zjc4NmZhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
QEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJTY3Jp
cHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCA4YWFkYWQxZmJhZWUzODdl
ODk3MGE2NWYxZjI5N2VmOWVkMmFmOTgzLi41ZjYzMWRmNTk3NjM4MjFlZWVkOGQ1M2U3MWQ1OWEy
NWFmMTBkMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcApAQCAtNTYsNyArNTYsNiBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlN5c3RlbVNvdW5kTWFuYWdlci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9y
LmgiCkBAIC0xNjAsMTUgKzE1OSwxNSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6ZGlz
Y29ubmVjdENsaWVudCgpCiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTZWxmVG9H
bG9iYWxPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7Ci0gICAgYXV0byYg
bGV4aWNhbEdsb2JhbE9iamVjdCA9ICpnbG9iYWxPYmplY3Qod29ybGQsIG1fZnJvbnRlbmRQYWdl
ID8gJm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKSA6IG51bGxwdHIpOwotICAgIGF1dG8mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRl
ZXMgbV9mcm9udGVuZFBhZ2UgaXMgbm9uLW51bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFu
dGVlcyBnbG9iYWxPYmplY3QncyByZXR1cm4gdmFsdWUgaXMgbm9uLW51bGw/CisgICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9i
YWxPYmplY3Qod29ybGQpOworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwotCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGdsb2JhbE9iamVj
dC5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3Rv
ckZyb250ZW5kSG9zdCIpLCB0b0pTPElETEludGVyZmFjZTxJbnNwZWN0b3JGcm9udGVuZEhvc3Q+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICp0aGlzKSk7CisgICAgZ2xvYmFs
T2JqZWN0LnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiSW5z
cGVjdG9yRnJvbnRlbmRIb3N0IiksIHRvSlM8SURMSW50ZXJmYWNlPEluc3BlY3RvckZyb250ZW5k
SG9zdD4+KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqdGhpcykpOwogICAgIGlmIChVTkxJ
S0VMWShzY29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICByZXBvcnRFeGNlcHRp
b24oJmdsb2JhbE9iamVjdCwgc2NvcGUuZXhjZXB0aW9uKCkpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6bG9hZGVkKCkKQEAgLTUwMywxOSArNTAyLDIwIEBAIHN0YXRpYyB2b2lk
IHBvcHVsYXRlQ29udGV4dE1lbnUoVmVjdG9yPEluc3BlY3RvckZyb250ZW5kSG9zdDo6Q29udGV4
dE1lbnVJdGVtPiYmCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51
KEV2ZW50JiBldmVudCwgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mJiBpdGVtcykKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZnJv
bnRlbmRQYWdlIGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgZ2xv
YmFsT2JqZWN0J3MgcmV0dXJuIHZhbHVlIGlzIG5vbi1udWxsPwogICAgIEFTU0VSVChtX2Zyb250
ZW5kUGFnZSk7Ci0KLSAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmdsb2JhbE9iamVj
dChkZWJ1Z2dlcldvcmxkKCksICZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGF1
dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwotICAgIGF1dG8gdmFsdWUgPSBsZXhp
Y2FsR2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiSW5zcGVjdG9yRnJvbnRlbmRBUEkiKSk7CisgICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gKm1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5zY3JpcHQoKS5nbG9iYWxP
YmplY3QoZGVidWdnZXJXb3JsZCgpKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgp
OworICAgIGF1dG8gdmFsdWUgPSBnbG9iYWxPYmplY3QuZ2V0KCZnbG9iYWxPYmplY3QsIEpTQzo6
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3RvckZyb250ZW5kQVBJIikpOwogICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKHZhbHVlLmlzT2JqZWN0KCkpOwogICAgIGF1dG8q
IGZyb250ZW5kQVBJT2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIAorCiAgICAgQ29udGV4
dE1lbnUgbWVudTsKICAgICBwb3B1bGF0ZUNvbnRleHRNZW51KFdURk1vdmUoaXRlbXMpLCBtZW51
KTsKIAotICAgIGF1dG8gbWVudVByb3ZpZGVyID0gRnJvbnRlbmRNZW51UHJvdmlkZXI6OmNyZWF0
ZSh0aGlzLCB7ICZsZXhpY2FsR2xvYmFsT2JqZWN0LCBmcm9udGVuZEFQSU9iamVjdCB9LCBtZW51
Lml0ZW1zKCkpOworICAgIGF1dG8gbWVudVByb3ZpZGVyID0gRnJvbnRlbmRNZW51UHJvdmlkZXI6
OmNyZWF0ZSh0aGlzLCB7ICZnbG9iYWxPYmplY3QsIGZyb250ZW5kQVBJT2JqZWN0IH0sIG1lbnUu
aXRlbXMoKSk7CiAgICAgbV9tZW51UHJvdmlkZXIgPSBtZW51UHJvdmlkZXIucHRyKCk7CiAgICAg
bV9mcm9udGVuZFBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLnNob3dDb250ZXh0TWVudShl
dmVudCwgbWVudVByb3ZpZGVyKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDE4NzkzZmYwNjYzMzhm
YjYwYTM0ZGVjOTA5YmMyZGRkMjhiZWFmYjQuLjVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNh
MzY5YTQyOGU1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0yMjgsOCArMjI4LDExIEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zCiAgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmICghd2luZG93KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoYXV0byog
Y29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKLSAg
ICAgICAgY29uc29sZUFnZW50LT5mcmFtZVdpbmRvd0Rpc2NhcmRlZCh3aW5kb3cpOworICAgICAg
ICBjb25zb2xlQWdlbnQtPmZyYW1lV2luZG93RGlzY2FyZGVkKCp3aW5kb3cpOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IGRh
YTYyZjIwNWU4MDlhNjgzMjhkZTcyMmQzMjQxNWYzM2MyMDQwZGUuLmVjODRiZjQ2MjUyNjhiMjNm
OGY0NDc5YzAwODRkNGY5MWMwNjllYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0yNyw4ICsyNyw2IEBACiAj
aW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDb21tYW5k
TGluZUFQSU1vZHVsZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCi0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC03NCwyOCArNzIsMTggQEAgdm9pZCBXZWJJbmplY3RlZFNjcmlwdE1h
bmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IoRE9NV2luZG93KiB3aW5kb3cpCiAgICAg
aWYgKG1fc2NyaXB0U3RhdGVUb0lkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
VmVjdG9yPGxvbmc+IGlkc1RvUmVtb3ZlOwotICAgIGZvciAoY29uc3QgYXV0byYgaXQgOiBtX2lk
VG9JbmplY3RlZFNjcmlwdCkgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0ID0gaXQudmFsdWUuZ2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGlmICh3aW5k
b3cgIT0gZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX3NjcmlwdFN0YXRlVG9JZC5yZW1vdmUobGV4aWNh
bEdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGlkc1RvUmVtb3ZlLmFwcGVuZChpdC5rZXkpOwotICAg
IH0KLQotICAgIGZvciAoYXV0byYgaWQgOiBpZHNUb1JlbW92ZSkKLSAgICAgICAgbV9pZFRvSW5q
ZWN0ZWRTY3JpcHQucmVtb3ZlKGlkKTsKLQotICAgIC8vIE5vdyByZW1vdmUgc2NyaXB0IHN0YXRl
cyB0aGF0IGhhdmUgaWQgYnV0IG5vIGluamVjdGVkIHNjcmlwdC4KLSAgICBWZWN0b3I8SlNDOjpK
U0dsb2JhbE9iamVjdCo+IHNjcmlwdFN0YXRlc1RvUmVtb3ZlOwotICAgIGZvciAoY29uc3QgYXV0
byYgaXQgOiBtX3NjcmlwdFN0YXRlVG9JZCkgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gaXQua2V5OwotICAgICAgICBpZiAod2luZG93ID09IGRv
bVdpbmRvd0Zyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCkpCi0gICAgICAgICAgICBz
Y3JpcHRTdGF0ZXNUb1JlbW92ZS5hcHBlbmQobGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgfQor
ICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyBmdW5jdGlvbiB0byB0YWtlIGEgRE9NV2luZG93JiBp
bnN0ZWFkIG9mIGEgRE9NV2luZG93KiB0aGF0IG11c3Qgbm90IGJlIG51bGwuCisgICAgQVNTRVJU
KHdpbmRvdyk7CisgICAgYXV0byogZG9jdW1lbnQgPSB3aW5kb3ctPmRvY3VtZW50KCk7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvJiBsZXhpY2Fs
R2xvYmFsT2JqZWN0IDogc2NyaXB0U3RhdGVzVG9SZW1vdmUpCi0gICAgICAgIG1fc2NyaXB0U3Rh
dGVUb0lkLnJlbW92ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBtX2lkVG9JbmplY3RlZFNj
cmlwdC5yZW1vdmVJZihbZG9jdW1lbnRdKGF1dG8mIGVudHJ5KSB7CisgICAgICAgIHJldHVybiBl
eGVjdXRpb25Db250ZXh0KGVudHJ5LnZhbHVlLmdsb2JhbE9iamVjdCgpKSA9PSBkb2N1bWVudDsK
KyAgICB9KTsKKyAgICBtX3NjcmlwdFN0YXRlVG9JZC5yZW1vdmVJZihbZG9jdW1lbnRdKGF1dG8m
IGVudHJ5KSB7CisgICAgICAgIHJldHVybiBleGVjdXRpb25Db250ZXh0KGVudHJ5LmtleSkgPT0g
ZG9jdW1lbnQ7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhNDQ3ZjcwNTM5ZTA2ZTRjODMwNDI3NmZj
YjRjZTFhNTg1MTZlYWU4Li45MTkyYmE5ZDg0MTJhYjZlN2NhNGZlMGZiZWNiZDAyMzU0YTQ5Y2Vk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0xMTQsMjEgKzExNCwy
MSBAQCBFeHBlY3RlZDxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6QXBwbGljYXRpb25DYWNo
ZTo6RnJhbWVXaXRoTWFuaWZlc3Q+PiwgUHJvdAogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoIlBhZ2UgZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9
IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlm
ZXN0Pjo6Y3JlYXRlKCk7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9pbnNwZWN0ZWRQYWdl
Lm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7Ci0gICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLmZvckVhY2hGcmFtZShbJl0oRnJhbWUm
IGZyYW1lKSB7CisgICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKTsKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKLSAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8mIGhvc3Qg
PSBkb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKTsKICAgICAgICAgU3RyaW5n
IG1hbmlmZXN0VVJMID0gaG9zdC5hcHBsaWNhdGlvbkNhY2hlSW5mbygpLm1hbmlmZXN0LnN0cmlu
ZygpOwogICAgICAgICBpZiAoIW1hbmlmZXN0VVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
cmVzdWx0LT5hZGRJdGVtKFByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5p
ZmVzdDo6Y3JlYXRlKCkKLSAgICAgICAgICAgICAgICAuc2V0RnJhbWVJZChwYWdlQWdlbnQtPmZy
YW1lSWQoZnJhbWUpKQorICAgICAgICAgICAgICAgIC5zZXRGcmFtZUlkKHBhZ2VBZ2VudC0+ZnJh
bWVJZCgmZnJhbWUpKQogICAgICAgICAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVS
TCkKICAgICAgICAgICAgICAgICAuc2V0U3RhdHVzKHN0YXRpY19jYXN0PGludD4oaG9zdC5zdGF0
dXMoKSkpCiAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KLSAgICB9Cisg
ICAgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBlYTU2
ODAwNTVhNGY0OWNlMjFiOTQzNjIxNDJjYTk4YzNiZDY2ZTQ2Li44MzIyYzhkYjJhOGE3ZGE5Yjcx
NDk0MTMxY2M1NjRhNmNiZDMwMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNTAsNyArNTAsNiBA
QAogI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgi
CiAjaW5jbHVkZSAiUGF0aDJELmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRl
ICJTdHJpbmdBZGFwdG9ycy5oIgogI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAzODA1Zjg0MjQ1ZjZjYjcz
YzQ1ODQ0MzY0ZDU0ZjgyMmI2YmViMjZkLi43YTc5MGJiMjNjOGYzN2FmNTdlNDI4NGIzNjdjYWQ5
ZDY3OWE0MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgIkluc3Ry
dW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSlNET01C
aW5kaW5nU2VjdXJpdHkuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1
ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIk11
dGF0aW9uRXZlbnQuaCIKQEAgLTk2LDcgKzk3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJHcmlkLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50
cy5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpAQCAtMTE2MywyMCArMTE2NCwxNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50Ojpmb2N1c05vZGUoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQobV9ub2RlVG9Gb2N1cyk7Ci0KLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fbm9k
ZVRvRm9jdXMuZ2V0KCk7Ci0gICAgbV9ub2RlVG9Gb2N1cyA9IG51bGxwdHI7Ci0KLSAgICBGcmFt
ZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgYXV0byBub2RlID0gc3Rk
OjpleGNoYW5nZShtX25vZGVUb0ZvY3VzLCBudWxscHRyKTsKKyAgICBhdXRvIGZyYW1lID0gbm9k
ZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0
YXRlKGZyYW1lKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBhdXRv
JiBnbG9iYWxPYmplY3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKTsKKyAgICBhdXRv
IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRG
b3IoJmdsb2JhbE9iamVjdCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChub2Rl
QXNTY3JpcHRWYWx1ZSgqc2NyaXB0U3RhdGUsIG5vZGUuZ2V0KCkpKTsKKyAgICBpbmplY3RlZFNj
cmlwdC5pbnNwZWN0T2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgbm9kZS5n
ZXQoKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxl
bWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkKQpAQCAtMTg5Miw3ICsx
ODkwLDExIEBAIFJlZjxQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyCiAKICAgICAgICAgaWYgKGRvY3VtZW50
KSB7CiAgICAgICAgICAgICBoYW5kbGVyT2JqZWN0ID0gc2NyaXB0TGlzdGVuZXIuZW5zdXJlSlNG
dW5jdGlvbigqZG9jdW1lbnQpOwotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gV2ViQ29yZTo6
Z2xvYmFsT2JqZWN0KHNjcmlwdExpc3RlbmVyLmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOwor
ICAgICAgICAgICAgaWYgKGF1dG8gZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCB0aGUgY2FuRXhlY3V0ZVNjcmlwdHMg
Y2hlY2sgaGVyZT8KKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1
dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAgICAgICAgICAgICAgICAg
Z2xvYmFsT2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChzY3JpcHRMaXN0ZW5l
ci5pc29sYXRlZFdvcmxkKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGhhbmRsZXJPYmplY3QgJiYgZ2xvYmFsT2JqZWN0KSB7CkBAIC0yODQ2LDEyICsyODQ4LDEy
IEBAIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbnNwZWN0b3JET01B
Z2VudDo6cmVzb2x2ZU5vZGUoTm9kZSogbm9kCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvJiBzdGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoZnJh
bWUpOwotICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcigmc3RhdGUpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IG1haW5X
b3JsZEdsb2JhbE9iamVjdCgqZnJhbWUpOworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcigmZ2xvYmFsT2JqZWN0KTsKICAg
ICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZh
bHVlKHN0YXRlLCBub2RlKSwgb2JqZWN0R3JvdXApOworICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dC53cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgbm9kZSksIG9iamVj
dEdyb3VwKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OnNjcmlwdFZhbHVlQXNOb2Rl
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNjI4NmI2NTIx
MjZlMGRkMTMzZDJjMjRlNDdmY2Q3Y2RjNzM3NmE3My4uNWQ1MTJlNzhlMjAwMzI4OGQwMTUzMTM2
ODdlNjgzODk5MDhiNzNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VB
Z2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRlICJTY3Jp
cHRTdGF0ZS5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlSW5kZXhl
ZERhdGFiYXNlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4KQEAg
LTYxNywxNCArNjE3LDE3IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3RE
YXRhKGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0CiAgICAgaWYgKCFnZXRE
b2N1bWVudEFuZElEQkZhY3RvcnlGcm9tRnJhbWVPclNlbmRGYWlsdXJlKGZyYW1lLCBkb2N1bWVu
dCwgaWRiRmFjdG9yeSwgY2FsbGJhY2spKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVk
U2NyaXB0Rm9yKG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSkpOwotICAgIFJlZlB0cjxJREJLZXlS
YW5nZT4gaWRiS2V5UmFuZ2UgPSBrZXlSYW5nZSA/IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKCpr
ZXlSYW5nZSkgOiBudWxscHRyOwotICAgIGlmIChrZXlSYW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsK
LSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgcGFyc2Uga2V5IHJhbmdl
LiJfcyk7Ci0gICAgICAgIHJldHVybjsKKyAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJh
bmdlOworICAgIGlmIChrZXlSYW5nZSkgeworICAgICAgICBpZGJLZXlSYW5nZSA9IGlkYktleVJh
bmdlRnJvbUtleVJhbmdlKCprZXlSYW5nZSk7CisgICAgICAgIGlmICghaWRiS2V5UmFuZ2UpIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IHBhcnNlIGtleSBy
YW5nZS4iX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCi0gICAg
UmVmPERhdGFMb2FkZXI+IGRhdGFMb2FkZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQs
IFdURk1vdmUoY2FsbGJhY2spLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRl
eE5hbWUsIFdURk1vdmUoaWRiS2V5UmFuZ2UpLCBza2lwQ291bnQsIHBhZ2VTaXplKTsKKyAgICBh
dXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3Jp
cHRGb3IoJm1haW5Xb3JsZEdsb2JhbE9iamVjdCgqZnJhbWUpKTsKKyAgICBhdXRvIGRhdGFMb2Fk
ZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2spLCBpbmpl
Y3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIFdURk1vdmUoaWRiS2V5UmFu
Z2UpLCBza2lwQ291bnQsIHBhZ2VTaXplKTsKICAgICBkYXRhTG9hZGVyLT5zdGFydChpZGJGYWN0
b3J5LCAmZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAppbmRleCAyMjNhNjc2N2JlMjcxZWU0ZDIyZGVkMWQ2YmU2MGNhNzA3ODE3
YzgxLi4zY2ViNGI0N2YxMDY4YTBhZmVhZjAwZjE3OWMyODAwYzQ3NmJkNmIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVk
ZSAiSlNFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJKU1dlYlNvY2tldC5oIgogI2luY2x1ZGUgIkxv
YWRlclN0cmF0ZWd5LmgiCkBAIC02NCw3ICs2NSw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKQEAgLTEwNDMsMTEgKzEwNDMsMTEgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJ
bnNwZWN0b3JOZXR3b3JrQWcKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIk1pc3NpbmcgZnJhbWUgb2Ygd2ViIHNvY2tldCBmb3IgZ2l2ZW4gcmVxdWVzdElk
Il9zKTsKIAotICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSk7Ci0g
ICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVk
U2NyaXB0Rm9yKCZzdGF0ZSk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkR2xv
YmFsT2JqZWN0KCpmcmFtZSk7CisgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZnbG9iYWxPYmplY3QpOwogICAgIEFTU0VS
VCghaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKTsKIAotICAgIGF1dG8gb2JqZWN0ID0gaW5q
ZWN0ZWRTY3JpcHQud3JhcE9iamVjdCh3ZWJTb2NrZXRBc1NjcmlwdFZhbHVlKHN0YXRlLCB3ZWJT
b2NrZXQpLCBvYmplY3RHcm91cCk7CisgICAgYXV0byBvYmplY3QgPSBpbmplY3RlZFNjcmlwdC53
cmFwT2JqZWN0KHdlYlNvY2tldEFzU2NyaXB0VmFsdWUoZ2xvYmFsT2JqZWN0LCB3ZWJTb2NrZXQp
LCBvYmplY3RHcm91cCk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBjYXN0IFdlYlNvY2tldCIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcAppbmRleCBiN2M2YjBlYjIzNGZiMTAzMzllZDFhZmQyOGE1OTcyYWEx
NDA0MTVmLi4xMTgyZmEzZWQ3NDJlNzA4OTg4OGM2N2JhYWE1YTJjNmIwNDA4Y2E5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJQYWdlRGVidWdnZXIu
aCIKICNpbmNsdWRlICJQYWdlSGVhcEFnZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgot
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiV2ViRGVidWdnZXJB
Z2VudC5oIgpAQCAtNjYsNyArNjUsNiBAQAogI2luY2x1ZGUgIlJ1bkxvb3BPYnNlcnZlci5oIgog
I2VuZGlmCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwpAQCAtMjkwLDcgKzI4OCwxMyBAQCBkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
dGltZXN0YW1wKCkKICAgICByZXR1cm4gbV9lbnZpcm9ubWVudC5leGVjdXRpb25TdG9wd2F0Y2go
KS5lbGFwc2VkVGltZSgpLnNlY29uZHMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpzdGFydEZyb21Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCitzdGF0aWMgRnJhbWUqIGZyYW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0KGdsb2Jh
bE9iamVjdCk7CisgICAgcmV0dXJuIGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERv
Y3VtZW50PigqY29udGV4dCkuZnJhbWUoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgLy8gQWxsb3cgZHVwbGljYXRl
IHVubmFtZWQgcHJvZmlsZXMuIERpc2FsbG93IGR1cGxpY2F0ZSBuYW1lZCBwcm9maWxlcy4KICAg
ICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewpAQCAtMzEwLDcgKzMxNCw3IEBAIHZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBl
eGVjLCBjb25zdCBTCiAgICAgaWYgKCFtX3RyYWNraW5nICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9m
aWxlUmVjb3Jkcy5pc0VtcHR5KCkpCiAgICAgICAgIHN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVyZSgp
OwogCi0gICAgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmFwcGVuZChjcmVhdGVSZWNv
cmRFbnRyeShUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YSh0
aXRsZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29uc29sZVByb2ZpbGUsIHRydWUsIGZyYW1lRnJv
bUV4ZWNTdGF0ZShleGVjKSkpOworICAgIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5h
cHBlbmQoY3JlYXRlUmVjb3JkRW50cnkoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVDb25z
b2xlUHJvZmlsZURhdGEodGl0bGUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkNvbnNvbGVQcm9maWxl
LCB0cnVlLCBmcmFtZShnbG9iYWxPYmplY3QpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6c3RvcEZyb21Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmIHRpdGxlKQpAQCAtNjc2LDcgKzY4MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgLypi
YXRjaElkKi8sIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUpCiB7Ci0gICAgYXBwZW5k
UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlv
bklELCBzYW1wbGVJZCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBm
cmFtZUZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIGFwcGVuZFJlY29y
ZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YShhY3Rpb25JRCwg
c2FtcGxlSWQpLCBUaW1lbGluZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWUo
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwogfQogCiBzdGF0aWMgUHJvdG9jb2w6OlRpbWVsaW5lOjpF
dmVudFR5cGUgdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCBi
ZGZmODQzNGRiZWY4YzU0ODViMTUwNmVkMjA4YTAxYzllY2FkMjI2Li5kMTVlNTNhNjk3ODU4NWJm
MmM5YzdkYTRjZmRlZWExNWJjMzMzMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC0zMiwxNCArMzIsMTIgQEAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUg
IldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC00OSwyMCArNDcsMTUgQEAgV2ViQ29uc29sZUFnZW50
OjpXZWJDb25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogewogfQogCi1XZWJD
b25zb2xlQWdlbnQ6On5XZWJDb25zb2xlQWdlbnQoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgV2ViQ29u
c29sZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKK3ZvaWQg
V2ViQ29uc29sZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cmIHdpbmRvdykK
IHsKLSAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2NvbnNvbGVNZXNzYWdlcykgewotICAgICAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbWVzc2FnZS0+Z2xv
YmFsT2JqZWN0KCk7Ci0gICAgICAgIGlmICghbGV4aWNhbEdsb2JhbE9iamVjdCkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSAhPSB3aW5kb3cpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
bWVzc2FnZS0+Y2xlYXIoKTsKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1l
bnQoKSkgeworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2NvbnNvbGVNZXNzYWdlcykg
eworICAgICAgICAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHQobWVzc2FnZS0+Z2xvYmFsT2JqZWN0
KCkpID09IGRvY3VtZW50KQorICAgICAgICAgICAgICAgIG1lc3NhZ2UtPmNsZWFyKCk7CisgICAg
ICAgIH0KICAgICB9Ci0KLSAgICBzdGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIm
PihtX2luamVjdGVkU2NyaXB0TWFuYWdlcikuZGlzY2FyZEluamVjdGVkU2NyaXB0c0Zvcih3aW5k
b3cpOworICAgIHN0YXRpY19jYXN0PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlciY+KG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKS5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKCZ3aW5kb3cpOwogfQog
CiB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNv
bnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xl
QWdlbnQuaAppbmRleCA5MGM3MDhlOWI4MDE3MTJiNjU5NDA3YWUwYzFkNjY4NjhhZWE5NGE4Li5h
NjE0NzUyZTkwY2RlYWUxMzg5MTZmYmY4MGVmODU1ODRiN2E1MTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmgKQEAgLTI1LDcgKzI1
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaD4KIApAQCAtMzYsMTQgKzM1LDEyIEBA
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBjbGFzcyBX
ZWJDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvbnNvbGVBZ2VudCk7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV2ViQ29uc29sZUFnZW50KFdlYkFnZW50
Q29udGV4dCYpOwotICAgIH5XZWJDb25zb2xlQWdlbnQoKSBvdmVycmlkZTsKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBXZWJDb25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7CiAKK3B1Ymxp
YzoKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KLSAgICB2b2lkIGZyYW1lV2luZG93
RGlzY2FyZGVkKERPTVdpbmRvdyopOworICAgIHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWQoRE9N
V2luZG93Jik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRp
dEFnZW50LmNwcAppbmRleCBkNTEwZGMxNzA1OGUxMmJhZGU5YWUwOTJkODAxOWVhODZjOGQzMzRm
Li4xNzRkNTExOTM0Yjk5N2IxYmEwZjk1Y2FiZTFjMzM2OTA4NzhlZmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5j
cHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0RPTVdp
bmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JBdWRpdERPTU9iamVjdC5oIgogI2luY2x1ZGUg
IkpTSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC02MCw5ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFBhZ2VB
dWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
UnVuCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkKICAgICAgICAgcmV0dXJuIGluamVj
dGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlvbkNvbnRleHRJ
ZCk7Ci0KLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4
ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxk
R2xvYmFsT2JqZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSkpOwogfQogCiBJbmplY3Rl
ZFNjcmlwdCBQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6
OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCA1NWQ5NTE4NDk0MTk1Yjk2ZGYxNjVhOTRjMWMyOTYzYWRjZWI4Mzk1Li44MmI1
ZDI0NGI2Mjk2NDYxNWZjNGMxMjM3MjM1MTRmMjY4MWIzOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTM4LDExICszOCwxMSBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2lu
Y2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC0xMzgsMTAgKzEzOCw4IEBAIHZvaWQgUGFnZURlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iCiAKIEluamVjdGVkU2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlw
dEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25h
bDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRl
eHRJZCkKIHsKLSAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkgewotICAgICAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0
ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdl
cigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKLSAgICB9CisgICAgaWYgKCFleGVj
dXRpb25Db250ZXh0SWQpCisgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5p
bmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxkR2xvYmFsT2JqZWN0KG1faW5zcGVjdGVkUGFnZS5t
YWluRnJhbWUoKSkpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggYmI0ZjZiYTdjMmNjNjE4NTg1ODcxOTZjOTczYTJjMzg2Zjg4ZjRmOC4uZDA2OTBk
NDRkZTNjZWFlZDlkYzMyNWE4YmJmMWJlZDdiODdmYmZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IGIzMmYzZjY5OWMyZDJhMzc3Mjg5NzYwYjI0NWFjODE3
ODQxMDI0NTguLmRlNTY4OWFhMzM0NTJhZmQ5NWEzMjkyYWIxODA4YWE5NWUxZjZiMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTM3LDExICszNywxMCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0Fn
ZW50cy5oIgotI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgIkpTRE9NV2lu
ZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUVtdWxhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3Jp
cHQuaD4KQEAgLTkxLDcgKzkwLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gUGFn
ZVJ1bnRpbWVBZ2VudDo6ZGlzYWJsZSgpCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmZyYW1lTmF2
aWdhdGVkKEZyYW1lJiBmcmFtZSkKIHsKICAgICAvLyBFbnN1cmUgZXhlY3V0aW9uIGNvbnRleHQg
aXMgY3JlYXRlZCBmb3IgdGhlIGZyYW1lIGV2ZW4gaWYgaXQgZG9lc24ndCBoYXZlIHNjcmlwdHMu
Ci0gICAgbWFpbldvcmxkRXhlY1N0YXRlKCZmcmFtZSk7CisgICAgbWFpbldvcmxkR2xvYmFsT2Jq
ZWN0KGZyYW1lKTsKIH0KIAogdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMTA2
LDggKzEwNSw3IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkCiBJbmplY3RlZFNjcmlwdCBQYWdl
UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9u
Q29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoIWV4ZWN1dGlvbkNv
bnRleHRJZCkgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1h
aW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICAgICAg
SW5qZWN0ZWRTY3JpcHQgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRT
Y3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBp
bmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxkR2xvYmFs
T2JqZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSkpOwogICAgICAgICBpZiAocmVzdWx0
Lmhhc05vVmFsdWUoKSkKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZCJfczsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTEzNSwyNSArMTMzLDI1IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKCkKICAgICBpZiAoIXBhZ2VBZ2VudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvKiBmcmFtZSA9ICZtX2luc3BlY3RlZFBhZ2Uu
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKLSAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJv
dXRUb0V4ZWN1dGVTY3JpcHQpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgbV9pbnNwZWN0
ZWRQYWdlLmZvckVhY2hGcmFtZShbJl0oRnJhbWUmIGZyYW1lKSB7CisgICAgICAgIGlmICghZnJh
bWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQor
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZnJhbWVJZCA9IHBhZ2VBZ2VudC0+
ZnJhbWVJZChmcmFtZSk7CisgICAgICAgIGF1dG8gZnJhbWVJZCA9IHBhZ2VBZ2VudC0+ZnJhbWVJ
ZCgmZnJhbWUpOwogCiAgICAgICAgIC8vIEFsd2F5cyBzZW5kIHRoZSBtYWluIHdvcmxkIGZpcnN0
LgotICAgICAgICBhdXRvKiBtYWluR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhlY1N0YXRlKGZy
YW1lKTsKLSAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgbWFpbkdsb2JhbE9i
amVjdCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgICAgICBhdXRvJiBtYWluR2xvYmFs
T2JqZWN0ID0gbWFpbldvcmxkR2xvYmFsT2JqZWN0KGZyYW1lKTsKKyAgICAgICAgbm90aWZ5Q29u
dGV4dENyZWF0ZWQoZnJhbWVJZCwgJm1haW5HbG9iYWxPYmplY3QsIG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKIAotICAgICAgICBmb3IgKGF1dG8mIGpzV2luZG93UHJveHkgOiBmcmFtZS0+d2lu
ZG93UHJveHkoKS5qc1dpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgICAgIGZvciAoYXV0
byYganNXaW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94aWVzQXNW
ZWN0b3IoKSkgewogICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0ganNXaW5kb3dQcm94
eS0+d2luZG93KCk7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09IG1haW5HbG9iYWxP
YmplY3QpCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09ICZtYWluR2xvYmFsT2JqZWN0
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiBzZWN1cml0
eU9yaWdpbiA9IGRvd25jYXN0PERPTVdpbmRvdz4oanNXaW5kb3dQcm94eS0+d3JhcHBlZCgpKS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICAgICAgbm90aWZ5Q29udGV4dENy
ZWF0ZWQoZnJhbWVJZCwgZ2xvYmFsT2JqZWN0LCBqc1dpbmRvd1Byb3h5LT53b3JsZCgpLCAmc2Vj
dXJpdHlPcmlnaW4pOwogICAgICAgICB9Ci0gICAgfQorICAgIH0pOwogfQogCiBzdGF0aWMgUHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRUeXBlIHRvUHJvdG9jb2woRE9NV3JhcHBl
cldvcmxkOjpUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDhmN2UxNWVkOTVm
MWM5MjJmNGU0YjFlOWYwODRmMDkzMWUxMTg4OWQuLjFhOTdkNTI1YTk3ZTI5NjhmNjcyZWVhYTg2
MzU1ZDdlNjNlMzZiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNiw4ICsyNiw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya2VyQXVkaXRBZ2VudC5oIgogCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQ0lubGluZXMuaD4KQEAgLTU1LDcgKzU1LDkgQEAgSW5qZWN0ZWRTY3JpcHQgV29ya2Vy
QXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXIKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdCht
X2dsb2JhbFNjb3BlKSk7CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBtX2dsb2JhbFNj
b3BlLnNjcmlwdCgpIGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMg
Z2xvYmFsU2NvcGVXcmFwcGVyKCkgaXMgbm9uLW51bGw/CisgICAgcmV0dXJuIGluamVjdGVkU2Ny
aXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKG1fZ2xvYmFsU2NvcGUuc2NyaXB0KCktPmds
b2JhbFNjb3BlV3JhcHBlcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdn
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBkNDY4NDNmZDZjYjgwMGRhYmU1MTUxN2NmYTEwNDYw
ZmNjN2U0NWZiLi5kODM0ZjIwMDJkMGZhM2ZlZjNkYTk5N2U1YzEzYjQzZjZkNmUzYWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1
Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtl
ci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldvcmtlckRlYnVnZ2VyQWdlbnQuaCIKIAotI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNp
bmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0
TWFuYWdlci5oPgpAQCAtNjAsNyArNjAsOSBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dl
ckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fZ2xvYmFs
U2NvcGUpKTsKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZ2xvYmFsU2NvcGUuc2Ny
aXB0KCkgaXMgbm9uLW51bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBnbG9iYWxT
Y29wZVdyYXBwZXIoKSBpcyBub24tbnVsbD8KKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IobV9nbG9iYWxTY29wZS5zY3JpcHQoKS0+Z2xvYmFsU2Nv
cGVXcmFwcGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGlt
ZUFnZW50LmNwcAppbmRleCA1ODBkYzBhOTNiMzY3NzgxZjcyODk5NWRiMWFlZGJlYjM3YzEyYmEy
Li42MTA3NTY4MmI3ZDY3OGY3YTM3M2I3ZTU1MjEzOGQxMTg1NmQ2ZjRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaD4KIApAQCAtNTgsNyArNTgsOSBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50
aW1lQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAg
ICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV9nbG9i
YWxTY29wZSkpOworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgbV9nbG9iYWxTY29wZS5z
Y3JpcHQoKSBpcyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIGdsb2Jh
bFNjb3BlV3JhcHBlcigpIGlzIG5vbi1udWxsPworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1h
bmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcihtX2dsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxT
Y29wZVdyYXBwZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="473399"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447718</attachid>
            <date>2021-12-21 08:28:50 -0800</date>
            <delta_ts>2021-12-21 11:28:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234548-20211221082849.patch</filename>
            <type>text/plain</type>
            <size>79599</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFiYzJiOTM0OTMwNWM1
NjJhMzdiYTI2ODdlNDQ1YjlkNWJkMGRiNC4uNGM3MDk2ZjY1NDY0OTc5YzNmOTMwMDUyMWU3ZWM2
MTM0YTNkYWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMS0xMi0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
aXMgYSByZW1uYW50IG9mIEphdmFTY3JpcHQgZW5naW5lIGFic3RyYWN0aW9uIHRoYXQgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAg
U2NyaXB0U3RhdGUuaC9jcHAgaXMgZmlsZSBsZWZ0IG92ZXIgZnJvbSB3aGVuIHdlIGhhZCBhIGxh
eWVyIHRvIGFic3RyYWN0CisgICAgICAgIEphdmFTY3JpcHQgYmluZGluZyBhbmQgdXNhZ2UgaW4g
V2ViQ29yZSBzbyBpdCBjb3VsZCB3b3JrIHdpdGggYm90aCBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBhbmQgR29vZ2xlJ3MgVjggZW5naW5lLiBXZSBoYXZlbid0IG5lZWRlZCB0aGF0IGZvciB5ZWFy
cywgYW5kIHN0cmlwcGluZyBhd2F5IHNvbWUKKyAgICAgICAgb2YgdGhlIGxheWVycyBtaWdodCBo
ZWxwIHVzIG1ha2UgY29kZSBtb3JlIHJlYWRhYmxlIGFuZCBwZXJoYXBzIGV2ZW4gbm90aWNlIHdh
eXMKKyAgICAgICAgdG8gbWFrZSBpdCBtb3JlIGVmZmljaWVudC4gRm9yIG5vdywgdGhpcyBwYXRj
aCByZW1vdmVzIHRoZSBmdW5jdGlvbnMgZnJvbQorICAgICAgICBTY3JpcHRTdGF0ZS5oL2NwcCBh
bmQgbW92ZXMgdGhlbSB0byBtb3JlIHN1aXRhYmxlIHBsYWNlcywgc2ltcGxpZnlpbmcgaW4gdGhl
IHByb2Nlc3MuCisKKyAgICAgICAgQWxzbyBiZWdpbiB0byBqdXN0IGNhbGwgZ2xvYmFsIG9iamVj
dHMgImdsb2JhbCBvYmplY3QiLCBhbmQgbm90ICJzY3JpcHQgc3RhdGUiLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBTY3JpcHRTdGF0ZS5oLgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0
U3RhdGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6
IERpdHRvLgorCisgICAgICAgICogU291cmNlcy50eHQ6IFJlbW92ZWQgU2NyaXB0U3RhdGUuY3Bw
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBT
Y3JpcHRTdGF0ZS5oIGFuZCAuY3BwLgorICAgICAgICBBbHNvIGFsbG93ZWQgdGhlIHNjcmlwdCB0
byBzb3J0IHRoZSBmaWxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFpbldvcmxkR2xvYmFsT2JqZWN0KTogUmVuYW1l
ZCB0aGUgbWFpbldvcmxkRXhlY1N0YXRlIGZ1bmN0aW9uIGFuZAorICAgICAgICBtb3ZlZCBpdCBo
ZXJlIGZyb20gU2NyaXB0U3RhdGUuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmg6IFR3ZWFrZWQgZm9ybWF0dGluZyBvZiB0aGUgaGVhZGVyLiBBZGRlZCB0aGUK
KyAgICAgICAgbWFpbldvcmxkR2xvYmFsT2JqZWN0IGZ1bmN0aW9uLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUu
aC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQp
OiBDYWxsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRp
b25Db250ZXh0KTogUmVuYW1lZCB0aGUgc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUKKyAgICAgICAgZnVuY3Rpb24gYW5kIG1vdmVkIGl0IGhlcmUgZnJvbSBTY3JpcHRTdGF0ZS5j
cHAuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaDogQWRkZWQgdGhlIGV4ZWN1
dGlvbkNvbnRleHQgZnVuY3Rpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaCwgYWRkZWQgaW5jbHVkZQor
ICAgICAgICBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6d2lsbENy
ZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UpOiBDYWxsIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOiBD
aGFuZ2VkIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbAorICAgICAgICBm
dW5jdGlvbnMgdG8gdGFrZSBhIE5vZGUmIGluc3RlYWQgb2YgYSBuZXZlci1udWxsIE5vZGUqLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oOiBUd2Vha2VkIGZvcm1hdHRp
bmcgYSBiaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDogUmVtb3ZlZC4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6IFJlbW92ZWQgaW5j
bHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6d3JhcENyeXB0b0tleSk6
IFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2Ugb2YgZXhlY3V0aW9uQ29udGV4dCBmdW5jdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OnVud3JhcENyeXB0b0tleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZE9mZnNjcmVlbkNhbnZhcyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRSVENEYXRhQ2hhbm5lbCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5h
bCk6IERpdHRvLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0
aW9uKToKKyAgICAgICAgUGFzcyByZWZlcmVuY2UgdG8gd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFu
ZWRUcmVlQnlSZW1vdmFsLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3Zl
Tm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLCBhZGRlZCBpbmNsdWRlCisg
ICAgICAgIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZGlkTG9nTWVzc2FnZSk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3Jp
cHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Z2xv
YmFsT2JqZWN0KTogVXNlIHRoZQorICAgICAgICBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBoZWxwZXIgZnVuY3Rpb25zLgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmFkZFNlbGZUb0dsb2JhbE9iamVjdEluV29y
bGQpOgorICAgICAgICBVc2UgdGhlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkgaW5zdGVhZCBv
ZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUpOiBEaXR0by4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwpOiBEbworICAg
ICAgICB0aGUgbnVsbCBjaGVjayBoZXJlIGluc3RlYWQgb2YgaW4gZnJhbWVXaW5kb3dEaXNjYXJk
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDog
UmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IpOgorICAgICAg
ICBSZXdvcmtlZCBsb2dpYyB0byB1c2UgZXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIGRvbVdp
bmRvd0Zyb21FeGVjU3RhdGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDogUmVtb3ZlZCBp
bmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Zm9jdXNOb2RlKTogVXNlIHN0ZDo6ZXhjaGFuZ2UgaGVyZSBpbiB0aGUKKyAgICAgICAg
aWRpb21hdGljICJ0YWtlIGFuZCBudWxsIGEgdmFsdWUiIGNhc2UgaGVyZS4gVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOiBVc2UKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciBk
aXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggYSBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YKKyAgICAgICAgU2NyaXB0U3RhdGUuaCBhbmQg
YWRkZWQgaW5jbHVkZSBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZXNvbHZlV2ViU29ja2V0KTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAo
V2ViQ29yZTo6ZnJhbWUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBmcm9tIGEgZ2xv
YmFsIG9iamVjdCB0byBhIGZyYW1lLgorICAgICAgICBDYWxscyBleGVjdXRpb25Db250ZXh0IGFu
ZCBnZXRzIHRvIHRoZSBmcmFtZSBmcm9tIHRoZXJlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6IFVzZSBmcmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6
IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
OiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOiBUYWtlIGEgcmVmZXJlbmNlIGlu
c3RlYWQgb2YKKyAgICAgICAgYSBwb2ludGVyIHRoYXQgbXVzdCBub3QgYmUgbnVsbC4gVXNlIGV4
ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBkb21XaW5kb3dGcm9tRXhlY1N0YXRl
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4gUmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBXVEZfTUFLRV9O
T05DT1BZQUJMRSAoYmFzZSBjbGFzcyBpcyBhbHJlYWR5IG5vdCBjb3B5YWJsZSkgYW5kCisgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIChjbGFzcyBpcyBhbiBhYnN0cmFjdCBiYXNlIGNs
YXNzIGFuZCBuZXZlciBhbGxvY2F0ZWQpLgorICAgICAgICBNYWRlIGNvbnN0cnVjdG9yIHByb3Rl
Y3RlZC4gQ2hhbmdlZCB0aGUgRE9NV2luZG93IGFyZ3VtZW50IHRvCisgICAgICAgIGZyYW1lV2lu
ZG93RGlzY2FyZGVkIHRvIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyIHRoYXQgbXVz
dCBub3QgYmUgbnVsbC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVk
aXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdn
ZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0
d29ya0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6IFJlbW92ZWQg
aW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFuZCBhZGRlZCBpbmNsdWRlIG9mIEpT
RE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojpm
cmFtZU5hdmlnYXRlZCk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbik6IERpdHRvLgorICAgICAgICBBbHNvIHVzZSBQYWdlOjpmb3JFYWNoRnJhbWUgaW5z
dGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRT
dGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVh
ZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAg
ICAgaW5zdGVhZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6IFVzZSBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5
CisgICAgICAgIGluc3RlYWQgb2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKwogMjAyMS0x
Mi0yMSAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgog
CiAgICAgICAgIFtMQ01TXSBVc2Ugc3RkOjp1bnFpdWVfcHRyIHRvIHJldGFpbiBMQ01TIG9iamVj
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGJjMDg0ZTlmNmJjOTcxYjQyMGM1NWRiNDk3MWI4Yjcw
ZWNlN2M1YzcuLjFlNjUxMDIxOWNiNjdlNzNjMmIwZjkyOWMwNTdkNmUwZDEwMzY3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtNDY1LDcgKzQ2NSw2IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5o
CiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgKICAgICBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKLSAgICBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCiAgICAg
YmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGVJbmxpbmVzLmgKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwCmluZGV4IGVkZGJlOGJlMWUzMTEwODcxYzM3NzExODRhMmY5NWJhN2ZiODAyZmQuLjE0MzUx
NDBhNWNiNGExYTFkNDA3YTJkYjI5ZDE1YmRmMmQ1MmMwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTQyLDcgKzQy
LDYgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDY3ZDNiYTRjNzk4MzExMTI3OTMxZTI5NTI4NDg0ZTY2ZWNkMzRjZmYuLjU4NDM2
MTU2NTAwMTY3ODc3OGRiNzUwMTk1ZjZlYjBmMmQxYzFiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTUwLDcgKzUw
LDYgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVHJh
bnNhY3Rpb25PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggNDk1MzBmNjI0YjAxMGY3NmE0ODMyNGJmZGQ5OWMyZDI2ODhhNzc4
My4uYmQ1YTc0NzljYjM5ZTQ2Y2M5MTA0MDBmNGVlMzg0OTMyNGM3NTMxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTYzMiw3ICs2MzIsNiBAQCBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCiBi
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAotYmluZGlu
Z3MvanMvU2NyaXB0U3RhdGUuY3BwCiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuY3BwCiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCiBiaW5kaW5ncy9qcy9TdHJ1Y3R1
cmVkQ2xvbmUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZmM0ZThkZTA1MTVhM2U3ZGUwODNmZDU3NjdkMDg5ZmE3YzI3OTQ5
NC4uM2QxMWU0NzM1NmZhZjA0YTYwNzUyYmJiZmEyNTUzMGFlZGFhZjI4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIwMCw3
ICsxMjAwLDYgQEAKIAkJNDFDMTRCQzkyNkRGNzlENzAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVy
cm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMx
NEJDODI2REY3OUQ2MDA2ODVCRjUgLyogTUROU1JlZ2lzdGVyRXJyb3IuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUMzQjhBMTI2NDlCMUUwMDA0
RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzNCODlGMjY0OUIx
QjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxQzNC
OEEyMjY0OUIxRTUwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzNCODlC
MjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0MUM3NjBC
MTBFREUwM0QzMDBDMTY1NUYgLyogU2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3Jp
cHRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQxQ0I4NDAxMjVDQUI3QjMwMDEwRTJCMSAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFDQjg0MDAyNUNBQjdCMDAwMTBFMkIxIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDFDQjg0MDIyNUNBQjgxRTAwMTBFMkIxIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDgzM0Ex
RTQzMjRCQjAwNjIxRTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxRDAxNUNBMEY0QjVD
NzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg1
MjMsNyArODUyMiw2IEBACiAJCTQxMjA5RTk0MjE2RUE2OUEwMEE3M0ExMiAvKiBSVENDZXJ0aWZp
Y2F0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDZXJ0aWZp
Y2F0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk1MjE2RUMzNEUw
MEE3M0ExMiAvKiBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oOyBwYXRo
ID0gbGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMjA5RTk2MjE2RUMzNEYwMEE3M0ExMiAvKiBMaWJXZWJSVEND
ZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5jcHA7IHBhdGggPSBsaWJ3ZWJydGMv
TGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0U3RhdGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MDFGNTg2MUM3MDA5RDc0MDMgLyogUmVhZGFi
bGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxl
U3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTI5Qzk4MTFGNTg2
MUM3MDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBSZWFkYWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTI5Qzk4NzFGNTg2NjJEMDA5RDc0MDMgLyogUmVhZGFibGVTdHJlYW1TaW5rLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtU2luay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODUxLDcgKzg4NDksNiBAQAogCQk0MUMz
Qjg5RTI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJJbnRlcm5hbFVuaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUMz
Qjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJ
bnRlcm5hbFVuaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDM0I4QTAyNjQ5
QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUM3NjBCMDBFREUwM0QzMDBDMTY1NUYgLyog
U2NyaXB0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0U3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDUxRTZBNTQzNjAwMjdC
NERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDYxRTZBNTQzNjAwMjdCNERFIC8q
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxQzdFMTA4MUU2QUEzN0MwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTky
NTcsMTIgKzE5MjU0LDEyIEBACiAJCTExQTFFNkZCMjZGQkI2Q0UwMDQzNUQzNiAvKiBkaXNwbGF5
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk2RjYwRTVB
OTI3NzEwRjM5MDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggKi8sCi0JCQkJ
NkY2MEU1QTcyNzcxMEYyRjAwNUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAg
Ki8sCiAJCQkJNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8qIElubGluZURpc3BsYXlCb3guaCAq
LywKIAkJCQkxMTUxM0QwMDI2RDk4MUREMDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyLmNwcCAqLywKIAkJCQkxMTUxM0QwMjI2RDk4MUU3MDA0RDNGQUEgLyogSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyLmggKi8sCiAJCQkJNkY5MTQyMEYyNTE1MjEzNzAwNEU0RkVBIC8q
IElubGluZURpc3BsYXlMaW5lLmggKi8sCisJCQkJNkY2MEU1QTcyNzcxMEYyRjAwNUMxNUI5IC8q
IElubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgKi8sCisJCQkJNkY2MEU1QTkyNzcxMEYzOTAw
NUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBkaXNwbGF5OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5MjA3LDggKzI5MjA0
LDYgQEAKIAkJCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcCAqLywKIAkJCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9h
ZGVyLmggKi8sCiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1OEYyIC8qIFNjcmlwdFNvdXJjZUNv
ZGUuaCAqLywKLQkJCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0RjUgLyogU2NyaXB0U3RhdGUuY3Bw
ICovLAotCQkJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovLAog
CQkJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLywKIAkJ
CQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oICov
LAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwICovLApAQCAtMzQ4MzQsNiArMzQ4MjksNyBAQAogCQkJCTZGQzNGOTQ3MjUxNjc1NjcwMEE0
OUJFQSAvKiBJbmxpbmVEaXNwbGF5Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTUxM0QwMzI2
RDk4MUU4MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RjkxNDIxMTI1MTUyMTM4MDA0RTRGRUEgLyogSW5saW5lRGlzcGxheUxpbmUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTZGNjBFNUFBMjc3MTBGMzkwMDVDMTVCOSAvKiBJbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGN0NBM0NBMjA4QzJCMkUw
MDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDdDNEQ1N0QyNjUwOEJDQjAwQzdBQjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkZFNjM2RTgyNjQ3OTYyOTAwRjA5NTFFIC8qIElubGluZUZvcm1h
dHRpbmdRdWlya3MuaCBpbiBIZWFkZXJzICovLApAQCAtMzY5MDgsNyArMzY5MDQsNiBAQAogCQkJ
CUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291
cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8q
IFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBE
MEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwRDdBODE3MTM2
RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM4QUUzNEYxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVy
cyAqLywKQEAgLTM3NjY2LDcgKzM3NjYxLDYgQEAKIAkJCQlCRUYyOUVFQzE3MTVERDA5MDBDNEI0
QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMzM2RjY0MTdG
QTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNkY2MEU1QUEyNzcxMEYzOTAwNUMxNUI5IC8qIElubGluZURp
c3BsYXlMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxRjlCMTQyNzAyMzVGNzAw
NjE3RUI2IC8qIFZpZGVvVHJhY2tQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDhCNUE0MzE4MEQxNDlBMDA4QjhFNjUgLyogVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MEU4MUQxMUJGMjc2NTYwMDFGREE0OCAvKiBW
aWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA1NDc2Mjdh
OWY4OWM3NTY0Y2ZiNWY4NzBkMjVjODZmNTIzMGRmNTVkLi4xMjVlYzAwNzMyMzVjMGZjYmE0OTc0
MWU0MWZiZmE0ZDNlMjA2OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MzcsNCArNjM3LDEyIEBAIHZvaWQgSlNET01XaW5k
b3c6OnNldE9wZW5EYXRhYmFzZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6CiAgICAgY3JlYXRlRGF0YVByb3BlcnR5KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgIm9wZW5EYXRh
YmFzZSIpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCitKU0RPTVdpbmRvdyYgbWFpbldvcmxk
R2xvYmFsT2JqZWN0KEZyYW1lJiBmcmFtZSkKK3sKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50
ZWVzIHRoZSByZXN1bHQgb2YganNXaW5kb3dQcm94eSgpIGlzIG5vbi1udWxsPworICAgIC8vIEZJ
WE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCBvZiB3aW5kb3coKSBpcyBub24tbnVsbD8K
KyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoZSByZXN1bHQgb2Ygd2luZG93KCkgYSBK
U0RPTVdpbmRvdz8KKyAgICByZXR1cm4gKmpzQ2FzdDxKU0RPTVdpbmRvdyo+KGZyYW1lLndpbmRv
d1Byb3h5KCkuanNXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPndpbmRvdygp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgKaW5kZXggN2NmYTdhNmJiM2E3YzRhMGFkZjZjYWZh
NzM2OWI3MmJiNTcwN2E3Ny4uMmIxMmJjY2E0ZTJlNTBjMjU0MDczNjExOTcwMDRmM2Q3ZDNmODg5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNSw2
ICsyNSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBYnN0cmFjdERPTVdpbmRvdzsK
IGNsYXNzIEFic3RyYWN0RnJhbWU7CiAKK0pTRE9NV2luZG93KiBhc0pTRE9NV2luZG93KEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKK2NvbnN0IEpTRE9NV2luZG93KiBhc0pTRE9NV2luZG93KGNvbnN0
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKworZW51bSBjbGFzcyBET01XaW5kb3dUeXBlIDogYm9v
bCB7IExvY2FsLCBSZW1vdGUgfTsKK3RlbXBsYXRlPERPTVdpbmRvd1R5cGU+IGJvb2wganNET01X
aW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKEpTRE9NR2xvYmFsT2JqZWN0
KiwgQWJzdHJhY3RET01XaW5kb3cmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgY29uc3QgU3RyaW5nJik7CisKK2VudW0gY2xhc3Mg
Q3Jvc3NPcmlnaW5PYmplY3QgOiBib29sIHsgV2luZG93LCBMb2NhdGlvbiB9OwordGVtcGxhdGU8
Q3Jvc3NPcmlnaW5PYmplY3Q+IHZvaWQgYWRkQ3Jvc3NPcmlnaW5Pd25Qcm9wZXJ0eU5hbWVzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5Jik7CisKK2Jvb2wgaGFu
ZGxlQ29tbW9uQ3Jvc3NPcmlnaW5Qcm9wZXJ0aWVzKEpTQzo6SlNPYmplY3QqIHRoaXNPYmplY3Qs
IEpTQzo6Vk0mLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKworSlNE
T01XaW5kb3cmIG1haW5Xb3JsZEdsb2JhbE9iamVjdChGcmFtZSYpOworSlNET01XaW5kb3cqIG1h
aW5Xb3JsZEdsb2JhbE9iamVjdChGcmFtZSopOworCiBpbmxpbmUgSlNET01XaW5kb3cqIGFzSlNE
T01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVy
biBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CkBAIC0zNSwxNSArNDks
OSBAQCBpbmxpbmUgY29uc3QgSlNET01XaW5kb3cqIGFzSlNET01XaW5kb3coY29uc3QgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CiB9CiAKLWVudW0gY2xhc3MgRE9NV2luZG93
VHlwZSB7IExvY2FsLCBSZW1vdGUgfTsKLQotdGVtcGxhdGUgPERPTVdpbmRvd1R5cGUgd2luZG93
VHlwZT4KLWJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNz
KEpTRE9NR2xvYmFsT2JqZWN0KiwgQWJzdHJhY3RET01XaW5kb3cmLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgY29uc3QgU3RyaW5n
Jik7Ci0KLWVudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PYmplY3QgeyBXaW5kb3csIExvY2F0aW9uIH07
Ci0KLXRlbXBsYXRlIDxDcm9zc09yaWdpbk9iamVjdCBvYmplY3RUeXBlPgotdm9pZCBhZGRDcm9z
c09yaWdpbk93blByb3BlcnR5TmFtZXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6UHJvcGVy
dHlOYW1lQXJyYXkmKTsKLWJvb2wgaGFuZGxlQ29tbW9uQ3Jvc3NPcmlnaW5Qcm9wZXJ0aWVzKEpT
Qzo6SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTQzo6Vk0mLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmKTsKK2lubGluZSBKU0RPTVdpbmRvdyogbWFpbldvcmxkR2xvYmFsT2Jq
ZWN0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4gZnJhbWUgPyAmbWFpbldvcmxkR2xvYmFs
T2JqZWN0KCpmcmFtZSkgOiBudWxscHRyOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5jcHAKaW5kZXggYmVjYTU2M2Y1
NzliMTQ2ZDczMjM4YWQ4NjgxZWJlMGYyNDNmNTdiYi4uYjUzMDhlMjM1MzFlOGFlZDJkMTQyMWQ3
MjExNmZkY2YxODlkNTJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0
YXRlLmNwcApAQCAtMjksMTQgKzI5LDEzIEBACiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBKU0V4ZWNTdGF0ZTo6
ZGlkTGVhdmVTY3JpcHRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1
dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQobGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgY29udGV4dC0+ZXZlbnRMb29wKCku
cGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKQEAgLTUzLDQgKzUyLDExIEBAIEpTQzo6SlNW
YWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplCiAgICAgcmV0dXJuIEpTRXhlY1N0YXRlOjpldmFsdWF0ZShsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwogfQog
CitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRpb25Db250ZXh0KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAoIWdsb2JhbE9iamVjdCB8fCAhZ2xvYmFs
T2JqZWN0LT5pbmhlcml0czxKU0RPTUdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRl
LmgKaW5kZXggMjdmNzY1MGRhNmE4ZWU0NGYzNWY5NDdkNDk4ZWEzODFjNmM5NDMxZi4uZTI2NWIx
MzM4YWM4NzQ5MDNlMWY3ZmMyMzZlZDU3M2Q1NWZmMzFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V4ZWNTdGF0ZS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NywyNSArNDcsMjUgQEAgcHVibGljOgogICAgIHN0
YXRpYyBKU0M6OkpTR2xvYmFsT2JqZWN0KiBjdXJyZW50U3RhdGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5jdXJyZW50U3RhdGUoKTsKLSAgICB9OworICAgIH0K
ICAgICAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uT2JqZWN0LCBjb25zdCBK
U0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0
aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRlKGxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCByZXR1cm5lZEV4Y2Vw
dGlvbik7Ci0gICAgfTsKKyAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGV2YWx1YXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6U291
cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUg
Y3VycmVudFN0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gSlNDOjpl
dmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJuZWRF
eGNlcHRpb24pOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBldmFs
dWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBKU0M6
OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTQzo6SlNWYWx1
ZSgpKQogICAgIHsKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHVudXNlZDsKICAg
ICAgICAgcmV0dXJuIGV2YWx1YXRlKGxleGljYWxHbG9iYWxPYmplY3QsIHNvdXJjZSwgdGhpc1Zh
bHVlLCB1bnVzZWQpOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBw
cm9maWxlZENhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpQcm9maWxpbmdSZWFzb24gcmVhc29uLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNv
bnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25z
dCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pCiAgICAgewpAQCAtMTg1LDQgKzE4NSw2IEBAIHByaXZhdGU6CiBKU0M6OkpTVmFs
dWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0YSYsIEpTQzo6
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBKU0M6OkpTVmFsdWUgZXZhbHVhdGVI
YW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpTb3Vy
Y2VDb2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlv
bkNvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCopOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCAxZmNj
MjQ0ZDhkOTUwZTE3ODFlMmUwYmRhNmE2NGVjN2Q3YTI5YTcxLi5kNDFmOGVlYTVmMzQxNzgwYjQy
M2Y2YjdlNmU3ODYzYjE5YWI5Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJKU0NEQVRBU2VjdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ29tbWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnRUeXBl
LmgiCkBAIC02MSwxNyArNjIsMTUgQEAKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aCIKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNWR0Vs
ZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKICNpbmNsdWRlICJHQ1JlYWNoYWJsZVJlZi5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIK
ICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNS
ZWFjaGFibGVGcm9tRE9NKE5vZGUqIG5vZGUsIEFic3RyYWN0U2xvdFZpc2l0b3ImIHZpc2l0b3Is
IGNvbnN0IGNoYXIqKiByZWFzb24pCkBAIC0yMTIsMTQgKzIxMSwxNSBAQCBKU0M6OkpTT2JqZWN0
KiBnZXRPdXRPZkxpbmVDYWNoZWRXcmFwcGVyKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE5vZGUmCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+d29ybGQoKS53cmFwcGVycygpLmdl
dCgmbm9kZSk7CiB9CiAKLXZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1v
dmFsU2xvd0Nhc2UoTm9kZSogcm9vdCkKK3ZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRU
cmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSYgcm9vdCkKIHsKLSAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhlY1N0YXRlKHJvb3QtPmRvY3Vt
ZW50KCkuZnJhbWUoKSk7Ci0gICAgaWYgKCFsZXhpY2FsR2xvYmFsT2JqZWN0KQorICAgIGF1dG8g
ZnJhbWUgPSByb290LmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpyb290KTsKKyAgICBhdXRvJiBnbG9iYWxPYmpl
Y3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
aygmZ2xvYmFsT2JqZWN0KTsKKyAgICB0b0pTKCZnbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3Qs
IHJvb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IGQ3MWIyNWMwZDg3YWFlNTYxOGRkMjc3MjQwYzlj
ZGM1MGEwOGMzMWQuLjc1OTJlZDc0YmNlOTdlYTBjYTNhNDgyYTk0OTE4ZDcwMTdkYjljZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCkBAIC02OSwxNiArNjks
MTEgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2IKIC8vIHJvb3QuIEluIHRoZSBKYXZhU2NyaXB0
IERPTSwgYSBub2RlIHRyZWUgc3Vydml2ZXMgYXMgbG9uZyBhcyB0aGVyZSBpcyBhCiAvLyByZWZl
cmVuY2UgdG8gYW55IG5vZGUgaW4gdGhlIHRyZWUuIFRvIG1vZGVsIHRoZSBKYXZhU2NyaXB0IERP
TSBvbiB0b3Agb2YKIC8vIHRoZSBDKysgRE9NLCB3ZSBlbnN1cmUgdGhhdCB0aGUgcm9vdCBvZiBl
dmVyeSB0cmVlIGhhcyBhIEphdmFTY3JpcHQgd3JhcHBlci4KLXZvaWQgd2lsbENyZWF0ZVBvc3Np
Ymx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSogcm9vdCk7Ci1pbmxpbmUgdm9p
ZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoTm9kZSogcm9vdCkKK3Zv
aWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSYg
cm9vdCk7CitpbmxpbmUgdm9pZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92
YWwoTm9kZSYgcm9vdCkKIHsKLSAgICBpZiAocm9vdC0+d3JhcHBlcigpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIXJvb3QtPmhhc0NoaWxkTm9kZXMoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2Uocm9v
dCk7CisgICAgaWYgKCFyb290LndyYXBwZXIoKSAmJiByb290Lmhhc0NoaWxkTm9kZXMoKSkKKyAg
ICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2Uocm9v
dCk7CiB9CiAKIGlubGluZSB2b2lkKiByb290KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKaW5kZXggMTEzZGNjYjg0NmIwZWYxYzYzZDMxZDEw
NDI5YzdiOTRlYzE5NGJjMC4uOTE4YjY2MTRhYjA0MzQzYTk2NDk3MGJkZjc0ZjQ0NTllOTc4M2Jm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2luZG93UHJveHkuaApAQCAtNDgs
MTcgKzQ4LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4gc3RhdGljIEpTQzo6SXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKSB7IHJldHVybiBzdWJzcGFjZUZvckltcGwo
dm0pOyB9CiAKICAgICBzdGF0aWMgSlNXaW5kb3dQcm94eSYgY3JlYXRlKEpTQzo6Vk0mLCBBYnN0
cmFjdERPTVdpbmRvdyYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgREVDTEFSRV9JTkZPOwog
CiAgICAgSlNET01HbG9iYWxPYmplY3QqIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odGFyZ2V0KCkpOyB9CisKICAgICB2b2lkIHNldFdpbmRv
dyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIHNldFdpbmRvdyhBYnN0
cmFjdERPTVdpbmRvdyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTQ4ZWRhYTc4YjFhYzYyZGZh
ODdiNTUxZDJhZWY5YjhjNGZiMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKLSNpbmNsdWRlICJKU1dv
cmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiSlNXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNp
bmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgotI2luY2x1
ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYWxsRnJhbWUuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ET01X
aW5kb3cqIGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCkKLXsKLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBsZXhpY2FsR2xvYmFsT2JqZWN0OwotICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0czxKU0RPTVdpbmRvd0Jhc2U+KHZt
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxKU0RP
TVdpbmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7Ci19Ci0KLUZyYW1lKiBmcmFt
ZUZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkK
LXsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+ZnJhbWUo
KSA6IG51bGxwdHI7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QpCi17Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbGV4aWNh
bEdsb2JhbE9iamVjdDsKLSAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01HbG9iYWxPYmplY3Q+KHZtKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCi1K
U0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJhbWUqIGZyYW1lKQotewot
ICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBmcmFt
ZS0+d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+
d2luZG93KCk7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICgh
ZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS5n
bG9iYWxPYmplY3Qod29ybGQpOwotfQotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRnJhbWUqIGZyYW1lKQotewotICAgIHJldHVybiBm
cmFtZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpIDogbnVsbHB0cjsKLX0K
LQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKLXsKLSAgICBpZiAoYXV0byogc2Ny
aXB0Q29udHJvbGxlciA9IHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLnNjcmlwdCgpKQotICAg
ICAgICByZXR1cm4gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsU2NvcGVXcmFwcGVyKCk7Ci0gICAg
cmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRT
dGF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTUwNjMwOTk2MGI5MjgxZWQx
MDAyMTkzNzUzZmM5MjVhZGM0MDgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAy
MDExIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1l
c3BhY2UgSlNDIHsKLWNsYXNzIENhbGxGcmFtZTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTVdpbmRvdzsKLWNsYXNzIERPTVdyYXBw
ZXJXb3JsZDsKLWNsYXNzIEZyYW1lOwotY2xhc3MgTm9kZTsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Ci1jbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKLQotRE9NV2luZG93
KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLUZyYW1lKiBm
cmFtZUZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwotU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUoRnJh
bWUqKTsKLQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KERPTVdyYXBwZXJXb3Js
ZCYsIE5vZGUqKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdChET01XcmFwcGVyV29ybGQmLCBGcmFtZSopOwotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDBiYWZhNzk4MzA5YzE2NTBjNjQwMmJkMDZlZWE3MzAxMTk2
ZTNlMzMuLmRiYWNkYTVlNDliZmE5MjhkOTY5MGI4NGEzZmE2MDczN2QzMTk0YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cApAQCAtNTYsMTUgKzU2LDggQEAKICNpbmNsdWRlICJKU1JUQ0NlcnRpZmljYXRlLmgiCiAjaW5j
bHVkZSAiSlNSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpZiBQTEFURk9STShDT0NPQSkK
LSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2VuZGlmCi0jaWYg
VVNFKENHKQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNlbmRpZgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9CaWdJbnRPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Cb29sZWFuT2Jq
ZWN0Lmg+CkBAIC0xMDEsNiArOTQsMTQgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKKyNpZiBVU0UoQ0cpCisjaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2VuZGlmCisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogI2luY2x1ZGUg
IkpTT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCkBAIC0x
MTMsNiArMTE0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKTsKQEAgLTU1NiwxOCArNTU4LDE0IEBAIHByb3RlY3RlZDoKICNp
ZiBFTkFCTEUoV0VCX0NSWVBUTykKIHN0YXRpYyBib29sIHdyYXBDcnlwdG9LZXkoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBW
ZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleSk7CisgICAgYXV0byBjb250ZXh0
ID0gZXhlY3V0aW9uQ29udGV4dChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gY29u
dGV4dCAmJiBjb250ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleSk7CiB9CiAKIHN0
YXRpYyBib29sIHVud3JhcENyeXB0b0tleShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4m
IGtleSkKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnVud3JhcENyeXB0b0tl
eSh3cmFwcGVkS2V5LCBrZXkpOworICAgIGF1dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQo
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4dC0+dW53
cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXksIGtleSk7CiB9CiAjZW5kaWYKIApAQCAtOTU4LDcgKzk1
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8mIHZtID0gbV9sZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpOwogICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBtX2xleGljYWxHbG9iYWxPYmpl
Y3Q7CiAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpTRE9NR2xvYmFsT2JqZWN0
Pih2bSkpCi0gICAgICAgICAgICByZXR1cm4gdG9KUyhtX2xleGljYWxHbG9iYWxPYmplY3QsIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksICZhcnJheUJ1ZmZlcik7Cisg
ICAgICAgICAgICByZXR1cm4gdG9KUyhnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCksICZhcnJheUJ1ZmZlcik7CiAKICAgICAgICAgaWYgKGF1dG8q
IGJ1ZmZlciA9IGFycmF5QnVmZmVyLm1fd3JhcHBlci5nZXQoKSkKICAgICAgICAgICAgIHJldHVy
biBidWZmZXI7CkBAIC0yNTY2LDcgKzI1NjQsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1f
Y2FuQ3JlYXRlRE9NT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAg
ZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBVUkwoVVJMKCksIHVybC0+c3Ry
aW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1vZGlm
aWVkKTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGV4ZWN1dGlvbkNvbnRleHQo
bV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZmlsZVBhdGgsIFVSTChVUkwoKSwgdXJsLT5zdHJpbmco
KSksIHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMyOTYsNyArMzI5NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fb2Zmc2NyZWVuQ2FudmFzZXNbaW5k
ZXhdKQotICAgICAgICAgICAgbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0gPSBPZmZzY3JlZW5D
YW52YXM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgV1RGTW92ZShtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMuYXQo
aW5kZXgpKSk7CisgICAgICAgICAgICBtX29mZnNjcmVlbkNhbnZhc2VzW2luZGV4XSA9IE9mZnNj
cmVlbkNhbnZhczo6Y3JlYXRlKCpleGVjdXRpb25Db250ZXh0KG1fbGV4aWNhbEdsb2JhbE9iamVj
dCksIFdURk1vdmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzLmF0KGluZGV4KSkpOwogCiAg
ICAgICAgIGF1dG8gb2Zmc2NyZWVuQ2FudmFzID0gbV9vZmZzY3JlZW5DYW52YXNlc1tpbmRleF0u
Z2V0KCk7CiAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKG9mZnNjcmVlbkNhbnZhcyk7CkBAIC0z
MzYwLDcgKzMzNTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlmICghbV9ydGNEYXRhQ2hhbm5l
bHNbaW5kZXhdKSB7CiAgICAgICAgICAgICBhdXRvIGRldGFjaGVkQ2hhbm5lbCA9IFdURk1vdmUo
bV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5hdChpbmRleCkpOwotICAgICAgICAgICAgbV9ydGNE
YXRhQ2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0
aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZGV0YWNoZWRD
aGFubmVsLT5pZGVudGlmaWVyLCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+bGFiZWwpLCBXVEZN
b3ZlKGRldGFjaGVkQ2hhbm5lbC0+b3B0aW9ucyksIGRldGFjaGVkQ2hhbm5lbC0+c3RhdGUpOwor
ICAgICAgICAgICAgbV9ydGNEYXRhQ2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNy
ZWF0ZSgqZXhlY3V0aW9uQ29udGV4dChtX2xleGljYWxHbG9iYWxPYmplY3QpLCBkZXRhY2hlZENo
YW5uZWwtPmlkZW50aWZpZXIsIFdURk1vdmUoZGV0YWNoZWRDaGFubmVsLT5sYWJlbCksIFdURk1v
dmUoZGV0YWNoZWRDaGFubmVsLT5vcHRpb25zKSwgZGV0YWNoZWRDaGFubmVsLT5zdGF0ZSk7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShtX3J0Y0RhdGFDaGFubmVsc1tp
bmRleF0uZ2V0KCkpOwpAQCAtMzM4NSw3ICszMzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0
byBpbWFnZURhdGFTaXplID0gbG9naWNhbFNpemU7CiAgICAgICAgIGltYWdlRGF0YVNpemUuc2Nh
bGUocmVzb2x1dGlvblNjYWxlKTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQml0bWFw
OjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUo
bV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIGNvbG9yU3BhY2UsIHJlc29sdXRpb25TY2FsZSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpleGVjdXRpb25Db250ZXh0KG1f
bGV4aWNhbEdsb2JhbE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCBjb2xvclNwYWNlLCByZXNvbHV0aW9uU2NhbGUpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
QEAgLTM2NTEsNyArMzY0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgICAgIGlmICghbV9jYW5DcmVhdGVET01PYmplY3QpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUo
QmxvYjo6ZGVzZXJpYWxpemUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9s
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3Ry
aW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgp
KTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKGV4ZWN1
dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0cmlu
ZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJsLT5z
dHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFN0cmluZ1RhZzogewog
ICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNhY2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcAppbmRleCBjM2E4NmY1YzRkM2MzOTk5NTQxOWNiMGE1MTU0MDg4N2E2
NjZkZGRjLi42NDliMjFhOTk1YzI3ODA4YWY2OGE5MDVkMWI5ZDU1MmVmOGI0ZjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgQUxXQVlTX0lO
TElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlw
dEFzc2VydGlvbihDaGkKICAgICAgICAgICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQt
Pm5leHRTaWJsaW5nKCksICpjaGlsZCk7CiAgICAgICAgICAgICBhdXRvIHN1YnRyZWVPYnNlcnZh
YmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgKmNoaWxkKTsKICAgICAgICAg
ICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRyZWVPYnNl
cnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxl
QnlSZWZQdHIpCi0gICAgICAgICAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVl
QnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgICAgICAgICB3aWxsQ3JlYXRlUG9zc2li
bHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoKmNoaWxkKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MjEwLDcgKzIxMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVO
b2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgfQogCiAgICAgaWYg
KHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxp
dHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0
cikKLSAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKCZjaGls
ZFRvUmVtb3ZlKTsKKyAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1v
dmFsKGNoaWxkVG9SZW1vdmUpOwogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oIWRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGRiYTYwMGNjNzE3OTU3Zjk4OWE2OTMzYmRmZDIyMWM2
ODU2YTdkZjUuLjQyZGFjZDJkZDVjZTNlNWY2MjMzM2EyMTYyY2MzNzY3NDZlOGZiODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTVdp
bmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRl
ICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3QuaCIKQEAgLTIxMCw3
ICsyMTEsNiBAQAogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIlNj
cmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKLSNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIK
QEAgLTg3MTYsOCArODcxNiw4IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZExvZ01lc3NhZ2UoY29uc3Qg
V1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2ZWwsIFZlCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBtZXNzYWdlTGV2ZWxGcm9t
V1RGTG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3NhZ2UgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2cs
IG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1haW5Xb3JsZEV4ZWNTdGF0ZSh3
ZWFrVGhpcy0+ZnJhbWUoKSkpOwotCisgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG1haW5X
b3JsZEdsb2JhbE9iamVjdCh3ZWFrVGhpcy0+ZnJhbWUoKSk7CisgICAgICAgIGF1dG8gbWVzc2Fn
ZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4obWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3ZlKGxvZ01lc3NhZ2VzKSwgZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgd2Vha1RoaXMtPmFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUo
bWVzc2FnZSkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCmluZGV4IDk1NDQ2Nzk0MzdmOGUxZTAxNDczY2I2YTcwY2Q1ZDA3MmZj
NzFjMzQuLjQ2MWI5OTc4YWQ5YjdlMTU3YTQ5MWMwN2UzYzllNzBhZjQyMWRkODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTU2LDcgKzU2
LDYgQEAKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgotI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRl
ci5oIgpAQCAtNTQzLDExICs1NDIsMTUgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBKU0M6OkpTR2xvYmFsT2JqZWN0KiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpnbG9iYWxPYmplY3QoKQogewotICAgIGlmIChpczxEb2N1bWVudD4o
KnRoaXMpKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Z2xvYmFsT2JqZWN0KG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpLCBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLmZyYW1lKCkpOworICAgIGlm
IChpczxEb2N1bWVudD4oKnRoaXMpKSB7CisgICAgICAgIGF1dG8gZnJhbWUgPSBkb3duY2FzdDxE
b2N1bWVudD4oKnRoaXMpLmZyYW1lKCk7CisgICAgICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5z
Y3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpIDogbnVsbHB0cjsK
KyAgICB9CiAKLSAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Omdsb2JhbE9iamVjdChkb3duY2FzdDxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsKKyAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU+KCp0aGlzKSkgeworICAgICAgICBhdXRvIHNjcmlwdCA9IGRvd25jYXN0PFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCk7CisgICAgICAgIHJldHVybiBz
Y3JpcHQgPyBzY3JpcHQtPmdsb2JhbFNjb3BlV3JhcHBlcigpIDogbnVsbHB0cjsKKyAgICB9CiAK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlci5jcHAKaW5kZXggYjQzOTdiNDZhZDc3ZWE4OTEwYTFmMjY3NTRjZjNiMTdmMWY5ZGIz
MC4uMWFiOTg1Mzc5OTNlYmU2NDA3NmM3MjVlZWE1ZWVkMjZiMWUxM2MxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvRnJhbWVUcmFjZXJzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9t
aXNlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCA5
ZGRmY2JiZjhiYjQ0OTdhYzcyZWI2OWIwYzA0NDczNGJlYjJhMDdiLi5kMWY5MjdkMWM1MTNjYWJl
ZWYzMWY3M2JkZjQ5ZjMwN2Y3ODZmYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC00OCw3ICs0
OCw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggOGFhZGFkMWZiYWVlMzg3ZTg5NzBhNjVmMWYy
OTdlZjllZDJhZjk4My4uNWY2MzFkZjU5NzYzODIxZWVlZDhkNTNlNzFkNTlhMjVhZjEwZDFhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFn
ZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgotI2luY2x1ZGUg
IlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTeXN0ZW1T
b3VuZE1hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtMTYw
LDE1ICsxNTksMTUgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmRpc2Nvbm5lY3RDbGll
bnQoKQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRkU2VsZlRvR2xvYmFsT2JqZWN0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAgIGF1dG8mIGxleGljYWxHbG9i
YWxPYmplY3QgPSAqZ2xvYmFsT2JqZWN0KHdvcmxkLCBtX2Zyb250ZW5kUGFnZSA/ICZtX2Zyb250
ZW5kUGFnZS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKTsKLSAgICBhdXRvJiB2bSA9IGxleGljYWxH
bG9iYWxPYmplY3Qudm0oKTsKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZnJvbnRl
bmRQYWdlIGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgZ2xvYmFs
T2JqZWN0J3MgcmV0dXJuIHZhbHVlIGlzIG5vbi1udWxsPworICAgIGF1dG8mIGdsb2JhbE9iamVj
dCA9ICptX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KHdv
cmxkKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKLQotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBnbG9iYWxPYmplY3QucHV0RGlyZWN0
KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJJbnNwZWN0b3JGcm9udGVuZEhv
c3QiKSwgdG9KUzxJRExJbnRlcmZhY2U8SW5zcGVjdG9yRnJvbnRlbmRIb3N0Pj4obGV4aWNhbEds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqdGhpcykpOworICAgIGdsb2JhbE9iamVjdC5wdXRE
aXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3RvckZyb250
ZW5kSG9zdCIpLCB0b0pTPElETEludGVyZmFjZTxJbnNwZWN0b3JGcm9udGVuZEhvc3Q+PihnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUu
ZXhjZXB0aW9uKCkpKQotICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxP
YmplY3QsIHNjb3BlLmV4Y2VwdGlvbigpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6OmxvYWRlZCgpCkBAIC01MDMsMTkgKzUwMiwyMCBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUNv
bnRleHRNZW51KFZlY3RvcjxJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OkNvbnRleHRNZW51SXRlbT4m
Jgogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudShFdmVudCYgZXZl
bnQsIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiYgaXRlbXMpCiB7CiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBtX2Zyb250ZW5kUGFnZSBp
cyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIGdsb2JhbE9iamVjdCdz
IHJldHVybiB2YWx1ZSBpcyBub24tbnVsbD8KICAgICBBU1NFUlQobV9mcm9udGVuZFBhZ2UpOwot
Ci0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpnbG9iYWxPYmplY3QoZGVidWdnZXJX
b3JsZCgpLCAmbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpKTsKLSAgICBhdXRvJiB2bSA9IGxl
eGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRvIHZhbHVlID0gbGV4aWNhbEdsb2JhbE9i
amVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIkluc3BlY3RvckZyb250ZW5kQVBJIikpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9
ICptX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCkuZ2xvYmFsT2JqZWN0KGRlYnVn
Z2VyV29ybGQoKSk7CisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKKyAgICBhdXRv
IHZhbHVlID0gZ2xvYmFsT2JqZWN0LmdldCgmZ2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJJbnNwZWN0b3JGcm9udGVuZEFQSSIpKTsKICAgICBBU1NFUlQodmFs
dWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc09iamVjdCgpKTsKICAgICBhdXRvKiBmcm9udGVuZEFQ
SU9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICAKKwogICAgIENvbnRleHRNZW51IG1lbnU7
CiAgICAgcG9wdWxhdGVDb250ZXh0TWVudShXVEZNb3ZlKGl0ZW1zKSwgbWVudSk7CiAKLSAgICBh
dXRvIG1lbnVQcm92aWRlciA9IEZyb250ZW5kTWVudVByb3ZpZGVyOjpjcmVhdGUodGhpcywgeyAm
bGV4aWNhbEdsb2JhbE9iamVjdCwgZnJvbnRlbmRBUElPYmplY3QgfSwgbWVudS5pdGVtcygpKTsK
KyAgICBhdXRvIG1lbnVQcm92aWRlciA9IEZyb250ZW5kTWVudVByb3ZpZGVyOjpjcmVhdGUodGhp
cywgeyAmZ2xvYmFsT2JqZWN0LCBmcm9udGVuZEFQSU9iamVjdCB9LCBtZW51Lml0ZW1zKCkpOwog
ICAgIG1fbWVudVByb3ZpZGVyID0gbWVudVByb3ZpZGVyLnB0cigpOwogICAgIG1fZnJvbnRlbmRQ
YWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5zaG93Q29udGV4dE1lbnUoZXZlbnQsIG1lbnVQ
cm92aWRlcik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAxODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkw
OWJjMmRkZDI4YmVhZmI0Li41YzViYjJhZWE4Mzk5MThiMDY5Nzc1ODgxY2UzYTM2OWE0MjhlNWI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcApAQCAtMjI4LDggKzIyOCwxMSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
cwogICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1l
bnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKKyAgICBp
ZiAoIXdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCi0gICAgICAgIGNvbnNv
bGVBZ2VudC0+ZnJhbWVXaW5kb3dEaXNjYXJkZWQod2luZG93KTsKKyAgICAgICAgY29uc29sZUFn
ZW50LT5mcmFtZVdpbmRvd0Rpc2NhcmRlZCgqd2luZG93KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBkYWE2MmYyMDVlODA5
YTY4MzI4ZGU3MjJkMzI0MTVmMzNjMjA0MGRlLi42NmFjOTJhOTY2YmQwZjBlNTU1ZDRkMWJjMDAy
OGUwZWNjNjc2MjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2Vi
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMjcsOCArMjcsNiBAQAogI2luY2x1ZGUgIldl
YkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiQ29tbWFuZExpbmVBUElNb2R1
bGUuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjksMzMgKzY3LDIxIEBAIHZvaWQgV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaWRD
cmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBJbnNwZWN0b3I6OkluamVjdGVkCiAgICAgQ29tbWFu
ZExpbmVBUElNb2R1bGU6OmluamVjdElmTmVlZGVkKHRoaXMsIGluamVjdGVkU2NyaXB0KTsKIH0K
IAotdm9pZCBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNG
b3IoRE9NV2luZG93KiB3aW5kb3cpCit2b2lkIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlz
Y2FyZEluamVjdGVkU2NyaXB0c0ZvcihET01XaW5kb3cmIHdpbmRvdykKIHsKICAgICBpZiAobV9z
Y3JpcHRTdGF0ZVRvSWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8
bG9uZz4gaWRzVG9SZW1vdmU7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IG1faWRUb0luamVj
dGVkU2NyaXB0KSB7Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QgPSBpdC52YWx1ZS5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgaWYgKHdpbmRvdyAhPSBk
b21XaW5kb3dGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIG1fc2NyaXB0U3RhdGVUb0lkLnJlbW92ZShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgaWRzVG9SZW1vdmUuYXBwZW5kKGl0LmtleSk7Ci0gICAgfQotCi0g
ICAgZm9yIChhdXRvJiBpZCA6IGlkc1RvUmVtb3ZlKQotICAgICAgICBtX2lkVG9JbmplY3RlZFNj
cmlwdC5yZW1vdmUoaWQpOwotCi0gICAgLy8gTm93IHJlbW92ZSBzY3JpcHQgc3RhdGVzIHRoYXQg
aGF2ZSBpZCBidXQgbm8gaW5qZWN0ZWQgc2NyaXB0LgotICAgIFZlY3RvcjxKU0M6OkpTR2xvYmFs
T2JqZWN0Kj4gc2NyaXB0U3RhdGVzVG9SZW1vdmU7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBpdCA6
IG1fc2NyaXB0U3RhdGVUb0lkKSB7Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QgPSBpdC5rZXk7Ci0gICAgICAgIGlmICh3aW5kb3cgPT0gZG9tV2luZG93
RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSkKLSAgICAgICAgICAgIHNjcmlwdFN0
YXRlc1RvUmVtb3ZlLmFwcGVuZChsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICB9CisgICAgYXV0
byogZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAg
ICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgOiBzY3Jp
cHRTdGF0ZXNUb1JlbW92ZSkKLSAgICAgICAgbV9zY3JpcHRTdGF0ZVRvSWQucmVtb3ZlKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIG1faWRUb0luamVjdGVkU2NyaXB0LnJlbW92ZUlmKFtkb2N1
bWVudF0oYXV0byYgZW50cnkpIHsKKyAgICAgICAgcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHQoZW50
cnkudmFsdWUuZ2xvYmFsT2JqZWN0KCkpID09IGRvY3VtZW50OworICAgIH0pOworICAgIG1fc2Ny
aXB0U3RhdGVUb0lkLnJlbW92ZUlmKFtkb2N1bWVudF0oYXV0byYgZW50cnkpIHsKKyAgICAgICAg
cmV0dXJuIGV4ZWN1dGlvbkNvbnRleHQoZW50cnkua2V5KSA9PSBkb2N1bWVudDsKKyAgICB9KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4IDE2MTE5ZTU4NmY2ZDI0ZjNl
MjUwMjQ2OWQ5MjQ5ZTE4NWI2MTBlM2EuLjRmMDQ2ZWU4Yzk3N2VhZTQ5ZWJjYjUwZGY4NWJkZjEw
YWFjNGIxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlz
Y29ubmVjdCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzY2FyZEluamVjdGVkU2NyaXB0cygpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBkaXNjYXJkSW5qZWN0ZWRTY3JpcHRzRm9yKERPTVdpbmRvdyop
OworICAgIHZvaWQgZGlzY2FyZEluamVjdGVkU2NyaXB0c0ZvcihET01XaW5kb3cmKTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50
LmNwcAppbmRleCBhNDQ3ZjcwNTM5ZTA2ZTRjODMwNDI3NmZjYjRjZTFhNTg1MTZlYWU4Li45MTky
YmE5ZDg0MTJhYjZlN2NhNGZlMGZiZWNiZDAyMzU0YTQ5Y2VkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0xMTQsMjEgKzExNCwyMSBAQCBFeHBlY3RlZDxSZWY8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+
PiwgUHJvdAogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlBhZ2UgZG9tYWluIG11c3Qg
YmUgZW5hYmxlZCJfcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pjo6Y3JlYXRlKCk7Ci0gICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGF1dG8qIGRv
Y3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CisgICAgbV9p
bnNwZWN0ZWRQYWdlLmZvckVhY2hGcmFtZShbJl0oRnJhbWUmIGZyYW1lKSB7CisgICAgICAgIGF1
dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAg
ICAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8mIGhvc3QgPSBkb2N1bWVudExvYWRlci0+YXBw
bGljYXRpb25DYWNoZUhvc3QoKTsKICAgICAgICAgU3RyaW5nIG1hbmlmZXN0VVJMID0gaG9zdC5h
cHBsaWNhdGlvbkNhY2hlSW5mbygpLm1hbmlmZXN0LnN0cmluZygpOwogICAgICAgICBpZiAoIW1h
bmlmZXN0VVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKFByb3Rv
Y29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdDo6Y3JlYXRlKCkKLSAgICAg
ICAgICAgICAgICAuc2V0RnJhbWVJZChwYWdlQWdlbnQtPmZyYW1lSWQoZnJhbWUpKQorICAgICAg
ICAgICAgICAgIC5zZXRGcmFtZUlkKHBhZ2VBZ2VudC0+ZnJhbWVJZCgmZnJhbWUpKQogICAgICAg
ICAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAgICAgICAgICAgICAu
c2V0U3RhdHVzKHN0YXRpY19jYXN0PGludD4oaG9zdC5zdGF0dXMoKSkpCiAgICAgICAgICAgICAg
ICAgLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KLSAgICB9CisgICAgfSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBlYTU2ODAwNTVhNGY0OWNlMjFiOTQzNjIx
NDJjYTk4YzNiZDY2ZTQ2Li44MzIyYzhkYjJhOGE3ZGE5YjcxNDk0MTMxY2M1NjRhNmNiZDMwMjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgIkpTRXhlY1N0
YXRlLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiUGF0aDJELmgi
Ci0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTdHJpbmdBZGFwdG9ycy5oIgog
I2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTEJ1ZmZl
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAppbmRleCAzODA1Zjg0MjQ1ZjZjYjczYzQ1ODQ0MzY0ZDU0ZjgyMmI2YmVi
MjZkLi43YTc5MGJiMjNjOGYzN2FmNTdlNDI4NGIzNjdjYWQ5ZDY3OWE0MzRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNw
cApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nU2VjdXJpdHkuaCIKKyNp
bmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKQEAgLTk2
LDcgKzk3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgotI2luY2x1ZGUgIlNjcmlw
dFN0YXRlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlbGVj
dG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdGF0aWNO
b2RlTGlzdC5oIgpAQCAtMTE2MywyMCArMTE2NCwxNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
Ojpmb2N1c05vZGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9ub2RlVG9Gb2N1
cyk7Ci0KLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fbm9kZVRvRm9jdXMuZ2V0KCk7Ci0gICAg
bV9ub2RlVG9Gb2N1cyA9IG51bGxwdHI7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1
bWVudCgpLmZyYW1lKCk7CisgICAgYXV0byBub2RlID0gc3RkOjpleGNoYW5nZShtX25vZGVUb0Zv
Y3VzLCBudWxscHRyKTsKKyAgICBhdXRvIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgp
OwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKTsKLSAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVj
dGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSBtYWlu
V29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKTsKKyAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0gbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3IoJmdsb2JhbE9iamVjdCk7CiAg
ICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChub2RlQXNTY3JpcHRWYWx1ZSgqc2NyaXB0
U3RhdGUsIG5vZGUuZ2V0KCkpKTsKKyAgICBpbmplY3RlZFNjcmlwdC5pbnNwZWN0T2JqZWN0KG5v
ZGVBc1NjcmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgbm9kZS5nZXQoKSkpOwogfQogCiB2b2lkIElu
c3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQsIHVuc2lnbmVkKQpAQCAtMTg5Miw3ICsxODkwLDExIEBAIFJlZjxQcm90b2Nv
bDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JF
dmVudExpc3RlbmVyCiAKICAgICAgICAgaWYgKGRvY3VtZW50KSB7CiAgICAgICAgICAgICBoYW5k
bGVyT2JqZWN0ID0gc2NyaXB0TGlzdGVuZXIuZW5zdXJlSlNGdW5jdGlvbigqZG9jdW1lbnQpOwot
ICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gV2ViQ29yZTo6Z2xvYmFsT2JqZWN0KHNjcmlwdExp
c3RlbmVyLmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOworICAgICAgICAgICAgaWYgKGF1dG8g
ZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
aHkgZG8gd2UgbmVlZCB0aGUgY2FuRXhlY3V0ZVNjcmlwdHMgY2hlY2sgaGVyZT8KKyAgICAgICAg
ICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9F
eGVjdXRlU2NyaXB0KSkKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gZnJhbWUt
PnNjcmlwdCgpLmdsb2JhbE9iamVjdChzY3JpcHRMaXN0ZW5lci5pc29sYXRlZFdvcmxkKCkpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGhhbmRsZXJPYmplY3QgJiYg
Z2xvYmFsT2JqZWN0KSB7CkBAIC0yODQ2LDEyICsyODQ4LDEyIEBAIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoTm9k
ZSogbm9kCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvJiBzdGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoZnJhbWUpOwotICAgIGF1dG8gaW5qZWN0
ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcigmc3Rh
dGUpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IG1haW5Xb3JsZEdsb2JhbE9iamVjdCgqZnJh
bWUpOworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcigmZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBpbmpl
Y3RlZFNjcmlwdC53cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKHN0YXRlLCBub2RlKSwgb2Jq
ZWN0R3JvdXApOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG5vZGVBc1Nj
cmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgbm9kZSksIG9iamVjdEdyb3VwKTsKIH0KIAogTm9kZSog
SW5zcGVjdG9yRE9NQWdlbnQ6OnNjcmlwdFZhbHVlQXNOb2RlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNjI4NmI2NTIxMjZlMGRkMTMzZDJjMjRlNDdmY2Q3
Y2RjNzM3NmE3My4uNWQ1MTJlNzhlMjAwMzI4OGQwMTUzMTM2ODdlNjgzODk5MDhiNzNlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUg
IkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4KQEAgLTYxNywxNCArNjE3LDE3IEBAIHZv
aWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKGNvbnN0IFN0cmluZyYgc2Vj
dXJpdHlPcmlnaW4sIGNvbnN0IFN0CiAgICAgaWYgKCFnZXREb2N1bWVudEFuZElEQkZhY3RvcnlG
cm9tRnJhbWVPclNlbmRGYWlsdXJlKGZyYW1lLCBkb2N1bWVudCwgaWRiRmFjdG9yeSwgY2FsbGJh
Y2spKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3JsZEV4
ZWNTdGF0ZShmcmFtZSkpOwotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UgPSBr
ZXlSYW5nZSA/IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKCprZXlSYW5nZSkgOiBudWxscHRyOwot
ICAgIGlmIChrZXlSYW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsKLSAgICAgICAgY2FsbGJhY2stPnNl
bmRGYWlsdXJlKCJDb3VsZCBub3QgcGFyc2Uga2V5IHJhbmdlLiJfcyk7Ci0gICAgICAgIHJldHVy
bjsKKyAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlOworICAgIGlmIChrZXlSYW5n
ZSkgeworICAgICAgICBpZGJLZXlSYW5nZSA9IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKCprZXlS
YW5nZSk7CisgICAgICAgIGlmICghaWRiS2V5UmFuZ2UpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
LT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IHBhcnNlIGtleSByYW5nZS4iX3MpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmPERhdGFMb2FkZXI+IGRhdGFM
b2FkZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2spLCBp
bmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIFdURk1vdmUoaWRiS2V5
UmFuZ2UpLCBza2lwQ291bnQsIHBhZ2VTaXplKTsKKyAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3IoJm1haW5Xb3JsZEdsb2Jh
bE9iamVjdCgqZnJhbWUpKTsKKyAgICBhdXRvIGRhdGFMb2FkZXIgPSBEYXRhTG9hZGVyOjpjcmVh
dGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2spLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3Rv
cmVOYW1lLCBpbmRleE5hbWUsIFdURk1vdmUoaWRiS2V5UmFuZ2UpLCBza2lwQ291bnQsIHBhZ2VT
aXplKTsKICAgICBkYXRhTG9hZGVyLT5zdGFydChpZGJGYWN0b3J5LCAmZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCAy
MjNhNjc2N2JlMjcxZWU0ZDIyZGVkMWQ2YmU2MGNhNzA3ODE3YzgxLi4zY2ViNGI0N2YxMDY4YTBh
ZmVhZjAwZjE3OWMyODAwYzQ3NmJkNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC01MSw2ICs1
MSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2lu
Y2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKICNp
bmNsdWRlICJKU1dlYlNvY2tldC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCkBAIC02
NCw3ICs2NSw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAi
U2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29k
ZXIuaCIKQEAgLTEwNDMsMTEgKzEwNDMsMTEgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVm
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNwZWN0b3JOZXR3b3JrQWcKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgZnJh
bWUgb2Ygd2ViIHNvY2tldCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9zKTsKIAotICAgIGF1dG8mIHN0
YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSk7Ci0gICAgYXV0byBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZzdGF0ZSk7Cisg
ICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkR2xvYmFsT2JqZWN0KCpmcmFtZSk7Cisg
ICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVk
U2NyaXB0Rm9yKCZnbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVCghaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKTsKIAotICAgIGF1dG8gb2JqZWN0ID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVj
dCh3ZWJTb2NrZXRBc1NjcmlwdFZhbHVlKHN0YXRlLCB3ZWJTb2NrZXQpLCBvYmplY3RHcm91cCk7
CisgICAgYXV0byBvYmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHdlYlNvY2tldEFz
U2NyaXB0VmFsdWUoZ2xvYmFsT2JqZWN0LCB3ZWJTb2NrZXQpLCBvYmplY3RHcm91cCk7CiAgICAg
aWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiSW50ZXJuYWwgZXJy
b3I6IHVuYWJsZSB0byBjYXN0IFdlYlNvY2tldCIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRl
eCBiN2M2YjBlYjIzNGZiMTAzMzllZDFhZmQyOGE1OTcyYWExNDA0MTVmLi4xMTgyZmEzZWQ3NDJl
NzA4OTg4OGM2N2JhYWE1YTJjNmIwNDA4Y2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTQ3
LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJQYWdlRGVidWdnZXIuaCIKICNpbmNsdWRlICJQYWdlSGVh
cEFnZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRl
LmgiCiAjaW5jbHVkZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29u
c29sZUFnZW50LmgiCiAjaW5jbHVkZSAiV2ViRGVidWdnZXJBZ2VudC5oIgpAQCAtNjYsNyArNjUs
NiBAQAogI2luY2x1ZGUgIlJ1bkxvb3BPYnNlcnZlci5oIgogI2VuZGlmCiAKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAtMjkwLDcgKzI4OCwx
MyBAQCBkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZXN0YW1wKCkKICAgICByZXR1
cm4gbV9lbnZpcm9ubWVudC5leGVjdXRpb25TdG9wd2F0Y2goKS5lbGFwc2VkVGltZSgpLnNlY29u
ZHMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydEZyb21Db25zb2xl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitzdGF0aWMg
RnJhbWUqIGZyYW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBh
dXRvIGNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0KGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCkuZnJh
bWUoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnRG
cm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCiB7CiAgICAgLy8gQWxsb3cgZHVwbGljYXRlIHVubmFtZWQgcHJvZmlsZXMuIERp
c2FsbG93IGR1cGxpY2F0ZSBuYW1lZCBwcm9maWxlcy4KICAgICBpZiAoIXRpdGxlLmlzRW1wdHko
KSkgewpAQCAtMzEwLDcgKzMxNCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3Rh
cnRGcm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTCiAgICAgaWYg
KCFtX3RyYWNraW5nICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5pc0VtcHR5KCkp
CiAgICAgICAgIHN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVyZSgpOwogCi0gICAgbV9wZW5kaW5nQ29u
c29sZVByb2ZpbGVSZWNvcmRzLmFwcGVuZChjcmVhdGVSZWNvcmRFbnRyeShUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YSh0aXRsZSksIFRpbWVsaW5lUmVjb3Jk
VHlwZTo6Q29uc29sZVByb2ZpbGUsIHRydWUsIGZyYW1lRnJvbUV4ZWNTdGF0ZShleGVjKSkpOwor
ICAgIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5hcHBlbmQoY3JlYXRlUmVjb3JkRW50
cnkoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEodGl0bGUp
LCBUaW1lbGluZVJlY29yZFR5cGU6OkNvbnNvbGVQcm9maWxlLCB0cnVlLCBmcmFtZShnbG9iYWxP
YmplY3QpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RvcEZyb21Db25z
b2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtNjc2LDcg
KzY4MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkRmlyZU9ic2VydmVyQ2Fs
bGJhY2soKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Q
cm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkJyZWFr
cG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgLypiYXRjaElkKi8sIHVuc2lnbmVkIHNh
bXBsZUlkLCBKU0M6OkpTVmFsdWUpCiB7Ci0gICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbklELCBzYW1wbGVJZCksIFRpbWVs
aW5lUmVjb3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBmcmFtZUZyb21FeGVjU3RhdGUobGV4
aWNhbEdsb2JhbE9iamVjdCkpOworICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rv
cnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YShhY3Rpb25JRCwgc2FtcGxlSWQpLCBUaW1lbGluZVJl
Y29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWUobGV4aWNhbEdsb2JhbE9iamVjdCkp
OwogfQogCiBzdGF0aWMgUHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGUgdG9Qcm90b2NvbChU
aW1lbGluZVJlY29yZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCBiZGZmODQzNGRiZWY4YzU0ODViMTUw
NmVkMjA4YTAxYzllY2FkMjI2Li42N2Y4ZmI1NWI2MDUyNzc2MGZlZWFhZmY3YzM0OTM3NjQzYmU4
M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNv
bGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25z
b2xlQWdlbnQuY3BwCkBAIC0zMiwxNCArMzIsMTIgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
LSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFu
YWdlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1NjcmlwdEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CkBAIC00OSwxOSArNDcsMTQgQEAgV2ViQ29uc29sZUFnZW50OjpXZWJDb25zb2xlQWdlbnQoV2Vi
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogewogfQogCi1XZWJDb25zb2xlQWdlbnQ6On5XZWJDb25z
b2xlQWdlbnQoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgV2ViQ29uc29sZUFnZW50OjpmcmFtZVdpbmRv
d0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKK3ZvaWQgV2ViQ29uc29sZUFnZW50OjpmcmFt
ZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cmIHdpbmRvdykKIHsKLSAgICBmb3IgKGF1dG8mIG1l
c3NhZ2UgOiBtX2NvbnNvbGVNZXNzYWdlcykgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbWVzc2FnZS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAg
IGlmICghbGV4aWNhbEdsb2JhbE9iamVjdCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBpZiAoZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSAhPSB3aW5k
b3cpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbWVzc2FnZS0+Y2xlYXIoKTsKKyAg
ICBpZiAoYXV0byogZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQoKSkgeworICAgICAgICBmb3Ig
KGF1dG8mIG1lc3NhZ2UgOiBtX2NvbnNvbGVNZXNzYWdlcykgeworICAgICAgICAgICAgaWYgKGV4
ZWN1dGlvbkNvbnRleHQobWVzc2FnZS0+Z2xvYmFsT2JqZWN0KCkpID09IGRvY3VtZW50KQorICAg
ICAgICAgICAgICAgIG1lc3NhZ2UtPmNsZWFyKCk7CisgICAgICAgIH0KICAgICB9Ci0KICAgICBz
dGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImPihtX2luamVjdGVkU2NyaXB0TWFu
YWdlcikuZGlzY2FyZEluamVjdGVkU2NyaXB0c0Zvcih3aW5kb3cpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaAppbmRleCA5MGM3
MDhlOWI4MDE3MTJiNjU5NDA3YWUwYzFkNjY4NjhhZWE5NGE4Li5hNjE0NzUyZTkwY2RlYWUxMzg5
MTZmYmY4MGVmODU1ODRiN2E1MTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuaD4KIApAQCAtMzYsMTQgKzM1LDEyIEBAIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBjbGFzcyBXZWJDb25zb2xlQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYkNvbnNvbGVBZ2VudCk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgV2ViQ29uc29sZUFnZW50KFdlYkFnZW50Q29udGV4dCYpOwotICAgIH5X
ZWJDb25zb2xlQWdlbnQoKSBvdmVycmlkZTsKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJD
b25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7CiAKK3B1YmxpYzoKICAgICAvLyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24KLSAgICB2b2lkIGZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRv
dyopOworICAgIHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWQoRE9NV2luZG93Jik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRpdEFnZW50LmNwcAppbmRleCBk
NTEwZGMxNzA1OGUxMmJhZGU5YWUwOTJkODAxOWVhODZjOGQzMzRmLi4xNzRkNTExOTM0Yjk5N2Ix
YmEwZjk1Y2FiZTFjMzM2OTA4NzhlZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5jcHAKQEAgLTI5LDEyICsyOSwx
MiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXVk
aXRSZXNvdXJjZXNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2lu
Y2x1ZGUgIkpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNJbnNwZWN0b3JBdWRpdERPTU9iamVjdC5oIgogI2luY2x1ZGUgIkpTSW5zcGVjdG9yQXVkaXRS
ZXNvdXJjZXNPYmplY3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNv
bGVDbGllbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2Ny
aXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+
CkBAIC02MCw5ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFBhZ2VBdWRpdEFnZW50OjppbmplY3Rl
ZFNjcmlwdEZvckV2YWwoc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVuCiB7CiAgICAgaWYgKGV4
ZWN1dGlvbkNvbnRleHRJZCkKICAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigp
LmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlvbkNvbnRleHRJZCk7Ci0KLSAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0
ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCku
aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxkR2xvYmFsT2JqZWN0KG1faW5z
cGVjdGVkUGFnZS5tYWluRnJhbWUoKSkpOwogfQogCiBJbmplY3RlZFNjcmlwdCBQYWdlQXVkaXRB
Z2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRJ
ZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1NWQ5NTE4
NDk0MTk1Yjk2ZGYxNjVhOTRjMWMyOTYzYWRjZWI4Mzk1Li44MmI1ZDI0NGI2Mjk2NDYxNWZjNGMx
MjM3MjM1MTRmMjY4MWIzOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTM4LDExICszOCwx
MSBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93
Q3VzdG9tLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1
cmVFbXVsYXRpb25TY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2Ny
aXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+
CkBAIC0xMzgsMTAgKzEzOCw4IEBAIHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRB
Y3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iCiAKIEluamVjdGVk
U2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGlt
ZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKLSAgICBpZiAo
IWV4ZWN1dGlvbkNvbnRleHRJZCkgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3Jp
cHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgp
KTsKLSAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0
Rm9yKHNjcmlwdFN0YXRlKTsKLSAgICB9CisgICAgaWYgKCFleGVjdXRpb25Db250ZXh0SWQpCisg
ICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcigm
bWFpbldvcmxkR2xvYmFsT2JqZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSkpOwogCiAg
ICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdE1hbmFnZXIo
KS5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0SWQpOwogICAgIGlmIChpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAKaW5kZXggYmI0ZjZiYTdj
MmNjNjE4NTg1ODcxOTZjOTczYTJjMzg2Zjg4ZjRmOC4uZDA2OTBkNDRkZTNjZWFlZDlkYzMyNWE4
YmJmMWJlZDdiODdmYmZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcApAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIldlYlNv
Y2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VSdW50aW1lQWdlbnQuY3Bw
CmluZGV4IGIzMmYzZjY5OWMyZDJhMzc3Mjg5NzYwYjI0NWFjODE3ODQxMDI0NTguLmRlNTY4OWFh
MzM0NTJhZmQ5NWEzMjkyYWIxODA4YWE5NWUxZjZiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHAKQEAg
LTM3LDExICszNywxMCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
UGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUg
IkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
U2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KQEAgLTkxLDcgKzkw
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gUGFnZVJ1bnRpbWVBZ2VudDo6ZGlz
YWJsZSgpCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKEZyYW1lJiBmcmFt
ZSkKIHsKICAgICAvLyBFbnN1cmUgZXhlY3V0aW9uIGNvbnRleHQgaXMgY3JlYXRlZCBmb3IgdGhl
IGZyYW1lIGV2ZW4gaWYgaXQgZG9lc24ndCBoYXZlIHNjcmlwdHMuCi0gICAgbWFpbldvcmxkRXhl
Y1N0YXRlKCZmcmFtZSk7CisgICAgbWFpbldvcmxkR2xvYmFsT2JqZWN0KGZyYW1lKTsKIH0KIAog
dm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUm
IGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMTA2LDggKzEwNSw3IEBAIHZvaWQg
UGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFt
ZSwgRE9NV3JhcHBlcldvcmxkCiBJbmplY3RlZFNjcmlwdCBQYWdlUnVudGltZUFnZW50Ojppbmpl
Y3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgc3Rk
OjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1
dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkgewotICAgICAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgm
bV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICAgICAgSW5qZWN0ZWRTY3JpcHQgcmVz
dWx0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3Rh
dGUpOworICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIoKS5pbmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxkR2xvYmFsT2JqZWN0KG1faW5zcGVjdGVk
UGFnZS5tYWluRnJhbWUoKSkpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc05vVmFsdWUoKSkKICAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBtYWluIHdvcmxkIGV4ZWN1
dGlvbiBjb250ZXh0IG5vdCBmb3VuZCJfczsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEz
NSwyNSArMTMzLDI1IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6cmVwb3J0RXhlY3V0aW9uQ29u
dGV4dENyZWF0aW9uKCkKICAgICBpZiAoIXBhZ2VBZ2VudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZm9yIChhdXRvKiBmcmFtZSA9ICZtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYgKCFm
cmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQp
KQotICAgICAgICAgICAgY29udGludWU7CisgICAgbV9pbnNwZWN0ZWRQYWdlLmZvckVhY2hGcmFt
ZShbJl0oRnJhbWUmIGZyYW1lKSB7CisgICAgICAgIGlmICghZnJhbWUuc2NyaXB0KCkuY2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQorICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGF1dG8gZnJhbWVJZCA9IHBhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSk7Cisg
ICAgICAgIGF1dG8gZnJhbWVJZCA9IHBhZ2VBZ2VudC0+ZnJhbWVJZCgmZnJhbWUpOwogCiAgICAg
ICAgIC8vIEFsd2F5cyBzZW5kIHRoZSBtYWluIHdvcmxkIGZpcnN0LgotICAgICAgICBhdXRvKiBt
YWluR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhlY1N0YXRlKGZyYW1lKTsKLSAgICAgICAgbm90
aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgbWFpbkdsb2JhbE9iamVjdCwgbWFpblRocmVhZE5v
cm1hbFdvcmxkKCkpOworICAgICAgICBhdXRvJiBtYWluR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxk
R2xvYmFsT2JqZWN0KGZyYW1lKTsKKyAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJ
ZCwgJm1haW5HbG9iYWxPYmplY3QsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIAotICAgICAg
ICBmb3IgKGF1dG8mIGpzV2luZG93UHJveHkgOiBmcmFtZS0+d2luZG93UHJveHkoKS5qc1dpbmRv
d1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgICAgIGZvciAoYXV0byYganNXaW5kb3dQcm94eSA6
IGZyYW1lLndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94aWVzQXNWZWN0b3IoKSkgewogICAgICAg
ICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0ganNXaW5kb3dQcm94eS0+d2luZG93KCk7Ci0gICAg
ICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09IG1haW5HbG9iYWxPYmplY3QpCisgICAgICAgICAg
ICBpZiAoZ2xvYmFsT2JqZWN0ID09ICZtYWluR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IGRvd25jYXN0
PERPTVdpbmRvdz4oanNXaW5kb3dQcm94eS0+d3JhcHBlZCgpKS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpOwogICAgICAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgZ2xv
YmFsT2JqZWN0LCBqc1dpbmRvd1Byb3h5LT53b3JsZCgpLCAmc2VjdXJpdHlPcmlnaW4pOwogICAg
ICAgICB9Ci0gICAgfQorICAgIH0pOwogfQogCiBzdGF0aWMgUHJvdG9jb2w6OlJ1bnRpbWU6OkV4
ZWN1dGlvbkNvbnRleHRUeXBlIHRvUHJvdG9jb2woRE9NV3JhcHBlcldvcmxkOjpUeXBlIHR5cGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDhmN2UxNWVkOTVmMWM5MjJmNGU0YjFlOWYwODRm
MDkzMWUxMTg4OWQuLjFhOTdkNTI1YTk3ZTI5NjhmNjcyZWVhYTg2MzU1ZDdlNjNlMzZiZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1
ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV29ya2VyQXVkaXRBZ2VudC5oIgogCi0jaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUg
Ildvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVk
U2NyaXB0TWFuYWdlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4K
QEAgLTU1LDcgKzU1LDkgQEAgSW5qZWN0ZWRTY3JpcHQgV29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0
ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXIKICAgICAgICAgcmV0dXJu
IEluamVjdGVkU2NyaXB0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFu
YWdlcigpLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX2dsb2JhbFNjb3BlKSk7Cisg
ICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBtX2dsb2JhbFNjb3BlLnNjcmlwdCgpIGlzIG5v
bi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgZ2xvYmFsU2NvcGVXcmFwcGVy
KCkgaXMgbm9uLW51bGw/CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVj
dGVkU2NyaXB0Rm9yKG1fZ2xvYmFsU2NvcGUuc2NyaXB0KCktPmdsb2JhbFNjb3BlV3JhcHBlcigp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cAppbmRleCBkNDY4NDNmZDZjYjgwMGRhYmU1MTUxN2NmYTEwNDYwZmNjN2U0NWZiLi5kODM0ZjIw
MDJkMGZhM2ZlZjNkYTk5N2U1YzEzYjQzZjZkNmUzYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFn
ZW50LmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldvcmtlckRlYnVnZ2VyQWdlbnQuaCIKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5j
bHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29s
ZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgpAQCAtNjAs
NyArNjAsOSBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNj
cmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAgICAgICByZXR1cm4gSW5qZWN0
ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCku
aW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fZ2xvYmFsU2NvcGUpKTsKKyAgICAvLyBG
SVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZ2xvYmFsU2NvcGUuc2NyaXB0KCkgaXMgbm9uLW51bGw/
CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBnbG9iYWxTY29wZVdyYXBwZXIoKSBpcyBu
b24tbnVsbD8KKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3Jp
cHRGb3IobV9nbG9iYWxTY29wZS5zY3JpcHQoKS0+Z2xvYmFsU2NvcGVXcmFwcGVyKCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcAppbmRleCA1
ODBkYzBhOTNiMzY3NzgxZjcyODk5NWRiMWFlZGJlYjM3YzEyYmEyLi42MTA3NTY4MmI3ZDY3OGY3
YTM3M2I3ZTU1MjEzOGQxMTg1NmQ2ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1bnRpbWVBZ2VudC5jcHAKQEAg
LTMyLDggKzMyLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrZXJSdW50
aW1lQWdlbnQuaCIKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KIApAQCAt
NTgsNyArNTgsOSBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJSdW50aW1lQWdlbnQ6OmluamVjdGVk
U2NyaXB0Rm9yRXZhbChQcm90b2NvbDo6RXJyb3JTdHJpbmcmCiAgICAgICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIo
KS5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV9nbG9iYWxTY29wZSkpOworICAgIC8v
IEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgbV9nbG9iYWxTY29wZS5zY3JpcHQoKSBpcyBub24tbnVs
bD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIGdsb2JhbFNjb3BlV3JhcHBlcigpIGlz
IG5vbi1udWxsPworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNj
cmlwdEZvcihtX2dsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="473424"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447738</attachid>
            <date>2021-12-21 11:28:48 -0800</date>
            <delta_ts>2021-12-21 11:28:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234548-20211221112847.patch</filename>
            <type>text/plain</type>
            <size>78053</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJiYTQ5ZjM1OGNkYzJm
YTY3OGI5ZTM3ZjM4OTIzMjI3MDE5Mzk4My4uOTJjNDRjM2YxOGNiMWY5MTc5MGEwMzVlYzg4ODEw
YjkyYjMzNzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAyMS0xMi0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2NyaXB0U3RhdGUuaC9jcHAg
aXMgYSByZW1uYW50IG9mIEphdmFTY3JpcHQgZW5naW5lIGFic3RyYWN0aW9uIHRoYXQgY2FuIGJl
IHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAg
U2NyaXB0U3RhdGUuaC9jcHAgaXMgZmlsZSBsZWZ0IG92ZXIgZnJvbSB3aGVuIHdlIGhhZCBhIGxh
eWVyIHRvIGFic3RyYWN0CisgICAgICAgIEphdmFTY3JpcHQgYmluZGluZyBhbmQgdXNhZ2UgaW4g
V2ViQ29yZSBzbyBpdCBjb3VsZCB3b3JrIHdpdGggYm90aCBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBhbmQgR29vZ2xlJ3MgVjggZW5naW5lLiBXZSBoYXZlbid0IG5lZWRlZCB0aGF0IGZvciB5ZWFy
cywgYW5kIHN0cmlwcGluZyBhd2F5IHNvbWUKKyAgICAgICAgb2YgdGhlIGxheWVycyBtaWdodCBo
ZWxwIHVzIG1ha2UgY29kZSBtb3JlIHJlYWRhYmxlIGFuZCBwZXJoYXBzIGV2ZW4gbm90aWNlIHdh
eXMKKyAgICAgICAgdG8gbWFrZSBpdCBtb3JlIGVmZmljaWVudC4gRm9yIG5vdywgdGhpcyBwYXRj
aCByZW1vdmVzIHRoZSBmdW5jdGlvbnMgZnJvbQorICAgICAgICBTY3JpcHRTdGF0ZS5oL2NwcCBh
bmQgbW92ZXMgdGhlbSB0byBtb3JlIHN1aXRhYmxlIHBsYWNlcywgc2ltcGxpZnlpbmcgaW4gdGhl
IHByb2Nlc3MuCisKKyAgICAgICAgQWxzbyBiZWdpbiB0byBqdXN0IGNhbGwgZ2xvYmFsIG9iamVj
dHMgImdsb2JhbCBvYmplY3QiLCBhbmQgbm90ICJzY3JpcHQgc3RhdGUiLgorCisgICAgICAgICog
SGVhZGVycy5jbWFrZTogUmVtb3ZlZCBTY3JpcHRTdGF0ZS5oLgorCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0
U3RhdGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6
IERpdHRvLgorCisgICAgICAgICogU291cmNlcy50eHQ6IFJlbW92ZWQgU2NyaXB0U3RhdGUuY3Bw
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBT
Y3JpcHRTdGF0ZS5oIGFuZCAuY3BwLgorICAgICAgICBBbHNvIGFsbG93ZWQgdGhlIHNjcmlwdCB0
byBzb3J0IHRoZSBmaWxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFpbldvcmxkR2xvYmFsT2JqZWN0KTogUmVuYW1l
ZCB0aGUgbWFpbldvcmxkRXhlY1N0YXRlIGZ1bmN0aW9uIGFuZAorICAgICAgICBtb3ZlZCBpdCBo
ZXJlIGZyb20gU2NyaXB0U3RhdGUuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmg6IFR3ZWFrZWQgZm9ybWF0dGluZyBvZiB0aGUgaGVhZGVyLiBBZGRlZCB0aGUK
KyAgICAgICAgbWFpbldvcmxkR2xvYmFsT2JqZWN0IGZ1bmN0aW9uLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUu
aC4KKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjpkaWRMZWF2ZVNjcmlwdENvbnRleHQp
OiBDYWxsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRp
b25Db250ZXh0KTogUmVuYW1lZCB0aGUgc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUKKyAgICAgICAgZnVuY3Rpb24gYW5kIG1vdmVkIGl0IGhlcmUgZnJvbSBTY3JpcHRTdGF0ZS5j
cHAuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaDogQWRkZWQgdGhlIGV4ZWN1
dGlvbkNvbnRleHQgZnVuY3Rpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaCwgYWRkZWQgaW5jbHVkZQor
ICAgICAgICBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6d2lsbENy
ZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UpOiBDYWxsIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oOiBD
aGFuZ2VkIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbAorICAgICAgICBm
dW5jdGlvbnMgdG8gdGFrZSBhIE5vZGUmIGluc3RlYWQgb2YgYSBuZXZlci1udWxsIE5vZGUqLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXaW5kb3dQcm94eS5oOiBUd2Vha2VkIGZvcm1hdHRp
bmcgYSBiaXQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuaDogUmVtb3ZlZC4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6IFJlbW92ZWQgaW5j
bHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6d3JhcENyeXB0b0tleSk6
IFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2Ugb2YgZXhlY3V0aW9uQ29udGV4dCBmdW5jdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OnVud3JhcENyeXB0b0tleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRGaWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZE9mZnNjcmVlbkNhbnZhcyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRSVENEYXRhQ2hhbm5lbCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5h
bCk6IERpdHRvLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0
aW9uKToKKyAgICAgICAgUGFzcyByZWZlcmVuY2UgdG8gd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFu
ZWRUcmVlQnlSZW1vdmFsLgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3Zl
Tm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOiBEaXR0by4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLCBhZGRlZCBpbmNsdWRlCisg
ICAgICAgIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6ZGlkTG9nTWVzc2FnZSk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3Jp
cHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Z2xv
YmFsT2JqZWN0KTogVXNlIHRoZQorICAgICAgICBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBoZWxwZXIgZnVuY3Rpb25zLgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmFkZFNlbGZUb0dsb2JhbE9iamVjdEluV29y
bGQpOgorICAgICAgICBVc2UgdGhlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkgaW5zdGVhZCBv
ZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUpOiBEaXR0by4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwpOiBEbworICAg
ICAgICB0aGUgbnVsbCBjaGVjayBoZXJlIGluc3RlYWQgb2YgaW4gZnJhbWVXaW5kb3dEaXNjYXJk
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDog
UmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXZWJJ
bmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3IpOgorICAgICAg
ICBSZXdvcmtlZCBsb2dpYyB0byB1c2UgZXhlY3V0aW9uQ29udGV4dCBpbnN0ZWFkIG9mIGRvbVdp
bmRvd0Zyb21FeGVjU3RhdGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDogUmVtb3ZlZCBp
bmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Zm9jdXNOb2RlKTogVXNlIHN0ZDo6ZXhjaGFuZ2UgaGVyZSBpbiB0aGUKKyAgICAgICAg
aWRpb21hdGljICJ0YWtlIGFuZCBudWxsIGEgdmFsdWUiIGNhc2UgaGVyZS4gVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOiBVc2UKKyAgICAgICAgU2NyaXB0Q29udHJvbGxlciBk
aXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggYSBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEpOiBVc2UgbWFpbldvcmxkR2xv
YmFsT2JqZWN0LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOiBSZW1vdmVkIGluY2x1ZGUgb2YKKyAgICAgICAgU2NyaXB0U3RhdGUuaCBhbmQg
YWRkZWQgaW5jbHVkZSBvZiBKU0RPTVdpbmRvd0N1c3RvbS5oLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpyZXNvbHZlV2ViU29ja2V0KTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRTdGF0ZS5oLgorICAgICAgICAo
V2ViQ29yZTo6ZnJhbWUpOiBBZGRlZC4gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCBmcm9tIGEgZ2xv
YmFsIG9iamVjdCB0byBhIGZyYW1lLgorICAgICAgICBDYWxscyBleGVjdXRpb25Db250ZXh0IGFu
ZCBnZXRzIHRvIHRoZSBmcmFtZSBmcm9tIHRoZXJlLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZSk6IFVzZSBmcmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6
IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3Bw
OiBSZW1vdmVkIGluY2x1ZGUgb2YgU2NyaXB0U3RhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOiBUYWtlIGEgcmVmZXJlbmNlIGlu
c3RlYWQgb2YKKyAgICAgICAgYSBwb2ludGVyIHRoYXQgbXVzdCBub3QgYmUgbnVsbC4gVXNlIGV4
ZWN1dGlvbkNvbnRleHQgaW5zdGVhZCBvZgorICAgICAgICBkb21XaW5kb3dGcm9tRXhlY1N0YXRl
LgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuaDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4gUmVtb3ZlZAorICAgICAgICB1bm5lZWRlZCBXVEZfTUFLRV9O
T05DT1BZQUJMRSAoYmFzZSBjbGFzcyBpcyBhbHJlYWR5IG5vdCBjb3B5YWJsZSkgYW5kCisgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIChjbGFzcyBpcyBhbiBhYnN0cmFjdCBiYXNlIGNs
YXNzIGFuZCBuZXZlciBhbGxvY2F0ZWQpLgorICAgICAgICBNYWRlIGNvbnN0cnVjdG9yIHByb3Rl
Y3RlZC4gQ2hhbmdlZCB0aGUgRE9NV2luZG93IGFyZ3VtZW50IHRvCisgICAgICAgIGZyYW1lV2lu
ZG93RGlzY2FyZGVkIHRvIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyIHRoYXQgbXVz
dCBub3QgYmUgbnVsbC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVk
aXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3JsZEds
b2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdn
ZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFu
ZCBhZGRlZCBpbmNsdWRlIG9mIEpTRE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3Jl
OjpQYWdlRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIG1haW5Xb3Js
ZEdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0
d29ya0FnZW50LmNwcDogUmVtb3ZlZCBpbmNsdWRlIG9mIFNjcmlwdFN0YXRlLmguCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1bnRpbWVBZ2VudC5jcHA6IFJlbW92ZWQg
aW5jbHVkZSBvZgorICAgICAgICBTY3JpcHRTdGF0ZS5oIGFuZCBhZGRlZCBpbmNsdWRlIG9mIEpT
RE9NV2luZG93Q3VzdG9tLmguCisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50Ojpm
cmFtZU5hdmlnYXRlZCk6IFVzZSBtYWluV29ybGRHbG9iYWxPYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpQYWdlUnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbik6IERpdHRvLgorICAgICAgICBBbHNvIHVzZSBQYWdlOjpmb3JFYWNoRnJhbWUgaW5z
dGVhZCBvZiBhIGhhbmQtd3JpdHRlbiBsb29wLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyQXVkaXRBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBTY3JpcHRT
dGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVh
ZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6IFJlbW92ZWQgaW5jbHVkZSBvZiBT
Y3JpcHRTdGF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5q
ZWN0ZWRTY3JpcHRGb3JFdmFsKTogVXNlIFNjcmlwdENvbnRyb2xsZXIgZGlyZWN0bHkKKyAgICAg
ICAgaW5zdGVhZCBvZiB0aHJvdWdoIGEgaGVscGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGltZUFnZW50LmNwcDogUmVtb3ZlZCBpbmNs
dWRlIG9mIFNjcmlwdFN0YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW50aW1lQWdl
bnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbCk6IFVzZSBTY3JpcHRDb250cm9sbGVyIGRpcmVjdGx5
CisgICAgICAgIGluc3RlYWQgb2YgdGhyb3VnaCBhIGhlbHBlciBmdW5jdGlvbi4KKwogMjAyMS0x
Mi0yMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgR3JhZGllbnQg
ZW5jb2RlL2RlY29kZSBkb2VzIG5vdCB2YWxpZGF0ZSB0aGF0IHRoZSBzZXJpYWxpemVkIHN0b3Bz
IHdlcmUgc29ydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBhYmVlYmZlZjkxZGE5MGI5NWZhNDky
MGQxZjYyNmM2YWNiNTVhZDJhLi45MmJhZDQ5MmU2YWI4ODcxYjIyMjI0NDA0NGFhYmUxZjUxMTcx
MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTQ2NSw3ICs0NjUsNiBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5oCiAgICAg
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCi0gICAgYmluZGluZ3MvanMvU2NyaXB0U3Rh
dGUuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCiAgICAgYmluZGluZ3MvanMv
U2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCiAgICAgYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcAppbmRleCBlZGRiZThiZTFlMzExMDg3MWMzNzcxMTg0YTJmOTViYTdmYjgw
MmZkLi4xNDM1MTQwYTVjYjRhMWExZDQwN2EyZGIyOWQxNWJkZjJkNTJjMGI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBA
IC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElu
bGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcAppbmRleCA2N2QzYmE0Yzc5ODMxMTEyNzkzMWUyOTUyODQ4NGU2NmVjZDM0
Y2ZmLi41ODQzNjE1NjUwMDE2Nzg3NzhkYjc1MDE5NWY2ZWIwZjJkMWMxYmM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBA
IC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlRyYW5zYWN0aW9uT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDQ5NTMwZjYyNGIwMTBmNzZhNDgzMjRiZmRkOTlj
MmQyNjg4YTc3ODMuLmJkNWE3NDc5Y2IzOWU0NmNjOTEwNDAwZjRlZTM4NDkzMjRjNzUzMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC02MzIsNyArNjMyLDYgQEAgYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcAogYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAogYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKIGJpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5j
cHAKLWJpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAogYmluZGluZ3MvanMvU2NyaXB0V3JhcHBh
YmxlLmNwcAogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAogYmluZGluZ3Mv
anMvU3RydWN0dXJlZENsb25lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA0ZTg0MWZiZTBlNTdkNzY0OTg1ZGM2OTk3ZjZm
Njg1NTA3NDU2ZmUuLmM4ZGEzMzQwZTc5NTc1ZjdkYTVmYzIzZGQ1MmJjM2U1MWQ4ZmE4MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyMDAsNyArMTIwMCw2IEBACiAJCTQxQzE0QkM5MjZERjc5RDcwMDY4NUJGNSAvKiBNRE5T
UmVnaXN0ZXJFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFDMTRCQzgyNkRGNzlENjAwNjg1QkY1IC8qIE1ETlNSZWdpc3RlckVycm9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDFDM0I4QTEy
NjQ5QjFFMDAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxV
bml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUMz
Qjg5RjI2NDlCMUI3MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRl
cm5hbFVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MUMzQjhBMjI2NDlCMUU1MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUMzQjg5QjI2NDlCMUI2MDA0RUQ0REUgLyogQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJVbml0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUM3NjBCMDBFREUwM0QzMDBDMTY1
NUYgLyogU2NyaXB0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MUNCODQwMTI1Q0FCN0IzMDAxMEUyQjEgLyogUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxQ0I4NDAwMjVDQUI3QjAwMDEwRTJCMSAvKiBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxQ0I4NDAyMjVDQUI4MUUwMDEwRTJCMSAvKiBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDREQ4MzNBMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUQw
MTVDQTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBD
b250ZW50VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC04NTI1LDcgKzg1MjQsNiBAQAogCQk0MTIwOUU5NDIxNkVBNjlBMDBBNzNBMTIgLyog
UlRDQ2VydGlmaWNhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UlRDQ2VydGlmaWNhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5
NTIxNkVDMzRFMDBBNzNBMTIgLyogTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0
b3IuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENDZXJ0aWZpY2F0ZUdlbmVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIwOUU5NjIxNkVDMzRGMDBBNzNBMTIgLyog
TGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTGliV2ViUlRDQ2VydGlmaWNhdGVHZW5lcmF0b3IuY3BwOyBwYXRoID0g
bGlid2VicnRjL0xpYldlYlJUQ0NlcnRpZmljYXRlR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDEyN0Q1MzYwRjhBQUIxRDAwRTQyNEY1IC8qIFNjcmlwdFN0YXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdFN0YXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyOUM5ODAxRjU4NjFDNzAwOUQ3NDAz
IC8qIFJlYWRhYmxlU3RyZWFtU2luay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZWFkYWJsZVN0cmVhbVNpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEy
OUM5ODExRjU4NjFDNzAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU2luay5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1TaW5rLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEyOUM5ODcxRjU4NjYyRDAwOUQ3NDAzIC8qIFJlYWRhYmxlU3RyZWFtU2lu
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVh
bVNpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg1Myw3ICs4ODUxLDYg
QEAKIAkJNDFDM0I4OUUyNjQ5QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVySW50ZXJuYWxVbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
QzNCOEEwMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFDNzYwQjAwRURFMDNEMzAw
QzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcmlwdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA1MUU2
QTU0MzYwMDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzdFMTA2MUU2QTU0MzYw
MDI3QjRERSAvKiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM3RTEwODFFNkFBMzdDMDAyN0I0REUgLyogQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI5MjE1LDggKzI5MjEyLDYgQEAKIAkJCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJFRTMg
LyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLywKIAkJCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8sCiAJCQkJOTM0Q0MxMDkwRURCMjIzOTAwQTY1
OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCAqLywKLQkJCQk0MTI3RDUzNjBGOEFBQjFEMDBFNDI0
RjUgLyogU2NyaXB0U3RhdGUuY3BwICovLAotCQkJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAv
KiBTY3JpcHRTdGF0ZS5oICovLAogCQkJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3Jp
cHRXcmFwcGFibGUuaCAqLywKIAkJCQkxNDAwRDdBNzE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0
V3JhcHBhYmxlSW5saW5lcy5oICovLAogCQkJCUE3NUU0OTc1MTA3NTJBQ0IwMEM5Qjg5NiAvKiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwICovLApAQCAtMzY5MTksNyArMzY5MTQsNiBAQAogCQkJ
CUZEMzE2MDM2MTJCMDI2NzYwMEMxQTM1OSAvKiBTY3JpcHRQcm9jZXNzb3JOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4QTQxM0FFMDEyMDdCQkE1MDA4MjAxNkUgLyogU2NyaXB0UnVubmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzRDQzEwQTBFREIyMjM5MDBBNjU4RjIgLyogU2NyaXB0U291
cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDFDNzYwQjEwRURFMDNEMzAwQzE2NTVGIC8q
IFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBE
MEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwRDdBODE3MTM2
RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM4QUUzNEYxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAppbmRleCA1NDc2MjdhOWY4OWM3NTY0Y2ZiNWY4NzBkMjVjODZmNTIzMGRmNTVkLi4xMjVl
YzAwNzMyMzVjMGZjYmE0OTc0MWU0MWZiZmE0ZDNlMjA2OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MzcsNCArNjM3LDEy
IEBAIHZvaWQgSlNET01XaW5kb3c6OnNldE9wZW5EYXRhYmFzZShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6CiAgICAgY3JlYXRlRGF0YVByb3BlcnR5KCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKSwgIm9wZW5EYXRhYmFzZSIpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCitKU0RP
TVdpbmRvdyYgbWFpbldvcmxkR2xvYmFsT2JqZWN0KEZyYW1lJiBmcmFtZSkKK3sKKyAgICAvLyBG
SVhNRTogV2hhdCBndWFyYW50ZWVzIHRoZSByZXN1bHQgb2YganNXaW5kb3dQcm94eSgpIGlzIG5v
bi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhlIHJlc3VsdCBvZiB3aW5k
b3coKSBpcyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoZSByZXN1
bHQgb2Ygd2luZG93KCkgYSBKU0RPTVdpbmRvdz8KKyAgICByZXR1cm4gKmpzQ2FzdDxKU0RPTVdp
bmRvdyo+KGZyYW1lLndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94eShtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSktPndpbmRvdygpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgKaW5kZXggN2NmYTdh
NmJiM2E3YzRhMGFkZjZjYWZhNzM2OWI3MmJiNTcwN2E3Ny4uMmIxMmJjY2E0ZTJlNTBjMjU0MDcz
NjExOTcwMDRmM2Q3ZDNmODg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2V2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC0yNSw2ICsyNSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
YnN0cmFjdERPTVdpbmRvdzsKIGNsYXNzIEFic3RyYWN0RnJhbWU7CiAKK0pTRE9NV2luZG93KiBh
c0pTRE9NV2luZG93KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKK2NvbnN0IEpTRE9NV2luZG93KiBh
c0pTRE9NV2luZG93KGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKworZW51bSBjbGFzcyBE
T01XaW5kb3dUeXBlIDogYm9vbCB7IExvY2FsLCBSZW1vdGUgfTsKK3RlbXBsYXRlPERPTVdpbmRv
d1R5cGU+IGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNz
KEpTRE9NR2xvYmFsT2JqZWN0KiwgQWJzdHJhY3RET01XaW5kb3cmLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90JiwgY29uc3QgU3RyaW5n
Jik7CisKK2VudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PYmplY3QgOiBib29sIHsgV2luZG93LCBMb2Nh
dGlvbiB9OwordGVtcGxhdGU8Q3Jvc3NPcmlnaW5PYmplY3Q+IHZvaWQgYWRkQ3Jvc3NPcmlnaW5P
d25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlByb3BlcnR5TmFtZUFy
cmF5Jik7CisKK2Jvb2wgaGFuZGxlQ29tbW9uQ3Jvc3NPcmlnaW5Qcm9wZXJ0aWVzKEpTQzo6SlNP
YmplY3QqIHRoaXNPYmplY3QsIEpTQzo6Vk0mLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9w
ZXJ0eVNsb3QmKTsKKworSlNET01XaW5kb3cmIG1haW5Xb3JsZEdsb2JhbE9iamVjdChGcmFtZSYp
OworSlNET01XaW5kb3cqIG1haW5Xb3JsZEdsb2JhbE9iamVjdChGcmFtZSopOworCiBpbmxpbmUg
SlNET01XaW5kb3cqIGFzSlNET01XaW5kb3coSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewogICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVj
dCk7CkBAIC0zNSwxNSArNDksOSBAQCBpbmxpbmUgY29uc3QgSlNET01XaW5kb3cqIGFzSlNET01X
aW5kb3coY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CiB9CiAKLWVu
dW0gY2xhc3MgRE9NV2luZG93VHlwZSB7IExvY2FsLCBSZW1vdGUgfTsKLQotdGVtcGxhdGUgPERP
TVdpbmRvd1R5cGUgd2luZG93VHlwZT4KLWJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNs
b3RSZXN0cmljdGVkQWNjZXNzKEpTRE9NR2xvYmFsT2JqZWN0KiwgQWJzdHJhY3RET01XaW5kb3cm
LCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90JiwgY29uc3QgU3RyaW5nJik7Ci0KLWVudW0gY2xhc3MgQ3Jvc3NPcmlnaW5PYmplY3QgeyBX
aW5kb3csIExvY2F0aW9uIH07Ci0KLXRlbXBsYXRlIDxDcm9zc09yaWdpbk9iamVjdCBvYmplY3RU
eXBlPgotdm9pZCBhZGRDcm9zc09yaWdpbk93blByb3BlcnR5TmFtZXMoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmKTsKLWJvb2wgaGFuZGxlQ29tbW9uQ3Jvc3NP
cmlnaW5Qcm9wZXJ0aWVzKEpTQzo6SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTQzo6Vk0mLCBKU0M6
OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKK2lubGluZSBKU0RPTVdpbmRvdyog
bWFpbldvcmxkR2xvYmFsT2JqZWN0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICByZXR1cm4gZnJhbWUg
PyAmbWFpbldvcmxkR2xvYmFsT2JqZWN0KCpmcmFtZSkgOiBudWxscHRyOworfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V4ZWNTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5j
cHAKaW5kZXggYmVjYTU2M2Y1NzliMTQ2ZDczMjM4YWQ4NjgxZWJlMGYyNDNmNTdiYi4uYjUzMDhl
MjM1MzFlOGFlZDJkMTQyMWQ3MjExNmZkY2YxODlkNTJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXhlY1N0YXRlLmNwcApAQCAtMjksMTQgKzI5LDEzIEBACiAjaW5jbHVkZSAi
RXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgog
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBKU0V4ZWNTdGF0ZTo6ZGlkTGVhdmVTY3JpcHRDb250ZXh0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QpCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8gY29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQobGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgY29u
dGV4dC0+ZXZlbnRMb29wKCkucGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKQEAgLTUzLDQg
KzUyLDExIEBAIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZUhhbmRsZXJGcm9tQW55VGhyZWFkKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplCiAgICAgcmV0dXJuIEpTRXhlY1N0YXRl
OjpldmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRoaXNWYWx1ZSwgcmV0dXJu
ZWRFeGNlcHRpb24pOwogfQogCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRpb25Db250
ZXh0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAoIWdsb2Jh
bE9iamVjdCB8fCAhZ2xvYmFsT2JqZWN0LT5pbmhlcml0czxKU0RPTUdsb2JhbE9iamVjdD4oZ2xv
YmFsT2JqZWN0LT52bSgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXhlY1N0YXRlLmgKaW5kZXggMjdmNzY1MGRhNmE4ZWU0NGYzNWY5NDdkNDk4ZWEz
ODFjNmM5NDMxZi4uZTI2NWIxMzM4YWM4NzQ5MDNlMWY3ZmMyMzZlZDU3M2Q1NWZmMzFmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5oCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NywyNSArNDcsMjUg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTR2xvYmFsT2JqZWN0KiBjdXJyZW50U3RhdGUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5jdXJyZW50U3RhdGUo
KTsKLSAgICB9OworICAgIH0KICAgICAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGNhbGwoSlND
OjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0
aW9uT2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAgICAgICAgSlNFeGVjU3RhdGUgY3VycmVu
dFN0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gSlNDOjpjYWxsKGxl
eGljYWxHbG9iYWxPYmplY3QsIGZ1bmN0aW9uT2JqZWN0LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7Ci0gICAgfTsKKyAgICB9CiAKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIGNvbnN0IEpTQzo6U291cmNlQ29kZSYgc291cmNlLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVl
LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKICAg
ICAgICAgSlNFeGVjU3RhdGUgY3VycmVudFN0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
ICAgICByZXR1cm4gSlNDOjpldmFsdWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBzb3VyY2UsIHRo
aXNWYWx1ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgIH07CisgICAgfQogCiAgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSA9IEpTQzo6SlNWYWx1ZSgpKQogICAgIHsKICAgICAgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IHVudXNlZDsKICAgICAgICAgcmV0dXJuIGV2YWx1YXRlKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNvdXJjZSwgdGhpc1ZhbHVlLCB1bnVzZWQpOwotICAgIH07CisgICAgfQogCiAgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBwcm9maWxlZENhbGwoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpQcm9maWxpbmdSZWFzb24gcmVhc29uLCBKU0M6OkpTVmFsdWUg
ZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFs
dWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiAgICAgewpAQCAtMTg1LDQgKzE4NSw2IEBAIHBy
aXZhdGU6CiBKU0M6OkpTVmFsdWUgZnVuY3Rpb25DYWxsSGFuZGxlckZyb21BbnlUaHJlYWQoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlND
OjpDYWxsRGF0YSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYg
YXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBKU0M6
OkpTVmFsdWUgZXZhbHVhdGVIYW5kbGVyRnJvbUFueVRocmVhZChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQ
dHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKK1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGV4ZWN1dGlvbkNvbnRleHQoSlNDOjpKU0dsb2JhbE9iamVjdCopOworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmNwcAppbmRleCAxZmNjMjQ0ZDhkOTUwZTE3ODFlMmUwYmRhNmE2NGVjN2Q3YTI5YTcxLi5k
NDFmOGVlYTVmMzQxNzgwYjQyM2Y2YjdlNmU3ODYzYjE5YWI5Y2YyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNs
dWRlICJKU0NEQVRBU2VjdGlvbi5oIgogI2luY2x1ZGUgIkpTQ29tbWVudC5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVk
ZSAiSlNEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIkpTRG9jdW1lbnRUeXBlLmgiCkBAIC02MSwxNyArNjIsMTUgQEAKICNpbmNsdWRlICJQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJHQ1JlYWNoYWJsZVJlZi5oIgogI2luY2x1
ZGUgIlN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNSZWFjaGFibGVGcm9tRE9NKE5vZGUqIG5vZGUsIEFic3RyYWN0U2xv
dFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCkBAIC0yMTIsMTQgKzIxMSwx
NSBAQCBKU0M6OkpTT2JqZWN0KiBnZXRPdXRPZkxpbmVDYWNoZWRXcmFwcGVyKEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUmCiAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+d29y
bGQoKS53cmFwcGVycygpLmdldCgmbm9kZSk7CiB9CiAKLXZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5
T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSogcm9vdCkKK3ZvaWQgd2lsbENyZWF0
ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSYgcm9vdCkKIHsKLSAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhl
Y1N0YXRlKHJvb3QtPmRvY3VtZW50KCkuZnJhbWUoKSk7Ci0gICAgaWYgKCFsZXhpY2FsR2xvYmFs
T2JqZWN0KQorICAgIGF1dG8gZnJhbWUgPSByb290LmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIHN0YXRpY19j
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksICpyb290KTsKKyAg
ICBhdXRvJiBnbG9iYWxPYmplY3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKTsKKyAg
ICBKU0xvY2tIb2xkZXIgbG9jaygmZ2xvYmFsT2JqZWN0KTsKKyAgICB0b0pTKCZnbG9iYWxPYmpl
Y3QsICZnbG9iYWxPYmplY3QsIHJvb3QpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCmluZGV4IGQ3MWIyNWMwZDg3
YWFlNTYxOGRkMjc3MjQwYzljZGM1MGEwOGMzMWQuLjc1OTJlZDc0YmNlOTdlYTBjYTNhNDgyYTk0
OTE4ZDcwMTdkYjljZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3Rv
bS5oCkBAIC02OSwxNiArNjksMTEgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2IKIC8vIHJvb3Qu
IEluIHRoZSBKYXZhU2NyaXB0IERPTSwgYSBub2RlIHRyZWUgc3Vydml2ZXMgYXMgbG9uZyBhcyB0
aGVyZSBpcyBhCiAvLyByZWZlcmVuY2UgdG8gYW55IG5vZGUgaW4gdGhlIHRyZWUuIFRvIG1vZGVs
IHRoZSBKYXZhU2NyaXB0IERPTSBvbiB0b3Agb2YKIC8vIHRoZSBDKysgRE9NLCB3ZSBlbnN1cmUg
dGhhdCB0aGUgcm9vdCBvZiBldmVyeSB0cmVlIGhhcyBhIEphdmFTY3JpcHQgd3JhcHBlci4KLXZv
aWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsU2xvd0Nhc2UoTm9kZSog
cm9vdCk7Ci1pbmxpbmUgdm9pZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92
YWwoTm9kZSogcm9vdCkKK3ZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1v
dmFsU2xvd0Nhc2UoTm9kZSYgcm9vdCk7CitpbmxpbmUgdm9pZCB3aWxsQ3JlYXRlUG9zc2libHlP
cnBoYW5lZFRyZWVCeVJlbW92YWwoTm9kZSYgcm9vdCkKIHsKLSAgICBpZiAocm9vdC0+d3JhcHBl
cigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXJvb3QtPmhhc0NoaWxkTm9kZXMoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlS
ZW1vdmFsU2xvd0Nhc2Uocm9vdCk7CisgICAgaWYgKCFyb290LndyYXBwZXIoKSAmJiByb290Lmhh
c0NoaWxkTm9kZXMoKSkKKyAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlS
ZW1vdmFsU2xvd0Nhc2Uocm9vdCk7CiB9CiAKIGlubGluZSB2b2lkKiByb290KE5vZGUqIG5vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dpbmRvd1Byb3h5LmgKaW5kZXggMTEzZGNj
Yjg0NmIwZWYxYzYzZDMxZDEwNDI5YzdiOTRlYzE5NGJjMC4uOTE4YjY2MTRhYjA0MzQzYTk2NDk3
MGJkZjc0ZjQ0NTllOTc4M2JmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXaW5kb3dQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2lu
ZG93UHJveHkuaApAQCAtNDgsMTcgKzQ4LDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNw
YWNlQWNjZXNzPgotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6
OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwotICAg
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKSB7IHJldHVy
biBzdWJzcGFjZUZvckltcGwodm0pOyB9CiAKICAgICBzdGF0aWMgSlNXaW5kb3dQcm94eSYgY3Jl
YXRlKEpTQzo6Vk0mLCBBYnN0cmFjdERPTVdpbmRvdyYsIERPTVdyYXBwZXJXb3JsZCYpOwogCiAg
ICAgREVDTEFSRV9JTkZPOwogCiAgICAgSlNET01HbG9iYWxPYmplY3QqIHdpbmRvdygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4odGFyZ2V0KCkpOyB9CisK
ICAgICB2b2lkIHNldFdpbmRvdyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2
b2lkIHNldFdpbmRvdyhBYnN0cmFjdERPTVdpbmRvdyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQz
ZTQ4ZWRhYTc4YjFhYzYyZGZhODdiNTUxZDJhZWY5YjhjNGZiMDMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0U3RhdGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKLQotI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2Uu
aCIKLSNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiSlNXb3JrbGV0
R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJOb2RlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIK
LSNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9DYWxsRnJhbWUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1ET01XaW5kb3cqIGRvbVdpbmRvd0Zyb21FeGVjU3RhdGUoSlNDOjpKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkKLXsKLSAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBsZXhpY2FsR2xvYmFsT2JqZWN0OwotICAgIEpTQzo6Vk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pbmhlcml0czxK
U0RPTVdpbmRvd0Jhc2U+KHZtKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
ICZKU0M6OmpzQ2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpLT53cmFwcGVkKCk7
Ci19Ci0KLUZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCkKLXsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93
bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZG9jdW1lbnQg
PyBkb2N1bWVudC0+ZnJhbWUoKSA6IG51bGxwdHI7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QpCi17Ci0gICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbGV4aWNhbEdsb2JhbE9iamVjdDsKLSAgICBKU0M6OlZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdC0+aW5oZXJpdHM8SlNET01HbG9i
YWxPYmplY3Q+KHZtKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIEpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwotfQotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWluV29ybGRFeGVjU3RhdGUo
RnJhbWUqIGZyYW1lKQotewotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBmcmFtZS0+d2luZG93UHJveHkoKS5qc1dpbmRvd1Byb3h5KG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpKS0+d2luZG93KCk7Ci19Ci0KLUpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBOb2RlKiBub2RlKQotewotICAgIGlm
ICghbm9kZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9k
ZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFi
b3V0VG9FeGVjdXRlU2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29ybGQpOwotfQotCi1KU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgRnJhbWUqIGZyYW1l
KQotewotICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3Qod29y
bGQpIDogbnVsbHB0cjsKLX0KLQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiB3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSkKLXsK
LSAgICBpZiAoYXV0byogc2NyaXB0Q29udHJvbGxlciA9IHdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLnNjcmlwdCgpKQotICAgICAgICByZXR1cm4gc2NyaXB0Q29udHJvbGxlci0+Z2xvYmFsU2Nv
cGVXcmFwcGVyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
MTUwNjMwOTk2MGI5MjgxZWQxMDAyMTkzNzUzZmM5MjVhZGM0MDgyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFN0YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChjKSAyMDA4LCAyMDExIEdvb2dsZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi1uYW1lc3BhY2UgSlNDIHsKLWNsYXNzIENhbGxGcmFtZTsKLWNsYXNzIEpT
R2xvYmFsT2JqZWN0OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIERPTVdpbmRv
dzsKLWNsYXNzIERPTVdyYXBwZXJXb3JsZDsKLWNsYXNzIEZyYW1lOwotY2xhc3MgTm9kZTsKLWNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZTsKLQotRE9NV2luZG93KiBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKLUZyYW1lKiBmcmFtZUZyb21FeGVjU3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCop
OwotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVj
U3RhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwotCi1KU0M6OkpTR2xvYmFsT2JqZWN0KiBtYWlu
V29ybGRFeGVjU3RhdGUoRnJhbWUqKTsKLQotSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KERPTVdyYXBwZXJXb3JsZCYsIE5vZGUqKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdChET01XcmFwcGVyV29ybGQmLCBGcmFtZSopOwotSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDBiYWZhNzk4MzA5YzE2NTBj
NjQwMmJkMDZlZWE3MzAxMTk2ZTNlMzMuLmRiYWNkYTVlNDliZmE5MjhkOTY5MGI4NGEzZmE2MDcz
N2QzMTk0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNTYsMTUgKzU2LDggQEAKICNpbmNsdWRlICJKU1JUQ0Nl
cnRpZmljYXRlLmgiCiAjaW5jbHVkZSAiSlNSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlv
bi5oPgotI2VuZGlmCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3Jh
cGhpY3MuaD4KLSNlbmRpZgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CaWdJbnRPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Cb29sZWFuT2JqZWN0Lmg+CkBAIC0xMDEsNiArOTQsMTQgQEAKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAK
KyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgorI2VuZGlmCisKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9X
T1JLRVJTKQogI2luY2x1ZGUgIkpTT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiT2Zmc2Ny
ZWVuQ2FudmFzLmgiCkBAIC0xMTMsNiArMTE0LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKQEAgLTU1NiwxOCArNTU4LDE0
IEBAIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKIHN0YXRpYyBib29sIHdyYXBD
cnlwdG9LZXkoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5LCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpCiB7Ci0gICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGlmICgh
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3JhcHBlZEtleSk7
CisgICAgYXV0byBjb250ZXh0ID0gZXhlY3V0aW9uQ29udGV4dChsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICByZXR1cm4gY29udGV4dCAmJiBjb250ZXh0LT53cmFwQ3J5cHRvS2V5KGtleSwgd3Jh
cHBlZEtleSk7CiB9CiAKIHN0YXRpYyBib29sIHVud3JhcENyeXB0b0tleShKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5
LCBWZWN0b3I8dWludDhfdD4mIGtleSkKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3Rh
dGUobGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5LCBrZXkpOworICAgIGF1dG8gY29udGV4dCA9
IGV4ZWN1dGlvbkNvbnRleHQobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGNvbnRl
eHQgJiYgY29udGV4dC0+dW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXksIGtleSk7CiB9CiAjZW5k
aWYKIApAQCAtOTU4LDcgKzk1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8mIHZtID0gbV9s
ZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBt
X2xleGljYWxHbG9iYWxPYmplY3Q7CiAgICAgICAgIGlmIChnbG9iYWxPYmplY3QtPmluaGVyaXRz
PEpTRE9NR2xvYmFsT2JqZWN0Pih2bSkpCi0gICAgICAgICAgICByZXR1cm4gdG9KUyhtX2xleGlj
YWxHbG9iYWxPYmplY3QsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCks
ICZhcnJheUJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm4gdG9KUyhnbG9iYWxPYmplY3QsIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksICZhcnJheUJ1ZmZlcik7CiAK
ICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IGFycmF5QnVmZmVyLm1fd3JhcHBlci5nZXQoKSkK
ICAgICAgICAgICAgIHJldHVybiBidWZmZXI7CkBAIC0yNTY2LDcgKzI1NjQsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoIW1fY2FuQ3JlYXRlRE9NT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRGcm9tRXhlY1N0YXRlKG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBV
UkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCks
IG9wdGlvbmFsTGFzdE1vZGlmaWVkKTsKKyAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXpl
KGV4ZWN1dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZmlsZVBhdGgsIFVSTChV
UkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0
aW9uYWxMYXN0TW9kaWZpZWQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMy
OTYsNyArMzI5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1fb2Zm
c2NyZWVuQ2FudmFzZXNbaW5kZXhdKQotICAgICAgICAgICAgbV9vZmZzY3JlZW5DYW52YXNlc1tp
bmRleF0gPSBPZmZzY3JlZW5DYW52YXM6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZy
b21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgV1RGTW92ZShtX2RldGFjaGVkT2Zm
c2NyZWVuQ2FudmFzZXMuYXQoaW5kZXgpKSk7CisgICAgICAgICAgICBtX29mZnNjcmVlbkNhbnZh
c2VzW2luZGV4XSA9IE9mZnNjcmVlbkNhbnZhczo6Y3JlYXRlKCpleGVjdXRpb25Db250ZXh0KG1f
bGV4aWNhbEdsb2JhbE9iamVjdCksIFdURk1vdmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2Vz
LmF0KGluZGV4KSkpOwogCiAgICAgICAgIGF1dG8gb2Zmc2NyZWVuQ2FudmFzID0gbV9vZmZzY3Jl
ZW5DYW52YXNlc1tpbmRleF0uZ2V0KCk7CiAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKG9mZnNj
cmVlbkNhbnZhcyk7CkBAIC0zMzYwLDcgKzMzNTgsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlm
ICghbV9ydGNEYXRhQ2hhbm5lbHNbaW5kZXhdKSB7CiAgICAgICAgICAgICBhdXRvIGRldGFjaGVk
Q2hhbm5lbCA9IFdURk1vdmUobV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscy5hdChpbmRleCkpOwot
ICAgICAgICAgICAgbV9ydGNEYXRhQ2hhbm5lbHNbaW5kZXhdID0gUlRDRGF0YUNoYW5uZWw6OmNy
ZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFs
T2JqZWN0KSwgZGV0YWNoZWRDaGFubmVsLT5pZGVudGlmaWVyLCBXVEZNb3ZlKGRldGFjaGVkQ2hh
bm5lbC0+bGFiZWwpLCBXVEZNb3ZlKGRldGFjaGVkQ2hhbm5lbC0+b3B0aW9ucyksIGRldGFjaGVk
Q2hhbm5lbC0+c3RhdGUpOworICAgICAgICAgICAgbV9ydGNEYXRhQ2hhbm5lbHNbaW5kZXhdID0g
UlRDRGF0YUNoYW5uZWw6OmNyZWF0ZSgqZXhlY3V0aW9uQ29udGV4dChtX2xleGljYWxHbG9iYWxP
YmplY3QpLCBkZXRhY2hlZENoYW5uZWwtPmlkZW50aWZpZXIsIFdURk1vdmUoZGV0YWNoZWRDaGFu
bmVsLT5sYWJlbCksIFdURk1vdmUoZGV0YWNoZWRDaGFubmVsLT5vcHRpb25zKSwgZGV0YWNoZWRD
aGFubmVsLT5zdGF0ZSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZSht
X3J0Y0RhdGFDaGFubmVsc1tpbmRleF0uZ2V0KCkpOwpAQCAtMzM4NSw3ICszMzgzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgYXV0byBpbWFnZURhdGFTaXplID0gbG9naWNhbFNpemU7CiAgICAgICAg
IGltYWdlRGF0YVNpemUuc2NhbGUocmVzb2x1dGlvblNjYWxlKTsKIAotICAgICAgICBhdXRvIGJ1
ZmZlciA9IEltYWdlQml0bWFwOjpjcmVhdGVJbWFnZUJ1ZmZlcigqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgbG9naWNhbFNpemUsIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGNvbG9yU3BhY2UsIHJlc29sdXRpb25TY2FsZSk7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCaXRtYXA6OmNyZWF0ZUltYWdlQnVmZmVyKCpl
eGVjdXRpb25Db250ZXh0KG1fbGV4aWNhbEdsb2JhbE9iamVjdCksIGxvZ2ljYWxTaXplLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBjb2xvclNwYWNlLCByZXNvbHV0aW9uU2NhbGUpOwog
ICAgICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWUoKTsKQEAgLTM2NTEsNyArMzY0OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIGlmICghbV9jYW5DcmVhdGVE
T01PYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAgICAg
cmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dEZyb21FeGVjU3RhdGUobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0
cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJs
LT5zdHJpbmcoKSkpLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6
OmRlc2VyaWFsaXplKGV4ZWN1dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJM
KFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0
aEZvckJsb2JVUkwodXJsLT5zdHJpbmcoKSkpLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICBj
YXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGNhY2hlZFN0cmlu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBjM2E4NmY1YzRkM2MzOTk5
NTQxOWNiMGE1MTU0MDg4N2E2NjZkZGRjLi42NDliMjFhOTk1YzI3ODA4YWY2OGE5MDVkMWI5ZDU1
MmVmOGI0ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMjgsNyAr
MTI4LDcgQEAgQUxXQVlTX0lOTElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFs
bENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGkKICAgICAgICAgICAgIHJlbW92ZUJldHdl
ZW4obnVsbHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7CiAgICAgICAgICAgICBh
dXRvIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywg
KmNoaWxkKTsKICAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6
QVBJICYmIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0
eTo6TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIpCi0gICAgICAgICAgICAgICAgd2lsbENyZWF0ZVBv
c3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoKmNoaWxkKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMjEwLDcgKzIxMCw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250
YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVt
CiAgICAgfQogCiAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkgJiYg
c3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXli
ZU9ic2VydmFibGVCeVJlZlB0cikKLSAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRU
cmVlQnlSZW1vdmFsKCZjaGlsZFRvUmVtb3ZlKTsKKyAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5
T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkVG9SZW1vdmUpOwogCiAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
aXNPcnBoYW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGRiYTYwMGNjNzE3OTU3
Zjk4OWE2OTMzYmRmZDIyMWM2ODU2YTdkZjUuLjQyZGFjZDJkZDVjZTNlNWY2MjMzM2EyMTYyY2Mz
NzY3NDZlOGZiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCIK
KyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTTGF6eUV2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVF
ZmZlY3QuaCIKQEAgLTIxMCw3ICsyMTEsNiBAQAogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxvYWRl
ci5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyVGhlbWUuaCIKQEAgLTg3MTYsOCArODcxNiw4IEBAIHZvaWQgRG9jdW1lbnQ6OmRp
ZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwgbGV2
ZWwsIFZlCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBtZXNzYWdlTGV2ZWwg
PSBtZXNzYWdlTGV2ZWxGcm9tV1RGTG9nTGV2ZWwobGV2ZWwpOwotICAgICAgICBhdXRvIG1lc3Nh
Z2UgPSBtYWtlVW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KG1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VUeXBlOjpMb2csIG1lc3NhZ2VMZXZlbCwgV1RGTW92ZShsb2dNZXNzYWdlcyksIG1h
aW5Xb3JsZEV4ZWNTdGF0ZSh3ZWFrVGhpcy0+ZnJhbWUoKSkpOwotCisgICAgICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IG1haW5Xb3JsZEdsb2JhbE9iamVjdCh3ZWFrVGhpcy0+ZnJhbWUoKSk7Cisg
ICAgICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2Fn
ZT4obWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbWVzc2FnZUxldmVsLCBXVEZNb3Zl
KGxvZ01lc3NhZ2VzKSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgd2Vha1RoaXMtPmFkZENvbnNv
bGVNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDk1NDQ2Nzk0MzdmOGUxZTAx
NDczY2I2YTcwY2Q1ZDA3MmZjNzFjMzQuLjQ2MWI5OTc4YWQ5YjdlMTU3YTQ5MWMwN2UzYzllNzBh
ZjQyMWRkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRT
Y29wZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJQcm92aWRlci5oIgpAQCAtNTQzLDExICs1NDIsMTUgQEAgYm9vbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogCiBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpnbG9iYWxPYmplY3QoKQogewotICAg
IGlmIChpczxEb2N1bWVudD4oKnRoaXMpKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Z2xvYmFs
T2JqZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMp
LmZyYW1lKCkpOworICAgIGlmIChpczxEb2N1bWVudD4oKnRoaXMpKSB7CisgICAgICAgIGF1dG8g
ZnJhbWUgPSBkb3duY2FzdDxEb2N1bWVudD4oKnRoaXMpLmZyYW1lKCk7CisgICAgICAgIHJldHVy
biBmcmFtZSA/IGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdv
cmxkKCkpIDogbnVsbHB0cjsKKyAgICB9CiAKLSAgICBpZiAoaXM8V29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGU+KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Omdsb2JhbE9iamVjdChk
b3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oKnRoaXMpKTsKKyAgICBpZiAoaXM8
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KCp0aGlzKSkgeworICAgICAgICBhdXRvIHNjcmlw
dCA9IGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPigqdGhpcykuc2NyaXB0KCk7
CisgICAgICAgIHJldHVybiBzY3JpcHQgPyBzY3JpcHQtPmdsb2JhbFNjb3BlV3JhcHBlcigpIDog
bnVsbHB0cjsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggYjQzOTdiNDZhZDc3ZWE4OTEwYTFm
MjY3NTRjZjNiMTdmMWY5ZGIzMC4uMWFiOTg1Mzc5OTNlYmU2NDA3NmM3MjVlZWE1ZWVkMjZiMWUx
M2MxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnJhbWVUcmFjZXJzLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNQcm9taXNlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcAppbmRleCA5ZGRmY2JiZjhiYjQ0OTdhYzcyZWI2OWIwYzA0NDczNGJlYjJhMDdi
Li5kMWY5MjdkMWM1MTNjYWJlZWYzMWY3M2JkZjQ5ZjMwN2Y3ODZmYTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggOGFhZGFkMWZi
YWVlMzg3ZTg5NzBhNjVmMWYyOTdlZjllZDJhZjk4My4uNWY2MzFkZjU5NzYzODIxZWVlZDhkNTNl
NzFkNTlhMjVhZjEwZDFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTU2LDcgKzU2LDYgQEAKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFzdGVi
b2FyZC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJTeXN0ZW1Tb3VuZE1hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUlu
ZGljYXRvci5oIgpAQCAtMTYwLDE1ICsxNTksMTUgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6OmRpc2Nvbm5lY3RDbGllbnQoKQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRk
U2VsZlRvR2xvYmFsT2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewotICAg
IGF1dG8mIGxleGljYWxHbG9iYWxPYmplY3QgPSAqZ2xvYmFsT2JqZWN0KHdvcmxkLCBtX2Zyb250
ZW5kUGFnZSA/ICZtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkgOiBudWxscHRyKTsKLSAgICBh
dXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKKyAgICAvLyBGSVhNRTogV2hhdCBn
dWFyYW50ZWVzIG1fZnJvbnRlbmRQYWdlIGlzIG5vbi1udWxsPworICAgIC8vIEZJWE1FOiBXaGF0
IGd1YXJhbnRlZXMgZ2xvYmFsT2JqZWN0J3MgcmV0dXJuIHZhbHVlIGlzIG5vbi1udWxsPworICAg
IGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0
KCkuZ2xvYmFsT2JqZWN0KHdvcmxkKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgp
OwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKLQotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6Ompz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBnbG9i
YWxPYmplY3QucHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJJ
bnNwZWN0b3JGcm9udGVuZEhvc3QiKSwgdG9KUzxJRExJbnRlcmZhY2U8SW5zcGVjdG9yRnJvbnRl
bmRIb3N0Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqdGhpcykpOworICAg
IGdsb2JhbE9iamVjdC5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIkluc3BlY3RvckZyb250ZW5kSG9zdCIpLCB0b0pTPElETEludGVyZmFjZTxJbnNwZWN0b3JG
cm9udGVuZEhvc3Q+PihnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKnRoaXMpKTsKICAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICByZXBvcnRFeGNlcHRpb24o
JmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmVwb3J0
RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIHNjb3BlLmV4Y2VwdGlvbigpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OmxvYWRlZCgpCkBAIC01MDMsMTkgKzUwMiwyMCBAQCBzdGF0
aWMgdm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51KFZlY3RvcjxJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OkNvbnRleHRNZW51SXRlbT4mJgogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250
ZXh0TWVudShFdmVudCYgZXZlbnQsIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiYgaXRlbXMpCiB7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVl
cyBtX2Zyb250ZW5kUGFnZSBpcyBub24tbnVsbD8KKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50
ZWVzIGdsb2JhbE9iamVjdCdzIHJldHVybiB2YWx1ZSBpcyBub24tbnVsbD8KICAgICBBU1NFUlQo
bV9mcm9udGVuZFBhZ2UpOwotCi0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9ICpnbG9i
YWxPYmplY3QoZGVidWdnZXJXb3JsZCgpLCAmbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpKTsK
LSAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKLSAgICBhdXRvIHZhbHVl
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIkluc3BlY3RvckZyb250ZW5kQVBJIikpOworICAgIGF1
dG8mIGdsb2JhbE9iamVjdCA9ICptX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuc2NyaXB0KCku
Z2xvYmFsT2JqZWN0KGRlYnVnZ2VyV29ybGQoKSk7CisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmpl
Y3Qudm0oKTsKKyAgICBhdXRvIHZhbHVlID0gZ2xvYmFsT2JqZWN0LmdldCgmZ2xvYmFsT2JqZWN0
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJJbnNwZWN0b3JGcm9udGVuZEFQSSIp
KTsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCh2YWx1ZS5pc09iamVjdCgpKTsKICAg
ICBhdXRvKiBmcm9udGVuZEFQSU9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICAKKwogICAg
IENvbnRleHRNZW51IG1lbnU7CiAgICAgcG9wdWxhdGVDb250ZXh0TWVudShXVEZNb3ZlKGl0ZW1z
KSwgbWVudSk7CiAKLSAgICBhdXRvIG1lbnVQcm92aWRlciA9IEZyb250ZW5kTWVudVByb3ZpZGVy
OjpjcmVhdGUodGhpcywgeyAmbGV4aWNhbEdsb2JhbE9iamVjdCwgZnJvbnRlbmRBUElPYmplY3Qg
fSwgbWVudS5pdGVtcygpKTsKKyAgICBhdXRvIG1lbnVQcm92aWRlciA9IEZyb250ZW5kTWVudVBy
b3ZpZGVyOjpjcmVhdGUodGhpcywgeyAmZ2xvYmFsT2JqZWN0LCBmcm9udGVuZEFQSU9iamVjdCB9
LCBtZW51Lml0ZW1zKCkpOwogICAgIG1fbWVudVByb3ZpZGVyID0gbWVudVByb3ZpZGVyLnB0cigp
OwogICAgIG1fZnJvbnRlbmRQYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5zaG93Q29udGV4
dE1lbnUoZXZlbnQsIG1lbnVQcm92aWRlcik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAxODc5M2Zm
MDY2MzM4ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0Li41YzViYjJhZWE4Mzk5MThiMDY5Nzc1
ODgxY2UzYTM2OWE0MjhlNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjI4LDggKzIyOCwxMSBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVXaW5kb3dEaXNjYXJkZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGlucwogICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBpZiAoIXdpbmRvdykKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYg
KGF1dG8qIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50
KCkpCi0gICAgICAgIGNvbnNvbGVBZ2VudC0+ZnJhbWVXaW5kb3dEaXNjYXJkZWQod2luZG93KTsK
KyAgICAgICAgY29uc29sZUFnZW50LT5mcmFtZVdpbmRvd0Rpc2NhcmRlZCgqd2luZG93KTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2Vk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApp
bmRleCBkYWE2MmYyMDVlODA5YTY4MzI4ZGU3MjJkMzI0MTVmMzNjMjA0MGRlLi42NmFjOTJhOTY2
YmQwZjBlNTU1ZDRkMWJjMDAyOGUwZWNjNjc2MjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApAQCAtMjcsOCArMjcs
NiBAQAogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAi
Q29tbWFuZExpbmVBUElNb2R1bGUuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgotCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjksMzMgKzY3LDIxIEBAIHZvaWQgV2ViSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBJbnNwZWN0b3I6Oklu
amVjdGVkCiAgICAgQ29tbWFuZExpbmVBUElNb2R1bGU6OmluamVjdElmTmVlZGVkKHRoaXMsIGlu
amVjdGVkU2NyaXB0KTsKIH0KIAotdm9pZCBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2Nh
cmRJbmplY3RlZFNjcmlwdHNGb3IoRE9NV2luZG93KiB3aW5kb3cpCit2b2lkIFdlYkluamVjdGVk
U2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0c0ZvcihET01XaW5kb3cmIHdpbmRv
dykKIHsKICAgICBpZiAobV9zY3JpcHRTdGF0ZVRvSWQuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBWZWN0b3I8bG9uZz4gaWRzVG9SZW1vdmU7Ci0gICAgZm9yIChjb25zdCBhdXRv
JiBpdCA6IG1faWRUb0luamVjdGVkU2NyaXB0KSB7Ci0gICAgICAgIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBpdC52YWx1ZS5nbG9iYWxPYmplY3QoKTsKLSAgICAg
ICAgaWYgKHdpbmRvdyAhPSBkb21XaW5kb3dGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmpl
Y3QpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1fc2NyaXB0U3RhdGVUb0lkLnJl
bW92ZShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICAgICAgaWRzVG9SZW1vdmUuYXBwZW5kKGl0
LmtleSk7Ci0gICAgfQotCi0gICAgZm9yIChhdXRvJiBpZCA6IGlkc1RvUmVtb3ZlKQotICAgICAg
ICBtX2lkVG9JbmplY3RlZFNjcmlwdC5yZW1vdmUoaWQpOwotCi0gICAgLy8gTm93IHJlbW92ZSBz
Y3JpcHQgc3RhdGVzIHRoYXQgaGF2ZSBpZCBidXQgbm8gaW5qZWN0ZWQgc2NyaXB0LgotICAgIFZl
Y3RvcjxKU0M6OkpTR2xvYmFsT2JqZWN0Kj4gc2NyaXB0U3RhdGVzVG9SZW1vdmU7Ci0gICAgZm9y
IChjb25zdCBhdXRvJiBpdCA6IG1fc2NyaXB0U3RhdGVUb0lkKSB7Ci0gICAgICAgIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBpdC5rZXk7Ci0gICAgICAgIGlmICh3
aW5kb3cgPT0gZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSkKLSAg
ICAgICAgICAgIHNjcmlwdFN0YXRlc1RvUmVtb3ZlLmFwcGVuZChsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICB9CisgICAgYXV0byogZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQoKTsKKyAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIGxleGljYWxH
bG9iYWxPYmplY3QgOiBzY3JpcHRTdGF0ZXNUb1JlbW92ZSkKLSAgICAgICAgbV9zY3JpcHRTdGF0
ZVRvSWQucmVtb3ZlKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIG1faWRUb0luamVjdGVkU2Ny
aXB0LnJlbW92ZUlmKFtkb2N1bWVudF0oYXV0byYgZW50cnkpIHsKKyAgICAgICAgcmV0dXJuIGV4
ZWN1dGlvbkNvbnRleHQoZW50cnkudmFsdWUuZ2xvYmFsT2JqZWN0KCkpID09IGRvY3VtZW50Owor
ICAgIH0pOworICAgIG1fc2NyaXB0U3RhdGVUb0lkLnJlbW92ZUlmKFtkb2N1bWVudF0oYXV0byYg
ZW50cnkpIHsKKyAgICAgICAgcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHQoZW50cnkua2V5KSA9PSBk
b2N1bWVudDsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oCmluZGV4
IDE2MTE5ZTU4NmY2ZDI0ZjNlMjUwMjQ2OWQ5MjQ5ZTE4NWI2MTBlM2EuLjRmMDQ2ZWU4Yzk3N2Vh
ZTQ5ZWJjYjUwZGY4NWJkZjEwYWFjNGIxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzY2FyZElu
amVjdGVkU2NyaXB0cygpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaXNjYXJkSW5qZWN0ZWRTY3Jp
cHRzRm9yKERPTVdpbmRvdyopOworICAgIHZvaWQgZGlzY2FyZEluamVjdGVkU2NyaXB0c0ZvcihE
T01XaW5kb3cmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZUluamVjdGVkU2NyaXB0
KGNvbnN0IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhNDQ3ZjcwNTM5ZTA2ZTRjODMwNDI3NmZjYjRj
ZTFhNTg1MTZlYWU4Li45MTkyYmE5ZDg0MTJhYjZlN2NhNGZlMGZiZWNiZDAyMzU0YTQ5Y2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwCkBAIC0xMTQsMjEgKzExNCwyMSBA
QCBFeHBlY3RlZDxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6QXBwbGljYXRpb25DYWNoZTo6
RnJhbWVXaXRoTWFuaWZlc3Q+PiwgUHJvdAogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
IlBhZ2UgZG9tYWluIG11c3QgYmUgZW5hYmxlZCJfcyk7CiAKICAgICBhdXRvIHJlc3VsdCA9IEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0
Pjo6Y3JlYXRlKCk7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9pbnNwZWN0ZWRQYWdlLm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7
Ci0gICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLmZvckVhY2hGcmFtZShbJl0oRnJhbWUmIGZy
YW1lKSB7CisgICAgICAgIGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZnJhbWUubG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKTsKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKLSAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8mIGhvc3QgPSBk
b2N1bWVudExvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKTsKICAgICAgICAgU3RyaW5nIG1h
bmlmZXN0VVJMID0gaG9zdC5hcHBsaWNhdGlvbkNhY2hlSW5mbygpLm1hbmlmZXN0LnN0cmluZygp
OwogICAgICAgICBpZiAoIW1hbmlmZXN0VVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgcmVz
dWx0LT5hZGRJdGVtKFByb3RvY29sOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVz
dDo6Y3JlYXRlKCkKLSAgICAgICAgICAgICAgICAuc2V0RnJhbWVJZChwYWdlQWdlbnQtPmZyYW1l
SWQoZnJhbWUpKQorICAgICAgICAgICAgICAgIC5zZXRGcmFtZUlkKHBhZ2VBZ2VudC0+ZnJhbWVJ
ZCgmZnJhbWUpKQogICAgICAgICAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkK
ICAgICAgICAgICAgICAgICAuc2V0U3RhdHVzKHN0YXRpY19jYXN0PGludD4oaG9zdC5zdGF0dXMo
KSkpCiAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KLSAgICB9CisgICAg
fSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBlYTU2ODAw
NTVhNGY0OWNlMjFiOTQzNjIxNDJjYTk4YzNiZDY2ZTQ2Li44MzIyYzhkYjJhOGE3ZGE5YjcxNDk0
MTMxY2M1NjRhNmNiZDMwMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNTAsNyArNTAsNiBAQAog
I2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAj
aW5jbHVkZSAiUGF0aDJELmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJT
dHJpbmdBZGFwdG9ycy5oIgogI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJXZWJHTEJ1ZmZlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAzODA1Zjg0MjQ1ZjZjYjczYzQ1
ODQ0MzY0ZDU0ZjgyMmI2YmViMjZkLi43YTc5MGJiMjNjOGYzN2FmNTdlNDI4NGIzNjdjYWQ5ZDY3
OWE0MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTUFnZW50LmNwcApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgIkluc3RydW1l
bnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nU2VjdXJpdHkuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUg
IkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIk11dGF0
aW9uRXZlbnQuaCIKQEAgLTk2LDcgKzk3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5o
IgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
ICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpAQCAtMTE2MywyMCArMTE2NCwxNyBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50Ojpmb2N1c05vZGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBB
U1NFUlQobV9ub2RlVG9Gb2N1cyk7Ci0KLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fbm9kZVRv
Rm9jdXMuZ2V0KCk7Ci0gICAgbV9ub2RlVG9Gb2N1cyA9IG51bGxwdHI7Ci0KLSAgICBGcmFtZSog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgYXV0byBub2RlID0gc3RkOjpl
eGNoYW5nZShtX25vZGVUb0ZvY3VzLCBudWxscHRyKTsKKyAgICBhdXRvIGZyYW1lID0gbm9kZS0+
ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRl
KGZyYW1lKTsKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKKyAgICBhdXRvJiBn
bG9iYWxPYmplY3QgPSBtYWluV29ybGRHbG9iYWxPYmplY3QoKmZyYW1lKTsKKyAgICBhdXRvIGlu
amVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Io
Jmdsb2JhbE9iamVjdCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaW5qZWN0ZWRTY3JpcHQuaW5zcGVjdE9iamVjdChub2RlQXNT
Y3JpcHRWYWx1ZSgqc2NyaXB0U3RhdGUsIG5vZGUuZ2V0KCkpKTsKKyAgICBpbmplY3RlZFNjcmlw
dC5pbnNwZWN0T2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgbm9kZS5nZXQo
KSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkKQpAQCAtMTg5Miw3ICsxODkw
LDExIEBAIFJlZjxQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyCiAKICAgICAgICAgaWYgKGRvY3VtZW50KSB7
CiAgICAgICAgICAgICBoYW5kbGVyT2JqZWN0ID0gc2NyaXB0TGlzdGVuZXIuZW5zdXJlSlNGdW5j
dGlvbigqZG9jdW1lbnQpOwotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gV2ViQ29yZTo6Z2xv
YmFsT2JqZWN0KHNjcmlwdExpc3RlbmVyLmlzb2xhdGVkV29ybGQoKSwgZG9jdW1lbnQpOworICAg
ICAgICAgICAgaWYgKGF1dG8gZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCB0aGUgY2FuRXhlY3V0ZVNjcmlwdHMgY2hl
Y2sgaGVyZT8KKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLmNhbkV4ZWN1dGVT
Y3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChzY3JpcHRMaXN0ZW5lci5p
c29sYXRlZFdvcmxkKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGhhbmRsZXJPYmplY3QgJiYgZ2xvYmFsT2JqZWN0KSB7CkBAIC0yODQ2LDEyICsyODQ4LDEyIEBA
IFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbnNwZWN0b3JET01BZ2Vu
dDo6cmVzb2x2ZU5vZGUoTm9kZSogbm9kCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBhdXRvJiBzdGF0ZSA9ICptYWluV29ybGRFeGVjU3RhdGUoZnJhbWUp
OwotICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmpl
Y3RlZFNjcmlwdEZvcigmc3RhdGUpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IG1haW5Xb3Js
ZEdsb2JhbE9iamVjdCgqZnJhbWUpOworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcigmZ2xvYmFsT2JqZWN0KTsKICAgICBp
ZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVl
KHN0YXRlLCBub2RlKSwgb2JqZWN0R3JvdXApOworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53
cmFwT2JqZWN0KG5vZGVBc1NjcmlwdFZhbHVlKGdsb2JhbE9iamVjdCwgbm9kZSksIG9iamVjdEdy
b3VwKTsKIH0KIAogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6OnNjcmlwdFZhbHVlQXNOb2RlKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXggNjI4NmI2NTIxMjZl
MGRkMTMzZDJjMjRlNDdmY2Q3Y2RjNzM3NmE3My4uNWQ1MTJlNzhlMjAwMzI4OGQwMTUzMTM2ODdl
NjgzODk5MDhiNzNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAK
ICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlSW5kZXhlZERh
dGFiYXNlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4KQEAgLTYx
NywxNCArNjE3LDE3IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRh
KGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0CiAgICAgaWYgKCFnZXREb2N1
bWVudEFuZElEQkZhY3RvcnlGcm9tRnJhbWVPclNlbmRGYWlsdXJlKGZyYW1lLCBkb2N1bWVudCwg
aWRiRmFjdG9yeSwgY2FsbGJhY2spKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbmplY3RlZFNj
cmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2Ny
aXB0Rm9yKG1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSkpOwotICAgIFJlZlB0cjxJREJLZXlSYW5n
ZT4gaWRiS2V5UmFuZ2UgPSBrZXlSYW5nZSA/IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKCprZXlS
YW5nZSkgOiBudWxscHRyOwotICAgIGlmIChrZXlSYW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsKLSAg
ICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3QgcGFyc2Uga2V5IHJhbmdlLiJf
cyk7Ci0gICAgICAgIHJldHVybjsKKyAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdl
OworICAgIGlmIChrZXlSYW5nZSkgeworICAgICAgICBpZGJLZXlSYW5nZSA9IGlkYktleVJhbmdl
RnJvbUtleVJhbmdlKCprZXlSYW5nZSk7CisgICAgICAgIGlmICghaWRiS2V5UmFuZ2UpIHsKKyAg
ICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IHBhcnNlIGtleSByYW5n
ZS4iX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCi0gICAgUmVm
PERhdGFMb2FkZXI+IGRhdGFMb2FkZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIFdU
Rk1vdmUoY2FsbGJhY2spLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5h
bWUsIFdURk1vdmUoaWRiS2V5UmFuZ2UpLCBza2lwQ291bnQsIHBhZ2VTaXplKTsKKyAgICBhdXRv
IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRG
b3IoJm1haW5Xb3JsZEdsb2JhbE9iamVjdCgqZnJhbWUpKTsKKyAgICBhdXRvIGRhdGFMb2FkZXIg
PSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2spLCBpbmplY3Rl
ZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIFdURk1vdmUoaWRiS2V5UmFuZ2Up
LCBza2lwQ291bnQsIHBhZ2VTaXplKTsKICAgICBkYXRhTG9hZGVyLT5zdGFydChpZGJGYWN0b3J5
LCAmZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAppbmRleCAyMjNhNjc2N2JlMjcxZWU0ZDIyZGVkMWQ2YmU2MGNhNzA3ODE3Yzgx
Li4zY2ViNGI0N2YxMDY4YTBhZmVhZjAwZjE3OWMyODAwYzQ3NmJkNmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAi
SlNFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJKU1dlYlNvY2tldC5oIgogI2luY2x1ZGUgIkxvYWRl
clN0cmF0ZWd5LmgiCkBAIC02NCw3ICs2NSw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9j
dW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKQEAgLTEwNDMsMTEgKzEwNDMsMTEgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+PiBJbnNw
ZWN0b3JOZXR3b3JrQWcKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIk1pc3NpbmcgZnJhbWUgb2Ygd2ViIHNvY2tldCBmb3IgZ2l2ZW4gcmVxdWVzdElkIl9z
KTsKIAotICAgIGF1dG8mIHN0YXRlID0gKm1haW5Xb3JsZEV4ZWNTdGF0ZShmcmFtZSk7Ci0gICAg
YXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2Ny
aXB0Rm9yKCZzdGF0ZSk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkR2xvYmFs
T2JqZWN0KCpmcmFtZSk7CisgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKCZnbG9iYWxPYmplY3QpOwogICAgIEFTU0VSVCgh
aW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKTsKIAotICAgIGF1dG8gb2JqZWN0ID0gaW5qZWN0
ZWRTY3JpcHQud3JhcE9iamVjdCh3ZWJTb2NrZXRBc1NjcmlwdFZhbHVlKHN0YXRlLCB3ZWJTb2Nr
ZXQpLCBvYmplY3RHcm91cCk7CisgICAgYXV0byBvYmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFw
T2JqZWN0KHdlYlNvY2tldEFzU2NyaXB0VmFsdWUoZ2xvYmFsT2JqZWN0LCB3ZWJTb2NrZXQpLCBv
YmplY3RHcm91cCk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBjYXN0IFdlYlNvY2tldCIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAppbmRleCBiN2M2YjBlYjIzNGZiMTAzMzllZDFhZmQyOGE1OTcyYWExNDA0
MTVmLi4xMTgyZmEzZWQ3NDJlNzA4OTg4OGM2N2JhYWE1YTJjNmIwNDA4Y2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJQYWdlRGVidWdnZXIuaCIK
ICNpbmNsdWRlICJQYWdlSGVhcEFnZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2lu
Y2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiV2ViRGVidWdnZXJBZ2Vu
dC5oIgpAQCAtNjYsNyArNjUsNiBAQAogI2luY2x1ZGUgIlJ1bkxvb3BPYnNlcnZlci5oIgogI2Vu
ZGlmCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwpAQCAtMjkwLDcgKzI4OCwxMyBAQCBkb3VibGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGlt
ZXN0YW1wKCkKICAgICByZXR1cm4gbV9lbnZpcm9ubWVudC5leGVjdXRpb25TdG9wd2F0Y2goKS5l
bGFwc2VkVGltZSgpLnNlY29uZHMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpzdGFydEZyb21Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCitzdGF0aWMgRnJhbWUqIGZyYW1lKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBhdXRvIGNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0KGdsb2JhbE9i
amVjdCk7CisgICAgcmV0dXJuIGlzPERvY3VtZW50Pihjb250ZXh0KSA/IGRvd25jYXN0PERvY3Vt
ZW50PigqY29udGV4dCkuZnJhbWUoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgLy8gQWxsb3cgZHVwbGljYXRlIHVu
bmFtZWQgcHJvZmlsZXMuIERpc2FsbG93IGR1cGxpY2F0ZSBuYW1lZCBwcm9maWxlcy4KICAgICBp
ZiAoIXRpdGxlLmlzRW1wdHkoKSkgewpAQCAtMzEwLDcgKzMxNCw3IEBAIHZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6c3RhcnRGcm9tQ29uc29sZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVj
LCBjb25zdCBTCiAgICAgaWYgKCFtX3RyYWNraW5nICYmIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxl
UmVjb3Jkcy5pc0VtcHR5KCkpCiAgICAgICAgIHN0YXJ0UHJvZ3JhbW1hdGljQ2FwdHVyZSgpOwog
Ci0gICAgbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzLmFwcGVuZChjcmVhdGVSZWNvcmRF
bnRyeShUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YSh0aXRs
ZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6Q29uc29sZVByb2ZpbGUsIHRydWUsIGZyYW1lRnJvbUV4
ZWNTdGF0ZShleGVjKSkpOworICAgIG1fcGVuZGluZ0NvbnNvbGVQcm9maWxlUmVjb3Jkcy5hcHBl
bmQoY3JlYXRlUmVjb3JkRW50cnkoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVDb25zb2xl
UHJvZmlsZURhdGEodGl0bGUpLCBUaW1lbGluZVJlY29yZFR5cGU6OkNvbnNvbGVQcm9maWxlLCB0
cnVlLCBmcmFtZShnbG9iYWxPYmplY3QpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c3RvcEZyb21Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQpAQCAtNjc2LDcgKzY4MCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgLypiYXRj
aElkKi8sIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUpCiB7Ci0gICAgYXBwZW5kUmVj
b3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbklE
LCBzYW1wbGVJZCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBmcmFt
ZUZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgIGFwcGVuZFJlY29yZChU
aW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YShhY3Rpb25JRCwgc2Ft
cGxlSWQpLCBUaW1lbGluZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWUobGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogfQogCiBzdGF0aWMgUHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVu
dFR5cGUgdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCBiZGZm
ODQzNGRiZWY4YzU0ODViMTUwNmVkMjA4YTAxYzllY2FkMjI2Li42N2Y4ZmI1NWI2MDUyNzc2MGZl
ZWFhZmY3YzM0OTM3NjQzYmU4M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC0zMiwxNCArMzIsMTIgQEAKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIldl
YkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNv
bGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEFyZ3VtZW50cy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CkBAIC00OSwxOSArNDcsMTQgQEAgV2ViQ29uc29sZUFnZW50OjpX
ZWJDb25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0KQogewogfQogCi1XZWJDb25z
b2xlQWdlbnQ6On5XZWJDb25zb2xlQWdlbnQoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgV2ViQ29uc29s
ZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKK3ZvaWQgV2Vi
Q29uc29sZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cmIHdpbmRvdykKIHsK
LSAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2NvbnNvbGVNZXNzYWdlcykgewotICAgICAgICBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gbWVzc2FnZS0+Z2xvYmFs
T2JqZWN0KCk7Ci0gICAgICAgIGlmICghbGV4aWNhbEdsb2JhbE9iamVjdCkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpZiAoZG9tV2luZG93RnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xv
YmFsT2JqZWN0KSAhPSB3aW5kb3cpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbWVz
c2FnZS0+Y2xlYXIoKTsKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQo
KSkgeworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2NvbnNvbGVNZXNzYWdlcykgewor
ICAgICAgICAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHQobWVzc2FnZS0+Z2xvYmFsT2JqZWN0KCkp
ID09IGRvY3VtZW50KQorICAgICAgICAgICAgICAgIG1lc3NhZ2UtPmNsZWFyKCk7CisgICAgICAg
IH0KICAgICB9Ci0KICAgICBzdGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXImPiht
X2luamVjdGVkU2NyaXB0TWFuYWdlcikuZGlzY2FyZEluamVjdGVkU2NyaXB0c0Zvcih3aW5kb3cp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNv
bnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xl
QWdlbnQuaAppbmRleCA5MGM3MDhlOWI4MDE3MTJiNjU5NDA3YWUwYzFkNjY4NjhhZWE5NGE4Li5h
NjE0NzUyZTkwY2RlYWUxMzg5MTZmYmY4MGVmODU1ODRiN2E1MTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmgKQEAgLTI1LDcgKzI1
LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2Uu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaD4KIApAQCAtMzYsMTQgKzM1LDEyIEBA
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBjbGFzcyBX
ZWJDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvbnNvbGVBZ2VudCk7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV2ViQ29uc29sZUFnZW50KFdlYkFnZW50
Q29udGV4dCYpOwotICAgIH5XZWJDb25zb2xlQWdlbnQoKSBvdmVycmlkZTsKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBXZWJDb25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7CiAKK3B1Ymxp
YzoKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KLSAgICB2b2lkIGZyYW1lV2luZG93
RGlzY2FyZGVkKERPTVdpbmRvdyopOworICAgIHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWQoRE9N
V2luZG93Jik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRp
dEFnZW50LmNwcAppbmRleCBkNTEwZGMxNzA1OGUxMmJhZGU5YWUwOTJkODAxOWVhODZjOGQzMzRm
Li4xNzRkNTExOTM0Yjk5N2IxYmEwZjk1Y2FiZTFjMzM2OTA4NzhlZmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1ZGl0QWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5j
cHAKQEAgLTI5LDEyICsyOSwxMiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0RPTVdp
bmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNJbnNwZWN0b3JBdWRpdERPTU9iamVjdC5oIgogI2luY2x1ZGUg
IkpTSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC02MCw5ICs2MCw3IEBAIEluamVjdGVkU2NyaXB0IFBhZ2VB
dWRpdEFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6
UnVuCiB7CiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHRJZCkKICAgICAgICAgcmV0dXJuIGluamVj
dGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlvbkNvbnRleHRJ
ZCk7Ci0KLSAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4
ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgIHJl
dHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxk
R2xvYmFsT2JqZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSkpOwogfQogCiBJbmplY3Rl
ZFNjcmlwdCBQYWdlQXVkaXRBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKFByb3RvY29sOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6
OkV4ZWN1dGlvbkNvbnRleHRJZD4mJiBleGVjdXRpb25Db250ZXh0SWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50
LmNwcAppbmRleCA1NWQ5NTE4NDk0MTk1Yjk2ZGYxNjVhOTRjMWMyOTYzYWRjZWI4Mzk1Li44MmI1
ZDI0NGI2Mjk2NDYxNWZjNGMxMjM3MjM1MTRmMjY4MWIzOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTM4LDExICszOCwxMSBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2lu
Y2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZURlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC0xMzgsMTAgKzEzOCw4IEBAIHZvaWQgUGFnZURlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iCiAKIEluamVjdGVkU2NyaXB0IFBhZ2VEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlw
dEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25h
bDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9uQ29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRl
eHRJZCkKIHsKLSAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHRJZCkgewotICAgICAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1haW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0
ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdl
cigpLmluamVjdGVkU2NyaXB0Rm9yKHNjcmlwdFN0YXRlKTsKLSAgICB9CisgICAgaWYgKCFleGVj
dXRpb25Db250ZXh0SWQpCisgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5p
bmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxkR2xvYmFsT2JqZWN0KG1faW5zcGVjdGVkUGFnZS5t
YWluRnJhbWUoKSkpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcklkKCpleGVjdXRpb25Db250ZXh0
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZU5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggYmI0ZjZiYTdjMmNjNjE4NTg1ODcxOTZjOTczYTJjMzg2Zjg4ZjRmOC4uZDA2OTBk
NDRkZTNjZWFlZDlkYzMyNWE4YmJmMWJlZDdiODdmYmZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlTmV0d29ya0FnZW50LmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5o
IgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VS
dW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IGIzMmYzZjY5OWMyZDJhMzc3Mjg5NzYwYjI0NWFjODE3
ODQxMDI0NTguLmRlNTY4OWFhMzM0NTJhZmQ5NWEzMjkyYWIxODA4YWE5NWUxZjZiMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlUnVudGltZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZVJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTM3LDExICszNywxMCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0Fn
ZW50cy5oIgotI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgorI2luY2x1ZGUgIkpTRE9NV2lu
ZG93Q3VzdG9tLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlNjcmlwdFN0
YXRlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUVtdWxhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3Jp
cHQuaD4KQEAgLTkxLDcgKzkwLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gUGFn
ZVJ1bnRpbWVBZ2VudDo6ZGlzYWJsZSgpCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmZyYW1lTmF2
aWdhdGVkKEZyYW1lJiBmcmFtZSkKIHsKICAgICAvLyBFbnN1cmUgZXhlY3V0aW9uIGNvbnRleHQg
aXMgY3JlYXRlZCBmb3IgdGhlIGZyYW1lIGV2ZW4gaWYgaXQgZG9lc24ndCBoYXZlIHNjcmlwdHMu
Ci0gICAgbWFpbldvcmxkRXhlY1N0YXRlKCZmcmFtZSk7CisgICAgbWFpbldvcmxkR2xvYmFsT2Jq
ZWN0KGZyYW1lKTsKIH0KIAogdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRnJhbWUmIGZyYW1lLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQpAQCAtMTA2
LDggKzEwNSw3IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkCiBJbmplY3RlZFNjcmlwdCBQYWdl
UnVudGltZUFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgc3RkOjpvcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6RXhlY3V0aW9u
Q29udGV4dElkPiYmIGV4ZWN1dGlvbkNvbnRleHRJZCkKIHsKICAgICBpZiAoIWV4ZWN1dGlvbkNv
bnRleHRJZCkgewotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzY3JpcHRTdGF0ZSA9IG1h
aW5Xb3JsZEV4ZWNTdGF0ZSgmbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpKTsKLSAgICAgICAg
SW5qZWN0ZWRTY3JpcHQgcmVzdWx0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRT
Y3JpcHRGb3Ioc2NyaXB0U3RhdGUpOworICAgICAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQgPSBp
bmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvcigmbWFpbldvcmxkR2xvYmFs
T2JqZWN0KG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKSkpOwogICAgICAgICBpZiAocmVzdWx0
Lmhhc05vVmFsdWUoKSkKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiBtYWluIHdvcmxkIGV4ZWN1dGlvbiBjb250ZXh0IG5vdCBmb3VuZCJfczsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTEzNSwyNSArMTMzLDI1IEBAIHZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6
cmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9uKCkKICAgICBpZiAoIXBhZ2VBZ2VudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvKiBmcmFtZSA9ICZtX2luc3BlY3RlZFBhZ2Uu
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKLSAgICAgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJv
dXRUb0V4ZWN1dGVTY3JpcHQpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgbV9pbnNwZWN0
ZWRQYWdlLmZvckVhY2hGcmFtZShbJl0oRnJhbWUmIGZyYW1lKSB7CisgICAgICAgIGlmICghZnJh
bWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQor
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZnJhbWVJZCA9IHBhZ2VBZ2VudC0+
ZnJhbWVJZChmcmFtZSk7CisgICAgICAgIGF1dG8gZnJhbWVJZCA9IHBhZ2VBZ2VudC0+ZnJhbWVJ
ZCgmZnJhbWUpOwogCiAgICAgICAgIC8vIEFsd2F5cyBzZW5kIHRoZSBtYWluIHdvcmxkIGZpcnN0
LgotICAgICAgICBhdXRvKiBtYWluR2xvYmFsT2JqZWN0ID0gbWFpbldvcmxkRXhlY1N0YXRlKGZy
YW1lKTsKLSAgICAgICAgbm90aWZ5Q29udGV4dENyZWF0ZWQoZnJhbWVJZCwgbWFpbkdsb2JhbE9i
amVjdCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgICAgICBhdXRvJiBtYWluR2xvYmFs
T2JqZWN0ID0gbWFpbldvcmxkR2xvYmFsT2JqZWN0KGZyYW1lKTsKKyAgICAgICAgbm90aWZ5Q29u
dGV4dENyZWF0ZWQoZnJhbWVJZCwgJm1haW5HbG9iYWxPYmplY3QsIG1haW5UaHJlYWROb3JtYWxX
b3JsZCgpKTsKIAotICAgICAgICBmb3IgKGF1dG8mIGpzV2luZG93UHJveHkgOiBmcmFtZS0+d2lu
ZG93UHJveHkoKS5qc1dpbmRvd1Byb3hpZXNBc1ZlY3RvcigpKSB7CisgICAgICAgIGZvciAoYXV0
byYganNXaW5kb3dQcm94eSA6IGZyYW1lLndpbmRvd1Byb3h5KCkuanNXaW5kb3dQcm94aWVzQXNW
ZWN0b3IoKSkgewogICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0ganNXaW5kb3dQcm94
eS0+d2luZG93KCk7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09IG1haW5HbG9iYWxP
YmplY3QpCisgICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0ID09ICZtYWluR2xvYmFsT2JqZWN0
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBhdXRvJiBzZWN1cml0
eU9yaWdpbiA9IGRvd25jYXN0PERPTVdpbmRvdz4oanNXaW5kb3dQcm94eS0+d3JhcHBlZCgpKS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICAgICAgbm90aWZ5Q29udGV4dENy
ZWF0ZWQoZnJhbWVJZCwgZ2xvYmFsT2JqZWN0LCBqc1dpbmRvd1Byb3h5LT53b3JsZCgpLCAmc2Vj
dXJpdHlPcmlnaW4pOwogICAgICAgICB9Ci0gICAgfQorICAgIH0pOwogfQogCiBzdGF0aWMgUHJv
dG9jb2w6OlJ1bnRpbWU6OkV4ZWN1dGlvbkNvbnRleHRUeXBlIHRvUHJvdG9jb2woRE9NV3JhcHBl
cldvcmxkOjpUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9Xb3JrZXJBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCmluZGV4IDhmN2UxNWVkOTVm
MWM5MjJmNGU0YjFlOWYwODRmMDkzMWUxMTg4OWQuLjdjOTY0NzUyZWE3N2I0NmFjMDBmNGUyMzVl
ZTI3YzJiNzkwODQ0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckF1ZGl0QWdlbnQuY3BwCkBAIC0yNiwxNCArMjYsMTIg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrZXJBdWRpdEFnZW50LmgiCiAK
LSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw3ICs1Myw5
IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlckF1ZGl0QWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZh
bChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVyCiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlw
dCgpOwogICAgIH0KIAotICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3Rl
ZFNjcmlwdEZvcihnbG9iYWxPYmplY3QobV9nbG9iYWxTY29wZSkpOworICAgIC8vIEZJWE1FOiBX
aGF0IGd1YXJhbnRlZXMgbV9nbG9iYWxTY29wZS5zY3JpcHQoKSBpcyBub24tbnVsbD8KKyAgICAv
LyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIGdsb2JhbFNjb3BlV3JhcHBlcigpIGlzIG5vbi1udWxs
PworICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS5pbmplY3RlZFNjcmlwdEZvciht
X2dsb2JhbFNjb3BlLnNjcmlwdCgpLT5nbG9iYWxTY29wZVdyYXBwZXIoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZDQ2ODQz
ZmQ2Y2I4MDBkYWJlNTE1MTdjZmExMDQ2MGZjYzdlNDVmYi4uZGZiODY2MzZhMTA4NzgyYjFjNWNm
OWNhYTczMzlmYTM4YzdlMjU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI2
LDggKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrZXJEZWJ1Z2dl
ckFnZW50LmgiCiAKLSNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorI2luY2x1ZGUgIkpTRE9NR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKKyNp
bmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0
TWFuYWdlci5oPgpAQCAtNjAsNyArNjEsOSBAQCBJbmplY3RlZFNjcmlwdCBXb3JrZXJEZWJ1Z2dl
ckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoUHJvdG9jb2w6OkVycm9yU3RyaW5nJgogICAg
ICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gaW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0KG1fZ2xvYmFs
U2NvcGUpKTsKKyAgICAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIG1fZ2xvYmFsU2NvcGUuc2Ny
aXB0KCkgaXMgbm9uLW51bGw/CisgICAgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyBnbG9iYWxT
Y29wZVdyYXBwZXIoKSBpcyBub24tbnVsbD8KKyAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCkuaW5qZWN0ZWRTY3JpcHRGb3IobV9nbG9iYWxTY29wZS5zY3JpcHQoKS0+Z2xvYmFsU2Nv
cGVXcmFwcGVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyUnVudGlt
ZUFnZW50LmNwcAppbmRleCA1ODBkYzBhOTNiMzY3NzgxZjcyODk5NWRiMWFlZGJlYjM3YzEyYmEy
Li41ZmFhYzE3OWRkZWY5ODkwZWZlZjE2ODhlM2M4OTI1NjY1YTlkMDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJSdW50aW1lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlclJ1
bnRpbWVBZ2VudC5jcHAKQEAgLTMyLDggKzMyLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXb3JrZXJSdW50aW1lQWdlbnQuaCIKIAotI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgi
CisjaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgogCkBAIC01OCw3ICs1
OSw5IEBAIEluamVjdGVkU2NyaXB0IFdvcmtlclJ1bnRpbWVBZ2VudDo6aW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKFByb3RvY29sOjpFcnJvclN0cmluZyYKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2Ny
aXB0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVj
dGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdChtX2dsb2JhbFNjb3BlKSk7CisgICAgLy8gRklYTUU6
IFdoYXQgZ3VhcmFudGVlcyBtX2dsb2JhbFNjb3BlLnNjcmlwdCgpIGlzIG5vbi1udWxsPworICAg
IC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgZ2xvYmFsU2NvcGVXcmFwcGVyKCkgaXMgbm9uLW51
bGw/CisgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLmluamVjdGVkU2NyaXB0Rm9y
KG1fZ2xvYmFsU2NvcGUuc2NyaXB0KCktPmdsb2JhbFNjb3BlV3JhcHBlcigpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>