<?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>47044</bug_id>
          
          <creation_ts>2010-10-01 21:59:06 -0700</creation_ts>
          <short_desc>Add FileSystemSync implementation for Worker</short_desc>
          <delta_ts>2010-10-06 16:09:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>46405</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ericu</cc>
    
    <cc>levin</cc>
    
    <cc>michaeln</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288653</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-01 21:59:06 -0700</bug_when>
    <thetext>Add FileSystemSync implementation for Worker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288660</commentid>
    <comment_count>1</comment_count>
      <attachid>69568</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-02 00:23:00 -0700</bug_when>
    <thetext>Created attachment 69568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288663</commentid>
    <comment_count>2</comment_count>
      <attachid>69570</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-02 01:05:45 -0700</bug_when>
    <thetext>Created attachment 69570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289473</commentid>
    <comment_count>3</comment_count>
      <attachid>69761</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-05 00:09:27 -0700</bug_when>
    <thetext>Created attachment 69761
Patch

Fixed nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289526</commentid>
    <comment_count>4</comment_count>
      <attachid>69761</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-10-05 03:36:36 -0700</bug_when>
    <thetext>Comment on attachment 69761
Patch

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

Just the comments from my phase 1 pass: nits.

&gt; WebCore/fileapi/DOMFileSystemBase.h:48
&gt; +class EntriesCallback;

out of order.

&gt; WebCore/fileapi/DOMFileSystemBase.h:74
&gt; +    bool readDirectory(DirectoryReaderBase* reader, const String&amp; path, PassRefPtr&lt;EntriesCallback&gt;, PassRefPtr&lt;ErrorCallback&gt;);

s/src/source/
Remove param names that add no information (entry, base, reader).

&gt; WebCore/fileapi/Entry.h:45
&gt; +class EntrySync;

out of order.

&gt; WebCore/fileapi/EntryArraySync.h:51
&gt; +    static PassRefPtr&lt;EntryArraySync&gt; create(EntryArray* entries);

remove param name.

&gt; WebCore/fileapi/EntryBase.h:28
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  */

Mistaken change?

&gt; WebCore/fileapi/EntrySync.h:50
&gt; +    static PassRefPtr&lt;EntrySync&gt; create(EntryBase* entry);

param name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289887</commentid>
    <comment_count>5</comment_count>
      <attachid>69761</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-10-05 14:28:49 -0700</bug_when>
    <thetext>Comment on attachment 69761
Patch

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

Just a few things to address.

&gt; WebCore/fileapi/DirectoryEntry.cpp:54
&gt; +    filesystem()-&gt;scheduleCallback(errorCallback, FileError::create(error));

Please get rid of the macro.

&gt; WebCore/fileapi/Entry.cpp:51
&gt; +    filesystem()-&gt;scheduleCallback(errorCallback, FileError::create(error));

Please get rid of the macro.

&gt;&gt; WebCore/fileapi/EntrySync.h:50
&gt;&gt; +    static PassRefPtr&lt;EntrySync&gt; create(EntryBase* entry);
&gt; 
&gt; param name.

(remove the param name)

&gt; WebCore/fileapi/FileEntry.h:-42
&gt; -class DOMFileSystem;

Why didn&apos;t this become DOMFileSystemBase?

&gt; WebCore/platform/AsyncFileSystem.h:63
&gt; +    // This should return false if there&apos;re no pending operations.

s/there&apos;re/there are/

&gt; WebCore/workers/WorkerContext.h:51
&gt; +    class DOMFileSystemSync;

out of order.

&gt; WebKit/chromium/src/WorkerAsyncFileSystemChromium.cpp:77
&gt; +        return false;

It seems like m_bridgeForLastOperation should be cleared at the end of this.

If that is true, then consider
RefPtr&lt;&gt; bridge = m_bridge.release();

and use bridge. Now bridge will get deref&apos;ed when this function is exited.

&gt; WebKit/chromium/src/WorkerAsyncFileSystemChromium.h:62
&gt; +    virtual bool waitCompletion();

s/waitCompletion/waitForOperationToComplete/

&gt; WebKit/chromium/src/WorkerAsyncFileSystemChromium.h:82
&gt; +    RefPtr&lt;WebKit::WorkerFileSystemCallbacksBridge&gt; m_bridgeForLastOperation;

m_bridgeForCurrentOperation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290138</commentid>
    <comment_count>6</comment_count>
      <attachid>69899</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-06 01:32:43 -0700</bug_when>
    <thetext>Created attachment 69899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290143</commentid>
    <comment_count>7</comment_count>
      <attachid>69901</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-06 01:50:56 -0700</bug_when>
    <thetext>Created attachment 69901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290146</commentid>
    <comment_count>8</comment_count>
      <attachid>69901</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-10-06 01:59:18 -0700</bug_when>
    <thetext>Comment on attachment 69901
Patch

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

Just a few nits to address.

&gt; WebCore/fileapi/DOMFileSystemBase.h:72
&gt; +    bool getFile(const EntryBase* base, const String&amp; path, PassRefPtr&lt;Flags&gt;, PassRefPtr&lt;EntryCallback&gt;, PassRefPtr&lt;ErrorCallback&gt;);

remove &quot;base&quot;

&gt; WebCore/fileapi/DOMFileSystemBase.h:73
&gt; +    bool getDirectory(const EntryBase* base, const String&amp; path, PassRefPtr&lt;Flags&gt;, PassRefPtr&lt;EntryCallback&gt;, PassRefPtr&lt;ErrorCallback&gt;);

remove &quot;base&quot;

&gt; WebCore/fileapi/FileEntry.h:-42
&gt; -class DOMFileSystem;

Please consider adding this back but as Base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290641</commentid>
    <comment_count>9</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-06 16:09:10 -0700</bug_when>
    <thetext>Committed r69249: &lt;http://trac.webkit.org/changeset/69249&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69568</attachid>
            <date>2010-10-02 00:23:00 -0700</date>
            <delta_ts>2010-10-02 01:05:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47044-20101002002259.patch</filename>
            <type>text/plain</type>
            <size>90450</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhM2MxYjhmZDM2MzdjYmNlYWUwMDcxMGMxYmY1OTEyYmM4YTgwMGU0Li5mYWY0ODdm
ODFmZjQxZTkyYTBmZTg5YTk3MGYwNWU3ZDMzN2RhYWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMDEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVt
U3luYyBpbXBsZW1lbnRhdGlvbiBmb3IgV29ya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA0NAorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L2FzeW5jLW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qczoKKyAgICAgICAgKiBmYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dDogVXBk
YXRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
eW5jLW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTAtMDktMzAgIEtpbnVrbyBZYXN1ZGEg
IDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJh
dGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25z
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWE4MmZjMDRhOTdkMTNmYzliMDBjNmFkMWRiZjNmYzZhNDE1Zjcy
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1v
cGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTA5MDQx
YTVhOGQ2MmE5ZDJlZGU3Mjk4MjJmOTRhYWUwM2YxMmNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCkBA
IC0wLDAgKzEsMTAyIEBACitkZXNjcmlwdGlvbigiVGVzdCBtYWtpbmcgbXVsdGlwbGUgYXN5bmMg
RmlsZVN5c3RlbSBvcGVyYXRpb25zLiIpOworCit2YXIgZmlsZVN5c3RlbSA9IG51bGw7CisKK3Zh
ciBhOwordmFyIGI7Cit2YXIgYzsKK3ZhciBkOworCit2YXIgcGF0aHMgPSBbXTsKK3ZhciBkaXJz
Q291bnQgPSAwOwordmFyIHJlYWRlciA9IG51bGw7CisKK2Z1bmN0aW9uIGVycm9yQ2FsbGJhY2so
ZXJyb3IpIHsKKyAgICBkZWJ1ZygiR290IGVycm9yOiAiICsgZXJyb3IuY29kZSk7CisgICAgcmVt
b3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbS5yb290KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KworZnVuY3Rpb24gZW50cmllc0NhbGxiYWNrKGVudHJpZXMpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgcGF0aHMucHVzaChlbnRyaWVz
W2ldLmZ1bGxQYXRoKTsKKyAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCisgICAg
ICAgICAgICBkaXJzQ291bnQrKzsKKyAgICB9CisgICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkgewor
ICAgICAgICByZWFkZXIucmVhZEVudHJpZXMoZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXRocy5zb3J0KCk7CisgICAgICAgIHNob3VsZEJl
KCciJyArIHBhdGhzLmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCJkaXJzQ291bnQiLCAiMyIpOworICAgICAgICByZW1vdmVSZWN1cnNp
dmVseShmaWxlU3lzdGVtLnJvb3QpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHZlcmlmeSgpIHsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIHRoZSBGaWxlU3lz
dGVtIHN0YXR1cy4iKTsKKyAgICByZWFkZXIgPSBmaWxlU3lzdGVtLnJvb3QuY3JlYXRlUmVhZGVy
KCk7CisgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFj
ayk7Cit9CisKK2Z1bmN0aW9uIGFzeW5jVGVzdDIoKSB7CisgICAgZGVidWcoIlN0YXJ0aW5nIGFz
eW5jIHRlc3Qgc3RhZ2UgMi4iKTsKKworICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigp
OworICAgIHZhciBkb25lID0gZnVuY3Rpb24oKSB7IGhlbHBlci5kb25lKCk7IH07CisKKyAgICBo
ZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBhLmNvcHlUbyhiLCAndG1wJywgZG9uZSwgZXJyb3JDYWxs
YmFjayk7IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IGEuZ2V0TWV0YWRhdGEoZG9u
ZSwgZXJyb3JDYWxsYmFjayk7IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IGIuZ2V0
UGFyZW50KGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9u
KCkgeyBjLmNvcHlUbyhmaWxlU3lzdGVtLnJvb3QsICdmJywgZG9uZSwgZXJyb3JDYWxsYmFjayk7
IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9v
dCwgJ2QyJywgZG9uZSwgZXJyb3JDYWxsYmFjayk7IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rp
b24oKSB7IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSwgZG9uZSwg
ZXJyb3JDYWxsYmFjayk7IH0pOworCisgICAgaGVscGVyLmpvaW4odmVyaWZ5KTsKK30KKworZnVu
Y3Rpb24gYXN5bmNUZXN0MSgpIHsKKyAgICBkZWJ1ZygiU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFn
ZSAxLiIpOworCisgICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7CisgICAgdmFyIHJv
b3QgPSBmaWxlU3lzdGVtLnJvb3Q7CisKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290
LmdldEZpbGUoJ2EnLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBh
ID0gZW50cnk7CisgICAgICAgIGhlbHBlci5kb25lKCk7CisgICAgfSwgZXJyb3JDYWxsYmFjayk7
IH0pOworCisgICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXREaXJlY3RvcnkoJ2In
LCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBiID0gZW50cnk7Cisg
ICAgICAgIGhlbHBlci5kb25lKCk7CisgICAgfSwgZXJyb3JDYWxsYmFjayk7IH0pOworCisgICAg
aGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRy
dWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBjID0gZW50cnk7CisgICAgICAgIGhlbHBl
ci5kb25lKCk7CisgICAgfSwgZXJyb3JDYWxsYmFjayk7IH0pOworCisgICAgaGVscGVyLnJ1bihm
dW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCdkJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50
cnkpIHsKKyAgICAgICAgZCA9IGVudHJ5OworICAgICAgICBoZWxwZXIuZG9uZSgpOworICAgIH0s
IGVycm9yQ2FsbGJhY2spOyB9KTsKKworICAgIGhlbHBlci5qb2luKGFzeW5jVGVzdDIpOworfQor
CitpZiAodGhpcy5yZXF1ZXN0RmlsZVN5c3RlbSkgeworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigpOworICAgIGhlbHBlci5ydW4oZnVu
Y3Rpb24oKSB7CisgICAgcmVxdWVzdEZpbGVTeXN0ZW0uYXBwbHkodGhpcywgW3RoaXMuVEVNUE9S
QVJZLCAxMDAsIGZ1bmN0aW9uKGZzKSB7CisgICAgICAgIGRlYnVnKCJHb3QgRmlsZVN5c3RlbToi
ICsgZnMubmFtZSk7CisgICAgICAgIGZpbGVTeXN0ZW0gPSBmczsKKyAgICAgICAgcmVtb3ZlUmVj
dXJzaXZlbHkoZmlsZVN5c3RlbS5yb290LCBmdW5jdGlvbigpeyBoZWxwZXIuZG9uZSgpOyB9LCBl
cnJvckNhbGxiYWNrKTsKKyAgICB9LCBlcnJvckNhbGxiYWNrXSk7IH0pOworICAgIGRlYnVnKCJy
ZXF1ZXN0ZWQgRmlsZVN5c3RlbS4iKTsKKyAgICBoZWxwZXIuam9pbihhc3luY1Rlc3QxKTsKK30g
ZWxzZQorICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9y
dC4iKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJl
LmpzCmluZGV4IDg0ZTBmYWQ5NTE2YjE1MjFjNTQzOGUwY2FjMGZmY2IxZjA4MTdlMGQuLjNlY2Q3
MDkwN2Y0ZTVlNmIzZDBlOWRhNWQ5Zjc4ZmQ3MDAyNDE2NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJl
LmpzCkBAIC0xMCw2ICsxMCw3IEBAIGZ1bmN0aW9uIHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwp
CiB7CiAgICAgZGVidWcoJ1N0YXJ0aW5nIHdvcmtlcjogJyArIHRlc3RTY3JpcHRVUkwpOwogICAg
IHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5q
cycpOworICAgIHdvcmtlci5wb3N0TWVzc2FnZSgnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5q
cycpOwogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh0ZXN0U2NyaXB0VVJMKTsKICAgICB3b3JrZXIu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YjU2NWE5YzMyMmM0OWY5MDZjYjVkNjgwNTlmMzU0MzBkMDk2YjMxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJh
dGlvbnMuanMKQEAgLTAsMCArMSwzOCBAQAorZGVzY3JpcHRpb24oIlRlc3QgbWFraW5nIG11bHRp
cGxlIHN5bmNocm9ub3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4iKTsKKwordmFyIGZpbGVTeXN0
ZW0gPSByZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7CisKKy8vIFN0
YWdlIDEgKHByZXBhcmUpCit2YXIgYSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdhJywge2Ny
ZWF0ZTp0cnVlfSk7Cit2YXIgYiA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2InLCB7
Y3JlYXRlOnRydWV9KTsKK3ZhciBjID0gZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeSgnYycs
IHtjcmVhdGU6dHJ1ZX0pOwordmFyIGQgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnZCcsIHtj
cmVhdGU6dHJ1ZX0pOworCisvLyBTdGFnZSAyICh0ZXN0KQordmFyIGFfY29weSA9IGEuY29weVRv
KGIsICd0bXAnKTsKK3ZhciBtZXRhZGF0YSA9IGEuZ2V0TWV0YWRhdGEoKTsKK3ZhciBiX3BhcmVu
dCA9IGIuZ2V0UGFyZW50KCk7Cit2YXIgY19jb3B5ID0gYy5jb3B5VG8oZmlsZVN5c3RlbS5yb290
LCAnZicpOwordmFyIGRfbmV3ID0gZC5tb3ZlVG8oZmlsZVN5c3RlbS5yb290LCAnZDInKTsKK3Zh
ciBlID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2UnLCB7Y3JlYXRlOnRydWV9KTsKKworLy8g
VmVyaWZ5Cit2YXIgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwordmFy
IGRpcnNDb3VudCA9IDA7Cit2YXIgcGF0aHMgPSBbXTsKK2RvIHsKKyAgICB2YXIgZW50cmllcyA9
IHJlYWRlci5yZWFkRW50cmllcygpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5s
ZW5ndGg7ICsraSkgeworICAgICAgICBwYXRocy5wdXNoKGVudHJpZXNbaV0uZnVsbFBhdGgpOwor
ICAgICAgICBpZiAoZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIGRpcnNDb3Vu
dCsrOworICAgIH0KK30gd2hpbGUgKGVudHJpZXMubGVuZ3RoKTsKKworcGF0aHMuc29ydCgpOwor
c2hvdWxkQmUoJyInICsgcGF0aHMuam9pbignLCcpICsgJyInLCAnIi9hLC9iLC9jLC9kMiwvZSwv
ZiInKTsKK3Nob3VsZEJlKCJkaXJzQ291bnQiLCAiMyIpOworcmVtb3ZlUmVjdXJzaXZlbHkoZmls
ZVN5c3RlbS5yb290KTsKK2ZpbmlzaEpTVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJl
ZDY4ZDI5MTE3ZmZjMWNlMmIzNDI0NWE0ZjEwM2RhMWRjOWIwOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgcnVubmluZyBtdWx0aXBsZSBh
c3luYyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgaW4gV29ya2VyLgorCitTdGFydGluZyB3b3JrZXI6
IC4uL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCitEZXNjcmlwdGlvbjogVGVzdCBtYWtp
bmcgbXVsdGlwbGUgYXN5bmMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLgorcmVxdWVzdGVkIEZpbGVT
eXN0ZW0uCitHb3QgRmlsZVN5c3RlbTpodHRwX2xvY2FsaG9zdF84MDgwOlRlbXBvcmFyeQorU3Rh
cnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAxLgorU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAyLgor
VmVyaWZ5aW5nIHRoZSBGaWxlU3lzdGVtIHN0YXR1cy4KK1BBU1M6ICIvYSwvYiwvYywvZDIsL2Us
L2YiIGlzICIvYSwvYiwvYywvZDIsL2UsL2YiCitQQVNTOiBkaXJzQ291bnQgaXMgMworRE9ORQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTdjYzRmNjQ2
MzNiOGE5ZGQ2NmQ3MGJjMWExN2IwMmRlZWQ0YWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy5odG1sCkBAIC0w
LDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2Zz
LXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9m
cy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcnVubmluZyBtdWx0aXBsZSBhc3luYyBmaWxlc3lzdGVt
IG9wZXJhdGlvbnMgaW4gV29ya2VyLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KK3N0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcycpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0
ZW50LXN5bmMtZXhwZWN0ZWQudHh0CmluZGV4IDIzZWJmYmQ0YjY5NDYwMjQ4NDI3ZGM1NzAyN2Iy
YzY1MmM5OWYzYzIuLmFhMmE5YWFjYjg5MjMxYTY3MDRlMTFlNmMzNDkyZTI3ZDBmZDQ2NTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJz
aXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIs
MTAgQEAgVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBFUlNJU1RFTlQgRmlsZVN5c3RlbVN5bmMgaW4g
V29ya2VyLgogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVu
dC1zeW5jLmpzCiBEZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFBFUlNJU1RFTlQg
dGVzdC4KLUdvdCBlcnJvciBmcm9tIHdvcmtlcjogVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IHJl
cXVlc3RGaWxlU3lzdGVtU3luYyBpcyBub3QgZGVmaW5lZAorU3VjY2Vzc2Z1bGx5IG9idGFpbmVk
IFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpodHRwX2xvY2FsaG9zdF84MDgwOlBlcnNpc3RlbnQKK1BB
U1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1M6IGZpbGVTeXN0ZW0u
cm9vdC5mdWxsUGF0aCBpcyAiLyIKK0RPTkUKIAogVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5
bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAppbmRleCAwZTIxYzAyODM0MWM4YjkwNmI2
ZjNiNjIzMzU0N2IwODBiYzhjOTFlLi5iYmM1YTAyNmNmOTRjNmFjNDQzMzY0NThmOTg3YzE5ZTI0
YWI4NzYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
aW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQKQEAg
LTIsNyArMiwxMCBAQCBUaGlzIHRlc3RzIHJlcXVlc3RpbmcgVEVNUE9SQVJZIEZpbGVTeXN0ZW1T
eW5jIGluIFdvcmtlci4KIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXRl
bXBvcmFyeS1zeW5jLmpzCiBEZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRFTVBP
UkFSWSB0ZXN0LgotR290IGVycm9yIGZyb20gd29ya2VyOiBVbmNhdWdodCBSZWZlcmVuY2VFcnJv
cjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIGlzIG5vdCBkZWZpbmVkCitTdWNjZXNzZnVsbHkgb2J0
YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06aHR0cF9sb2NhbGhvc3RfODA4MDpUZW1wb3JhcnkK
K1BBU1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1M6IGZpbGVTeXN0
ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK0RPTkUKIAogVEVTVCBDT01QTEVURQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1v
cGVyYXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzg1NWQ1ZDZlMzJlNzhhMDM2NjE2
MjE2NjEyZjlkNjdhZTQyMmE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lzdGVtIG9wZXJh
dGlvbnMgaW4gV29ya2VyLgorCitTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zeW5jLW9w
ZXJhdGlvbnMuanMKK0Rlc2NyaXB0aW9uOiBUZXN0IG1ha2luZyBtdWx0aXBsZSBzeW5jaHJvbm91
cyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCitQQVNTOiAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAi
L2EsL2IsL2MsL2QyLC9lLC9mIgorUEFTUzogZGlyc0NvdW50IGlzIDMKK0RPTkUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zeW5jLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyYWRmMDQ1MjJiNjY4OTg4ODA2
MDI0YTQzODAzODNjNDFkYThmNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRtbApAQCAtMCwwICsxLDE1IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29t
bW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij5UaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMg
aW4gV29ya2VyLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3N0YXJ0
V29ya2VyKCcuLi9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzJyk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMTNkMTM2NWU3YzU1ZTRlYjEwOWQyMWY3NDNmYWQ1MDVmZWJi
MWFlZS4uNWQwZmFkYTJkMTZiOWFkNjRlMDE5MTZmOGY3YTUxZjAwNmM5NDM2MSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5
MiBAQAorMjAxMC0xMC0wMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZpbGVT
eXN0ZW1TeW5jIGltcGxlbWVudGF0aW9uIGZvciBXb3JrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDQ0CisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVt
LmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxl
YXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW1CYXNlOjpnZXRNZXRhZGF0YSk6IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4KKyAgICAgICAg
KFdlYkNvcmU6OmNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKTogTW92ZWQgZnJvbSBET01G
aWxlU3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUpOiBN
b3ZlZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
QmFzZTo6Y29weSk6IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6
OkRPTUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmUpOiBNb3ZlZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisg
ICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KTogTW92ZWQgZnJv
bSBET01GaWxlU3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6Omdl
dEZpbGUpOiBNb3ZlZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpET01G
aWxlU3lzdGVtQmFzZTo6Z2V0RGlyZWN0b3J5KTogTW92ZWQgZnJvbSBET01GaWxlU3lzdGVtLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OnJlYWREaXJlY3RvcnkpOiBNb3Zl
ZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFz
ZS5oOgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaDoKKyAgICAgICAgKiBm
aWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVu
dHJ5OjpEaXJlY3RvcnlFbnRyeSk6IFVwZGF0ZWQgdG8gY2FsbAorICAgICAgICBET01GaWxlU3lz
dGVtQmFzZSdzIG1ldGhvZCBpbnN0ZWFkIG9mIERPTUZpbGVTeXN0ZW0ncyBvbmUuCisgICAgICAg
IChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeSk6IERpdHRvLgorICAgICAgICAqIGZp
bGVhcGkvRGlyZWN0b3J5RW50cnkuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5
U3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUp
OiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5U3luYzo6Z2V0
RGlyZWN0b3J5KTogSW1wbGVtZW50ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFk
ZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMpOiBJbXBsZW1lbnRl
ZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5
OjpFbnRyeSk6IFVwZGF0ZWQgdG8gY2FsbCBET01GaWxlU3lzdGVtQmFzZSdzIG1ldGhvZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkVudHJ5OjpnZXRNZXRhZGF0YSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RW50cnk6Om1vdmVUbyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmNv
cHlUbyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OnJlbW92ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmdldFBhcmVudCk6IERpdHRvLgorICAgICAgICAqIGZp
bGVhcGkvRW50cnkuaDoKKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5LmlkbDoKKyAgICAgICAgKiBm
aWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5QXJyYXlT
eW5jOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QXJyYXlTeW5jLmg6
CisgICAgICAgICogZmlsZWFwaS9FbnRyeUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5
QmFzZTo6ZmlsZXN5c3RlbSk6IEFkZGVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlTeW5jLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5U3luYzo6Y3JlYXRlKTogSW1wbGVtZW50ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFbnRyeVN5bmM6OmdldE1ldGFkYXRhKTogSW1wbGVtZW50ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpFbnRyeVN5bmM6Om1vdmVUbyk6IEltcGxlbWVudGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RW50cnlTeW5jOjpjb3B5VG8pOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVudHJ5U3luYzo6cmVtb3ZlKTogSW1wbGVtZW50ZWQuCisgICAgICAgICogZmlsZWFw
aS9FbnRyeVN5bmMuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVFbnRyeS5jcHA6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlRW50cnkuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxs
YmFja3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50cnlDYWxsYmFja3M6OmNyZWF0ZSk6IFVw
ZGF0ZWQgdG8gdGFrZSBET01GaWxlU3lzdGVtQmFzZQorICAgICAgICBpbnN0ZWFkIG9mIERPTUZp
bGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeUNhbGxiYWNrczo6RW50cnlDYWxsYmFj
a3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW50cmllc0NhbGxiYWNrczo6RW50cmllc0NhbGxi
YWNrcyk6IERpdHRvLgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oOgor
ICAgICAgICAqIGZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0pOiBBZGRlZCBzeW5jaHJvbm91cwor
ICAgICAgICBwYXJhbWV0ZXIuCisgICAgICAgICogZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaDoK
KyAgICAgICAgKiBmaWxlYXBpL01ldGFkYXRhLmg6CisgICAgICAgICogZmlsZWFwaS9TeW5jQ2Fs
bGJhY2tIZWxwZXIuaDogQWRkZWQuIFRoaXMgZGVmaW5lcyBhIGhlbHBlciB0ZW1wbGF0ZQorICAg
ICAgICBmb3Igc3luY2hyb25vdXMgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtOjp3YWl0Q29tcGxldGlvbik6IEFkZGVkLgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJDb250ZXh0OjpyZXF1ZXN0RmlsZVN5c3RlbVN5bmMpOiBBZGRlZC4KKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRs
OgorCiAyMDEwLTA5LTMwICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDhkMjRhMWI5MGRh
MmY2MGFjOTAxMjdkYzUwYmFiM2E1MmEyYmI3ODEuLjljODA0ZGM0NDU0MGRkODM5ZjMwZmNlYWJh
NzgzYTZmM2IzYmY1NGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTQyNCw2ICsxNDI0LDcgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlXZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmggXAogCVdlYkNvcmUv
ZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmggXAogCVdlYkNvcmUvZmlsZWFwaS9NZXRhZGF0YS5o
IFwKKwlXZWJDb3JlL2ZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmggXAogCVdlYkNvcmUvZmls
ZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBcCiAJV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuaCBcCiAJV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJv
bGxlckNsaWVudC5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggMTI0YjBkM2JkMDE5N2NjYTBiOTA5NzAxYWZlMjNkMWQ5OWRi
MmUyYS4uMjQwYWQ2MmU1M2ZmZmRiMTlmMGY4NWJiZGEzZjUxYTY1NmMyNGUxMSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTk2
LDYgKzk2LDcgQEAKICAgICAgICAgICAgICdmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCcs
CiAgICAgICAgICAgICAnZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAg
ICdmaWxlYXBpL0VudHJ5LmlkbCcsCisgICAgICAgICAgICAnZmlsZWFwaS9FbnRyeVN5bmMuaWRs
JywKICAgICAgICAgICAgICdmaWxlYXBpL0VudHJ5QXJyYXkuaWRsJywKICAgICAgICAgICAgICdm
aWxlYXBpL0VudHJ5QXJyYXlTeW5jLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9FbnRyeUNh
bGxiYWNrLmlkbCcsCkBAIC0xNTE4LDYgKzE1MTksNyBAQAogICAgICAgICAgICAgJ2ZpbGVhcGkv
TG9jYWxGaWxlU3lzdGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGEuaCcsCiAg
ICAgICAgICAgICAnZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ2Zp
bGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdoaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5t
bScsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCAwOWYxNjA1YzNlYjk0NjgyY2JmOWEyODZlN2Y5OTcyMjgzNWMyMGY2Li44MTExZGU0
OGYwYjRiNzAyZGQ2ZjUwMGRlMmIyZmI1ZmJlOGIxMzM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI5OTQsNiArMjk5NCw3IEBA
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9GSUxFX1NZU1RFTT0xKSB7CiAgICAgICAgIGZpbGVh
cGkvTG9jYWxGaWxlU3lzdGVtLmggXAogICAgICAgICBmaWxlYXBpL01ldGFkYXRhLmggXAogICAg
ICAgICBmaWxlYXBpL01ldGFkYXRhQ2FsbGJhY2suaCBcCisgICAgICAgIGZpbGVhcGkvU3luY0Nh
bGxiYWNrSGVscGVyLmggXAogICAgICAgICBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBcCiAg
ICAgICAgIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGFjODRmMGE4MGE0ZjM1ZmFjZjAzMzM1NGRjYWNm
Y2Y3MmQzYzc0YmMuLmMzMTE3MDk5NGExNmQ2MDYyNGQ4ZDU4ZWUyNjUzMzVlYmNlNDVkN2YgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDI2MjksNiArNDI2MjksMTAg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZmlsZWFwaVxTeW5jQ2FsbGJhY2tIZWxwZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAyM2UwNzI4NmI2OGMxMjE2OTUxODI4NGI3ODVjNGRiZTM4Njg2
NTExLi4xZWU1MmVmY2I0OTBjZjUwZGYwNjI5ZTNiZTZmOGE3MDJmZDczNTdiIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ1Myw2ICsyNDUzLDcgQEAK
IAkJODVGRjMxNUIwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUZGMzE1OTBBQUZCRkNC
MDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVudC5tbSAqLzsgfTsKIAkJODYyNDNEMDExMUJDMzFG
NzAwQ0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyog
SlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCAqLzsgfTsKIAkJODkwQUUwRTExMjU2QTA3OTAwRjU5
NjhDIC8qIERpcmVjdG9yeVJlYWRlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlS
ZWFkZXJCYXNlLmggKi87IH07CisJCTg5MEFFMEYxMTI1NzEyQjEwMEY1OTY4QyAvKiBTeW5jQ2Fs
bGJhY2tIZWxwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg5MEFFMEYwMTI1NzEyQjEwMEY1OTY4QyAvKiBTeW5jQ2FsbGJhY2tIZWxwZXIuaCAqLzsg
fTsKIAkJODkzQzQ3QTcxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3QTUxMjM4OTA4QjAw
MkIzRDg2IC8qIEZpbGVDYWxsYmFjay5oICovOyB9OwogCQk4OTNDNDdBODEyMzg5MDhCMDAyQjNE
ODYgLyogRmlsZVdyaXRlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdBNjEyMzg5MDhCMDAyQjNEODYgLyogRmlsZVdyaXRlckNh
bGxiYWNrLmggKi87IH07CiAJCTg5M0M0N0I3MTIzOEEwOTkwMDJCM0Q4NiAvKiBKU0ZpbGVDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
OTNDNDdCNTEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2suY3BwICovOyB9OwpAQCAt
ODQ4Niw2ICs4NDg3LDcgQEAKIAkJODVGRjMxNTkwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJv
YXJkRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
S2V5Ym9hcmRFdmVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYyNDNEMDAx
MUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3Rv
cnlSZWFkZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9y
eVJlYWRlckJhc2UuaDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTBBRTBGMDEyNTcxMkIxMDBGNTk2OEMgLyogU3lu
Y0NhbGxiYWNrSGVscGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN5bmND
YWxsYmFja0hlbHBlci5oOyBwYXRoID0gZmlsZWFwaS9TeW5jQ2FsbGJhY2tIZWxwZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3QTUxMjM4OTA4QjAwMkIzRDg2IC8qIEZp
bGVDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlQ2FsbGJh
Y2suaDsgcGF0aCA9IGZpbGVhcGkvRmlsZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5M0M0N0E2MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlV3JpdGVyQ2FsbGJhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVdyaXRlckNhbGxiYWNrLmg7
IHBhdGggPSBmaWxlYXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4OTNDNDdCNTEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlQ2FsbGJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4NjIsNiArMTQ4NjQsNyBAQAogCQkJ
CTg5ODc4NTRGMTIyQ0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVTeXN0ZW0uaCAqLywKIAkJCQk4
OTg3ODU1MDEyMkNBMDY0MDAzQUFCREEgLyogTWV0YWRhdGEuaCAqLywKIAkJCQk4OTg3ODU1MTEy
MkNBMDY0MDAzQUFCREEgLyogTWV0YWRhdGFDYWxsYmFjay5oICovLAorCQkJCTg5MEFFMEYwMTI1
NzEyQjEwMEY1OTY4QyAvKiBTeW5jQ2FsbGJhY2tIZWxwZXIuaCAqLywKIAkJCQk5NzZENkM3NTEy
MkI4QTNEMDAxRkQxRjcgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgKi8sCiAJCQkJOTc2
RDZDNzYxMjJCOEEzRDAwMUZEMUY3IC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCAqLywKIAkJ
CSk7CkBAIC0yMTAyNyw2ICsyMTAzMCw3IEBACiAJCQkJODkzQzQ4M0IxMjQ5NTQ3MjAwMkIzRDg2
IC8qIEpTRW50cnlTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTNDNDgzRDEyNDk1NDcyMDAy
QjNEODYgLyogSlNGaWxlRW50cnlTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTBBRTBFMTEy
NTZBMDc5MDBGNTk2OEMgLyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODkwQUUwRjExMjU3MTJCMTAwRjU5NjhDIC8qIFN5bmNDYWxsYmFja0hlbHBlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaAppbmRleCA4ODM1MGM3MTAxMWM5MWExNzQ2ODBjZTU1ZDk4MjMyN2MwMWExNGEx
Li40ZTcxZGUyYzdjMTlkMjAyNjdiNWMyZjRhZDFlNjM0NzdhZWYwZDBhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE1MCw3
ICsxNTAsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIHN0YXRpYyBi
b29sIGZpbGVTeXN0ZW1FbmFibGVkKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0RmlsZVN5c3RlbUVu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIHJlcXVlc3RGaWxlU3lzdGVtRW5hYmxlZCgpIHsgcmV0dXJuIGlz
RmlsZVN5c3RlbUVuYWJsZWQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggODAzNTQyZTY5ZDgyZGNiZGY1Mjc4
Y2RlNzJkMDZiNTU1NDJiNzExNi4uMTFjZWJhMTU2NmU5MWE3ZjdhYWVlYjNmNzJkZWY2YWI5ZDZj
MGU3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBA
IC0yMTUsNyArMjE1LDcgQEAgc3ViIEdldFZpc2libGVDbGFzc05hbWUKICAgICByZXR1cm4gIk1p
bWVUeXBlQXJyYXkiIGlmICRjbGFzc05hbWUgZXEgIkRPTU1pbWVUeXBlQXJyYXkiOwogICAgIHJl
dHVybiAiUGx1Z2luIiBpZiAkY2xhc3NOYW1lIGVxICJET01QbHVnaW4iOwogICAgIHJldHVybiAi
UGx1Z2luQXJyYXkiIGlmICRjbGFzc05hbWUgZXEgIkRPTVBsdWdpbkFycmF5IjsKLSAgICAKKwog
ICAgIHJldHVybiAkY2xhc3NOYW1lOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkv
RE9NRmlsZVN5c3RlbS5jcHAgYi9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5k
ZXggMTc0Mjg0MmRhMzFmOWUwZGNkZWZlODFiYTMzZTdjNjExMmM5ZDg5NC4uYmY5YzYxZGRkZmQw
Y2NmZjUzY2NlMDc2YTZjMGJkMjk0ZDkyMzhiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBp
L0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cApAQCAtMzYsMTkgKzM2LDEzIEBACiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiRE9NRmlsZVBhdGguaCIKICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1
ZGUgIkVudHJpZXNDYWxsYmFjay5oIgotI2luY2x1ZGUgIkVudHJ5LmgiCi0jaW5jbHVkZSAiRW50
cnlBcnJheS5oIgotI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFcnJvckNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZUVudHJ5LmgiCi0jaW5jbHVkZSAiRmlsZUVycm9yLmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIkZpbGVXcml0ZXIu
aCIKICNpbmNsdWRlICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXRhZGF0YUNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUg
IlZvaWRDYWxsYmFjay5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjYsMTM4ICs2MCwyMCBAQCBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBE
T01GaWxlU3lzdGVtOjpyb290KCkKIAogdm9pZCBET01GaWxlU3lzdGVtOjpzdG9wKCkKIHsKLSAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+c3RvcCgpOworICAgIGFzeW5jRmlsZVN5c3RlbSgpLT5zdG9w
KCk7CiB9CiAKIGJvb2wgRE9NRmlsZVN5c3RlbTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9hc3luY0ZpbGVTeXN0ZW0tPmhhc1BlbmRpbmdBY3Rpdml0eSgpOwor
ICAgIHJldHVybiBhc3luY0ZpbGVTeXN0ZW0oKS0+aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAK
IHZvaWQgRE9NRmlsZVN5c3RlbTo6Y29udGV4dERlc3Ryb3llZCgpCiB7Ci0gICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPnN0b3AoKTsKKyAgICBhc3luY0ZpbGVTeXN0ZW0oKS0+c3RvcCgpOwogICAgIEFj
dGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwogfQogCi12b2lkIERPTUZpbGVTeXN0
ZW06OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxNZXRhZGF0YUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKLXsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0t
PnZpcnR1YWxUb1BsYXRmb3JtUGF0aChlbnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIE1ldGFkYXRhQ2FsbGJhY2tzOjpj
cmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Ci19Ci0KLXN0YXRpYyBib29s
IGNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKGNvbnN0IEVudHJ5KiBzcmMsIEVudHJ5KiBw
YXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKLXsKLSAgICBBU1NFUlQoc3JjKTsKLQotICAg
IGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzRGlyZWN0b3J5KCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjppc1Zh
bGlkTmFtZShuZXdOYW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSXQgaXMg
YW4gZXJyb3IgdG8gdHJ5IHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxmIGF0
IGFueSBkZXB0aCBpZiBpdCBpcyBhIGRpcmVjdG9yeS4KLSAgICBpZiAoc3JjLT5pc0RpcmVjdG9y
eSgpICYmIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKHNyYy0+ZnVsbFBhdGgoKSwgcGFyZW50LT5m
dWxsUGF0aCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSXQgaXMgYW4gZXJy
b3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlm
ZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3ZpZGVkLgotICAgIGlmICgobmV3
TmFtZS5pc0VtcHR5KCkgfHwgc3JjLT5uYW1lKCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBhdGg6
OmdldERpcmVjdG9yeShzcmMtPmZ1bGxQYXRoKCkpID09IHBhcmVudC0+ZnVsbFBhdGgoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRE9NRmls
ZVN5c3RlbTo6bW92ZShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQs
IGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAg
ICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNyYywgcGFyZW50LmdldCgpLCBu
ZXdOYW1lKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJ
T05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZGVzdFBhdGgg
PSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0gICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQYXRoLCBuZXdOYW1lKTsKLSAg
ICBlbHNlCi0gICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwg
c3JjLT5uYW1lKCkpOwotCi0gICAgU3RyaW5nIHNyY1BsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxl
U3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc3JjLT5mdWxsUGF0aCgpKTsKLSAgICBTdHJp
bmcgZGVzdFBsYXRmb3JtUGF0aCA9IHBhcmVudC0+ZmlsZXN5c3RlbSgpLT5hc3luY0ZpbGVTeXN0
ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RQYXRoKTsKLSAgICBtX2FzeW5jRmlsZVN5
c3RlbS0+bW92ZShzcmNQbGF0Zm9ybVBhdGgsIGRlc3RQbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJh
Y2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0UGF0
aCwgc3JjLT5pc0RpcmVjdG9yeSgpKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Y29weShj
b25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYg
bmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIWNoZWNrVmFs
aWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNyYywgcGFyZW50LmdldCgpLCBuZXdOYW1lKSkgewotICAg
ICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxs
YmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZGVzdFBhdGggPSBwYXJlbnQtPmZ1bGxQ
YXRoKCk7Ci0gICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgZGVzdFBhdGggPSBE
T01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQYXRoLCBuZXdOYW1lKTsKLSAgICBlbHNlCi0gICAgICAg
IGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgc3JjLT5uYW1lKCkpOwot
Ci0gICAgU3RyaW5nIHNyY1BsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFs
VG9QbGF0Zm9ybVBhdGgoc3JjLT5mdWxsUGF0aCgpKTsKLSAgICBTdHJpbmcgZGVzdFBsYXRmb3Jt
UGF0aCA9IHBhcmVudC0+ZmlsZXN5c3RlbSgpLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dmlydHVhbFRv
UGxhdGZvcm1QYXRoKGRlc3RQYXRoKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y29weShzcmNQ
bGF0Zm9ybVBhdGgsIGRlc3RQbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0UGF0aCwgc3JjLT5pc0RpcmVj
dG9yeSgpKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6cmVtb3ZlKGNvbnN0IEVudHJ5KiBl
bnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChlbnRyeSk7Ci0g
ICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0
Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1v
dmUocGxhdGZvcm1QYXRoLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KGNvbnN0
IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQo
ZW50cnkpOwotICAgIFN0cmluZyBwYXRoID0gRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShlbnRy
eS0+ZnVsbFBhdGgoKSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lz
dGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0t
PmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBwYXRoLCB0cnVlKSk7Ci19Ci0KLXZv
aWQgRE9NRmlsZVN5c3RlbTo6Z2V0RmlsZShjb25zdCBFbnRyeSogYmFzZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKLXsKLSAgICBBU1NFUlQoYmFzZSk7Ci0gICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBh
dGgocGF0aCkpIHsKLSAgICAgICAgc2NoZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgU3RyaW5nIGFic29sdXRl
UGF0aCA9IHBhdGg7Ci0gICAgaWYgKCFET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSkKLSAg
ICAgICAgYWJzb2x1dGVQYXRoID0gRE9NRmlsZVBhdGg6OnJlbW92ZUV4dHJhUGFyZW50UmVmZXJl
bmNlcyhET01GaWxlUGF0aDo6YXBwZW5kKGJhc2UtPmZ1bGxQYXRoKCksIHBhdGgpKTsKLSAgICBT
dHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3Jt
UGF0aChhYnNvbHV0ZVBhdGgpOwotCi0gICAgT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFj
a3MgPSBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgdGhpcywgYWJzb2x1dGVQYXRoLCBmYWxzZSk7Ci0gICAgaWYgKGZsYWdzICYmIGZsYWdzLT5p
c0NyZWF0ZSgpKQotICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShwbGF0Zm9y
bVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICBl
bHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhpc3RzKHBsYXRmb3JtUGF0aCwg
Y2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RGlyZWN0
b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8Rmxh
Z3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChiYXNl
KTsKLSAgICBpZiAoIURPTUZpbGVQYXRoOjppc1ZhbGlkUGF0aChwYXRoKSkgewotICAgICAgICBz
Y2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywg
RmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgYWJzb2x1dGVQYXRoID0gcGF0aDsKLSAgICBpZiAo
IURPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKQotICAgICAgICBhYnNvbHV0ZVBhdGggPSBE
T01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBl
bmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOwotICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBt
X2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGFic29sdXRlUGF0aCk7Ci0K
LSAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpj
cmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgs
IHRydWUpOwotICAgIGlmIChmbGFncyAmJiBmbGFncy0+aXNDcmVhdGUoKSkKLSAgICAgICAgbV9h
c3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShwbGF0Zm9ybVBhdGgsIGZsYWdzLT5pc0V4
Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYXN5
bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMocGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVs
ZWFzZSgpKTsKLX0KLQogdm9pZCBET01GaWxlU3lzdGVtOjpjcmVhdGVXcml0ZXIoY29uc3QgRmls
ZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKGZpbGUpOwpAQCAtMjA5LDEzICs4NSw2IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRl
V3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsCiAg
ICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBwbGF0
Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi12b2lkIERPTUZpbGVTeXN0ZW06
OnJlYWREaXJlY3RvcnkoRGlyZWN0b3J5UmVhZGVyKiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChET01GaWxlUGF0
aDo6aXNBYnNvbHV0ZShwYXRoKSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNG
aWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVT
eXN0ZW0tPnJlYWREaXJlY3RvcnkocGxhdGZvcm1QYXRoLCBFbnRyaWVzQ2FsbGJhY2tzOjpjcmVh
dGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCByZWFkZXIsIHBhdGgpKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmggYi9XZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbS5oCmluZGV4IDkwOGMxNmM5NDNlY2FkZjY5MTIzMmM2MDQ0YWRjZWFkZDU0OWJj
YWIuLjBlZjJlMGY3ZTVmMGMzMTYyY2ZmY2RlYWNlMjA3ODYzMjU1ODJlN2EgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0RP
TUZpbGVTeXN0ZW0uaApAQCAtMzQsMjYgKzM0LDE0IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVN
KQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJGbGFncy5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEaXJlY3RvcnlFbnRy
eTsKLWNsYXNzIERpcmVjdG9yeVJlYWRlcjsKLWNsYXNzIEVudHJ5OwotY2xhc3MgRW50cnlDYWxs
YmFjazsKLWNsYXNzIEVudHJpZXNDYWxsYmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7CiBjbGFz
cyBGaWxlRW50cnk7CiBjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2s7Ci1jbGFzcyBNZXRhZGF0YUNh
bGxiYWNrOwotY2xhc3MgVm9pZENhbGxiYWNrOwogCiBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVi
bGljIERPTUZpbGVTeXN0ZW1CYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoK
QEAgLTY5LDE1ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAot
ICAgIC8vIEFjdHVhbCBGaWxlU3lzdGVtIEFQSSBpbXBsZW1lbnRhdGlvbnMuICBBbGwgdGhlIHZh
bGlkaXR5IGNoZWNrcyBvbiB2aXJ0dWFsIHBhdGhzIGFyZSBkb25lIGF0IERPTUZpbGVTeXN0ZW0g
bGV2ZWwuCi0gICAgdm9pZCBnZXRNZXRhZGF0YShjb25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQ
dHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgbW92ZShjb25zdCBFbnRyeSogc3JjLCBQ
YXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgdm9pZCBjb3B5
KGNvbnN0IEVudHJ5KiBzcmMsIFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+KTsKLSAgICB2b2lkIHJlbW92ZShjb25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgdm9pZCBnZXRQYXJl
bnQoY29uc3QgRW50cnkqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIGdldEZpbGUoY29uc3QgRW50cnkqIGJhc2Us
IGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIHZvaWQgZ2V0RGlyZWN0
b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8Rmxh
Z3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
KTsKLSAgICB2b2lkIHJlYWREaXJlY3RvcnkoRGlyZWN0b3J5UmVhZGVyKiByZWFkZXIsIGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+KTsKICAgICB2b2lkIGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnkqIGZp
bGUsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7CiAKICAgICAvLyBTY2hlZHVsZSBhIGNhbGxiYWNrLiBUaGlzIHNob3VsZCBub3QgY3Jv
c3MgdGhyZWFkcyAoc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgc2FtZSBjb250ZXh0IHRocmVhZCku
CkBAIC05NSw3ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgRE9NRmlsZVN5c3RlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pOwogCiAgICAgLy8gQSBoZWxwZXIgdGVtcGxhdGUgdG8gc2NoZWR1bGUgYSBjYWxsYmFj
ayB0YXNrLgotICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBtb3JlIGdlbmVyaWMgcGxhY2Uu
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KICAgICBjbGFzcyBE
aXNwYXRjaENhbGxiYWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3Rl
bUJhc2UuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAppbmRleCBi
Njk4ODJkMTYwYWQ5ZThiNDRiZjUzNGJhM2JiMWI1MjMyM2EyNzIxLi5lZDg3MDcwOTg4YmMxNzcw
NGE1ZTc4ZDY2ZDZiYmY3OWI2ZTc1NzIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbUJhc2UuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFz
ZS5jcHAKQEAgLTM0LDYgKzM0LDE2IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5j
bHVkZSAiRE9NRmlsZVBhdGguaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorI2luY2x1
ZGUgIkVudHJpZXNDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKKyNpbmNsdWRl
ICJFbnRyeUJhc2UuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJy
b3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0
ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAi
Vm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00OCw2ICs1OCwxMzEgQEAgRE9NRmlsZVN5c3RlbUJhc2U6On5ET01GaWxlU3lz
dGVtQmFzZSgpCiB7CiB9CiAKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldE1ldGFkYXRhKGNv
bnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7Cisg
ICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0
Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFk
TWV0YWRhdGEocGxhdGZvcm1QYXRoLCBNZXRhZGF0YUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
Ym9vbCBjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShjb25zdCBFbnRyeUJhc2UqIHNyYywg
RW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBBU1NFUlQo
c3JjKTsKKworICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzRGlyZWN0b3J5KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkgJiYgIURPTUZp
bGVQYXRoOjppc1ZhbGlkTmFtZShuZXdOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRyeSBpbnNp
ZGUgaXRzZWxmIGF0IGFueSBkZXB0aCBpZiBpdCBpcyBhIGRpcmVjdG9yeS4KKyAgICBpZiAoc3Jj
LT5pc0RpcmVjdG9yeSgpICYmIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKHNyYy0+ZnVsbFBhdGgo
KSwgcGFyZW50LT5mdWxsUGF0aCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
SXQgaXMgYW4gZXJyb3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBhcmVudCBp
ZiBhIG5hbWUgZGlmZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3ZpZGVkLgor
ICAgIGlmICgobmV3TmFtZS5pc0VtcHR5KCkgfHwgc3JjLT5uYW1lKCkgPT0gbmV3TmFtZSkgJiYg
RE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShzcmMtPmZ1bGxQYXRoKCkpID09IHBhcmVudC0+ZnVs
bFBhdGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUoY29uc3QgRW50cnlCYXNlKiBzcmMsIEVudHJ5
QmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCit7CisgICAgaWYgKCFjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShzcmMsIHBh
cmVudCwgbmV3TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBkZXN0
UGF0aCA9IHBhcmVudC0+ZnVsbFBhdGgoKTsKKyAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpKQor
ICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdFBhdGgsIG5ld05hbWUp
OworICAgIGVsc2UKKyAgICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQ
YXRoLCBzcmMtPm5hbWUoKSk7CisKKyAgICBTdHJpbmcgc3JjUGxhdGZvcm1QYXRoID0gbV9hc3lu
Y0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChzcmMtPmZ1bGxQYXRoKCkpOworICAg
IFN0cmluZyBkZXN0UGxhdGZvcm1QYXRoID0gcGFyZW50LT5maWxlc3lzdGVtKCktPmFzeW5jRmls
ZVN5c3RlbSgpLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZGVzdFBhdGgpOworICAgIG1fYXN5bmNG
aWxlU3lzdGVtLT5tb3ZlKHNyY1BsYXRmb3JtUGF0aCwgZGVzdFBsYXRmb3JtUGF0aCwgRW50cnlD
YWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGRl
c3RQYXRoLCBzcmMtPmlzRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBET01GaWxlU3lzdGVtQmFzZTo6Y29weShjb25zdCBFbnRyeUJhc2UqIHNyYywgRW50cnlCYXNl
KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKK3sKKyAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNyYywgcGFyZW50
LCBuZXdOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGRlc3RQYXRo
ID0gcGFyZW50LT5mdWxsUGF0aCgpOworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgbmV3TmFtZSk7Cisg
ICAgZWxzZQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQoZGVzdFBhdGgs
IHNyYy0+bmFtZSgpKTsKKworICAgIFN0cmluZyBzcmNQbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmls
ZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKHNyYy0+ZnVsbFBhdGgoKSk7CisgICAgU3Ry
aW5nIGRlc3RQbGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVzeXN0ZW0oKS0+YXN5bmNGaWxlU3lz
dGVtKCktPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0UGF0aCk7CisgICAgbV9hc3luY0ZpbGVT
eXN0ZW0tPmNvcHkoc3JjUGxhdGZvcm1QYXRoLCBkZXN0UGxhdGZvcm1QYXRoLCBFbnRyeUNhbGxi
YWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgZGVzdFBh
dGgsIHNyYy0+aXNEaXJlY3RvcnkoKSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERP
TUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmUoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7CisgICAgU3RyaW5nIHBsYXRm
b3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnkt
PmZ1bGxQYXRoKCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUocGxhdGZvcm1QYXRo
LCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldFBhcmVu
dChjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorewor
ICAgIEFTU0VSVChlbnRyeSk7CisgICAgU3RyaW5nIHBhdGggPSBET01GaWxlUGF0aDo6Z2V0RGly
ZWN0b3J5KGVudHJ5LT5mdWxsUGF0aCgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9h
c3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKTsKKyAgICBtX2FzeW5j
RmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0aCwgRW50cnlDYWxsYmFja3M6
OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIHBhdGgsIHRydWUp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0Rmls
ZShjb25zdCBFbnRyeUJhc2UqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxG
bGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGJh
c2UpOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRoKHBhdGgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgYWJzb2x1dGVQYXRoID0gcGF0aDsKKyAgICBpZiAo
IURPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKQorICAgICAgICBhYnNvbHV0ZVBhdGggPSBE
T01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBl
bmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOworICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBt
X2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGFic29sdXRlUGF0aCk7CisK
KyAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpj
cmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgs
IGZhbHNlKTsKKyAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCisgICAgICAgIG1f
YXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKHBsYXRmb3JtUGF0aCwgZmxhZ3MtPmlzRXhjbHVz
aXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmZpbGVFeGlzdHMocGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RGlyZWN0
b3J5KGNvbnN0IEVudHJ5QmFzZSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRy
PEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBBU1NFUlQo
YmFzZSk7CisgICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBhYnNvbHV0ZVBhdGggPSBwYXRoOworICAgIGlm
ICghRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAgICAgIGFic29sdXRlUGF0aCA9
IERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMoRE9NRmlsZVBhdGg6OmFw
cGVuZChiYXNlLT5mdWxsUGF0aCgpLCBwYXRoKSk7CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoYWJzb2x1dGVQYXRoKTsK
KworICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFja3M6
OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0
aCwgdHJ1ZSk7CisgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQorICAgICAgICBt
X2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KHBsYXRmb3JtUGF0aCwgZmxhZ3MtPmlz
RXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9h
c3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5y
ZWxlYXNlKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERPTUZpbGVTeXN0ZW1CYXNl
OjpyZWFkRGlyZWN0b3J5KERpcmVjdG9yeVJlYWRlckJhc2UqIHJlYWRlciwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKERPTUZp
bGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9h
c3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKTsKKyAgICBtX2FzeW5j
RmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwbGF0Zm9ybVBhdGgsIEVudHJpZXNDYWxsYmFja3M6
OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHJlYWRlciwgcGF0aCkpOwor
ICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbUJhc2UuaCBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oCmluZGV4
IGU3MTRkOGQxN2FjMWNiMTk0ODA5YjQzNDhhMjE1YWRlYmVkODExNjcuLjc3M2U3MTRjMGZlYzA5
N2Y0MWM0ZTZiNGU3Mjk3ZGI2NWY1Mjc4MGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9E
T01GaWxlU3lzdGVtQmFzZS5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFz
ZS5oCkBAIC0zNCwxMiArMzQsMjIgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNs
dWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJGbGFncy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERpcmVjdG9y
eUVudHJ5OworY2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZTsKK2NsYXNzIEVudHJ5QmFzZTsKK2Ns
YXNzIEVudHJ5Q2FsbGJhY2s7CitjbGFzcyBFbnRyaWVzQ2FsbGJhY2s7CitjbGFzcyBFcnJvckNh
bGxiYWNrOworY2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKK2NsYXNzIFZvaWRDYWxsYmFjazsKKwog
Ly8gQSBjb21tb24gYmFzZSBjbGFzcyBmb3IgRE9NRmlsZVN5c3RlbSBhbmQgRE9NRmlsZVN5c3Rl
bVN5bmMuCiBjbGFzcyBET01GaWxlU3lzdGVtQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERPTUZp
bGVTeXN0ZW1CYXNlPiB7CiBwdWJsaWM6CkBAIC01Miw2ICs2MiwxNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgQXN5bmNG
aWxlU3lzdGVtKiBhc3luY0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRmlsZVN5
c3RlbS5nZXQoKTsgfQogCisgICAgLy8gQWN0dWFsIEZpbGVTeXN0ZW0gQVBJIGltcGxlbWVudGF0
aW9ucy4gIEFsbCB0aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUg
YXQgdGhpcyBsZXZlbC4KKyAgICAvLyBUaGV5IHJldHVybiBmYWxzZSBmb3IgaW1tZWRpYXRlIGVy
cm9ycyB0aGF0IGRvbid0IGludm9sdmUgbG93ZXIgQXN5bmNGaWxlU3lzdGVtIGxhZXIgKGUuZy4g
Zm9yIG5hbWUgdmFsaWRhdGlvbiBlcnJvcnMpLiAgT3RoZXJ3aXNlIHRoZXkgcmV0dXJuIHRydWUg
KGJ1dCBsYXRlciBtYXkgY2FsbCBiYWNrIHdpdGggYW4gcnVudGltZSBlcnJvcikuCisgICAgYm9v
bCBnZXRNZXRhZGF0YShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPE1ldGFkYXRh
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKTsKKyAgICBib29sIG1vdmUoY29uc3QgRW50cnlCYXNlKiBzcmMsIEVudHJ5QmFz
ZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIGJvb2wgY29weShjb25zdCBFbnRyeUJh
c2UqIHNyYywgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBy
ZW1vdmUoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29sIGdldFBhcmVudChjb25zdCBFbnRy
eUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+KTsKKyAgICBib29sIGdldEZpbGUoY29uc3QgRW50cnlCYXNlKiBiYXNlLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29sIGdldERpcmVjdG9yeShj
b25zdCBFbnRyeUJhc2UqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFn
cz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4p
OworICAgIGJvb2wgcmVhZERpcmVjdG9yeShEaXJlY3RvcnlSZWFkZXJCYXNlKiByZWFkZXIsIGNv
bnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+KTsKKwogcHJvdGVjdGVkOgogICAgIERPTUZpbGVTeXN0ZW1CYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKICAgICBmcmll
bmQgY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkv
RGlyZWN0b3J5RW50cnkuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmNwcApp
bmRleCBmNzg3ODdhNGJjZDdmM2U1YTY1NDY5M2IzNjA1YjY4MzI0Yjg0MWYwLi5mMzE3Mjk3NmRm
MzNjNDMxMzNhOWE4MThhOGE0NTBmOTA0OTA4YzFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVh
cGkvRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRy
eS5jcHAKQEAgLTM2LDEwICszNiwxMSBAQAogI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgog
I2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisj
aW5jbHVkZSAiRmlsZUVycm9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGlyZWN0b3J5
RW50cnk6OkRpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgZnVsbFBhdGgpCitEaXJlY3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50cnkoRE9NRmlsZVN5
c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiAgICAgOiBFbnRy
eShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKIHsKIH0KQEAgLTQ5LDE0ICs1MCwxOSBAQCBQYXNzUmVm
UHRyPERpcmVjdG9yeVJlYWRlcj4gRGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcigpCiAgICAg
cmV0dXJuIERpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7
CiB9CiAKKyNkZWZpbmUgdGhyb3dFcnJvcihlcnJvcikgXAorICAgIGZpbGVzeXN0ZW0oKS0+c2No
ZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShlcnJvcikpOwor
CiB2b2lkIERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1Jl
ZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgZmls
ZXN5c3RlbSgpLT5nZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRGaWxlKHRoaXMsIHBhdGgs
IGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICB0aHJvd0Vy
cm9yKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7CiB9CiAKIHZvaWQgRGlyZWN0b3J5RW50cnk6
OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdz
LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIGZpbGVzeXN0ZW0oKS0+Z2V0RGly
ZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
OworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxhZ3Ms
IHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIHRocm93RXJyb3IoSU5W
QUxJRF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oIGIvV2ViQ29yZS9maWxlYXBpL0RpcmVj
dG9yeUVudHJ5LmgKaW5kZXggYzc2YjIwNDNhMzgxM2FmNWJjMzEzYmM5ZDA0MTU0ZjM4MjkwNTNl
ZS4uZTA2MTA2OWQ0ZGYxZWNjZGI3MTBlMmZkYzM4MTNlYzNlYTVkZmU2OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0Rp
cmVjdG9yeUVudHJ5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgRXJyb3JDYWxsYmFjazsKIAog
Y2xhc3MgRGlyZWN0b3J5RW50cnkgOiBwdWJsaWMgRW50cnkgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBjcmVhdGUoRE9NRmlsZVN5c3RlbSogZmlsZVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJl
Y3RvcnlFbnRyeT4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJl
Y3RvcnlFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwogICAgIH0KQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFz
c1JlZlB0cjxGbGFncz4gPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwogCiBwcml2YXRlOgotICAgIERpcmVjdG9yeUVudHJ5
KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworICAg
IERpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJp
bmcmIGZ1bGxQYXRoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlFbnRyeVN5bmMuY3BwCmluZGV4IDU4NmRkNzgyNWU5MDI5NWVhMDM3NWZhZjBjZjc5NjkzMjlh
MjY4MTQuLmI1NWZhODNhODY2YTlhNDMwNzAzYmNmYzkwNGY0NjIwMzhmYWI5YWMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCisrKyBiL1dlYkNvcmUv
ZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVk
ZSAiRGlyZWN0b3J5UmVhZGVyU3luYy5oIgogI2luY2x1ZGUgIkVudHJ5U3luYy5oIgogI2luY2x1
ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1
ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUw
LDE4ICs1MCwyNiBAQCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlclN5bmM+IERpcmVjdG9yeUVu
dHJ5U3luYzo6Y3JlYXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKQogICAgIHJldHVybiBEaXJlY3Rv
cnlSZWFkZXJTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Z1bGxQYXRoKTsKIH0KIAotUGFz
c1JlZlB0cjxGaWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUoY29uc3Qg
U3RyaW5nJiwgUGFzc1JlZlB0cjxGbGFncz4sIEV4Y2VwdGlvbkNvZGUmKQorUGFzc1JlZlB0cjxG
aWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
Ly8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgZWMgPSAwOworICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVyIGhlbHBl
cihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3Rl
bS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBo
ZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FU
SU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfcG9p
bnRlcl9jYXN0PEZpbGVFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKIH0KIAotUGFz
c1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8RmxhZ3M+LCBFeGNlcHRpb25Db2RlJikKK1Bh
c3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBlYyA9IDA7CisgICAgRW50cnlTeW5j
Q2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwor
ICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhpcywgcGF0aCwgZmxhZ3MsIGhl
bHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxEaXJlY3RvcnlFbnRyeVN5bmM+KGhl
bHBlci5nZXRSZXN1bHQoZWMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaCBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXIuaAppbmRleCBjYTdhZWRjMDAxMzlkMTMzOTAyNjgwNGZjNDZiMGIyNzZlODE1YjQ1
Li5mMGQ1ZWZkMjRiNzNkMDQ3YzNkNDc4ZTNiMTM2ZDdkNmY3NjdlMTczIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0Rp
cmVjdG9yeVJlYWRlci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCiAKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgiCiAjaW5jbHVkZSAiRE9NRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJhc2UuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJl
YWRlclN5bmMuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwCmlu
ZGV4IDYwMGFiN2Y2ZWZlMmI1YzVlYTlhMTdkMGM5NjExNGFkNDI5OTc0NWMuLjcxNjQ0NmVhNGE4
Yzc0ZTY5ZDExOGY5YzJhNzIxYjhjYjJjNTZmOTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFw
aS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
UmVhZGVyU3luYy5jcHAKQEAgLTMzLDkgKzMzLDE0IEBACiAKICNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCiAKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeUVu
dHJ5U3luYy5oIgogI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgiCisjaW5jbHVkZSAiRW50cnlT
eW5jLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5o
IgorI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ0LDEwICs0OSwxOSBAQCBEaXJlY3RvcnlSZWFkZXJTeW5jOjpEaXJlY3RvcnlSZWFk
ZXJTeW5jKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBjb25zdCBTdAogewogfQogCi1Q
YXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBEaXJlY3RvcnlSZWFkZXJTeW5jOjpyZWFkRW50cmll
cyhFeGNlcHRpb25Db2RlJikKK1Bhc3NSZWZQdHI8RW50cnlBcnJheVN5bmM+IERpcmVjdG9yeVJl
YWRlclN5bmM6OnJlYWRFbnRyaWVzKEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZWMgPSAwOworICAgIGlmICghbV9oYXNNb3Jl
KQorICAgICAgICByZXR1cm4gRW50cnlBcnJheVN5bmM6OmNyZWF0ZSgpOworCisgICAgRW50cmll
c1N5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0o
KSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkodGhpcywgbV9mdWxsUGF0
aCwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgc2V0SGFzTW9y
ZShmYWxzZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gaGVscGVyLmdl
dFJlc3VsdChlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Zp
bGVhcGkvRW50cnkuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmNwcAppbmRleCA5N2EzMjcw
OGUyZjgwZjE1YWI1NzIyNDJjZTRlYzYwOTI4ODVjZjY4Li43ZjE5MDFhYzlkZjM1OGYwYWM0ZDdm
MTBkNDA0MDMzZGI2MTVlZGEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuY3Bw
CisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAKQEAgLTMyLDQ0ICszMiw1MiBAQAogCiAj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCi0jaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNs
dWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKICNpbmNs
dWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNs
dWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRW50cnk6OkVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCitFbnRyeTo6RW50cnkoRE9NRmlsZVN5c3RlbUJh
c2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiAgICAgOiBFbnRyeUJhc2Uo
ZmlsZVN5c3RlbSwgZnVsbFBhdGgpCiB7CiB9CiAKKyNkZWZpbmUgdGhyb3dFcnJvcihlcnJvcikg
XAorICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLCBGaWxl
RXJyb3I6OmNyZWF0ZShlcnJvcikpOworCiB2b2lkIEVudHJ5OjpnZXRNZXRhZGF0YShQYXNzUmVm
UHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIGZpbGVzeXN0ZW0oKS0+Z2V0TWV0YWRhdGEo
dGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5
c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkK
KyAgICAgICAgdGhyb3dFcnJvcihJTlZBTElEX01PRElGSUNBVElPTl9FUlIpOwogfQogCi12b2lk
IEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0Cit2b2lkIEVudHJ5Ojptb3ZlVG8o
UGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5tb3Zl
KHRoaXMsIHBhcmVudCwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAg
ICBpZiAoIW1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIHRocm93RXJyb3IoSU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSKTsKIH0KIAotdm9pZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8RW50
cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
KSBjb25zdAordm9pZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBh
cmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25z
dAogewotICAgIGZpbGVzeXN0ZW0oKS0+Y29weSh0aGlzLCBwYXJlbnQsIG5hbWUsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHkodGhp
cywgcGFyZW50LmdldCgpLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQor
ICAgICAgICB0aHJvd0Vycm9yKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7CiB9CiAKIHZvaWQg
RW50cnk6OnJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmls
ZXN5c3RlbSgpLT5yZW1vdmUodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
KyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaykpCisgICAgICAgIHRocm93RXJyb3IoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJS
KTsKIH0KIAogdm9pZCBFbnRyeTo6Z2V0UGFyZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
IGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5nZXRQYXJlbnQodGhpcywgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0UGFyZW50KHRo
aXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIHRocm93RXJyb3Io
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAogU3RyaW5nIEVudHJ5Ojp0b1VSSShjb25z
dCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmggYi9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnkuaAppbmRleCBiNzVmMWVkZTFkMDk4YWYzNmMwNGJjMDVlMjNkODI1OGNl
NDBjYWIwLi5hNzFjNWYwN2JlYjg4NTM5MjU0NmFiYTFjMGZkNmEzY2FlZTNjZjc5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnku
aApAQCAtNDAsMjcgKzQwLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGly
ZWN0b3J5RW50cnk7CiBjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xhc3MgRW50cnlTeW5jOwogY2xh
c3MgRXJyb3JDYWxsYmFjazsKIGNsYXNzIE1ldGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBWb2lkQ2Fs
bGJhY2s7CiAKIGNsYXNzIEVudHJ5IDogcHVibGljIEVudHJ5QmFzZSB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB+RW50cnkoKSB7IH0KLQogICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01GaWxlU3lzdGVtKj4obV9maWxlU3lzdGVtKTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrID0gMCk7Ci0gICAgdmlydHVhbCB2b2lkIG1vdmVUbyhQYXNzUmVmUHRyPEVudHJ5
PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb3B5VG8oUGFzc1Jl
ZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUgPSBTdHJpbmcoKSwgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbW92
ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1l
ID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0g
MCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBwYXJlbnQs
IGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjayA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXJlbnQoUGFz
c1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3Ry
aW5nIHRvVVJJKGNvbnN0IFN0cmluZyYgbWltZVR5cGUgPSBTdHJpbmcoKSk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKTsKKyAgICBFbnRyeShET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBmdWxsUGF0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5Lmlk
bAppbmRleCBkMzYzYmNkYjk2NmJmNmI5YTU2NDIxNDEwMzk4Yjc4Yjk2ZjVlMTUzLi5mNmZjZGIz
YjRlYTg2NDlmM2Q4ZDk3ZDNhOTEwNDIzYjRjNzFmOTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Zp
bGVhcGkvRW50cnkuaWRsCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5pZGwKQEAgLTQxLDgg
KzQxLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
RmlsZVN5c3RlbSBmaWxlc3lzdGVtOwogCiAgICAgICAgIHZvaWQgZ2V0TWV0YWRhdGEoaW4gW09w
dGlvbmFsLCBDYWxsYmFja10gTWV0YWRhdGFDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtP
cHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAg
IHZvaWQgbW92ZVRvKGluIEVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZp
bmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBDYWxs
YmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJh
Y2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIHZvaWQgY29weVRvKGlu
IEVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxs
U3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxs
YmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJh
Y2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgbW92ZVRvKGluIERpcmVjdG9yeUVudHJ5
IHBhcmVudCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5n
XSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJy
b3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgY29weVRvKGluIERpcmVjdG9yeUVudHJ5IHBhcmVu
dCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNz
Q2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxs
YmFjayk7CiAgICAgICAgIHZvaWQgcmVtb3ZlKGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIFZvaWRD
YWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2Fs
bGJhY2sgZXJyb3JDYWxsYmFjayk7CiAgICAgICAgIHZvaWQgZ2V0UGFyZW50KGluIFtPcHRpb25h
bCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWws
IENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwogICAgIH07CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwIGIvV2ViQ29yZS9maWxlYXBp
L0VudHJ5QXJyYXlTeW5jLmNwcAppbmRleCBlZGJmMmRjZGU3ZWExNGM3OTFhOWI3ZTdkNjk2MDk4
ZTQ0OTg5Mzc2Li4yOWVjOWYzOTJkZTRmM2U0NmYyOGI0OTZkZGNjMzc4NTliN2I3OGQ1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwCisrKyBiL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeUFycmF5U3luYy5jcHAKQEAgLTMzLDggKzMzLDIwIEBACiAKICNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJFbnRyeUFycmF5LmgiCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4gRW50cnlBcnJheVN5bmM6OmNy
ZWF0ZShFbnRyeUFycmF5KiBlbnRyaWVzKQoreworICAgIFJlZlB0cjxFbnRyeUFycmF5U3luYz4g
ZW50cmllc1N5bmMgPSBhZG9wdFJlZihuZXcgRW50cnlBcnJheVN5bmMoKSk7CisgICAgaWYgKGVu
dHJpZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVudHJpZXMtPmxlbmd0
aCgpOyArK2kpCisgICAgICAgICAgICBlbnRyaWVzU3luYy0+YXBwZW5kKEVudHJ5U3luYzo6Y3Jl
YXRlKGVudHJpZXMtPml0ZW0oaSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJpZXNTeW5jLnJl
bGVhc2UoKTsKK30KKwogRW50cnlBcnJheVN5bmM6OkVudHJ5QXJyYXlTeW5jKCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5oIGIvV2ViQ29yZS9maWxl
YXBpL0VudHJ5QXJyYXlTeW5jLmgKaW5kZXggN2UxMzEyZmQ1YjM5ZjQ0YjEyZmM4MDJlMTZjNzFi
N2VjM2U3YzI3ZC4uOWM3ZGVjOGUwZmI4ZTc0MDZiMDdhNWM1YjBhZTU5MTRhMzc2MmMzYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmgKKysrIGIvV2ViQ29yZS9m
aWxlYXBpL0VudHJ5QXJyYXlTeW5jLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEVudHJ5QXJyYXlTeW5jKCkpOwogICAgIH0KIAorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBjcmVhdGUoRW50cnlBcnJheSogZW50cmll
cyk7CisKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2VudHJpZXMuc2l6
ZSgpOyB9CiAgICAgRW50cnlTeW5jKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICB2
b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IGVudHJ5KTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUJhc2UuaCBiL1dlYkNvcmUvZmlsZWFwaS9F
bnRyeUJhc2UuaAppbmRleCAxMjM0NTgwNDI3YzA1Y2M3NmYzMjc5YzM4ODE5OWZiYzBlNzNjOGJk
Li5kNTYzZWY3NDZiNDZlYmJkYjQ2NThiZmFjYmJmNGY3MGFhZWU0ZThkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5QmFz
ZS5oCkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIEVudHJ5QmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEVudHJ5QmFzZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkVudHJ5QmFzZSgpIHsgfQogCisg
ICAgRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVT
eXN0ZW07IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwIGIvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5U3luYy5jcHAKaW5kZXggNmFhYTM1NmM3NGIyZTc5Y2FjNDgwN2MyNmU3
NTFmZjBkNDk0ZjYzOC4uNTBjZDExNTkyNTE0ZWZjZWMwMmU3ZDY5N2I3YjU3YWEzM2Y2Mzc2ZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5jcHAKKysrIGIvV2ViQ29yZS9m
aWxlYXBpL0VudHJ5U3luYy5jcHAKQEAgLTM0LDkgKzM0LDEyIEBACiAjaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQogCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKKyNpbmNsdWRlICJET01GaWxlU3lz
dGVtU3luYy5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRGlyZWN0
b3J5RW50cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgogI2luY2x1ZGUgIk1l
dGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTeW5jQ2Fs
bGJhY2tIZWxwZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSwzMSArNDgsNTMg
QEAgRW50cnlTeW5jOjpFbnRyeVN5bmMoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNv
bnN0IFN0cmluZyYgZnVsbFBhdGgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWV0YWRhdGE+IEVudHJ5
U3luYzo6Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYpCitQYXNzUmVmUHRyPEVudHJ5U3luYz4g
RW50cnlTeW5jOjpjcmVhdGUoRW50cnlCYXNlKiBlbnRyeSkKIHsKLSAgICAvLyBGSVhNRTogdG8g
YmUgaW1wbGVtZW50ZWQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAg
ICBpZiAoZW50cnktPmlzRmlsZSgpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVF
bnRyeVN5bmMoZW50cnktPm1fZmlsZVN5c3RlbSwgZW50cnktPm1fZnVsbFBhdGgpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVudHJ5U3luYyhlbnRyeS0+bV9maWxlU3lzdGVt
LCBlbnRyeS0+bV9mdWxsUGF0aCkpOwogfQogCi1QYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlT
eW5jOjptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+LCBjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikgY29uc3QKK1Bhc3NSZWZQdHI8TWV0YWRhdGE+IEVudHJ5U3luYzo6
Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGlt
cGxlbWVudGVkLgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZWMg
PSAwOworICAgIE1ldGFkYXRhU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0t
PmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEo
dGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkg
eworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKIH0KIAotUGFzc1Jl
ZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50
cnlTeW5jPiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0CitQYXNzUmVmUHRy
PEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5
bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
IHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gMDsKKyAgICBlYyA9IDA7CisgICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxw
ZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOworICAgIGlmICghbV9m
aWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudC5nZXQoKSwgbmFtZSwgaGVscGVyLnN1Y2Nlc3ND
YWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVy
biBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKIH0KIAotdm9pZCBFbnRyeVN5bmM6OnJlbW92ZShFeGNl
cHRpb25Db2RlJikgY29uc3QKK1Bhc3NSZWZQdHI8RW50cnlTeW5jPiBFbnRyeVN5bmM6OmNvcHlU
byhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBs
ZW1lbnRlZC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGVjID0gMDsKKyAgICBFbnRyeVN5
bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7
CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHkodGhpcywgcGFyZW50LmdldCgpLCBuYW1lLCBo
ZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOworfQorCit2b2lkIEVudHJ5U3lu
Yzo6cmVtb3ZlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAoreworICAgIGVjID0gMDsKKyAgICBW
b2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3Rl
bSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIGhlbHBlci5zdWNjZXNz
Q2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpCisgICAgICAgIGVjID0gSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSOworICAgIGhlbHBlci5nZXRSZXN1bHQoZWMpOwogfQogCiBQYXNz
UmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjpnZXRQYXJlbnQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5oIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3lu
Yy5oCmluZGV4IGJhN2RiNjBjZTk2NzBiM2NlZTFjYWJkZGY4OWQ5MWU5MGYwZDg2ZWIuLjEzMmZk
NzBkYWM2ZjdlNjUzNGVlMGNlNWEwNGNiYWU5MzM1MGY0MWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeVN5bmMuaAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnlTeW5jLmgKQEAg
LTQ3LDYgKzQ3LDggQEAgY2xhc3MgTWV0YWRhdGE7CiAKIGNsYXNzIEVudHJ5U3luYyA6IHB1Ymxp
YyBFbnRyeUJhc2UgewogcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5U3luYz4g
Y3JlYXRlKEVudHJ5QmFzZSogZW50cnkpOworCiAgICAgRE9NRmlsZVN5c3RlbVN5bmMqIGZpbGVz
eXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01GaWxlU3lzdGVtU3luYyo+KG1f
ZmlsZVN5c3RlbSk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxNZXRhZGF0YT4gZ2V0TWV0
YWRhdGEoRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVF
bnRyeS5jcHAgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmNwcAppbmRleCAyZDFlNjIzZDNl
ZGU5MGZmODdlODBlMDZiMTlkMTIyMmNmOGY4Y2ExLi4zNjI5MTMyYTQ3ZGMzMDFiMWY0NTU1YjE0
MzQxNTNkZmNiOTAxMDQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmNw
cAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmNwcApAQCAtMzksNyArMzksNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVFbnRyeTo6RmlsZUVudHJ5KERPTUZpbGVTeXN0
ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCitGaWxlRW50cnk6OkZpbGVF
bnRyeShET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCkKICAgICA6IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQogewogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5oIGIvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5o
CmluZGV4IDJjODVkNzM5YjdjZDUxOThjODlkZjBmNGU0MjdmZTVkMjVjNTNhYWEuLmJiYjgzNjkx
YzU0OWJmNjZhOWUwZTY1OGY5NmRkNDdmNTllMTg0ZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmls
ZWFwaS9GaWxlRW50cnkuaAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmgKQEAgLTM5
LDExICszOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRE9NRmlsZVN5c3Rl
bTsKLQogY2xhc3MgRmlsZUVudHJ5IDogcHVibGljIEVudHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGaWxlRW50cnk+IGNyZWF0ZShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVFbnRy
eT4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1
bGxQYXRoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlRW50cnkoZmls
ZVN5c3RlbSwgZnVsbFBhdGgpKTsKICAgICB9CkBAIC01NCw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRl
OgotICAgIEZpbGVFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKTsKKyAgICBGaWxlRW50cnkoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBiL1dlYkNvcmUvZmls
ZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAppbmRleCA1MTZmNjI3NjhkYjg2ZTI5ODRmYTZl
Y2RhYmMyMzU2MjcwY2EzYTZkLi5lMGY5OTgwZDRiNTY0ZWRlYzZjOWFiYTJmODI5MjUyYzk3YzBi
MDNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAK
KysrIGIvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiQXN5bmNGaWxl
V3JpdGVyLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNpbmNsdWRlICJET01GaWxlU3lz
dGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIKICNpbmNsdWRlICJEaXJlY3Rv
cnlFbnRyeS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5oIgogI2luY2x1ZGUgIkVudHJp
ZXNDYWxsYmFjay5oIgpAQCAtMTExLDEyICsxMTEsMTIgQEAgdm9pZCBGaWxlU3lzdGVtQ2FsbGJh
Y2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkKIAogLy8gRW50cnlDYWxsYmFja3MgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Q
YXNzT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2ssIERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KQorUGFzc093blB0cjxFbnRyeUNhbGxi
YWNrcz4gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBE
T01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFBhdGgs
IGJvb2wgaXNEaXJlY3RvcnkpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBFbnRyeUNhbGxi
YWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGZpbGVTeXN0ZW0sIGV4cGVjdGVk
UGF0aCwgaXNEaXJlY3RvcnkpKTsKIH0KIAotRW50cnlDYWxsYmFja3M6OkVudHJ5Q2FsbGJhY2tz
KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KQorRW50cnlDYWxsYmFj
a3M6OkVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIERPTUZpbGVTeXN0
ZW1CYXNlKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0Rp
cmVjdG9yeSkKICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCiAg
ICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2ZpbGVTeXN0
ZW0oZmlsZVN5c3RlbSkKQEAgLTEzOCwxMiArMTM4LDEyIEBAIHZvaWQgRW50cnlDYWxsYmFja3M6
OmRpZFN1Y2NlZWQoKQogCiAvLyBFbnRyaWVzQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVBhc3NPd25QdHI8RW50
cmllc0NhbGxiYWNrcz4gRW50cmllc0NhbGxiYWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cmll
c0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywgRGlyZWN0b3J5UmVhZGVyKiBkaXJlY3RvcnlSZWFkZXIsIGNvbnN0IFN0cmlu
ZyYgYmFzZVBhdGgpCitQYXNzT3duUHRyPEVudHJpZXNDYWxsYmFja3M+IEVudHJpZXNDYWxsYmFj
a3M6OmNyZWF0ZShQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIERpcmVjdG9yeVJlYWRlckJh
c2UqIGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCkKIHsKICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IEVudHJpZXNDYWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrLCBkaXJlY3RvcnlSZWFkZXIsIGJhc2VQYXRoKSk7CiB9CiAKLUVudHJpZXNDYWxsYmFj
a3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBEaXJlY3Rv
cnlSZWFkZXIqIGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCkKK0VudHJp
ZXNDYWxsYmFja3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
LCBEaXJlY3RvcnlSZWFkZXJCYXNlKiBkaXJlY3RvcnlSZWFkZXIsIGNvbnN0IFN0cmluZyYgYmFz
ZVBhdGgpCiAgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQogICAg
ICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQogICAgICwgbV9kaXJlY3RvcnlS
ZWFkZXIoZGlyZWN0b3J5UmVhZGVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuaCBiL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgK
aW5kZXggN2YxODZlZjI3NTRhZTU2MjY1MmMxZjRmZGNmMTYwNmMzMjM1ZDRiNS4uYzYwMGE3NjZk
MDk2NmJjZmQ5YzU1OTY3ZmMyNjA1NTE4YzQ1ZTY5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxl
YXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3Rl
bUNhbGxiYWNrcy5oCkBAIC00MSw4ICs0MSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEFzeW5jRmlsZVdyaXRlcjsKLWNsYXNzIERPTUZpbGVTeXN0ZW07Ci1jbGFzcyBEaXJlY3Rv
cnlSZWFkZXI7CitjbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKK2NsYXNzIERpcmVjdG9yeVJlYWRl
ckJhc2U7CiBjbGFzcyBFcnJvckNhbGxiYWNrOwogY2xhc3MgRW50cmllc0NhbGxiYWNrOwogY2xh
c3MgRW50cnlBcnJheTsKQEAgLTg2LDI3ICs4NiwyNyBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIEVu
dHJ5Q2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyeUNhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIERPTUZpbGVTeXN0ZW0q
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8RW50cnlDYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBET01GaWxlU3lzdGVtQmFzZSosIGNv
bnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3VjY2VlZCgpOwogCiBwcml2YXRlOgotICAgIEVudHJ5Q2FsbGJhY2tzKFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIERPTUZpbGVT
eXN0ZW0qLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7Cisg
ICAgRW50cnlDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiwgRE9NRmlsZVN5c3RlbUJhc2UqLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVk
UGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7CiAgICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IG1fc3Vj
Y2Vzc0NhbGxiYWNrOwotICAgIERPTUZpbGVTeXN0ZW0qIG1fZmlsZVN5c3RlbTsKKyAgICBET01G
aWxlU3lzdGVtQmFzZSogbV9maWxlU3lzdGVtOwogICAgIFN0cmluZyBtX2V4cGVjdGVkUGF0aDsK
ICAgICBib29sIG1faXNEaXJlY3Rvcnk7CiB9OwogCiBjbGFzcyBFbnRyaWVzQ2FsbGJhY2tzIDog
cHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBEaXJlY3RvcnlSZWFkZXIqLCBjb25zdCBT
dHJpbmcmIGJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyaWVzQ2FsbGJhY2tz
PiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+LCBEaXJlY3RvcnlSZWFkZXJCYXNlKiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUs
IGJvb2wgaXNEaXJlY3RvcnkpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50
cmllcyhib29sIGhhc01vcmUpOwogCiBwcml2YXRlOgotICAgIEVudHJpZXNDYWxsYmFja3MoUGFz
c1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBEaXJl
Y3RvcnlSZWFkZXIqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKTsKKyAgICBFbnRyaWVzQ2FsbGJh
Y2tzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiwgRGlyZWN0b3J5UmVhZGVyQmFzZSosIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpOwogICAgIFJl
ZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAgIERpcmVjdG9yeVJl
YWRlciogbV9kaXJlY3RvcnlSZWFkZXI7CisgICAgRGlyZWN0b3J5UmVhZGVyQmFzZSogbV9kaXJl
Y3RvcnlSZWFkZXI7CiAgICAgU3RyaW5nIG1fYmFzZVBhdGg7CiAgICAgUmVmUHRyPEVudHJ5QXJy
YXk+IG1fZW50cmllczsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxl
U3lzdGVtLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCmluZGV4IDU2
N2FhZmU2NmY3ZDdjNTAwODNhOTVlNDI4ZjhlZjU5YWRmYTc5ODAuLmM3MzQ3Yjg4NDkyZTBhNjE5
NzBjY2YzNmE1MWYwOWI4NmExNTg5NjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9Mb2Nh
bEZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zCiAgICAgQXN5bmNGaWxl
U3lzdGVtOjpvcGVuRmlsZVN5c3RlbShiYXNlUGF0aCwgaWRlbnRpZmllciwgdHlwZSwgY2FsbGJh
Y2tzKTsKIH0KIAotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBs
b25nIGxvbmcsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
Cit2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZywg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgYm9vbCkKIHsK
ICAgICAvLyBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtIGNhbGxzIGNhbGxiYWNrcyBz
eW5jaHJvbm91c2x5LCBzbyB0aGUgbWV0aG9kIG5lZWRzIHRvIGJlIGNhbGxlZCBhc3luY2hyb25v
dXNseS4KICAgICBjb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJm9wZW5GaWxl
U3lzdGVtLCBmaWxlU3lzdGVtQmFzZVBhdGgoKSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+
ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIGNhbGxiYWNrcykpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9maWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5oIGIvV2ViQ29yZS9maWxlYXBpL0xvY2FsRmls
ZVN5c3RlbS5oCmluZGV4IGJiMWQwNDUwNDg1YjY0ZGMwMDcwN2Y4ODQ5ZDhjMGVhZWUzNzlhZjQu
LjlkOGFlNjVhMDU2MjQzOWJmZmRmNmFlNzI2M2Y0NTAyM2JlYTg2NGEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvTG9j
YWxGaWxlU3lzdGVtLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIC8vIGNhbGxpbmcg
dGhpcyBvbmUuCiAgICAgc3RhdGljIExvY2FsRmlsZVN5c3RlbSYgbG9jYWxGaWxlU3lzdGVtKCk7
CiAKLSAgICB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBB
c3luY0ZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiwgYm9vbCBzeW5jaHJvbm91cyA9IGZh
bHNlKTsKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKICAgICAvLyBUaGlzIGNhbGwgaXMgbm90
IHRocmVhZC1zYWZlOyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IHdvcmtlciB0aHJlYWRzIGFy
ZSBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL01ldGFkYXRhLmggYi9XZWJD
b3JlL2ZpbGVhcGkvTWV0YWRhdGEuaAppbmRleCAxZmVjOTQzN2I1MGQ2YTU1ZmQ4NjYyM2E5YzBj
ZjI3YWRmZDRhNDI1Li5iNzA4MDZiMDllZDQyMTI2NDBkYmM2MDBmODBjYWNiNzVhMmYzODBhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaAorKysgYi9XZWJDb3JlL2ZpbGVh
cGkvTWV0YWRhdGEuaApAQCAtNDQsNiArNDQsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1ldGFkYXRhKG1vZGlmaWNhdGlvblRpbWUpKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZXRhZGF0YT4gY3JlYXRlKE1ldGFkYXRhKiBtZXRhZGF0YSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWV0YWRhdGEobWV0YWRhdGEtPm1fbW9k
aWZpY2F0aW9uVGltZSkpOworICAgIH0KKwogICAgIC8vIE5lZWRzIHRvIHJldHVybiBlcG9jaCB0
aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgRGF0ZS4KICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZSAqIDEwMDAuMDsgfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmggYi9XZWJDb3JlL2Zp
bGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFkZjdhOTAxZjFhYmFkMDEz
NGQ1MDUyYTM3YzAwODk5MWQ3MGI1MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZmlsZWFw
aS9TeW5jQ2FsbGJhY2tIZWxwZXIuaApAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3luY0NhbGxi
YWNrSGVscGVyX2gKKyNkZWZpbmUgU3luY0NhbGxiYWNrSGVscGVyX2gKKworI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCisjaW5jbHVkZSAiRW50
cmllc0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiRW50cnlBcnJheVN5bmMuaCIKKyNpbmNsdWRlICJF
bnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGaWxlRW50cnkuaCIKKyNpbmNsdWRlICJGaWxlRXJy
b3IuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJNZXRhZGF0
YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEFzeW5jRmlsZVN5c3RlbTsKK2NsYXNzIERpcmVjdG9yeUVudHJ5U3lu
YzsKK2NsYXNzIEVudHJ5QXJyYXlTeW5jOworY2xhc3MgRW50cnlTeW5jOworY2xhc3MgRmlsZUVu
dHJ5U3luYzsKKworLy8gQSBoZWxwZXIgdGVtcGxhdGUgZm9yIEZpbGVTeXN0ZW1TeW5jIGltcGxl
bWVudGF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFN1Y2Nlc3NDYWxsYmFjaywgdHlwZW5hbWUg
T2JzZXJ2ZXJUeXBlLCB0eXBlbmFtZSBDYWxsYmFja0FyZywgdHlwZW5hbWUgUmVzdWx0VHlwZT4K
K2NsYXNzIFN5bmNDYWxsYmFja0hlbHBlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8U3VjY2Vzc0NhbGxiYWNrLCBPYnNlcnZl
clR5cGUsIENhbGxiYWNrQXJnLCBSZXN1bHRUeXBlPiBIZWxwZXJUeXBlOworICAgIFN5bmNDYWxs
YmFja0hlbHBlcihPYnNlcnZlclR5cGUqIG9ic2VydmVyID0gMCkKKyAgICAgICAgOiBtX29ic2Vy
dmVyKG9ic2VydmVyKQorICAgICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKFN1Y2Nlc3NDYWxsYmFj
a0ltcGw6OmNyZWF0ZSh0aGlzKSkKKyAgICAgICAgLCBtX2Vycm9yQ2FsbGJhY2soRXJyb3JDYWxs
YmFja0ltcGw6OmNyZWF0ZSh0aGlzKSkKKyAgICAgICAgLCBtX2Vycm9yKDApCisgICAgeworICAg
IH0KKworICAgIFBhc3NSZWZQdHI8UmVzdWx0VHlwZT4gZ2V0UmVzdWx0KEV4Y2VwdGlvbkNvZGUm
IGVjKQorICAgIHsKKyAgICAgICAgaWYgKG1fb2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgIGlmICgh
bV9vYnNlcnZlci0+d2FpdENvbXBsZXRpb24oKSkKKyAgICAgICAgICAgICAgICBtX2Vycm9yID0g
QUJPUlRfRVJSOworICAgICAgICB9CisgICAgICAgIGVjID0gbV9lcnJvcjsKKyAgICAgICAgcmV0
dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPFN1Y2Nlc3ND
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKCkgeyByZXR1cm4gbV9zdWNjZXNzQ2FsbGJhY2s7IH0K
KyAgICBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soKSB7IHJldHVybiBt
X2Vycm9yQ2FsbGJhY2s7IH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBTdWNjZXNzQ2FsbGJhY2tJ
bXBsIDogcHVibGljIFN1Y2Nlc3NDYWxsYmFjayB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdWNjZXNzQ2FsbGJhY2tJbXBsPiBjcmVhdGUoSGVscGVyVHlwZSogaGVs
cGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN1Y2Nlc3ND
YWxsYmFja0ltcGwoaGVscGVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlRXZlbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2hlbHBlci0+c2V0RXJyb3Io
MCk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoQ2FsbGJh
Y2tBcmcqIGFyZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9oZWxwZXItPnNldFJlc3VsdChS
ZXN1bHRUeXBlOjpjcmVhdGUoYXJnKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU3VjY2Vzc0NhbGxiYWNrSW1wbChIZWxwZXJU
eXBlKiBoZWxwZXIpCisgICAgICAgICAgICA6IG1faGVscGVyKGhlbHBlcikKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIEhlbHBlclR5cGUqIG1faGVscGVyOworICAgIH07CisKKyAgICBj
bGFzcyBFcnJvckNhbGxiYWNrSW1wbCA6IHB1YmxpYyBFcnJvckNhbGxiYWNrIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2tJbXBsPiBjcmVhdGUo
SGVscGVyVHlwZSogaGVscGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEVycm9yQ2FsbGJhY2tJbXBsKGhlbHBlcikpOworICAgICAgICB9CisKKyAgICAgICAg
dmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJyb3IpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChlcnJvcik7CisgICAgICAgICAgICBtX2hlbHBlci0+c2V0RXJyb3Io
ZXJyb3ItPmNvZGUoKSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEVycm9y
Q2FsbGJhY2tJbXBsKEhlbHBlclR5cGUqIGhlbHBlcikKKyAgICAgICAgICAgIDogbV9oZWxwZXIo
aGVscGVyKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgSGVscGVyVHlwZSogbV9oZWxw
ZXI7CisgICAgfTsKKworICAgIGZyaWVuZCBjbGFzcyBTdWNjZXNzQ2FsbGJhY2tJbXBsOworICAg
IGZyaWVuZCBjbGFzcyBFcnJvckNhbGxiYWNrSW1wbDsKKworICAgIHZvaWQgc2V0RXJyb3IoRXhj
ZXB0aW9uQ29kZSBlYykKKyAgICB7CisgICAgICAgIG1fZXJyb3IgPSBlYzsKKyAgICB9CisKKyAg
ICB2b2lkIHNldFJlc3VsdChQYXNzUmVmUHRyPFJlc3VsdFR5cGU+IHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIG1fcmVzdWx0ID0gcmVzdWx0OworICAgIH0KKworICAgIE9ic2VydmVyVHlwZSogbV9v
YnNlcnZlcjsKKyAgICBSZWZQdHI8U3VjY2Vzc0NhbGxiYWNrSW1wbD4gbV9zdWNjZXNzQ2FsbGJh
Y2s7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2tJbXBsPiBtX2Vycm9yQ2FsbGJhY2s7CisgICAg
UmVmUHRyPFJlc3VsdFR5cGU+IG1fcmVzdWx0OworICAgIEV4Y2VwdGlvbkNvZGUgbV9lcnJvcjsK
K307CisKK3N0cnVjdCBFbXB0eVR5cGUgOiBwdWJsaWMgUmVmQ291bnRlZDxFbXB0eVR5cGU+IHsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbXB0eVR5cGU+IGNyZWF0ZShFbXB0eVR5cGUqKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVR5cGUpOworICAgIH0KK307CisK
K3N0cnVjdCBFbXB0eU9ic2VydmVyVHlwZSB7CisgICAgYm9vbCB3YWl0Q29tcGxldGlvbigpCisg
ICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCit0eXBlZGVmIFN5bmNDYWxs
YmFja0hlbHBlcjxFbnRyeUNhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIEVudHJ5LCBFbnRyeVN5
bmM+IEVudHJ5U3luY0NhbGxiYWNrSGVscGVyOwordHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8
RW50cmllc0NhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIEVudHJ5QXJyYXksIEVudHJ5QXJyYXlT
eW5jPiBFbnRyaWVzU3luY0NhbGxiYWNrSGVscGVyOwordHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxw
ZXI8TWV0YWRhdGFDYWxsYmFjaywgQXN5bmNGaWxlU3lzdGVtLCBNZXRhZGF0YSwgTWV0YWRhdGE+
IE1ldGFkYXRhU3luY0NhbGxiYWNrSGVscGVyOwordHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8
Vm9pZENhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIEVtcHR5VHlwZSwgRW1wdHlUeXBlPiBWb2lk
U3luY0NhbGxiYWNrSGVscGVyOwordHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8RmlsZVN5c3Rl
bUNhbGxiYWNrLCBFbXB0eU9ic2VydmVyVHlwZSwgRE9NRmlsZVN5c3RlbSwgRE9NRmlsZVN5c3Rl
bVN5bmM+IEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXI7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIFN5bmND
YWxsYmFja0hlbHBlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDhjYWM4Nzk5N2FhOTUzMjY2MGU1YmVj
MjNlOTljYjE5MWViZDk0ZTUuLjg2YjcyZTU1ZjQzOTg2MmIxYTdjMjEwNGUzY2Q5YjRlOTNjNjNm
NmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCkBAIC0xOTIsNyArMTkyLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAj
aWYgZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJMRV9GSUxFX1NZU1RFTQogICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAwOwogICAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsKLSAgICAgICAgW0VuYWJsZWRBdFJ1bnRpbWVd
IHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBs
b25nIHNpemUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JD
YWxsYmFjayk7CisgICAgICAgIFtFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgcmVx
dWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUs
IGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJh
Y2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7
CiAKICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZsYWdz
Q29uc3RydWN0b3IgRmxhZ3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
QXN5bmNGaWxlU3lzdGVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCmlu
ZGV4IDFiZjc1ODA4MjFiYjMwN2JkZWYwMWI2YmYwMDRjOWIzNDk4Yjc1ZmYuLjcxODEzZjI2ZGNk
MzBhOTg3ZjRlYjA1ZTg0OTg3OTk5ZDg3ZGIyNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vQXN5bmNGaWxlU3lzdGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW0uaApAQCAtNTksNiArNTksMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaXNBdmFp
bGFibGUoKTsKIAorICAgIC8vIFN1YmNsYXNzIG11c3QgaW1wbGVtZW50IHRoaXMgaWYgaXQgc3Vw
cG9ydHMgc3luY2hyb25vdXMgb3BlcmF0aW9ucy4KKyAgICAvLyBUaGlzIHNob3VsZCByZXR1cm4g
ZmFsc2UgaWYgdGhlcmUncmUgbm8gcGVuZGluZyBvcGVyYXRpb25zLgorICAgIHZpcnR1YWwgYm9v
bCB3YWl0Q29tcGxldGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBDcmVhdGVzIGFu
ZCByZXR1cm5zIGEgbmV3IHBsYXRmb3JtLXNwZWNpZmljIEFzeW5jRmlsZVN5c3RlbSBpbnN0YW5j
ZSBpZiB0aGUgcGxhdGZvcm0gaGFzIGl0cyBvd24gaW1wbGVtZW50YXRpb24uCiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByb290UGF0
aCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAppbmRleCA2Y2VlMjQ2MjliN2I4NmZhYzI3
YTI1YjViM2FjYWIzODkzZDcwYmE4Li5lYTFiYTg5YTNlNzcyZjMxYzQzODc4M2Y0ZDUwMTYyZDcw
YWUzY2M5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysr
IGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCkBAIC02NiwxMSArNjYsMTMgQEAK
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgi
CiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFj
a3MuaCIKICNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJTeW5jQ2FsbGJh
Y2tIZWxwZXIuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNjYsNiArMzY4
LDI1IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cmVxdWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxv
bmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTCiAgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2Nh
bEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6
ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaywgdGhpcykpOwogfQogCitQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBXb3JrZXJD
b250ZXh0OjpyZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0
ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0
ZW0oKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGZpbGVTeXN0ZW1UeXBlID0gc3RhdGlj
X2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKTsKKyAgICBpZiAoZmlsZVN5c3RlbVR5
cGUgIT0gQXN5bmNGaWxlU3lzdGVtOjpUZW1wb3JhcnkgJiYgZmlsZVN5c3RlbVR5cGUgIT0gQXN5
bmNGaWxlU3lzdGVtOjpQZXJzaXN0ZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtU3lu
Y0NhbGxiYWNrSGVscGVyIGhlbHBlcjsKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5
c3RlbSgpLnJlcXVlc3RGaWxlU3lzdGVtKHRoaXMsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIu
ZXJyb3JDYWxsYmFjaygpLCB0aGlzKSwgdHJ1ZSk7CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1
bHQoZWMpOworfQorCiBDT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNvbnRl
eHQ6OlRFTVBPUkFSWSkgPT0gc3RhdGljX2Nhc3Q8aW50PihBc3luY0ZpbGVTeXN0ZW06OlRlbXBv
cmFyeSksIGVudW1fbWlzbWF0Y2gpOwogQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihX
b3JrZXJDb250ZXh0OjpQRVJTSVNURU5UKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5
c3RlbTo6UGVyc2lzdGVudCksIGVudW1fbWlzbWF0Y2gpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNv
bnRleHQuaAppbmRleCA0MTI4YTU2MjNiOGVmOGFkYzM0MjA3NDE1M2EwZWE0YzZiOTg0ZDhmLi4w
YzQ5NWQ0YzMwMWVkYzUzOGIzNWY2MjBkMjE3MzY5NTkyYWZjM2RkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IERhdGFiYXNlOwogICAgIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiAgICAgY2xhc3MgRGF0YWJh
c2VTeW5jOworICAgIGNsYXNzIERPTUZpbGVTeXN0ZW1TeW5jOwogICAgIGNsYXNzIEVycm9yQ2Fs
bGJhY2s7CiAgICAgY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNrOwogICAgIGNsYXNzIE5vdGlmaWNh
dGlvbkNlbnRlcjsKQEAgLTEzMCw2ICsxMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICBQRVJTSVNURU5ULAogICAgICAgICB9OwogICAgICAgICB2b2lkIHJlcXVlc3RGaWxl
U3lzdGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICAgICAgUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtU3luYz4gcmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGludCB0eXBlLCBsb25nIGxv
bmcgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKICAgICAgICAgLy8gVGhlc2UgbWV0
aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpTV29ya2VyQ29udGV4dDo6bWFya0No
aWxkcmVuKE1hcmtTdGFjayYpIGluCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5pZGwgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKaW5kZXggM2Ux
ODVjMGQ1YjhlMGExMzdiZDkyOGM1MmEyZGJhODE3NWY4MDMzNy4uYWE0MGZmM2Y4MjA5ZTFmMzgy
ODZiYTI1NzNlNjFmYjA2NTk5NjEzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckNvbnRleHQuaWRsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbApAQCAt
MTA4LDcgKzEwOCw4IEBAIG1vZHVsZSB0aHJlYWRzIHsKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxF
X1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFRFTVBPUkFSWSA9IDA7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBFUlNJU1RF
TlQgPSAxOwotICAgICAgICBbRW5hYmxlZEF0UnVudGltZV0gdm9pZCByZXF1ZXN0RmlsZVN5c3Rl
bShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNr
LCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxi
YWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgW0Vu
YWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCByZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNp
Z25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25h
bF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRp
b25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgW0VuYWJsZWRBdFJ1
bnRpbWU9RmlsZVN5c3RlbV0gRE9NRmlsZVN5c3RlbVN5bmMgcmVxdWVzdEZpbGVTeXN0ZW1TeW5j
KGluIHVuc2lnbmVkIHNob3J0IHR5cGUsIGluIGxvbmcgbG9uZyBzaXplKSByYWlzZXMgKEZpbGVF
eGNlcHRpb24pOwogCiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGlt
ZT1GaWxlU3lzdGVtXSBGbGFnc0NvbnN0cnVjdG9yIEZsYWdzOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCA2ODVhYzIwMTc4YTQyNGNjMjNiMDg4NGJhZTA4ZDllM2FjOGQwZThhLi4xNjkxMDNiNjg1
ZjBhYjJlOWE2YjBhNjlhZWQ3YjE1MjE5NTZjYzhmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NSBAQAorMjAxMC0xMC0wMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZpbGVT
eXN0ZW1TeW5jIGltcGxlbWVudGF0aW9uIGZvciBXb3JrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDQ0CisKKyAgICAgICAgKiBzcmMvTG9jYWxG
aWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxGaWxlU3lzdGVt
OjpyZXF1ZXN0RmlsZVN5c3RlbSk6IEFkZGVkIGEgbmV3IHBhcmFtZXRlcgorICAgICAgICBzeW5j
aHJvbm91cy4KKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQmFzZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYldvcmtlckJhc2U6Om9wZW5GaWxlU3lzdGVtKTogQWRkZWQgYSBuZXcgcGFyYW1ldGVy
CisgICAgICAgIHN5bmNocm9ub3VzLgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNlLmg6Cisg
ICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW06OndhaXRDb21wbGV0aW9uKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZSk6IFVwZGF0ZWQgdG8gc3RvcmUgY3JlYXRlZCBicmlkZ2UgdG8g
YSBtZW1iZXIgdmFyaWFibGUgc28gdGhhdCBsYXRlcgorICAgICAgICB3ZSBjYW4gY2FsbCBicmlk
Z2UtPnN0b3AoKSB3aGVuIFJ1bkxvb3AgaXMgdGVybWluYXRlZCBkdXJpbmcKKyAgICAgICAgd2Fp
dENvbXBsZXRpb24uCisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
Lmg6CisKIDIwMTAtMDktMzAgIEFsZXhleSBNYXJpbmljaGV2ICA8YW1hcmluaWNoZXZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlzIE1hcnJpbi4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggYTRmMmQ3MjM3
ODk1NmVlMTI1MzcwODhmYzJhYzk5YWUxNTRkZGQ2OS4uOTZmNDBmYmU4MjYyYjZiN2EzYjNiODQ0
Mjc2YWIzNTY4MTZkM2E5NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbEZp
bGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbEZpbGVT
eXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgTG9jYWxGaWxlU3lzdGVtJiBMb2Nh
bEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpCiAgICAgcmV0dXJuICpsb2NhbEZpbGVTeXN0
ZW07CiB9CiAKLXZvaWQgTG9jYWxGaWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9u
ZyBsb25nIHNpemUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCit2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9u
ZyBzaXplLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBi
b29sIHN5bmNocm9ub3VzKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBpZiAoY29udGV4
dC0+aXNEb2N1bWVudCgpKSB7CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgTG9jYWxGaWxlU3lzdGVt
OjpyZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3lu
Y0ZpCiAgICAgICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxX
b3JrZXJDb250ZXh0Kj4oY29udGV4dCk7CiAgICAgICAgIFdvcmtlckxvYWRlclByb3h5KiB3b3Jr
ZXJMb2FkZXJQcm94eSA9ICZ3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJv
eHkoKTsKICAgICAgICAgV2ViV29ya2VyQmFzZSogd2ViV29ya2VyID0gc3RhdGljX2Nhc3Q8V2Vi
V29ya2VyQmFzZSo+KHdvcmtlckxvYWRlclByb3h5KTsKLSAgICAgICAgd2ViV29ya2VyLT5vcGVu
RmlsZVN5c3RlbShzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgc2l6ZSwg
bmV3IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcywgY29udGV4dCkpOworICAg
ICAgICB3ZWJXb3JrZXItPm9wZW5GaWxlU3lzdGVtKHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06
OlR5cGU+KHR5cGUpLCBzaXplLCBuZXcgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJh
Y2tzLCBjb250ZXh0KSwgc3luY2hyb25vdXMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViV29ya2VyQmFzZS5jcHAKaW5kZXggZjRmNTkyMTVkMGZmMGY5MjJjMDBhYWY3NjBjNDk1Njg3
M2M5ZDJkNy4uZGU0ODU4YzlhODZkOTcxOTYzNTI1ZTIwNTU3NDRhOTk4YzE5NDk2NCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCkBAIC0yMzcsMTEgKzIzNywyMyBAQCBib29s
IFdlYldvcmtlckJhc2U6OmFsbG93RGF0YWJhc2UoV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYlN0cgogfQogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotdm9pZCBX
ZWJXb3JrZXJCYXNlOjpvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxv
bmcgbG9uZyBzaXplLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdl
YldvcmtlckJhc2U6Om9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9u
ZyBsb25nIHNpemUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcywgYm9vbCBzeW5j
aHJvbm91cykKIHsKKyAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gbV93b3JrZXJUaHJlYWQt
PnJ1bkxvb3AoKTsKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBjb250cm9sbGVyID0gV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKTsKLSAgICBSZWZQdHI8
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlID0gV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xsZXItPndvcmtlckNvbnRleHQo
KSwgY2FsbGJhY2tzKTsKLSAgICBicmlkZ2UtPnBvc3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVh
ZChjb21tb25DbGllbnQoKSwgdHlwZSwgc2l6ZSwgb3BlbkZpbGVTeXN0ZW1Nb2RlKTsKKyAgICBX
b3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gY29udHJvbGxlci0+d29ya2VyQ29udGV4dCgp
OworCisgICAgLy8gQ3JlYXRlIGEgdW5pcXVlIG1vZGUgZm9yIHRoaXMgb3BlbkZpbGVTeXN0ZW0g
Y2FsbC4KKyAgICBTdHJpbmcgbW9kZSA9IG9wZW5GaWxlU3lzdGVtTW9kZTsKKyAgICBtb2RlLmFw
cGVuZChTdHJpbmc6Om51bWJlcihydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKKworICAgIFJl
ZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UgPSBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGUodGhpcywgd29ya2VyQ29udGV4dCwgY2FsbGJh
Y2tzKTsKKyAgICBicmlkZ2UtPnBvc3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZChjb21tb25D
bGllbnQoKSwgdHlwZSwgc2l6ZSwgbW9kZSk7CisKKyAgICBpZiAoc3luY2hyb25vdXMpIHsKKyAg
ICAgICAgaWYgKHJ1bkxvb3AucnVuSW5Nb2RlKHdvcmtlckNvbnRleHQsIG1vZGUpID09IE1lc3Nh
Z2VRdWV1ZVRlcm1pbmF0ZWQpCisgICAgICAgICAgICBicmlkZ2UtPnN0b3AoKTsKKyAgICB9CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNl
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAppbmRleCAxZjRiYzAzMTY5
ODhkMDIwNDVjMDQ2NmFlZTc2YmMwOWFlZjBiNDA4Li5mZTg0YmY3OGZhMDA2MDA0YTJjMzEwMGM1
ODJlNTczNzVlZDIyMmNjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckJhc2UuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaApAQCAtOTMs
NyArOTMsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgLy8gUmVx
dWVzdHMgdG8gb3BlbiBhIGZpbGUgc3lzdGVtIGZvciB0aGlzIHdvcmtlci4gKE5vdGUgdGhhdCB0
aGlzIGlzIG5vdCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIFdlYkZyYW1lQ2xpZW50OjpvcGVuRmls
ZVN5c3RlbS4pCi0gICAgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlLCBs
b25nIGxvbmcgc2l6ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHZvaWQgb3BlbkZp
bGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqLCBib29sIHN5bmNocm9ub3VzKTsKICNlbmRpZgogCiAgICAgLy8gRXhlY3V0
ZXMgdGhlIGdpdmVuIHRhc2sgb24gdGhlIG1haW4gdGhyZWFkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCBiMjFi
NzA5ZTc2ZjljOWE0Y2EzMGNmMmUyZWI0MWI4ODk5ZGVmODliLi5mZjEzYWNiNjZjOTZjYTQwOWU2
M2VjNjk3OTc0ZGFkNDY0MzNkNTBjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dv
cmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcApAQCAtNzEsNiArNzEsMjEgQEAgV29y
a2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06On5Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bSgpCiB7CiB9CiAKK2Jvb2wgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OndhaXRDb21w
bGV0aW9uKCkKK3sKKyAgICBpZiAoIW1fYnJpZGdlRm9yTGFzdE9wZXJhdGlvbi5nZXQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogY29udHJv
bGxlciA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KCk7Cisg
ICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IGNvbnRyb2xsZXItPndvcmtlckNvbnRl
eHQoKTsKKyAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyQ29udGV4dC0+dGhyZWFk
KCktPnJ1bkxvb3AoKTsKKyAgICBpZiAocnVuTG9vcC5ydW5Jbk1vZGUod29ya2VyQ29udGV4dCwg
bV9tb2RlKSA9PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7CisgICAgICAgIG1fYnJpZGdlRm9y
TGFzdE9wZXJhdGlvbi0+c3RvcCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpt
b3ZlKGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAg
ICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0
TW92ZVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9u
UGF0aCwgbV9tb2RlKTsKQEAgLTEyMyw3ICsxMzgsOCBAQCB2b2lkIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUNocm9taXVtOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3Qg
UwogCiBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IFdvcmtlckFz
eW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0g
ICAgcmV0dXJuIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZShtX3dvcmtl
ciwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBuZXcgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0lt
cGwoY2FsbGJhY2tzKSk7CisgICAgbV9icmlkZ2VGb3JMYXN0T3BlcmF0aW9uID0gV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlKG1fd29ya2VyLCBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNr
cykpOworICAgIHJldHVybiBtX2JyaWRnZUZvckxhc3RPcGVyYXRpb247CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0uaAppbmRleCA3Y2QzNGI5N2ZhNGU3NDllMWViZjhiYzNkNjlhMDlm
M2M2Zjk2MjQ2Li44YTM4NGM3ZDExZDVlYWRhM2I2NDhhZTQyOGQyMDRlMGY5NjIyNTdkIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bS5oCkBAIC01OCw2ICs1OCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtKCk7CiAKKyAgICAvLyBSdW5zIG9uZSBwZW5kaW5nIG9wZXJhdGlv
biAodG8gd2FpdCBmb3IgY29tcGxldGlvbiBpbiB0aGUgc3luYy1tb2RlKS4KKyAgICB2aXJ0dWFs
IGJvb2wgd2FpdENvbXBsZXRpb24oKTsKKwogICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFN0
cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2b2lkIGNvcHkoY29u
c3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKQEAgLTc2LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVt
KiBtX3dlYkZpbGVTeXN0ZW07CiAgICAgV2ViS2l0OjpXZWJXb3JrZXJCYXNlKiBtX3dvcmtlcjsK
KyAgICBSZWZQdHI8V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBtX2Jy
aWRnZUZvckxhc3RPcGVyYXRpb247CiAgICAgU3RyaW5nIG1fbW9kZTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69570</attachid>
            <date>2010-10-02 01:05:45 -0700</date>
            <delta_ts>2010-10-05 00:09:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47044-20101002010544.patch</filename>
            <type>text/plain</type>
            <size>89639</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhM2MxYjhmZDM2MzdjYmNlYWUwMDcxMGMxYmY1OTEyYmM4YTgwMGU0Li5mYWY0ODdm
ODFmZjQxZTkyYTBmZTg5YTk3MGYwNWU3ZDMzN2RhYWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMDEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVt
U3luYyBpbXBsZW1lbnRhdGlvbiBmb3IgV29ya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA0NAorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L2FzeW5jLW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qczoKKyAgICAgICAgKiBmYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dDogVXBk
YXRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
eW5jLW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTAtMDktMzAgIEtpbnVrbyBZYXN1ZGEg
IDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJh
dGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25z
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWE4MmZjMDRhOTdkMTNmYzliMDBjNmFkMWRiZjNmYzZhNDE1Zjcy
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1v
cGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTA5MDQx
YTVhOGQ2MmE5ZDJlZGU3Mjk4MjJmOTRhYWUwM2YxMmNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCkBA
IC0wLDAgKzEsMTAyIEBACitkZXNjcmlwdGlvbigiVGVzdCBtYWtpbmcgbXVsdGlwbGUgYXN5bmMg
RmlsZVN5c3RlbSBvcGVyYXRpb25zLiIpOworCit2YXIgZmlsZVN5c3RlbSA9IG51bGw7CisKK3Zh
ciBhOwordmFyIGI7Cit2YXIgYzsKK3ZhciBkOworCit2YXIgcGF0aHMgPSBbXTsKK3ZhciBkaXJz
Q291bnQgPSAwOwordmFyIHJlYWRlciA9IG51bGw7CisKK2Z1bmN0aW9uIGVycm9yQ2FsbGJhY2so
ZXJyb3IpIHsKKyAgICBkZWJ1ZygiR290IGVycm9yOiAiICsgZXJyb3IuY29kZSk7CisgICAgcmVt
b3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbS5yb290KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KworZnVuY3Rpb24gZW50cmllc0NhbGxiYWNrKGVudHJpZXMpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgcGF0aHMucHVzaChlbnRyaWVz
W2ldLmZ1bGxQYXRoKTsKKyAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCisgICAg
ICAgICAgICBkaXJzQ291bnQrKzsKKyAgICB9CisgICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkgewor
ICAgICAgICByZWFkZXIucmVhZEVudHJpZXMoZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXRocy5zb3J0KCk7CisgICAgICAgIHNob3VsZEJl
KCciJyArIHBhdGhzLmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCJkaXJzQ291bnQiLCAiMyIpOworICAgICAgICByZW1vdmVSZWN1cnNp
dmVseShmaWxlU3lzdGVtLnJvb3QpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHZlcmlmeSgpIHsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIHRoZSBGaWxlU3lz
dGVtIHN0YXR1cy4iKTsKKyAgICByZWFkZXIgPSBmaWxlU3lzdGVtLnJvb3QuY3JlYXRlUmVhZGVy
KCk7CisgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFj
ayk7Cit9CisKK2Z1bmN0aW9uIGFzeW5jVGVzdDIoKSB7CisgICAgZGVidWcoIlN0YXJ0aW5nIGFz
eW5jIHRlc3Qgc3RhZ2UgMi4iKTsKKworICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigp
OworICAgIHZhciBkb25lID0gZnVuY3Rpb24oKSB7IGhlbHBlci5kb25lKCk7IH07CisKKyAgICBo
ZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBhLmNvcHlUbyhiLCAndG1wJywgZG9uZSwgZXJyb3JDYWxs
YmFjayk7IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IGEuZ2V0TWV0YWRhdGEoZG9u
ZSwgZXJyb3JDYWxsYmFjayk7IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IGIuZ2V0
UGFyZW50KGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9u
KCkgeyBjLmNvcHlUbyhmaWxlU3lzdGVtLnJvb3QsICdmJywgZG9uZSwgZXJyb3JDYWxsYmFjayk7
IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9v
dCwgJ2QyJywgZG9uZSwgZXJyb3JDYWxsYmFjayk7IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rp
b24oKSB7IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSwgZG9uZSwg
ZXJyb3JDYWxsYmFjayk7IH0pOworCisgICAgaGVscGVyLmpvaW4odmVyaWZ5KTsKK30KKworZnVu
Y3Rpb24gYXN5bmNUZXN0MSgpIHsKKyAgICBkZWJ1ZygiU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFn
ZSAxLiIpOworCisgICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7CisgICAgdmFyIHJv
b3QgPSBmaWxlU3lzdGVtLnJvb3Q7CisKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290
LmdldEZpbGUoJ2EnLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBh
ID0gZW50cnk7CisgICAgICAgIGhlbHBlci5kb25lKCk7CisgICAgfSwgZXJyb3JDYWxsYmFjayk7
IH0pOworCisgICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXREaXJlY3RvcnkoJ2In
LCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBiID0gZW50cnk7Cisg
ICAgICAgIGhlbHBlci5kb25lKCk7CisgICAgfSwgZXJyb3JDYWxsYmFjayk7IH0pOworCisgICAg
aGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRy
dWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBjID0gZW50cnk7CisgICAgICAgIGhlbHBl
ci5kb25lKCk7CisgICAgfSwgZXJyb3JDYWxsYmFjayk7IH0pOworCisgICAgaGVscGVyLnJ1bihm
dW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCdkJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50
cnkpIHsKKyAgICAgICAgZCA9IGVudHJ5OworICAgICAgICBoZWxwZXIuZG9uZSgpOworICAgIH0s
IGVycm9yQ2FsbGJhY2spOyB9KTsKKworICAgIGhlbHBlci5qb2luKGFzeW5jVGVzdDIpOworfQor
CitpZiAodGhpcy5yZXF1ZXN0RmlsZVN5c3RlbSkgeworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigpOworICAgIGhlbHBlci5ydW4oZnVu
Y3Rpb24oKSB7CisgICAgcmVxdWVzdEZpbGVTeXN0ZW0uYXBwbHkodGhpcywgW3RoaXMuVEVNUE9S
QVJZLCAxMDAsIGZ1bmN0aW9uKGZzKSB7CisgICAgICAgIGRlYnVnKCJHb3QgRmlsZVN5c3RlbToi
ICsgZnMubmFtZSk7CisgICAgICAgIGZpbGVTeXN0ZW0gPSBmczsKKyAgICAgICAgcmVtb3ZlUmVj
dXJzaXZlbHkoZmlsZVN5c3RlbS5yb290LCBmdW5jdGlvbigpeyBoZWxwZXIuZG9uZSgpOyB9LCBl
cnJvckNhbGxiYWNrKTsKKyAgICB9LCBlcnJvckNhbGxiYWNrXSk7IH0pOworICAgIGRlYnVnKCJy
ZXF1ZXN0ZWQgRmlsZVN5c3RlbS4iKTsKKyAgICBoZWxwZXIuam9pbihhc3luY1Rlc3QxKTsKK30g
ZWxzZQorICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9y
dC4iKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJl
LmpzCmluZGV4IDg0ZTBmYWQ5NTE2YjE1MjFjNTQzOGUwY2FjMGZmY2IxZjA4MTdlMGQuLjNlY2Q3
MDkwN2Y0ZTVlNmIzZDBlOWRhNWQ5Zjc4ZmQ3MDAyNDE2NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJl
LmpzCkBAIC0xMCw2ICsxMCw3IEBAIGZ1bmN0aW9uIHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwp
CiB7CiAgICAgZGVidWcoJ1N0YXJ0aW5nIHdvcmtlcjogJyArIHRlc3RTY3JpcHRVUkwpOwogICAg
IHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5q
cycpOworICAgIHdvcmtlci5wb3N0TWVzc2FnZSgnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5q
cycpOwogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh0ZXN0U2NyaXB0VVJMKTsKICAgICB3b3JrZXIu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YjU2NWE5YzMyMmM0OWY5MDZjYjVkNjgwNTlmMzU0MzBkMDk2YjMxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJh
dGlvbnMuanMKQEAgLTAsMCArMSwzOCBAQAorZGVzY3JpcHRpb24oIlRlc3QgbWFraW5nIG11bHRp
cGxlIHN5bmNocm9ub3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4iKTsKKwordmFyIGZpbGVTeXN0
ZW0gPSByZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7CisKKy8vIFN0
YWdlIDEgKHByZXBhcmUpCit2YXIgYSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdhJywge2Ny
ZWF0ZTp0cnVlfSk7Cit2YXIgYiA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2InLCB7
Y3JlYXRlOnRydWV9KTsKK3ZhciBjID0gZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeSgnYycs
IHtjcmVhdGU6dHJ1ZX0pOwordmFyIGQgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnZCcsIHtj
cmVhdGU6dHJ1ZX0pOworCisvLyBTdGFnZSAyICh0ZXN0KQordmFyIGFfY29weSA9IGEuY29weVRv
KGIsICd0bXAnKTsKK3ZhciBtZXRhZGF0YSA9IGEuZ2V0TWV0YWRhdGEoKTsKK3ZhciBiX3BhcmVu
dCA9IGIuZ2V0UGFyZW50KCk7Cit2YXIgY19jb3B5ID0gYy5jb3B5VG8oZmlsZVN5c3RlbS5yb290
LCAnZicpOwordmFyIGRfbmV3ID0gZC5tb3ZlVG8oZmlsZVN5c3RlbS5yb290LCAnZDInKTsKK3Zh
ciBlID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2UnLCB7Y3JlYXRlOnRydWV9KTsKKworLy8g
VmVyaWZ5Cit2YXIgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwordmFy
IGRpcnNDb3VudCA9IDA7Cit2YXIgcGF0aHMgPSBbXTsKK2RvIHsKKyAgICB2YXIgZW50cmllcyA9
IHJlYWRlci5yZWFkRW50cmllcygpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5s
ZW5ndGg7ICsraSkgeworICAgICAgICBwYXRocy5wdXNoKGVudHJpZXNbaV0uZnVsbFBhdGgpOwor
ICAgICAgICBpZiAoZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIGRpcnNDb3Vu
dCsrOworICAgIH0KK30gd2hpbGUgKGVudHJpZXMubGVuZ3RoKTsKKworcGF0aHMuc29ydCgpOwor
c2hvdWxkQmUoJyInICsgcGF0aHMuam9pbignLCcpICsgJyInLCAnIi9hLC9iLC9jLC9kMiwvZSwv
ZiInKTsKK3Nob3VsZEJlKCJkaXJzQ291bnQiLCAiMyIpOworcmVtb3ZlUmVjdXJzaXZlbHkoZmls
ZVN5c3RlbS5yb290KTsKK2ZpbmlzaEpTVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJl
ZDY4ZDI5MTE3ZmZjMWNlMmIzNDI0NWE0ZjEwM2RhMWRjOWIwOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgcnVubmluZyBtdWx0aXBsZSBh
c3luYyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgaW4gV29ya2VyLgorCitTdGFydGluZyB3b3JrZXI6
IC4uL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCitEZXNjcmlwdGlvbjogVGVzdCBtYWtp
bmcgbXVsdGlwbGUgYXN5bmMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLgorcmVxdWVzdGVkIEZpbGVT
eXN0ZW0uCitHb3QgRmlsZVN5c3RlbTpodHRwX2xvY2FsaG9zdF84MDgwOlRlbXBvcmFyeQorU3Rh
cnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAxLgorU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAyLgor
VmVyaWZ5aW5nIHRoZSBGaWxlU3lzdGVtIHN0YXR1cy4KK1BBU1M6ICIvYSwvYiwvYywvZDIsL2Us
L2YiIGlzICIvYSwvYiwvYywvZDIsL2UsL2YiCitQQVNTOiBkaXJzQ291bnQgaXMgMworRE9ORQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTdjYzRmNjQ2
MzNiOGE5ZGQ2NmQ3MGJjMWExN2IwMmRlZWQ0YWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy5odG1sCkBAIC0w
LDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2Zz
LXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9m
cy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcnVubmluZyBtdWx0aXBsZSBhc3luYyBmaWxlc3lzdGVt
IG9wZXJhdGlvbnMgaW4gV29ya2VyLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KK3N0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcycpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0
ZW50LXN5bmMtZXhwZWN0ZWQudHh0CmluZGV4IDIzZWJmYmQ0YjY5NDYwMjQ4NDI3ZGM1NzAyN2Iy
YzY1MmM5OWYzYzIuLmFhMmE5YWFjYjg5MjMxYTY3MDRlMTFlNmMzNDkyZTI3ZDBmZDQ2NTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJz
aXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIs
MTAgQEAgVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBFUlNJU1RFTlQgRmlsZVN5c3RlbVN5bmMgaW4g
V29ya2VyLgogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVu
dC1zeW5jLmpzCiBEZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFBFUlNJU1RFTlQg
dGVzdC4KLUdvdCBlcnJvciBmcm9tIHdvcmtlcjogVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IHJl
cXVlc3RGaWxlU3lzdGVtU3luYyBpcyBub3QgZGVmaW5lZAorU3VjY2Vzc2Z1bGx5IG9idGFpbmVk
IFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpodHRwX2xvY2FsaG9zdF84MDgwOlBlcnNpc3RlbnQKK1BB
U1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1M6IGZpbGVTeXN0ZW0u
cm9vdC5mdWxsUGF0aCBpcyAiLyIKK0RPTkUKIAogVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5
bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAppbmRleCAwZTIxYzAyODM0MWM4YjkwNmI2
ZjNiNjIzMzU0N2IwODBiYzhjOTFlLi5iYmM1YTAyNmNmOTRjNmFjNDQzMzY0NThmOTg3YzE5ZTI0
YWI4NzYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
aW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQKQEAg
LTIsNyArMiwxMCBAQCBUaGlzIHRlc3RzIHJlcXVlc3RpbmcgVEVNUE9SQVJZIEZpbGVTeXN0ZW1T
eW5jIGluIFdvcmtlci4KIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXRl
bXBvcmFyeS1zeW5jLmpzCiBEZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRFTVBP
UkFSWSB0ZXN0LgotR290IGVycm9yIGZyb20gd29ya2VyOiBVbmNhdWdodCBSZWZlcmVuY2VFcnJv
cjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIGlzIG5vdCBkZWZpbmVkCitTdWNjZXNzZnVsbHkgb2J0
YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06aHR0cF9sb2NhbGhvc3RfODA4MDpUZW1wb3JhcnkK
K1BBU1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1M6IGZpbGVTeXN0
ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK0RPTkUKIAogVEVTVCBDT01QTEVURQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1v
cGVyYXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzg1NWQ1ZDZlMzJlNzhhMDM2NjE2
MjE2NjEyZjlkNjdhZTQyMmE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lzdGVtIG9wZXJh
dGlvbnMgaW4gV29ya2VyLgorCitTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zeW5jLW9w
ZXJhdGlvbnMuanMKK0Rlc2NyaXB0aW9uOiBUZXN0IG1ha2luZyBtdWx0aXBsZSBzeW5jaHJvbm91
cyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCitQQVNTOiAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAi
L2EsL2IsL2MsL2QyLC9lLC9mIgorUEFTUzogZGlyc0NvdW50IGlzIDMKK0RPTkUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zeW5jLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyYWRmMDQ1MjJiNjY4OTg4ODA2
MDI0YTQzODAzODNjNDFkYThmNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRtbApAQCAtMCwwICsxLDE1IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29t
bW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij5UaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMg
aW4gV29ya2VyLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3N0YXJ0
V29ya2VyKCcuLi9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzJyk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMTNkMTM2NWU3YzU1ZTRlYjEwOWQyMWY3NDNmYWQ1MDVmZWJi
MWFlZS4uYjgwMDQ3MjY3ODllNmUzMTkyYjE5NDBhMDk0NzQ2OWVkOTg0YzFjOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5
MyBAQAorMjAxMC0xMC0wMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZpbGVT
eXN0ZW1TeW5jIGltcGxlbWVudGF0aW9uIGZvciBXb3JrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDQ0CisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6IFJlbW92ZWQKKyAgICAgICAgcmVxdWVz
dEZpbGVTeXN0ZW1FbmFibGVkKCkgYXMgSSBjaGFuZ2VkIHRoZSBpZGwvZ2VuZXJhdG9yIHRvCisg
ICAgICAgIHVzZSBmaWxlU3lzdGVtRW5hYmxlZCBmb3IgYWxsIHRoZSBGaWxlU3lzdGVtIHJlbGF0
ZWQgZmVhdHVyZXMuCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVT
eXN0ZW1CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRN
ZXRhZGF0YSk6IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6OmNo
ZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKTogTW92ZWQgZnJvbSBET01GaWxlU3lzdGVtLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUpOiBNb3ZlZCBmcm9tIERP
TUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Y29weSk6
IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW1CYXNlOjpyZW1vdmUpOiBNb3ZlZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJD
b3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KTogTW92ZWQgZnJvbSBET01GaWxlU3lz
dGVtLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OmdldEZpbGUpOiBNb3Zl
ZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFz
ZTo6Z2V0RGlyZWN0b3J5KTogTW92ZWQgZnJvbSBET01GaWxlU3lzdGVtLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OnJlYWREaXJlY3RvcnkpOiBNb3ZlZCBmcm9tIERPTUZp
bGVTeXN0ZW0uCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oOgorICAgICAg
ICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVj
dG9yeUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5OjpEaXJlY3Rv
cnlFbnRyeSk6IFVwZGF0ZWQgdG8gY2FsbAorICAgICAgICBET01GaWxlU3lzdGVtQmFzZSdzIG1l
dGhvZCBpbnN0ZWFkIG9mIERPTUZpbGVTeXN0ZW0ncyBvbmUuCisgICAgICAgIChXZWJDb3JlOjpE
aXJlY3RvcnlFbnRyeTo6Z2V0RmlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0
b3J5RW50cnk6OmdldERpcmVjdG9yeSk6IERpdHRvLgorICAgICAgICAqIGZpbGVhcGkvRGlyZWN0
b3J5RW50cnkuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUpOiBJbXBsZW1lbnRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5U3luYzo6Z2V0RGlyZWN0b3J5KTog
SW1wbGVtZW50ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAg
KiBmaWxlYXBpL0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5OjpFbnRyeSk6IFVw
ZGF0ZWQgdG8gY2FsbCBET01GaWxlU3lzdGVtQmFzZSdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVudHJ5OjpnZXRNZXRhZGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6
Om1vdmVUbyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmNvcHlUbyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OnJlbW92ZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RW50cnk6OmdldFBhcmVudCk6IERpdHRvLgorICAgICAgICAqIGZpbGVhcGkvRW50cnku
aDoKKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5LmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5
QXJyYXlTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5QXJyYXlTeW5jOjpjcmVhdGUp
OiBBZGRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QXJyYXlTeW5jLmg6CisgICAgICAgICog
ZmlsZWFwaS9FbnRyeUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5QmFzZTo6ZmlsZXN5
c3RlbSk6IEFkZGVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlTeW5jLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVudHJ5U3luYzo6Y3JlYXRlKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFbnRyeVN5bmM6OmdldE1ldGFkYXRhKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFbnRyeVN5bmM6Om1vdmVUbyk6IEltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6
RW50cnlTeW5jOjpjb3B5VG8pOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5
U3luYzo6cmVtb3ZlKTogSW1wbGVtZW50ZWQuCisgICAgICAgICogZmlsZWFwaS9FbnRyeVN5bmMu
aDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVFbnRyeS5jcHA6CisgICAgICAgICogZmlsZWFwaS9G
aWxlRW50cnkuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RW50cnlDYWxsYmFja3M6OmNyZWF0ZSk6IFVwZGF0ZWQgdG8gdGFr
ZSBET01GaWxlU3lzdGVtQmFzZQorICAgICAgICBpbnN0ZWFkIG9mIERPTUZpbGVTeXN0ZW0uCisg
ICAgICAgIChXZWJDb3JlOjpFbnRyeUNhbGxiYWNrczo6RW50cnlDYWxsYmFja3MpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RW50cmllc0NhbGxiYWNrczo6RW50cmllc0NhbGxiYWNrcyk6IERpdHRv
LgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oOgorICAgICAgICAqIGZp
bGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsRmlsZVN5
c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0pOiBBZGRlZCBzeW5jaHJvbm91cworICAgICAgICBwYXJh
bWV0ZXIuCisgICAgICAgICogZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBm
aWxlYXBpL01ldGFkYXRhLmg6CisgICAgICAgICogZmlsZWFwaS9TeW5jQ2FsbGJhY2tIZWxwZXIu
aDogQWRkZWQuIFRoaXMgZGVmaW5lcyBhIGhlbHBlciB0ZW1wbGF0ZQorICAgICAgICBmb3Igc3lu
Y2hyb25vdXMgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgor
ICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNGaWxlU3lzdGVtOjp3YWl0Q29tcGxldGlvbik6IEFkZGVkLgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojpy
ZXF1ZXN0RmlsZVN5c3RlbVN5bmMpOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNv
bnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOgorCiAyMDEwLTA5
LTMwICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDhkMjRhMWI5MGRhMmY2MGFjOTAxMjdk
YzUwYmFiM2E1MmEyYmI3ODEuLjljODA0ZGM0NDU0MGRkODM5ZjMwZmNlYWJhNzgzYTZmM2IzYmY1
NGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTQyNCw2ICsxNDI0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmggXAogCVdlYkNvcmUvZmlsZWFwaS9NZXRh
ZGF0YUNhbGxiYWNrLmggXAogCVdlYkNvcmUvZmlsZWFwaS9NZXRhZGF0YS5oIFwKKwlXZWJDb3Jl
L2ZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmggXAogCVdlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcCBcCiAJV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuaCBcCiAJV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudC5o
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMTI0YjBkM2JkMDE5N2NjYTBiOTA5NzAxYWZlMjNkMWQ5OWRiMmUyYS4uMjQwYWQ2
MmU1M2ZmZmRiMTlmMGY4NWJiZGEzZjUxYTY1NmMyNGUxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTk2LDYgKzk2LDcgQEAK
ICAgICAgICAgICAgICdmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCcsCiAgICAgICAgICAg
ICAnZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0Vu
dHJ5LmlkbCcsCisgICAgICAgICAgICAnZmlsZWFwaS9FbnRyeVN5bmMuaWRsJywKICAgICAgICAg
ICAgICdmaWxlYXBpL0VudHJ5QXJyYXkuaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0VudHJ5
QXJyYXlTeW5jLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmlkbCcs
CkBAIC0xNTE4LDYgKzE1MTksNyBAQAogICAgICAgICAgICAgJ2ZpbGVhcGkvTG9jYWxGaWxlU3lz
dGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAn
ZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ2ZpbGVhcGkvU3luY0Nh
bGxiYWNrSGVscGVyLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
JywKICAgICAgICAgICAgICdoaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbScsCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAwOWYx
NjA1YzNlYjk0NjgyY2JmOWEyODZlN2Y5OTcyMjgzNWMyMGY2Li44MTExZGU0OGYwYjRiNzAyZGQ2
ZjUwMGRlMmIyZmI1ZmJlOGIxMzM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI5OTQsNiArMjk5NCw3IEBAIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9GSUxFX1NZU1RFTT0xKSB7CiAgICAgICAgIGZpbGVhcGkvTG9jYWxGaWxl
U3lzdGVtLmggXAogICAgICAgICBmaWxlYXBpL01ldGFkYXRhLmggXAogICAgICAgICBmaWxlYXBp
L01ldGFkYXRhQ2FsbGJhY2suaCBcCisgICAgICAgIGZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVy
LmggXAogICAgICAgICBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBcCiAgICAgICAgIHBsYXRm
b3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IGFjODRmMGE4MGE0ZjM1ZmFjZjAzMzM1NGRjYWNmY2Y3MmQzYzc0YmMu
LmMzMTE3MDk5NGExNmQ2MDYyNGQ4ZDU4ZWUyNjUzMzVlYmNlNDVkN2YgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDI2MjksNiArNDI2MjksMTAgQEAKIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxTeW5j
Q2FsbGJhY2tIZWxwZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyM2UwNzI4NmI2OGMxMjE2OTUxODI4NGI3ODVjNGRiZTM4Njg2NTExLi4xZWU1MmVm
Y2I0OTBjZjUwZGYwNjI5ZTNiZTZmOGE3MDJmZDczNTdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ1Myw2ICsyNDUzLDcgQEAKIAkJODVGRjMxNUIw
QUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzggLyog
RE9NS2V5Ym9hcmRFdmVudC5tbSAqLzsgfTsKIAkJODYyNDNEMDExMUJDMzFGNzAwQ0MwMDZBIC8q
IEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZl
clZpZXdIZWxwZXIuaCAqLzsgfTsKIAkJODkwQUUwRTExMjU2QTA3OTAwRjU5NjhDIC8qIERpcmVj
dG9yeVJlYWRlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmgg
Ki87IH07CisJCTg5MEFFMEYxMTI1NzEyQjEwMEY1OTY4QyAvKiBTeW5jQ2FsbGJhY2tIZWxwZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5MEFFMEYw
MTI1NzEyQjEwMEY1OTY4QyAvKiBTeW5jQ2FsbGJhY2tIZWxwZXIuaCAqLzsgfTsKIAkJODkzQzQ3
QTcxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3QTUxMjM4OTA4QjAwMkIzRDg2IC8qIEZp
bGVDYWxsYmFjay5oICovOyB9OwogCQk4OTNDNDdBODEyMzg5MDhCMDAyQjNEODYgLyogRmlsZVdy
aXRlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4OTNDNDdBNjEyMzg5MDhCMDAyQjNEODYgLyogRmlsZVdyaXRlckNhbGxiYWNrLmggKi87
IH07CiAJCTg5M0M0N0I3MTIzOEEwOTkwMDJCM0Q4NiAvKiBKU0ZpbGVDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdCNTEyMzhB
MDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2suY3BwICovOyB9OwpAQCAtODQ4Niw2ICs4NDg3
LDcgQEAKIAkJODVGRjMxNTkwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NS2V5Ym9hcmRFdmVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYyNDNEMDAxMUJDMzFGNzAwQ0Mw
MDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlckJhc2Uu
aDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4OTBBRTBGMDEyNTcxMkIxMDBGNTk2OEMgLyogU3luY0NhbGxiYWNrSGVs
cGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN5bmNDYWxsYmFja0hlbHBl
ci5oOyBwYXRoID0gZmlsZWFwaS9TeW5jQ2FsbGJhY2tIZWxwZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODkzQzQ3QTUxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVDYWxsYmFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlQ2FsbGJhY2suaDsgcGF0aCA9
IGZpbGVhcGkvRmlsZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5
M0M0N0E2MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlV3JpdGVyQ2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVdyaXRlckNhbGxiYWNrLmg7IHBhdGggPSBmaWxl
YXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
OTNDNDdCNTEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4NjIsNiArMTQ4NjQsNyBAQAogCQkJCTg5ODc4NTRGMTIy
Q0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVTeXN0ZW0uaCAqLywKIAkJCQk4OTg3ODU1MDEyMkNB
MDY0MDAzQUFCREEgLyogTWV0YWRhdGEuaCAqLywKIAkJCQk4OTg3ODU1MTEyMkNBMDY0MDAzQUFC
REEgLyogTWV0YWRhdGFDYWxsYmFjay5oICovLAorCQkJCTg5MEFFMEYwMTI1NzEyQjEwMEY1OTY4
QyAvKiBTeW5jQ2FsbGJhY2tIZWxwZXIuaCAqLywKIAkJCQk5NzZENkM3NTEyMkI4QTNEMDAxRkQx
RjcgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgKi8sCiAJCQkJOTc2RDZDNzYxMjJCOEEz
RDAwMUZEMUY3IC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCAqLywKIAkJCSk7CkBAIC0yMTAy
Nyw2ICsyMTAzMCw3IEBACiAJCQkJODkzQzQ4M0IxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRW50cnlT
eW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTNDNDgzRDEyNDk1NDcyMDAyQjNEODYgLyogSlNG
aWxlRW50cnlTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTBBRTBFMTEyNTZBMDc5MDBGNTk2
OEMgLyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODkwQUUwRjEx
MjU3MTJCMTAwRjU5NjhDIC8qIFN5bmNDYWxsYmFja0hlbHBlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApp
bmRleCA4ODM1MGM3MTAxMWM5MWExNzQ2ODBjZTU1ZDk4MjMyN2MwMWExNGExLi40ZTcxZGUyYzdj
MTlkMjAyNjdiNWMyZjRhZDFlNjM0NzdhZWYwZDBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE1MCw3ICsxNTAsNiBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIHN0YXRpYyBib29sIGZpbGVTeXN0
ZW1FbmFibGVkKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0RmlsZVN5c3RlbUVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRp
YyBib29sIHJlcXVlc3RGaWxlU3lzdGVtRW5hYmxlZCgpIHsgcmV0dXJuIGlzRmlsZVN5c3RlbUVu
YWJsZWQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBp
L0RPTUZpbGVTeXN0ZW0uY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmlu
ZGV4IDE3NDI4NDJkYTMxZjllMGRjZGVmZTgxYmEzM2U3YzYxMTJjOWQ4OTQuLmIyZGYxM2I2YmI3
NmVjYTY2Yjk2NzcxYzRkMmJiNTFiNjIzMDVhMWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKQEAgLTM2LDE5ICszNiwxMyBAQAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNs
dWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJFbnRyeS5oIgotI2luY2x1ZGUgIkVu
dHJ5QXJyYXkuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JD
YWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJGaWxlV3JpdGVy
LmgiCiAjaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFD
YWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTgwLDEyNCArNzQsNiBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmNvbnRleHRE
ZXN0cm95ZWQoKQogICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwogfQog
Ci12b2lkIERPTUZpbGVTeXN0ZW06OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFz
c1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0g
bV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChlbnRyeS0+ZnVsbFBhdGgo
KSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIE1l
dGFkYXRhQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7
Ci19Ci0KLXN0YXRpYyBib29sIGNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKGNvbnN0IEVu
dHJ5KiBzcmMsIEVudHJ5KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKLXsKLSAgICBB
U1NFUlQoc3JjKTsKLQotICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzRGlyZWN0b3J5KCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkgJiYg
IURPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShuZXdOYW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRy
eSBpbnNpZGUgaXRzZWxmIGF0IGFueSBkZXB0aCBpZiBpdCBpcyBhIGRpcmVjdG9yeS4KLSAgICBp
ZiAoc3JjLT5pc0RpcmVjdG9yeSgpICYmIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKHNyYy0+ZnVs
bFBhdGgoKSwgcGFyZW50LT5mdWxsUGF0aCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBh
cmVudCBpZiBhIG5hbWUgZGlmZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3Zp
ZGVkLgotICAgIGlmICgobmV3TmFtZS5pc0VtcHR5KCkgfHwgc3JjLT5uYW1lKCkgPT0gbmV3TmFt
ZSkgJiYgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShzcmMtPmZ1bGxQYXRoKCkpID09IHBhcmVu
dC0+ZnVsbFBhdGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6bW92ZShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVm
UHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNy
YywgcGFyZW50LmdldCgpLCBuZXdOYW1lKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUo
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBTdHJpbmcgZGVzdFBhdGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0gICAgaWYgKCFuZXdOYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQ
YXRoLCBuZXdOYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6
OmFwcGVuZChkZXN0UGF0aCwgc3JjLT5uYW1lKCkpOwotCi0gICAgU3RyaW5nIHNyY1BsYXRmb3Jt
UGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc3JjLT5mdWxs
UGF0aCgpKTsKLSAgICBTdHJpbmcgZGVzdFBsYXRmb3JtUGF0aCA9IHBhcmVudC0+ZmlsZXN5c3Rl
bSgpLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RQYXRoKTsK
LSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+bW92ZShzcmNQbGF0Zm9ybVBhdGgsIGRlc3RQbGF0Zm9y
bVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCB0aGlzLCBkZXN0UGF0aCwgc3JjLT5pc0RpcmVjdG9yeSgpKSk7Ci19Ci0KLXZvaWQgRE9N
RmlsZVN5c3RlbTo6Y29weShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJl
bnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsK
LSAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNyYywgcGFyZW50LmdldCgp
LCBuZXdOYW1lKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZGVzdFBh
dGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0gICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSkKLSAg
ICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQYXRoLCBuZXdOYW1lKTsK
LSAgICBlbHNlCi0gICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0
aCwgc3JjLT5uYW1lKCkpOwotCi0gICAgU3RyaW5nIHNyY1BsYXRmb3JtUGF0aCA9IG1fYXN5bmNG
aWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc3JjLT5mdWxsUGF0aCgpKTsKLSAgICBT
dHJpbmcgZGVzdFBsYXRmb3JtUGF0aCA9IHBhcmVudC0+ZmlsZXN5c3RlbSgpLT5hc3luY0ZpbGVT
eXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RQYXRoKTsKLSAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+Y29weShzcmNQbGF0Zm9ybVBhdGgsIGRlc3RQbGF0Zm9ybVBhdGgsIEVudHJ5Q2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0
UGF0aCwgc3JjLT5pc0RpcmVjdG9yeSgpKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6cmVt
b3ZlKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAg
IEFTU0VSVChlbnRyeSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lz
dGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOwotICAgIG1fYXN5
bmNGaWxlU3lzdGVtLT5yZW1vdmUocGxhdGZvcm1QYXRoLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3Rl
bTo6Z2V0UGFyZW50KGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKLXsKLSAgICBBU1NFUlQoZW50cnkpOwotICAgIFN0cmluZyBwYXRoID0gRE9NRmlsZVBhdGg6
OmdldERpcmVjdG9yeShlbnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0
aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCk7Ci0gICAg
bV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9ybVBhdGgsIEVudHJ5Q2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBwYXRo
LCB0cnVlKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RmlsZShjb25zdCBFbnRyeSog
YmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoYmFzZSk7Ci0gICAgaWYgKCFET01G
aWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpIHsKLSAgICAgICAgc2NoZWR1bGVDYWxsYmFjayhz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRl
KElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgU3RyaW5nIGFic29sdXRlUGF0aCA9IHBhdGg7Ci0gICAgaWYgKCFET01GaWxlUGF0aDo6aXNB
YnNvbHV0ZShwYXRoKSkKLSAgICAgICAgYWJzb2x1dGVQYXRoID0gRE9NRmlsZVBhdGg6OnJlbW92
ZUV4dHJhUGFyZW50UmVmZXJlbmNlcyhET01GaWxlUGF0aDo6YXBwZW5kKGJhc2UtPmZ1bGxQYXRo
KCksIHBhdGgpKTsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0t
PnZpcnR1YWxUb1BsYXRmb3JtUGF0aChhYnNvbHV0ZVBhdGgpOwotCi0gICAgT3duUHRyPEVudHJ5
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCBmYWxzZSk7Ci0gICAgaWYg
KGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQotICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
Y3JlYXRlRmlsZShwbGF0Zm9ybVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3Mu
cmVsZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhp
c3RzKHBsYXRmb3JtUGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgRE9NRmls
ZVN5c3RlbTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQot
ewotICAgIEFTU0VSVChiYXNlKTsKLSAgICBpZiAoIURPTUZpbGVQYXRoOjppc1ZhbGlkUGF0aChw
YXRoKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgYWJzb2x1dGVQYXRo
ID0gcGF0aDsKLSAgICBpZiAoIURPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKQotICAgICAg
ICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2Vz
KERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOwotICAgIFN0cmlu
ZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRo
KGFic29sdXRlUGF0aCk7Ci0KLSAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0
aGlzLCBhYnNvbHV0ZVBhdGgsIHRydWUpOwotICAgIGlmIChmbGFncyAmJiBmbGFncy0+aXNDcmVh
dGUoKSkKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShwbGF0Zm9y
bVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICBl
bHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMocGxhdGZvcm1Q
YXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLX0KLQogdm9pZCBET01GaWxlU3lzdGVtOjpjcmVh
dGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUKGZpbGUpOwpAQCAtMjA5LDEzICs4NSw2IEBAIHZvaWQgRE9N
RmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0
cjxGaWxlV3JpdGVyQ2FsCiAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVdyaXRlcihmaWxl
V3JpdGVyLmdldCgpLCBwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi12
b2lkIERPTUZpbGVTeXN0ZW06OnJlYWREaXJlY3RvcnkoRGlyZWN0b3J5UmVhZGVyKiByZWFkZXIs
IGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAg
IEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSk7Ci0gICAgU3RyaW5nIHBsYXRm
b3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCk7
Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGxhdGZvcm1QYXRoLCBFbnRy
aWVzQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCByZWFk
ZXIsIHBhdGgpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxF
X1NZU1RFTSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmggYi9X
ZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDkwOGMxNmM5NDNlY2FkZjY5MTIz
MmM2MDQ0YWRjZWFkZDU0OWJjYWIuLjBlZjJlMGY3ZTVmMGMzMTYyY2ZmY2RlYWNlMjA3ODYzMjU1
ODJlN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgKKysrIGIv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtMzQsMjYgKzM0LDE0IEBACiAjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5j
bHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIK
LSNpbmNsdWRlICJGbGFncy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBEaXJlY3RvcnlFbnRyeTsKLWNsYXNzIERpcmVjdG9yeVJlYWRlcjsKLWNsYXNzIEVudHJ5
OwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVudHJpZXNDYWxsYmFjazsKLWNsYXNzIEVy
cm9yQ2FsbGJhY2s7CiBjbGFzcyBGaWxlRW50cnk7CiBjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2s7
Ci1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgVm9pZENhbGxiYWNrOwogCiBjbGFzcyBE
T01GaWxlU3lzdGVtIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlLCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTY5LDE1ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKTsKIAotICAgIC8vIEFjdHVhbCBGaWxlU3lzdGVtIEFQSSBpbXBsZW1lbnRh
dGlvbnMuICBBbGwgdGhlIHZhbGlkaXR5IGNoZWNrcyBvbiB2aXJ0dWFsIHBhdGhzIGFyZSBkb25l
IGF0IERPTUZpbGVTeXN0ZW0gbGV2ZWwuCi0gICAgdm9pZCBnZXRNZXRhZGF0YShjb25zdCBFbnRy
eSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgbW92ZShj
b25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
Pik7Ci0gICAgdm9pZCBjb3B5KGNvbnN0IEVudHJ5KiBzcmMsIFBhc3NSZWZQdHI8RW50cnk+IHBh
cmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHJlbW92ZShjb25zdCBFbnRyeSogZW50
cnksIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7
Ci0gICAgdm9pZCBnZXRQYXJlbnQoY29uc3QgRW50cnkqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIGdldEZpbGUo
Y29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4s
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwot
ICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHJlYWREaXJlY3RvcnkoRGlyZWN0b3J5UmVh
ZGVyKiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAgICB2b2lkIGNyZWF0ZVdyaXRlcihj
b25zdCBGaWxlRW50cnkqIGZpbGUsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAKICAgICAvLyBTY2hlZHVsZSBhIGNhbGxiYWNrLiBU
aGlzIHNob3VsZCBub3QgY3Jvc3MgdGhyZWFkcyAoc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgc2Ft
ZSBjb250ZXh0IHRocmVhZCkuCkBAIC05NSw3ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgRE9NRmls
ZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogCiAgICAgLy8gQSBoZWxwZXIgdGVtcGxhdGUgdG8g
c2NoZWR1bGUgYSBjYWxsYmFjayB0YXNrLgotICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBt
b3JlIGdlbmVyaWMgcGxhY2UuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBD
QkFyZz4KICAgICBjbGFzcyBEaXNwYXRjaENhbGxiYWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Zp
bGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW1CYXNlLmNwcAppbmRleCBiNjk4ODJkMTYwYWQ5ZThiNDRiZjUzNGJhM2JiMWI1MjMyM2EyNzIx
Li5lZDg3MDcwOTg4YmMxNzcwNGE1ZTc4ZDY2ZDZiYmY3OWI2ZTc1NzIzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTM0LDYgKzM0LDE2IEBACiAjaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKKyNpbmNsdWRlICJEaXJlY3Rv
cnlFbnRyeS5oIgorI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVudHJ5
QXJyYXkuaCIKKyNpbmNsdWRlICJFbnRyeUJhc2UuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgor
I2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw2ICs1OCwxMzEgQEAgRE9NRmlsZVN5c3Rl
bUJhc2U6On5ET01GaWxlU3lzdGVtQmFzZSgpCiB7CiB9CiAKK2Jvb2wgRE9NRmlsZVN5c3RlbUJh
c2U6OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRh
dGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCit7CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lz
dGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOworICAgIG1fYXN5
bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBNZXRhZGF0YUNhbGxiYWNr
czo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShjb25z
dCBFbnRyeUJhc2UqIHNyYywgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSkKK3sKKyAgICBBU1NFUlQoc3JjKTsKKworICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlz
RGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbmV3TmFtZS5p
c0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShuZXdOYW1lKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IHRvIGNvcHkgb3Ig
bW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxmIGF0IGFueSBkZXB0aCBpZiBpdCBpcyBhIGRpcmVj
dG9yeS4KKyAgICBpZiAoc3JjLT5pc0RpcmVjdG9yeSgpICYmIERPTUZpbGVQYXRoOjppc1BhcmVu
dE9mKHNyYy0+ZnVsbFBhdGgoKSwgcGFyZW50LT5mdWxsUGF0aCgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5
IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlmZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25l
IGlzbid0IHByb3ZpZGVkLgorICAgIGlmICgobmV3TmFtZS5pc0VtcHR5KCkgfHwgc3JjLT5uYW1l
KCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShzcmMtPmZ1bGxQYXRo
KCkpID09IHBhcmVudC0+ZnVsbFBhdGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUoY29uc3QgRW50
cnlCYXNlKiBzcmMsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFBh
c3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFjaGVja1ZhbGlkaXR5Rm9yRm9y
Q29weU9yTW92ZShzcmMsIHBhcmVudCwgbmV3TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFN0cmluZyBkZXN0UGF0aCA9IHBhcmVudC0+ZnVsbFBhdGgoKTsKKyAgICBpZiAoIW5l
d05hbWUuaXNFbXB0eSgpKQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQo
ZGVzdFBhdGgsIG5ld05hbWUpOworICAgIGVsc2UKKyAgICAgICAgZGVzdFBhdGggPSBET01GaWxl
UGF0aDo6YXBwZW5kKGRlc3RQYXRoLCBzcmMtPm5hbWUoKSk7CisKKyAgICBTdHJpbmcgc3JjUGxh
dGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChzcmMt
PmZ1bGxQYXRoKCkpOworICAgIFN0cmluZyBkZXN0UGxhdGZvcm1QYXRoID0gcGFyZW50LT5maWxl
c3lzdGVtKCktPmFzeW5jRmlsZVN5c3RlbSgpLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZGVzdFBh
dGgpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5tb3ZlKHNyY1BsYXRmb3JtUGF0aCwgZGVzdFBs
YXRmb3JtUGF0aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2ssIHRoaXMsIGRlc3RQYXRoLCBzcmMtPmlzRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y29weShjb25zdCBFbnRyeUJh
c2UqIHNyYywgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5
T3JNb3ZlKHNyYywgcGFyZW50LCBuZXdOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgU3RyaW5nIGRlc3RQYXRoID0gcGFyZW50LT5mdWxsUGF0aCgpOworICAgIGlmICghbmV3TmFt
ZS5pc0VtcHR5KCkpCisgICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0
UGF0aCwgbmV3TmFtZSk7CisgICAgZWxzZQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRo
OjphcHBlbmQoZGVzdFBhdGgsIHNyYy0+bmFtZSgpKTsKKworICAgIFN0cmluZyBzcmNQbGF0Zm9y
bVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKHNyYy0+ZnVs
bFBhdGgoKSk7CisgICAgU3RyaW5nIGRlc3RQbGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVzeXN0
ZW0oKS0+YXN5bmNGaWxlU3lzdGVtKCktPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0UGF0aCk7
CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNvcHkoc3JjUGxhdGZvcm1QYXRoLCBkZXN0UGxhdGZv
cm1QYXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaywgdGhpcywgZGVzdFBhdGgsIHNyYy0+aXNEaXJlY3RvcnkoKSkpOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmUoY29uc3QgRW50cnlCYXNl
KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7
CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9Q
bGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5y
ZW1vdmUocGxhdGZvcm1QYXRoLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVN5
c3RlbUJhc2U6OmdldFBhcmVudChjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7CisgICAgU3RyaW5nIHBhdGggPSBE
T01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVudHJ5LT5mdWxsUGF0aCgpKTsKKyAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChw
YXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0
aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHRoaXMsIHBhdGgsIHRydWUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxl
U3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBFbnRyeUJhc2UqIGJhc2UsIGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
Cit7CisgICAgQVNTRVJUKGJhc2UpOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRo
KHBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgYWJzb2x1dGVQYXRo
ID0gcGF0aDsKKyAgICBpZiAoIURPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKQorICAgICAg
ICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2Vz
KERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOworICAgIFN0cmlu
ZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRo
KGFic29sdXRlUGF0aCk7CisKKyAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0
aGlzLCBhYnNvbHV0ZVBhdGgsIGZhbHNlKTsKKyAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3Jl
YXRlKCkpCisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKHBsYXRmb3JtUGF0
aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGVsc2UK
KyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmZpbGVFeGlzdHMocGxhdGZvcm1QYXRoLCBjYWxs
YmFja3MucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lz
dGVtQmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFzZSogYmFzZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKK3sKKyAgICBBU1NFUlQoYmFzZSk7CisgICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBh
dGgocGF0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBhYnNvbHV0ZVBh
dGggPSBwYXRoOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAg
ICAgIGFic29sdXRlUGF0aCA9IERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5j
ZXMoRE9NRmlsZVBhdGg6OmFwcGVuZChiYXNlLT5mdWxsUGF0aCgpLCBwYXRoKSk7CisgICAgU3Ry
aW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBh
dGgoYWJzb2x1dGVQYXRoKTsKKworICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHRoaXMsIGFic29sdXRlUGF0aCwgdHJ1ZSk7CisgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0Ny
ZWF0ZSgpKQorICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KHBsYXRm
b3JtUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAg
IGVsc2UKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9y
bVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IERPTUZpbGVTeXN0ZW1CYXNlOjpyZWFkRGlyZWN0b3J5KERpcmVjdG9yeVJlYWRlckJhc2UqIHJl
YWRlciwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7
CisgICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKTsKKyAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChw
YXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwbGF0Zm9ybVBhdGgs
IEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHJlYWRlciwgcGF0aCkpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuaCBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtQmFzZS5oCmluZGV4IGU3MTRkOGQxN2FjMWNiMTk0ODA5YjQzNDhhMjE1YWRlYmVkODEx
NjcuLjc3M2U3MTRjMGZlYzA5N2Y0MWM0ZTZiNGU3Mjk3ZGI2NWY1Mjc4MGEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oCisrKyBiL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5oCkBAIC0zNCwxMiArMzQsMjIgQEAKICNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJGbGFn
cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIERpcmVjdG9yeUVudHJ5OworY2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZTsKK2Ns
YXNzIEVudHJ5QmFzZTsKK2NsYXNzIEVudHJ5Q2FsbGJhY2s7CitjbGFzcyBFbnRyaWVzQ2FsbGJh
Y2s7CitjbGFzcyBFcnJvckNhbGxiYWNrOworY2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKK2NsYXNz
IFZvaWRDYWxsYmFjazsKKwogLy8gQSBjb21tb24gYmFzZSBjbGFzcyBmb3IgRE9NRmlsZVN5c3Rl
bSBhbmQgRE9NRmlsZVN5c3RlbVN5bmMuCiBjbGFzcyBET01GaWxlU3lzdGVtQmFzZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPERPTUZpbGVTeXN0ZW1CYXNlPiB7CiBwdWJsaWM6CkBAIC01Miw2ICs2Miwx
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CiAgICAgQXN5bmNGaWxlU3lzdGVtKiBhc3luY0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJl
dHVybiBtX2FzeW5jRmlsZVN5c3RlbS5nZXQoKTsgfQogCisgICAgLy8gQWN0dWFsIEZpbGVTeXN0
ZW0gQVBJIGltcGxlbWVudGF0aW9ucy4gIEFsbCB0aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1
YWwgcGF0aHMgYXJlIGRvbmUgYXQgdGhpcyBsZXZlbC4KKyAgICAvLyBUaGV5IHJldHVybiBmYWxz
ZSBmb3IgaW1tZWRpYXRlIGVycm9ycyB0aGF0IGRvbid0IGludm9sdmUgbG93ZXIgQXN5bmNGaWxl
U3lzdGVtIGxhZXIgKGUuZy4gZm9yIG5hbWUgdmFsaWRhdGlvbiBlcnJvcnMpLiAgT3RoZXJ3aXNl
IHRoZXkgcmV0dXJuIHRydWUgKGJ1dCBsYXRlciBtYXkgY2FsbCBiYWNrIHdpdGggYW4gcnVudGlt
ZSBlcnJvcikuCisgICAgYm9vbCBnZXRNZXRhZGF0YShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQ
YXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICBib29sIG1vdmUoY29uc3QgRW50cnlC
YXNlKiBzcmMsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIGJvb2wg
Y29weShjb25zdCBFbnRyeUJhc2UqIHNyYywgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7CisgICAgYm9vbCByZW1vdmUoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29sIGdl
dFBhcmVudChjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29sIGdldEZpbGUoY29uc3QgRW50
cnlCYXNlKiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNz
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBi
b29sIGdldERpcmVjdG9yeShjb25zdCBFbnRyeUJhc2UqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc1JlZlB0cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4pOworICAgIGJvb2wgcmVhZERpcmVjdG9yeShEaXJlY3RvcnlSZWFk
ZXJCYXNlKiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKwogcHJvdGVjdGVkOgogICAgIERP
TUZpbGVTeXN0ZW1CYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+KTsKICAgICBmcmllbmQgY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0Rp
cmVjdG9yeUVudHJ5LmNwcAppbmRleCBmNzg3ODdhNGJjZDdmM2U1YTY1NDY5M2IzNjA1YjY4MzI0
Yjg0MWYwLi5mMzE3Mjk3NmRmMzNjNDMxMzNhOWE4MThhOGE0NTBmOTA0OTA4YzFhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1dlYkNvcmUvZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAKQEAgLTM2LDEwICszNiwxMSBAQAogI2luY2x1ZGUgIkRp
cmVjdG9yeVJlYWRlci5oIgogI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJF
cnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotRGlyZWN0b3J5RW50cnk6OkRpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCitEaXJlY3RvcnlFbnRyeTo6RGlyZWN0
b3J5RW50cnkoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVs
bFBhdGgpCiAgICAgOiBFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKIHsKIH0KQEAgLTQ5LDE0
ICs1MCwxOSBAQCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gRGlyZWN0b3J5RW50cnk6OmNy
ZWF0ZVJlYWRlcigpCiAgICAgcmV0dXJuIERpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5
c3RlbSwgbV9mdWxsUGF0aCk7CiB9CiAKKyNkZWZpbmUgdGhyb3dFcnJvcihlcnJvcikgXAorICAg
IGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6
OmNyZWF0ZShlcnJvcikpOworCiB2b2lkIERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5nZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAgIGlmICghbV9maWxlU3lzdGVtLT5n
ZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
KQorICAgICAgICB0aHJvd0Vycm9yKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7CiB9CiAKIHZv
aWQgRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NS
ZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIGZp
bGVzeXN0ZW0oKS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3Rvcnko
dGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAg
ICAgIHRocm93RXJyb3IoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oIGIvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgKaW5kZXggYzc2YjIwNDNhMzgxM2FmNWJjMzEz
YmM5ZDA0MTU0ZjM4MjkwNTNlZS4uZTA2MTA2OWQ0ZGYxZWNjZGI3MTBlMmZkYzM4MTNlYzNlYTVk
ZmU2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgKKysrIGIv
V2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3Mg
RXJyb3JDYWxsYmFjazsKIAogY2xhc3MgRGlyZWN0b3J5RW50cnkgOiBwdWJsaWMgRW50cnkgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBjcmVhdGUoRE9N
RmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwogICAg
IH0KQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwogCiBwcml2YXRlOgot
ICAgIERpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpOworICAgIERpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBiL1dlYkNv
cmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCmluZGV4IDU4NmRkNzgyNWU5MDI5NWVh
MDM3NWZhZjBjZjc5NjkzMjlhMjY4MTQuLmI1NWZhODNhODY2YTlhNDMwNzAzYmNmYzkwNGY0NjIw
MzhmYWI5YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMu
Y3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCkBAIC0zNiw3
ICszNiw3IEBACiAjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyU3luYy5oIgogI2luY2x1ZGUgIkVu
dHJ5U3luYy5oIgogI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTUwLDE4ICs1MCwyNiBAQCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRl
clN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKQog
ICAgIHJldHVybiBEaXJlY3RvcnlSZWFkZXJTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Z1
bGxQYXRoKTsKIH0KIAotUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5
bmM6OmdldEZpbGUoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxGbGFncz4sIEV4Y2VwdGlvbkNv
ZGUmKQorUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZWMgPSAwOworICAgIEVudHJ5U3luY0Nh
bGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAg
ICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1
Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9
IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PEZpbGVFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1
bHQoZWMpKTsKIH0KIAotUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERpcmVjdG9yeUVu
dHJ5U3luYzo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8RmxhZ3M+LCBF
eGNlcHRpb25Db2RlJikKK1Bhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBEaXJlY3RvcnlF
bnRyeVN5bmM6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8Rmxh
Z3M+IGZsYWdzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1w
bGVtZW50ZWQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBlYyA9
IDA7CisgICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5
bmNGaWxlU3lzdGVtKCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhp
cywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2Fs
bGJhY2soKSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxEaXJl
Y3RvcnlFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaCBiL1dlYkNv
cmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaAppbmRleCBjYTdhZWRjMDAxMzlkMTMzOTAyNjgw
NGZjNDZiMGIyNzZlODE1YjQ1Li5mMGQ1ZWZkMjRiNzNkMDQ3YzNkNDc4ZTNiMTM2ZDdkNmY3Njdl
MTczIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmgKKysrIGIv
V2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgi
CiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJh
c2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9m
aWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9y
eVJlYWRlclN5bmMuY3BwCmluZGV4IDYwMGFiN2Y2ZWZlMmI1YzVlYTlhMTdkMGM5NjExNGFkNDI5
OTc0NWMuLjcxNjQ0NmVhNGE4Yzc0ZTY5ZDExOGY5YzJhNzIxYjhjYjJjNTZmOTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAorKysgYi9XZWJDb3Jl
L2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAKQEAgLTMzLDkgKzMzLDE0IEBACiAKICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorI2lu
Y2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgogI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgi
CisjaW5jbHVkZSAiRW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgorI2lu
Y2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDEwICs0OSwxOSBAQCBEaXJlY3RvcnlSZWFkZXJT
eW5jOjpEaXJlY3RvcnlSZWFkZXJTeW5jKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBj
b25zdCBTdAogewogfQogCi1QYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBEaXJlY3RvcnlSZWFk
ZXJTeW5jOjpyZWFkRW50cmllcyhFeGNlcHRpb25Db2RlJikKK1Bhc3NSZWZQdHI8RW50cnlBcnJh
eVN5bmM+IERpcmVjdG9yeVJlYWRlclN5bmM6OnJlYWRFbnRyaWVzKEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZWMgPSAwOwor
ICAgIGlmICghbV9oYXNNb3JlKQorICAgICAgICByZXR1cm4gRW50cnlBcnJheVN5bmM6OmNyZWF0
ZSgpOworCisgICAgRW50cmllc1N5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVt
LT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlYWREaXJlY3Rv
cnkodGhpcywgbV9mdWxsUGF0aCwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJy
b3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsK
KyAgICAgICAgc2V0SGFzTW9yZShmYWxzZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5
LmNwcAppbmRleCA5N2EzMjcwOGUyZjgwZjE1YWI1NzIyNDJjZTRlYzYwOTI4ODVjZjY4Li43ZjE5
MDFhYzlkZjM1OGYwYWM0ZDdmMTBkNDA0MDMzZGI2MTVlZGEwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnkuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAKQEAgLTMy
LDQ0ICszMiw1MiBAQAogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCi0jaW5jbHVkZSAiRE9N
RmlsZVBhdGguaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRGlyZWN0
b3J5RW50cnkuaCIKICNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JD
YWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiVm9p
ZENhbGxiYWNrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRW50cnk6OkVudHJ5KERPTUZp
bGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCitFbnRyeTo6RW50
cnkoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
CiAgICAgOiBFbnRyeUJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCiB7CiB9CiAKKyNkZWZpbmUg
dGhyb3dFcnJvcihlcnJvcikgXAorICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhl
cnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShlcnJvcikpOworCiB2b2lkIEVudHJ5Ojpn
ZXRNZXRhZGF0YShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIGZpbGVzeXN0
ZW0oKS0+Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
KyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgdGhyb3dFcnJvcihJTlZBTElEX01PRElGSUNBVElP
Tl9FUlIpOwogfQogCi12b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0Cit2
b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAg
ZmlsZXN5c3RlbSgpLT5tb3ZlKHRoaXMsIHBhcmVudCwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQu
Z2V0KCksIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIHRo
cm93RXJyb3IoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAotdm9pZCBFbnRyeTo6Y29w
eVRvKFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAordm9pZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8
RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKSBjb25zdAogewotICAgIGZpbGVzeXN0ZW0oKS0+Y29weSh0aGlzLCBwYXJl
bnQsIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CisgICAgaWYgKCFtX2Zp
bGVTeXN0ZW0tPmNvcHkodGhpcywgcGFyZW50LmdldCgpLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spKQorICAgICAgICB0aHJvd0Vycm9yKElOVkFMSURfTU9ESUZJQ0FUSU9O
X0VSUik7CiB9CiAKIHZvaWQgRW50cnk6OnJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
IGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5yZW1vdmUodGhpcywgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIHRocm93RXJyb3IoSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAogdm9pZCBFbnRyeTo6Z2V0UGFyZW50KFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5nZXRQYXJlbnQo
dGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5
c3RlbS0+Z2V0UGFyZW50KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisg
ICAgICAgIHRocm93RXJyb3IoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAogU3RyaW5n
IEVudHJ5Ojp0b1VSSShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBp
L0VudHJ5LmggYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaAppbmRleCBiNzVmMWVkZTFkMDk4YWYz
NmMwNGJjMDVlMjNkODI1OGNlNDBjYWIwLi5hNzFjNWYwN2JlYjg4NTM5MjU0NmFiYTFjMGZkNmEz
Y2FlZTNjZjc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaAorKysgYi9XZWJD
b3JlL2ZpbGVhcGkvRW50cnkuaApAQCAtNDAsMjcgKzQwLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgRGlyZWN0b3J5RW50cnk7CiBjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xh
c3MgRW50cnlTeW5jOwogY2xhc3MgRXJyb3JDYWxsYmFjazsKIGNsYXNzIE1ldGFkYXRhQ2FsbGJh
Y2s7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIEVudHJ5IDogcHVibGljIEVudHJ5QmFz
ZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnkoKSB7IH0KLQogICAgIERPTUZpbGVTeXN0
ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01GaWxlU3lzdGVt
Kj4obV9maWxlU3lzdGVtKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldE1ldGFkYXRhKFBhc3NS
ZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0gICAgdmlydHVhbCB2b2lkIG1vdmVU
byhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygp
LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUg
PSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAw
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwg
Y29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUbyhQYXNzUmVmUHRyPERpcmVj
dG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgU3RyaW5nIHRvVVJJKGNvbnN0IFN0cmluZyYgbWltZVR5cGUgPSBTdHJp
bmcoKSk7CiAKIHByb3RlY3RlZDoKLSAgICBFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBFbnRyeShET01GaWxlU3lzdGVtQmFzZSog
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsIGIvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5LmlkbAppbmRleCBkMzYzYmNkYjk2NmJmNmI5YTU2NDIxNDEwMzk4Yjc4
Yjk2ZjVlMTUzLi5mNmZjZGIzYjRlYTg2NDlmM2Q4ZDk3ZDNhOTEwNDIzYjRjNzFmOTcwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9F
bnRyeS5pZGwKQEAgLTQxLDggKzQxLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NRmlsZVN5c3RlbSBmaWxlc3lzdGVtOwogCiAgICAgICAgIHZvaWQg
Z2V0TWV0YWRhdGEoaW4gW09wdGlvbmFsLCBDYWxsYmFja10gTWV0YWRhdGFDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JD
YWxsYmFjayk7Ci0gICAgICAgIHZvaWQgbW92ZVRvKGluIEVudHJ5IHBhcmVudCwgaW4gW09wdGlv
bmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwg
aW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGlu
IFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAg
ICAgIHZvaWQgY29weVRvKGluIEVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5k
ZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBD
YWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2Fs
bGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgbW92ZVRv
KGluIERpcmVjdG9yeUVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVk
T3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBDYWxsYmFj
a10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2td
IEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgY29weVRvKGluIERp
cmVjdG9yeUVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50
cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9y
Q2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAgICAgICAgIHZvaWQgcmVtb3ZlKGluIFtPcHRpb25h
bCwgQ2FsbGJhY2tdIFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwg
Q2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAgICAgICAgIHZvaWQgZ2V0
UGFyZW50KGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2sp
OwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3Bw
IGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcAppbmRleCBlZGJmMmRjZGU3ZWEx
NGM3OTFhOWI3ZTdkNjk2MDk4ZTQ0OTg5Mzc2Li4yOWVjOWYzOTJkZTRmM2U0NmYyOGI0OTZkZGNj
Mzc4NTliN2I3OGQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMu
Y3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5jcHAKQEAgLTMzLDggKzMz
LDIwIEBACiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJFbnRyeUFycmF5
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4g
RW50cnlBcnJheVN5bmM6OmNyZWF0ZShFbnRyeUFycmF5KiBlbnRyaWVzKQoreworICAgIFJlZlB0
cjxFbnRyeUFycmF5U3luYz4gZW50cmllc1N5bmMgPSBhZG9wdFJlZihuZXcgRW50cnlBcnJheVN5
bmMoKSk7CisgICAgaWYgKGVudHJpZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGVudHJpZXMtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBlbnRyaWVzU3luYy0+YXBw
ZW5kKEVudHJ5U3luYzo6Y3JlYXRlKGVudHJpZXMtPml0ZW0oaSkpKTsKKyAgICB9CisgICAgcmV0
dXJuIGVudHJpZXNTeW5jLnJlbGVhc2UoKTsKK30KKwogRW50cnlBcnJheVN5bmM6OkVudHJ5QXJy
YXlTeW5jKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3lu
Yy5oIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmgKaW5kZXggN2UxMzEyZmQ1YjM5
ZjQ0YjEyZmM4MDJlMTZjNzFiN2VjM2U3YzI3ZC4uOWM3ZGVjOGUwZmI4ZTc0MDZiMDdhNWM1YjBh
ZTU5MTRhMzc2MmMzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5j
LmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmgKQEAgLTQ4LDYgKzQ4LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVudHJ5QXJyYXlTeW5jKCkp
OwogICAgIH0KIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBjcmVhdGUo
RW50cnlBcnJheSogZW50cmllcyk7CisKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2VudHJpZXMuc2l6ZSgpOyB9CiAgICAgRW50cnlTeW5jKiBpdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdDsKICAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxFbnRy
eVN5bmM+IGVudHJ5KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUJhc2UuaCBi
L1dlYkNvcmUvZmlsZWFwaS9FbnRyeUJhc2UuaAppbmRleCAxMjM0NTgwNDI3YzA1Y2M3NmYzMjc5
YzM4ODE5OWZiYzBlNzNjOGJkLi5kNTYzZWY3NDZiNDZlYmJkYjQ2NThiZmFjYmJmNGY3MGFhZWU0
ZThkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgKKysrIGIvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5QmFzZS5oCkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIEVudHJ5QmFzZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5QmFzZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkVu
dHJ5QmFzZSgpIHsgfQogCisgICAgRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVzeXN0ZW0oKSBjb25z
dCB7IHJldHVybiBtX2ZpbGVTeXN0ZW07IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9FbnRy
eVN5bmMuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5jcHAKaW5kZXggNmFhYTM1NmM3
NGIyZTc5Y2FjNDgwN2MyNmU3NTFmZjBkNDk0ZjYzOC4uNTBjZDExNTkyNTE0ZWZjZWMwMmU3ZDY5
N2I3YjU3YWEzM2Y2Mzc2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5j
cHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5jcHAKQEAgLTM0LDkgKzM0LDEyIEBA
CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKKyNp
bmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5Lmgi
CiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3lu
Yy5oIgogI2luY2x1ZGUgIk1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00NSwzMSArNDgsNTMgQEAgRW50cnlTeW5jOjpFbnRyeVN5bmMoRE9NRmlsZVN5c3RlbUJh
c2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8TWV0YWRhdGE+IEVudHJ5U3luYzo6Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYpCitQYXNz
UmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjpjcmVhdGUoRW50cnlCYXNlKiBlbnRyeSkKIHsK
LSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gMDsKKyAgICBpZiAoZW50cnktPmlzRmlsZSgpKQorICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZpbGVFbnRyeVN5bmMoZW50cnktPm1fZmlsZVN5c3RlbSwgZW50cnktPm1f
ZnVsbFBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVudHJ5U3luYyhl
bnRyeS0+bV9maWxlU3lzdGVtLCBlbnRyeS0+bV9mdWxsUGF0aCkpOwogfQogCi1QYXNzUmVmUHRy
PEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5
bmM+LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3QKK1Bhc3NSZWZQdHI8TWV0
YWRhdGE+IEVudHJ5U3luYzo6Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
Ly8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgZWMgPSAwOworICAgIE1ldGFkYXRhU3luY0NhbGxiYWNrSGVscGVyIGhl
bHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5
c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIu
ZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0
KGVjKTsKIH0KIAotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y29weVRvKFBhc3NS
ZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0CitQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0
cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBlYyA9IDA7CisgICAgRW50
cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVt
KCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudC5nZXQoKSwgbmFt
ZSwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKIH0KIAotdm9pZCBFbnRy
eVN5bmM6OnJlbW92ZShFeGNlcHRpb25Db2RlJikgY29uc3QKK1Bhc3NSZWZQdHI8RW50cnlTeW5j
PiBFbnRyeVN5bmM6OmNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gcGFyZW50
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIC8v
IEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGVj
ID0gMDsKKyAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5h
c3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHkodGhpcywgcGFy
ZW50LmdldCgpLCBuYW1lLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNh
bGxiYWNrKCkpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOwor
fQorCit2b2lkIEVudHJ5U3luYzo6cmVtb3ZlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorewor
ICAgIGVjID0gMDsKKyAgICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0
ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRo
aXMsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpCisg
ICAgICAgIGVjID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgIGhlbHBlci5nZXRSZXN1
bHQoZWMpOwogfQogCiBQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjpnZXRQYXJlbnQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5oIGIvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5U3luYy5oCmluZGV4IGJhN2RiNjBjZTk2NzBiM2NlZTFjYWJkZGY4OWQ5
MWU5MGYwZDg2ZWIuLjEzMmZkNzBkYWM2ZjdlNjUzNGVlMGNlNWEwNGNiYWU5MzM1MGY0MWQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuaAorKysgYi9XZWJDb3JlL2ZpbGVh
cGkvRW50cnlTeW5jLmgKQEAgLTQ3LDYgKzQ3LDggQEAgY2xhc3MgTWV0YWRhdGE7CiAKIGNsYXNz
IEVudHJ5U3luYyA6IHB1YmxpYyBFbnRyeUJhc2UgewogcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEVudHJ5U3luYz4gY3JlYXRlKEVudHJ5QmFzZSogZW50cnkpOworCiAgICAgRE9NRmls
ZVN5c3RlbVN5bmMqIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01G
aWxlU3lzdGVtU3luYyo+KG1fZmlsZVN5c3RlbSk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxNZXRhZGF0YT4gZ2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVFbnRyeS5jcHAgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmNw
cAppbmRleCAyZDFlNjIzZDNlZGU5MGZmODdlODBlMDZiMTlkMTIyMmNmOGY4Y2ExLi4zNjI5MTMy
YTQ3ZGMzMDFiMWY0NTU1YjE0MzQxNTNkZmNiOTAxMDQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZUVudHJ5LmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmNwcApA
QCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVFbnRyeTo6Rmls
ZUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
CitGaWxlRW50cnk6OkZpbGVFbnRyeShET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICA6IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQog
ewogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5oIGIvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVFbnRyeS5oCmluZGV4IDJjODVkNzM5YjdjZDUxOThjODlkZjBmNGU0MjdmZTVk
MjVjNTNhYWEuLmJiYjgzNjkxYzU0OWJmNjZhOWUwZTY1OGY5NmRkNDdmNTllMTg0ZWUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnkuaAorKysgYi9XZWJDb3JlL2ZpbGVhcGkv
RmlsZUVudHJ5LmgKQEAgLTM5LDExICszOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgRE9NRmlsZVN5c3RlbTsKLQogY2xhc3MgRmlsZUVudHJ5IDogcHVibGljIEVudHJ5IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlRW50cnk+IGNyZWF0ZShET01GaWxl
U3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZpbGVFbnRyeT4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGaWxlRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKICAgICB9CkBAIC01NCw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEZpbGVFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBGaWxlRW50cnkoRE9NRmlsZVN5c3Rl
bUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tz
LmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAppbmRleCA1MTZm
NjI3NjhkYjg2ZTI5ODRmYTZlY2RhYmMyMzU2MjcwY2EzYTZkLi5lMGY5OTgwZDRiNTY0ZWRlYzZj
OWFiYTJmODI5MjUyYzk3YzBiMDNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5
c3RlbUNhbGxiYWNrcy5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
a3MuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAj
aW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKLSNp
bmNsdWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIK
ICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlci5o
IgogI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgpAQCAtMTExLDEyICsxMTEsMTIgQEAgdm9p
ZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkKIAogLy8gRW50cnlD
YWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1QYXNzT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBFbnRyeUNhbGxiYWNr
czo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIERPTUZpbGVTeXN0ZW0qIGZpbGVT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KQorUGFz
c093blB0cjxFbnRyeUNhbGxiYWNrcz4gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrLCBET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGZp
bGVTeXN0ZW0sIGV4cGVjdGVkUGF0aCwgaXNEaXJlY3RvcnkpKTsKIH0KIAotRW50cnlDYWxsYmFj
a3M6OkVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIERPTUZpbGVTeXN0
ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0
b3J5KQorRW50cnlDYWxsYmFja3M6OkVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2ssIERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGV4cGVj
dGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSkKICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNl
KGVycm9yQ2FsbGJhY2spCiAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2sp
CiAgICAgLCBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKQEAgLTEzOCwxMiArMTM4LDEyIEBAIHZv
aWQgRW50cnlDYWxsYmFja3M6OmRpZFN1Y2NlZWQoKQogCiAvLyBFbnRyaWVzQ2FsbGJhY2tzIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLVBhc3NPd25QdHI8RW50cmllc0NhbGxiYWNrcz4gRW50cmllc0NhbGxiYWNrczo6Y3JlYXRl
KFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgRGlyZWN0b3J5UmVhZGVyKiBkaXJlY3RvcnlS
ZWFkZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCitQYXNzT3duUHRyPEVudHJpZXNDYWxsYmFj
a3M+IEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ss
IERpcmVjdG9yeVJlYWRlckJhc2UqIGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3RyaW5nJiBiYXNl
UGF0aCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEVudHJpZXNDYWxsYmFja3Moc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBkaXJlY3RvcnlSZWFkZXIsIGJhc2VQYXRoKSk7CiB9
CiAKLUVudHJpZXNDYWxsYmFja3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyaWVz
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrLCBEaXJlY3RvcnlSZWFkZXIqIGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3RyaW5n
JiBiYXNlUGF0aCkKK0VudHJpZXNDYWxsYmFja3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0
cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrLCBEaXJlY3RvcnlSZWFkZXJCYXNlKiBkaXJlY3RvcnlSZWFkZXIs
IGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCiAgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShl
cnJvckNhbGxiYWNrKQogICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQog
ICAgICwgbV9kaXJlY3RvcnlSZWFkZXIoZGlyZWN0b3J5UmVhZGVyKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBiL1dlYkNvcmUvZmlsZWFwaS9GaWxl
U3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggN2YxODZlZjI3NTRhZTU2MjY1MmMxZjRmZGNmMTYwNmMz
MjM1ZDRiNS4uYzYwMGE3NjZkMDk2NmJjZmQ5YzU1OTY3ZmMyNjA1NTE4YzQ1ZTY5YyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC00MSw4ICs0MSw4IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVdyaXRlcjsKLWNsYXNzIERPTUZpbGVTeXN0
ZW07Ci1jbGFzcyBEaXJlY3RvcnlSZWFkZXI7CitjbGFzcyBET01GaWxlU3lzdGVtQmFzZTsKK2Ns
YXNzIERpcmVjdG9yeVJlYWRlckJhc2U7CiBjbGFzcyBFcnJvckNhbGxiYWNrOwogY2xhc3MgRW50
cmllc0NhbGxiYWNrOwogY2xhc3MgRW50cnlBcnJheTsKQEAgLTg2LDI3ICs4NiwyNyBAQCBwcm90
ZWN0ZWQ6CiAKIGNsYXNzIEVudHJ5Q2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyeUNhbGxiYWNrcz4g
Y3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4sIERPTUZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0Rp
cmVjdG9yeSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8RW50cnlDYWxsYmFja3M+IGNyZWF0ZShQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBET01G
aWxlU3lzdGVtQmFzZSosIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0
b3J5KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwogCiBwcml2YXRlOgotICAgIEVu
dHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4sIERPTUZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9v
bCBpc0RpcmVjdG9yeSk7CisgICAgRW50cnlDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyeUNhbGxi
YWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgRE9NRmlsZVN5c3RlbUJhc2UqLCBjb25z
dCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7CiAgICAgUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAgIERPTUZpbGVTeXN0ZW0qIG1fZmls
ZVN5c3RlbTsKKyAgICBET01GaWxlU3lzdGVtQmFzZSogbV9maWxlU3lzdGVtOwogICAgIFN0cmlu
ZyBtX2V4cGVjdGVkUGF0aDsKICAgICBib29sIG1faXNEaXJlY3Rvcnk7CiB9OwogCiBjbGFzcyBF
bnRyaWVzQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBEaXJlY3Rv
cnlSZWFkZXIqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUGFzc093blB0
cjxFbnRyaWVzQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBEaXJlY3RvcnlSZWFkZXJCYXNlKiwgY29uc3QgU3Ry
aW5nJiBiYXNlUGF0aCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyeShj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3RvcnkpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpOwogCiBwcml2YXRlOgotICAgIEVu
dHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+LCBEaXJlY3RvcnlSZWFkZXIqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKTsK
KyAgICBFbnRyaWVzQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiwgRGlyZWN0b3J5UmVhZGVyQmFzZSosIGNvbnN0IFN0cmluZyYg
YmFzZVBhdGgpOwogICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNr
OwotICAgIERpcmVjdG9yeVJlYWRlciogbV9kaXJlY3RvcnlSZWFkZXI7CisgICAgRGlyZWN0b3J5
UmVhZGVyQmFzZSogbV9kaXJlY3RvcnlSZWFkZXI7CiAgICAgU3RyaW5nIG1fYmFzZVBhdGg7CiAg
ICAgUmVmUHRyPEVudHJ5QXJyYXk+IG1fZW50cmllczsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVT
eXN0ZW0uY3BwCmluZGV4IDU2N2FhZmU2NmY3ZDdjNTAwODNhOTVlNDI4ZjhlZjU5YWRmYTc5ODAu
LmM3MzQ3Yjg4NDkyZTBhNjE5NzBjY2YzNmE1MWYwOWI4NmExNTg5NjMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9M
b2NhbEZpbGVTeXN0ZW0uY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyB2b2lkIG9wZW5GaWxl
U3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBj
b25zCiAgICAgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShiYXNlUGF0aCwgaWRlbnRp
ZmllciwgdHlwZSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlcXVl
c3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5
c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0
ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBl
IHR5cGUsIGxvbmcgbG9uZywgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNh
bGxiYWNrcywgYm9vbCkKIHsKICAgICAvLyBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVt
IGNhbGxzIGNhbGxiYWNrcyBzeW5jaHJvbm91c2x5LCBzbyB0aGUgbWV0aG9kIG5lZWRzIHRvIGJl
IGNhbGxlZCBhc3luY2hyb25vdXNseS4KICAgICBjb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJm9wZW5GaWxlU3lzdGVtLCBmaWxlU3lzdGVtQmFzZVBhdGgoKSwgY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIGNhbGxiYWNrcykp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5oIGIvV2ViQ29y
ZS9maWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5oCmluZGV4IGJiMWQwNDUwNDg1YjY0ZGMwMDcwN2Y4
ODQ5ZDhjMGVhZWUzNzlhZjQuLjlkOGFlNjVhMDU2MjQzOWJmZmRmNmFlNzI2M2Y0NTAyM2JlYTg2
NGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaAorKysgYi9X
ZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIC8vIGNhbGxpbmcgdGhpcyBvbmUuCiAgICAgc3RhdGljIExvY2FsRmlsZVN5c3RlbSYg
bG9jYWxGaWxlU3lzdGVtKCk7CiAKLSAgICB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZvaWQgcmVxdWVzdEZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSwg
bG9uZyBsb25nIHNpemUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiwgYm9v
bCBzeW5jaHJvbm91cyA9IGZhbHNlKTsKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKICAgICAv
LyBUaGlzIGNhbGwgaXMgbm90IHRocmVhZC1zYWZlOyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55
IHdvcmtlciB0aHJlYWRzIGFyZSBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBp
L01ldGFkYXRhLmggYi9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaAppbmRleCAxZmVjOTQzN2I1
MGQ2YTU1ZmQ4NjYyM2E5YzBjZjI3YWRmZDRhNDI1Li5iNzA4MDZiMDllZDQyMTI2NDBkYmM2MDBm
ODBjYWNiNzVhMmYzODBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaAor
KysgYi9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaApAQCAtNDQsNiArNDQsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFkYXRhKG1vZGlmaWNhdGlvblRpbWUp
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhZGF0YT4gY3JlYXRlKE1ldGFk
YXRhKiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWV0YWRh
dGEobWV0YWRhdGEtPm1fbW9kaWZpY2F0aW9uVGltZSkpOworICAgIH0KKwogICAgIC8vIE5lZWRz
IHRvIHJldHVybiBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgRGF0ZS4KICAgICBkb3Vi
bGUgbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZSAq
IDEwMDAuMDsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvU3luY0NhbGxiYWNrSGVs
cGVyLmggYi9XZWJDb3JlL2ZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGFkZDdmYzZjMmYyOWIwYTRlYTRmZDc4MmI3NGNlM2UxNDVjODljYwotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvZmlsZWFwaS9TeW5jQ2FsbGJhY2tIZWxwZXIuaApAQCAtMCwwICsxLDE3NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgU3luY0NhbGxiYWNrSGVscGVyX2gKKyNkZWZpbmUgU3luY0NhbGxiYWNrSGVscGVy
X2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5
LmgiCisjaW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiRW50cnlBcnJheVN5
bmMuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFj
ay5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGaWxlRW50cnkuaCIK
KyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIK
KyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFzeW5jRmlsZVN5c3RlbTsKK2NsYXNz
IERpcmVjdG9yeUVudHJ5U3luYzsKK2NsYXNzIEVudHJ5QXJyYXlTeW5jOworY2xhc3MgRW50cnlT
eW5jOworY2xhc3MgRmlsZUVudHJ5U3luYzsKKworLy8gQSBoZWxwZXIgdGVtcGxhdGUgZm9yIEZp
bGVTeXN0ZW1TeW5jIGltcGxlbWVudGF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFN1Y2Nlc3ND
YWxsYmFjaywgdHlwZW5hbWUgT2JzZXJ2ZXJUeXBlLCB0eXBlbmFtZSBDYWxsYmFja0FyZywgdHlw
ZW5hbWUgUmVzdWx0VHlwZT4KK2NsYXNzIFN5bmNDYWxsYmFja0hlbHBlciA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8U3VjY2Vz
c0NhbGxiYWNrLCBPYnNlcnZlclR5cGUsIENhbGxiYWNrQXJnLCBSZXN1bHRUeXBlPiBIZWxwZXJU
eXBlOworICAgIFN5bmNDYWxsYmFja0hlbHBlcihPYnNlcnZlclR5cGUqIG9ic2VydmVyID0gMCkK
KyAgICAgICAgOiBtX29ic2VydmVyKG9ic2VydmVyKQorICAgICAgICAsIG1fc3VjY2Vzc0NhbGxi
YWNrKFN1Y2Nlc3NDYWxsYmFja0ltcGw6OmNyZWF0ZSh0aGlzKSkKKyAgICAgICAgLCBtX2Vycm9y
Q2FsbGJhY2soRXJyb3JDYWxsYmFja0ltcGw6OmNyZWF0ZSh0aGlzKSkKKyAgICAgICAgLCBtX2Vy
cm9yKDApCisgICAgeworICAgIH0KKworICAgIFBhc3NSZWZQdHI8UmVzdWx0VHlwZT4gZ2V0UmVz
dWx0KEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHsKKyAgICAgICAgaWYgKG1fb2JzZXJ2ZXIpIHsK
KyAgICAgICAgICAgIGlmICghbV9vYnNlcnZlci0+d2FpdENvbXBsZXRpb24oKSkKKyAgICAgICAg
ICAgICAgICBtX2Vycm9yID0gQUJPUlRfRVJSOworICAgICAgICB9CisgICAgICAgIGVjID0gbV9l
cnJvcjsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBQ
YXNzUmVmUHRyPFN1Y2Nlc3NDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKCkgeyByZXR1cm4gbV9z
dWNjZXNzQ2FsbGJhY2s7IH0KKyAgICBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2soKSB7IHJldHVybiBtX2Vycm9yQ2FsbGJhY2s7IH0KKworcHJpdmF0ZToKKyAgICBjbGFz
cyBTdWNjZXNzQ2FsbGJhY2tJbXBsIDogcHVibGljIFN1Y2Nlc3NDYWxsYmFjayB7CisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWNjZXNzQ2FsbGJhY2tJbXBsPiBjcmVh
dGUoSGVscGVyVHlwZSogaGVscGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFN1Y2Nlc3NDYWxsYmFja0ltcGwoaGVscGVyKSk7CisgICAgICAgIH0KKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2hlbHBlci0+c2V0RXJyb3IoMCk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlRXZlbnQoQ2FsbGJhY2tBcmcqIGFyZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9o
ZWxwZXItPnNldFJlc3VsdChSZXN1bHRUeXBlOjpjcmVhdGUoYXJnKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU3VjY2Vzc0Nh
bGxiYWNrSW1wbChIZWxwZXJUeXBlKiBoZWxwZXIpCisgICAgICAgICAgICA6IG1faGVscGVyKGhl
bHBlcikKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIEhlbHBlclR5cGUqIG1faGVscGVy
OworICAgIH07CisKKyAgICBjbGFzcyBFcnJvckNhbGxiYWNrSW1wbCA6IHB1YmxpYyBFcnJvckNh
bGxiYWNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2tJbXBsPiBjcmVhdGUoSGVscGVyVHlwZSogaGVscGVyKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVycm9yQ2FsbGJhY2tJbXBsKGhlbHBlcikpOworICAg
ICAgICB9CisKKyAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJy
b3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChlcnJvcik7CisgICAgICAgICAgICBt
X2hlbHBlci0+c2V0RXJyb3IoZXJyb3ItPmNvZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgRXJyb3JDYWxsYmFja0ltcGwo
SGVscGVyVHlwZSogaGVscGVyKQorICAgICAgICAgICAgOiBtX2hlbHBlcihoZWxwZXIpCisgICAg
ICAgIHsKKyAgICAgICAgfQorICAgICAgICBIZWxwZXJUeXBlKiBtX2hlbHBlcjsKKyAgICB9Owor
CisgICAgZnJpZW5kIGNsYXNzIFN1Y2Nlc3NDYWxsYmFja0ltcGw7CisgICAgZnJpZW5kIGNsYXNz
IEVycm9yQ2FsbGJhY2tJbXBsOworCisgICAgdm9pZCBzZXRFcnJvcihFeGNlcHRpb25Db2RlIGVj
KQorICAgIHsKKyAgICAgICAgbV9lcnJvciA9IGVjOworICAgIH0KKworICAgIHZvaWQgc2V0UmVz
dWx0KFBhc3NSZWZQdHI8UmVzdWx0VHlwZT4gcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9yZXN1
bHQgPSByZXN1bHQ7CisgICAgfQorCisgICAgT2JzZXJ2ZXJUeXBlKiBtX29ic2VydmVyOworICAg
IFJlZlB0cjxTdWNjZXNzQ2FsbGJhY2tJbXBsPiBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICBSZWZQ
dHI8RXJyb3JDYWxsYmFja0ltcGw+IG1fZXJyb3JDYWxsYmFjazsKKyAgICBSZWZQdHI8UmVzdWx0
VHlwZT4gbV9yZXN1bHQ7CisgICAgRXhjZXB0aW9uQ29kZSBtX2Vycm9yOworfTsKKworc3RydWN0
IEVtcHR5VHlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPEVtcHR5VHlwZT4geworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEVtcHR5VHlwZT4gY3JlYXRlKEVtcHR5VHlwZSopCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5VHlwZSk7CisgICAgfQorfTsKKworc3RydWN0IEVtcHR5
T2JzZXJ2ZXJUeXBlIHsKKyAgICBib29sIHdhaXRDb21wbGV0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KK307CisKK3R5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPEVu
dHJ5Q2FsbGJhY2ssIEFzeW5jRmlsZVN5c3RlbSwgRW50cnksIEVudHJ5U3luYz4gRW50cnlTeW5j
Q2FsbGJhY2tIZWxwZXI7Cit0eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxFbnRyaWVzQ2FsbGJh
Y2ssIEFzeW5jRmlsZVN5c3RlbSwgRW50cnlBcnJheSwgRW50cnlBcnJheVN5bmM+IEVudHJpZXNT
eW5jQ2FsbGJhY2tIZWxwZXI7Cit0eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxNZXRhZGF0YUNh
bGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIE1ldGFkYXRhLCBNZXRhZGF0YT4gTWV0YWRhdGFTeW5j
Q2FsbGJhY2tIZWxwZXI7Cit0eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxWb2lkQ2FsbGJhY2ss
IEFzeW5jRmlsZVN5c3RlbSwgRW1wdHlUeXBlLCBFbXB0eVR5cGU+IFZvaWRTeW5jQ2FsbGJhY2tI
ZWxwZXI7Cit0eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxGaWxlU3lzdGVtQ2FsbGJhY2ssIEVt
cHR5T2JzZXJ2ZXJUeXBlLCBET01GaWxlU3lzdGVtLCBET01GaWxlU3lzdGVtU3luYz4gRmlsZVN5
c3RlbVN5bmNDYWxsYmFja0hlbHBlcjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjZW5kaWYgLy8gU3luY0NhbGxiYWNrSGVscGVy
X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5pZGwKaW5kZXggOGNhYzg3OTk3YWE5NTMyNjYwZTViZWMyM2U5OWNiMTkxZWJk
OTRlNS4uODZiNzJlNTVmNDM5ODYyYjFhN2MyMTA0ZTNjZDliNGU5M2M2M2Y2YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwKQEAgLTE5Miw3ICsxOTIsNyBAQCBtb2R1bGUgd2luZG93IHsKICNpZiBkZWZpbmVkKEVO
QUJMRV9GSUxFX1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCiAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IFBFUlNJU1RFTlQgPSAxOwotICAgICAgICBbRW5hYmxlZEF0UnVudGltZV0gdm9pZCByZXF1ZXN0
RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4g
W0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywg
aW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAg
ICAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCByZXF1ZXN0RmlsZVN5c3Rl
bShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNr
LCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxi
YWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKIAogICAgICAgICBh
dHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRmxhZ3NDb25zdHJ1Y3RvciBG
bGFnczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKaW5kZXggMWJmNzU4MDgy
MWJiMzA3YmRlZjAxYjZiZjAwNGM5YjM0OThiNzVmZi4uNzE4MTNmMjZkY2QzMGE5ODdmNGViMDVl
ODQ5ODc5OTlkODdkYjI1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVT
eXN0ZW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCkBAIC01OSw2
ICs1OSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCisg
ICAgLy8gU3ViY2xhc3MgbXVzdCBpbXBsZW1lbnQgdGhpcyBpZiBpdCBzdXBwb3J0cyBzeW5jaHJv
bm91cyBvcGVyYXRpb25zLgorICAgIC8vIFRoaXMgc2hvdWxkIHJldHVybiBmYWxzZSBpZiB0aGVy
ZSdyZSBubyBwZW5kaW5nIG9wZXJhdGlvbnMuCisgICAgdmlydHVhbCBib29sIHdhaXRDb21wbGV0
aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIENyZWF0ZXMgYW5kIHJldHVybnMgYSBu
ZXcgcGxhdGZvcm0tc3BlY2lmaWMgQXN5bmNGaWxlU3lzdGVtIGluc3RhbmNlIGlmIHRoZSBwbGF0
Zm9ybSBoYXMgaXRzIG93biBpbXBsZW1lbnRhdGlvbi4KICAgICBzdGF0aWMgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJvb3RQYXRoKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuY3BwCmluZGV4IDZjZWUyNDYyOWI3Yjg2ZmFjMjdhMjViNWIzYWNhYjM4
OTNkNzBiYTguLmVhMWJhODlhM2U3NzJmMzFjNDM4NzgzZjRkNTAxNjJkNzBhZTNjYzkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAgLTY2LDExICs2NiwxMyBAQAogI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJET01G
aWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbVN5bmMuaCIKICNpbmNsdWRlICJF
cnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1
ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2Niw2ICszNjgsMjUgQEAgdm9pZCBX
b3JrZXJDb250ZXh0OjpyZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUs
IFBhc3NSZWZQdHI8RmlsZVMKICAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgp
LnJlcXVlc3RGaWxlU3lzdGVtKHRoaXMsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzKSk7
CiB9CiAKK1Bhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IFdvcmtlckNvbnRleHQ6OnJlcXVl
c3RGaWxlU3lzdGVtU3luYyhpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGVjID0gMDsKKyAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFi
bGUoKSB8fCAhc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgpKSB7CisgICAg
ICAgIGVjID0gU0VDVVJJVFlfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBB
c3luY0ZpbGVTeXN0ZW06OlR5cGUgZmlsZVN5c3RlbVR5cGUgPSBzdGF0aWNfY2FzdDxBc3luY0Zp
bGVTeXN0ZW06OlR5cGU+KHR5cGUpOworICAgIGlmIChmaWxlU3lzdGVtVHlwZSAhPSBBc3luY0Zp
bGVTeXN0ZW06OlRlbXBvcmFyeSAmJiBmaWxlU3lzdGVtVHlwZSAhPSBBc3luY0ZpbGVTeXN0ZW06
OlBlcnNpc3RlbnQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX01PRElGSUNBVElPTl9FUlI7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxw
ZXIgaGVscGVyOworICAgIExvY2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkucmVxdWVz
dEZpbGVTeXN0ZW0odGhpcywgZmlsZVN5c3RlbVR5cGUsIHNpemUsIEZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmNyZWF0ZShoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNr
KCksIHRoaXMpLCB0cnVlKTsKKyAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7Cit9CisK
IENPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4oV29ya2VyQ29udGV4dDo6VEVNUE9SQVJZ
KSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5KSwgZW51bV9t
aXNtYXRjaCk7CiBDT01QSUxFX0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNvbnRleHQ6
OlBFUlNJU1RFTlQpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lzdGVtOjpQZXJzaXN0
ZW50KSwgZW51bV9taXNtYXRjaCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4
IDQxMjhhNTYyM2I4ZWY4YWRjMzQyMDc0MTUzYTBlYTRjNmI5ODRkOGYuLjBjNDk1ZDRjMzAxZWRj
NTM4YjM1ZjYyMGQyMTczNjk1OTJhZmMzZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAt
NDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRGF0YWJhc2U7CiAg
ICAgY2xhc3MgRGF0YWJhc2VDYWxsYmFjazsKICAgICBjbGFzcyBEYXRhYmFzZVN5bmM7CisgICAg
Y2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CiAgICAgY2xhc3MgRXJyb3JDYWxsYmFjazsKICAgICBj
bGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyOwpA
QCAtMTMwLDYgKzEzMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBFUlNJ
U1RFTlQsCiAgICAgICAgIH07CiAgICAgICAgIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oaW50IHR5
cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgICAgICBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1T
eW5jPiByZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNl
cHRpb25Db2RlJik7CiAjZW5kaWYKIAogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2Vk
IGZvciBHQyBtYXJraW5nLiBTZWUgSlNXb3JrZXJDb250ZXh0OjptYXJrQ2hpbGRyZW4oTWFya1N0
YWNrJikgaW4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBi
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAppbmRleCAzZTE4NWMwZDViOGUwYTEz
N2JkOTI4YzUyYTJkYmE4MTc1ZjgwMzM3Li5hYTQwZmYzZjgyMDllMWYzODI4NmJhMjU3M2U2MWZi
MDY1OTk2MTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwK
KysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCkBAIC0xMDgsNyArMTA4LDgg
QEAgbW9kdWxlIHRocmVhZHMgewogI2lmIGRlZmluZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAmJiBF
TkFCTEVfRklMRV9TWVNURU0KICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9SQVJZ
ID0gMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9IDE7Ci0gICAg
ICAgIFtFbmFibGVkQXRSdW50aW1lXSB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKGluIHVuc2lnbmVk
IHNob3J0IHR5cGUsIGluIGxvbmcgbG9uZyBzaXplLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBG
aWxlU3lzdGVtQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFs
XSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICBbRW5hYmxlZEF0UnVudGlt
ZT1GaWxlU3lzdGVtXSB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKGluIHVuc2lnbmVkIHNob3J0IHR5
cGUsIGluIGxvbmcgbG9uZyBzaXplLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBGaWxlU3lzdGVt
Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFcnJvckNh
bGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICBbRW5hYmxlZEF0UnVudGltZT1GaWxlU3lz
dGVtXSBET01GaWxlU3lzdGVtU3luYyByZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW4gdW5zaWduZWQg
c2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CiAK
ICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1d
IEZsYWdzQ29uc3RydWN0b3IgRmxhZ3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY4NWFjMjAx
NzhhNDI0Y2MyM2IwODg0YmFlMDhkOWUzYWM4ZDBlOGEuLjE2OTEwM2I2ODVmMGFiMmU5YTZiMGE2
OWFlZDdiMTUyMTk1NmNjOGYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEwLTEw
LTAxICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbVN5bmMgaW1w
bGVtZW50YXRpb24gZm9yIFdvcmtlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDcwNDQKKworICAgICAgICAqIHNyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxl
U3lzdGVtKTogQWRkZWQgYSBuZXcgcGFyYW1ldGVyCisgICAgICAgIHN5bmNocm9ub3VzLgorICAg
ICAgICAqIHNyYy9XZWJXb3JrZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2Vy
QmFzZTo6b3BlbkZpbGVTeXN0ZW0pOiBBZGRlZCBhIG5ldyBwYXJhbWV0ZXIKKyAgICAgICAgc3lu
Y2hyb25vdXMuCisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2UuaDoKKyAgICAgICAgKiBzcmMv
V2ViV29ya2VyQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bTo6d2FpdENvbXBsZXRpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlKTogVXBkYXRlZCB0byBzdG9yZSBjcmVhdGVkIGJyaWRnZSB0byBhIG1lbWJlciB2YXJp
YWJsZSBzbyB0aGF0IGxhdGVyCisgICAgICAgIHdlIGNhbiBjYWxsIGJyaWRnZS0+c3RvcCgpIHdo
ZW4gUnVuTG9vcCBpcyB0ZXJtaW5hdGVkIGR1cmluZworICAgICAgICB3YWl0Q29tcGxldGlvbi4K
KyAgICAgICAgKiBzcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaDoKKwogMjAxMC0w
OS0zMCAgQWxleGV5IE1hcmluaWNoZXYgIDxhbWFyaW5pY2hldkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgTWFycmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCBhNGYyZDcyMzc4OTU2ZWUxMjUzNzA4
OGZjMmFjOTlhZTE1NGRkZDY5Li45NmY0MGZiZTgyNjJiNmI3YTNiM2I4NDQyNzZhYjM1NjgxNmQz
YTk0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9t
aXVtLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVt
LmNwcApAQCAtNTcsNyArNTcsNyBAQCBMb2NhbEZpbGVTeXN0ZW0mIExvY2FsRmlsZVN5c3RlbTo6
bG9jYWxGaWxlU3lzdGVtKCkKICAgICByZXR1cm4gKmxvY2FsRmlsZVN5c3RlbTsKIH0KIAotdm9p
ZCBMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgTG9j
YWxGaWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGJvb2wgc3luY2hyb25v
dXMpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50
KCkpIHsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxl
U3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmkKICAgICAgICAg
V29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQq
Pihjb250ZXh0KTsKICAgICAgICAgV29ya2VyTG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclByb3h5
ID0gJndvcmtlckNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpOwogICAgICAg
ICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXIgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4o
d29ya2VyTG9hZGVyUHJveHkpOwotICAgICAgICB3ZWJXb3JrZXItPm9wZW5GaWxlU3lzdGVtKHN0
YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBzaXplLCBuZXcgV2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzLCBjb250ZXh0KSk7CisgICAgICAgIHdlYldvcmtl
ci0+b3BlbkZpbGVTeXN0ZW0oc3RhdGljX2Nhc3Q8V2ViRmlsZVN5c3RlbTo6VHlwZT4odHlwZSks
IHNpemUsIG5ldyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MsIGNvbnRleHQp
LCBzeW5jaHJvbm91cyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckJhc2UuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNl
LmNwcAppbmRleCBmNGY1OTIxNWQwZmYwZjkyMmMwMGFhZjc2MGM0OTU2ODczYzlkMmQ3Li5kZTQ4
NThjOWE4NmQ5NzE5NjM1MjVlMjA1NTc0NGE5OThjMTk0OTY0IDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViV29ya2VyQmFzZS5jcHAKQEAgLTIzNywxMSArMjM3LDIzIEBAIGJvb2wgV2ViV29ya2VyQmFz
ZTo6YWxsb3dEYXRhYmFzZShXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViU3RyCiB9CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lkIFdlYldvcmtlckJhc2U6
Om9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUs
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV2ViV29ya2VyQmFzZTo6
b3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzLCBib29sIHN5bmNocm9ub3VzKQogewor
ICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpOwog
ICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpjb250cm9sbGVyRm9yQ29udGV4dCgpOwotICAgIFJlZlB0cjxXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UgPSBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpjcmVhdGUodGhpcywgY29udHJvbGxlci0+d29ya2VyQ29udGV4dCgpLCBjYWxsYmFja3Mp
OwotICAgIGJyaWRnZS0+cG9zdE9wZW5GaWxlU3lzdGVtVG9NYWluVGhyZWFkKGNvbW1vbkNsaWVu
dCgpLCB0eXBlLCBzaXplLCBvcGVuRmlsZVN5c3RlbU1vZGUpOworICAgIFdvcmtlckNvbnRleHQq
IHdvcmtlckNvbnRleHQgPSBjb250cm9sbGVyLT53b3JrZXJDb250ZXh0KCk7CisKKyAgICAvLyBD
cmVhdGUgYSB1bmlxdWUgbW9kZSBmb3IgdGhpcyBvcGVuRmlsZVN5c3RlbSBjYWxsLgorICAgIFN0
cmluZyBtb2RlID0gb3BlbkZpbGVTeXN0ZW1Nb2RlOworICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6
bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSkpOworCisgICAgUmVmUHRyPFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSA9IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OmNyZWF0ZSh0aGlzLCB3b3JrZXJDb250ZXh0LCBjYWxsYmFja3MpOworICAgIGJy
aWRnZS0+cG9zdE9wZW5GaWxlU3lzdGVtVG9NYWluVGhyZWFkKGNvbW1vbkNsaWVudCgpLCB0eXBl
LCBzaXplLCBtb2RlKTsKKworICAgIGlmIChzeW5jaHJvbm91cykgeworICAgICAgICBpZiAocnVu
TG9vcC5ydW5Jbk1vZGUod29ya2VyQ29udGV4dCwgbW9kZSkgPT0gTWVzc2FnZVF1ZXVlVGVybWlu
YXRlZCkKKyAgICAgICAgICAgIGJyaWRnZS0+c3RvcCgpOworICAgIH0KIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCmluZGV4IDFmNGJjMDMxNjk4OGQwMjA0NWMwNDY2
YWVlNzZiYzA5YWVmMGI0MDguLmZlODRiZjc4ZmEwMDYwMDRhMmMzMTAwYzU4MmU1NzM3NWVkMjIy
Y2MgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oCkBAIC05Myw3ICs5Myw3IEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAvLyBSZXF1ZXN0cyB0byBvcGVu
IGEgZmlsZSBzeXN0ZW0gZm9yIHRoaXMgd29ya2VyLiAoTm90ZSB0aGF0IHRoaXMgaXMgbm90IHRo
ZSBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViRnJhbWVDbGllbnQ6Om9wZW5GaWxlU3lzdGVtLikKLSAg
ICB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJG
aWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyos
IGJvb2wgc3luY2hyb25vdXMpOwogI2VuZGlmCiAKICAgICAvLyBFeGVjdXRlcyB0aGUgZ2l2ZW4g
dGFzayBvbiB0aGUgbWFpbiB0aHJlYWQuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IGIyMWI3MDllNzZmOWM5YTRj
YTMwY2YyZTJlYjQxYjg4OTlkZWY4OWIuLmZmMTNhY2I2NmM5NmNhNDA5ZTYzZWM2OTc5NzRkYWQ0
NjQzM2Q1MGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW0uY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC03MSw2ICs3MSwyMSBAQCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6fldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKCkKIHsKIH0KIAor
Ym9vbCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6d2FpdENvbXBsZXRpb24oKQorewor
ICAgIGlmICghbV9icmlkZ2VGb3JMYXN0T3BlcmF0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBjb250cm9sbGVyID0gV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNvbnRleHQoKTsKKyAgICBXb3JrZXJDb250
ZXh0KiB3b3JrZXJDb250ZXh0ID0gY29udHJvbGxlci0+d29ya2VyQ29udGV4dCgpOworICAgIFdv
cmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgp
OworICAgIGlmIChydW5Mb29wLnJ1bkluTW9kZSh3b3JrZXJDb250ZXh0LCBtX21vZGUpID09IE1l
c3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKKyAgICAgICAgbV9icmlkZ2VGb3JMYXN0T3BlcmF0aW9u
LT5zdG9wKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06Om1vdmUoY29uc3QgU3Ry
aW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBjcmVhdGVXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RNb3ZlVG9NYWluVGhy
ZWFkKG1fd2ViRmlsZVN5c3RlbSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCBtX21vZGUp
OwpAQCAtMTIzLDcgKzEzOCw4IEBAIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06
OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBTCiAKIFBhc3NSZWZQ
dHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gV29ya2VyQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW06OmNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICByZXR1cm4gV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlKG1fd29ya2VyLCBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIG5ldyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3Mp
KTsKKyAgICBtX2JyaWRnZUZvckxhc3RPcGVyYXRpb24gPSBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpjcmVhdGUobV93b3JrZXIsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbmV3
IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgcmV0
dXJuIG1fYnJpZGdlRm9yTGFzdE9wZXJhdGlvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5oCmluZGV4IDdjZDM0Yjk3ZmE0ZTc0OWUxZWJmOGJjM2Q2OWEwOWYzYzZmOTYyNDYuLjhh
Mzg0YzdkMTFkNWVhZGEzYjY0OGFlNDI4ZDIwNGUwZjk2MjI1N2QgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKQEAgLTU4LDYg
KzU4LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0oKTsKIAorICAgIC8vIFJ1bnMgb25lIHBlbmRpbmcgb3BlcmF0aW9uICh0byB3YWl0IGZv
ciBjb21wbGV0aW9uIGluIHRoZSBzeW5jLW1vZGUpLgorICAgIHZpcnR1YWwgYm9vbCB3YWl0Q29t
cGxldGlvbigpOworCiAgICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgU3RyaW5nJiBzb3VyY2VQ
YXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBTdHJpbmcmIHNv
dXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwpAQCAtNzYs
NiArNzksNyBAQCBwcml2YXRlOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKICAgICBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5
c3RlbTsKICAgICBXZWJLaXQ6OldlYldvcmtlckJhc2UqIG1fd29ya2VyOworICAgIFJlZlB0cjxX
ZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IG1fYnJpZGdlRm9yTGFzdE9w
ZXJhdGlvbjsKICAgICBTdHJpbmcgbV9tb2RlOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69761</attachid>
            <date>2010-10-05 00:09:27 -0700</date>
            <delta_ts>2010-10-06 01:32:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47044-20101005000926.patch</filename>
            <type>text/plain</type>
            <size>90528</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhM2MxYjhmZDM2MzdjYmNlYWUwMDcxMGMxYmY1OTEyYmM4YTgwMGU0Li5mYWY0ODdm
ODFmZjQxZTkyYTBmZTg5YTk3MGYwNWU3ZDMzN2RhYWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTAtMDEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVt
U3luYyBpbXBsZW1lbnRhdGlvbiBmb3IgV29ya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA0NAorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L2FzeW5jLW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qczoKKyAgICAgICAgKiBmYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlv
bnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQuCisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dDogVXBk
YXRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
eW5jLW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTAtMDktMzAgIEtpbnVrbyBZYXN1ZGEg
IDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJh
dGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25z
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWE4MmZjMDRhOTdkMTNmYzliMDBjNmFkMWRiZjNmYzZhNDE1Zjcy
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1v
cGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9mcy10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTA5MDQx
YTVhOGQ2MmE5ZDJlZGU3Mjk4MjJmOTRhYWUwM2YxMmNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCkBA
IC0wLDAgKzEsMTAyIEBACitkZXNjcmlwdGlvbigiVGVzdCBtYWtpbmcgbXVsdGlwbGUgYXN5bmMg
RmlsZVN5c3RlbSBvcGVyYXRpb25zLiIpOworCit2YXIgZmlsZVN5c3RlbSA9IG51bGw7CisKK3Zh
ciBhOwordmFyIGI7Cit2YXIgYzsKK3ZhciBkOworCit2YXIgcGF0aHMgPSBbXTsKK3ZhciBkaXJz
Q291bnQgPSAwOwordmFyIHJlYWRlciA9IG51bGw7CisKK2Z1bmN0aW9uIGVycm9yQ2FsbGJhY2so
ZXJyb3IpIHsKKyAgICBkZWJ1ZygiR290IGVycm9yOiAiICsgZXJyb3IuY29kZSk7CisgICAgcmVt
b3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbS5yb290KTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30K
KworZnVuY3Rpb24gZW50cmllc0NhbGxiYWNrKGVudHJpZXMpIHsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgcGF0aHMucHVzaChlbnRyaWVz
W2ldLmZ1bGxQYXRoKTsKKyAgICAgICAgaWYgKGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCisgICAg
ICAgICAgICBkaXJzQ291bnQrKzsKKyAgICB9CisgICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkgewor
ICAgICAgICByZWFkZXIucmVhZEVudHJpZXMoZW50cmllc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXRocy5zb3J0KCk7CisgICAgICAgIHNob3VsZEJl
KCciJyArIHBhdGhzLmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCJkaXJzQ291bnQiLCAiMyIpOworICAgICAgICByZW1vdmVSZWN1cnNp
dmVseShmaWxlU3lzdGVtLnJvb3QpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHZlcmlmeSgpIHsKKyAgICBkZWJ1ZygiVmVyaWZ5aW5nIHRoZSBGaWxlU3lz
dGVtIHN0YXR1cy4iKTsKKyAgICByZWFkZXIgPSBmaWxlU3lzdGVtLnJvb3QuY3JlYXRlUmVhZGVy
KCk7CisgICAgcmVhZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFj
ayk7Cit9CisKK2Z1bmN0aW9uIGFzeW5jVGVzdDIoKSB7CisgICAgZGVidWcoIlN0YXJ0aW5nIGFz
eW5jIHRlc3Qgc3RhZ2UgMi4iKTsKKworICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigp
OworICAgIHZhciBkb25lID0gZnVuY3Rpb24oKSB7IGhlbHBlci5kb25lKCk7IH07CisKKyAgICBo
ZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBhLmNvcHlUbyhiLCAndG1wJywgZG9uZSwgZXJyb3JDYWxs
YmFjayk7IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IGEuZ2V0TWV0YWRhdGEoZG9u
ZSwgZXJyb3JDYWxsYmFjayk7IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IGIuZ2V0
UGFyZW50KGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9u
KCkgeyBjLmNvcHlUbyhmaWxlU3lzdGVtLnJvb3QsICdmJywgZG9uZSwgZXJyb3JDYWxsYmFjayk7
IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9v
dCwgJ2QyJywgZG9uZSwgZXJyb3JDYWxsYmFjayk7IH0pOworICAgIGhlbHBlci5ydW4oZnVuY3Rp
b24oKSB7IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSwgZG9uZSwg
ZXJyb3JDYWxsYmFjayk7IH0pOworCisgICAgaGVscGVyLmpvaW4odmVyaWZ5KTsKK30KKworZnVu
Y3Rpb24gYXN5bmNUZXN0MSgpIHsKKyAgICBkZWJ1ZygiU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFn
ZSAxLiIpOworCisgICAgdmFyIGhlbHBlciA9IG5ldyBKb2luSGVscGVyKCk7CisgICAgdmFyIHJv
b3QgPSBmaWxlU3lzdGVtLnJvb3Q7CisKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyByb290
LmdldEZpbGUoJ2EnLCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBh
ID0gZW50cnk7CisgICAgICAgIGhlbHBlci5kb25lKCk7CisgICAgfSwgZXJyb3JDYWxsYmFjayk7
IH0pOworCisgICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXREaXJlY3RvcnkoJ2In
LCB7Y3JlYXRlOnRydWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBiID0gZW50cnk7Cisg
ICAgICAgIGhlbHBlci5kb25lKCk7CisgICAgfSwgZXJyb3JDYWxsYmFjayk7IH0pOworCisgICAg
aGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRy
dWV9LCBmdW5jdGlvbihlbnRyeSkgeworICAgICAgICBjID0gZW50cnk7CisgICAgICAgIGhlbHBl
ci5kb25lKCk7CisgICAgfSwgZXJyb3JDYWxsYmFjayk7IH0pOworCisgICAgaGVscGVyLnJ1bihm
dW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCdkJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50
cnkpIHsKKyAgICAgICAgZCA9IGVudHJ5OworICAgICAgICBoZWxwZXIuZG9uZSgpOworICAgIH0s
IGVycm9yQ2FsbGJhY2spOyB9KTsKKworICAgIGhlbHBlci5qb2luKGFzeW5jVGVzdDIpOworfQor
CitpZiAodGhpcy5yZXF1ZXN0RmlsZVN5c3RlbSkgeworICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigpOworICAgIGhlbHBlci5ydW4oZnVu
Y3Rpb24oKSB7CisgICAgcmVxdWVzdEZpbGVTeXN0ZW0uYXBwbHkodGhpcywgW3RoaXMuVEVNUE9S
QVJZLCAxMDAsIGZ1bmN0aW9uKGZzKSB7CisgICAgICAgIGRlYnVnKCJHb3QgRmlsZVN5c3RlbToi
ICsgZnMubmFtZSk7CisgICAgICAgIGZpbGVTeXN0ZW0gPSBmczsKKyAgICAgICAgcmVtb3ZlUmVj
dXJzaXZlbHkoZmlsZVN5c3RlbS5yb290LCBmdW5jdGlvbigpeyBoZWxwZXIuZG9uZSgpOyB9LCBl
cnJvckNhbGxiYWNrKTsKKyAgICB9LCBlcnJvckNhbGxiYWNrXSk7IH0pOworICAgIGRlYnVnKCJy
ZXF1ZXN0ZWQgRmlsZVN5c3RlbS4iKTsKKyAgICBoZWxwZXIuam9pbihhc3luY1Rlc3QxKTsKK30g
ZWxzZQorICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmlsZVN5c3RlbSBBUEkgc3VwcG9y
dC4iKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJl
LmpzCmluZGV4IDg0ZTBmYWQ5NTE2YjE1MjFjNTQzOGUwY2FjMGZmY2IxZjA4MTdlMGQuLjNlY2Q3
MDkwN2Y0ZTVlNmIzZDBlOWRhNWQ5Zjc4ZmQ3MDAyNDE2NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJl
LmpzCkBAIC0xMCw2ICsxMCw3IEBAIGZ1bmN0aW9uIHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwp
CiB7CiAgICAgZGVidWcoJ1N0YXJ0aW5nIHdvcmtlcjogJyArIHRlc3RTY3JpcHRVUkwpOwogICAg
IHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCcuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5q
cycpOworICAgIHdvcmtlci5wb3N0TWVzc2FnZSgnLi4vcmVzb3VyY2VzL2ZzLXRlc3QtdXRpbC5q
cycpOwogICAgIHdvcmtlci5wb3N0TWVzc2FnZSh0ZXN0U2NyaXB0VVJMKTsKICAgICB3b3JrZXIu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YjU2NWE5YzMyMmM0OWY5MDZjYjVkNjgwNTlmMzU0MzBkMDk2YjMxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJh
dGlvbnMuanMKQEAgLTAsMCArMSwzOCBAQAorZGVzY3JpcHRpb24oIlRlc3QgbWFraW5nIG11bHRp
cGxlIHN5bmNocm9ub3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4iKTsKKwordmFyIGZpbGVTeXN0
ZW0gPSByZXF1ZXN0RmlsZVN5c3RlbVN5bmModGhpcy5URU1QT1JBUlksIDEwMCk7CisKKy8vIFN0
YWdlIDEgKHByZXBhcmUpCit2YXIgYSA9IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKCdhJywge2Ny
ZWF0ZTp0cnVlfSk7Cit2YXIgYiA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2InLCB7
Y3JlYXRlOnRydWV9KTsKK3ZhciBjID0gZmlsZVN5c3RlbS5yb290LmdldERpcmVjdG9yeSgnYycs
IHtjcmVhdGU6dHJ1ZX0pOwordmFyIGQgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnZCcsIHtj
cmVhdGU6dHJ1ZX0pOworCisvLyBTdGFnZSAyICh0ZXN0KQordmFyIGFfY29weSA9IGEuY29weVRv
KGIsICd0bXAnKTsKK3ZhciBtZXRhZGF0YSA9IGEuZ2V0TWV0YWRhdGEoKTsKK3ZhciBiX3BhcmVu
dCA9IGIuZ2V0UGFyZW50KCk7Cit2YXIgY19jb3B5ID0gYy5jb3B5VG8oZmlsZVN5c3RlbS5yb290
LCAnZicpOwordmFyIGRfbmV3ID0gZC5tb3ZlVG8oZmlsZVN5c3RlbS5yb290LCAnZDInKTsKK3Zh
ciBlID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2UnLCB7Y3JlYXRlOnRydWV9KTsKKworLy8g
VmVyaWZ5Cit2YXIgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOwordmFy
IGRpcnNDb3VudCA9IDA7Cit2YXIgcGF0aHMgPSBbXTsKK2RvIHsKKyAgICB2YXIgZW50cmllcyA9
IHJlYWRlci5yZWFkRW50cmllcygpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5s
ZW5ndGg7ICsraSkgeworICAgICAgICBwYXRocy5wdXNoKGVudHJpZXNbaV0uZnVsbFBhdGgpOwor
ICAgICAgICBpZiAoZW50cmllc1tpXS5pc0RpcmVjdG9yeSkKKyAgICAgICAgICAgIGRpcnNDb3Vu
dCsrOworICAgIH0KK30gd2hpbGUgKGVudHJpZXMubGVuZ3RoKTsKKworcGF0aHMuc29ydCgpOwor
c2hvdWxkQmUoJyInICsgcGF0aHMuam9pbignLCcpICsgJyInLCAnIi9hLC9iLC9jLC9kMiwvZSwv
ZiInKTsKK3Nob3VsZEJlKCJkaXJzQ291bnQiLCAiMyIpOworcmVtb3ZlUmVjdXJzaXZlbHkoZmls
ZVN5c3RlbS5yb290KTsKK2ZpbmlzaEpTVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJl
ZDY4ZDI5MTE3ZmZjMWNlMmIzNDI0NWE0ZjEwM2RhMWRjOWIwOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMgcnVubmluZyBtdWx0aXBsZSBh
c3luYyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgaW4gV29ya2VyLgorCitTdGFydGluZyB3b3JrZXI6
IC4uL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCitEZXNjcmlwdGlvbjogVGVzdCBtYWtp
bmcgbXVsdGlwbGUgYXN5bmMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLgorcmVxdWVzdGVkIEZpbGVT
eXN0ZW0uCitHb3QgRmlsZVN5c3RlbTpodHRwX2xvY2FsaG9zdF84MDgwOlRlbXBvcmFyeQorU3Rh
cnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAxLgorU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAyLgor
VmVyaWZ5aW5nIHRoZSBGaWxlU3lzdGVtIHN0YXR1cy4KK1BBU1M6ICIvYSwvYiwvYywvZDIsL2Us
L2YiIGlzICIvYSwvYiwvYywvZDIsL2UsL2YiCitQQVNTOiBkaXJzQ291bnQgaXMgMworRE9ORQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTdjYzRmNjQ2
MzNiOGE5ZGQ2NmQ3MGJjMWExN2IwMmRlZWQ0YWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy5odG1sCkBAIC0w
LDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2Zz
LXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9m
cy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcnVubmluZyBtdWx0aXBsZSBhc3luYyBmaWxlc3lzdGVt
IG9wZXJhdGlvbnMgaW4gV29ya2VyLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KK3N0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcycpOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0
ZW50LXN5bmMtZXhwZWN0ZWQudHh0CmluZGV4IDIzZWJmYmQ0YjY5NDYwMjQ4NDI3ZGM1NzAyN2Iy
YzY1MmM5OWYzYzIuLmFhMmE5YWFjYjg5MjMxYTY3MDRlMTFlNmMzNDkyZTI3ZDBmZDQ2NTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJz
aXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIs
MTAgQEAgVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBFUlNJU1RFTlQgRmlsZVN5c3RlbVN5bmMgaW4g
V29ya2VyLgogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVu
dC1zeW5jLmpzCiBEZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFBFUlNJU1RFTlQg
dGVzdC4KLUdvdCBlcnJvciBmcm9tIHdvcmtlcjogVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IHJl
cXVlc3RGaWxlU3lzdGVtU3luYyBpcyBub3QgZGVmaW5lZAorU3VjY2Vzc2Z1bGx5IG9idGFpbmVk
IFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpodHRwX2xvY2FsaG9zdF84MDgwOlBlcnNpc3RlbnQKK1BB
U1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1M6IGZpbGVTeXN0ZW0u
cm9vdC5mdWxsUGF0aCBpcyAiLyIKK0RPTkUKIAogVEVTVCBDT01QTEVURQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5
bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAppbmRleCAwZTIxYzAyODM0MWM4YjkwNmI2
ZjNiNjIzMzU0N2IwODBiYzhjOTFlLi5iYmM1YTAyNmNmOTRjNmFjNDQzMzY0NThmOTg3YzE5ZTI0
YWI4NzYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
aW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQKQEAg
LTIsNyArMiwxMCBAQCBUaGlzIHRlc3RzIHJlcXVlc3RpbmcgVEVNUE9SQVJZIEZpbGVTeXN0ZW1T
eW5jIGluIFdvcmtlci4KIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXRl
bXBvcmFyeS1zeW5jLmpzCiBEZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRFTVBP
UkFSWSB0ZXN0LgotR290IGVycm9yIGZyb20gd29ya2VyOiBVbmNhdWdodCBSZWZlcmVuY2VFcnJv
cjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIGlzIG5vdCBkZWZpbmVkCitTdWNjZXNzZnVsbHkgb2J0
YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06aHR0cF9sb2NhbGhvc3RfODA4MDpUZW1wb3JhcnkK
K1BBU1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1M6IGZpbGVTeXN0
ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK0RPTkUKIAogVEVTVCBDT01QTEVURQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1v
cGVyYXRpb25zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzg1NWQ1ZDZlMzJlNzhhMDM2NjE2
MjE2NjEyZjlkNjdhZTQyMmE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lzdGVtIG9wZXJh
dGlvbnMgaW4gV29ya2VyLgorCitTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zeW5jLW9w
ZXJhdGlvbnMuanMKK0Rlc2NyaXB0aW9uOiBUZXN0IG1ha2luZyBtdWx0aXBsZSBzeW5jaHJvbm91
cyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCitQQVNTOiAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAi
L2EsL2IsL2MsL2QyLC9lLC9mIgorUEFTUzogZGlyc0NvdW50IGlzIDMKK0RPTkUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zeW5jLW9wZXJhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyYWRmMDQ1MjJiNjY4OTg4ODA2
MDI0YTQzODAzODNjNDFkYThmNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRtbApAQCAtMCwwICsxLDE1IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29t
bW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij5UaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMg
aW4gV29ya2VyLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK3N0YXJ0
V29ya2VyKCcuLi9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzJyk7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMTNkMTM2NWU3YzU1ZTRlYjEwOWQyMWY3NDNmYWQ1MDVmZWJi
MWFlZS4uYjgwMDQ3MjY3ODllNmUzMTkyYjE5NDBhMDk0NzQ2OWVkOTg0YzFjOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5
MyBAQAorMjAxMC0xMC0wMSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEZpbGVT
eXN0ZW1TeW5jIGltcGxlbWVudGF0aW9uIGZvciBXb3JrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDQ0CisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6IFJlbW92ZWQKKyAgICAgICAgcmVxdWVz
dEZpbGVTeXN0ZW1FbmFibGVkKCkgYXMgSSBjaGFuZ2VkIHRoZSBpZGwvZ2VuZXJhdG9yIHRvCisg
ICAgICAgIHVzZSBmaWxlU3lzdGVtRW5hYmxlZCBmb3IgYWxsIHRoZSBGaWxlU3lzdGVtIHJlbGF0
ZWQgZmVhdHVyZXMuCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVT
eXN0ZW1CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRN
ZXRhZGF0YSk6IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6OmNo
ZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKTogTW92ZWQgZnJvbSBET01GaWxlU3lzdGVtLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUpOiBNb3ZlZCBmcm9tIERP
TUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Y29weSk6
IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW1CYXNlOjpyZW1vdmUpOiBNb3ZlZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJD
b3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KTogTW92ZWQgZnJvbSBET01GaWxlU3lz
dGVtLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OmdldEZpbGUpOiBNb3Zl
ZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFz
ZTo6Z2V0RGlyZWN0b3J5KTogTW92ZWQgZnJvbSBET01GaWxlU3lzdGVtLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OnJlYWREaXJlY3RvcnkpOiBNb3ZlZCBmcm9tIERPTUZp
bGVTeXN0ZW0uCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oOgorICAgICAg
ICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVj
dG9yeUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5OjpEaXJlY3Rv
cnlFbnRyeSk6IFVwZGF0ZWQgdG8gY2FsbAorICAgICAgICBET01GaWxlU3lzdGVtQmFzZSdzIG1l
dGhvZCBpbnN0ZWFkIG9mIERPTUZpbGVTeXN0ZW0ncyBvbmUuCisgICAgICAgIChXZWJDb3JlOjpE
aXJlY3RvcnlFbnRyeTo6Z2V0RmlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0
b3J5RW50cnk6OmdldERpcmVjdG9yeSk6IERpdHRvLgorICAgICAgICAqIGZpbGVhcGkvRGlyZWN0
b3J5RW50cnkuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUpOiBJbXBsZW1lbnRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5U3luYzo6Z2V0RGlyZWN0b3J5KTog
SW1wbGVtZW50ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAg
KiBmaWxlYXBpL0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5OjpFbnRyeSk6IFVw
ZGF0ZWQgdG8gY2FsbCBET01GaWxlU3lzdGVtQmFzZSdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVudHJ5OjpnZXRNZXRhZGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6
Om1vdmVUbyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmNvcHlUbyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OnJlbW92ZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6RW50cnk6OmdldFBhcmVudCk6IERpdHRvLgorICAgICAgICAqIGZpbGVhcGkvRW50cnku
aDoKKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5LmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5
QXJyYXlTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5QXJyYXlTeW5jOjpjcmVhdGUp
OiBBZGRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QXJyYXlTeW5jLmg6CisgICAgICAgICog
ZmlsZWFwaS9FbnRyeUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5QmFzZTo6ZmlsZXN5
c3RlbSk6IEFkZGVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlTeW5jLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVudHJ5U3luYzo6Y3JlYXRlKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFbnRyeVN5bmM6OmdldE1ldGFkYXRhKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFbnRyeVN5bmM6Om1vdmVUbyk6IEltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6
RW50cnlTeW5jOjpjb3B5VG8pOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVudHJ5
U3luYzo6cmVtb3ZlKTogSW1wbGVtZW50ZWQuCisgICAgICAgICogZmlsZWFwaS9FbnRyeVN5bmMu
aDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVFbnRyeS5jcHA6CisgICAgICAgICogZmlsZWFwaS9G
aWxlRW50cnkuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RW50cnlDYWxsYmFja3M6OmNyZWF0ZSk6IFVwZGF0ZWQgdG8gdGFr
ZSBET01GaWxlU3lzdGVtQmFzZQorICAgICAgICBpbnN0ZWFkIG9mIERPTUZpbGVTeXN0ZW0uCisg
ICAgICAgIChXZWJDb3JlOjpFbnRyeUNhbGxiYWNrczo6RW50cnlDYWxsYmFja3MpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RW50cmllc0NhbGxiYWNrczo6RW50cmllc0NhbGxiYWNrcyk6IERpdHRv
LgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oOgorICAgICAgICAqIGZp
bGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsRmlsZVN5
c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0pOiBBZGRlZCBzeW5jaHJvbm91cworICAgICAgICBwYXJh
bWV0ZXIuCisgICAgICAgICogZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBm
aWxlYXBpL01ldGFkYXRhLmg6CisgICAgICAgICogZmlsZWFwaS9TeW5jQ2FsbGJhY2tIZWxwZXIu
aDogQWRkZWQuIFRoaXMgZGVmaW5lcyBhIGhlbHBlciB0ZW1wbGF0ZQorICAgICAgICBmb3Igc3lu
Y2hyb25vdXMgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgor
ICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNGaWxlU3lzdGVtOjp3YWl0Q29tcGxldGlvbik6IEFkZGVkLgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0Ojpy
ZXF1ZXN0RmlsZVN5c3RlbVN5bmMpOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNv
bnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOgorCiAyMDEwLTA5
LTMwICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDhkMjRhMWI5MGRhMmY2MGFjOTAxMjdk
YzUwYmFiM2E1MmEyYmI3ODEuLjljODA0ZGM0NDU0MGRkODM5ZjMwZmNlYWJhNzgzYTZmM2IzYmY1
NGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQpAQCAtMTQyNCw2ICsxNDI0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmggXAogCVdlYkNvcmUvZmlsZWFwaS9NZXRh
ZGF0YUNhbGxiYWNrLmggXAogCVdlYkNvcmUvZmlsZWFwaS9NZXRhZGF0YS5oIFwKKwlXZWJDb3Jl
L2ZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmggXAogCVdlYkNvcmUvZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcCBcCiAJV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuaCBcCiAJV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudC5o
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMTI0YjBkM2JkMDE5N2NjYTBiOTA5NzAxYWZlMjNkMWQ5OWRiMmUyYS4uMjQwYWQ2
MmU1M2ZmZmRiMTlmMGY4NWJiZGEzZjUxYTY1NmMyNGUxMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTk2LDYgKzk2LDcgQEAK
ICAgICAgICAgICAgICdmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmlkbCcsCiAgICAgICAgICAg
ICAnZmlsZWFwaS9FbnRyaWVzQ2FsbGJhY2suaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0Vu
dHJ5LmlkbCcsCisgICAgICAgICAgICAnZmlsZWFwaS9FbnRyeVN5bmMuaWRsJywKICAgICAgICAg
ICAgICdmaWxlYXBpL0VudHJ5QXJyYXkuaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0VudHJ5
QXJyYXlTeW5jLmlkbCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9FbnRyeUNhbGxiYWNrLmlkbCcs
CkBAIC0xNTE4LDYgKzE1MTksNyBAQAogICAgICAgICAgICAgJ2ZpbGVhcGkvTG9jYWxGaWxlU3lz
dGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAn
ZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ2ZpbGVhcGkvU3luY0Nh
bGxiYWNrSGVscGVyLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
JywKICAgICAgICAgICAgICdoaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbScsCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAwOWYx
NjA1YzNlYjk0NjgyY2JmOWEyODZlN2Y5OTcyMjgzNWMyMGY2Li44MTExZGU0OGYwYjRiNzAyZGQ2
ZjUwMGRlMmIyZmI1ZmJlOGIxMzM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI5OTQsNiArMjk5NCw3IEBAIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9GSUxFX1NZU1RFTT0xKSB7CiAgICAgICAgIGZpbGVhcGkvTG9jYWxGaWxl
U3lzdGVtLmggXAogICAgICAgICBmaWxlYXBpL01ldGFkYXRhLmggXAogICAgICAgICBmaWxlYXBp
L01ldGFkYXRhQ2FsbGJhY2suaCBcCisgICAgICAgIGZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVy
LmggXAogICAgICAgICBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBcCiAgICAgICAgIHBsYXRm
b3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IGFjODRmMGE4MGE0ZjM1ZmFjZjAzMzM1NGRjYWNmY2Y3MmQzYzc0YmMu
LmMzMTE3MDk5NGExNmQ2MDYyNGQ4ZDU4ZWUyNjUzMzVlYmNlNDVkN2YgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDI2MjksNiArNDI2MjksMTAgQEAKIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZmlsZWFwaVxTeW5j
Q2FsbGJhY2tIZWxwZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGZpbGVhcGlcVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAiDQogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyM2UwNzI4NmI2OGMxMjE2OTUxODI4NGI3ODVjNGRiZTM4Njg2NTExLi4xZWU1MmVm
Y2I0OTBjZjUwZGYwNjI5ZTNiZTZmOGE3MDJmZDczNTdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ1Myw2ICsyNDUzLDcgQEAKIAkJODVGRjMxNUIw
QUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzggLyog
RE9NS2V5Ym9hcmRFdmVudC5tbSAqLzsgfTsKIAkJODYyNDNEMDExMUJDMzFGNzAwQ0MwMDZBIC8q
IEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZl
clZpZXdIZWxwZXIuaCAqLzsgfTsKIAkJODkwQUUwRTExMjU2QTA3OTAwRjU5NjhDIC8qIERpcmVj
dG9yeVJlYWRlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmgg
Ki87IH07CisJCTg5MEFFMEYxMTI1NzEyQjEwMEY1OTY4QyAvKiBTeW5jQ2FsbGJhY2tIZWxwZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5MEFFMEYw
MTI1NzEyQjEwMEY1OTY4QyAvKiBTeW5jQ2FsbGJhY2tIZWxwZXIuaCAqLzsgfTsKIAkJODkzQzQ3
QTcxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3QTUxMjM4OTA4QjAwMkIzRDg2IC8qIEZp
bGVDYWxsYmFjay5oICovOyB9OwogCQk4OTNDNDdBODEyMzg5MDhCMDAyQjNEODYgLyogRmlsZVdy
aXRlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4OTNDNDdBNjEyMzg5MDhCMDAyQjNEODYgLyogRmlsZVdyaXRlckNhbGxiYWNrLmggKi87
IH07CiAJCTg5M0M0N0I3MTIzOEEwOTkwMDJCM0Q4NiAvKiBKU0ZpbGVDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdCNTEyMzhB
MDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2suY3BwICovOyB9OwpAQCAtODQ4Niw2ICs4NDg3
LDcgQEAKIAkJODVGRjMxNTkwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NS2V5Ym9hcmRFdmVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYyNDNEMDAxMUJDMzFGNzAwQ0Mw
MDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERpcmVjdG9yeVJlYWRlckJhc2Uu
aDsgcGF0aCA9IGZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4OTBBRTBGMDEyNTcxMkIxMDBGNTk2OEMgLyogU3luY0NhbGxiYWNrSGVs
cGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN5bmNDYWxsYmFja0hlbHBl
ci5oOyBwYXRoID0gZmlsZWFwaS9TeW5jQ2FsbGJhY2tIZWxwZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODkzQzQ3QTUxMjM4OTA4QjAwMkIzRDg2IC8qIEZpbGVDYWxsYmFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlQ2FsbGJhY2suaDsgcGF0aCA9
IGZpbGVhcGkvRmlsZUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5
M0M0N0E2MTIzODkwOEIwMDJCM0Q4NiAvKiBGaWxlV3JpdGVyQ2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVdyaXRlckNhbGxiYWNrLmg7IHBhdGggPSBmaWxl
YXBpL0ZpbGVXcml0ZXJDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
OTNDNDdCNTEyMzhBMDk5MDAyQjNEODYgLyogSlNGaWxlQ2FsbGJhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4NjIsNiArMTQ4NjQsNyBAQAogCQkJCTg5ODc4NTRGMTIy
Q0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVTeXN0ZW0uaCAqLywKIAkJCQk4OTg3ODU1MDEyMkNB
MDY0MDAzQUFCREEgLyogTWV0YWRhdGEuaCAqLywKIAkJCQk4OTg3ODU1MTEyMkNBMDY0MDAzQUFC
REEgLyogTWV0YWRhdGFDYWxsYmFjay5oICovLAorCQkJCTg5MEFFMEYwMTI1NzEyQjEwMEY1OTY4
QyAvKiBTeW5jQ2FsbGJhY2tIZWxwZXIuaCAqLywKIAkJCQk5NzZENkM3NTEyMkI4QTNEMDAxRkQx
RjcgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgKi8sCiAJCQkJOTc2RDZDNzYxMjJCOEEz
RDAwMUZEMUY3IC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCAqLywKIAkJCSk7CkBAIC0yMTAy
Nyw2ICsyMTAzMCw3IEBACiAJCQkJODkzQzQ4M0IxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRW50cnlT
eW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTNDNDgzRDEyNDk1NDcyMDAyQjNEODYgLyogSlNG
aWxlRW50cnlTeW5jLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTBBRTBFMTEyNTZBMDc5MDBGNTk2
OEMgLyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODkwQUUwRjEx
MjU3MTJCMTAwRjU5NjhDIC8qIFN5bmNDYWxsYmFja0hlbHBlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApp
bmRleCA4ODM1MGM3MTAxMWM5MWExNzQ2ODBjZTU1ZDk4MjMyN2MwMWExNGExLi40ZTcxZGUyYzdj
MTlkMjAyNjdiNWMyZjRhZDFlNjM0NzdhZWYwZDBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE1MCw3ICsxNTAsNiBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIHN0YXRpYyBib29sIGZpbGVTeXN0
ZW1FbmFibGVkKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0RmlsZVN5c3RlbUVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRp
YyBib29sIHJlcXVlc3RGaWxlU3lzdGVtRW5hYmxlZCgpIHsgcmV0dXJuIGlzRmlsZVN5c3RlbUVu
YWJsZWQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBp
L0RPTUZpbGVTeXN0ZW0uY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmlu
ZGV4IDE3NDI4NDJkYTMxZjllMGRjZGVmZTgxYmEzM2U3YzYxMTJjOWQ4OTQuLmIyZGYxM2I2YmI3
NmVjYTY2Yjk2NzcxYzRkMmJiNTFiNjIzMDVhMWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5j
cHAKQEAgLTM2LDE5ICszNiwxMyBAQAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNs
dWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJFbnRyeS5oIgotI2luY2x1ZGUgIkVu
dHJ5QXJyYXkuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JD
YWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgotI2luY2x1ZGUgIkZpbGVFcnJvci5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJGaWxlV3JpdGVy
LmgiCiAjaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFD
YWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRl
ICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTgwLDEyNCArNzQsNiBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmNvbnRleHRE
ZXN0cm95ZWQoKQogICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwogfQog
Ci12b2lkIERPTUZpbGVTeXN0ZW06OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFz
c1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0g
bV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChlbnRyeS0+ZnVsbFBhdGgo
KSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIE1l
dGFkYXRhQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7
Ci19Ci0KLXN0YXRpYyBib29sIGNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKGNvbnN0IEVu
dHJ5KiBzcmMsIEVudHJ5KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkKLXsKLSAgICBB
U1NFUlQoc3JjKTsKLQotICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlzRGlyZWN0b3J5KCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkgJiYg
IURPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShuZXdOYW1lKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRy
eSBpbnNpZGUgaXRzZWxmIGF0IGFueSBkZXB0aCBpZiBpdCBpcyBhIGRpcmVjdG9yeS4KLSAgICBp
ZiAoc3JjLT5pc0RpcmVjdG9yeSgpICYmIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKHNyYy0+ZnVs
bFBhdGgoKSwgcGFyZW50LT5mdWxsUGF0aCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBh
cmVudCBpZiBhIG5hbWUgZGlmZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3Zp
ZGVkLgotICAgIGlmICgobmV3TmFtZS5pc0VtcHR5KCkgfHwgc3JjLT5uYW1lKCkgPT0gbmV3TmFt
ZSkgJiYgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShzcmMtPmZ1bGxQYXRoKCkpID09IHBhcmVu
dC0+ZnVsbFBhdGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6bW92ZShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVm
UHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNy
YywgcGFyZW50LmdldCgpLCBuZXdOYW1lKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUo
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBTdHJpbmcgZGVzdFBhdGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0gICAgaWYgKCFuZXdOYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQ
YXRoLCBuZXdOYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6
OmFwcGVuZChkZXN0UGF0aCwgc3JjLT5uYW1lKCkpOwotCi0gICAgU3RyaW5nIHNyY1BsYXRmb3Jt
UGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc3JjLT5mdWxs
UGF0aCgpKTsKLSAgICBTdHJpbmcgZGVzdFBsYXRmb3JtUGF0aCA9IHBhcmVudC0+ZmlsZXN5c3Rl
bSgpLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RQYXRoKTsK
LSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+bW92ZShzcmNQbGF0Zm9ybVBhdGgsIGRlc3RQbGF0Zm9y
bVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCB0aGlzLCBkZXN0UGF0aCwgc3JjLT5pc0RpcmVjdG9yeSgpKSk7Ci19Ci0KLXZvaWQgRE9N
RmlsZVN5c3RlbTo6Y29weShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJl
bnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsK
LSAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNyYywgcGFyZW50LmdldCgp
LCBuZXdOYW1lKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklD
QVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZGVzdFBh
dGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0gICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSkKLSAg
ICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQYXRoLCBuZXdOYW1lKTsK
LSAgICBlbHNlCi0gICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0
aCwgc3JjLT5uYW1lKCkpOwotCi0gICAgU3RyaW5nIHNyY1BsYXRmb3JtUGF0aCA9IG1fYXN5bmNG
aWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc3JjLT5mdWxsUGF0aCgpKTsKLSAgICBT
dHJpbmcgZGVzdFBsYXRmb3JtUGF0aCA9IHBhcmVudC0+ZmlsZXN5c3RlbSgpLT5hc3luY0ZpbGVT
eXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RQYXRoKTsKLSAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+Y29weShzcmNQbGF0Zm9ybVBhdGgsIGRlc3RQbGF0Zm9ybVBhdGgsIEVudHJ5Q2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0
UGF0aCwgc3JjLT5pc0RpcmVjdG9yeSgpKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6cmVt
b3ZlKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAg
IEFTU0VSVChlbnRyeSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lz
dGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOwotICAgIG1fYXN5
bmNGaWxlU3lzdGVtLT5yZW1vdmUocGxhdGZvcm1QYXRoLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3Rl
bTo6Z2V0UGFyZW50KGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKLXsKLSAgICBBU1NFUlQoZW50cnkpOwotICAgIFN0cmluZyBwYXRoID0gRE9NRmlsZVBhdGg6
OmdldERpcmVjdG9yeShlbnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0
aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCk7Ci0gICAg
bV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9ybVBhdGgsIEVudHJ5Q2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBwYXRo
LCB0cnVlKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RmlsZShjb25zdCBFbnRyeSog
YmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoYmFzZSk7Ci0gICAgaWYgKCFET01G
aWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpIHsKLSAgICAgICAgc2NoZWR1bGVDYWxsYmFjayhz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRl
KElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgU3RyaW5nIGFic29sdXRlUGF0aCA9IHBhdGg7Ci0gICAgaWYgKCFET01GaWxlUGF0aDo6aXNB
YnNvbHV0ZShwYXRoKSkKLSAgICAgICAgYWJzb2x1dGVQYXRoID0gRE9NRmlsZVBhdGg6OnJlbW92
ZUV4dHJhUGFyZW50UmVmZXJlbmNlcyhET01GaWxlUGF0aDo6YXBwZW5kKGJhc2UtPmZ1bGxQYXRo
KCksIHBhdGgpKTsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0t
PnZpcnR1YWxUb1BsYXRmb3JtUGF0aChhYnNvbHV0ZVBhdGgpOwotCi0gICAgT3duUHRyPEVudHJ5
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCBmYWxzZSk7Ci0gICAgaWYg
KGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQotICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
Y3JlYXRlRmlsZShwbGF0Zm9ybVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3Mu
cmVsZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhp
c3RzKHBsYXRmb3JtUGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgRE9NRmls
ZVN5c3RlbTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQot
ewotICAgIEFTU0VSVChiYXNlKTsKLSAgICBpZiAoIURPTUZpbGVQYXRoOjppc1ZhbGlkUGF0aChw
YXRoKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgYWJzb2x1dGVQYXRo
ID0gcGF0aDsKLSAgICBpZiAoIURPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKQotICAgICAg
ICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2Vz
KERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOwotICAgIFN0cmlu
ZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRo
KGFic29sdXRlUGF0aCk7Ci0KLSAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0
aGlzLCBhYnNvbHV0ZVBhdGgsIHRydWUpOwotICAgIGlmIChmbGFncyAmJiBmbGFncy0+aXNDcmVh
dGUoKSkKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShwbGF0Zm9y
bVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICBl
bHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMocGxhdGZvcm1Q
YXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLX0KLQogdm9pZCBET01GaWxlU3lzdGVtOjpjcmVh
dGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCiB7CiAgICAgQVNTRVJUKGZpbGUpOwpAQCAtMjA5LDEzICs4NSw2IEBAIHZvaWQgRE9N
RmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0
cjxGaWxlV3JpdGVyQ2FsCiAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVdyaXRlcihmaWxl
V3JpdGVyLmdldCgpLCBwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogfQogCi12
b2lkIERPTUZpbGVTeXN0ZW06OnJlYWREaXJlY3RvcnkoRGlyZWN0b3J5UmVhZGVyKiByZWFkZXIs
IGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQotewotICAg
IEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSk7Ci0gICAgU3RyaW5nIHBsYXRm
b3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCk7
Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGxhdGZvcm1QYXRoLCBFbnRy
aWVzQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCByZWFk
ZXIsIHBhdGgpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxF
X1NZU1RFTSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmggYi9X
ZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDkwOGMxNmM5NDNlY2FkZjY5MTIz
MmM2MDQ0YWRjZWFkZDU0OWJjYWIuLjBlZjJlMGY3ZTVmMGMzMTYyY2ZmY2RlYWNlMjA3ODYzMjU1
ODJlN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgKKysrIGIv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtMzQsMjYgKzM0LDE0IEBACiAjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5j
bHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2UuaCIK
LSNpbmNsdWRlICJGbGFncy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBEaXJlY3RvcnlFbnRyeTsKLWNsYXNzIERpcmVjdG9yeVJlYWRlcjsKLWNsYXNzIEVudHJ5
OwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVudHJpZXNDYWxsYmFjazsKLWNsYXNzIEVy
cm9yQ2FsbGJhY2s7CiBjbGFzcyBGaWxlRW50cnk7CiBjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2s7
Ci1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgVm9pZENhbGxiYWNrOwogCiBjbGFzcyBE
T01GaWxlU3lzdGVtIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlLCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTY5LDE1ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKTsKIAotICAgIC8vIEFjdHVhbCBGaWxlU3lzdGVtIEFQSSBpbXBsZW1lbnRh
dGlvbnMuICBBbGwgdGhlIHZhbGlkaXR5IGNoZWNrcyBvbiB2aXJ0dWFsIHBhdGhzIGFyZSBkb25l
IGF0IERPTUZpbGVTeXN0ZW0gbGV2ZWwuCi0gICAgdm9pZCBnZXRNZXRhZGF0YShjb25zdCBFbnRy
eSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwotICAgIHZvaWQgbW92ZShj
b25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
Pik7Ci0gICAgdm9pZCBjb3B5KGNvbnN0IEVudHJ5KiBzcmMsIFBhc3NSZWZQdHI8RW50cnk+IHBh
cmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHJlbW92ZShjb25zdCBFbnRyeSogZW50
cnksIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7
Ci0gICAgdm9pZCBnZXRQYXJlbnQoY29uc3QgRW50cnkqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIGdldEZpbGUo
Y29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4s
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwot
ICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHJlYWREaXJlY3RvcnkoRGlyZWN0b3J5UmVh
ZGVyKiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAgICB2b2lkIGNyZWF0ZVdyaXRlcihj
b25zdCBGaWxlRW50cnkqIGZpbGUsIFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAKICAgICAvLyBTY2hlZHVsZSBhIGNhbGxiYWNrLiBU
aGlzIHNob3VsZCBub3QgY3Jvc3MgdGhyZWFkcyAoc2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgc2Ft
ZSBjb250ZXh0IHRocmVhZCkuCkBAIC05NSw3ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgRE9NRmls
ZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogCiAgICAgLy8gQSBoZWxwZXIgdGVtcGxhdGUgdG8g
c2NoZWR1bGUgYSBjYWxsYmFjayB0YXNrLgotICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBt
b3JlIGdlbmVyaWMgcGxhY2UuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENCLCB0eXBlbmFtZSBD
QkFyZz4KICAgICBjbGFzcyBEaXNwYXRjaENhbGxiYWNrVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Zp
bGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW1CYXNlLmNwcAppbmRleCBiNjk4ODJkMTYwYWQ5ZThiNDRiZjUzNGJhM2JiMWI1MjMyM2EyNzIx
Li5lZDg3MDcwOTg4YmMxNzcwNGE1ZTc4ZDY2ZDZiYmY3OWI2ZTc1NzIzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTM0LDYgKzM0LDE2IEBACiAjaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKKyNpbmNsdWRlICJEaXJlY3Rv
cnlFbnRyeS5oIgorI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVudHJ5
QXJyYXkuaCIKKyNpbmNsdWRlICJFbnRyeUJhc2UuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgor
I2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw2ICs1OCwxMzEgQEAgRE9NRmlsZVN5c3Rl
bUJhc2U6On5ET01GaWxlU3lzdGVtQmFzZSgpCiB7CiB9CiAKK2Jvb2wgRE9NRmlsZVN5c3RlbUJh
c2U6OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRh
dGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVy
cm9yQ2FsbGJhY2spCit7CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lz
dGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOworICAgIG1fYXN5
bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBNZXRhZGF0YUNhbGxiYWNr
czo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIHJldHVybiB0
cnVlOworfQorCitzdGF0aWMgYm9vbCBjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShjb25z
dCBFbnRyeUJhc2UqIHNyYywgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFt
ZSkKK3sKKyAgICBBU1NFUlQoc3JjKTsKKworICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmlz
RGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbmV3TmFtZS5p
c0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShuZXdOYW1lKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IHRvIGNvcHkgb3Ig
bW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxmIGF0IGFueSBkZXB0aCBpZiBpdCBpcyBhIGRpcmVj
dG9yeS4KKyAgICBpZiAoc3JjLT5pc0RpcmVjdG9yeSgpICYmIERPTUZpbGVQYXRoOjppc1BhcmVu
dE9mKHNyYy0+ZnVsbFBhdGgoKSwgcGFyZW50LT5mdWxsUGF0aCgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5
IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlmZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25l
IGlzbid0IHByb3ZpZGVkLgorICAgIGlmICgobmV3TmFtZS5pc0VtcHR5KCkgfHwgc3JjLT5uYW1l
KCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShzcmMtPmZ1bGxQYXRo
KCkpID09IHBhcmVudC0+ZnVsbFBhdGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUoY29uc3QgRW50
cnlCYXNlKiBzcmMsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFBh
c3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFjaGVja1ZhbGlkaXR5Rm9yRm9y
Q29weU9yTW92ZShzcmMsIHBhcmVudCwgbmV3TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFN0cmluZyBkZXN0UGF0aCA9IHBhcmVudC0+ZnVsbFBhdGgoKTsKKyAgICBpZiAoIW5l
d05hbWUuaXNFbXB0eSgpKQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRoOjphcHBlbmQo
ZGVzdFBhdGgsIG5ld05hbWUpOworICAgIGVsc2UKKyAgICAgICAgZGVzdFBhdGggPSBET01GaWxl
UGF0aDo6YXBwZW5kKGRlc3RQYXRoLCBzcmMtPm5hbWUoKSk7CisKKyAgICBTdHJpbmcgc3JjUGxh
dGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChzcmMt
PmZ1bGxQYXRoKCkpOworICAgIFN0cmluZyBkZXN0UGxhdGZvcm1QYXRoID0gcGFyZW50LT5maWxl
c3lzdGVtKCktPmFzeW5jRmlsZVN5c3RlbSgpLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZGVzdFBh
dGgpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5tb3ZlKHNyY1BsYXRmb3JtUGF0aCwgZGVzdFBs
YXRmb3JtUGF0aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2ssIHRoaXMsIGRlc3RQYXRoLCBzcmMtPmlzRGlyZWN0b3J5KCkpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y29weShjb25zdCBFbnRyeUJh
c2UqIHNyYywgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5
T3JNb3ZlKHNyYywgcGFyZW50LCBuZXdOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgU3RyaW5nIGRlc3RQYXRoID0gcGFyZW50LT5mdWxsUGF0aCgpOworICAgIGlmICghbmV3TmFt
ZS5pc0VtcHR5KCkpCisgICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0
UGF0aCwgbmV3TmFtZSk7CisgICAgZWxzZQorICAgICAgICBkZXN0UGF0aCA9IERPTUZpbGVQYXRo
OjphcHBlbmQoZGVzdFBhdGgsIHNyYy0+bmFtZSgpKTsKKworICAgIFN0cmluZyBzcmNQbGF0Zm9y
bVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKHNyYy0+ZnVs
bFBhdGgoKSk7CisgICAgU3RyaW5nIGRlc3RQbGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVzeXN0
ZW0oKS0+YXN5bmNGaWxlU3lzdGVtKCktPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0UGF0aCk7
CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNvcHkoc3JjUGxhdGZvcm1QYXRoLCBkZXN0UGxhdGZv
cm1QYXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaywgdGhpcywgZGVzdFBhdGgsIHNyYy0+aXNEaXJlY3RvcnkoKSkpOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmUoY29uc3QgRW50cnlCYXNl
KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7
CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9Q
bGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5y
ZW1vdmUocGxhdGZvcm1QYXRoLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVN5
c3RlbUJhc2U6OmdldFBhcmVudChjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7CisgICAgU3RyaW5nIHBhdGggPSBE
T01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVudHJ5LT5mdWxsUGF0aCgpKTsKKyAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChw
YXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0
aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHRoaXMsIHBhdGgsIHRydWUpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxl
U3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBFbnRyeUJhc2UqIGJhc2UsIGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
Cit7CisgICAgQVNTRVJUKGJhc2UpOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRo
KHBhdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgYWJzb2x1dGVQYXRo
ID0gcGF0aDsKKyAgICBpZiAoIURPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKQorICAgICAg
ICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2Vz
KERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOworICAgIFN0cmlu
ZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRo
KGFic29sdXRlUGF0aCk7CisKKyAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0
aGlzLCBhYnNvbHV0ZVBhdGgsIGZhbHNlKTsKKyAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3Jl
YXRlKCkpCisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKHBsYXRmb3JtUGF0
aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGVsc2UK
KyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmZpbGVFeGlzdHMocGxhdGZvcm1QYXRoLCBjYWxs
YmFja3MucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lz
dGVtQmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFzZSogYmFzZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKK3sKKyAgICBBU1NFUlQoYmFzZSk7CisgICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBh
dGgocGF0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBhYnNvbHV0ZVBh
dGggPSBwYXRoOworICAgIGlmICghRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAg
ICAgIGFic29sdXRlUGF0aCA9IERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5j
ZXMoRE9NRmlsZVBhdGg6OmFwcGVuZChiYXNlLT5mdWxsUGF0aCgpLCBwYXRoKSk7CisgICAgU3Ry
aW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBh
dGgoYWJzb2x1dGVQYXRoKTsKKworICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHRoaXMsIGFic29sdXRlUGF0aCwgdHJ1ZSk7CisgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0Ny
ZWF0ZSgpKQorICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KHBsYXRm
b3JtUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAg
IGVsc2UKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9y
bVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IERPTUZpbGVTeXN0ZW1CYXNlOjpyZWFkRGlyZWN0b3J5KERpcmVjdG9yeVJlYWRlckJhc2UqIHJl
YWRlciwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7
CisgICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKTsKKyAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChw
YXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwbGF0Zm9ybVBhdGgs
IEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHJlYWRlciwgcGF0aCkpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuaCBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtQmFzZS5oCmluZGV4IGU3MTRkOGQxN2FjMWNiMTk0ODA5YjQzNDhhMjE1YWRlYmVkODEx
NjcuLjc3M2U3MTRjMGZlYzA5N2Y0MWM0ZTZiNGU3Mjk3ZGI2NWY1Mjc4MGEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oCisrKyBiL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5oCkBAIC0zNCwxMiArMzQsMjIgQEAKICNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJGbGFn
cy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIERpcmVjdG9yeUVudHJ5OworY2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZTsKK2Ns
YXNzIEVudHJ5QmFzZTsKK2NsYXNzIEVudHJ5Q2FsbGJhY2s7CitjbGFzcyBFbnRyaWVzQ2FsbGJh
Y2s7CitjbGFzcyBFcnJvckNhbGxiYWNrOworY2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKK2NsYXNz
IFZvaWRDYWxsYmFjazsKKwogLy8gQSBjb21tb24gYmFzZSBjbGFzcyBmb3IgRE9NRmlsZVN5c3Rl
bSBhbmQgRE9NRmlsZVN5c3RlbVN5bmMuCiBjbGFzcyBET01GaWxlU3lzdGVtQmFzZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPERPTUZpbGVTeXN0ZW1CYXNlPiB7CiBwdWJsaWM6CkBAIC01Miw2ICs2Miwx
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CiAgICAgQXN5bmNGaWxlU3lzdGVtKiBhc3luY0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJl
dHVybiBtX2FzeW5jRmlsZVN5c3RlbS5nZXQoKTsgfQogCisgICAgLy8gQWN0dWFsIEZpbGVTeXN0
ZW0gQVBJIGltcGxlbWVudGF0aW9ucy4gIEFsbCB0aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1
YWwgcGF0aHMgYXJlIGRvbmUgYXQgdGhpcyBsZXZlbC4KKyAgICAvLyBUaGV5IHJldHVybiBmYWxz
ZSBmb3IgaW1tZWRpYXRlIGVycm9ycyB0aGF0IGRvbid0IGludm9sdmUgbG93ZXIgQXN5bmNGaWxl
U3lzdGVtIGxhZXIgKGUuZy4gZm9yIG5hbWUgdmFsaWRhdGlvbiBlcnJvcnMpLiAgT3RoZXJ3aXNl
IHRoZXkgcmV0dXJuIHRydWUgKGJ1dCBsYXRlciBtYXkgY2FsbCBiYWNrIHdpdGggYW4gcnVudGlt
ZSBlcnJvcikuCisgICAgYm9vbCBnZXRNZXRhZGF0YShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQ
YXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKTsKKyAgICBib29sIG1vdmUoY29uc3QgRW50cnlC
YXNlKiBzcmMsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIGJvb2wg
Y29weShjb25zdCBFbnRyeUJhc2UqIHNyYywgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7CisgICAgYm9vbCByZW1vdmUoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29sIGdl
dFBhcmVudChjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29sIGdldEZpbGUoY29uc3QgRW50
cnlCYXNlKiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNz
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBi
b29sIGdldERpcmVjdG9yeShjb25zdCBFbnRyeUJhc2UqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc1JlZlB0cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4pOworICAgIGJvb2wgcmVhZERpcmVjdG9yeShEaXJlY3RvcnlSZWFk
ZXJCYXNlKiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKwogcHJvdGVjdGVkOgogICAgIERP
TUZpbGVTeXN0ZW1CYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+KTsKICAgICBmcmllbmQgY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0Rp
cmVjdG9yeUVudHJ5LmNwcAppbmRleCBmNzg3ODdhNGJjZDdmM2U1YTY1NDY5M2IzNjA1YjY4MzI0
Yjg0MWYwLi5mMzE3Mjk3NmRmMzNjNDMxMzNhOWE4MThhOGE0NTBmOTA0OTA4YzFhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1dlYkNvcmUvZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAKQEAgLTM2LDEwICszNiwxMSBAQAogI2luY2x1ZGUgIkRp
cmVjdG9yeVJlYWRlci5oIgogI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJF
cnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotRGlyZWN0b3J5RW50cnk6OkRpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCitEaXJlY3RvcnlFbnRyeTo6RGlyZWN0
b3J5RW50cnkoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVs
bFBhdGgpCiAgICAgOiBFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKIHsKIH0KQEAgLTQ5LDE0
ICs1MCwxOSBAQCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gRGlyZWN0b3J5RW50cnk6OmNy
ZWF0ZVJlYWRlcigpCiAgICAgcmV0dXJuIERpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5
c3RlbSwgbV9mdWxsUGF0aCk7CiB9CiAKKyNkZWZpbmUgdGhyb3dFcnJvcihlcnJvcikgXAorICAg
IGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6
OmNyZWF0ZShlcnJvcikpOworCiB2b2lkIERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5nZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAgIGlmICghbV9maWxlU3lzdGVtLT5n
ZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
KQorICAgICAgICB0aHJvd0Vycm9yKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7CiB9CiAKIHZv
aWQgRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NS
ZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIGZp
bGVzeXN0ZW0oKS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3Rvcnko
dGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAg
ICAgIHRocm93RXJyb3IoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oIGIvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgKaW5kZXggYzc2YjIwNDNhMzgxM2FmNWJjMzEz
YmM5ZDA0MTU0ZjM4MjkwNTNlZS4uZTA2MTA2OWQ0ZGYxZWNjZGI3MTBlMmZkYzM4MTNlYzNlYTVk
ZmU2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgKKysrIGIv
V2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3Mg
RXJyb3JDYWxsYmFjazsKIAogY2xhc3MgRGlyZWN0b3J5RW50cnkgOiBwdWJsaWMgRW50cnkgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBjcmVhdGUoRE9N
RmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkpOwogICAg
IH0KQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwogCiBwcml2YXRlOgot
ICAgIERpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpOworICAgIERpcmVjdG9yeUVudHJ5KERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBiL1dlYkNv
cmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCmluZGV4IDU4NmRkNzgyNWU5MDI5NWVh
MDM3NWZhZjBjZjc5NjkzMjlhMjY4MTQuLmI1NWZhODNhODY2YTlhNDMwNzAzYmNmYzkwNGY0NjIw
MzhmYWI5YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMu
Y3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwCkBAIC0zNiw3
ICszNiw3IEBACiAjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVyU3luYy5oIgogI2luY2x1ZGUgIkVu
dHJ5U3luYy5oIgogI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTUwLDE4ICs1MCwyNiBAQCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRl
clN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKQog
ICAgIHJldHVybiBEaXJlY3RvcnlSZWFkZXJTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Z1
bGxQYXRoKTsKIH0KIAotUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5
bmM6OmdldEZpbGUoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxGbGFncz4sIEV4Y2VwdGlvbkNv
ZGUmKQorUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZWMgPSAwOworICAgIEVudHJ5U3luY0Nh
bGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAg
ICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1
Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9
IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PEZpbGVFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1
bHQoZWMpKTsKIH0KIAotUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERpcmVjdG9yeUVu
dHJ5U3luYzo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8RmxhZ3M+LCBF
eGNlcHRpb25Db2RlJikKK1Bhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBEaXJlY3RvcnlF
bnRyeVN5bmM6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8Rmxh
Z3M+IGZsYWdzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1w
bGVtZW50ZWQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBlYyA9
IDA7CisgICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5
bmNGaWxlU3lzdGVtKCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3RvcnkodGhp
cywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2Fs
bGJhY2soKSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxEaXJl
Y3RvcnlFbnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaCBiL1dlYkNv
cmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXIuaAppbmRleCBjYTdhZWRjMDAxMzlkMTMzOTAyNjgw
NGZjNDZiMGIyNzZlODE1YjQ1Li5mMGQ1ZWZkMjRiNzNkMDQ3YzNkNDc4ZTNiMTM2ZDdkNmY3Njdl
MTczIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyLmgKKysrIGIv
V2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlci5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJCYXNlLmgi
CiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRlckJh
c2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9m
aWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9y
eVJlYWRlclN5bmMuY3BwCmluZGV4IDYwMGFiN2Y2ZWZlMmI1YzVlYTlhMTdkMGM5NjExNGFkNDI5
OTc0NWMuLjcxNjQ0NmVhNGE4Yzc0ZTY5ZDExOGY5YzJhNzIxYjhjYjJjNTZmOTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcAorKysgYi9XZWJDb3Jl
L2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAKQEAgLTMzLDkgKzMzLDE0IEBACiAKICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorI2lu
Y2x1ZGUgIkRpcmVjdG9yeUVudHJ5U3luYy5oIgogI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgi
CisjaW5jbHVkZSAiRW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgorI2lu
Y2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDEwICs0OSwxOSBAQCBEaXJlY3RvcnlSZWFkZXJT
eW5jOjpEaXJlY3RvcnlSZWFkZXJTeW5jKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBj
b25zdCBTdAogewogfQogCi1QYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBEaXJlY3RvcnlSZWFk
ZXJTeW5jOjpyZWFkRW50cmllcyhFeGNlcHRpb25Db2RlJikKK1Bhc3NSZWZQdHI8RW50cnlBcnJh
eVN5bmM+IERpcmVjdG9yeVJlYWRlclN5bmM6OnJlYWRFbnRyaWVzKEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZWMgPSAwOwor
ICAgIGlmICghbV9oYXNNb3JlKQorICAgICAgICByZXR1cm4gRW50cnlBcnJheVN5bmM6OmNyZWF0
ZSgpOworCisgICAgRW50cmllc1N5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVt
LT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlYWREaXJlY3Rv
cnkodGhpcywgbV9mdWxsUGF0aCwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJy
b3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsK
KyAgICAgICAgc2V0SGFzTW9yZShmYWxzZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5
LmNwcAppbmRleCA5N2EzMjcwOGUyZjgwZjE1YWI1NzIyNDJjZTRlYzYwOTI4ODVjZjY4Li43ZjE5
MDFhYzlkZjM1OGYwYWM0ZDdmMTBkNDA0MDMzZGI2MTVlZGEwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvRW50cnkuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAKQEAgLTMy
LDQ0ICszMiw1MiBAQAogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCi0jaW5jbHVkZSAiRE9N
RmlsZVBhdGguaCIKLSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRGlyZWN0
b3J5RW50cnkuaCIKICNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JD
YWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1D
YWxsYmFja3MuaCIKICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiVm9p
ZENhbGxiYWNrLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRW50cnk6OkVudHJ5KERPTUZp
bGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCitFbnRyeTo6RW50
cnkoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
CiAgICAgOiBFbnRyeUJhc2UoZmlsZVN5c3RlbSwgZnVsbFBhdGgpCiB7CiB9CiAKKyNkZWZpbmUg
dGhyb3dFcnJvcihlcnJvcikgXAorICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhl
cnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShlcnJvcikpOworCiB2b2lkIEVudHJ5Ojpn
ZXRNZXRhZGF0YShQYXNzUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIGZpbGVzeXN0
ZW0oKS0+Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
KyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgdGhyb3dFcnJvcihJTlZBTElEX01PRElGSUNBVElP
Tl9FUlIpOwogfQogCi12b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0Cit2
b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAg
ZmlsZXN5c3RlbSgpLT5tb3ZlKHRoaXMsIHBhcmVudCwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQu
Z2V0KCksIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIHRo
cm93RXJyb3IoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAotdm9pZCBFbnRyeTo6Y29w
eVRvKFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAordm9pZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8
RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKSBjb25zdAogewotICAgIGZpbGVzeXN0ZW0oKS0+Y29weSh0aGlzLCBwYXJl
bnQsIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CisgICAgaWYgKCFtX2Zp
bGVTeXN0ZW0tPmNvcHkodGhpcywgcGFyZW50LmdldCgpLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spKQorICAgICAgICB0aHJvd0Vycm9yKElOVkFMSURfTU9ESUZJQ0FUSU9O
X0VSUik7CiB9CiAKIHZvaWQgRW50cnk6OnJlbW92ZShQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sp
IGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5yZW1vdmUodGhpcywgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIHRocm93RXJyb3IoSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAogdm9pZCBFbnRyeTo6Z2V0UGFyZW50KFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5nZXRQYXJlbnQo
dGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5
c3RlbS0+Z2V0UGFyZW50KHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisg
ICAgICAgIHRocm93RXJyb3IoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsKIH0KIAogU3RyaW5n
IEVudHJ5Ojp0b1VSSShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBp
L0VudHJ5LmggYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaAppbmRleCBiNzVmMWVkZTFkMDk4YWYz
NmMwNGJjMDVlMjNkODI1OGNlNDBjYWIwLi5hNzFjNWYwN2JlYjg4NTM5MjU0NmFiYTFjMGZkNmEz
Y2FlZTNjZjc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaAorKysgYi9XZWJD
b3JlL2ZpbGVhcGkvRW50cnkuaApAQCAtNDAsMjcgKzQwLDI3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgRGlyZWN0b3J5RW50cnk7CiBjbGFzcyBFbnRyeUNhbGxiYWNrOworY2xh
c3MgRW50cnlTeW5jOwogY2xhc3MgRXJyb3JDYWxsYmFjazsKIGNsYXNzIE1ldGFkYXRhQ2FsbGJh
Y2s7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIEVudHJ5IDogcHVibGljIEVudHJ5QmFz
ZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnkoKSB7IH0KLQogICAgIERPTUZpbGVTeXN0
ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxET01GaWxlU3lzdGVt
Kj4obV9maWxlU3lzdGVtKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldE1ldGFkYXRhKFBhc3NS
ZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0gICAgdmlydHVhbCB2b2lkIG1vdmVU
byhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygp
LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUg
PSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAw
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwg
Y29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUbyhQYXNzUmVmUHRyPERpcmVj
dG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sg
PSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgU3RyaW5nIHRvVVJJKGNvbnN0IFN0cmluZyYgbWltZVR5cGUgPSBTdHJp
bmcoKSk7CiAKIHByb3RlY3RlZDoKLSAgICBFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBFbnRyeShET01GaWxlU3lzdGVtQmFzZSog
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsIGIvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5LmlkbAppbmRleCBkMzYzYmNkYjk2NmJmNmI5YTU2NDIxNDEwMzk4Yjc4
Yjk2ZjVlMTUzLi5mNmZjZGIzYjRlYTg2NDlmM2Q4ZDk3ZDNhOTEwNDIzYjRjNzFmOTcwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaWRsCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9F
bnRyeS5pZGwKQEAgLTQxLDggKzQxLDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NRmlsZVN5c3RlbSBmaWxlc3lzdGVtOwogCiAgICAgICAgIHZvaWQg
Z2V0TWV0YWRhdGEoaW4gW09wdGlvbmFsLCBDYWxsYmFja10gTWV0YWRhdGFDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JD
YWxsYmFjayk7Ci0gICAgICAgIHZvaWQgbW92ZVRvKGluIEVudHJ5IHBhcmVudCwgaW4gW09wdGlv
bmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwg
aW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGlu
IFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAg
ICAgIHZvaWQgY29weVRvKGluIEVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5k
ZWZpbmVkT3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBD
YWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2Fs
bGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgbW92ZVRv
KGluIERpcmVjdG9yeUVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVk
T3JOdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBDYWxsYmFj
a10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2td
IEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgY29weVRvKGluIERp
cmVjdG9yeUVudHJ5IHBhcmVudCwgaW4gW09wdGlvbmFsLCBDb252ZXJ0VW5kZWZpbmVkT3JOdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZSwgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50
cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9y
Q2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAgICAgICAgIHZvaWQgcmVtb3ZlKGluIFtPcHRpb25h
bCwgQ2FsbGJhY2tdIFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwg
Q2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAgICAgICAgIHZvaWQgZ2V0
UGFyZW50KGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2sp
OwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3Bw
IGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmNwcAppbmRleCBlZGJmMmRjZGU3ZWEx
NGM3OTFhOWI3ZTdkNjk2MDk4ZTQ0OTg5Mzc2Li4yOWVjOWYzOTJkZTRmM2U0NmYyOGI0OTZkZGNj
Mzc4NTliN2I3OGQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMu
Y3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5jcHAKQEAgLTMzLDggKzMz
LDIwIEBACiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJFbnRyeUFycmF5
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4g
RW50cnlBcnJheVN5bmM6OmNyZWF0ZShFbnRyeUFycmF5KiBlbnRyaWVzKQoreworICAgIFJlZlB0
cjxFbnRyeUFycmF5U3luYz4gZW50cmllc1N5bmMgPSBhZG9wdFJlZihuZXcgRW50cnlBcnJheVN5
bmMoKSk7CisgICAgaWYgKGVudHJpZXMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGVudHJpZXMtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBlbnRyaWVzU3luYy0+YXBw
ZW5kKEVudHJ5U3luYzo6Y3JlYXRlKGVudHJpZXMtPml0ZW0oaSkpKTsKKyAgICB9CisgICAgcmV0
dXJuIGVudHJpZXNTeW5jLnJlbGVhc2UoKTsKK30KKwogRW50cnlBcnJheVN5bmM6OkVudHJ5QXJy
YXlTeW5jKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3lu
Yy5oIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmgKaW5kZXggN2UxMzEyZmQ1YjM5
ZjQ0YjEyZmM4MDJlMTZjNzFiN2VjM2U3YzI3ZC4uOWM3ZGVjOGUwZmI4ZTc0MDZiMDdhNWM1YjBh
ZTU5MTRhMzc2MmMzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5j
LmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlTeW5jLmgKQEAgLTQ4LDYgKzQ4LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVudHJ5QXJyYXlTeW5jKCkp
OwogICAgIH0KIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudHJ5QXJyYXlTeW5jPiBjcmVhdGUo
RW50cnlBcnJheSogZW50cmllcyk7CisKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2VudHJpZXMuc2l6ZSgpOyB9CiAgICAgRW50cnlTeW5jKiBpdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdDsKICAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxFbnRy
eVN5bmM+IGVudHJ5KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUJhc2UuaCBi
L1dlYkNvcmUvZmlsZWFwaS9FbnRyeUJhc2UuaAppbmRleCAxMjM0NTgwNDI3YzA1Y2M3NmYzMjc5
YzM4ODE5OWZiYzBlNzNjOGJkLi42OGU3YmVkNjFlMDRjNGQ2M2Y5MWVkNmJjZTA1YjBjNDRjNjJh
MzU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgKKysrIGIvV2ViQ29y
ZS9maWxlYXBpL0VudHJ5QmFzZS5oCkBAIC0yNSw4ICsyNSw3IEBACiAgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
ICAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLworICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gICovCiAKICNpZm5kZWYgRW50cnlCYXNlX2gKICNkZWZpbmUgRW50cnlCYXNl
X2gKQEAgLTQ4LDYgKzQ3LDggQEAgY2xhc3MgRW50cnlCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8
RW50cnlCYXNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RW50cnlCYXNlKCkgeyB9CiAKKyAg
ICBET01GaWxlU3lzdGVtQmFzZSogZmlsZXN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5
c3RlbTsgfQorCiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIApAQCAtNTgsNiArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRW50cnlCYXNlKERPTUZpbGVT
eXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgICAgICA6
IG1fZmlsZVN5c3RlbShmaWxlU3lzdGVtKQogICAgICAgICAsIG1fZnVsbFBhdGgoZnVsbFBhdGgp
CisgICAgICAgICwgbV9uYW1lKERPTUZpbGVQYXRoOjpnZXROYW1lKGZ1bGxwYXRoKSkKICAgICB7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlTeW5jLmNwcCBiL1dl
YkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwCmluZGV4IDZhYWEzNTZjNzRiMmU3OWNhYzQ4MDdj
MjZlNzUxZmYwZDQ5NGY2MzguLjUwY2QxMTU5MjUxNGVmY2VjMDJlN2Q2OTdiN2I1N2FhMzNmNjM3
NmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwCisrKyBiL1dlYkNv
cmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwCkBAIC0zNCw5ICszNCwxMiBAQAogI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKIAogI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCisjaW5jbHVkZSAiRE9NRmls
ZVN5c3RlbVN5bmMuaCIKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkRp
cmVjdG9yeUVudHJ5U3luYy5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeVN5bmMuaCIKICNpbmNsdWRl
ICJNZXRhZGF0YS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU3lu
Y0NhbGxiYWNrSGVscGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsMzEgKzQ4
LDUzIEBAIEVudHJ5U3luYzo6RW50cnlTeW5jKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogewogfQogCi1QYXNzUmVmUHRyPE1ldGFkYXRhPiBF
bnRyeVN5bmM6OmdldE1ldGFkYXRhKEV4Y2VwdGlvbkNvZGUmKQorUGFzc1JlZlB0cjxFbnRyeVN5
bmM+IEVudHJ5U3luYzo6Y3JlYXRlKEVudHJ5QmFzZSogZW50cnkpCiB7Ci0gICAgLy8gRklYTUU6
IHRvIGJlIGltcGxlbWVudGVkLgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7
CisgICAgaWYgKGVudHJ5LT5pc0ZpbGUoKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBG
aWxlRW50cnlTeW5jKGVudHJ5LT5tX2ZpbGVTeXN0ZW0sIGVudHJ5LT5tX2Z1bGxQYXRoKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXJlY3RvcnlFbnRyeVN5bmMoZW50cnktPm1fZmlsZVN5
c3RlbSwgZW50cnktPm1fZnVsbFBhdGgpKTsKIH0KIAotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVu
dHJ5U3luYzo6bW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiwgY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0CitQYXNzUmVmUHRyPE1ldGFkYXRhPiBFbnRyeVN5
bmM6OmdldE1ldGFkYXRhKEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiB0byBi
ZSBpbXBsZW1lbnRlZC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAg
IGVjID0gMDsKKyAgICBNZXRhZGF0YVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lz
dGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldE1ldGFk
YXRhKHRoaXMsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2so
KSkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICByZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7CiB9CiAKLVBh
c3NSZWZQdHI8RW50cnlTeW5jPiBFbnRyeVN5bmM6OmNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9y
eUVudHJ5U3luYz4sIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdAorUGFzc1Jl
ZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6bW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50
cnlTeW5jPiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0CiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZWMgPSAwOworICAgIEVudHJ5U3luY0NhbGxiYWNr
SGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAo
IW1fZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIGhlbHBlci5zdWNj
ZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX01PRElGSUNBVElPTl9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBy
ZXR1cm4gaGVscGVyLmdldFJlc3VsdChlYyk7CiB9CiAKLXZvaWQgRW50cnlTeW5jOjpyZW1vdmUo
RXhjZXB0aW9uQ29kZSYpIGNvbnN0CitQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjpj
b3B5VG8oUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUg
aW1wbGVtZW50ZWQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBlYyA9IDA7CisgICAgRW50
cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVt
KCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5jb3B5KHRoaXMsIHBhcmVudC5nZXQoKSwgbmFt
ZSwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKK30KKwordm9pZCBFbnRy
eVN5bmM6OnJlbW92ZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3sKKyAgICBlYyA9IDA7Cisg
ICAgVm9pZFN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVT
eXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPnJlbW92ZSh0aGlzLCBoZWxwZXIuc3Vj
Y2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKQorICAgICAgICBlYyA9IElO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKIH0KIAog
UGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Z2V0UGFyZW50KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuaCBiL1dlYkNvcmUvZmlsZWFwaS9FbnRy
eVN5bmMuaAppbmRleCBiYTdkYjYwY2U5NjcwYjNjZWUxY2FiZGRmODlkOTFlOTBmMGQ4NmViLi4x
MzJmZDcwZGFjNmY3ZTY1MzRlZTBjZTVhMDRjYmFlOTMzNTBmNDFkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlTeW5jLmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5o
CkBAIC00Nyw2ICs0Nyw4IEBAIGNsYXNzIE1ldGFkYXRhOwogCiBjbGFzcyBFbnRyeVN5bmMgOiBw
dWJsaWMgRW50cnlCYXNlIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeVN5
bmM+IGNyZWF0ZShFbnRyeUJhc2UqIGVudHJ5KTsKKwogICAgIERPTUZpbGVTeXN0ZW1TeW5jKiBm
aWxlc3lzdGVtKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RE9NRmlsZVN5c3RlbVN5bmMq
PihtX2ZpbGVTeXN0ZW0pOyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TWV0YWRhdGE+IGdl
dE1ldGFkYXRhKEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9G
aWxlRW50cnkuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5jcHAKaW5kZXggMmQxZTYy
M2QzZWRlOTBmZjg3ZTgwZTA2YjE5ZDEyMjJjZjhmOGNhMS4uMzYyOTEzMmE0N2RjMzAxYjFmNDU1
NWIxNDM0MTUzZGZjYjkwMTA0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRy
eS5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlRW50cnk6OkZpbGVFbnRyeShET01GaWxl
U3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorRmlsZUVudHJ5OjpG
aWxlRW50cnkoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVs
bFBhdGgpCiAgICAgOiBFbnRyeShmaWxlU3lzdGVtLCBmdWxsUGF0aCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnkuaCBiL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50
cnkuaAppbmRleCAyYzg1ZDczOWI3Y2Q1MTk4Yzg5ZGYwZjRlNDI3ZmU1ZDI1YzUzYWFhLi5iYmI4
MzY5MWM1NDliZjY2YTllMGU2NThmOTZkZDQ3ZjU5ZTE4NGVlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZUVudHJ5LmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5oCkBA
IC0zOSwxMSArMzksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERPTUZpbGVT
eXN0ZW07Ci0KIGNsYXNzIEZpbGVFbnRyeSA6IHB1YmxpYyBFbnRyeSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8RmlsZUVudHJ5PiBjcmVhdGUoRE9NRmlsZVN5c3RlbSogZmlsZVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxl
RW50cnk+IGNyZWF0ZShET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBmdWxsUGF0aCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZUVudHJ5
KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7CiAgICAgfQpAQCAtNTQsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzRmlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJp
dmF0ZToKLSAgICBGaWxlRW50cnkoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCk7CisgICAgRmlsZUVudHJ5KERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAgYi9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKaW5kZXggNTE2ZjYyNzY4ZGI4NmUyOTg0
ZmE2ZWNkYWJjMjM1NjI3MGNhM2E2ZC4uZTBmOTk4MGQ0YjU2NGVkZWM2YzlhYmEyZjgyOTI1MmM5
N2MwYjAzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
Y3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcApAQCAtMzYs
NyArMzYsNyBAQAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkFzeW5j
RmlsZVdyaXRlci5oIgogI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAiRE9NRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1CYXNlLmgiCiAjaW5jbHVkZSAiRGly
ZWN0b3J5RW50cnkuaCIKICNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXIuaCIKICNpbmNsdWRlICJF
bnRyaWVzQ2FsbGJhY2suaCIKQEAgLTExMSwxMiArMTExLDEyIEBAIHZvaWQgRmlsZVN5c3RlbUNh
bGxiYWNrc0Jhc2U6OmRpZEZhaWwoaW50IGNvZGUpCiAKIC8vIEVudHJ5Q2FsbGJhY2tzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotUGFzc093blB0cjxFbnRyeUNhbGxiYWNrcz4gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShQYXNz
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrLCBET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSkKK1Bhc3NPd25QdHI8RW50cnlD
YWxsYmFja3M+IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aywgRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQ
YXRoLCBib29sIGlzRGlyZWN0b3J5KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgRW50cnlD
YWxsYmFja3Moc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBmaWxlU3lzdGVtLCBleHBl
Y3RlZFBhdGgsIGlzRGlyZWN0b3J5KSk7CiB9CiAKLUVudHJ5Q2FsbGJhY2tzOjpFbnRyeUNhbGxi
YWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSkKK0VudHJ5Q2Fs
bGJhY2tzOjpFbnRyeUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBET01GaWxl
U3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wg
aXNEaXJlY3RvcnkpCiAgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNr
KQogICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQogICAgICwgbV9maWxl
U3lzdGVtKGZpbGVTeXN0ZW0pCkBAIC0xMzgsMTIgKzEzOCwxMiBAQCB2b2lkIEVudHJ5Q2FsbGJh
Y2tzOjpkaWRTdWNjZWVkKCkKIAogLy8gRW50cmllc0NhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QYXNzT3duUHRy
PEVudHJpZXNDYWxsYmFja3M+IEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEVu
dHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2ssIERpcmVjdG9yeVJlYWRlciogZGlyZWN0b3J5UmVhZGVyLCBjb25zdCBT
dHJpbmcmIGJhc2VQYXRoKQorUGFzc093blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBFbnRyaWVzQ2Fs
bGJhY2tzOjpjcmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBEaXJlY3RvcnlSZWFk
ZXJCYXNlKiBkaXJlY3RvcnlSZWFkZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBFbnRyaWVzQ2FsbGJhY2tzKHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaywgZGlyZWN0b3J5UmVhZGVyLCBiYXNlUGF0aCkpOwogfQogCi1FbnRyaWVzQ2Fs
bGJhY2tzOjpFbnRyaWVzQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgRGly
ZWN0b3J5UmVhZGVyKiBkaXJlY3RvcnlSZWFkZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCitF
bnRyaWVzQ2FsbGJhY2tzOjpFbnRyaWVzQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaywgRGlyZWN0b3J5UmVhZGVyQmFzZSogZGlyZWN0b3J5UmVhZGVyLCBjb25zdCBTdHJpbmcm
IGJhc2VQYXRoKQogICAgIDogRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykK
ICAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKICAgICAsIG1fZGlyZWN0
b3J5UmVhZGVyKGRpcmVjdG9yeVJlYWRlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9G
aWxlU3lzdGVtQ2FsbGJhY2tzLmggYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNr
cy5oCmluZGV4IDdmMTg2ZWYyNzU0YWU1NjI2NTJjMWY0ZmRjZjE2MDZjMzIzNWQ0YjUuLmM2MDBh
NzY2ZDA5NjZiY2ZkOWM1NTk2N2ZjMjYwNTUxOGM0NWU2OWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuaApAQCAtNDEsOCArNDEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBc3luY0ZpbGVXcml0ZXI7Ci1jbGFzcyBET01GaWxlU3lzdGVtOwotY2xhc3MgRGly
ZWN0b3J5UmVhZGVyOworY2xhc3MgRE9NRmlsZVN5c3RlbUJhc2U7CitjbGFzcyBEaXJlY3RvcnlS
ZWFkZXJCYXNlOwogY2xhc3MgRXJyb3JDYWxsYmFjazsKIGNsYXNzIEVudHJpZXNDYWxsYmFjazsK
IGNsYXNzIEVudHJ5QXJyYXk7CkBAIC04NiwyNyArODYsMjcgQEAgcHJvdGVjdGVkOgogCiBjbGFz
cyBFbnRyeUNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RW50cnlDYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBET01GaWxlU3lz
dGVtKiwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpOworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgRE9NRmlsZVN5c3RlbUJhc2Uq
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFN1Y2NlZWQoKTsKIAogcHJpdmF0ZToKLSAgICBFbnRyeUNhbGxiYWNrcyhQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBET01G
aWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3Rvcnkp
OworICAgIEVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4sIERPTUZpbGVTeXN0ZW1CYXNlKiwgY29uc3QgU3RyaW5nJiBleHBl
Y3RlZFBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpOwogICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBt
X3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBET01GaWxlU3lzdGVtKiBtX2ZpbGVTeXN0ZW07CisgICAg
RE9NRmlsZVN5c3RlbUJhc2UqIG1fZmlsZVN5c3RlbTsKICAgICBTdHJpbmcgbV9leHBlY3RlZFBh
dGg7CiAgICAgYm9vbCBtX2lzRGlyZWN0b3J5OwogfTsKIAogY2xhc3MgRW50cmllc0NhbGxiYWNr
cyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8RW50cmllc0NhbGxiYWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8RW50cmllc0Nh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgRGlyZWN0b3J5UmVhZGVyKiwgY29u
c3QgU3RyaW5nJiBiYXNlUGF0aCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8RW50cmllc0NhbGxi
YWNrcz4gY3JlYXRlKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiwgRGlyZWN0b3J5UmVhZGVyQmFzZSosIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBu
YW1lLCBib29sIGlzRGlyZWN0b3J5KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9y
eUVudHJpZXMoYm9vbCBoYXNNb3JlKTsKIAogcHJpdmF0ZToKLSAgICBFbnRyaWVzQ2FsbGJhY2tz
KFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwg
RGlyZWN0b3J5UmVhZGVyKiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCk7CisgICAgRW50cmllc0Nh
bGxiYWNrcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4sIERpcmVjdG9yeVJlYWRlckJhc2UqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKTsKICAg
ICBSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKLSAgICBEaXJlY3Rv
cnlSZWFkZXIqIG1fZGlyZWN0b3J5UmVhZGVyOworICAgIERpcmVjdG9yeVJlYWRlckJhc2UqIG1f
ZGlyZWN0b3J5UmVhZGVyOwogICAgIFN0cmluZyBtX2Jhc2VQYXRoOwogICAgIFJlZlB0cjxFbnRy
eUFycmF5PiBtX2VudHJpZXM7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0xvY2Fs
RmlsZVN5c3RlbS5jcHAgYi9XZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcAppbmRl
eCA1NjdhYWZlNjZmN2Q3YzUwMDgzYTk1ZTQyOGY4ZWY1OWFkZmE3OTgwLi5jNzM0N2I4ODQ5MmUw
YTYxOTcwY2NmMzZhNTFmMDliODZhMTU4OTYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkv
TG9jYWxGaWxlU3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVt
LmNwcApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3RlbShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29ucwogICAgIEFzeW5j
RmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0oYmFzZVBhdGgsIGlkZW50aWZpZXIsIHR5cGUsIGNh
bGxiYWNrcyk7CiB9CiAKLXZvaWQgTG9jYWxGaWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5c3RlbShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlw
ZSwgbG9uZyBsb25nLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQordm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxv
bmcsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGJvb2wp
CiB7CiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbSBjYWxscyBjYWxsYmFj
a3Mgc3luY2hyb25vdXNseSwgc28gdGhlIG1ldGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYXN5bmNo
cm9ub3VzbHkuCiAgICAgY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZvcGVu
RmlsZVN5c3RlbSwgZmlsZVN5c3RlbUJhc2VQYXRoKCksIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCktPmRhdGFiYXNlSWRlbnRpZmllcigpLCB0eXBlLCBjYWxsYmFja3MpKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaCBiL1dlYkNvcmUvZmlsZWFwaS9Mb2Nh
bEZpbGVTeXN0ZW0uaAppbmRleCBiYjFkMDQ1MDQ4NWI2NGRjMDA3MDdmODg0OWQ4YzBlYWVlMzc5
YWY0Li45ZDhhZTY1YTA1NjI0MzliZmZkZjZhZTcyNjNmNDUwMjNiZWE4NjRhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmgKKysrIGIvV2ViQ29yZS9maWxlYXBp
L0xvY2FsRmlsZVN5c3RlbS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAvLyBjYWxs
aW5nIHRoaXMgb25lLgogICAgIHN0YXRpYyBMb2NhbEZpbGVTeXN0ZW0mIGxvY2FsRmlsZVN5c3Rl
bSgpOwogCi0gICAgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4sIGJvb2wgc3luY2hyb25vdXMg
PSBmYWxzZSk7CiAKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gVGhpcyBjYWxsIGlz
IG5vdCB0aHJlYWQtc2FmZTsgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSB3b3JrZXIgdGhyZWFk
cyBhcmUgY3JlYXRlZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9NZXRhZGF0YS5oIGIv
V2ViQ29yZS9maWxlYXBpL01ldGFkYXRhLmgKaW5kZXggMWZlYzk0MzdiNTBkNmE1NWZkODY2MjNh
OWMwY2YyN2FkZmQ0YTQyNS4uYjcwODA2YjA5ZWQ0MjEyNjQwZGJjNjAwZjgwY2FjYjc1YTJmMzgw
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL01ldGFkYXRhLmgKKysrIGIvV2ViQ29yZS9m
aWxlYXBpL01ldGFkYXRhLmgKQEAgLTQ0LDYgKzQ0LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZXRhZGF0YShtb2RpZmljYXRpb25UaW1lKSk7CiAgICAgfQogCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWV0YWRhdGE+IGNyZWF0ZShNZXRhZGF0YSogbWV0YWRhdGEp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFkYXRhKG1ldGFkYXRhLT5t
X21vZGlmaWNhdGlvblRpbWUpKTsKKyAgICB9CisKICAgICAvLyBOZWVkcyB0byByZXR1cm4gZXBv
Y2ggdGltZSBpbiBtaWxsaXNlY29uZHMgZm9yIERhdGUuCiAgICAgZG91YmxlIG1vZGlmaWNhdGlv
blRpbWUoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWNhdGlvblRpbWUgKiAxMDAwLjA7IH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL1N5bmNDYWxsYmFja0hlbHBlci5oIGIvV2ViQ29y
ZS9maWxlYXBpL1N5bmNDYWxsYmFja0hlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MWI5ZDQ3MTRmY2Ix
MGJiYTgyMzMwNjA2OGU0NzA0NWZlMjEzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2Zp
bGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmgKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN5bmND
YWxsYmFja0hlbHBlcl9oCisjZGVmaW5lIFN5bmNDYWxsYmFja0hlbHBlcl9oCisKKyNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCisKKyNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorI2luY2x1ZGUg
IkVudHJpZXNDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVudHJ5QXJyYXlTeW5jLmgiCisjaW5jbHVk
ZSAiRW50cnlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5LmgiCisjaW5jbHVkZSAiRmls
ZUVycm9yLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiTWV0
YWRhdGFDYWxsYmFjay5oIgorI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBBc3luY0ZpbGVTeXN0ZW07CitjbGFzcyBEaXJlY3RvcnlFbnRy
eVN5bmM7CitjbGFzcyBFbnRyeUFycmF5U3luYzsKK2NsYXNzIEVudHJ5U3luYzsKK2NsYXNzIEZp
bGVFbnRyeVN5bmM7CisKKy8vIEEgaGVscGVyIHRlbXBsYXRlIGZvciBGaWxlU3lzdGVtU3luYyBp
bXBsZW1lbnRhdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBTdWNjZXNzQ2FsbGJhY2ssIHR5cGVu
YW1lIE9ic2VydmVyVHlwZSwgdHlwZW5hbWUgQ2FsbGJhY2tBcmcsIHR5cGVuYW1lIFJlc3VsdFR5
cGU+CitjbGFzcyBTeW5jQ2FsbGJhY2tIZWxwZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVi
bGljOgorICAgIHR5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPFN1Y2Nlc3NDYWxsYmFjaywgT2Jz
ZXJ2ZXJUeXBlLCBDYWxsYmFja0FyZywgUmVzdWx0VHlwZT4gSGVscGVyVHlwZTsKKyAgICBTeW5j
Q2FsbGJhY2tIZWxwZXIoT2JzZXJ2ZXJUeXBlKiBvYnNlcnZlciA9IDApCisgICAgICAgIDogbV9v
YnNlcnZlcihvYnNlcnZlcikKKyAgICAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhTdWNjZXNzQ2Fs
bGJhY2tJbXBsOjpjcmVhdGUodGhpcykpCisgICAgICAgICwgbV9lcnJvckNhbGxiYWNrKEVycm9y
Q2FsbGJhY2tJbXBsOjpjcmVhdGUodGhpcykpCisgICAgICAgICwgbV9lcnJvcigwKQorICAgICAg
ICAsIG1fY29tcGxldGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPFJl
c3VsdFR5cGU+IGdldFJlc3VsdChFeGNlcHRpb25Db2RlJiBlYykKKyAgICB7CisgICAgICAgIGlm
IChtX29ic2VydmVyKSB7CisgICAgICAgICAgICB3aGlsZSAoIW1fY29tcGxldGVkKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFtX29ic2VydmVyLT53YWl0Q29tcGxldGlvbigpKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fZXJyb3IgPSBBQk9SVF9FUlI7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlYyA9IG1fZXJyb3I7CisgICAgICAgIHJldHVybiBtX3Jlc3VsdC5yZWxlYXNlKCk7CisgICAg
fQorCisgICAgUGFzc1JlZlB0cjxTdWNjZXNzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaygpIHsg
cmV0dXJuIG1fc3VjY2Vzc0NhbGxiYWNrOyB9CisgICAgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKCkgeyByZXR1cm4gbV9lcnJvckNhbGxiYWNrOyB9CisKK3ByaXZhdGU6
CisgICAgY2xhc3MgU3VjY2Vzc0NhbGxiYWNrSW1wbCA6IHB1YmxpYyBTdWNjZXNzQ2FsbGJhY2sg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VjY2Vzc0NhbGxiYWNr
SW1wbD4gY3JlYXRlKEhlbHBlclR5cGUqIGhlbHBlcikKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTdWNjZXNzQ2FsbGJhY2tJbXBsKGhlbHBlcikpOworICAgICAg
ICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9oZWxwZXItPnNldEVycm9yKDApOworICAgICAgICB9CisKKyAgICAgICAgdmly
dHVhbCBib29sIGhhbmRsZUV2ZW50KENhbGxiYWNrQXJnKiBhcmcpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1faGVscGVyLT5zZXRSZXN1bHQoUmVzdWx0VHlwZTo6Y3JlYXRlKGFyZykpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IFN1Y2Nlc3NDYWxsYmFja0ltcGwoSGVscGVyVHlwZSogaGVscGVyKQorICAgICAgICAgICAgOiBt
X2hlbHBlcihoZWxwZXIpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBIZWxwZXJUeXBl
KiBtX2hlbHBlcjsKKyAgICB9OworCisgICAgY2xhc3MgRXJyb3JDYWxsYmFja0ltcGwgOiBwdWJs
aWMgRXJyb3JDYWxsYmFjayB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrSW1wbD4gY3JlYXRlKEhlbHBlclR5cGUqIGhlbHBlcikKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFcnJvckNhbGxiYWNrSW1wbChoZWxw
ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChGaWxl
RXJyb3IqIGVycm9yKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoZXJyb3IpOworICAg
ICAgICAgICAgbV9oZWxwZXItPnNldEVycm9yKGVycm9yLT5jb2RlKCkpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEVycm9yQ2Fs
bGJhY2tJbXBsKEhlbHBlclR5cGUqIGhlbHBlcikKKyAgICAgICAgICAgIDogbV9oZWxwZXIoaGVs
cGVyKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgSGVscGVyVHlwZSogbV9oZWxwZXI7
CisgICAgfTsKKworICAgIGZyaWVuZCBjbGFzcyBTdWNjZXNzQ2FsbGJhY2tJbXBsOworICAgIGZy
aWVuZCBjbGFzcyBFcnJvckNhbGxiYWNrSW1wbDsKKworICAgIHZvaWQgc2V0RXJyb3IoRXhjZXB0
aW9uQ29kZSBlYykKKyAgICB7CisgICAgICAgIG1fZXJyb3IgPSBlYzsKKyAgICAgICAgbV9jb21w
bGV0ZWQgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgc2V0UmVzdWx0KFBhc3NSZWZQdHI8UmVz
dWx0VHlwZT4gcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9yZXN1bHQgPSByZXN1bHQ7CisgICAg
ICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBPYnNlcnZlclR5cGUqIG1fb2Jz
ZXJ2ZXI7CisgICAgUmVmUHRyPFN1Y2Nlc3NDYWxsYmFja0ltcGw+IG1fc3VjY2Vzc0NhbGxiYWNr
OworICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrSW1wbD4gbV9lcnJvckNhbGxiYWNrOworICAgIFJl
ZlB0cjxSZXN1bHRUeXBlPiBtX3Jlc3VsdDsKKyAgICBFeGNlcHRpb25Db2RlIG1fZXJyb3I7Cisg
ICAgYm9vbCBtX2NvbXBsZXRlZDsKK307CisKK3N0cnVjdCBFbXB0eVR5cGUgOiBwdWJsaWMgUmVm
Q291bnRlZDxFbXB0eVR5cGU+IHsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbXB0eVR5cGU+IGNy
ZWF0ZShFbXB0eVR5cGUqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0
eVR5cGUpOworICAgIH0KK307CisKK3N0cnVjdCBFbXB0eU9ic2VydmVyVHlwZSB7CisgICAgYm9v
bCB3YWl0Q29tcGxldGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9
OworCit0eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxFbnRyeUNhbGxiYWNrLCBBc3luY0ZpbGVT
eXN0ZW0sIEVudHJ5LCBFbnRyeVN5bmM+IEVudHJ5U3luY0NhbGxiYWNrSGVscGVyOwordHlwZWRl
ZiBTeW5jQ2FsbGJhY2tIZWxwZXI8RW50cmllc0NhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIEVu
dHJ5QXJyYXksIEVudHJ5QXJyYXlTeW5jPiBFbnRyaWVzU3luY0NhbGxiYWNrSGVscGVyOwordHlw
ZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8TWV0YWRhdGFDYWxsYmFjaywgQXN5bmNGaWxlU3lzdGVt
LCBNZXRhZGF0YSwgTWV0YWRhdGE+IE1ldGFkYXRhU3luY0NhbGxiYWNrSGVscGVyOwordHlwZWRl
ZiBTeW5jQ2FsbGJhY2tIZWxwZXI8Vm9pZENhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIEVtcHR5
VHlwZSwgRW1wdHlUeXBlPiBWb2lkU3luY0NhbGxiYWNrSGVscGVyOwordHlwZWRlZiBTeW5jQ2Fs
bGJhY2tIZWxwZXI8RmlsZVN5c3RlbUNhbGxiYWNrLCBFbXB0eU9ic2VydmVyVHlwZSwgRE9NRmls
ZVN5c3RlbSwgRE9NRmlsZVN5c3RlbVN5bmM+IEZpbGVTeXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXI7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RF
TSkKKworI2VuZGlmIC8vIFN5bmNDYWxsYmFja0hlbHBlcl9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDhj
YWM4Nzk5N2FhOTUzMjY2MGU1YmVjMjNlOTljYjE5MWViZDk0ZTUuLjg2YjcyZTU1ZjQzOTg2MmIx
YTdjMjEwNGUzY2Q5YjRlOTNjNjNmNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0xOTIsNyArMTkyLDcg
QEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVO
QUJMRV9GSUxFX1NZU1RFTQogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkg
PSAwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsKLSAgICAg
ICAgW0VuYWJsZWRBdFJ1bnRpbWVdIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQg
c2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZp
bGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxd
IEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIFtFbmFibGVkQXRSdW50aW1l
PUZpbGVTeXN0ZW1dIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlw
ZSwgaW4gbG9uZyBsb25nIHNpemUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1D
YWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2Fs
bGJhY2sgZXJyb3JDYWxsYmFjayk7CiAKICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50
aW1lPUZpbGVTeXN0ZW1dIEZsYWdzQ29uc3RydWN0b3IgRmxhZ3M7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L0FzeW5jRmlsZVN5c3RlbS5oCmluZGV4IDFiZjc1ODA4MjFiYjMwN2JkZWYwMWI2YmYwMDRjOWIz
NDk4Yjc1ZmYuLjcxODEzZjI2ZGNkMzBhOTg3ZjRlYjA1ZTg0OTg3OTk5ZDg3ZGIyNWMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaApAQCAtNTksNiArNTksMTAgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAorICAgIC8vIFN1YmNsYXNzIG11c3QgaW1w
bGVtZW50IHRoaXMgaWYgaXQgc3VwcG9ydHMgc3luY2hyb25vdXMgb3BlcmF0aW9ucy4KKyAgICAv
LyBUaGlzIHNob3VsZCByZXR1cm4gZmFsc2UgaWYgdGhlcmUncmUgbm8gcGVuZGluZyBvcGVyYXRp
b25zLgorICAgIHZpcnR1YWwgYm9vbCB3YWl0Q29tcGxldGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9
CisKICAgICAvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IHBsYXRmb3JtLXNwZWNpZmljIEFz
eW5jRmlsZVN5c3RlbSBpbnN0YW5jZSBpZiB0aGUgcGxhdGZvcm0gaGFzIGl0cyBvd24gaW1wbGVt
ZW50YXRpb24uCiAgICAgc3RhdGljIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiByb290UGF0aCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAppbmRl
eCA2Y2VlMjQ2MjliN2I4NmZhYzI3YTI1YjViM2FjYWIzODkzZDcwYmE4Li5lYTFiYTg5YTNlNzcy
ZjMxYzQzODc4M2Y0ZDUwMTYyZDcwYWUzY2M5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CkBAIC02NiwxMSArNjYsMTMgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAjaW5jbHVkZSAi
QXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUg
IkRPTUZpbGVTeXN0ZW1TeW5jLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5oIgogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIK
KyNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0zNjYsNiArMzY4LDI1IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cmVxdWVzdEZp
bGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTCiAgICAg
TG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlz
LCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcykpOwogfQogCitQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW1TeW5jPiBXb3JrZXJDb250ZXh0OjpyZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5
cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IDA7Cisg
ICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgeworICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIGZp
bGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKTsK
KyAgICBpZiAoZmlsZVN5c3RlbVR5cGUgIT0gQXN5bmNGaWxlU3lzdGVtOjpUZW1wb3JhcnkgJiYg
ZmlsZVN5c3RlbVR5cGUgIT0gQXN5bmNGaWxlU3lzdGVtOjpQZXJzaXN0ZW50KSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICBGaWxlU3lzdGVtU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcjsKKyAgICBMb2NhbEZp
bGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlcXVlc3RGaWxlU3lzdGVtKHRoaXMsIGZpbGVT
eXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGUoaGVscGVyLnN1Y2Nl
c3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB0aGlzKSwgdHJ1ZSk7CisgICAg
cmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOworfQorCiBDT01QSUxFX0FTU0VSVChzdGF0aWNf
Y2FzdDxpbnQ+KFdvcmtlckNvbnRleHQ6OlRFTVBPUkFSWSkgPT0gc3RhdGljX2Nhc3Q8aW50PihB
c3luY0ZpbGVTeXN0ZW06OlRlbXBvcmFyeSksIGVudW1fbWlzbWF0Y2gpOwogQ09NUElMRV9BU1NF
UlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250ZXh0OjpQRVJTSVNURU5UKSA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6UGVyc2lzdGVudCksIGVudW1fbWlzbWF0Y2gpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oIGIvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCA0MTI4YTU2MjNiOGVmOGFkYzM0MjA3
NDE1M2EwZWE0YzZiOTg0ZDhmLi4wYzQ5NWQ0YzMwMWVkYzUzOGIzNWY2MjBkMjE3MzY5NTkyYWZj
M2RkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisrKyBiL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIERhdGFiYXNlOwogICAgIGNsYXNzIERhdGFiYXNlQ2FsbGJh
Y2s7CiAgICAgY2xhc3MgRGF0YWJhc2VTeW5jOworICAgIGNsYXNzIERPTUZpbGVTeXN0ZW1TeW5j
OwogICAgIGNsYXNzIEVycm9yQ2FsbGJhY2s7CiAgICAgY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNr
OwogICAgIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlcjsKQEAgLTEzMCw2ICsxMzEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQRVJTSVNURU5ULAogICAgICAgICB9OwogICAg
ICAgICB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFz
c1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsK
KyAgICAgICAgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gcmVxdWVzdEZpbGVTeXN0ZW1T
eW5jKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAK
ICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3IgR0MgbWFya2luZy4gU2VlIEpT
V29ya2VyQ29udGV4dDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYpIGluCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5pZGwKaW5kZXggM2UxODVjMGQ1YjhlMGExMzdiZDkyOGM1MmEyZGJhODE3NWY4MDMz
Ny4uYWE0MGZmM2Y4MjA5ZTFmMzgyODZiYTI1NzNlNjFmYjA2NTk5NjEzYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmlkbApAQCAtMTA4LDcgKzEwOCw4IEBAIG1vZHVsZSB0aHJlYWRzIHsKICNp
ZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJiYgRU5BQkxFX0ZJTEVfU1lTVEVNCiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFSWSA9IDA7CiAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IFBFUlNJU1RFTlQgPSAxOwotICAgICAgICBbRW5hYmxlZEF0UnVudGltZV0g
dm9pZCByZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxv
bmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNh
bGxiYWNrKTsKKyAgICAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gdm9pZCByZXF1
ZXN0RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwg
aW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFj
aywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsK
KyAgICAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRE9NRmlsZVN5c3RlbVN5bmMg
cmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGluIHVuc2lnbmVkIHNob3J0IHR5cGUsIGluIGxvbmcgbG9u
ZyBzaXplKSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwogCiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBbRW5hYmxlZEF0UnVudGltZT1GaWxlU3lzdGVtXSBGbGFnc0NvbnN0cnVjdG9yIEZsYWdz
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2ODVhYzIwMTc4YTQyNGNjMjNiMDg4NGJhZTA4ZDll
M2FjOGQwZThhLi4xNjkxMDNiNjg1ZjBhYjJlOWE2YjBhNjlhZWQ3YjE1MjE5NTZjYzhmIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0xMC0wMSAgS2ludWtvIFlhc3VkYSAgPGtp
bnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIEZpbGVTeXN0ZW1TeW5jIGltcGxlbWVudGF0aW9uIGZvciBXb3JrZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDQ0CisK
KyAgICAgICAgKiBzcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYWxGaWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5c3RlbSk6IEFkZGVkIGEgbmV3IHBh
cmFtZXRlcgorICAgICAgICBzeW5jaHJvbm91cy4KKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQmFz
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6Om9wZW5GaWxlU3lzdGVtKTog
QWRkZWQgYSBuZXcgcGFyYW1ldGVyCisgICAgICAgIHN5bmNocm9ub3VzLgorICAgICAgICAqIHNy
Yy9XZWJXb3JrZXJCYXNlLmg6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuaDoK
KyAgICAgICAgKiBzcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OndhaXRDb21wbGV0aW9u
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bTo6Y3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSk6IFVwZGF0ZWQgdG8gc3Rv
cmUgY3JlYXRlZCBicmlkZ2UgdG8gYSBtZW1iZXIgdmFyaWFibGUgc28gdGhhdCBsYXRlcgorICAg
ICAgICB3ZSBjYW4gY2FsbCBicmlkZ2UtPnN0b3AoKSB3aGVuIFJ1bkxvb3AgaXMgdGVybWluYXRl
ZCBkdXJpbmcKKyAgICAgICAgd2FpdENvbXBsZXRpb24uCisgICAgICAgICogc3JjL1dvcmtlckFz
eW5jRmlsZVN5c3RlbUNocm9taXVtLmg6CisKIDIwMTAtMDktMzAgIEFsZXhleSBNYXJpbmljaGV2
ICA8YW1hcmluaWNoZXZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlz
IE1hcnJpbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxGaWxlU3lzdGVt
Q2hyb21pdW0uY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1
bS5jcHAKaW5kZXggYTRmMmQ3MjM3ODk1NmVlMTI1MzcwODhmYzJhYzk5YWUxNTRkZGQ2OS4uOTZm
NDBmYmU4MjYyYjZiN2EzYjNiODQ0Mjc2YWIzNTY4MTZkM2E5NCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
TG9jYWxGaWxlU3lzdGVtJiBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpCiAgICAg
cmV0dXJuICpsb2NhbEZpbGVTeXN0ZW07CiB9CiAKLXZvaWQgTG9jYWxGaWxlU3lzdGVtOjpyZXF1
ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVT
eXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVt
OjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBib29sIHN5bmNocm9ub3VzKQogewogICAgIEFTU0VSVChjb250
ZXh0KTsKICAgICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKSB7CkBAIC02OCw3ICs2OCw3IEBA
IHZvaWQgTG9jYWxGaWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBBc3luY0ZpCiAgICAgICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNv
bnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCk7CiAgICAgICAgIFdv
cmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQcm94eSA9ICZ3b3JrZXJDb250ZXh0LT50aHJl
YWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKTsKICAgICAgICAgV2ViV29ya2VyQmFzZSogd2ViV29y
a2VyID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KHdvcmtlckxvYWRlclByb3h5KTsKLSAg
ICAgICAgd2ViV29ya2VyLT5vcGVuRmlsZVN5c3RlbShzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVt
OjpUeXBlPih0eXBlKSwgc2l6ZSwgbmV3IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxi
YWNrcywgY29udGV4dCkpOworICAgICAgICB3ZWJXb3JrZXItPm9wZW5GaWxlU3lzdGVtKHN0YXRp
Y19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBzaXplLCBuZXcgV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzLCBjb250ZXh0KSwgc3luY2hyb25vdXMpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKaW5kZXggZjRmNTkyMTVkMGZm
MGY5MjJjMDBhYWY3NjBjNDk1Njg3M2M5ZDJkNy4uZGU0ODU4YzlhODZkOTcxOTYzNTI1ZTIwNTU3
NDRhOTk4YzE5NDk2NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJC
YXNlLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3BwCkBAIC0y
MzcsMTEgKzIzNywyMyBAQCBib29sIFdlYldvcmtlckJhc2U6OmFsbG93RGF0YWJhc2UoV2ViRnJh
bWUqLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cgogfQogCiAjaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQotdm9pZCBXZWJXb3JrZXJCYXNlOjpvcGVuRmlsZVN5c3RlbShXZWJGaWxl
U3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
KiBjYWxsYmFja3MpCit2b2lkIFdlYldvcmtlckJhc2U6Om9wZW5GaWxlU3lzdGVtKFdlYkZpbGVT
eXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3Mq
IGNhbGxiYWNrcywgYm9vbCBzeW5jaHJvbm91cykKIHsKKyAgICBXb3JrZXJSdW5Mb29wJiBydW5M
b29wID0gbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKTsKICAgICBXb3JrZXJTY3JpcHRDb250cm9s
bGVyKiBjb250cm9sbGVyID0gV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Y29udHJvbGxlckZvckNv
bnRleHQoKTsKLSAgICBSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJp
ZGdlID0gV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlKHRoaXMsIGNvbnRy
b2xsZXItPndvcmtlckNvbnRleHQoKSwgY2FsbGJhY2tzKTsKLSAgICBicmlkZ2UtPnBvc3RPcGVu
RmlsZVN5c3RlbVRvTWFpblRocmVhZChjb21tb25DbGllbnQoKSwgdHlwZSwgc2l6ZSwgb3BlbkZp
bGVTeXN0ZW1Nb2RlKTsKKyAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gY29udHJv
bGxlci0+d29ya2VyQ29udGV4dCgpOworCisgICAgLy8gQ3JlYXRlIGEgdW5pcXVlIG1vZGUgZm9y
IHRoaXMgb3BlbkZpbGVTeXN0ZW0gY2FsbC4KKyAgICBTdHJpbmcgbW9kZSA9IG9wZW5GaWxlU3lz
dGVtTW9kZTsKKyAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5Mb29wLmNyZWF0ZVVu
aXF1ZUlkKCkpKTsKKworICAgIFJlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
PiBicmlkZ2UgPSBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGUodGhpcywg
d29ya2VyQ29udGV4dCwgY2FsbGJhY2tzKTsKKyAgICBicmlkZ2UtPnBvc3RPcGVuRmlsZVN5c3Rl
bVRvTWFpblRocmVhZChjb21tb25DbGllbnQoKSwgdHlwZSwgc2l6ZSwgbW9kZSk7CisKKyAgICBp
ZiAoc3luY2hyb25vdXMpIHsKKyAgICAgICAgaWYgKHJ1bkxvb3AucnVuSW5Nb2RlKHdvcmtlckNv
bnRleHQsIG1vZGUpID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCisgICAgICAgICAgICBicmlk
Z2UtPnN0b3AoKTsKKyAgICB9CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJCYXNlLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJh
c2UuaAppbmRleCAxZjRiYzAzMTY5ODhkMDIwNDVjMDQ2NmFlZTc2YmMwOWFlZjBiNDA4Li5mZTg0
YmY3OGZhMDA2MDA0YTJjMzEwMGM1ODJlNTczNzVlZDIyMmNjIDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckJhc2UuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCiAgICAgLy8gUmVxdWVzdHMgdG8gb3BlbiBhIGZpbGUgc3lzdGVtIGZvciB0aGlz
IHdvcmtlci4gKE5vdGUgdGhhdCB0aGlzIGlzIG5vdCB0aGUgaW1wbGVtZW50YXRpb24gZm9yIFdl
YkZyYW1lQ2xpZW50OjpvcGVuRmlsZVN5c3RlbS4pCi0gICAgdm9pZCBvcGVuRmlsZVN5c3RlbShX
ZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyopOworICAgIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBs
b25nIHNpemUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqLCBib29sIHN5bmNocm9ub3VzKTsKICNl
bmRpZgogCiAgICAgLy8gRXhlY3V0ZXMgdGhlIGdpdmVuIHRhc2sgb24gdGhlIG1haW4gdGhyZWFk
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNo
cm9taXVtLmNwcAppbmRleCBiMjFiNzA5ZTc2ZjljOWE0Y2EzMGNmMmUyZWI0MWI4ODk5ZGVmODli
Li5mZjEzYWNiNjZjOTZjYTQwOWU2M2VjNjk3OTc0ZGFkNDY0MzNkNTBjIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcApA
QCAtNzEsNiArNzEsMjEgQEAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06On5Xb3JrZXJB
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSgpCiB7CiB9CiAKK2Jvb2wgV29ya2VyQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW06OndhaXRDb21wbGV0aW9uKCkKK3sKKyAgICBpZiAoIW1fYnJpZGdlRm9yTGFz
dE9wZXJhdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV29ya2VyU2Ny
aXB0Q29udHJvbGxlciogY29udHJvbGxlciA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmNvbnRy
b2xsZXJGb3JDb250ZXh0KCk7CisgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IGNv
bnRyb2xsZXItPndvcmtlckNvbnRleHQoKTsKKyAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0g
d29ya2VyQ29udGV4dC0+dGhyZWFkKCktPnJ1bkxvb3AoKTsKKyAgICBpZiAocnVuTG9vcC5ydW5J
bk1vZGUod29ya2VyQ29udGV4dCwgbV9tb2RlKSA9PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7
CisgICAgICAgIG1fYnJpZGdlRm9yTGFzdE9wZXJhdGlvbi0+c3RvcCgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjptb3ZlKGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7CiAgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZShjYWxsYmFja3MpLT5wb3N0TW92ZVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHNv
dXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwgbV9tb2RlKTsKQEAgLTEyMyw3ICsxMzgsOCBAQCB2
b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiwgY29uc3QgUwogCiBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U+IFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgcmV0dXJuIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OmNyZWF0ZShtX3dvcmtlciwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBuZXcgV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV9icmlkZ2VGb3JMYXN0
T3BlcmF0aW9uID0gV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlKG1fd29y
a2VyLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1D
YWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIHJldHVybiBtX2JyaWRnZUZvckxhc3RPcGVy
YXRpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAppbmRleCA3Y2QzNGI5N2Zh
NGU3NDllMWViZjhiYzNkNjlhMDlmM2M2Zjk2MjQ2Li44YTM4NGM3ZDExZDVlYWRhM2I2NDhhZTQy
OGQyMDRlMGY5NjIyNTdkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFz
eW5jRmlsZVN5c3RlbUNocm9taXVtLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJB
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oCkBAIC01OCw2ICs1OCw5IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgfldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKCk7CiAKKyAgICAvLyBSdW5z
IG9uZSBwZW5kaW5nIG9wZXJhdGlvbiAodG8gd2FpdCBmb3IgY29tcGxldGlvbiBpbiB0aGUgc3lu
Yy1tb2RlKS4KKyAgICB2aXJ0dWFsIGJvb2wgd2FpdENvbXBsZXRpb24oKTsKKwogICAgIHZpcnR1
YWwgdm9pZCBtb3ZlKGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAg
dmlydHVhbCB2b2lkIGNvcHkoY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKQEAgLTc2LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAg
V2ViS2l0OjpXZWJGaWxlU3lzdGVtKiBtX3dlYkZpbGVTeXN0ZW07CiAgICAgV2ViS2l0OjpXZWJX
b3JrZXJCYXNlKiBtX3dvcmtlcjsKKyAgICBSZWZQdHI8V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlPiBtX2JyaWRnZUZvckxhc3RPcGVyYXRpb247CiAgICAgU3RyaW5nIG1f
bW9kZTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69899</attachid>
            <date>2010-10-06 01:32:43 -0700</date>
            <delta_ts>2010-10-06 01:50:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47044-20101006013242.patch</filename>
            <type>text/plain</type>
            <size>95526</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YTZmY2JkMjlhNzAyMGM2OTE1MTgzN2ZhNWQxNjhlOTYzZTMwYmIyLi5mNDgyOWQy
OGE1YTUzZDBmMmYzMDcyMTExYjZmOTI5NDM1Y2JmMzAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTAtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVt
U3luYyBpbXBsZW1lbnRhdGlvbiBmb3IgV29ya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA0NAorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L2FzeW5jLW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qczoKKyAgICAgICAgKiBmYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9mbGFncy1wYXNzaW5nLmpzOgorICAgICAg
ICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRp
b25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBs
ZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0
bWw6IEFkZGVkLgorCiAyMDEwLTEwLTA2ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCB0ZXN0IGV4cGVjdGF0aW9uIHVwZGF0ZS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhODJmYzA0YTk3ZDEzZmM5YjAwYzZhZDFkYmYzZmM2YTQxNWY3MmYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy5o
dG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL2FzeW5jLW9wZXJhdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUwOTA0MWE1YThkNjJhOWQy
ZWRlNzI5ODIyZjk0YWFlMDNmMTJjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcwpAQCAtMCwwICsxLDEw
MiBAQAorZGVzY3JpcHRpb24oIlRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0g
b3BlcmF0aW9ucy4iKTsKKwordmFyIGZpbGVTeXN0ZW0gPSBudWxsOworCit2YXIgYTsKK3ZhciBi
OwordmFyIGM7Cit2YXIgZDsKKwordmFyIHBhdGhzID0gW107Cit2YXIgZGlyc0NvdW50ID0gMDsK
K3ZhciByZWFkZXIgPSBudWxsOworCitmdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Cisg
ICAgZGVidWcoIkdvdCBlcnJvcjogIiArIGVycm9yLmNvZGUpOworICAgIHJlbW92ZVJlY3Vyc2l2
ZWx5KGZpbGVTeXN0ZW0ucm9vdCk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9u
IGVudHJpZXNDYWxsYmFjayhlbnRyaWVzKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRy
aWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHBhdGhzLnB1c2goZW50cmllc1tpXS5mdWxsUGF0
aCk7CisgICAgICAgIGlmIChlbnRyaWVzW2ldLmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgZGly
c0NvdW50Kys7CisgICAgfQorICAgIGlmICghZW50cmllcy5sZW5ndGgpIHsKKyAgICAgICAgcmVh
ZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcGF0aHMuc29ydCgpOworICAgICAgICBzaG91bGRCZSgnIicgKyBwYXRo
cy5qb2luKCcsJykgKyAnIicsICciL2EsL2IsL2MsL2QyLC9lLC9mIicpOworICAgICAgICBzaG91
bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKKyAgICAgICAgcmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5
c3RlbS5yb290KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlv
biB2ZXJpZnkoKSB7CisgICAgZGVidWcoIlZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMu
Iik7CisgICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOworICAgIHJl
YWRlci5yZWFkRW50cmllcyhlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworfQorCitm
dW5jdGlvbiBhc3luY1Rlc3QyKCkgeworICAgIGRlYnVnKCJTdGFydGluZyBhc3luYyB0ZXN0IHN0
YWdlIDIuIik7CisKKyAgICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKKyAgICB2YXIg
ZG9uZSA9IGZ1bmN0aW9uKCkgeyBoZWxwZXIuZG9uZSgpOyB9OworCisgICAgaGVscGVyLnJ1bihm
dW5jdGlvbigpIHsgYS5jb3B5VG8oYiwgJ3RtcCcsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsK
KyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBhLmdldE1ldGFkYXRhKGRvbmUsIGVycm9yQ2Fs
bGJhY2spOyB9KTsKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBiLmdldFBhcmVudChkb25l
LCBlcnJvckNhbGxiYWNrKTsgfSk7CisgICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYy5jb3B5
VG8oZmlsZVN5c3RlbS5yb290LCAnZicsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKKyAgICBo
ZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBkLm1vdmVUbyhmaWxlU3lzdGVtLnJvb3QsICdkMicsIGRv
bmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxl
U3lzdGVtLnJvb3QuZ2V0RmlsZSgnZScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJh
Y2spOyB9KTsKKworICAgIGhlbHBlci5qb2luKHZlcmlmeSk7Cit9CisKK2Z1bmN0aW9uIGFzeW5j
VGVzdDEoKSB7CisgICAgZGVidWcoIlN0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4iKTsKKwor
ICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigpOworICAgIHZhciByb290ID0gZmlsZVN5
c3RlbS5yb290OworCisgICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCdh
Jywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgYSA9IGVudHJ5Owor
ICAgICAgICBoZWxwZXIuZG9uZSgpOworICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKKworICAg
IGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0
cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgYiA9IGVudHJ5OworICAgICAgICBoZWxw
ZXIuZG9uZSgpOworICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKKworICAgIGhlbHBlci5ydW4o
ZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdjJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rp
b24oZW50cnkpIHsKKyAgICAgICAgYyA9IGVudHJ5OworICAgICAgICBoZWxwZXIuZG9uZSgpOwor
ICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKKworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7
IHJvb3QuZ2V0RmlsZSgnZCcsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7CisgICAg
ICAgIGQgPSBlbnRyeTsKKyAgICAgICAgaGVscGVyLmRvbmUoKTsKKyAgICB9LCBlcnJvckNhbGxi
YWNrKTsgfSk7CisKKyAgICBoZWxwZXIuam9pbihhc3luY1Rlc3QyKTsKK30KKworaWYgKHRoaXMu
cmVxdWVzdEZpbGVTeXN0ZW0pIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB2YXIg
aGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgewor
ICAgIHJlcXVlc3RGaWxlU3lzdGVtLmFwcGx5KHRoaXMsIFt0aGlzLlRFTVBPUkFSWSwgMTAwLCBm
dW5jdGlvbihmcykgeworICAgICAgICBkZWJ1ZygiR290IEZpbGVTeXN0ZW06IiArIGZzLm5hbWUp
OworICAgICAgICBmaWxlU3lzdGVtID0gZnM7CisgICAgICAgIHJlbW92ZVJlY3Vyc2l2ZWx5KGZp
bGVTeXN0ZW0ucm9vdCwgZnVuY3Rpb24oKXsgaGVscGVyLmRvbmUoKTsgfSwgZXJyb3JDYWxsYmFj
ayk7CisgICAgfSwgZXJyb3JDYWxsYmFja10pOyB9KTsKKyAgICBkZWJ1ZygicmVxdWVzdGVkIEZp
bGVTeXN0ZW0uIik7CisgICAgaGVscGVyLmpvaW4oYXN5bmNUZXN0MSk7Cit9IGVsc2UKKyAgICBk
ZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wcmUuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcwppbmRleCA4
NGUwZmFkOTUxNmIxNTIxYzU0MzhlMGNhYzBmZmNiMWYwODE3ZTBkLi4zZWNkNzA5MDdmNGU1ZTZi
M2QwZTlkYTVkOWY3OGZkNzAwMjQxNjVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcworKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcwpAQCAtMTAs
NiArMTAsNyBAQCBmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQogewogICAgIGRl
YnVnKCdTdGFydGluZyB3b3JrZXI6ICcgKyB0ZXN0U2NyaXB0VVJMKTsKICAgICB2YXIgd29ya2Vy
ID0gbmV3IFdvcmtlcignLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKKyAgICB3
b3JrZXIucG9zdE1lc3NhZ2UoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKICAgICB3
b3JrZXIucG9zdE1lc3NhZ2UodGVzdFNjcmlwdFVSTCk7CiAgICAgd29ya2VyLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1NjVh
OWMzMjJjNDlmOTA2Y2I1ZDY4MDU5ZjM1NDMwZDA5NmIzMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzCkBA
IC0wLDAgKzEsMzggQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IG1ha2luZyBtdWx0aXBsZSBzeW5jaHJv
bm91cyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuIik7CisKK3ZhciBmaWxlU3lzdGVtID0gcmVxdWVz
dEZpbGVTeXN0ZW1TeW5jKHRoaXMuVEVNUE9SQVJZLCAxMDApOworCisvLyBTdGFnZSAxIChwcmVw
YXJlKQordmFyIGEgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1ZX0p
OwordmFyIGIgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVl
fSk7Cit2YXIgYyA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRy
dWV9KTsKK3ZhciBkID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2QnLCB7Y3JlYXRlOnRydWV9
KTsKKworLy8gU3RhZ2UgMiAodGVzdCkKK3ZhciBhX2NvcHkgPSBhLmNvcHlUbyhiLCAndG1wJyk7
Cit2YXIgbWV0YWRhdGEgPSBhLmdldE1ldGFkYXRhKCk7Cit2YXIgYl9wYXJlbnQgPSBiLmdldFBh
cmVudCgpOwordmFyIGNfY29weSA9IGMuY29weVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2YnKTsKK3Zh
ciBkX25ldyA9IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2QyJyk7Cit2YXIgZSA9IGZpbGVT
eXN0ZW0ucm9vdC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSk7CisKKy8vIFZlcmlmeQordmFy
IHJlYWRlciA9IGZpbGVTeXN0ZW0ucm9vdC5jcmVhdGVSZWFkZXIoKTsKK3ZhciBkaXJzQ291bnQg
PSAwOwordmFyIHBhdGhzID0gW107CitkbyB7CisgICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVh
ZEVudHJpZXMoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgcGF0aHMucHVzaChlbnRyaWVzW2ldLmZ1bGxQYXRoKTsKKyAgICAgICAgaWYg
KGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCisgICAgICAgICAgICBkaXJzQ291bnQrKzsKKyAgICB9
Cit9IHdoaWxlIChlbnRyaWVzLmxlbmd0aCk7CisKK3BhdGhzLnNvcnQoKTsKK3Nob3VsZEJlKCci
JyArIHBhdGhzLmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7CitzaG91
bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKK3JlbW92ZVJlY3Vyc2l2ZWx5KGZpbGVTeXN0ZW0ucm9v
dCk7CitmaW5pc2hKU1Rlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZsYWdz
LXBhc3NpbmcuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2Zs
YWdzLXBhc3NpbmcuanMKaW5kZXggZGJmZWVkZTg1ZGU4OTFlNzkxMDYyNmJmODBiOTNiYWU2ZGUy
OThmYS4uOWIwNjQyNzMwY2VmZGI2NTk4MTI5OWNmMTk4YTA3ZDI1ZjY0YWE2ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9mbGFncy1wYXNzaW5n
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3Mt
cGFzc2luZy5qcwpAQCAtOTQsOCArOTQsOCBAQCBmdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2so
ZnMpIHsKIH0KIAogaWYgKHdpbmRvdy5yZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIHJlcXVlc3RG
aWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgcmVxdWVz
dEZpbGVTeXN0ZW0od2luZG93LlRFTVBPUkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOwogfSBlbHNlCiAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxl
U3lzdGVtIEFQSSBzdXBwb3J0LiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmViZWQ2OGQyOTExN2ZmYzFjZTJiMzQyNDVhNGYxMDNkYTFkYzliMDgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3lu
Yy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3RzIHJ1
bm5pbmcgbXVsdGlwbGUgYXN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtlci4KKwor
U3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcworRGVzY3Jp
cHRpb246IFRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4K
K3JlcXVlc3RlZCBGaWxlU3lzdGVtLgorR290IEZpbGVTeXN0ZW06aHR0cF9sb2NhbGhvc3RfODA4
MDpUZW1wb3JhcnkKK1N0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4KK1N0YXJ0aW5nIGFzeW5j
IHRlc3Qgc3RhZ2UgMi4KK1ZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMuCitQQVNTOiAi
L2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgorUEFTUzogZGlyc0Nv
dW50IGlzIDMKK0RPTkUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2E3Y2M0ZjY0NjMzYjhhOWRkNjZkNzBiYzFhMTdiMDJkZWVkNGFmZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJh
dGlvbnMuaHRtbApAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUg
YXN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtlci48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2FzeW5jLW9w
ZXJhdGlvbnMuanMnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13
b3JrZXItdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3Rl
bnQtc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAppbmRleCAyM2ViZmJkNGI2OTQ2
MDI0ODQyN2RjNTcwMjdiMmM2NTJjOTlmM2MyLi4wNmFiNWY1Yjk2Y2ZlODA1Y2RmN2M4NTA4MDRl
N2Y5ZTIxMmJkMzRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVk
LnR4dApAQCAtMiw3ICsyLDEwIEBAIFRoaXMgdGVzdHMgcmVxdWVzdGluZyBQRVJTSVNURU5UIEZp
bGVTeXN0ZW1TeW5jIGluIFdvcmtlci4KIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMv
c2ltcGxlLXBlcnNpc3RlbnQtc3luYy5qcwogRGVzY3JpcHRpb246IHJlcXVlc3RGaWxlU3lzdGVt
U3luYyBQRVJTSVNURU5UIHRlc3QuCi1Hb3QgZXJyb3IgZnJvbSB3b3JrZXI6IFVuY2F1Z2h0IFJl
ZmVyZW5jZUVycm9yOiByZXF1ZXN0RmlsZVN5c3RlbVN5bmMgaXMgbm90IGRlZmluZWQKK1N1Y2Nl
c3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50
CitQQVNTOiBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTOiBmaWxlU3lz
dGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCitET05FCiAKIFRFU1QgQ09NUExFVEUKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFy
eS1zeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQKaW5kZXggMGUyMWMwMjgzNDFjOGI5
MDZiNmYzYjYyMzM1NDdiMDgwYmM4YzkxZS4uMjhiZTA5MGZkNDY1ODkxMTk2MGFmYzkzOWZkZDg5
YWM5MTkzNDMwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0
CkBAIC0yLDcgKzIsMTAgQEAgVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFRFTVBPUkFSWSBGaWxlU3lz
dGVtU3luYyBpbiBXb3JrZXIuCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3NpbXBs
ZS10ZW1wb3Jhcnktc3luYy5qcwogRGVzY3JpcHRpb246IHJlcXVlc3RGaWxlU3lzdGVtU3luYyBU
RU1QT1JBUlkgdGVzdC4KLUdvdCBlcnJvciBmcm9tIHdvcmtlcjogVW5jYXVnaHQgUmVmZXJlbmNl
RXJyb3I6IHJlcXVlc3RGaWxlU3lzdGVtU3luYyBpcyBub3QgZGVmaW5lZAorU3VjY2Vzc2Z1bGx5
IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5CitQQVNTOiBm
aWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTOiBmaWxlU3lzdGVtLnJvb3Qu
ZnVsbFBhdGggaXMgIi8iCitET05FCiAKIFRFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9u
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM4NTVkNWQ2ZTMyZTc4YTAzNjYxNjIxNjYxMmY5
ZDY3YWU0MjJhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGhpcyB0ZXN0cyBydW5uaW5nIG11bHRpcGxlIHN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGlu
IFdvcmtlci4KKworU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25z
LmpzCitEZXNjcmlwdGlvbjogVGVzdCBtYWtpbmcgbXVsdGlwbGUgc3luY2hyb25vdXMgRmlsZVN5
c3RlbSBvcGVyYXRpb25zLgorUEFTUzogIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9j
LC9kMiwvZSwvZiIKK1BBU1M6IGRpcnNDb3VudCBpcyAzCitET05FCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1v
cGVyYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5j
LW9wZXJhdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmFkZjA0NTIyYjY2ODk4ODgwNjAyNGE0Mzgw
MzgzYzQxZGE4ZjU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0
ZXN0cyBydW5uaW5nIG11bHRpcGxlIHN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtl
ci48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitzdGFydFdvcmtlcign
Li4vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDA5MzNmMzkxMWFkYjU2ODk4ZDQzN2RiODI1M2JhNWVkZGYwMjQxOTUuLjIx
ZDc1YWVkMDJhNWZhZGM3ZDViOTRlZTYzZjViMzQ3YTIxYjQxY2MgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIw
MTAtMTAtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVtU3lu
YyBpbXBsZW1lbnRhdGlvbiBmb3IgV29ya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NzA0NAorCisgICAgICAgIFRlc3RzOiBmYXN0L2ZpbGVzeXN0
ZW0vYXN5bmMtb3BlcmF0aW9ucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6
IFJlbW92ZWQKKyAgICAgICAgcmVxdWVzdEZpbGVTeXN0ZW1FbmFiYWxlZCgpIGFzIEkgY2hhbmdl
ZCB0aGUgaWRsL2dlbmVyYXRvciB0byB1c2UKKyAgICAgICAgZmlsZVN5c3RlbUVuYWJsZWQgZm9y
IGFsbCB0aGUgRmlsZVN5c3RlbSByZWxhdGVkIGZlYXR1cmVzLgorICAgICAgICAqIGZpbGVhcGkv
RE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5jcHA6IE1vdmVkIGVudHJ5IG1ldGhv
ZCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBmcm9tIERPTUZpbGVTeXN0ZW0uIEFsc28gZml4ZWQg
YWJicmV2aWF0ZWQgbmFtZXMgdG8gbm9uLWFiYnJldmlhdGVkCisgICAgICAgIG9uZXMgKGUuZy4g
c3JjIC0+IHNvdXJjZSkuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0
TWV0YWRhdGEpOiBNb3ZlZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpj
aGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZSk6IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjptb3ZlKTogTW92ZWQgZnJvbSBE
T01GaWxlU3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OmNvcHkp
OiBNb3ZlZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtQmFzZTo6cmVtb3ZlKTogTW92ZWQgZnJvbSBET01GaWxlU3lzdGVtLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OmdldFBhcmVudCk6IE1vdmVkIGZyb20gRE9NRmlsZVN5
c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRGaWxlKTogTW92
ZWQgZnJvbSBET01GaWxlU3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJh
c2U6OmdldERpcmVjdG9yeSk6IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpyZWFkRGlyZWN0b3J5KTogTW92ZWQgZnJvbSBET01G
aWxlU3lzdGVtLgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RPTUZp
bGVTeXN0ZW1TeW5jLmg6CisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50cnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlyZWN0b3J5RW50cnk6OmdldEZpbGUpOiBVcGRhdGVkIHRvIGNhbGwgRE9N
RmlsZVN5c3RlbUJhc2UKKyAgICAgICAgbWV0aG9kcyBpbnN0ZWFkIG9mIERPTUZpbGVTeXN0ZW0g
b25lcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5OjpnZXREaXJlY3RvcnkpOiBE
aXR0by4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9y
eUVudHJ5U3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeVN5bmM6Omdl
dEZpbGUpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5U3lu
Yzo6Z2V0RGlyZWN0b3J5KTogSW1wbGVtZW50ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMpOiBJbXBs
ZW1lbnRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVudHJ5OjpFbnRyeSk6IFVwZGF0ZWQgdG8gY2FsbCBET01GaWxlU3lzdGVtQmFzZSBtZXRob2Rz
LgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmdldE1ldGFkYXRhKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpFbnRyeTo6bW92ZVRvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbnRy
eTo6Y29weVRvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6cmVtb3ZlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6Z2V0UGFyZW50KTogRGl0dG8uCisgICAgICAg
ICogZmlsZWFwaS9FbnRyeS5oOgorICAgICAgICAqIGZpbGVhcGkvRW50cnkuaWRsOgorICAgICAg
ICAqIGZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50cnlB
cnJheVN5bmM6OmNyZWF0ZSk6IEFkZGVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlBcnJheVN5
bmMuaDoKKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
RW50cnlCYXNlOjpmaWxlc3lzdGVtKTogQWRkZWQuCisgICAgICAgICogZmlsZWFwaS9FbnRyeVN5
bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50cnlTeW5jOjpFbnRyeVN5bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6RW50cnlTeW5jOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkVudHJ5U3luYzo6Z2V0TWV0YWRhdGEpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkVudHJ5U3luYzo6bW92ZVRvKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbnRy
eVN5bmM6OmNvcHlUbyk6IEltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6RW50cnlTeW5j
OjpyZW1vdmUpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5U3luYy5oOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVF
bnRyeTo6RmlsZUVudHJ5KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVFbnRyeS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUVudHJ5OjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50cnlDYWxsYmFj
a3M6OmNyZWF0ZSk6IENoYW5nZWQgdG8gdGFrZSBET01GaWxlU3lzdGVtQmFzZQorICAgICAgICBp
bnN0ZWFkIG9mIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeUNhbGxiYWNr
czo6RW50cnlDYWxsYmFja3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVudHJpZXNDYWxs
YmFja3M6OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW50cmllc0NhbGxiYWNr
czo6RW50cmllc0NhbGxiYWNrcyk6IERpdHRvLgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN5c3Rl
bUNhbGxiYWNrcy5oOgorICAgICAgICAqIGZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0pOiBBZGRl
ZCBzeW5jaHJvbm91cworICAgICAgICBwYXJhbWV0ZXIuCisgICAgICAgICogZmlsZWFwaS9Mb2Nh
bEZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL1N5bmNDYWxsYmFja0hlbHBlci5oOiBB
ZGRlZC4gVGhpcyBkZWZpbmVzIGEgaGVscGVyIHRlbXBsYXRlCisgICAgICAgIGZvciBzeW5jaHJv
bm91cyBpbXBsZW1lbnRhaW9uIG92ZXIgY2FsbGJhY2tzLgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbTo6d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUpOiBB
ZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ29udGV4dDo6cmVxdWVzdEZpbGVTeXN0ZW1TeW5jKTogQWRkZWQuCisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmlkbDoKKwogMjAxMC0xMC0wNSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFmMzM1NWIz
ZDc3N2VjYWM0OTM0MDE4OWFiZGFkOGU1YjI5Y2UwZDQuLjAxMmNmNDk5NzM4NDllYjM5N2IzODdh
YzIwOWI0OGYyOTBlNzE0ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNTIwLDYgKzE1MjAsNyBAQAogICAgICAgICAgICAg
J2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRh
dGEuaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmgnLAorICAgICAg
ICAgICAgJ2ZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmgnLAogICAgICAgICAgICAgJ2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdoaXN0b3J5L21hYy9IaXN0b3J5
SXRlbU1hYy5tbScsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaAppbmRleCBiZTE4MzY2NTUzYjMyOWI3NDUwNzQ2MGI2ZThkMjMzNWI4ZWFk
MzY3Li5mNzNiOTIyNWJlZGE5OGQwMWQ3NGFhN2I4MGIxODdkYTVlOWE3NzVlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE1
MCw3ICsxNTAsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIHN0YXRp
YyBib29sIGZpbGVTeXN0ZW1FbmFibGVkKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0RmlsZVN5c3Rl
bUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyBib29sIHJlcXVlc3RGaWxlU3lzdGVtRW5hYmxlZCgpIHsgcmV0dXJu
IGlzRmlsZVN5c3RlbUVuYWJsZWQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZp
bGVTeXN0ZW0uY3BwCmluZGV4IDE3NDI4NDJkYTMxZjllMGRjZGVmZTgxYmEzM2U3YzYxMTJjOWQ4
OTQuLmIyZGYxM2I2YmI3NmVjYTY2Yjk2NzcxYzRkMmJiNTFiNjIzMDVhMWMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKQEAgLTM2LDE5ICszNiwxMyBAQAogI2luY2x1ZGUgIkFzeW5jRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5
RW50cnkuaCIKLSNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJFbnRyeS5o
IgotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgotI2luY2x1
ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNs
dWRlICJGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgwLDEyNCArNzQsNiBAQCB2b2lkIERPTUZpbGVT
eXN0ZW06OmNvbnRleHREZXN0cm95ZWQoKQogICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERl
c3Ryb3llZCgpOwogfQogCi12b2lkIERPTUZpbGVTeXN0ZW06OmdldE1ldGFkYXRhKGNvbnN0IEVu
dHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChl
bnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShw
bGF0Zm9ybVBhdGgsIE1ldGFkYXRhQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSk7Ci19Ci0KLXN0YXRpYyBib29sIGNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5
T3JNb3ZlKGNvbnN0IEVudHJ5KiBzcmMsIEVudHJ5KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSkKLXsKLSAgICBBU1NFUlQoc3JjKTsKLQotICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQt
PmlzRGlyZWN0b3J5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbmV3TmFt
ZS5pc0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShuZXdOYW1lKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IHRvIGNvcHkg
b3IgbW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxmIGF0IGFueSBkZXB0aCBpZiBpdCBpcyBhIGRp
cmVjdG9yeS4KLSAgICBpZiAoc3JjLT5pc0RpcmVjdG9yeSgpICYmIERPTUZpbGVQYXRoOjppc1Bh
cmVudE9mKHNyYy0+ZnVsbFBhdGgoKSwgcGFyZW50LT5mdWxsUGF0aCgpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY29weSBvciBtb3ZlIGFuIGVu
dHJ5IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlmZmVyZW50IGZyb20gaXRzIGN1cnJlbnQg
b25lIGlzbid0IHByb3ZpZGVkLgotICAgIGlmICgobmV3TmFtZS5pc0VtcHR5KCkgfHwgc3JjLT5u
YW1lKCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShzcmMtPmZ1bGxQ
YXRoKCkpID09IHBhcmVudC0+ZnVsbFBhdGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6bW92ZShjb25zdCBFbnRy
eSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwg
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JG
b3JDb3B5T3JNb3ZlKHNyYywgcGFyZW50LmdldCgpLCBuZXdOYW1lKSkgewotICAgICAgICBzY2hl
ZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmls
ZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZGVzdFBhdGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0g
ICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0
aDo6YXBwZW5kKGRlc3RQYXRoLCBuZXdOYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGRlc3RQYXRo
ID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgc3JjLT5uYW1lKCkpOwotCi0gICAgU3Ry
aW5nIHNyY1BsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9y
bVBhdGgoc3JjLT5mdWxsUGF0aCgpKTsKLSAgICBTdHJpbmcgZGVzdFBsYXRmb3JtUGF0aCA9IHBh
cmVudC0+ZmlsZXN5c3RlbSgpLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1Q
YXRoKGRlc3RQYXRoKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+bW92ZShzcmNQbGF0Zm9ybVBh
dGgsIGRlc3RQbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0UGF0aCwgc3JjLT5pc0RpcmVjdG9yeSgpKSk7
Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Y29weShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVm
UHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNy
YywgcGFyZW50LmdldCgpLCBuZXdOYW1lKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUo
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBTdHJpbmcgZGVzdFBhdGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0gICAgaWYgKCFuZXdOYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQ
YXRoLCBuZXdOYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6
OmFwcGVuZChkZXN0UGF0aCwgc3JjLT5uYW1lKCkpOwotCi0gICAgU3RyaW5nIHNyY1BsYXRmb3Jt
UGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc3JjLT5mdWxs
UGF0aCgpKTsKLSAgICBTdHJpbmcgZGVzdFBsYXRmb3JtUGF0aCA9IHBhcmVudC0+ZmlsZXN5c3Rl
bSgpLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RQYXRoKTsK
LSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y29weShzcmNQbGF0Zm9ybVBhdGgsIGRlc3RQbGF0Zm9y
bVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCB0aGlzLCBkZXN0UGF0aCwgc3JjLT5pc0RpcmVjdG9yeSgpKSk7Ci19Ci0KLXZvaWQgRE9N
RmlsZVN5c3RlbTo6cmVtb3ZlKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQotewotICAgIEFTU0VSVChlbnRyeSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRo
KCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUocGxhdGZvcm1QYXRoLCBWb2lkQ2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Ci19Ci0KLXZv
aWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoZW50cnkpOwotICAgIFN0cmluZyBwYXRo
ID0gRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShlbnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgU3Ry
aW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBh
dGgocGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9y
bVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCB0aGlzLCBwYXRoLCB0cnVlKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0Rmls
ZShjb25zdCBFbnRyeSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdz
PiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoYmFzZSk7
Ci0gICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpIHsKLSAgICAgICAgc2No
ZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yQ2FsbGJhY2ssIEZp
bGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgU3RyaW5nIGFic29sdXRlUGF0aCA9IHBhdGg7Ci0gICAgaWYgKCFE
T01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSkKLSAgICAgICAgYWJzb2x1dGVQYXRoID0gRE9N
RmlsZVBhdGg6OnJlbW92ZUV4dHJhUGFyZW50UmVmZXJlbmNlcyhET01GaWxlUGF0aDo6YXBwZW5k
KGJhc2UtPmZ1bGxQYXRoKCksIHBhdGgpKTsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9h
c3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChhYnNvbHV0ZVBhdGgpOwotCi0g
ICAgT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBFbnRyeUNhbGxiYWNrczo6Y3Jl
YXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCBm
YWxzZSk7Ci0gICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQotICAgICAgICBtX2Fz
eW5jRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShwbGF0Zm9ybVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2
ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYXN5bmNGaWxl
U3lzdGVtLT5maWxlRXhpc3RzKHBsYXRmb3JtUGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci19
Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChiYXNlKTsKLSAgICBpZiAoIURPTUZpbGVQYXRo
Ojppc1ZhbGlkUGF0aChwYXRoKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTdHJp
bmcgYWJzb2x1dGVQYXRoID0gcGF0aDsKLSAgICBpZiAoIURPTUZpbGVQYXRoOjppc0Fic29sdXRl
KHBhdGgpKQotICAgICAgICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQ
YXJlbnRSZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0
aCkpOwotICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVh
bFRvUGxhdGZvcm1QYXRoKGFic29sdXRlUGF0aCk7Ci0KLSAgICBPd25QdHI8RW50cnlDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIHRydWUpOwotICAgIGlmIChmbGFncyAm
JiBmbGFncy0+aXNDcmVhdGUoKSkKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZURp
cmVjdG9yeShwbGF0Zm9ybVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVs
ZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlF
eGlzdHMocGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLX0KLQogdm9pZCBET01G
aWxlU3lzdGVtOjpjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRy
PEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGZpbGUpOwpAQCAtMjA5LDEzICs4
NSw2IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSog
ZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsCiAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNy
ZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxl
YXNlKCkpOwogfQogCi12b2lkIERPTUZpbGVTeXN0ZW06OnJlYWREaXJlY3RvcnkoRGlyZWN0b3J5
UmVhZGVyKiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQotewotICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSk7Ci0g
ICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0
Zm9ybVBhdGgocGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGxh
dGZvcm1QYXRoLCBFbnRyaWVzQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrLCByZWFkZXIsIHBhdGgpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtLmggYi9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDkwOGMx
NmM5NDNlY2FkZjY5MTIzMmM2MDQ0YWRjZWFkZDU0OWJjYWIuLjBlZjJlMGY3ZTVmMGMzMTYyY2Zm
Y2RlYWNlMjA3ODYzMjU1ODJlN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtMzQsMjYg
KzM0LDE0IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9NRmls
ZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJGbGFncy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEaXJlY3RvcnlFbnRyeTsKLWNsYXNzIERpcmVjdG9yeVJlYWRl
cjsKLWNsYXNzIEVudHJ5OwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVudHJpZXNDYWxs
YmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7CiBjbGFzcyBGaWxlRW50cnk7CiBjbGFzcyBGaWxl
V3JpdGVyQ2FsbGJhY2s7Ci1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgVm9pZENhbGxi
YWNrOwogCiBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlLCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTY5LDE1ICs1Nyw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAotICAgIC8vIEFjdHVhbCBGaWxlU3lzdGVt
IEFQSSBpbXBsZW1lbnRhdGlvbnMuICBBbGwgdGhlIHZhbGlkaXR5IGNoZWNrcyBvbiB2aXJ0dWFs
IHBhdGhzIGFyZSBkb25lIGF0IERPTUZpbGVTeXN0ZW0gbGV2ZWwuCi0gICAgdm9pZCBnZXRNZXRh
ZGF0YShjb25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwot
ICAgIHZvaWQgbW92ZShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgdm9pZCBjb3B5KGNvbnN0IEVudHJ5KiBzcmMsIFBhc3NS
ZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHJlbW92ZShj
b25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPik7Ci0gICAgdm9pZCBnZXRQYXJlbnQoY29uc3QgRW50cnkqIGVudHJ5LCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAg
ICB2b2lkIGdldEZpbGUoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFz
c1JlZlB0cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4pOwotICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHJlYWREaXJlY3Rv
cnkoRGlyZWN0b3J5UmVhZGVyKiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAgICB2b2lk
IGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnkqIGZpbGUsIFBhc3NSZWZQdHI8RmlsZVdyaXRl
ckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAKICAgICAvLyBTY2hlZHVs
ZSBhIGNhbGxiYWNrLiBUaGlzIHNob3VsZCBub3QgY3Jvc3MgdGhyZWFkcyAoc2hvdWxkIGJlIGNh
bGxlZCBvbiB0aGUgc2FtZSBjb250ZXh0IHRocmVhZCkuCkBAIC05NSw3ICs3NCw2IEBAIHByaXZh
dGU6CiAgICAgRE9NRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogCiAgICAgLy8gQSBoZWxw
ZXIgdGVtcGxhdGUgdG8gc2NoZWR1bGUgYSBjYWxsYmFjayB0YXNrLgotICAgIC8vIEZJWE1FOiBt
b3ZlIHRoaXMgdG8gYSBtb3JlIGdlbmVyaWMgcGxhY2UuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENCLCB0eXBlbmFtZSBDQkFyZz4KICAgICBjbGFzcyBEaXNwYXRjaENhbGxiYWNrVGFzayA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKICAgICBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwIGIvV2ViQ29yZS9maWxl
YXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAppbmRleCBiNjk4ODJkMTYwYWQ5ZThiNDRiZjUzNGJh
M2JiMWI1MjMyM2EyNzIxLi42M2M2ZTViMWM4OWU1MTUzYzk4MDNkYTY2NWY1ODA2Njg2YWI1YjMz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCisrKyBi
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTM0LDYgKzM0LDE2IEBA
CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKKyNp
bmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgor
I2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKKyNpbmNsdWRlICJFbnRyeUJhc2UuaCIKKyNpbmNsdWRl
ICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUg
IkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRl
ICJNZXRhZGF0YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw2ICs1OCwxMzEg
QEAgRE9NRmlsZVN5c3RlbUJhc2U6On5ET01GaWxlU3lzdGVtQmFzZSgpCiB7CiB9CiAKK2Jvb2wg
RE9NRmlsZVN5c3RlbUJhc2U6OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBh
c3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRo
KCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBN
ZXRhZGF0YUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykp
OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjaGVja1ZhbGlkaXR5Rm9yRm9y
Q29weU9yTW92ZShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNv
bnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBBU1NFUlQoc291cmNlKTsKKworICAgIGlmICgh
cGFyZW50IHx8ICFwYXJlbnQtPmlzRGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjppc1ZhbGlkTmFt
ZShuZXdOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJy
b3IgdG8gdHJ5IHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxmIGF0IGFueSBk
ZXB0aCBpZiBpdCBpcyBhIGRpcmVjdG9yeS4KKyAgICBpZiAoc291cmNlLT5pc0RpcmVjdG9yeSgp
ICYmIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKHNvdXJjZS0+ZnVsbFBhdGgoKSwgcGFyZW50LT5m
dWxsUGF0aCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJy
b3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlm
ZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3ZpZGVkLgorICAgIGlmICgobmV3
TmFtZS5pc0VtcHR5KCkgfHwgc291cmNlLT5uYW1lKCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBh
dGg6OmdldERpcmVjdG9yeShzb3VyY2UtPmZ1bGxQYXRoKCkpID09IHBhcmVudC0+ZnVsbFBhdGgo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
RE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUoY29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFz
ZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCit7CisgICAgaWYgKCFjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShzb3VyY2UsIHBh
cmVudCwgbmV3TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBkZXN0
aW5hdGlvblBhdGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7CisgICAgaWYgKCFuZXdOYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgZGVzdGluYXRpb25QYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0
aW5hdGlvblBhdGgsIG5ld05hbWUpOworICAgIGVsc2UKKyAgICAgICAgZGVzdGluYXRpb25QYXRo
ID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+bmFtZSgpKTsK
KworICAgIFN0cmluZyBzb3VyY2VQbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmly
dHVhbFRvUGxhdGZvcm1QYXRoKHNvdXJjZS0+ZnVsbFBhdGgoKSk7CisgICAgU3RyaW5nIGRlc3Rp
bmF0aW9uUGxhdGZvcm1QYXRoID0gcGFyZW50LT5maWxlc3lzdGVtKCktPmFzeW5jRmlsZVN5c3Rl
bSgpLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZGVzdGluYXRpb25QYXRoKTsKKyAgICBtX2FzeW5j
RmlsZVN5c3RlbS0+bW92ZShzb3VyY2VQbGF0Zm9ybVBhdGgsIGRlc3RpbmF0aW9uUGxhdGZvcm1Q
YXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgdGhpcywgZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0b3J5KCkpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y29weShjb25zdCBFbnRy
eUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwg
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JG
b3JDb3B5T3JNb3ZlKHNvdXJjZSwgcGFyZW50LCBuZXdOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCA9IHBhcmVudC0+ZnVsbFBhdGgoKTsK
KyAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpKQorICAgICAgICBkZXN0aW5hdGlvblBhdGggPSBE
T01GaWxlUGF0aDo6YXBwZW5kKGRlc3RpbmF0aW9uUGF0aCwgbmV3TmFtZSk7CisgICAgZWxzZQor
ICAgICAgICBkZXN0aW5hdGlvblBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RpbmF0aW9u
UGF0aCwgc291cmNlLT5uYW1lKCkpOworCisgICAgU3RyaW5nIHNvdXJjZVBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc291cmNlLT5mdWxsUGF0
aCgpKTsKKyAgICBTdHJpbmcgZGVzdGluYXRpb25QbGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVz
eXN0ZW0oKS0+YXN5bmNGaWxlU3lzdGVtKCktPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0aW5h
dGlvblBhdGgpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jb3B5KHNvdXJjZVBsYXRmb3JtUGF0
aCwgZGVzdGluYXRpb25QbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+
aXNEaXJlY3RvcnkoKSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERPTUZpbGVTeXN0
ZW1CYXNlOjpyZW1vdmUoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRo
KCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUocGxhdGZvcm1QYXRoLCBWb2lkQ2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldFBhcmVudChjb25zdCBF
bnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VS
VChlbnRyeSk7CisgICAgU3RyaW5nIHBhdGggPSBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVu
dHJ5LT5mdWxsUGF0aCgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVT
eXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIHBhdGgsIHRydWUpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBF
bnRyeUJhc2UqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxh
Z3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGJhc2UpOworICAg
IGlmICghRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRoKHBhdGgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBTdHJpbmcgYWJzb2x1dGVQYXRoID0gcGF0aDsKKyAgICBpZiAoIURPTUZpbGVQ
YXRoOjppc0Fic29sdXRlKHBhdGgpKQorICAgICAgICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0
aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+
ZnVsbFBhdGgoKSwgcGF0aCkpOworICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmls
ZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGFic29sdXRlUGF0aCk7CisKKyAgICBPd25Q
dHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIGZhbHNlKTsK
KyAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCisgICAgICAgIG1fYXN5bmNGaWxl
U3lzdGVtLT5jcmVhdGVGaWxlKHBsYXRmb3JtUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNh
bGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0t
PmZpbGVFeGlzdHMocGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0
IEVudHJ5QmFzZSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBm
bGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoYmFzZSk7Cisg
ICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFN0cmluZyBhYnNvbHV0ZVBhdGggPSBwYXRoOworICAgIGlmICghRE9NRmls
ZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAgICAgIGFic29sdXRlUGF0aCA9IERPTUZpbGVQ
YXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMoRE9NRmlsZVBhdGg6OmFwcGVuZChiYXNl
LT5mdWxsUGF0aCgpLCBwYXRoKSk7CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNG
aWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoYWJzb2x1dGVQYXRoKTsKKworICAgIE93
blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0aCwgdHJ1ZSk7
CisgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQorICAgICAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KHBsYXRmb3JtUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZl
KCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9hc3luY0ZpbGVT
eXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZWFkRGly
ZWN0b3J5KERpcmVjdG9yeVJlYWRlckJhc2UqIHJlYWRlciwgY29uc3QgU3RyaW5nJiBwYXRoLCBQ
YXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKERPTUZpbGVQYXRoOjpp
c0Fic29sdXRlKHBhdGgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVT
eXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+cmVhZERpcmVjdG9yeShwbGF0Zm9ybVBhdGgsIEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHJlYWRlciwgcGF0aCkpOworICAgIHJldHVy
biB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJh
c2UuaCBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oCmluZGV4IGU3MTRkOGQx
N2FjMWNiMTk0ODA5YjQzNDhhMjE1YWRlYmVkODExNjcuLmQzYjM5Y2E4MTY1NmVkMjE5MjRmNjlk
NjJhNGY4MzE2NGJkMDczZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lz
dGVtQmFzZS5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oCkBAIC0z
NCwxMiArMzQsMjIgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJBc3lu
Y0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJGbGFncy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERpcmVjdG9yeUVudHJ5Owor
Y2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZTsKK2NsYXNzIEVudHJpZXNDYWxsYmFjazsKK2NsYXNz
IEVudHJ5QmFzZTsKK2NsYXNzIEVudHJ5Q2FsbGJhY2s7CitjbGFzcyBFcnJvckNhbGxiYWNrOwor
Y2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKK2NsYXNzIFZvaWRDYWxsYmFjazsKKwogLy8gQSBjb21t
b24gYmFzZSBjbGFzcyBmb3IgRE9NRmlsZVN5c3RlbSBhbmQgRE9NRmlsZVN5c3RlbVN5bmMuCiBj
bGFzcyBET01GaWxlU3lzdGVtQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERPTUZpbGVTeXN0ZW1C
YXNlPiB7CiBwdWJsaWM6CkBAIC01Miw2ICs2MiwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgQXN5bmNGaWxlU3lzdGVt
KiBhc3luY0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRmlsZVN5c3RlbS5nZXQo
KTsgfQogCisgICAgLy8gQWN0dWFsIEZpbGVTeXN0ZW0gQVBJIGltcGxlbWVudGF0aW9ucy4gIEFs
bCB0aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgdGhpcyBs
ZXZlbC4KKyAgICAvLyBUaGV5IHJldHVybiBmYWxzZSBmb3IgaW1tZWRpYXRlIGVycm9ycyB0aGF0
IGRvbid0IGludm9sdmUgbG93ZXIgQXN5bmNGaWxlU3lzdGVtIGxheWVyIChlLmcuIGZvciBuYW1l
IHZhbGlkYXRpb24gZXJyb3JzKS4gIE90aGVyd2lzZSB0aGV5IHJldHVybiB0cnVlIChidXQgbGF0
ZXIgbWF5IGNhbGwgYmFjayB3aXRoIGFuIHJ1bnRpbWUgZXJyb3IpLgorICAgIGJvb2wgZ2V0TWV0
YWRhdGEoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBtb3ZlKGNvbnN0IEVudHJ5QmFzZSog
c291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29sIGNv
cHkoY29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pOworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEVudHJ5QmFzZSosIFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBnZXRQYXJl
bnQoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSogYmFz
ZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBnZXREaXJl
Y3RvcnkoY29uc3QgRW50cnlCYXNlKiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQ
dHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+KTsKKyAgICBib29sIHJlYWREaXJlY3RvcnkoRGlyZWN0b3J5UmVhZGVyQmFzZSosIGNv
bnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+KTsKKwogcHJvdGVjdGVkOgogICAgIERPTUZpbGVTeXN0ZW1CYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKICAgICBmcmll
bmQgY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkv
RE9NRmlsZVN5c3RlbVN5bmMuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5j
LmNwcAppbmRleCBlMjAwZDIyOGFjMTU2M2RkYjE0ZTJkYmY0ZTY1NzM1Yjg0Mjg5OTJmLi45NmM3
NmZlZjViYWU3NmVhZjk0YmYxNDE2Mzg0ZDEzNmYxOTk2NjAxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtU3luYy5jcHAKQEAgLTM4LDYgKzM4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gRE9NRmlsZVN5c3RlbVN5bmM6OmNy
ZWF0ZShET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERPTUZpbGVTeXN0ZW1TeW5jKGZpbGVTeXN0ZW0tPm1fbmFtZSwgZmlsZVN5c3RlbS0+
bV9hc3luY0ZpbGVTeXN0ZW0ucmVsZWFzZSgpKSk7Cit9CisKIERPTUZpbGVTeXN0ZW1TeW5jOjpE
T01GaWxlU3lzdGVtU3luYyhjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgOiBET01GaWxlU3lzdGVtQmFzZShuYW1lLCBh
c3luY0ZpbGVTeXN0ZW0pCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5
c3RlbVN5bmMuaCBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5oCmluZGV4IDZl
NjQ1MjZjZmRjOGQ4Njc5NTY5ZWJjY2MzYTAxZTdhNzk2ZDY2ZjUuLjlhZWFmYzhhNjBmM2VhZjhm
YmQ3MGJjM2NjZjliOGMxYWI2YmI5N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtU3luYy5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5o
CkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
T01GaWxlU3lzdGVtU3luYyhuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKERPTUZpbGVTeXN0ZW1C
YXNlKik7CisKICAgICB2aXJ0dWFsIH5ET01GaWxlU3lzdGVtU3luYygpOwogCiAgICAgUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHJvb3QoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAgYi9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnku
Y3BwCmluZGV4IGY3ODc4N2E0YmNkN2YzZTVhNjU0NjkzYjM2MDViNjgzMjRiODQxZjAuLmQ4ZjZk
ZWQ5MmU1N2U5NzYxMWUwNjMzY2Y3YWU4ZGZiNTc4NWNmZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9y
eUVudHJ5LmNwcApAQCAtMzYsMTAgKzM2LDExIEBACiAjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVy
LmgiCiAjaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EaXJl
Y3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50cnkoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCkKK0RpcmVjdG9yeUVudHJ5OjpEaXJlY3RvcnlFbnRyeShET01G
aWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICA6
IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQogewogfQpAQCAtNTEsMTQgKzUyLDE2IEBAIFBh
c3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlUmVhZGVyKCkK
IAogdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NS
ZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIGZp
bGVzeXN0ZW0oKS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRo
LCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgZmlsZXN5
c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRl
KElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwogfQogCiB2b2lkIERpcmVjdG9yeUVudHJ5Ojpn
ZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywg
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICBmaWxlc3lzdGVtKCktPmdldERpcmVj
dG9yeSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
KyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICBmaWxlc3lzdGVtKCktPnNj
aGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlCit9CiAKICNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
RW50cnkuaCBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oCmluZGV4IGM3NmIyMDQz
YTM4MTNhZjViYzMxM2JjOWQwNDE1NGYzODI5MDUzZWUuLjNlZDhmOGViMjY5OTY4NmZkMWZjYTg1
YTNkZGEyZTY2MjcwYzViM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeS5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oCkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIEVycm9yQ2FsbGJhY2s7CiAKIGNsYXNzIERpcmVjdG9yeUVudHJ5IDogcHVi
bGljIEVudHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRy
eT4gY3JlYXRlKERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IGNyZWF0ZShET01GaWxl
U3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5RW50cnkoZmlsZVN5c3RlbSwgZnVs
bFBhdGgpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldERp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+ID0gMCwgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsK
IAogcHJpdmF0ZToKLSAgICBEaXJlY3RvcnlFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBEaXJlY3RvcnlFbnRyeShET01GaWxlU3lz
dGVtQmFzZSosIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwIGIvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAKaW5kZXggMWFkMmNmNTEyZjFlOWQ5
MTE0NGI1ZjMxYjcyMWQ5NzRmYzk0MmVlZC4uYjIyOGRiNTRlNzI1NGM2M2NhNDg4ZmUxMWY5YjUw
Yzg4YTU0Yjg2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3lu
Yy5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAKICNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJTeW5jLmgiCiAjaW5jbHVkZSAi
RW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTAsMTggKzUwLDI2IEBAIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVh
ZGVyU3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGVSZWFkZXIoRXhjZXB0aW9uQ29kZSYp
CiAgICAgcmV0dXJuIERpcmVjdG9yeVJlYWRlclN5bmM6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1f
ZnVsbFBhdGgpOwogfQogCi1QYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5
U3luYzo6Z2V0RmlsZShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEZsYWdzPiwgRXhjZXB0aW9u
Q29kZSYpCitQYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBlYyA9IDA7CisgICAgRW50cnlTeW5j
Q2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwor
ICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBoZWxwZXIu
c3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8RmlsZUVudHJ5U3luYz4oaGVscGVyLmdldFJl
c3VsdChlYykpOwogfQogCi1QYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gRGlyZWN0b3J5
RW50cnlTeW5jOjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxGbGFncz4s
IEV4Y2VwdGlvbkNvZGUmKQorUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERpcmVjdG9y
eUVudHJ5U3luYzo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxG
bGFncz4gZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiB0byBiZSBp
bXBsZW1lbnRlZC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGVj
ID0gMDsKKyAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5h
c3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0
aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JD
YWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PERp
cmVjdG9yeUVudHJ5U3luYz4oaGVscGVyLmdldFJlc3VsdChlYykpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgYi9XZWJDb3JlL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAKaW5kZXggNjAwYWI3ZjZlZmUyYjVjNWVhOWEx
N2QwYzk2MTE0YWQ0Mjk5NzQ1Yy4uNmM2NmExNTM1NDI2N2Y1YzAwY2FmN2Q4ZDhhNzdhMzdkYzM5
OWY3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3Bw
CisrKyBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcApAQCAtMzMsOSAr
MzMsMTQgQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAorI2luY2x1ZGUgIkRpcmVjdG9y
eUVudHJ5LmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRW50
cnlBcnJheVN5bmMuaCIKKyNpbmNsdWRlICJFbnRyeVN5bmMuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJGaWxlRW50
cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiU3luY0NhbGxiYWNr
SGVscGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsMTAgKzQ5LDE5IEBAIERp
cmVjdG9yeVJlYWRlclN5bmM6OkRpcmVjdG9yeVJlYWRlclN5bmMoRE9NRmlsZVN5c3RlbUJhc2Uq
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0CiB7CiB9CiAKLVBhc3NSZWZQdHI8RW50cnlBcnJheVN5bmM+
IERpcmVjdG9yeVJlYWRlclN5bmM6OnJlYWRFbnRyaWVzKEV4Y2VwdGlvbkNvZGUmKQorUGFzc1Jl
ZlB0cjxFbnRyeUFycmF5U3luYz4gRGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMoRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
KyAgICBlYyA9IDA7CisgICAgaWYgKCFtX2hhc01vcmVFbnRyaWVzKQorICAgICAgICByZXR1cm4g
RW50cnlBcnJheVN5bmM6OmNyZWF0ZSgpOworCisgICAgRW50cmllc1N5bmNDYWxsYmFja0hlbHBl
ciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2Zp
bGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkodGhpcywgbV9mdWxsUGF0aCwgaGVscGVyLnN1Y2Nlc3ND
YWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgc2V0SGFzTW9yZUVudHJpZXMoZmFsc2UpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMp
OwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5
LmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAKaW5kZXggOTdhMzI3MDhlMmY4MGYxNWFi
NTcyMjQyY2U0ZWM2MDkyODg1Y2Y2OC4uZjU4YWU2MDIxMDI4NTExYjc2ZDk0NGNkOWFkNmE3YTlh
ZjFmOGY2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmNwcAorKysgYi9XZWJD
b3JlL2ZpbGVhcGkvRW50cnkuY3BwCkBAIC0zMiw0NCArMzIsNDkgQEAKIAogI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKIAotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAiRE9NRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRW50cnlD
YWxsYmFjay5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlRXJy
b3IuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiTWV0YWRh
dGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUVudHJ5OjpFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoKQorRW50cnk6OkVudHJ5KERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIDogRW50cnlCYXNlKGZpbGVTeXN0ZW0s
IGZ1bGxQYXRoKQogewogfQogCiB2b2lkIEVudHJ5OjpnZXRNZXRhZGF0YShQYXNzUmVmUHRyPE1l
dGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKQogewotICAgIGZpbGVzeXN0ZW0oKS0+Z2V0TWV0YWRhdGEodGhpcywg
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+
Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAg
ICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJv
cjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwogfQogCi12b2lkIEVudHJ5Ojpt
b3ZlVG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0Cit2b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0
cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5tb3ZlKHRoaXMsIHBh
cmVudCwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1f
ZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFj
ayhlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9F
UlIpKTsKIH0KIAotdm9pZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAordm9p
ZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAogewotICAgIGZp
bGVzeXN0ZW0oKS0+Y29weSh0aGlzLCBwYXJlbnQsIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjayk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHkodGhpcywgcGFyZW50Lmdl
dCgpLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICBmaWxl
c3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVh
dGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7CiB9CiAKIHZvaWQgRW50cnk6OnJlbW92ZShQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5yZW1v
dmUodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmls
ZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisg
ICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLCBGaWxl
RXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKIH0KIAogdm9pZCBFbnRy
eTo6Z2V0UGFyZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmls
ZXN5c3RlbSgpLT5nZXRQYXJlbnQodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0UGFyZW50KHRoaXMsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFj
ayhlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9F
UlIpKTsKIH0KIAogU3RyaW5nIEVudHJ5Ojp0b1VSSShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmggYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaAppbmRl
eCBiNzVmMWVkZTFkMDk4YWYzNmMwNGJjMDVlMjNkODI1OGNlNDBjYWIwLi4xYjMzZjM3NjE1ZjE2
ODZlNDUwMjg2NGJlZjgyOTM3N2U2MzFiNzMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkv
RW50cnkuaAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaApAQCAtNDAsMjcgKzQwLDI3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGlyZWN0b3J5RW50cnk7CiBjbGFzcyBF
bnRyeUNhbGxiYWNrOworY2xhc3MgRW50cnlTeW5jOwogY2xhc3MgRXJyb3JDYWxsYmFjazsKIGNs
YXNzIE1ldGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIEVudHJ5
IDogcHVibGljIEVudHJ5QmFzZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnkoKSB7IH0K
LQogICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxET01GaWxlU3lzdGVtKj4obV9maWxlU3lzdGVtKTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0gICAg
dmlydHVhbCB2b2lkIG1vdmVUbyhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBj
b25zdCBTdHJpbmcmIG5hbWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2sgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0
b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvcHlU
byhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9
IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAs
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvVVJJKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUgPSBTdHJpbmcoKSk7CiAKIHByb3RlY3RlZDoKLSAgICBFbnRyeShET01GaWxl
U3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBFbnRyeShE
T01GaWxlU3lzdGVtQmFzZSosIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmlkbCBi
L1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5pZGwKaW5kZXggZDM2M2JjZGI5NjZiZjZiOWE1NjQyMTQx
MDM5OGI3OGI5NmY1ZTE1My4uZjZmY2RiM2I0ZWE4NjQ5ZjNkOGQ5N2QzYTkxMDQyM2I0YzcxZjk3
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmlkbAorKysgYi9XZWJDb3JlL2Zp
bGVhcGkvRW50cnkuaWRsCkBAIC00MSw4ICs0MSw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUZpbGVTeXN0ZW0gZmlsZXN5c3RlbTsKIAogICAgICAg
ICB2b2lkIGdldE1ldGFkYXRhKGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIE1ldGFkYXRhQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNr
IGVycm9yQ2FsbGJhY2spOwotICAgICAgICB2b2lkIG1vdmVUbyhpbiBFbnRyeSBwYXJlbnQsIGlu
IFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IG5hbWUsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2sp
OwotICAgICAgICB2b2lkIGNvcHlUbyhpbiBFbnRyeSBwYXJlbnQsIGluIFtPcHRpb25hbCwgQ29u
dmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRp
b25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9u
YWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICB2b2lk
IG1vdmVUbyhpbiBEaXJlY3RvcnlFbnRyeSBwYXJlbnQsIGluIFtPcHRpb25hbCwgQ29udmVydFVu
ZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbCwg
Q2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENh
bGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICB2b2lkIGNvcHlU
byhpbiBEaXJlY3RvcnlFbnRyeSBwYXJlbnQsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5l
ZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbCwgQ2FsbGJh
Y2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNr
XSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwogICAgICAgICB2b2lkIHJlbW92ZShpbiBb
T3B0aW9uYWwsIENhbGxiYWNrXSBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0
aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwogICAgICAgICB2
b2lkIGdldFBhcmVudChpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNh
bGxiYWNrKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlT
eW5jLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5jcHAKaW5kZXggOTllYzdk
M2FmNWZjMTZkMjNjYzg3NzMyZGI2OGNjMDgxYWRlOTg1Yi4uMWUyZmE5MTUxMjFkMTJiODdmNTVl
NTVlYmI5OWVlMTk4ZTI1MGJlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJy
YXlTeW5jLmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwCkBAIC0z
Myw4ICszMywyMCBAQAogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCisjaW5jbHVkZSAiRW50
cnlBcnJheS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8RW50cnlBcnJh
eVN5bmM+IEVudHJ5QXJyYXlTeW5jOjpjcmVhdGUoRW50cnlBcnJheSogZW50cmllcykKK3sKKyAg
ICBSZWZQdHI8RW50cnlBcnJheVN5bmM+IGVudHJpZXNTeW5jID0gYWRvcHRSZWYobmV3IEVudHJ5
QXJyYXlTeW5jKCkpOworICAgIGlmIChlbnRyaWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBlbnRyaWVzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgZW50cmllc1N5
bmMtPmFwcGVuZChFbnRyeVN5bmM6OmNyZWF0ZShlbnRyaWVzLT5pdGVtKGkpKSk7CisgICAgfQor
ICAgIHJldHVybiBlbnRyaWVzU3luYy5yZWxlYXNlKCk7Cit9CisKIEVudHJ5QXJyYXlTeW5jOjpF
bnRyeUFycmF5U3luYygpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlB
cnJheVN5bmMuaCBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5oCmluZGV4IDZkMDUy
NGRhNDM2ODQ4ODcyY2NjNGIwYzM1OTQ1MTI5ZDE0ZDUyYzkuLjQ2Y2Y0MDkxMTFlY2VkMjMzZDg3
YmY4NmYzMmYwNzU3MDIxMDUwYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFy
cmF5U3luYy5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5oCkBAIC00OCw2
ICs0OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5
U3luYygpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4g
Y3JlYXRlKEVudHJ5QXJyYXkqKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW50cmllcy5zaXplKCk7IH0KICAgICBFbnRyeVN5bmMqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmggYi9X
ZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgKaW5kZXggZWVlNjVkZjM3YmEwNjM3YzIyZmQxOWJl
NWJhYTRjNmQ5ZmQxYzQwYS4uNmFiZjc0ZjE1NjFkYzhhYWIyOTg5MGM1NmE4ZjZiMTRiZDA4NTM5
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5QmFzZS5oCisrKyBiL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeUJhc2UuaApAQCAtNDgsNiArNDgsOCBAQCBjbGFzcyBFbnRyeUJhc2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxFbnRyeUJhc2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbnRy
eUJhc2UoKSB7IH0KIAorICAgIERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlc3lzdGVtKCkgY29uc3Qg
eyByZXR1cm4gbV9maWxlU3lzdGVtOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlT
eW5jLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwCmluZGV4IDdkYTMwN2NhMzgy
Y2EyNmVlOWZlYzZiMzZiZjZkODhlMTI5ODk0YmUuLmI4ODg2MTNjYWIzMWU0NjY0ZDE3YmE5ZDY3
ZWYxYjAyOTAwYjJmMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3Bw
CisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwCkBAIC0zNCwzNyArMzQsNjIgQEAK
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJET01GaWxlUGF0aC5oIgorI2lu
Y2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIK
ICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKKyNpbmNsdWRlICJGaWxlRW50cnlTeW5j
LmgiCiAjaW5jbHVkZSAiTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NSZWZQdHI8TWV0YWRhdGE+IEVudHJ5U3luYzo6Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29k
ZSYpCitQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjpjcmVhdGUoRW50cnlCYXNlKiBl
bnRyeSkKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoZW50cnktPmlzRmlsZSgpKQorICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVFbnRyeVN5bmMoZW50cnktPm1fZmlsZVN5c3RlbSwg
ZW50cnktPm1fZnVsbFBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVu
dHJ5U3luYyhlbnRyeS0+bV9maWxlU3lzdGVtLCBlbnRyeS0+bV9mdWxsUGF0aCkpOwogfQogCi1Q
YXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3Rv
cnlFbnRyeVN5bmM+LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3QKK1Bhc3NS
ZWZQdHI8TWV0YWRhdGE+IEVudHJ5U3luYzo6Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZWMgPSAwOworICAgIE1ldGFkYXRhU3luY0NhbGxiYWNr
SGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAo
IW1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygp
LCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBoZWxwZXIu
Z2V0UmVzdWx0KGVjKTsKIH0KIAotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y29w
eVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0CitQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8o
UGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVt
ZW50ZWQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBlYyA9IDA7
CisgICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNG
aWxlU3lzdGVtKCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudC5n
ZXQoKSwgbmFtZSwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFj
aygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKIH0KIAot
dm9pZCBFbnRyeVN5bmM6OnJlbW92ZShFeGNlcHRpb25Db2RlJikgY29uc3QKK1Bhc3NSZWZQdHI8
RW50cnlTeW5jPiBFbnRyeVN5bmM6OmNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3lu
Yz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAog
ewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGVjID0gMDsKKyAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxl
U3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHko
dGhpcywgcGFyZW50LmdldCgpLCBuYW1lLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBl
ci5lcnJvckNhbGxiYWNrKCkpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1
bHQoZWMpOworfQorCit2b2lkIEVudHJ5U3luYzo6cmVtb3ZlKEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAoreworICAgIGVjID0gMDsKKyAgICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlciht
X2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+
cmVtb3ZlKHRoaXMsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJh
Y2soKSkpCisgICAgICAgIGVjID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgIGhlbHBl
ci5nZXRSZXN1bHQoZWMpOwogfQogCiBQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjpn
ZXRQYXJlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5o
IGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5oCmluZGV4IDEwYjExMDFjZWUxZDk2Yjk3MWJj
NGYwOGQ5MzZjM2I2ZmEyYmVkOTIuLjYxOGYxMmNjYzYzN2FmMjJmZjdiNjFkMjcyMWE1Nzk1NWEx
ODFjZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuaAorKysgYi9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlTeW5jLmgKQEAgLTQ3LDYgKzQ3LDggQEAgY2xhc3MgTWV0YWRhdGE7
CiAKIGNsYXNzIEVudHJ5U3luYyA6IHB1YmxpYyBFbnRyeUJhc2UgewogcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEVudHJ5U3luYz4gY3JlYXRlKEVudHJ5QmFzZSopOworCiAgICAgRE9N
RmlsZVN5c3RlbVN5bmMqIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxE
T01GaWxlU3lzdGVtU3luYyo+KG1fZmlsZVN5c3RlbSk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxNZXRhZGF0YT4gZ2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5jcHAgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5
LmNwcAppbmRleCBhN2U3MTU4Yzk3MGE2ZmIyOTRhN2NmNDgxOGU2MjAzM2Y1MmE3MjUzLi5jNzQ3
OGZiZTAxY2Q1N2M1YmJhZTRjNzFmYWUzNjMwM2QzNWFkNjk4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZUVudHJ5LmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmNw
cApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVFbnRyeTo6
RmlsZUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCitGaWxlRW50cnk6OkZpbGVFbnRyeShET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICA6IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRo
KQogewogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5oIGIvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVFbnRyeS5oCmluZGV4IDJjODVkNzM5YjdjZDUxOThjODlkZjBmNGU0Mjdm
ZTVkMjVjNTNhYWEuLmJiYjgzNjkxYzU0OWJmNjZhOWUwZTY1OGY5NmRkNDdmNTllMTg0ZWUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnkuaAorKysgYi9XZWJDb3JlL2ZpbGVh
cGkvRmlsZUVudHJ5LmgKQEAgLTM5LDExICszOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRE9NRmlsZVN5c3RlbTsKLQogY2xhc3MgRmlsZUVudHJ5IDogcHVibGljIEVudHJ5
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlRW50cnk+IGNyZWF0ZShET01G
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZpbGVFbnRyeT4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGaWxlRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKICAgICB9CkBAIC01NCw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEZpbGVFbnRyeShET01GaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBGaWxlRW50cnkoRE9NRmlsZVN5
c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJh
Y2tzLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAppbmRleCA4
M2IxMjBiYTUxYjEzNDM5NDFjNjVmZDJiMzQ0YTg2ZjY2OTBiNGFiLi5lNWY0MDRlYmFlZDE1MTY1
NzI0NjJlNjY3Nzg3OGYyYzNkMTQ5ODg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVN5c3RlbUNhbGxiYWNrcy5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxs
YmFja3MuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIK
LSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2Uu
aCIKICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRl
ci5oIgogI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgpAQCAtMTExLDEyICsxMTEsMTIgQEAg
dm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkKIAogLy8gRW50
cnlDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1QYXNzT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBFbnRyeUNhbGxi
YWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIERPTUZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KQor
UGFzc093blB0cjxFbnRyeUNhbGxiYWNrcz4gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrLCBET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IGZpbGVTeXN0ZW0sIGV4cGVjdGVkUGF0aCwgaXNEaXJlY3RvcnkpKTsKIH0KIAotRW50cnlDYWxs
YmFja3M6OkVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIERPTUZpbGVT
eXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGly
ZWN0b3J5KQorRW50cnlDYWxsYmFja3M6OkVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2ssIERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSkKICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlKGVycm9yQ2FsbGJhY2spCiAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJh
Y2spCiAgICAgLCBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKQEAgLTEzOCwxMiArMTM4LDEyIEBA
IHZvaWQgRW50cnlDYWxsYmFja3M6OmRpZFN1Y2NlZWQoKQogCiAvLyBFbnRyaWVzQ2FsbGJhY2tz
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLVBhc3NPd25QdHI8RW50cmllc0NhbGxiYWNrcz4gRW50cmllc0NhbGxiYWNrczo6Y3Jl
YXRlKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgRGlyZWN0b3J5UmVhZGVyKiBkaXJlY3Rv
cnlSZWFkZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCitQYXNzT3duUHRyPEVudHJpZXNDYWxs
YmFja3M+IEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2ssIERpcmVjdG9yeVJlYWRlckJhc2UqIGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3RyaW5nJiBi
YXNlUGF0aCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEVudHJpZXNDYWxsYmFja3Moc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBkaXJlY3RvcnlSZWFkZXIsIGJhc2VQYXRoKSk7
CiB9CiAKLUVudHJpZXNDYWxsYmFja3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRy
aWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrLCBEaXJlY3RvcnlSZWFkZXIqIGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3Ry
aW5nJiBiYXNlUGF0aCkKK0VudHJpZXNDYWxsYmFja3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1Jl
ZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrLCBEaXJlY3RvcnlSZWFkZXJCYXNlKiBkaXJlY3RvcnlSZWFk
ZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCiAgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFz
ZShlcnJvckNhbGxiYWNrKQogICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNr
KQogICAgICwgbV9kaXJlY3RvcnlSZWFkZXIoZGlyZWN0b3J5UmVhZGVyKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBiL1dlYkNvcmUvZmlsZWFwaS9G
aWxlU3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggN2YxODZlZjI3NTRhZTU2MjY1MmMxZjRmZGNmMTYw
NmMzMjM1ZDRiNS4uYzYwMGE3NjZkMDk2NmJjZmQ5YzU1OTY3ZmMyNjA1NTE4YzQ1ZTY5YyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC00MSw4ICs0MSw4IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVdyaXRlcjsKLWNsYXNzIERPTUZpbGVT
eXN0ZW07Ci1jbGFzcyBEaXJlY3RvcnlSZWFkZXI7CitjbGFzcyBET01GaWxlU3lzdGVtQmFzZTsK
K2NsYXNzIERpcmVjdG9yeVJlYWRlckJhc2U7CiBjbGFzcyBFcnJvckNhbGxiYWNrOwogY2xhc3Mg
RW50cmllc0NhbGxiYWNrOwogY2xhc3MgRW50cnlBcnJheTsKQEAgLTg2LDI3ICs4NiwyNyBAQCBw
cm90ZWN0ZWQ6CiAKIGNsYXNzIEVudHJ5Q2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxs
YmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyeUNhbGxiYWNr
cz4gY3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4sIERPTUZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBp
c0RpcmVjdG9yeSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8RW50cnlDYWxsYmFja3M+IGNyZWF0
ZShQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBE
T01GaWxlU3lzdGVtQmFzZSosIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGly
ZWN0b3J5KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwogCiBwcml2YXRlOgotICAg
IEVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4sIERPTUZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwg
Ym9vbCBpc0RpcmVjdG9yeSk7CisgICAgRW50cnlDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgRE9NRmlsZVN5c3RlbUJhc2UqLCBj
b25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7CiAgICAgUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAgIERPTUZpbGVTeXN0ZW0qIG1f
ZmlsZVN5c3RlbTsKKyAgICBET01GaWxlU3lzdGVtQmFzZSogbV9maWxlU3lzdGVtOwogICAgIFN0
cmluZyBtX2V4cGVjdGVkUGF0aDsKICAgICBib29sIG1faXNEaXJlY3Rvcnk7CiB9OwogCiBjbGFz
cyBFbnRyaWVzQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBjcmVhdGUoUGFz
c1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBEaXJl
Y3RvcnlSZWFkZXIqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBEaXJlY3RvcnlSZWFkZXJCYXNlKiwgY29uc3Qg
U3RyaW5nJiBiYXNlUGF0aCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRy
eShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3RvcnkpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpOwogCiBwcml2YXRlOgotICAg
IEVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+LCBEaXJlY3RvcnlSZWFkZXIqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRo
KTsKKyAgICBFbnRyaWVzQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgRGlyZWN0b3J5UmVhZGVyQmFzZSosIGNvbnN0IFN0cmlu
ZyYgYmFzZVBhdGgpOwogICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxi
YWNrOwotICAgIERpcmVjdG9yeVJlYWRlciogbV9kaXJlY3RvcnlSZWFkZXI7CisgICAgRGlyZWN0
b3J5UmVhZGVyQmFzZSogbV9kaXJlY3RvcnlSZWFkZXI7CiAgICAgU3RyaW5nIG1fYmFzZVBhdGg7
CiAgICAgUmVmUHRyPEVudHJ5QXJyYXk+IG1fZW50cmllczsKIH07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZp
bGVTeXN0ZW0uY3BwCmluZGV4IDU2N2FhZmU2NmY3ZDdjNTAwODNhOTVlNDI4ZjhlZjU5YWRmYTc5
ODAuLmM3MzQ3Yjg4NDkyZTBhNjE5NzBjY2YzNmE1MWYwOWI4NmExNTg5NjMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFw
aS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyB2b2lkIG9wZW5G
aWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRo
LCBjb25zCiAgICAgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShiYXNlUGF0aCwgaWRl
bnRpZmllciwgdHlwZSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJl
cXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmls
ZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVT
eXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpU
eXBlIHR5cGUsIGxvbmcgbG9uZywgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcywgYm9vbCkKIHsKICAgICAvLyBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lz
dGVtIGNhbGxzIGNhbGxiYWNrcyBzeW5jaHJvbm91c2x5LCBzbyB0aGUgbWV0aG9kIG5lZWRzIHRv
IGJlIGNhbGxlZCBhc3luY2hyb25vdXNseS4KICAgICBjb250ZXh0LT5wb3N0VGFzayhjcmVhdGVD
YWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVtLCBmaWxlU3lzdGVtQmFzZVBhdGgoKSwgY29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIGNhbGxiYWNr
cykpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5oIGIvV2Vi
Q29yZS9maWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5oCmluZGV4IGJiMWQwNDUwNDg1YjY0ZGMwMDcw
N2Y4ODQ5ZDhjMGVhZWUzNzlhZjQuLjlkOGFlNjVhMDU2MjQzOWJmZmRmNmFlNzI2M2Y0NTAyM2Jl
YTg2NGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaAorKysg
Yi9XZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIC8vIGNhbGxpbmcgdGhpcyBvbmUuCiAgICAgc3RhdGljIExvY2FsRmlsZVN5c3Rl
bSYgbG9jYWxGaWxlU3lzdGVtKCk7CiAKLSAgICB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZvaWQgcmVxdWVz
dEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN5c3RlbTo6VHlw
ZSwgbG9uZyBsb25nIHNpemUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiwg
Ym9vbCBzeW5jaHJvbm91cyA9IGZhbHNlKTsKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKICAg
ICAvLyBUaGlzIGNhbGwgaXMgbm90IHRocmVhZC1zYWZlOyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUg
YW55IHdvcmtlciB0aHJlYWRzIGFyZSBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxl
YXBpL01ldGFkYXRhLmggYi9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaAppbmRleCAxZmVjOTQz
N2I1MGQ2YTU1ZmQ4NjYyM2E5YzBjZjI3YWRmZDRhNDI1Li5iNjg5ZDMwMzZmOGU3MWU5ODY2ZTA5
YTIyOTc1MTFkN2RmYjczNmI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEu
aAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaApAQCAtNDQsNiArNDQsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFkYXRhKG1vZGlmaWNhdGlvblRp
bWUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhZGF0YT4gY3JlYXRlKE1l
dGFkYXRhKiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWV0
YWRhdGEobWV0YWRhdGEubV9tb2RpZmljYXRpb25UaW1lKSk7CisgICAgfQorCiAgICAgLy8gTmVl
ZHMgdG8gcmV0dXJuIGVwb2NoIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGZvciBEYXRlLgogICAgIGRv
dWJsZSBtb2RpZmljYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmljYXRpb25UaW1l
ICogMTAwMC4wOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9TeW5jQ2FsbGJhY2tI
ZWxwZXIuaCBiL1dlYkNvcmUvZmlsZWFwaS9TeW5jQ2FsbGJhY2tIZWxwZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYjU0Yzg4MjY3OGJiYjk4YjQ3YzRiZTFmYzFlZWFmNzc1NTNmZDYzCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS9maWxlYXBpL1N5bmNDYWxsYmFja0hlbHBlci5oCkBAIC0wLDAgKzEsMTg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBTeW5jQ2FsbGJhY2tIZWxwZXJfaAorI2RlZmluZSBTeW5jQ2FsbGJhY2tIZWxw
ZXJfaAorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50
cnkuaCIKKyNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJFbnRyeUFycmF5
U3luYy5oIgorI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJFcnJvckNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZpbGVFbnRyeS5o
IgorI2luY2x1ZGUgIkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFjay5o
IgorI2luY2x1ZGUgIk1ldGFkYXRhQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJWb2lkQ2FsbGJhY2su
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXN5bmNGaWxlU3lzdGVtOworY2xh
c3MgRGlyZWN0b3J5RW50cnlTeW5jOworY2xhc3MgRW50cnlBcnJheVN5bmM7CitjbGFzcyBFbnRy
eVN5bmM7CitjbGFzcyBGaWxlRW50cnlTeW5jOworCisvLyBBIGhlbHBlciB0ZW1wbGF0ZSBmb3Ig
RmlsZVN5c3RlbVN5bmMgaW1wbGVtZW50YXRpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgU3VjY2Vz
c0NhbGxiYWNrLCB0eXBlbmFtZSBPYnNlcnZlclR5cGUsIHR5cGVuYW1lIENhbGxiYWNrQXJnLCB0
eXBlbmFtZSBSZXN1bHRUeXBlPgorY2xhc3MgU3luY0NhbGxiYWNrSGVscGVyIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxTdWNj
ZXNzQ2FsbGJhY2ssIE9ic2VydmVyVHlwZSwgQ2FsbGJhY2tBcmcsIFJlc3VsdFR5cGU+IEhlbHBl
clR5cGU7CisgICAgU3luY0NhbGxiYWNrSGVscGVyKE9ic2VydmVyVHlwZSogb2JzZXJ2ZXIgPSAw
KQorICAgICAgICA6IG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgICAgICwgbV9zdWNjZXNzQ2Fs
bGJhY2soU3VjY2Vzc0NhbGxiYWNrSW1wbDo6Y3JlYXRlKHRoaXMpKQorICAgICAgICAsIG1fZXJy
b3JDYWxsYmFjayhFcnJvckNhbGxiYWNrSW1wbDo6Y3JlYXRlKHRoaXMpKQorICAgICAgICAsIG1f
ZXJyb3IoMCkKKyAgICAgICAgLCBtX2NvbXBsZXRlZChmYWxzZSkKKyAgICB7CisgICAgfQorCisg
ICAgUGFzc1JlZlB0cjxSZXN1bHRUeXBlPiBnZXRSZXN1bHQoRXhjZXB0aW9uQ29kZSYgZWMpCisg
ICAgeworICAgICAgICBpZiAobV9vYnNlcnZlcikgeworICAgICAgICAgICAgd2hpbGUgKCFtX2Nv
bXBsZXRlZCkgeworICAgICAgICAgICAgICAgIGlmICghbV9vYnNlcnZlci0+d2FpdEZvck9wZXJh
dGlvblRvQ29tcGxldGUoKSkgeworICAgICAgICAgICAgICAgICAgICBtX2Vycm9yID0gQUJPUlRf
RVJSOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWMgPSBtX2Vycm9yOworICAgICAgICByZXR1
cm4gbV9yZXN1bHQucmVsZWFzZSgpOworICAgIH0KKworICAgIFBhc3NSZWZQdHI8U3VjY2Vzc0Nh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2soKSB7IHJldHVybiBtX3N1Y2Nlc3NDYWxsYmFjazsgfQor
ICAgIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaygpIHsgcmV0dXJuIG1f
ZXJyb3JDYWxsYmFjazsgfQorCitwcml2YXRlOgorICAgIGNsYXNzIFN1Y2Nlc3NDYWxsYmFja0lt
cGwgOiBwdWJsaWMgU3VjY2Vzc0NhbGxiYWNrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN1Y2Nlc3NDYWxsYmFja0ltcGw+IGNyZWF0ZShIZWxwZXJUeXBlKiBoZWxw
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3VjY2Vzc0Nh
bGxiYWNrSW1wbChoZWxwZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faGVscGVyLT5zZXRFcnJvcigw
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChDYWxsYmFj
a0FyZyogYXJnKQorICAgICAgICB7CisgICAgICAgICAgICBtX2hlbHBlci0+c2V0UmVzdWx0KENh
bGxiYWNrUmVzdWx0Q3JlYXRlcjxDYWxsYmFja0FyZywgUmVzdWx0VHlwZT46OmNyZWF0ZShhcmcp
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBTdWNjZXNzQ2FsbGJhY2tJbXBsKEhlbHBlclR5cGUqIGhlbHBlcikKKyAgICAgICAg
ICAgIDogbV9oZWxwZXIoaGVscGVyKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgSGVs
cGVyVHlwZSogbV9oZWxwZXI7CisgICAgfTsKKworICAgIGNsYXNzIEVycm9yQ2FsbGJhY2tJbXBs
IDogcHVibGljIEVycm9yQ2FsbGJhY2sgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFja0ltcGw+IGNyZWF0ZShIZWxwZXJUeXBlKiBoZWxwZXIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXJyb3JDYWxsYmFja0lt
cGwoaGVscGVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZl
bnQoRmlsZUVycm9yKiBlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGVycm9y
KTsKKyAgICAgICAgICAgIG1faGVscGVyLT5zZXRFcnJvcihlcnJvci0+Y29kZSgpKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBF
cnJvckNhbGxiYWNrSW1wbChIZWxwZXJUeXBlKiBoZWxwZXIpCisgICAgICAgICAgICA6IG1faGVs
cGVyKGhlbHBlcikKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIEhlbHBlclR5cGUqIG1f
aGVscGVyOworICAgIH07CisKKyAgICBmcmllbmQgY2xhc3MgU3VjY2Vzc0NhbGxiYWNrSW1wbDsK
KyAgICBmcmllbmQgY2xhc3MgRXJyb3JDYWxsYmFja0ltcGw7CisKKyAgICB2b2lkIHNldEVycm9y
KEV4Y2VwdGlvbkNvZGUgZWMpCisgICAgeworICAgICAgICBtX2Vycm9yID0gZWM7CisgICAgICAg
IG1fY29tcGxldGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHNldFJlc3VsdChQYXNzUmVm
UHRyPFJlc3VsdFR5cGU+IHJlc3VsdCkKKyAgICB7CisgICAgICAgIG1fcmVzdWx0ID0gcmVzdWx0
OworICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CisgICAgfQorCisgICAgT2JzZXJ2ZXJUeXBl
KiBtX29ic2VydmVyOworICAgIFJlZlB0cjxTdWNjZXNzQ2FsbGJhY2tJbXBsPiBtX3N1Y2Nlc3ND
YWxsYmFjazsKKyAgICBSZWZQdHI8RXJyb3JDYWxsYmFja0ltcGw+IG1fZXJyb3JDYWxsYmFjazsK
KyAgICBSZWZQdHI8UmVzdWx0VHlwZT4gbV9yZXN1bHQ7CisgICAgRXhjZXB0aW9uQ29kZSBtX2Vy
cm9yOworICAgIGJvb2wgbV9jb21wbGV0ZWQ7Cit9OworCitzdHJ1Y3QgRW1wdHlUeXBlIDogcHVi
bGljIFJlZkNvdW50ZWQ8RW1wdHlUeXBlPiB7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RW1wdHlU
eXBlPiBjcmVhdGUoRW1wdHlUeXBlKiBhcmcpCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9Cit9OworCitzdHJ1Y3QgRW1wdHlPYnNlcnZlclR5cGUgeworICAgIGJvb2wgd2FpdEZvck9w
ZXJhdGlvblRvQ29tcGxldGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K307CisKK3R5cGVkZWYgU3luY0NhbGxiYWNrSGVscGVyPEVudHJ5Q2FsbGJhY2ssIEFzeW5jRmls
ZVN5c3RlbSwgRW50cnksIEVudHJ5U3luYz4gRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXI7Cit0eXBl
ZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxFbnRyaWVzQ2FsbGJhY2ssIEFzeW5jRmlsZVN5c3RlbSwg
RW50cnlBcnJheSwgRW50cnlBcnJheVN5bmM+IEVudHJpZXNTeW5jQ2FsbGJhY2tIZWxwZXI7Cit0
eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxNZXRhZGF0YUNhbGxiYWNrLCBBc3luY0ZpbGVTeXN0
ZW0sIE1ldGFkYXRhLCBNZXRhZGF0YT4gTWV0YWRhdGFTeW5jQ2FsbGJhY2tIZWxwZXI7Cit0eXBl
ZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxWb2lkQ2FsbGJhY2ssIEFzeW5jRmlsZVN5c3RlbSwgRW1w
dHlUeXBlLCBFbXB0eVR5cGU+IFZvaWRTeW5jQ2FsbGJhY2tIZWxwZXI7Cit0eXBlZGVmIFN5bmND
YWxsYmFja0hlbHBlcjxGaWxlU3lzdGVtQ2FsbGJhY2ssIEVtcHR5T2JzZXJ2ZXJUeXBlLCBET01G
aWxlU3lzdGVtLCBET01GaWxlU3lzdGVtU3luYz4gRmlsZVN5c3RlbVN5bmNDYWxsYmFja0hlbHBl
cjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lT
VEVNKQorCisjZW5kaWYgLy8gU3luY0NhbGxiYWNrSGVscGVyX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXgg
OGNhYzg3OTk3YWE5NTMyNjYwZTViZWMyM2U5OWNiMTkxZWJkOTRlNS4uODZiNzJlNTVmNDM5ODYy
YjFhN2MyMTA0ZTNjZDliNGU5M2M2M2Y2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5pZGwKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTE5Miw3ICsxOTIs
NyBAQCBtb2R1bGUgd2luZG93IHsKICNpZiBkZWZpbmVkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJiYg
RU5BQkxFX0ZJTEVfU1lTVEVNCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFRFTVBPUkFS
WSA9IDA7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFBFUlNJU1RFTlQgPSAxOwotICAg
ICAgICBbRW5hYmxlZEF0UnVudGltZV0gdm9pZCByZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNpZ25l
ZCBzaG9ydCB0eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0g
RmlsZVN5c3RlbUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25h
bF0gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgW0VuYWJsZWRBdFJ1bnRp
bWU9RmlsZVN5c3RlbV0gdm9pZCByZXF1ZXN0RmlsZVN5c3RlbShpbiB1bnNpZ25lZCBzaG9ydCB0
eXBlLCBpbiBsb25nIGxvbmcgc2l6ZSwgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRmlsZVN5c3Rl
bUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW0NhbGxiYWNrLCBPcHRpb25hbF0gRXJyb3JD
YWxsYmFjayBlcnJvckNhbGxiYWNrKTsKIAogICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1
bnRpbWU9RmlsZVN5c3RlbV0gRmxhZ3NDb25zdHJ1Y3RvciBGbGFnczsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBiL1dlYkNvcmUvcGxhdGZv
cm0vQXN5bmNGaWxlU3lzdGVtLmgKaW5kZXggMWJmNzU4MDgyMWJiMzA3YmRlZjAxYjZiZjAwNGM5
YjM0OThiNzVmZi4uMjdjNjI0MGViM2UyOTgwM2U0N2VmODE5ZDVlNGVjMzMxZTkwMjliZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCkBAIC01OSw2ICs1OSwxMCBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCisgICAgLy8gU3ViY2xhc3MgbXVzdCBp
bXBsZW1lbnQgdGhpcyBpZiBpdCBzdXBwb3J0cyBzeW5jaHJvbm91cyBvcGVyYXRpb25zLgorICAg
IC8vIFRoaXMgc2hvdWxkIHJldHVybiBmYWxzZSBpZiB0aGVyZSBhcmUgbm8gcGVuZGluZyBvcGVy
YXRpb25zLgorICAgIHZpcnR1YWwgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpIHsg
cmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IHBsYXRm
b3JtLXNwZWNpZmljIEFzeW5jRmlsZVN5c3RlbSBpbnN0YW5jZSBpZiB0aGUgcGxhdGZvcm0gaGFz
IGl0cyBvd24gaW1wbGVtZW50YXRpb24uCiAgICAgc3RhdGljIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByb290UGF0aCk7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcAppbmRleCA2Y2VlMjQ2MjliN2I4NmZhYzI3YTI1YjViM2FjYWIzODkzZDcwYmE4
Li5lYTFiYTg5YTNlNzcyZjMxYzQzODc4M2Y0ZDUwMTYyZDcwYWUzY2M5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuY3BwCkBAIC02NiwxMSArNjYsMTMgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5c3Rl
bS5oIgorI2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxs
YmFjay5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxs
YmFjay5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJMb2Nh
bEZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJTeW5jQ2FsbGJhY2tIZWxwZXIuaCIKICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNjYsNiArMzY4LDI1IEBAIHZvaWQgV29ya2VyQ29u
dGV4dDo6cmVxdWVzdEZpbGVTeXN0ZW0oaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVm
UHRyPEZpbGVTCiAgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVTeXN0ZW0oKS5yZXF1ZXN0
RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmlsZVN5c3RlbUNhbGxiYWNr
czo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcykpOwogfQogCitQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBXb3JrZXJDb250ZXh0OjpyZXF1ZXN0RmlsZVN5
c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICBlYyA9IDA7CisgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwg
IXNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSkgeworICAgICAgICBlYyA9
IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQXN5bmNGaWxl
U3lzdGVtOjpUeXBlIGZpbGVTeXN0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVt
OjpUeXBlPih0eXBlKTsKKyAgICBpZiAoZmlsZVN5c3RlbVR5cGUgIT0gQXN5bmNGaWxlU3lzdGVt
OjpUZW1wb3JhcnkgJiYgZmlsZVN5c3RlbVR5cGUgIT0gQXN5bmNGaWxlU3lzdGVtOjpQZXJzaXN0
ZW50KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CisKKyAgICBGaWxlU3lzdGVtU3luY0NhbGxiYWNrSGVscGVyIGhlbHBl
cjsKKyAgICBMb2NhbEZpbGVTeXN0ZW06OmxvY2FsRmlsZVN5c3RlbSgpLnJlcXVlc3RGaWxlU3lz
dGVtKHRoaXMsIGZpbGVTeXN0ZW1UeXBlLCBzaXplLCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVh
dGUoaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpLCB0aGlz
KSwgdHJ1ZSk7CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMpOworfQorCiBDT01QSUxF
X0FTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KFdvcmtlckNvbnRleHQ6OlRFTVBPUkFSWSkgPT0gc3Rh
dGljX2Nhc3Q8aW50PihBc3luY0ZpbGVTeXN0ZW06OlRlbXBvcmFyeSksIGVudW1fbWlzbWF0Y2gp
OwogQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250ZXh0OjpQRVJTSVNU
RU5UKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KEFzeW5jRmlsZVN5c3RlbTo6UGVyc2lzdGVudCksIGVu
dW1fbWlzbWF0Y2gpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAppbmRleCA0MTI4YTU2
MjNiOGVmOGFkYzM0MjA3NDE1M2EwZWE0YzZiOTg0ZDhmLi4wODgwNGQyYTBlZGY4NjFlYWU2Zjcz
YzBmNmIyNjczZmQ0NjU4NjkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKQEAgLTQ1LDYgKzQ1
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEJsb2I7CisgICAgY2xhc3Mg
RE9NRmlsZVN5c3RlbVN5bmM7CiAgICAgY2xhc3MgRGF0YWJhc2U7CiAgICAgY2xhc3MgRGF0YWJh
c2VDYWxsYmFjazsKICAgICBjbGFzcyBEYXRhYmFzZVN5bmM7CkBAIC0xMzAsNiArMTMxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgUEVSU0lTVEVOVCwKICAgICAgICAgfTsK
ICAgICAgICAgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbShpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUs
IFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
Pik7CisgICAgICAgIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IHJlcXVlc3RGaWxlU3lz
dGVtU3luYyhpbnQgdHlwZSwgbG9uZyBsb25nIHNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRp
ZgogCiAgICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNl
ZSBKU1dvcmtlckNvbnRleHQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smKSBpbgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsIGIvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckNvbnRleHQuaWRsCmluZGV4IDNlMTg1YzBkNWI4ZTBhMTM3YmQ5MjhjNTJhMmRiYTgxNzVm
ODAzMzcuLmFhNDBmZjNmODIwOWUxZjM4Mjg2YmEyNTczZTYxZmIwNjU5OTYxM2MgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5pZGwKQEAgLTEwOCw3ICsxMDgsOCBAQCBtb2R1bGUgdGhyZWFkcyB7
CiAjaWYgZGVmaW5lZChFTkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJMRV9GSUxFX1NZU1RFTQog
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAwOwogICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBQRVJTSVNURU5UID0gMTsKLSAgICAgICAgW0VuYWJsZWRBdFJ1bnRp
bWVdIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9u
ZyBsb25nIHNpemUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJy
b3JDYWxsYmFjayk7CisgICAgICAgIFtFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQg
cmVxdWVzdEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNp
emUsIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFj
ayk7CisgICAgICAgIFtFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIERPTUZpbGVTeXN0ZW1T
eW5jIHJlcXVlc3RGaWxlU3lzdGVtU3luYyhpbiB1bnNpZ25lZCBzaG9ydCB0eXBlLCBpbiBsb25n
IGxvbmcgc2l6ZSkgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKIAogICAgICAgICAgICAgICAgICBh
dHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9RmlsZVN5c3RlbV0gRmxhZ3NDb25zdHJ1Y3RvciBG
bGFnczsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDg4NGFiNjBhY2Q3ZjdiN2ZiNzBhMjgxMmFm
MDkwYmQ1MjMyYmZjZS4uMGI2NTEyZTc4N2MyNTIwNzNhN2NlNmYyZDJkMTE2YjkzOTIyYWRkOCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTAtMTAtMDYgIEtpbnVrbyBZYXN1ZGEg
IDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVtU3luYyBpbXBsZW1lbnRhdGlvbiBmb3IgV29y
a2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA0
NAorCisgICAgICAgICogc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0pOiBBZGRlZCBhIG5l
dyBwYXJhbWV0ZXIKKyAgICAgICAgZm9yIHN5bmNocm9ub3VzIG1vZGUuCisgICAgICAgICogc3Jj
L1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGw6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKTogQWRkZWQK
KyAgICAgICAgYSBwYXJhbWV0ZXIgZm9yIHN5bmNocm9ub3VzIG1vZGUuCisgICAgICAgIChXZWJL
aXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsOjpkaWRPcGVuRmlsZVN5c3RlbSk6IENoYW5n
ZWQgdG8KKyAgICAgICAgY3JlYXRlcyBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSB3aXRo
IHN5bmNocm9ub3VzIGZsYWcuCisgICAgICAgICogc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJ
bXBsLmg6CisgICAgICAgICogc3JjL1dlYldvcmtlckJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJXb3JrZXJCYXNlOjpvcGVuRmlsZVN5c3RlbSk6IEFkZGVkIGEgcGFyYW1ldGVyIGZvcgor
ICAgICAgICBzeW5jaHJvbm91cyBtb2RlLgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNlLmg6
CisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bTo6d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUpOgorICAgICAgICBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjptb3ZlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZW1vdmUp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlYWRN
ZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bTo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bTo6Y3JlYXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjpmaWxlRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpkaXJlY3RvcnlFeGlzdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlYWREaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UpOgorICAgICAgICBVcGRhdGVkIHRvIHN0b3JlIHRo
ZSBjcmVhdGVkIGJyaWRnZSBpbiBhIG1lbWJlciB2YXJpYWJsZSBzbyB0aGF0CisgICAgICAgIHdl
IGNhbiBjYWxsIGJyaWRnZS0+c3RvcCgpIGxhdGVyIHdoZW4gdGhlIFJ1bkxvb3AgaXMgdGVybWlu
YXRpbmcuCisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlKTog
QWRkZWQgYSBuZXcKKyAgICAgICAgcGFyYW1ldGVyIGZvciBzeW5jaHJvbm91cyBtb2RlLgorCiAy
MDEwLTA5LTI5ICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxG
aWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IGE0ZjJkNzIzNzg5NTZlZTEyNTM3MDg4ZmMyYWM5
OWFlMTU0ZGRkNjkuLjI1YjFmZWJmYTI1NDgxMjU3ZDUzMGFkNzg3NjA4ZGE4YzA5NTQ3YTMgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21pdW0uY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIExvY2FsRmlsZVN5c3RlbSYgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZp
bGVTeXN0ZW0oKQogICAgIHJldHVybiAqbG9jYWxGaWxlU3lzdGVtOwogfQogCi12b2lkIExvY2Fs
RmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBMb2NhbEZpbGVT
eXN0ZW06OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgYm9vbCBzeW5jaHJvbm91cykKIHsK
ICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewpA
QCAtNjgsNyArNjgsNyBAQCB2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaQogICAgICAgICBXb3JrZXJD
b250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRl
eHQpOwogICAgICAgICBXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHkgPSAmd29y
a2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCk7CiAgICAgICAgIFdlYldv
cmtlckJhc2UqIHdlYldvcmtlciA9IHN0YXRpY19jYXN0PFdlYldvcmtlckJhc2UqPih3b3JrZXJM
b2FkZXJQcm94eSk7Ci0gICAgICAgIHdlYldvcmtlci0+b3BlbkZpbGVTeXN0ZW0oc3RhdGljX2Nh
c3Q8V2ViRmlsZVN5c3RlbTo6VHlwZT4odHlwZSksIHNpemUsIG5ldyBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzSW1wbChjYWxsYmFja3MsIGNvbnRleHQpKTsKKyAgICAgICAgd2ViV29ya2VyLT5vcGVu
RmlsZVN5c3RlbShzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgc2l6ZSwg
bmV3IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcywgY29udGV4dCwgc3luY2hy
b25vdXMpLCBzeW5jaHJvbm91cyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDZiOGM4MGY3MDVmZDdj
MDBkYmFlYzRjYjE2OTlkNGFkNzllYjkwNGQuLmY0NGU4ZjFiOTgzMWYxZjU3NjRlYTI5MjQwNDg3
NmU5YmQ1ZDdmNWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwuY3BwCkBAIC00NSw5ICs0NSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBs
OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGw6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJ
bXBsKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGJvb2wgc3luY2hyb25vdXMpCiAg
ICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAg
ICAsIG1fc3luY2hyb25vdXMoc3luY2hyb25vdXMpCiB7CiAgICAgQVNTRVJUKG1fY2FsbGJhY2tz
KTsKIH0KQEAgLTc5LDcgKzgwLDcgQEAgdm9pZCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbDo6
ZGlkUmVhZERpcmVjdG9yeShjb25zdCBXZWJWZWN0b3I8V2ViRmlsZVN5c3RlbUUKIHZvaWQgV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGw6OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBwYXRoKQogewogICAgIGlmIChtX2NvbnRleHQgJiYg
bV9jb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKLSAgICAgICAgbV9jYWxsYmFja3MtPmRpZE9w
ZW5GaWxlU3lzdGVtKG5hbWUsIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUo
bV9jb250ZXh0LCBwYXRoKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5kaWRPcGVuRmlsZVN5c3Rl
bShuYW1lLCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlKG1fY29udGV4dCwg
cGF0aCwgbV9zeW5jaHJvbm91cykpOwogICAgIGVsc2UKICAgICAgICAgbV9jYWxsYmFja3MtPmRp
ZE9wZW5GaWxlU3lzdGVtKG5hbWUsIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUocGF0
aCkpOwogICAgIGRlbGV0ZSB0aGlzOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDk0N2ZkMmY4YzczYmRmODIwOGY0ZDBhZTJhYzM2
YjJmNmI5MWQ3MTEuLjc1ZmEyYmI5OTRmMDZlNDI2ODQ3ZjA3YWIyMjJmYmVhYmY4MmYxZDIgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgV2ViU3RyaW5nOwogCiBjbGFzcyBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbCA6IHB1YmxpYyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKIHB1YmxpYzoK
LSAgICBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqID0g
MCk7CisgICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoUGFzc093blB0cjxXZWJDb3JlOjpB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiA9IDAsIGJvb2wgc3luY2hyb25vdXMgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB+V2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCk7CkBA
IC02Myw2ICs2Myw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBVc2VkIGZvciB3b3JrZXIncyBvcGVu
RmlsZVN5c3RlbSBjYWxsYmFja3MuCiAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogbV9jb250ZXh0OworICAgIGJvb2wgbV9zeW5jaHJvbm91czsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNl
LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKaW5kZXggZjRmNTky
MTVkMGZmMGY5MjJjMDBhYWY3NjBjNDk1Njg3M2M5ZDJkNy4uZGU0ODU4YzlhODZkOTcxOTYzNTI1
ZTIwNTU3NDRhOTk4YzE5NDk2NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJX
b3JrZXJCYXNlLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuY3Bw
CkBAIC0yMzcsMTEgKzIzNywyMyBAQCBib29sIFdlYldvcmtlckJhc2U6OmFsbG93RGF0YWJhc2Uo
V2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cgogfQogCiAjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotdm9pZCBXZWJXb3JrZXJCYXNlOjpvcGVuRmlsZVN5c3RlbShX
ZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdlYldvcmtlckJhc2U6Om9wZW5GaWxlU3lzdGVtKFdl
YkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3MqIGNhbGxiYWNrcywgYm9vbCBzeW5jaHJvbm91cykKIHsKKyAgICBXb3JrZXJSdW5Mb29w
JiBydW5Mb29wID0gbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKTsKICAgICBXb3JrZXJTY3JpcHRD
b250cm9sbGVyKiBjb250cm9sbGVyID0gV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Y29udHJvbGxl
ckZvckNvbnRleHQoKTsKLSAgICBSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZT4gYnJpZGdlID0gV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlKHRoaXMs
IGNvbnRyb2xsZXItPndvcmtlckNvbnRleHQoKSwgY2FsbGJhY2tzKTsKLSAgICBicmlkZ2UtPnBv
c3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZChjb21tb25DbGllbnQoKSwgdHlwZSwgc2l6ZSwg
b3BlbkZpbGVTeXN0ZW1Nb2RlKTsKKyAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0g
Y29udHJvbGxlci0+d29ya2VyQ29udGV4dCgpOworCisgICAgLy8gQ3JlYXRlIGEgdW5pcXVlIG1v
ZGUgZm9yIHRoaXMgb3BlbkZpbGVTeXN0ZW0gY2FsbC4KKyAgICBTdHJpbmcgbW9kZSA9IG9wZW5G
aWxlU3lzdGVtTW9kZTsKKyAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5Mb29wLmNy
ZWF0ZVVuaXF1ZUlkKCkpKTsKKworICAgIFJlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlPiBicmlkZ2UgPSBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGUo
dGhpcywgd29ya2VyQ29udGV4dCwgY2FsbGJhY2tzKTsKKyAgICBicmlkZ2UtPnBvc3RPcGVuRmls
ZVN5c3RlbVRvTWFpblRocmVhZChjb21tb25DbGllbnQoKSwgdHlwZSwgc2l6ZSwgbW9kZSk7CisK
KyAgICBpZiAoc3luY2hyb25vdXMpIHsKKyAgICAgICAgaWYgKHJ1bkxvb3AucnVuSW5Nb2RlKHdv
cmtlckNvbnRleHQsIG1vZGUpID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCisgICAgICAgICAg
ICBicmlkZ2UtPnN0b3AoKTsKKyAgICB9CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlckJhc2UuaAppbmRleCAxZjRiYzAzMTY5ODhkMDIwNDVjMDQ2NmFlZTc2YmMwOWFlZjBiNDA4
Li5mZTg0YmY3OGZhMDA2MDA0YTJjMzEwMGM1ODJlNTczNzVlZDIyMmNjIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckJhc2UuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCiAgICAgLy8gUmVxdWVzdHMgdG8gb3BlbiBhIGZpbGUgc3lzdGVtIGZv
ciB0aGlzIHdvcmtlci4gKE5vdGUgdGhhdCB0aGlzIGlzIG5vdCB0aGUgaW1wbGVtZW50YXRpb24g
Zm9yIFdlYkZyYW1lQ2xpZW50OjpvcGVuRmlsZVN5c3RlbS4pCi0gICAgdm9pZCBvcGVuRmlsZVN5
c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgV2ViRmlsZVN5c3RlbUNh
bGxiYWNrcyopOworICAgIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwg
bG9uZyBsb25nIHNpemUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqLCBib29sIHN5bmNocm9ub3Vz
KTsKICNlbmRpZgogCiAgICAgLy8gRXhlY3V0ZXMgdGhlIGdpdmVuIHRhc2sgb24gdGhlIG1haW4g
dGhyZWFkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5
c3RlbUNocm9taXVtLmNwcAppbmRleCBiMjFiNzA5ZTc2ZjljOWE0Y2EzMGNmMmUyZWI0MWI4ODk5
ZGVmODliLi42YzJkNGFlNzM0YjEzODgzMTU1ZTg3NTYxZmFjM2U3Zjk0ZDI2ZGNkIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmNwcApAQCAtNTMsMTcgKzUzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IGNoYXIgZmlsZVN5c3RlbU9wZXJhdGlvbnNNb2RlW10gPSAiZmlsZVN5c3RlbU9wZXJhdGlv
bnNNb2RlIjsKIAotV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OldvcmtlckFzeW5jRmls
ZVN5c3RlbUNocm9taXVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgcm9vdFBhdGgpCitXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6V29ya2VyQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiByb290UGF0aCwgYm9vbCBzeW5jaHJvbm91cykKICAgICA6IEFzeW5jRmlsZVN5
c3RlbShyb290UGF0aCkKICAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQog
ICAgICwgbV93ZWJGaWxlU3lzdGVtKFdlYktpdDo6d2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0o
KSkKLSAgICAsIG1fbW9kZShmaWxlU3lzdGVtT3BlcmF0aW9uc01vZGUpCisgICAgLCBtX3dvcmtl
ckNvbnRleHQoc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpKQorICAgICwgbV9z
eW5jaHJvbm91cyhzeW5jaHJvbm91cykKIHsKICAgICBBU1NFUlQobV93ZWJGaWxlU3lzdGVtKTsK
ICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7
CiAKLSAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya2Vy
Q29udGV4dCo+KGNvbnRleHQpOwotICAgIFdvcmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQ
cm94eSA9ICZ3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKTsKKyAg
ICBXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHkgPSAmbV93b3JrZXJDb250ZXh0
LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKTsKICAgICBtX3dvcmtlciA9IHN0YXRpY19j
YXN0PFdlYldvcmtlckJhc2UqPih3b3JrZXJMb2FkZXJQcm94eSk7CiB9CiAKQEAgLTcxLDQ5ICs3
MSw2MiBAQCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6fldvcmtlckFzeW5jRmlsZVN5
c3RlbUNocm9taXVtKCkKIHsKIH0KIAorYm9vbCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bTo6d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKQoreworICAgIGlmICghbV9icmlkZ2VGb3JD
dXJyZW50T3BlcmF0aW9uLmdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQ
dHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlID0gbV9icmlkZ2VGb3JD
dXJyZW50T3BlcmF0aW9uLnJlbGVhc2UoKTsKKyAgICBpZiAobV93b3JrZXJDb250ZXh0LT50aHJl
YWQoKS0+cnVuTG9vcCgpLnJ1bkluTW9kZShtX3dvcmtlckNvbnRleHQsIG1fbW9kZUZvckN1cnJl
bnRPcGVyYXRpb24pID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKKyAgICAgICAgYnJpZGdl
LT5zdG9wKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06Om1vdmUoY29uc3QgU3Ry
aW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVhdGVXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RNb3ZlVG9NYWluVGhy
ZWFkKG1fd2ViRmlsZVN5c3RlbSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCBtX21vZGUp
OworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+
cG9zdE1vdmVUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBzb3VyY2VQYXRoLCBkZXN0aW5h
dGlvblBhdGgsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFz
eW5jRmlsZVN5c3RlbUNocm9taXVtOjpjb3B5KGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZShjYWxsYmFja3MpLT5wb3N0Q29weVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0s
IHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwgbV9tb2RlKTsKKyAgICBjcmVhdGVXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RDb3B5VG9NYWluVGhyZWFk
KG1fd2ViRmlsZVN5c3RlbSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCBtX21vZGVGb3JD
dXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bTo6cmVtb3ZlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RSZW1vdmVUb01haW5UaHJlYWQobV93ZWJGaWxlU3lz
dGVtLCBwYXRoLCBtX21vZGUpOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2UoY2FsbGJhY2tzKS0+cG9zdFJlbW92ZVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0s
IHBhdGgsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjpyZWFkTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0
ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdFJlYWRNZXRh
ZGF0YVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1fbW9kZSk7CisgICAgY3Jl
YXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0UmVhZE1l
dGFkYXRhVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9tb2RlRm9yQ3VycmVu
dE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNy
ZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVhdGVXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RDcmVhdGVGaWxlVG9NYWlu
VGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgZXhjbHVzaXZlLCBtX21vZGUpOworICAgIGNy
ZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENyZWF0
ZUZpbGVUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBleGNsdXNpdmUsIG1fbW9k
ZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNo
cm9taXVtOjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2
ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAg
ICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RD
cmVhdGVEaXJlY3RvcnlUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBleGNsdXNp
dmUsIG1fbW9kZSk7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShj
YWxsYmFja3MpLT5wb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3Rl
bSwgcGF0aCwgZXhjbHVzaXZlLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9p
ZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7
Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5w
b3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1fbW9kZSk7
CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5w
b3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1fbW9kZUZv
ckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtOjpkaXJlY3RvcnlFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0ZVdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFp
blRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1fbW9kZSk7CisgICAgY3JlYXRlV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0RGlyZWN0b3J5RXhpc3Rz
VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9tb2RlRm9yQ3VycmVudE9wZXJh
dGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlYWREaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2UoY2FsbGJhY2tzKS0+cG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQobV93ZWJGaWxl
U3lzdGVtLCBwYXRoLCBtX21vZGUpOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQobV93ZWJG
aWxlU3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRl
ckNsaWVudCosIGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikKQEAgLTEyMyw3ICsxMzYsMTMgQEAgdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bTo6Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFMKIAogUGFz
c1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIHJldHVy
biBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGUobV93b3JrZXIsIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgbmV3IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxi
YWNrcykpOworICAgIEFTU0VSVCghbV9zeW5jaHJvbm91cyB8fCAhbV9icmlkZ2VGb3JDdXJyZW50
T3BlcmF0aW9uLmdldCgpKTsKKworICAgIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24gPSBmaWxl
U3lzdGVtT3BlcmF0aW9uc01vZGU7CisgICAgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbi5hcHBl
bmQoU3RyaW5nOjpudW1iZXIobV93b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpLmNy
ZWF0ZVVuaXF1ZUlkKCkpKTsKKworICAgIG1fYnJpZGdlRm9yQ3VycmVudE9wZXJhdGlvbiA9IFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZShtX3dvcmtlciwgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChj
YWxsYmFja3MpKTsKKyAgICByZXR1cm4gbV9icmlkZ2VGb3JDdXJyZW50T3BlcmF0aW9uOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dv
cmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKaW5kZXggN2NkMzRiOTdmYTRlNzQ5ZTFlYmY4
YmMzZDY5YTA5ZjNjNmY5NjI0Ni4uNWZjNzY0NmFkOWI2MTVlYTFmYzNjYTQ4YjcyODM1YmI0ODRj
N2YxNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bS5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW0uaApAQCAtNDgsMTYgKzQ4LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKK2NsYXNzIFdvcmtlckNvbnRleHQ7CiAKIGNsYXNzIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUNocm9taXVtIDogcHVibGljIEFzeW5jRmlsZVN5c3RlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiByb290UGF0aCkKKyAgICBzdGF0aWMgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBib29sIHN5bmNocm9ub3VzKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShjb250
ZXh0LCByb290UGF0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtKGNvbnRleHQsIHJvb3RQYXRoLCBzeW5jaHJvbm91cykpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgfldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKCk7CiAKKyAg
ICAvLyBSdW5zIG9uZSBwZW5kaW5nIG9wZXJhdGlvbiAodG8gd2FpdCBmb3IgY29tcGxldGlvbiBp
biB0aGUgc3luYy1tb2RlKS4KKyAgICB2aXJ0dWFsIGJvb2wgd2FpdEZvck9wZXJhdGlvblRvQ29t
cGxldGUoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFN0cmluZyYgc291cmNlUGF0
aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKQEAgLTcwLDEz
ICs3NCwxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0Zp
bGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogCiBwcml2YXRlOgotICAgIFdvcmtlckFzeW5jRmls
ZVN5c3RlbUNocm9taXVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHJv
b3RQYXRoKTsKKyAgICBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiByb290UGF0aCwgYm9vbCBzeW5jaHJvbm91cyk7CisK
ICAgICBQYXNzUmVmUHRyPFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4g
Y3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogICAgIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogbV93ZWJGaWxl
U3lzdGVtOwogICAgIFdlYktpdDo6V2ViV29ya2VyQmFzZSogbV93b3JrZXI7Ci0gICAgU3RyaW5n
IG1fbW9kZTsKKyAgICBXb3JrZXJDb250ZXh0KiBtX3dvcmtlckNvbnRleHQ7CisgICAgUmVmUHRy
PFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gbV9icmlkZ2VGb3JDdXJy
ZW50T3BlcmF0aW9uOworICAgIFN0cmluZyBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uOworICAg
IGJvb2wgbV9zeW5jaHJvbm91czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69901</attachid>
            <date>2010-10-06 01:50:56 -0700</date>
            <delta_ts>2010-10-06 01:59:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47044-20101006015055.patch</filename>
            <type>text/plain</type>
            <size>95491</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YTZmY2JkMjlhNzAyMGM2OTE1MTgzN2ZhNWQxNjhlOTYzZTMwYmIyLi5mNDgyOWQy
OGE1YTUzZDBmMmYzMDcyMTExYjZmOTI5NDM1Y2JmMzAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTAtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVt
U3luYyBpbXBsZW1lbnRhdGlvbiBmb3IgV29ya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA0NAorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L2FzeW5jLW9wZXJhdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qczoKKyAgICAgICAgKiBmYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9mbGFncy1wYXNzaW5nLmpzOgorICAgICAg
ICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRp
b25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBs
ZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0
bWw6IEFkZGVkLgorCiAyMDEwLTEwLTA2ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCB0ZXN0IGV4cGVjdGF0aW9uIHVwZGF0ZS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhODJmYzA0YTk3ZDEzZmM5YjAwYzZhZDFkYmYzZmM2YTQxNWY3MmYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy5o
dG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZnMtdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL2FzeW5jLW9wZXJhdGlvbnMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUwOTA0MWE1YThkNjJhOWQy
ZWRlNzI5ODIyZjk0YWFlMDNmMTJjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcwpAQCAtMCwwICsxLDEw
MiBAQAorZGVzY3JpcHRpb24oIlRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0g
b3BlcmF0aW9ucy4iKTsKKwordmFyIGZpbGVTeXN0ZW0gPSBudWxsOworCit2YXIgYTsKK3ZhciBi
OwordmFyIGM7Cit2YXIgZDsKKwordmFyIHBhdGhzID0gW107Cit2YXIgZGlyc0NvdW50ID0gMDsK
K3ZhciByZWFkZXIgPSBudWxsOworCitmdW5jdGlvbiBlcnJvckNhbGxiYWNrKGVycm9yKSB7Cisg
ICAgZGVidWcoIkdvdCBlcnJvcjogIiArIGVycm9yLmNvZGUpOworICAgIHJlbW92ZVJlY3Vyc2l2
ZWx5KGZpbGVTeXN0ZW0ucm9vdCk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9u
IGVudHJpZXNDYWxsYmFjayhlbnRyaWVzKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRy
aWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHBhdGhzLnB1c2goZW50cmllc1tpXS5mdWxsUGF0
aCk7CisgICAgICAgIGlmIChlbnRyaWVzW2ldLmlzRGlyZWN0b3J5KQorICAgICAgICAgICAgZGly
c0NvdW50Kys7CisgICAgfQorICAgIGlmICghZW50cmllcy5sZW5ndGgpIHsKKyAgICAgICAgcmVh
ZGVyLnJlYWRFbnRyaWVzKGVudHJpZXNDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcGF0aHMuc29ydCgpOworICAgICAgICBzaG91bGRCZSgnIicgKyBwYXRo
cy5qb2luKCcsJykgKyAnIicsICciL2EsL2IsL2MsL2QyLC9lLC9mIicpOworICAgICAgICBzaG91
bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKKyAgICAgICAgcmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5
c3RlbS5yb290KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlv
biB2ZXJpZnkoKSB7CisgICAgZGVidWcoIlZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMu
Iik7CisgICAgcmVhZGVyID0gZmlsZVN5c3RlbS5yb290LmNyZWF0ZVJlYWRlcigpOworICAgIHJl
YWRlci5yZWFkRW50cmllcyhlbnRyaWVzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworfQorCitm
dW5jdGlvbiBhc3luY1Rlc3QyKCkgeworICAgIGRlYnVnKCJTdGFydGluZyBhc3luYyB0ZXN0IHN0
YWdlIDIuIik7CisKKyAgICB2YXIgaGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKKyAgICB2YXIg
ZG9uZSA9IGZ1bmN0aW9uKCkgeyBoZWxwZXIuZG9uZSgpOyB9OworCisgICAgaGVscGVyLnJ1bihm
dW5jdGlvbigpIHsgYS5jb3B5VG8oYiwgJ3RtcCcsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsK
KyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBhLmdldE1ldGFkYXRhKGRvbmUsIGVycm9yQ2Fs
bGJhY2spOyB9KTsKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBiLmdldFBhcmVudChkb25l
LCBlcnJvckNhbGxiYWNrKTsgfSk7CisgICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgYy5jb3B5
VG8oZmlsZVN5c3RlbS5yb290LCAnZicsIGRvbmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKKyAgICBo
ZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBkLm1vdmVUbyhmaWxlU3lzdGVtLnJvb3QsICdkMicsIGRv
bmUsIGVycm9yQ2FsbGJhY2spOyB9KTsKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgeyBmaWxl
U3lzdGVtLnJvb3QuZ2V0RmlsZSgnZScsIHtjcmVhdGU6dHJ1ZX0sIGRvbmUsIGVycm9yQ2FsbGJh
Y2spOyB9KTsKKworICAgIGhlbHBlci5qb2luKHZlcmlmeSk7Cit9CisKK2Z1bmN0aW9uIGFzeW5j
VGVzdDEoKSB7CisgICAgZGVidWcoIlN0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4iKTsKKwor
ICAgIHZhciBoZWxwZXIgPSBuZXcgSm9pbkhlbHBlcigpOworICAgIHZhciByb290ID0gZmlsZVN5
c3RlbS5yb290OworCisgICAgaGVscGVyLnJ1bihmdW5jdGlvbigpIHsgcm9vdC5nZXRGaWxlKCdh
Jywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgYSA9IGVudHJ5Owor
ICAgICAgICBoZWxwZXIuZG9uZSgpOworICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKKworICAg
IGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0
cnVlfSwgZnVuY3Rpb24oZW50cnkpIHsKKyAgICAgICAgYiA9IGVudHJ5OworICAgICAgICBoZWxw
ZXIuZG9uZSgpOworICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKKworICAgIGhlbHBlci5ydW4o
ZnVuY3Rpb24oKSB7IHJvb3QuZ2V0RGlyZWN0b3J5KCdjJywge2NyZWF0ZTp0cnVlfSwgZnVuY3Rp
b24oZW50cnkpIHsKKyAgICAgICAgYyA9IGVudHJ5OworICAgICAgICBoZWxwZXIuZG9uZSgpOwor
ICAgIH0sIGVycm9yQ2FsbGJhY2spOyB9KTsKKworICAgIGhlbHBlci5ydW4oZnVuY3Rpb24oKSB7
IHJvb3QuZ2V0RmlsZSgnZCcsIHtjcmVhdGU6dHJ1ZX0sIGZ1bmN0aW9uKGVudHJ5KSB7CisgICAg
ICAgIGQgPSBlbnRyeTsKKyAgICAgICAgaGVscGVyLmRvbmUoKTsKKyAgICB9LCBlcnJvckNhbGxi
YWNrKTsgfSk7CisKKyAgICBoZWxwZXIuam9pbihhc3luY1Rlc3QyKTsKK30KKworaWYgKHRoaXMu
cmVxdWVzdEZpbGVTeXN0ZW0pIHsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICB2YXIg
aGVscGVyID0gbmV3IEpvaW5IZWxwZXIoKTsKKyAgICBoZWxwZXIucnVuKGZ1bmN0aW9uKCkgewor
ICAgIHJlcXVlc3RGaWxlU3lzdGVtLmFwcGx5KHRoaXMsIFt0aGlzLlRFTVBPUkFSWSwgMTAwLCBm
dW5jdGlvbihmcykgeworICAgICAgICBkZWJ1ZygiR290IEZpbGVTeXN0ZW06IiArIGZzLm5hbWUp
OworICAgICAgICBmaWxlU3lzdGVtID0gZnM7CisgICAgICAgIHJlbW92ZVJlY3Vyc2l2ZWx5KGZp
bGVTeXN0ZW0ucm9vdCwgZnVuY3Rpb24oKXsgaGVscGVyLmRvbmUoKTsgfSwgZXJyb3JDYWxsYmFj
ayk7CisgICAgfSwgZXJyb3JDYWxsYmFja10pOyB9KTsKKyAgICBkZWJ1ZygicmVxdWVzdGVkIEZp
bGVTeXN0ZW0uIik7CisgICAgaGVscGVyLmpvaW4oYXN5bmNUZXN0MSk7Cit9IGVsc2UKKyAgICBk
ZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7CisKK3Zh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wcmUuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcwppbmRleCA4
NGUwZmFkOTUxNmIxNTIxYzU0MzhlMGNhYzBmZmNiMWYwODE3ZTBkLi4zZWNkNzA5MDdmNGU1ZTZi
M2QwZTlkYTVkOWY3OGZkNzAwMjQxNjVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcworKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcwpAQCAtMTAs
NiArMTAsNyBAQCBmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQogewogICAgIGRl
YnVnKCdTdGFydGluZyB3b3JrZXI6ICcgKyB0ZXN0U2NyaXB0VVJMKTsKICAgICB2YXIgd29ya2Vy
ID0gbmV3IFdvcmtlcignLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMnKTsKKyAgICB3
b3JrZXIucG9zdE1lc3NhZ2UoJy4uL3Jlc291cmNlcy9mcy10ZXN0LXV0aWwuanMnKTsKICAgICB3
b3JrZXIucG9zdE1lc3NhZ2UodGVzdFNjcmlwdFVSTCk7CiAgICAgd29ya2VyLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1NjVh
OWMzMjJjNDlmOTA2Y2I1ZDY4MDU5ZjM1NDMwZDA5NmIzMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzCkBA
IC0wLDAgKzEsMzggQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IG1ha2luZyBtdWx0aXBsZSBzeW5jaHJv
bm91cyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuIik7CisKK3ZhciBmaWxlU3lzdGVtID0gcmVxdWVz
dEZpbGVTeXN0ZW1TeW5jKHRoaXMuVEVNUE9SQVJZLCAxMDApOworCisvLyBTdGFnZSAxIChwcmVw
YXJlKQordmFyIGEgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RmlsZSgnYScsIHtjcmVhdGU6dHJ1ZX0p
OwordmFyIGIgPSBmaWxlU3lzdGVtLnJvb3QuZ2V0RGlyZWN0b3J5KCdiJywge2NyZWF0ZTp0cnVl
fSk7Cit2YXIgYyA9IGZpbGVTeXN0ZW0ucm9vdC5nZXREaXJlY3RvcnkoJ2MnLCB7Y3JlYXRlOnRy
dWV9KTsKK3ZhciBkID0gZmlsZVN5c3RlbS5yb290LmdldEZpbGUoJ2QnLCB7Y3JlYXRlOnRydWV9
KTsKKworLy8gU3RhZ2UgMiAodGVzdCkKK3ZhciBhX2NvcHkgPSBhLmNvcHlUbyhiLCAndG1wJyk7
Cit2YXIgbWV0YWRhdGEgPSBhLmdldE1ldGFkYXRhKCk7Cit2YXIgYl9wYXJlbnQgPSBiLmdldFBh
cmVudCgpOwordmFyIGNfY29weSA9IGMuY29weVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2YnKTsKK3Zh
ciBkX25ldyA9IGQubW92ZVRvKGZpbGVTeXN0ZW0ucm9vdCwgJ2QyJyk7Cit2YXIgZSA9IGZpbGVT
eXN0ZW0ucm9vdC5nZXRGaWxlKCdlJywge2NyZWF0ZTp0cnVlfSk7CisKKy8vIFZlcmlmeQordmFy
IHJlYWRlciA9IGZpbGVTeXN0ZW0ucm9vdC5jcmVhdGVSZWFkZXIoKTsKK3ZhciBkaXJzQ291bnQg
PSAwOwordmFyIHBhdGhzID0gW107CitkbyB7CisgICAgdmFyIGVudHJpZXMgPSByZWFkZXIucmVh
ZEVudHJpZXMoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudHJpZXMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgcGF0aHMucHVzaChlbnRyaWVzW2ldLmZ1bGxQYXRoKTsKKyAgICAgICAgaWYg
KGVudHJpZXNbaV0uaXNEaXJlY3RvcnkpCisgICAgICAgICAgICBkaXJzQ291bnQrKzsKKyAgICB9
Cit9IHdoaWxlIChlbnRyaWVzLmxlbmd0aCk7CisKK3BhdGhzLnNvcnQoKTsKK3Nob3VsZEJlKCci
JyArIHBhdGhzLmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7CitzaG91
bGRCZSgiZGlyc0NvdW50IiwgIjMiKTsKK3JlbW92ZVJlY3Vyc2l2ZWx5KGZpbGVTeXN0ZW0ucm9v
dCk7CitmaW5pc2hKU1Rlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZsYWdz
LXBhc3NpbmcuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2Zs
YWdzLXBhc3NpbmcuanMKaW5kZXggZGJmZWVkZTg1ZGU4OTFlNzkxMDYyNmJmODBiOTNiYWU2ZGUy
OThmYS4uOWIwNjQyNzMwY2VmZGI2NTk4MTI5OWNmMTk4YTA3ZDI1ZjY0YWE2ZSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9mbGFncy1wYXNzaW5n
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3Mt
cGFzc2luZy5qcwpAQCAtOTQsOCArOTQsOCBAQCBmdW5jdGlvbiBmaWxlU3lzdGVtQ2FsbGJhY2so
ZnMpIHsKIH0KIAogaWYgKHdpbmRvdy5yZXF1ZXN0RmlsZVN5c3RlbSkgewotICAgIHJlcXVlc3RG
aWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIDEwMCwgZmlsZVN5c3RlbUNhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKTsKICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgcmVxdWVz
dEZpbGVTeXN0ZW0od2luZG93LlRFTVBPUkFSWSwgMTAwLCBmaWxlU3lzdGVtQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2spOwogfSBlbHNlCiAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxl
U3lzdGVtIEFQSSBzdXBwb3J0LiIpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmViZWQ2OGQyOTExN2ZmYzFjZTJiMzQyNDVhNGYxMDNkYTFkYzliMDgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3lu
Yy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3RzIHJ1
bm5pbmcgbXVsdGlwbGUgYXN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtlci4KKwor
U3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5qcworRGVzY3Jp
cHRpb246IFRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4K
K3JlcXVlc3RlZCBGaWxlU3lzdGVtLgorR290IEZpbGVTeXN0ZW06aHR0cF9sb2NhbGhvc3RfODA4
MDpUZW1wb3JhcnkKK1N0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4KK1N0YXJ0aW5nIGFzeW5j
IHRlc3Qgc3RhZ2UgMi4KK1ZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMuCitQQVNTOiAi
L2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgorUEFTUzogZGlyc0Nv
dW50IGlzIDMKK0RPTkUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2E3Y2M0ZjY0NjMzYjhhOWRkNjZkNzBiYzFhMTdiMDJkZWVkNGFmZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJh
dGlvbnMuaHRtbApAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUg
YXN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtlci48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2FzeW5jLW9w
ZXJhdGlvbnMuanMnKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13
b3JrZXItdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3Rl
bnQtc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAppbmRleCAyM2ViZmJkNGI2OTQ2
MDI0ODQyN2RjNTcwMjdiMmM2NTJjOTlmM2MyLi4wNmFiNWY1Yjk2Y2ZlODA1Y2RmN2M4NTA4MDRl
N2Y5ZTIxMmJkMzRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVk
LnR4dApAQCAtMiw3ICsyLDEwIEBAIFRoaXMgdGVzdHMgcmVxdWVzdGluZyBQRVJTSVNURU5UIEZp
bGVTeXN0ZW1TeW5jIGluIFdvcmtlci4KIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMv
c2ltcGxlLXBlcnNpc3RlbnQtc3luYy5qcwogRGVzY3JpcHRpb246IHJlcXVlc3RGaWxlU3lzdGVt
U3luYyBQRVJTSVNURU5UIHRlc3QuCi1Hb3QgZXJyb3IgZnJvbSB3b3JrZXI6IFVuY2F1Z2h0IFJl
ZmVyZW5jZUVycm9yOiByZXF1ZXN0RmlsZVN5c3RlbVN5bmMgaXMgbm90IGRlZmluZWQKK1N1Y2Nl
c3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50
CitQQVNTOiBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTOiBmaWxlU3lz
dGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCitET05FCiAKIFRFU1QgQ09NUExFVEUKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFy
eS1zeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQKaW5kZXggMGUyMWMwMjgzNDFjOGI5
MDZiNmYzYjYyMzM1NDdiMDgwYmM4YzkxZS4uMjhiZTA5MGZkNDY1ODkxMTk2MGFmYzkzOWZkZDg5
YWM5MTkzNDMwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0
CkBAIC0yLDcgKzIsMTAgQEAgVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFRFTVBPUkFSWSBGaWxlU3lz
dGVtU3luYyBpbiBXb3JrZXIuCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3NpbXBs
ZS10ZW1wb3Jhcnktc3luYy5qcwogRGVzY3JpcHRpb246IHJlcXVlc3RGaWxlU3lzdGVtU3luYyBU
RU1QT1JBUlkgdGVzdC4KLUdvdCBlcnJvciBmcm9tIHdvcmtlcjogVW5jYXVnaHQgUmVmZXJlbmNl
RXJyb3I6IHJlcXVlc3RGaWxlU3lzdGVtU3luYyBpcyBub3QgZGVmaW5lZAorU3VjY2Vzc2Z1bGx5
IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5CitQQVNTOiBm
aWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTOiBmaWxlU3lzdGVtLnJvb3Qu
ZnVsbFBhdGggaXMgIi8iCitET05FCiAKIFRFU1QgQ09NUExFVEUKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9u
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM4NTVkNWQ2ZTMyZTc4YTAzNjYxNjIxNjYxMmY5
ZDY3YWU0MjJhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGhpcyB0ZXN0cyBydW5uaW5nIG11bHRpcGxlIHN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGlu
IFdvcmtlci4KKworU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25z
LmpzCitEZXNjcmlwdGlvbjogVGVzdCBtYWtpbmcgbXVsdGlwbGUgc3luY2hyb25vdXMgRmlsZVN5
c3RlbSBvcGVyYXRpb25zLgorUEFTUzogIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9j
LC9kMiwvZSwvZiIKK1BBU1M6IGRpcnNDb3VudCBpcyAzCitET05FCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1v
cGVyYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5j
LW9wZXJhdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmFkZjA0NTIyYjY2ODk4ODgwNjAyNGE0Mzgw
MzgzYzQxZGE4ZjU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0
ZXN0cyBydW5uaW5nIG11bHRpcGxlIHN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtl
ci48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitzdGFydFdvcmtlcign
Li4vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDA5MzNmMzkxMWFkYjU2ODk4ZDQzN2RiODI1M2JhNWVkZGYwMjQxOTUuLjIx
ZDc1YWVkMDJhNWZhZGM3ZDViOTRlZTYzZjViMzQ3YTIxYjQxY2MgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIw
MTAtMTAtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBGaWxlU3lzdGVtU3lu
YyBpbXBsZW1lbnRhdGlvbiBmb3IgV29ya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00NzA0NAorCisgICAgICAgIFRlc3RzOiBmYXN0L2ZpbGVzeXN0
ZW0vYXN5bmMtb3BlcmF0aW9ucy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6
IFJlbW92ZWQKKyAgICAgICAgcmVxdWVzdEZpbGVTeXN0ZW1FbmFiYWxlZCgpIGFzIEkgY2hhbmdl
ZCB0aGUgaWRsL2dlbmVyYXRvciB0byB1c2UKKyAgICAgICAgZmlsZVN5c3RlbUVuYWJsZWQgZm9y
IGFsbCB0aGUgRmlsZVN5c3RlbSByZWxhdGVkIGZlYXR1cmVzLgorICAgICAgICAqIGZpbGVhcGkv
RE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5jcHA6IE1vdmVkIGVudHJ5IG1ldGhv
ZCBpbXBsZW1lbnRhdGlvbgorICAgICAgICBmcm9tIERPTUZpbGVTeXN0ZW0uIEFsc28gZml4ZWQg
YWJicmV2aWF0ZWQgbmFtZXMgdG8gbm9uLWFiYnJldmlhdGVkCisgICAgICAgIG9uZXMgKGUuZy4g
c3JjIC0+IHNvdXJjZSkuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0
TWV0YWRhdGEpOiBNb3ZlZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpj
aGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZSk6IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjptb3ZlKTogTW92ZWQgZnJvbSBE
T01GaWxlU3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OmNvcHkp
OiBNb3ZlZCBmcm9tIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtQmFzZTo6cmVtb3ZlKTogTW92ZWQgZnJvbSBET01GaWxlU3lzdGVtLgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OmdldFBhcmVudCk6IE1vdmVkIGZyb20gRE9NRmlsZVN5
c3RlbS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRGaWxlKTogTW92
ZWQgZnJvbSBET01GaWxlU3lzdGVtLgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJh
c2U6OmdldERpcmVjdG9yeSk6IE1vdmVkIGZyb20gRE9NRmlsZVN5c3RlbS4KKyAgICAgICAgKFdl
YkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpyZWFkRGlyZWN0b3J5KTogTW92ZWQgZnJvbSBET01G
aWxlU3lzdGVtLgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuaDoKKyAgICAg
ICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0RPTUZp
bGVTeXN0ZW1TeW5jLmg6CisgICAgICAgICogZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50cnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlyZWN0b3J5RW50cnk6OmdldEZpbGUpOiBVcGRhdGVkIHRvIGNhbGwgRE9N
RmlsZVN5c3RlbUJhc2UKKyAgICAgICAgbWV0aG9kcyBpbnN0ZWFkIG9mIERPTUZpbGVTeXN0ZW0g
b25lcy4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5OjpnZXREaXJlY3RvcnkpOiBE
aXR0by4KKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeUVudHJ5Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9y
eUVudHJ5U3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeVN5bmM6Omdl
dEZpbGUpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5U3lu
Yzo6Z2V0RGlyZWN0b3J5KTogSW1wbGVtZW50ZWQuCisgICAgICAgICogZmlsZWFwaS9EaXJlY3Rv
cnlSZWFkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMpOiBJbXBs
ZW1lbnRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVudHJ5OjpFbnRyeSk6IFVwZGF0ZWQgdG8gY2FsbCBET01GaWxlU3lzdGVtQmFzZSBtZXRob2Rz
LgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OmdldE1ldGFkYXRhKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpFbnRyeTo6bW92ZVRvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbnRy
eTo6Y29weVRvKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6cmVtb3ZlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6Z2V0UGFyZW50KTogRGl0dG8uCisgICAgICAg
ICogZmlsZWFwaS9FbnRyeS5oOgorICAgICAgICAqIGZpbGVhcGkvRW50cnkuaWRsOgorICAgICAg
ICAqIGZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50cnlB
cnJheVN5bmM6OmNyZWF0ZSk6IEFkZGVkLgorICAgICAgICAqIGZpbGVhcGkvRW50cnlBcnJheVN5
bmMuaDoKKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
RW50cnlCYXNlOjpmaWxlc3lzdGVtKTogQWRkZWQuCisgICAgICAgICogZmlsZWFwaS9FbnRyeVN5
bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50cnlTeW5jOjpFbnRyeVN5bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6RW50cnlTeW5jOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkVudHJ5U3luYzo6Z2V0TWV0YWRhdGEpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkVudHJ5U3luYzo6bW92ZVRvKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlOjpFbnRy
eVN5bmM6OmNvcHlUbyk6IEltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6RW50cnlTeW5j
OjpyZW1vdmUpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKiBmaWxlYXBpL0VudHJ5U3luYy5oOgor
ICAgICAgICAqIGZpbGVhcGkvRmlsZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVF
bnRyeTo6RmlsZUVudHJ5KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVFbnRyeS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUVudHJ5OjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50cnlDYWxsYmFj
a3M6OmNyZWF0ZSk6IENoYW5nZWQgdG8gdGFrZSBET01GaWxlU3lzdGVtQmFzZQorICAgICAgICBp
bnN0ZWFkIG9mIERPTUZpbGVTeXN0ZW0uCisgICAgICAgIChXZWJDb3JlOjpFbnRyeUNhbGxiYWNr
czo6RW50cnlDYWxsYmFja3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVudHJpZXNDYWxs
YmFja3M6OmNyZWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RW50cmllc0NhbGxiYWNr
czo6RW50cmllc0NhbGxiYWNrcyk6IERpdHRvLgorICAgICAgICAqIGZpbGVhcGkvRmlsZVN5c3Rl
bUNhbGxiYWNrcy5oOgorICAgICAgICAqIGZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVTeXN0ZW0pOiBBZGRl
ZCBzeW5jaHJvbm91cworICAgICAgICBwYXJhbWV0ZXIuCisgICAgICAgICogZmlsZWFwaS9Mb2Nh
bEZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL1N5bmNDYWxsYmFja0hlbHBlci5oOiBB
ZGRlZC4gVGhpcyBkZWZpbmVzIGEgaGVscGVyIHRlbXBsYXRlCisgICAgICAgIGZvciBzeW5jaHJv
bm91cyBpbXBsZW1lbnRhaW9uIG92ZXIgY2FsbGJhY2tzLgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbTo6d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUpOiBB
ZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ29udGV4dDo6cmVxdWVzdEZpbGVTeXN0ZW1TeW5jKTogQWRkZWQuCisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmlkbDoKKwogMjAxMC0xMC0wNSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDFmMzM1NWIz
ZDc3N2VjYWM0OTM0MDE4OWFiZGFkOGU1YjI5Y2UwZDQuLjAxMmNmNDk5NzM4NDllYjM5N2IzODdh
YzIwOWI0OGYyOTBlNzE0ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNTIwLDYgKzE1MjAsNyBAQAogICAgICAgICAgICAg
J2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmgnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvTWV0YWRh
dGEuaCcsCiAgICAgICAgICAgICAnZmlsZWFwaS9NZXRhZGF0YUNhbGxiYWNrLmgnLAorICAgICAg
ICAgICAgJ2ZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmgnLAogICAgICAgICAgICAgJ2ZpbGVh
cGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oJywKICAgICAgICAgICAgICdoaXN0b3J5L21hYy9IaXN0b3J5
SXRlbU1hYy5tbScsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaAppbmRleCBiZTE4MzY2NTUzYjMyOWI3NDUwNzQ2MGI2ZThkMjMzNWI4ZWFk
MzY3Li5mNzNiOTIyNWJlZGE5OGQwMWQ3NGFhN2I4MGIxODdkYTVlOWE3NzVlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE1
MCw3ICsxNTAsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIHN0YXRp
YyBib29sIGZpbGVTeXN0ZW1FbmFibGVkKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0RmlsZVN5c3Rl
bUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyBib29sIHJlcXVlc3RGaWxlU3lzdGVtRW5hYmxlZCgpIHsgcmV0dXJu
IGlzRmlsZVN5c3RlbUVuYWJsZWQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZp
bGVTeXN0ZW0uY3BwCmluZGV4IDE3NDI4NDJkYTMxZjllMGRjZGVmZTgxYmEzM2U3YzYxMTJjOWQ4
OTQuLmIyZGYxM2I2YmI3NmVjYTY2Yjk2NzcxYzRkMmJiNTFiNjIzMDVhMWMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKQEAgLTM2LDE5ICszNiwxMyBAQAogI2luY2x1ZGUgIkFzeW5jRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5
RW50cnkuaCIKLSNpbmNsdWRlICJFbnRyaWVzQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJFbnRyeS5o
IgotI2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKLSNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVFbnRyeS5oIgotI2luY2x1
ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNs
dWRlICJGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKLSNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgwLDEyNCArNzQsNiBAQCB2b2lkIERPTUZpbGVT
eXN0ZW06OmNvbnRleHREZXN0cm95ZWQoKQogICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERl
c3Ryb3llZCgpOwogfQogCi12b2lkIERPTUZpbGVTeXN0ZW06OmdldE1ldGFkYXRhKGNvbnN0IEVu
dHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChl
bnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShw
bGF0Zm9ybVBhdGgsIE1ldGFkYXRhQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSk7Ci19Ci0KLXN0YXRpYyBib29sIGNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5
T3JNb3ZlKGNvbnN0IEVudHJ5KiBzcmMsIEVudHJ5KiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3
TmFtZSkKLXsKLSAgICBBU1NFUlQoc3JjKTsKLQotICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQt
PmlzRGlyZWN0b3J5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbmV3TmFt
ZS5pc0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShuZXdOYW1lKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IHRvIGNvcHkg
b3IgbW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxmIGF0IGFueSBkZXB0aCBpZiBpdCBpcyBhIGRp
cmVjdG9yeS4KLSAgICBpZiAoc3JjLT5pc0RpcmVjdG9yeSgpICYmIERPTUZpbGVQYXRoOjppc1Bh
cmVudE9mKHNyYy0+ZnVsbFBhdGgoKSwgcGFyZW50LT5mdWxsUGF0aCgpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gY29weSBvciBtb3ZlIGFuIGVu
dHJ5IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlmZmVyZW50IGZyb20gaXRzIGN1cnJlbnQg
b25lIGlzbid0IHByb3ZpZGVkLgotICAgIGlmICgobmV3TmFtZS5pc0VtcHR5KCkgfHwgc3JjLT5u
YW1lKCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShzcmMtPmZ1bGxQ
YXRoKCkpID09IHBhcmVudC0+ZnVsbFBhdGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6bW92ZShjb25zdCBFbnRy
eSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwg
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JG
b3JDb3B5T3JNb3ZlKHNyYywgcGFyZW50LmdldCgpLCBuZXdOYW1lKSkgewotICAgICAgICBzY2hl
ZHVsZUNhbGxiYWNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmls
ZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBTdHJpbmcgZGVzdFBhdGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0g
ICAgaWYgKCFuZXdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0
aDo6YXBwZW5kKGRlc3RQYXRoLCBuZXdOYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGRlc3RQYXRo
ID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0UGF0aCwgc3JjLT5uYW1lKCkpOwotCi0gICAgU3Ry
aW5nIHNyY1BsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9y
bVBhdGgoc3JjLT5mdWxsUGF0aCgpKTsKLSAgICBTdHJpbmcgZGVzdFBsYXRmb3JtUGF0aCA9IHBh
cmVudC0+ZmlsZXN5c3RlbSgpLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1Q
YXRoKGRlc3RQYXRoKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+bW92ZShzcmNQbGF0Zm9ybVBh
dGgsIGRlc3RQbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0UGF0aCwgc3JjLT5pc0RpcmVjdG9yeSgpKSk7
Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Y29weShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVm
UHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwgUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKLXsKLSAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JGb3JDb3B5T3JNb3ZlKHNy
YywgcGFyZW50LmdldCgpLCBuZXdOYW1lKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUo
SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBTdHJpbmcgZGVzdFBhdGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7Ci0gICAgaWYgKCFuZXdOYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgZGVzdFBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RQ
YXRoLCBuZXdOYW1lKTsKLSAgICBlbHNlCi0gICAgICAgIGRlc3RQYXRoID0gRE9NRmlsZVBhdGg6
OmFwcGVuZChkZXN0UGF0aCwgc3JjLT5uYW1lKCkpOwotCi0gICAgU3RyaW5nIHNyY1BsYXRmb3Jt
UGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc3JjLT5mdWxs
UGF0aCgpKTsKLSAgICBTdHJpbmcgZGVzdFBsYXRmb3JtUGF0aCA9IHBhcmVudC0+ZmlsZXN5c3Rl
bSgpLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RQYXRoKTsK
LSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y29weShzcmNQbGF0Zm9ybVBhdGgsIGRlc3RQbGF0Zm9y
bVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCB0aGlzLCBkZXN0UGF0aCwgc3JjLT5pc0RpcmVjdG9yeSgpKSk7Ci19Ci0KLXZvaWQgRE9N
RmlsZVN5c3RlbTo6cmVtb3ZlKGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQotewotICAgIEFTU0VSVChlbnRyeSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRo
KCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUocGxhdGZvcm1QYXRoLCBWb2lkQ2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7Ci19Ci0KLXZv
aWQgRE9NRmlsZVN5c3RlbTo6Z2V0UGFyZW50KGNvbnN0IEVudHJ5KiBlbnRyeSwgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoZW50cnkpOwotICAgIFN0cmluZyBwYXRo
ID0gRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShlbnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgU3Ry
aW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBh
dGgocGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9y
bVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCB0aGlzLCBwYXRoLCB0cnVlKSk7Ci19Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0Rmls
ZShjb25zdCBFbnRyeSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdz
PiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKLXsKLSAgICBBU1NFUlQoYmFzZSk7
Ci0gICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpIHsKLSAgICAgICAgc2No
ZWR1bGVDYWxsYmFjayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yQ2FsbGJhY2ssIEZp
bGVFcnJvcjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgU3RyaW5nIGFic29sdXRlUGF0aCA9IHBhdGg7Ci0gICAgaWYgKCFE
T01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSkKLSAgICAgICAgYWJzb2x1dGVQYXRoID0gRE9N
RmlsZVBhdGg6OnJlbW92ZUV4dHJhUGFyZW50UmVmZXJlbmNlcyhET01GaWxlUGF0aDo6YXBwZW5k
KGJhc2UtPmZ1bGxQYXRoKCksIHBhdGgpKTsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9h
c3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChhYnNvbHV0ZVBhdGgpOwotCi0g
ICAgT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBFbnRyeUNhbGxiYWNrczo6Y3Jl
YXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCBm
YWxzZSk7Ci0gICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQotICAgICAgICBtX2Fz
eW5jRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShwbGF0Zm9ybVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2
ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYXN5bmNGaWxl
U3lzdGVtLT5maWxlRXhpc3RzKHBsYXRmb3JtUGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Ci19
Ci0KLXZvaWQgRE9NRmlsZVN5c3RlbTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVu
dHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQotewotICAgIEFTU0VSVChiYXNlKTsKLSAgICBpZiAoIURPTUZpbGVQYXRo
Ojppc1ZhbGlkUGF0aChwYXRoKSkgewotICAgICAgICBzY2hlZHVsZUNhbGxiYWNrKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJ
RF9NT0RJRklDQVRJT05fRVJSKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTdHJp
bmcgYWJzb2x1dGVQYXRoID0gcGF0aDsKLSAgICBpZiAoIURPTUZpbGVQYXRoOjppc0Fic29sdXRl
KHBhdGgpKQotICAgICAgICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQ
YXJlbnRSZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0
aCkpOwotICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVh
bFRvUGxhdGZvcm1QYXRoKGFic29sdXRlUGF0aCk7Ci0KLSAgICBPd25QdHI8RW50cnlDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIHRydWUpOwotICAgIGlmIChmbGFncyAm
JiBmbGFncy0+aXNDcmVhdGUoKSkKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZURp
cmVjdG9yeShwbGF0Zm9ybVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVs
ZWFzZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlF
eGlzdHMocGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKLX0KLQogdm9pZCBET01G
aWxlU3lzdGVtOjpjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRy
PEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGZpbGUpOwpAQCAtMjA5LDEzICs4
NSw2IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSog
ZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsCiAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNy
ZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxl
YXNlKCkpOwogfQogCi12b2lkIERPTUZpbGVTeXN0ZW06OnJlYWREaXJlY3RvcnkoRGlyZWN0b3J5
UmVhZGVyKiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQotewotICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSk7Ci0g
ICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0
Zm9ybVBhdGgocGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGxh
dGZvcm1QYXRoLCBFbnRyaWVzQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrLCByZWFkZXIsIHBhdGgpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtLmggYi9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oCmluZGV4IDkwOGMx
NmM5NDNlY2FkZjY5MTIzMmM2MDQ0YWRjZWFkZDU0OWJjYWIuLjBlZjJlMGY3ZTVmMGMzMTYyY2Zm
Y2RlYWNlMjA3ODYzMjU1ODJlN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmgKKysrIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uaApAQCAtMzQsMjYg
KzM0LDE0IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCi0jaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRE9NRmls
ZVN5c3RlbUJhc2UuaCIKLSNpbmNsdWRlICJGbGFncy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBEaXJlY3RvcnlFbnRyeTsKLWNsYXNzIERpcmVjdG9yeVJlYWRl
cjsKLWNsYXNzIEVudHJ5OwotY2xhc3MgRW50cnlDYWxsYmFjazsKLWNsYXNzIEVudHJpZXNDYWxs
YmFjazsKLWNsYXNzIEVycm9yQ2FsbGJhY2s7CiBjbGFzcyBGaWxlRW50cnk7CiBjbGFzcyBGaWxl
V3JpdGVyQ2FsbGJhY2s7Ci1jbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwotY2xhc3MgVm9pZENhbGxi
YWNrOwogCiBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlLCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTY5LDE1ICs1Nyw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAotICAgIC8vIEFjdHVhbCBGaWxlU3lzdGVt
IEFQSSBpbXBsZW1lbnRhdGlvbnMuICBBbGwgdGhlIHZhbGlkaXR5IGNoZWNrcyBvbiB2aXJ0dWFs
IHBhdGhzIGFyZSBkb25lIGF0IERPTUZpbGVTeXN0ZW0gbGV2ZWwuCi0gICAgdm9pZCBnZXRNZXRh
ZGF0YShjb25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spOwot
ICAgIHZvaWQgbW92ZShjb25zdCBFbnRyeSogc3JjLCBQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPik7Ci0gICAgdm9pZCBjb3B5KGNvbnN0IEVudHJ5KiBzcmMsIFBhc3NS
ZWZQdHI8RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHJlbW92ZShj
b25zdCBFbnRyeSogZW50cnksIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPik7Ci0gICAgdm9pZCBnZXRQYXJlbnQoY29uc3QgRW50cnkqIGVudHJ5LCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAg
ICB2b2lkIGdldEZpbGUoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFz
c1JlZlB0cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4pOwotICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5KiBiYXNlLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICB2b2lkIHJlYWREaXJlY3Rv
cnkoRGlyZWN0b3J5UmVhZGVyKiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAgICB2b2lk
IGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnkqIGZpbGUsIFBhc3NSZWZQdHI8RmlsZVdyaXRl
ckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAKICAgICAvLyBTY2hlZHVs
ZSBhIGNhbGxiYWNrLiBUaGlzIHNob3VsZCBub3QgY3Jvc3MgdGhyZWFkcyAoc2hvdWxkIGJlIGNh
bGxlZCBvbiB0aGUgc2FtZSBjb250ZXh0IHRocmVhZCkuCkBAIC05NSw3ICs3NCw2IEBAIHByaXZh
dGU6CiAgICAgRE9NRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogCiAgICAgLy8gQSBoZWxw
ZXIgdGVtcGxhdGUgdG8gc2NoZWR1bGUgYSBjYWxsYmFjayB0YXNrLgotICAgIC8vIEZJWE1FOiBt
b3ZlIHRoaXMgdG8gYSBtb3JlIGdlbmVyaWMgcGxhY2UuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENCLCB0eXBlbmFtZSBDQkFyZz4KICAgICBjbGFzcyBEaXNwYXRjaENhbGxiYWNrVGFzayA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKICAgICBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwIGIvV2ViQ29yZS9maWxl
YXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAppbmRleCBiNjk4ODJkMTYwYWQ5ZThiNDRiZjUzNGJh
M2JiMWI1MjMyM2EyNzIxLi42M2M2ZTViMWM4OWU1MTUzYzk4MDNkYTY2NWY1ODA2Njg2YWI1YjMz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCisrKyBi
L1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTM0LDYgKzM0LDE2IEBA
CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKKyNp
bmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgorI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgor
I2luY2x1ZGUgIkVudHJ5QXJyYXkuaCIKKyNpbmNsdWRlICJFbnRyeUJhc2UuaCIKKyNpbmNsdWRl
ICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUg
IkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRl
ICJNZXRhZGF0YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNrLmgiCiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw2ICs1OCwxMzEg
QEAgRE9NRmlsZVN5c3RlbUJhc2U6On5ET01GaWxlU3lzdGVtQmFzZSgpCiB7CiB9CiAKK2Jvb2wg
RE9NRmlsZVN5c3RlbUJhc2U6OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBh
c3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRo
KCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBN
ZXRhZGF0YUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykp
OworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjaGVja1ZhbGlkaXR5Rm9yRm9y
Q29weU9yTW92ZShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNv
bnN0IFN0cmluZyYgbmV3TmFtZSkKK3sKKyAgICBBU1NFUlQoc291cmNlKTsKKworICAgIGlmICgh
cGFyZW50IHx8ICFwYXJlbnQtPmlzRGlyZWN0b3J5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghbmV3TmFtZS5pc0VtcHR5KCkgJiYgIURPTUZpbGVQYXRoOjppc1ZhbGlkTmFt
ZShuZXdOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJy
b3IgdG8gdHJ5IHRvIGNvcHkgb3IgbW92ZSBhbiBlbnRyeSBpbnNpZGUgaXRzZWxmIGF0IGFueSBk
ZXB0aCBpZiBpdCBpcyBhIGRpcmVjdG9yeS4KKyAgICBpZiAoc291cmNlLT5pc0RpcmVjdG9yeSgp
ICYmIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKHNvdXJjZS0+ZnVsbFBhdGgoKSwgcGFyZW50LT5m
dWxsUGF0aCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgYW4gZXJy
b3IgdG8gY29weSBvciBtb3ZlIGFuIGVudHJ5IGludG8gaXRzIHBhcmVudCBpZiBhIG5hbWUgZGlm
ZmVyZW50IGZyb20gaXRzIGN1cnJlbnQgb25lIGlzbid0IHByb3ZpZGVkLgorICAgIGlmICgobmV3
TmFtZS5pc0VtcHR5KCkgfHwgc291cmNlLT5uYW1lKCkgPT0gbmV3TmFtZSkgJiYgRE9NRmlsZVBh
dGg6OmdldERpcmVjdG9yeShzb3VyY2UtPmZ1bGxQYXRoKCkpID09IHBhcmVudC0+ZnVsbFBhdGgo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
RE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUoY29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFz
ZSogcGFyZW50LCBjb25zdCBTdHJpbmcmIG5ld05hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCit7CisgICAgaWYgKCFjaGVja1ZhbGlkaXR5Rm9yRm9yQ29weU9yTW92ZShzb3VyY2UsIHBh
cmVudCwgbmV3TmFtZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBkZXN0
aW5hdGlvblBhdGggPSBwYXJlbnQtPmZ1bGxQYXRoKCk7CisgICAgaWYgKCFuZXdOYW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgZGVzdGluYXRpb25QYXRoID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0
aW5hdGlvblBhdGgsIG5ld05hbWUpOworICAgIGVsc2UKKyAgICAgICAgZGVzdGluYXRpb25QYXRo
ID0gRE9NRmlsZVBhdGg6OmFwcGVuZChkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+bmFtZSgpKTsK
KworICAgIFN0cmluZyBzb3VyY2VQbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmly
dHVhbFRvUGxhdGZvcm1QYXRoKHNvdXJjZS0+ZnVsbFBhdGgoKSk7CisgICAgU3RyaW5nIGRlc3Rp
bmF0aW9uUGxhdGZvcm1QYXRoID0gcGFyZW50LT5maWxlc3lzdGVtKCktPmFzeW5jRmlsZVN5c3Rl
bSgpLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZGVzdGluYXRpb25QYXRoKTsKKyAgICBtX2FzeW5j
RmlsZVN5c3RlbS0+bW92ZShzb3VyY2VQbGF0Zm9ybVBhdGgsIGRlc3RpbmF0aW9uUGxhdGZvcm1Q
YXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgdGhpcywgZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0b3J5KCkpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y29weShjb25zdCBFbnRy
eUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSwg
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIWNoZWNrVmFsaWRpdHlGb3JG
b3JDb3B5T3JNb3ZlKHNvdXJjZSwgcGFyZW50LCBuZXdOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uUGF0aCA9IHBhcmVudC0+ZnVsbFBhdGgoKTsK
KyAgICBpZiAoIW5ld05hbWUuaXNFbXB0eSgpKQorICAgICAgICBkZXN0aW5hdGlvblBhdGggPSBE
T01GaWxlUGF0aDo6YXBwZW5kKGRlc3RpbmF0aW9uUGF0aCwgbmV3TmFtZSk7CisgICAgZWxzZQor
ICAgICAgICBkZXN0aW5hdGlvblBhdGggPSBET01GaWxlUGF0aDo6YXBwZW5kKGRlc3RpbmF0aW9u
UGF0aCwgc291cmNlLT5uYW1lKCkpOworCisgICAgU3RyaW5nIHNvdXJjZVBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc291cmNlLT5mdWxsUGF0
aCgpKTsKKyAgICBTdHJpbmcgZGVzdGluYXRpb25QbGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVz
eXN0ZW0oKS0+YXN5bmNGaWxlU3lzdGVtKCktPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0aW5h
dGlvblBhdGgpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jb3B5KHNvdXJjZVBsYXRmb3JtUGF0
aCwgZGVzdGluYXRpb25QbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+
aXNEaXJlY3RvcnkoKSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERPTUZpbGVTeXN0
ZW1CYXNlOjpyZW1vdmUoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIEFTU0VSVChlbnRyeSk7CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRo
KCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUocGxhdGZvcm1QYXRoLCBWb2lkQ2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldFBhcmVudChjb25zdCBF
bnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQoreworICAgIEFTU0VS
VChlbnRyeSk7CisgICAgU3RyaW5nIHBhdGggPSBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVu
dHJ5LT5mdWxsUGF0aCgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVT
eXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIHBhdGgsIHRydWUpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBF
bnRyeUJhc2UqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4gZmxh
Z3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGJhc2UpOworICAg
IGlmICghRE9NRmlsZVBhdGg6OmlzVmFsaWRQYXRoKHBhdGgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBTdHJpbmcgYWJzb2x1dGVQYXRoID0gcGF0aDsKKyAgICBpZiAoIURPTUZpbGVQ
YXRoOjppc0Fic29sdXRlKHBhdGgpKQorICAgICAgICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0
aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+
ZnVsbFBhdGgoKSwgcGF0aCkpOworICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmls
ZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGFic29sdXRlUGF0aCk7CisKKyAgICBPd25Q
dHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIGZhbHNlKTsK
KyAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCisgICAgICAgIG1fYXN5bmNGaWxl
U3lzdGVtLT5jcmVhdGVGaWxlKHBsYXRmb3JtUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNh
bGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0t
PmZpbGVFeGlzdHMocGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0
IEVudHJ5QmFzZSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBm
bGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoYmFzZSk7Cisg
ICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFN0cmluZyBhYnNvbHV0ZVBhdGggPSBwYXRoOworICAgIGlmICghRE9NRmls
ZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAgICAgIGFic29sdXRlUGF0aCA9IERPTUZpbGVQ
YXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMoRE9NRmlsZVBhdGg6OmFwcGVuZChiYXNl
LT5mdWxsUGF0aCgpLCBwYXRoKSk7CisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNG
aWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoYWJzb2x1dGVQYXRoKTsKKworICAgIE93
blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0aCwgdHJ1ZSk7
CisgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQorICAgICAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KHBsYXRmb3JtUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZl
KCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9hc3luY0ZpbGVT
eXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkp
OworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZWFkRGly
ZWN0b3J5KERpcmVjdG9yeVJlYWRlckJhc2UqIHJlYWRlciwgY29uc3QgU3RyaW5nJiBwYXRoLCBQ
YXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKERPTUZpbGVQYXRoOjpp
c0Fic29sdXRlKHBhdGgpKTsKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVT
eXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChwYXRoKTsKKyAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+cmVhZERpcmVjdG9yeShwbGF0Zm9ybVBhdGgsIEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHJlYWRlciwgcGF0aCkpOworICAgIHJldHVy
biB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
RklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJh
c2UuaCBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oCmluZGV4IGU3MTRkOGQx
N2FjMWNiMTk0ODA5YjQzNDhhMjE1YWRlYmVkODExNjcuLmQzYjM5Y2E4MTY1NmVkMjE5MjRmNjlk
NjJhNGY4MzE2NGJkMDczZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lz
dGVtQmFzZS5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5oCkBAIC0z
NCwxMiArMzQsMjIgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJBc3lu
Y0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJGbGFncy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERpcmVjdG9yeUVudHJ5Owor
Y2xhc3MgRGlyZWN0b3J5UmVhZGVyQmFzZTsKK2NsYXNzIEVudHJpZXNDYWxsYmFjazsKK2NsYXNz
IEVudHJ5QmFzZTsKK2NsYXNzIEVudHJ5Q2FsbGJhY2s7CitjbGFzcyBFcnJvckNhbGxiYWNrOwor
Y2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKK2NsYXNzIFZvaWRDYWxsYmFjazsKKwogLy8gQSBjb21t
b24gYmFzZSBjbGFzcyBmb3IgRE9NRmlsZVN5c3RlbSBhbmQgRE9NRmlsZVN5c3RlbVN5bmMuCiBj
bGFzcyBET01GaWxlU3lzdGVtQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERPTUZpbGVTeXN0ZW1C
YXNlPiB7CiBwdWJsaWM6CkBAIC01Miw2ICs2MiwxNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
aW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgQXN5bmNGaWxlU3lzdGVt
KiBhc3luY0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRmlsZVN5c3RlbS5nZXQo
KTsgfQogCisgICAgLy8gQWN0dWFsIEZpbGVTeXN0ZW0gQVBJIGltcGxlbWVudGF0aW9ucy4gIEFs
bCB0aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgdGhpcyBs
ZXZlbC4KKyAgICAvLyBUaGV5IHJldHVybiBmYWxzZSBmb3IgaW1tZWRpYXRlIGVycm9ycyB0aGF0
IGRvbid0IGludm9sdmUgbG93ZXIgQXN5bmNGaWxlU3lzdGVtIGxheWVyIChlLmcuIGZvciBuYW1l
IHZhbGlkYXRpb24gZXJyb3JzKS4gIE90aGVyd2lzZSB0aGV5IHJldHVybiB0cnVlIChidXQgbGF0
ZXIgbWF5IGNhbGwgYmFjayB3aXRoIGFuIHJ1bnRpbWUgZXJyb3IpLgorICAgIGJvb2wgZ2V0TWV0
YWRhdGEoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBtb3ZlKGNvbnN0IEVudHJ5QmFzZSog
c291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAgICBib29sIGNv
cHkoY29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pOworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEVudHJ5QmFzZSosIFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBnZXRQYXJl
bnQoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSogYmFz
ZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBnZXREaXJl
Y3RvcnkoY29uc3QgRW50cnlCYXNlKiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQ
dHI8RmxhZ3M+LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+KTsKKyAgICBib29sIHJlYWREaXJlY3RvcnkoRGlyZWN0b3J5UmVhZGVyQmFzZSosIGNv
bnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+KTsKKwogcHJvdGVjdGVkOgogICAgIERPTUZpbGVTeXN0ZW1CYXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKICAgICBmcmll
bmQgY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmM7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkv
RE9NRmlsZVN5c3RlbVN5bmMuY3BwIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5j
LmNwcAppbmRleCBlMjAwZDIyOGFjMTU2M2RkYjE0ZTJkYmY0ZTY1NzM1Yjg0Mjg5OTJmLi45NmM3
NmZlZjViYWU3NmVhZjk0YmYxNDE2Mzg0ZDEzNmYxOTk2NjAxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtU3luYy5jcHAKQEAgLTM4LDYgKzM4LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gRE9NRmlsZVN5c3RlbVN5bmM6OmNy
ZWF0ZShET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERPTUZpbGVTeXN0ZW1TeW5jKGZpbGVTeXN0ZW0tPm1fbmFtZSwgZmlsZVN5c3RlbS0+
bV9hc3luY0ZpbGVTeXN0ZW0ucmVsZWFzZSgpKSk7Cit9CisKIERPTUZpbGVTeXN0ZW1TeW5jOjpE
T01GaWxlU3lzdGVtU3luYyhjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgOiBET01GaWxlU3lzdGVtQmFzZShuYW1lLCBh
c3luY0ZpbGVTeXN0ZW0pCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5
c3RlbVN5bmMuaCBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5oCmluZGV4IDZl
NjQ1MjZjZmRjOGQ4Njc5NTY5ZWJjY2MzYTAxZTdhNzk2ZDY2ZjUuLjlhZWFmYzhhNjBmM2VhZjhm
YmQ3MGJjM2NjZjliOGMxYWI2YmI5N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtU3luYy5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5o
CkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
T01GaWxlU3lzdGVtU3luYyhuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKTsKICAgICB9CiAKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKERPTUZpbGVTeXN0ZW1C
YXNlKik7CisKICAgICB2aXJ0dWFsIH5ET01GaWxlU3lzdGVtU3luYygpOwogCiAgICAgUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHJvb3QoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmls
ZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAgYi9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5RW50cnku
Y3BwCmluZGV4IGY3ODc4N2E0YmNkN2YzZTVhNjU0NjkzYjM2MDViNjgzMjRiODQxZjAuLmQ4ZjZk
ZWQ5MmU1N2U5NzYxMWUwNjMzY2Y3YWU4ZGZiNTc4NWNmZDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9y
eUVudHJ5LmNwcApAQCAtMzYsMTAgKzM2LDExIEBACiAjaW5jbHVkZSAiRGlyZWN0b3J5UmVhZGVy
LmgiCiAjaW5jbHVkZSAiRW50cnlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EaXJl
Y3RvcnlFbnRyeTo6RGlyZWN0b3J5RW50cnkoRE9NRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBmdWxsUGF0aCkKK0RpcmVjdG9yeUVudHJ5OjpEaXJlY3RvcnlFbnRyeShET01G
aWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICA6
IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKQogewogfQpAQCAtNTEsMTQgKzUyLDE2IEBAIFBh
c3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlUmVhZGVyKCkK
IAogdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NS
ZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIGZp
bGVzeXN0ZW0oKS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRo
LCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAgICAgZmlsZXN5
c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJvcjo6Y3JlYXRl
KElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwogfQogCiB2b2lkIERpcmVjdG9yeUVudHJ5Ojpn
ZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBmbGFncywg
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICBmaWxlc3lzdGVtKCktPmdldERpcmVj
dG9yeSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsK
KyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICBmaWxlc3lzdGVtKCktPnNj
aGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoSU5WQUxJRF9N
T0RJRklDQVRJT05fRVJSKSk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlCit9CiAKICNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5
RW50cnkuaCBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oCmluZGV4IGM3NmIyMDQz
YTM4MTNhZjViYzMxM2JjOWQwNDE1NGYzODI5MDUzZWUuLjNlZDhmOGViMjY5OTY4NmZkMWZjYTg1
YTNkZGEyZTY2MjcwYzViM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlF
bnRyeS5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeS5oCkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIEVycm9yQ2FsbGJhY2s7CiAKIGNsYXNzIERpcmVjdG9yeUVudHJ5IDogcHVi
bGljIEVudHJ5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRy
eT4gY3JlYXRlKERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IGNyZWF0ZShET01GaWxl
U3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0b3J5RW50cnkoZmlsZVN5c3RlbSwgZnVs
bFBhdGgpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldERp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+ID0gMCwgUGFzc1Jl
ZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsK
IAogcHJpdmF0ZToKLSAgICBEaXJlY3RvcnlFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBEaXJlY3RvcnlFbnRyeShET01GaWxlU3lz
dGVtQmFzZSosIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlFbnRyeVN5bmMuY3BwIGIvV2Vi
Q29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAKaW5kZXggMWFkMmNmNTEyZjFlOWQ5
MTE0NGI1ZjMxYjcyMWQ5NzRmYzk0MmVlZC4uYjIyOGRiNTRlNzI1NGM2M2NhNDg4ZmUxMWY5YjUw
Yzg4YTU0Yjg2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3lu
Yy5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAKICNpbmNsdWRlICJEaXJlY3RvcnlSZWFkZXJTeW5jLmgiCiAjaW5jbHVkZSAi
RW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCisjaW5jbHVkZSAiU3luY0NhbGxiYWNrSGVscGVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTAsMTggKzUwLDI2IEBAIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVh
ZGVyU3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGVSZWFkZXIoRXhjZXB0aW9uQ29kZSYp
CiAgICAgcmV0dXJuIERpcmVjdG9yeVJlYWRlclN5bmM6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1f
ZnVsbFBhdGgpOwogfQogCi1QYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5
U3luYzo6Z2V0RmlsZShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEZsYWdzPiwgRXhjZXB0aW9u
Q29kZSYpCitQYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBlYyA9IDA7CisgICAgRW50cnlTeW5j
Q2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwor
ICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBoZWxwZXIu
c3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8RmlsZUVudHJ5U3luYz4oaGVscGVyLmdldFJl
c3VsdChlYykpOwogfQogCi1QYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gRGlyZWN0b3J5
RW50cnlTeW5jOjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxGbGFncz4s
IEV4Y2VwdGlvbkNvZGUmKQorUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERpcmVjdG9y
eUVudHJ5U3luYzo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxG
bGFncz4gZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiB0byBiZSBp
bXBsZW1lbnRlZC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGVj
ID0gMDsKKyAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5h
c3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0
aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JD
YWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PERp
cmVjdG9yeUVudHJ5U3luYz4oaGVscGVyLmdldFJlc3VsdChlYykpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2ZpbGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAgYi9XZWJDb3JlL2Zp
bGVhcGkvRGlyZWN0b3J5UmVhZGVyU3luYy5jcHAKaW5kZXggNjAwYWI3ZjZlZmUyYjVjNWVhOWEx
N2QwYzk2MTE0YWQ0Mjk5NzQ1Yy4uNmM2NmExNTM1NDI2N2Y1YzAwY2FmN2Q4ZDhhNzdhMzdkYzM5
OWY3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0RpcmVjdG9yeVJlYWRlclN5bmMuY3Bw
CisrKyBiL1dlYkNvcmUvZmlsZWFwaS9EaXJlY3RvcnlSZWFkZXJTeW5jLmNwcApAQCAtMzMsOSAr
MzMsMTQgQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAorI2luY2x1ZGUgIkRpcmVjdG9y
eUVudHJ5LmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlTeW5jLmgiCiAjaW5jbHVkZSAiRW50
cnlBcnJheVN5bmMuaCIKKyNpbmNsdWRlICJFbnRyeVN5bmMuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJGaWxlRW50
cnlTeW5jLmgiCisjaW5jbHVkZSAiRmlsZUVycm9yLmgiCisjaW5jbHVkZSAiU3luY0NhbGxiYWNr
SGVscGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsMTAgKzQ5LDE5IEBAIERp
cmVjdG9yeVJlYWRlclN5bmM6OkRpcmVjdG9yeVJlYWRlclN5bmMoRE9NRmlsZVN5c3RlbUJhc2Uq
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0CiB7CiB9CiAKLVBhc3NSZWZQdHI8RW50cnlBcnJheVN5bmM+
IERpcmVjdG9yeVJlYWRlclN5bmM6OnJlYWRFbnRyaWVzKEV4Y2VwdGlvbkNvZGUmKQorUGFzc1Jl
ZlB0cjxFbnRyeUFycmF5U3luYz4gRGlyZWN0b3J5UmVhZGVyU3luYzo6cmVhZEVudHJpZXMoRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
KyAgICBlYyA9IDA7CisgICAgaWYgKCFtX2hhc01vcmVFbnRyaWVzKQorICAgICAgICByZXR1cm4g
RW50cnlBcnJheVN5bmM6OmNyZWF0ZSgpOworCisgICAgRW50cmllc1N5bmNDYWxsYmFja0hlbHBl
ciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2Zp
bGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkodGhpcywgbV9mdWxsUGF0aCwgaGVscGVyLnN1Y2Nlc3ND
YWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAgc2V0SGFzTW9yZUVudHJpZXMoZmFsc2UpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1bHQoZWMp
OwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5
LmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5jcHAKaW5kZXggOTdhMzI3MDhlMmY4MGYxNWFi
NTcyMjQyY2U0ZWM2MDkyODg1Y2Y2OC4uZjU4YWU2MDIxMDI4NTExYjc2ZDk0NGNkOWFkNmE3YTlh
ZjFmOGY2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmNwcAorKysgYi9XZWJD
b3JlL2ZpbGVhcGkvRW50cnkuY3BwCkBAIC0zMiw0NCArMzIsNDkgQEAKIAogI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKIAotI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCi0jaW5jbHVkZSAiRE9NRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCiAjaW5jbHVkZSAiRW50cnlD
YWxsYmFjay5oIgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlRXJy
b3IuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiTWV0YWRh
dGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUVudHJ5OjpFbnRyeShET01GaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoKQorRW50cnk6OkVudHJ5KERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIDogRW50cnlCYXNlKGZpbGVTeXN0ZW0s
IGZ1bGxQYXRoKQogewogfQogCiB2b2lkIEVudHJ5OjpnZXRNZXRhZGF0YShQYXNzUmVmUHRyPE1l
dGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKQogewotICAgIGZpbGVzeXN0ZW0oKS0+Z2V0TWV0YWRhdGEodGhpcywg
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+
Z2V0TWV0YWRhdGEodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKKyAgICAg
ICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2ssIEZpbGVFcnJv
cjo6Y3JlYXRlKElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwogfQogCi12b2lkIEVudHJ5Ojpt
b3ZlVG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0Cit2b2lkIEVudHJ5Ojptb3ZlVG8oUGFzc1JlZlB0
cjxEaXJlY3RvcnlFbnRyeT4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5tb3ZlKHRoaXMsIHBh
cmVudCwgbmFtZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1f
ZmlsZVN5c3RlbS0+bW92ZSh0aGlzLCBwYXJlbnQuZ2V0KCksIG5hbWUsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFj
ayhlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9F
UlIpKTsKIH0KIAotdm9pZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8RW50cnk+IHBhcmVudCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAordm9p
ZCBFbnRyeTo6Y29weVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHBhcmVudCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKSBjb25zdAogewotICAgIGZp
bGVzeXN0ZW0oKS0+Y29weSh0aGlzLCBwYXJlbnQsIG5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjayk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHkodGhpcywgcGFyZW50Lmdl
dCgpLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQorICAgICAgICBmaWxl
c3lzdGVtKCktPnNjaGVkdWxlQ2FsbGJhY2soZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVh
dGUoSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7CiB9CiAKIHZvaWQgRW50cnk6OnJlbW92ZShQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmlsZXN5c3RlbSgpLT5yZW1v
dmUodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKKyAgICBpZiAoIW1fZmls
ZVN5c3RlbS0+cmVtb3ZlKHRoaXMsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCisg
ICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLCBGaWxl
RXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9FUlIpKTsKIH0KIAogdm9pZCBFbnRy
eTo6Z2V0UGFyZW50KFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spIGNvbnN0CiB7Ci0gICAgZmls
ZXN5c3RlbSgpLT5nZXRQYXJlbnQodGhpcywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0UGFyZW50KHRoaXMsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykpCisgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFj
ayhlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0ZShJTlZBTElEX01PRElGSUNBVElPTl9F
UlIpKTsKIH0KIAogU3RyaW5nIEVudHJ5Ojp0b1VSSShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmggYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaAppbmRl
eCBiNzVmMWVkZTFkMDk4YWYzNmMwNGJjMDVlMjNkODI1OGNlNDBjYWIwLi4xYjMzZjM3NjE1ZjE2
ODZlNDUwMjg2NGJlZjgyOTM3N2U2MzFiNzMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkv
RW50cnkuaAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnkuaApAQCAtNDAsMjcgKzQwLDI3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGlyZWN0b3J5RW50cnk7CiBjbGFzcyBF
bnRyeUNhbGxiYWNrOworY2xhc3MgRW50cnlTeW5jOwogY2xhc3MgRXJyb3JDYWxsYmFjazsKIGNs
YXNzIE1ldGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIEVudHJ5
IDogcHVibGljIEVudHJ5QmFzZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RW50cnkoKSB7IH0K
LQogICAgIERPTUZpbGVTeXN0ZW0qIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxET01GaWxlU3lzdGVtKj4obV9maWxlU3lzdGVtKTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7Ci0gICAg
dmlydHVhbCB2b2lkIG1vdmVUbyhQYXNzUmVmUHRyPEVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb3B5VG8oUGFzc1JlZlB0cjxFbnRyeT4gcGFyZW50LCBj
b25zdCBTdHJpbmcmIG5hbWUgPSBTdHJpbmcoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2sgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKFBhc3NSZWZQdHI8RGlyZWN0
b3J5RW50cnk+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1lID0gU3RyaW5nKCksIFBhc3NSZWZQ
dHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNvcHlU
byhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSA9
IFN0cmluZygpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IDAs
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayA9IDApIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBnZXRQYXJlbnQoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2sgPSAwKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvVVJJKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUgPSBTdHJpbmcoKSk7CiAKIHByb3RlY3RlZDoKLSAgICBFbnRyeShET01GaWxl
U3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBFbnRyeShE
T01GaWxlU3lzdGVtQmFzZSosIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmlkbCBi
L1dlYkNvcmUvZmlsZWFwaS9FbnRyeS5pZGwKaW5kZXggZDM2M2JjZGI5NjZiZjZiOWE1NjQyMTQx
MDM5OGI3OGI5NmY1ZTE1My4uZjZmY2RiM2I0ZWE4NjQ5ZjNkOGQ5N2QzYTkxMDQyM2I0YzcxZjk3
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5LmlkbAorKysgYi9XZWJDb3JlL2Zp
bGVhcGkvRW50cnkuaWRsCkBAIC00MSw4ICs0MSw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUZpbGVTeXN0ZW0gZmlsZXN5c3RlbTsKIAogICAgICAg
ICB2b2lkIGdldE1ldGFkYXRhKGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIE1ldGFkYXRhQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNr
IGVycm9yQ2FsbGJhY2spOwotICAgICAgICB2b2lkIG1vdmVUbyhpbiBFbnRyeSBwYXJlbnQsIGlu
IFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
IG5hbWUsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2sp
OwotICAgICAgICB2b2lkIGNvcHlUbyhpbiBFbnRyeSBwYXJlbnQsIGluIFtPcHRpb25hbCwgQ29u
dmVydFVuZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRp
b25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9u
YWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICB2b2lk
IG1vdmVUbyhpbiBEaXJlY3RvcnlFbnRyeSBwYXJlbnQsIGluIFtPcHRpb25hbCwgQ29udmVydFVu
ZGVmaW5lZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbCwg
Q2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENh
bGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICB2b2lkIGNvcHlU
byhpbiBEaXJlY3RvcnlFbnRyeSBwYXJlbnQsIGluIFtPcHRpb25hbCwgQ29udmVydFVuZGVmaW5l
ZE9yTnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWUsIGluIFtPcHRpb25hbCwgQ2FsbGJh
Y2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNr
XSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwogICAgICAgICB2b2lkIHJlbW92ZShpbiBb
T3B0aW9uYWwsIENhbGxiYWNrXSBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0
aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwogICAgICAgICB2
b2lkIGdldFBhcmVudChpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNh
bGxiYWNrKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJyYXlT
eW5jLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5jcHAKaW5kZXggOTllYzdk
M2FmNWZjMTZkMjNjYzg3NzMyZGI2OGNjMDgxYWRlOTg1Yi4uMWUyZmE5MTUxMjFkMTJiODdmNTVl
NTVlYmI5OWVlMTk4ZTI1MGJlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5QXJy
YXlTeW5jLmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRW50cnlBcnJheVN5bmMuY3BwCkBAIC0z
Myw4ICszMywyMCBAQAogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCisjaW5jbHVkZSAiRW50
cnlBcnJheS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8RW50cnlBcnJh
eVN5bmM+IEVudHJ5QXJyYXlTeW5jOjpjcmVhdGUoRW50cnlBcnJheSogZW50cmllcykKK3sKKyAg
ICBSZWZQdHI8RW50cnlBcnJheVN5bmM+IGVudHJpZXNTeW5jID0gYWRvcHRSZWYobmV3IEVudHJ5
QXJyYXlTeW5jKCkpOworICAgIGlmIChlbnRyaWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBlbnRyaWVzLT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgZW50cmllc1N5
bmMtPmFwcGVuZChFbnRyeVN5bmM6OmNyZWF0ZShlbnRyaWVzLT5pdGVtKGkpKSk7CisgICAgfQor
ICAgIHJldHVybiBlbnRyaWVzU3luYy5yZWxlYXNlKCk7Cit9CisKIEVudHJ5QXJyYXlTeW5jOjpF
bnRyeUFycmF5U3luYygpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlB
cnJheVN5bmMuaCBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5oCmluZGV4IDZkMDUy
NGRhNDM2ODQ4ODcyY2NjNGIwYzM1OTQ1MTI5ZDE0ZDUyYzkuLjQ2Y2Y0MDkxMTFlY2VkMjMzZDg3
YmY4NmYzMmYwNzU3MDIxMDUwYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFy
cmF5U3luYy5oCisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeUFycmF5U3luYy5oCkBAIC00OCw2
ICs0OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbnRyeUFycmF5
U3luYygpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRyeUFycmF5U3luYz4g
Y3JlYXRlKEVudHJ5QXJyYXkqKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW50cmllcy5zaXplKCk7IH0KICAgICBFbnRyeVN5bmMqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmggYi9X
ZWJDb3JlL2ZpbGVhcGkvRW50cnlCYXNlLmgKaW5kZXggZWVlNjVkZjM3YmEwNjM3YzIyZmQxOWJl
NWJhYTRjNmQ5ZmQxYzQwYS4uNmFiZjc0ZjE1NjFkYzhhYWIyOTg5MGM1NmE4ZjZiMTRiZDA4NTM5
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5QmFzZS5oCisrKyBiL1dlYkNvcmUv
ZmlsZWFwaS9FbnRyeUJhc2UuaApAQCAtNDgsNiArNDgsOCBAQCBjbGFzcyBFbnRyeUJhc2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxFbnRyeUJhc2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbnRy
eUJhc2UoKSB7IH0KIAorICAgIERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlc3lzdGVtKCkgY29uc3Qg
eyByZXR1cm4gbV9maWxlU3lzdGVtOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvRW50cnlT
eW5jLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwCmluZGV4IDdkYTMwN2NhMzgy
Y2EyNmVlOWZlYzZiMzZiZjZkODhlMTI5ODk0YmUuLmI4ODg2MTNjYWIzMWU0NjY0ZDE3YmE5ZDY3
ZWYxYjAyOTAwYjJmMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3Bw
CisrKyBiL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuY3BwCkBAIC0zNCwzNyArMzQsNjIgQEAK
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJET01GaWxlUGF0aC5oIgorI2lu
Y2x1ZGUgIkRPTUZpbGVTeXN0ZW1TeW5jLmgiCisjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIK
ICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKKyNpbmNsdWRlICJGaWxlRW50cnlTeW5j
LmgiCiAjaW5jbHVkZSAiTWV0YWRhdGEuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgIlN5bmNDYWxsYmFja0hlbHBlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NSZWZQdHI8TWV0YWRhdGE+IEVudHJ5U3luYzo6Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29k
ZSYpCitQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjpjcmVhdGUoRW50cnlCYXNlKiBl
bnRyeSkKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCi0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoZW50cnktPmlzRmlsZSgpKQorICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVFbnRyeVN5bmMoZW50cnktPm1fZmlsZVN5c3RlbSwg
ZW50cnktPm1fZnVsbFBhdGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVu
dHJ5U3luYyhlbnRyeS0+bV9maWxlU3lzdGVtLCBlbnRyeS0+bV9mdWxsUGF0aCkpOwogfQogCi1Q
YXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8oUGFzc1JlZlB0cjxEaXJlY3Rv
cnlFbnRyeVN5bmM+LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgY29uc3QKK1Bhc3NS
ZWZQdHI8TWV0YWRhdGE+IEVudHJ5U3luYzo6Z2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZWMgPSAwOworICAgIE1ldGFkYXRhU3luY0NhbGxiYWNr
SGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAo
IW1fZmlsZVN5c3RlbS0+Z2V0TWV0YWRhdGEodGhpcywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygp
LCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBoZWxwZXIu
Z2V0UmVzdWx0KGVjKTsKIH0KIAotUGFzc1JlZlB0cjxFbnRyeVN5bmM+IEVudHJ5U3luYzo6Y29w
eVRvKFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpIGNvbnN0CitQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjptb3ZlVG8o
UGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHBhcmVudCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVt
ZW50ZWQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBlYyA9IDA7
CisgICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNG
aWxlU3lzdGVtKCkpOworICAgIGlmICghbV9maWxlU3lzdGVtLT5tb3ZlKHRoaXMsIHBhcmVudC5n
ZXQoKSwgbmFtZSwgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFj
aygpKSkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBoZWxwZXIuZ2V0UmVzdWx0KGVjKTsKIH0KIAot
dm9pZCBFbnRyeVN5bmM6OnJlbW92ZShFeGNlcHRpb25Db2RlJikgY29uc3QKK1Bhc3NSZWZQdHI8
RW50cnlTeW5jPiBFbnRyeVN5bmM6OmNvcHlUbyhQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3lu
Yz4gcGFyZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAog
ewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGVjID0gMDsKKyAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxl
U3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CisgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmNvcHko
dGhpcywgcGFyZW50LmdldCgpLCBuYW1lLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNrKCksIGhlbHBl
ci5lcnJvckNhbGxiYWNrKCkpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9NT0RJRklDQVRJT05f
RVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIGhlbHBlci5nZXRSZXN1
bHQoZWMpOworfQorCit2b2lkIEVudHJ5U3luYzo6cmVtb3ZlKEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAoreworICAgIGVjID0gMDsKKyAgICBWb2lkU3luY0NhbGxiYWNrSGVscGVyIGhlbHBlciht
X2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKKyAgICBpZiAoIW1fZmlsZVN5c3RlbS0+
cmVtb3ZlKHRoaXMsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJh
Y2soKSkpCisgICAgICAgIGVjID0gSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOworICAgIGhlbHBl
ci5nZXRSZXN1bHQoZWMpOwogfQogCiBQYXNzUmVmUHRyPEVudHJ5U3luYz4gRW50cnlTeW5jOjpn
ZXRQYXJlbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5o
IGIvV2ViQ29yZS9maWxlYXBpL0VudHJ5U3luYy5oCmluZGV4IDEwYjExMDFjZWUxZDk2Yjk3MWJj
NGYwOGQ5MzZjM2I2ZmEyYmVkOTIuLjYxOGYxMmNjYzYzN2FmMjJmZjdiNjFkMjcyMWE1Nzk1NWEx
ODFjZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9FbnRyeVN5bmMuaAorKysgYi9XZWJD
b3JlL2ZpbGVhcGkvRW50cnlTeW5jLmgKQEAgLTQ3LDYgKzQ3LDggQEAgY2xhc3MgTWV0YWRhdGE7
CiAKIGNsYXNzIEVudHJ5U3luYyA6IHB1YmxpYyBFbnRyeUJhc2UgewogcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEVudHJ5U3luYz4gY3JlYXRlKEVudHJ5QmFzZSopOworCiAgICAgRE9N
RmlsZVN5c3RlbVN5bmMqIGZpbGVzeXN0ZW0oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxE
T01GaWxlU3lzdGVtU3luYyo+KG1fZmlsZVN5c3RlbSk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxNZXRhZGF0YT4gZ2V0TWV0YWRhdGEoRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5jcHAgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5
LmNwcAppbmRleCBhN2U3MTU4Yzk3MGE2ZmIyOTRhN2NmNDgxOGU2MjAzM2Y1MmE3MjUzLi5jNzQ3
OGZiZTAxY2Q1N2M1YmJhZTRjNzFmYWUzNjMwM2QzNWFkNjk4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZUVudHJ5LmNwcAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvRmlsZUVudHJ5LmNw
cApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbGVFbnRyeTo6
RmlsZUVudHJ5KERPTUZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpCitGaWxlRW50cnk6OkZpbGVFbnRyeShET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKICAgICA6IEVudHJ5KGZpbGVTeXN0ZW0sIGZ1bGxQYXRo
KQogewogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVFbnRyeS5oIGIvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVFbnRyeS5oCmluZGV4IDJjODVkNzM5YjdjZDUxOThjODlkZjBmNGU0Mjdm
ZTVkMjVjNTNhYWEuLmJiYjgzNjkxYzU0OWJmNjZhOWUwZTY1OGY5NmRkNDdmNTllMTg0ZWUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9GaWxlRW50cnkuaAorKysgYi9XZWJDb3JlL2ZpbGVh
cGkvRmlsZUVudHJ5LmgKQEAgLTM5LDExICszOSw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgRE9NRmlsZVN5c3RlbTsKLQogY2xhc3MgRmlsZUVudHJ5IDogcHVibGljIEVudHJ5
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlRW50cnk+IGNyZWF0ZShET01G
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZpbGVFbnRyeT4gY3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGaWxlRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgpKTsKICAgICB9CkBAIC01NCw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIEZpbGVFbnRyeShET01GaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBGaWxlRW50cnkoRE9NRmlsZVN5
c3RlbUJhc2UqIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJh
Y2tzLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAppbmRleCA4
M2IxMjBiYTUxYjEzNDM5NDFjNjVmZDJiMzQ0YTg2ZjY2OTBiNGFiLi5lNWY0MDRlYmFlZDE1MTY1
NzI0NjJlNjY3Nzg3OGYyYzNkMTQ5ODg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVN5c3RlbUNhbGxiYWNrcy5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxs
YmFja3MuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIK
LSNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbUJhc2Uu
aCIKICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeVJlYWRl
ci5oIgogI2luY2x1ZGUgIkVudHJpZXNDYWxsYmFjay5oIgpAQCAtMTExLDEyICsxMTEsMTIgQEAg
dm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkKIAogLy8gRW50
cnlDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1QYXNzT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBFbnRyeUNhbGxi
YWNrczo6Y3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIERPTUZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGlyZWN0b3J5KQor
UGFzc093blB0cjxFbnRyeUNhbGxiYWNrcz4gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrLCBET01GaWxlU3lzdGVtQmFzZSogZmlsZVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBleHBlY3RlZFBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBFbnRyeUNhbGxiYWNrcyhzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IGZpbGVTeXN0ZW0sIGV4cGVjdGVkUGF0aCwgaXNEaXJlY3RvcnkpKTsKIH0KIAotRW50cnlDYWxs
YmFja3M6OkVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIERPTUZpbGVT
eXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGly
ZWN0b3J5KQorRW50cnlDYWxsYmFja3M6OkVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2ssIERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGV4
cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSkKICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlKGVycm9yQ2FsbGJhY2spCiAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJh
Y2spCiAgICAgLCBtX2ZpbGVTeXN0ZW0oZmlsZVN5c3RlbSkKQEAgLTEzOCwxMiArMTM4LDEyIEBA
IHZvaWQgRW50cnlDYWxsYmFja3M6OmRpZFN1Y2NlZWQoKQogCiAvLyBFbnRyaWVzQ2FsbGJhY2tz
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLVBhc3NPd25QdHI8RW50cmllc0NhbGxiYWNrcz4gRW50cmllc0NhbGxiYWNrczo6Y3Jl
YXRlKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgRGlyZWN0b3J5UmVhZGVyKiBkaXJlY3Rv
cnlSZWFkZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCitQYXNzT3duUHRyPEVudHJpZXNDYWxs
YmFja3M+IEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2ssIERpcmVjdG9yeVJlYWRlckJhc2UqIGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3RyaW5nJiBi
YXNlUGF0aCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEVudHJpZXNDYWxsYmFja3Moc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBkaXJlY3RvcnlSZWFkZXIsIGJhc2VQYXRoKSk7
CiB9CiAKLUVudHJpZXNDYWxsYmFja3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRy
aWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrLCBEaXJlY3RvcnlSZWFkZXIqIGRpcmVjdG9yeVJlYWRlciwgY29uc3QgU3Ry
aW5nJiBiYXNlUGF0aCkKK0VudHJpZXNDYWxsYmFja3M6OkVudHJpZXNDYWxsYmFja3MoUGFzc1Jl
ZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrLCBEaXJlY3RvcnlSZWFkZXJCYXNlKiBkaXJlY3RvcnlSZWFk
ZXIsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCiAgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFz
ZShlcnJvckNhbGxiYWNrKQogICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNr
KQogICAgICwgbV9kaXJlY3RvcnlSZWFkZXIoZGlyZWN0b3J5UmVhZGVyKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBiL1dlYkNvcmUvZmlsZWFwaS9G
aWxlU3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggN2YxODZlZjI3NTRhZTU2MjY1MmMxZjRmZGNmMTYw
NmMzMjM1ZDRiNS4uYzYwMGE3NjZkMDk2NmJjZmQ5YzU1OTY3ZmMyNjA1NTE4YzQ1ZTY5YyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC00MSw4ICs0MSw4IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVdyaXRlcjsKLWNsYXNzIERPTUZpbGVT
eXN0ZW07Ci1jbGFzcyBEaXJlY3RvcnlSZWFkZXI7CitjbGFzcyBET01GaWxlU3lzdGVtQmFzZTsK
K2NsYXNzIERpcmVjdG9yeVJlYWRlckJhc2U7CiBjbGFzcyBFcnJvckNhbGxiYWNrOwogY2xhc3Mg
RW50cmllc0NhbGxiYWNrOwogY2xhc3MgRW50cnlBcnJheTsKQEAgLTg2LDI3ICs4NiwyNyBAQCBw
cm90ZWN0ZWQ6CiAKIGNsYXNzIEVudHJ5Q2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxs
YmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyeUNhbGxiYWNr
cz4gY3JlYXRlKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4sIERPTUZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBp
c0RpcmVjdG9yeSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8RW50cnlDYWxsYmFja3M+IGNyZWF0
ZShQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBE
T01GaWxlU3lzdGVtQmFzZSosIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRQYXRoLCBib29sIGlzRGly
ZWN0b3J5KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwogCiBwcml2YXRlOgotICAg
IEVudHJ5Q2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4sIERPTUZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwg
Ym9vbCBpc0RpcmVjdG9yeSk7CisgICAgRW50cnlDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgRE9NRmlsZVN5c3RlbUJhc2UqLCBj
b25zdCBTdHJpbmcmIGV4cGVjdGVkUGF0aCwgYm9vbCBpc0RpcmVjdG9yeSk7CiAgICAgUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwotICAgIERPTUZpbGVTeXN0ZW0qIG1f
ZmlsZVN5c3RlbTsKKyAgICBET01GaWxlU3lzdGVtQmFzZSogbV9maWxlU3lzdGVtOwogICAgIFN0
cmluZyBtX2V4cGVjdGVkUGF0aDsKICAgICBib29sIG1faXNEaXJlY3Rvcnk7CiB9OwogCiBjbGFz
cyBFbnRyaWVzQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBjcmVhdGUoUGFz
c1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBEaXJl
Y3RvcnlSZWFkZXIqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoKTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxFbnRyaWVzQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBEaXJlY3RvcnlSZWFkZXJCYXNlKiwgY29uc3Qg
U3RyaW5nJiBiYXNlUGF0aCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRy
eShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3RvcnkpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUpOwogCiBwcml2YXRlOgotICAg
IEVudHJpZXNDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+LCBEaXJlY3RvcnlSZWFkZXIqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRo
KTsKKyAgICBFbnRyaWVzQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFz
c1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgRGlyZWN0b3J5UmVhZGVyQmFzZSosIGNvbnN0IFN0cmlu
ZyYgYmFzZVBhdGgpOwogICAgIFJlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxi
YWNrOwotICAgIERpcmVjdG9yeVJlYWRlciogbV9kaXJlY3RvcnlSZWFkZXI7CisgICAgRGlyZWN0
b3J5UmVhZGVyQmFzZSogbV9kaXJlY3RvcnlSZWFkZXI7CiAgICAgU3RyaW5nIG1fYmFzZVBhdGg7
CiAgICAgUmVmUHRyPEVudHJ5QXJyYXk+IG1fZW50cmllczsKIH07CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmNwcCBiL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZp
bGVTeXN0ZW0uY3BwCmluZGV4IDU2N2FhZmU2NmY3ZDdjNTAwODNhOTVlNDI4ZjhlZjU5YWRmYTc5
ODAuLmM3MzQ3Yjg4NDkyZTBhNjE5NzBjY2YzNmE1MWYwOWI4NmExNTg5NjMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvZmlsZWFw
aS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyB2b2lkIG9wZW5G
aWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRo
LCBjb25zCiAgICAgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShiYXNlUGF0aCwgaWRl
bnRpZmllciwgdHlwZSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJl
cXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmls
ZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIExvY2FsRmlsZVN5c3RlbTo6cmVxdWVzdEZpbGVT
eXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpU
eXBlIHR5cGUsIGxvbmcgbG9uZywgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcywgYm9vbCkKIHsKICAgICAvLyBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lz
dGVtIGNhbGxzIGNhbGxiYWNrcyBzeW5jaHJvbm91c2x5LCBzbyB0aGUgbWV0aG9kIG5lZWRzIHRv
IGJlIGNhbGxlZCBhc3luY2hyb25vdXNseS4KICAgICBjb250ZXh0LT5wb3N0VGFzayhjcmVhdGVD
YWxsYmFja1Rhc2soJm9wZW5GaWxlU3lzdGVtLCBmaWxlU3lzdGVtQmFzZVBhdGgoKSwgY29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCksIHR5cGUsIGNhbGxiYWNr
cykpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5oIGIvV2Vi
Q29yZS9maWxlYXBpL0xvY2FsRmlsZVN5c3RlbS5oCmluZGV4IGJiMWQwNDUwNDg1YjY0ZGMwMDcw
N2Y4ODQ5ZDhjMGVhZWUzNzlhZjQuLjlkOGFlNjVhMDU2MjQzOWJmZmRmNmFlNzI2M2Y0NTAyM2Jl
YTg2NGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmlsZWFwaS9Mb2NhbEZpbGVTeXN0ZW0uaAorKysg
Yi9XZWJDb3JlL2ZpbGVhcGkvTG9jYWxGaWxlU3lzdGVtLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIC8vIGNhbGxpbmcgdGhpcyBvbmUuCiAgICAgc3RhdGljIExvY2FsRmlsZVN5c3Rl
bSYgbG9jYWxGaWxlU3lzdGVtKCk7CiAKLSAgICB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZvaWQgcmVxdWVz
dEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN5c3RlbTo6VHlw
ZSwgbG9uZyBsb25nIHNpemUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiwg
Ym9vbCBzeW5jaHJvbm91cyA9IGZhbHNlKTsKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKICAg
ICAvLyBUaGlzIGNhbGwgaXMgbm90IHRocmVhZC1zYWZlOyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUg
YW55IHdvcmtlciB0aHJlYWRzIGFyZSBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9maWxl
YXBpL01ldGFkYXRhLmggYi9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaAppbmRleCAxZmVjOTQz
N2I1MGQ2YTU1ZmQ4NjYyM2E5YzBjZjI3YWRmZDRhNDI1Li5iNzA4MDZiMDllZDQyMTI2NDBkYmM2
MDBmODBjYWNiNzVhMmYzODBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEu
aAorKysgYi9XZWJDb3JlL2ZpbGVhcGkvTWV0YWRhdGEuaApAQCAtNDQsNiArNDQsMTEgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1ldGFkYXRhKG1vZGlmaWNhdGlvblRp
bWUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZXRhZGF0YT4gY3JlYXRlKE1l
dGFkYXRhKiBtZXRhZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWV0
YWRhdGEobWV0YWRhdGEtPm1fbW9kaWZpY2F0aW9uVGltZSkpOworICAgIH0KKwogICAgIC8vIE5l
ZWRzIHRvIHJldHVybiBlcG9jaCB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgRGF0ZS4KICAgICBk
b3VibGUgbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9uVGlt
ZSAqIDEwMDAuMDsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2ZpbGVhcGkvU3luY0NhbGxiYWNr
SGVscGVyLmggYi9XZWJDb3JlL2ZpbGVhcGkvU3luY0NhbGxiYWNrSGVscGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDBiY2Y3NThhZDdmYzkzN2RlOTUwNTU1ZDY4YmMxZmJlY2VlNDU5NAotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvZmlsZWFwaS9TeW5jQ2FsbGJhY2tIZWxwZXIuaApAQCAtMCwwICsxLDE4
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU3luY0NhbGxiYWNrSGVscGVyX2gKKyNkZWZpbmUgU3luY0NhbGxiYWNrSGVs
cGVyX2gKKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkRpcmVjdG9yeUVu
dHJ5LmgiCisjaW5jbHVkZSAiRW50cmllc0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiRW50cnlBcnJh
eVN5bmMuaCIKKyNpbmNsdWRlICJFbnRyeUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRXJyb3JDYWxs
YmFjay5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGaWxlRW50cnku
aCIKKyNpbmNsdWRlICJGaWxlRXJyb3IuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiVm9pZENhbGxiYWNr
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFzeW5jRmlsZVN5c3RlbTsKK2Ns
YXNzIERpcmVjdG9yeUVudHJ5U3luYzsKK2NsYXNzIEVudHJ5QXJyYXlTeW5jOworY2xhc3MgRW50
cnlTeW5jOworY2xhc3MgRmlsZUVudHJ5U3luYzsKKworLy8gQSBoZWxwZXIgdGVtcGxhdGUgZm9y
IEZpbGVTeXN0ZW1TeW5jIGltcGxlbWVudGF0aW9uLgordGVtcGxhdGUgPHR5cGVuYW1lIFN1Y2Nl
c3NDYWxsYmFjaywgdHlwZW5hbWUgT2JzZXJ2ZXJUeXBlLCB0eXBlbmFtZSBDYWxsYmFja0FyZywg
dHlwZW5hbWUgUmVzdWx0VHlwZT4KK2NsYXNzIFN5bmNDYWxsYmFja0hlbHBlciA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8U3Vj
Y2Vzc0NhbGxiYWNrLCBPYnNlcnZlclR5cGUsIENhbGxiYWNrQXJnLCBSZXN1bHRUeXBlPiBIZWxw
ZXJUeXBlOworICAgIFN5bmNDYWxsYmFja0hlbHBlcihPYnNlcnZlclR5cGUqIG9ic2VydmVyID0g
MCkKKyAgICAgICAgOiBtX29ic2VydmVyKG9ic2VydmVyKQorICAgICAgICAsIG1fc3VjY2Vzc0Nh
bGxiYWNrKFN1Y2Nlc3NDYWxsYmFja0ltcGw6OmNyZWF0ZSh0aGlzKSkKKyAgICAgICAgLCBtX2Vy
cm9yQ2FsbGJhY2soRXJyb3JDYWxsYmFja0ltcGw6OmNyZWF0ZSh0aGlzKSkKKyAgICAgICAgLCBt
X2Vycm9yKDApCisgICAgICAgICwgbV9jb21wbGV0ZWQoZmFsc2UpCisgICAgeworICAgIH0KKwor
ICAgIFBhc3NSZWZQdHI8UmVzdWx0VHlwZT4gZ2V0UmVzdWx0KEV4Y2VwdGlvbkNvZGUmIGVjKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fb2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgIHdoaWxlICghbV9j
b21wbGV0ZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fb2JzZXJ2ZXItPndhaXRGb3JPcGVy
YXRpb25Ub0NvbXBsZXRlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9lcnJvciA9IEFCT1JU
X0VSUjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVjID0gbV9lcnJvcjsKKyAgICAgICAgcmV0
dXJuIG1fcmVzdWx0LnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPFN1Y2Nlc3ND
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKCkgeyByZXR1cm4gbV9zdWNjZXNzQ2FsbGJhY2s7IH0K
KyAgICBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soKSB7IHJldHVybiBt
X2Vycm9yQ2FsbGJhY2s7IH0KKworcHJpdmF0ZToKKyAgICBjbGFzcyBTdWNjZXNzQ2FsbGJhY2tJ
bXBsIDogcHVibGljIFN1Y2Nlc3NDYWxsYmFjayB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdWNjZXNzQ2FsbGJhY2tJbXBsPiBjcmVhdGUoSGVscGVyVHlwZSogaGVs
cGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN1Y2Nlc3ND
YWxsYmFja0ltcGwoaGVscGVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlRXZlbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2hlbHBlci0+c2V0RXJyb3Io
MCk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoQ2FsbGJh
Y2tBcmcqIGFyZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9oZWxwZXItPnNldFJlc3VsdChS
ZXN1bHRUeXBlOjpjcmVhdGUoYXJnKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgU3VjY2Vzc0NhbGxiYWNrSW1wbChIZWxwZXJU
eXBlKiBoZWxwZXIpCisgICAgICAgICAgICA6IG1faGVscGVyKGhlbHBlcikKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIEhlbHBlclR5cGUqIG1faGVscGVyOworICAgIH07CisKKyAgICBj
bGFzcyBFcnJvckNhbGxiYWNrSW1wbCA6IHB1YmxpYyBFcnJvckNhbGxiYWNrIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2tJbXBsPiBjcmVhdGUo
SGVscGVyVHlwZSogaGVscGVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEVycm9yQ2FsbGJhY2tJbXBsKGhlbHBlcikpOworICAgICAgICB9CisKKyAgICAgICAg
dmlydHVhbCBib29sIGhhbmRsZUV2ZW50KEZpbGVFcnJvciogZXJyb3IpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChlcnJvcik7CisgICAgICAgICAgICBtX2hlbHBlci0+c2V0RXJyb3Io
ZXJyb3ItPmNvZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgRXJyb3JDYWxsYmFja0ltcGwoSGVscGVyVHlwZSogaGVscGVy
KQorICAgICAgICAgICAgOiBtX2hlbHBlcihoZWxwZXIpCisgICAgICAgIHsKKyAgICAgICAgfQor
ICAgICAgICBIZWxwZXJUeXBlKiBtX2hlbHBlcjsKKyAgICB9OworCisgICAgZnJpZW5kIGNsYXNz
IFN1Y2Nlc3NDYWxsYmFja0ltcGw7CisgICAgZnJpZW5kIGNsYXNzIEVycm9yQ2FsbGJhY2tJbXBs
OworCisgICAgdm9pZCBzZXRFcnJvcihFeGNlcHRpb25Db2RlIGVjKQorICAgIHsKKyAgICAgICAg
bV9lcnJvciA9IGVjOworICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CisgICAgfQorCisgICAg
dm9pZCBzZXRSZXN1bHQoUGFzc1JlZlB0cjxSZXN1bHRUeXBlPiByZXN1bHQpCisgICAgeworICAg
ICAgICBtX3Jlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOworICAg
IH0KKworICAgIE9ic2VydmVyVHlwZSogbV9vYnNlcnZlcjsKKyAgICBSZWZQdHI8U3VjY2Vzc0Nh
bGxiYWNrSW1wbD4gbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2tJ
bXBsPiBtX2Vycm9yQ2FsbGJhY2s7CisgICAgUmVmUHRyPFJlc3VsdFR5cGU+IG1fcmVzdWx0Owor
ICAgIEV4Y2VwdGlvbkNvZGUgbV9lcnJvcjsKKyAgICBib29sIG1fY29tcGxldGVkOworfTsKKwor
c3RydWN0IEVtcHR5VHlwZSA6IHB1YmxpYyBSZWZDb3VudGVkPEVtcHR5VHlwZT4geworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEVtcHR5VHlwZT4gY3JlYXRlKEVtcHR5VHlwZSogYXJnKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfTsKKworc3RydWN0IEVtcHR5T2JzZXJ2ZXJUeXBl
IHsKKyAgICBib29sIHdhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCit0eXBlZGVmIFN5bmNDYWxsYmFja0hlbHBlcjxF
bnRyeUNhbGxiYWNrLCBBc3luY0ZpbGVTeXN0ZW0sIEVudHJ5LCBFbnRyeVN5bmM+IEVudHJ5U3lu
Y0NhbGxiYWNrSGVscGVyOwordHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8RW50cmllc0NhbGxi
YWNrLCBBc3luY0ZpbGVTeXN0ZW0sIEVudHJ5QXJyYXksIEVudHJ5QXJyYXlTeW5jPiBFbnRyaWVz
U3luY0NhbGxiYWNrSGVscGVyOwordHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8TWV0YWRhdGFD
YWxsYmFjaywgQXN5bmNGaWxlU3lzdGVtLCBNZXRhZGF0YSwgTWV0YWRhdGE+IE1ldGFkYXRhU3lu
Y0NhbGxiYWNrSGVscGVyOwordHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8Vm9pZENhbGxiYWNr
LCBBc3luY0ZpbGVTeXN0ZW0sIEVtcHR5VHlwZSwgRW1wdHlUeXBlPiBWb2lkU3luY0NhbGxiYWNr
SGVscGVyOwordHlwZWRlZiBTeW5jQ2FsbGJhY2tIZWxwZXI8RmlsZVN5c3RlbUNhbGxiYWNrLCBF
bXB0eU9ic2VydmVyVHlwZSwgRE9NRmlsZVN5c3RlbSwgRE9NRmlsZVN5c3RlbVN5bmM+IEZpbGVT
eXN0ZW1TeW5jQ2FsbGJhY2tIZWxwZXI7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2VuZGlmIC8vIFN5bmNDYWxsYmFja0hlbHBl
cl9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsCmluZGV4IDhjYWM4Nzk5N2FhOTUzMjY2MGU1YmVjMjNlOTljYjE5MWVi
ZDk0ZTUuLjg2YjcyZTU1ZjQzOTg2MmIxYTdjMjEwNGUzY2Q5YjRlOTNjNjNmNmEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCkBAIC0xOTIsNyArMTkyLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAjaWYgZGVmaW5lZChF
TkFCTEVfRklMRV9TWVNURU0pICYmIEVOQUJMRV9GSUxFX1NZU1RFTQogICAgICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBURU1QT1JBUlkgPSAwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBQRVJTSVNURU5UID0gMTsKLSAgICAgICAgW0VuYWJsZWRBdFJ1bnRpbWVdIHZvaWQgcmVxdWVz
dEZpbGVTeXN0ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUsIGlu
IFtDYWxsYmFjaywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ss
IGluIFtDYWxsYmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Cisg
ICAgICAgIFtFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIHZvaWQgcmVxdWVzdEZpbGVTeXN0
ZW0oaW4gdW5zaWduZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUsIGluIFtDYWxsYmFj
aywgT3B0aW9uYWxdIEZpbGVTeXN0ZW1DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtDYWxs
YmFjaywgT3B0aW9uYWxdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAKICAgICAgICAg
YXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0ZW1dIEZsYWdzQ29uc3RydWN0b3Ig
RmxhZ3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lz
dGVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCmluZGV4IDFiZjc1ODA4
MjFiYjMwN2JkZWYwMWI2YmYwMDRjOWIzNDk4Yjc1ZmYuLjI3YzYyNDBlYjNlMjk4MDNlNDdlZjgx
OWQ1ZTRlYzMzMWU5MDI5YmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxl
U3lzdGVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaApAQCAtNTks
NiArNTksMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAor
ICAgIC8vIFN1YmNsYXNzIG11c3QgaW1wbGVtZW50IHRoaXMgaWYgaXQgc3VwcG9ydHMgc3luY2hy
b25vdXMgb3BlcmF0aW9ucy4KKyAgICAvLyBUaGlzIHNob3VsZCByZXR1cm4gZmFsc2UgaWYgdGhl
cmUgYXJlIG5vIHBlbmRpbmcgb3BlcmF0aW9ucy4KKyAgICB2aXJ0dWFsIGJvb2wgd2FpdEZvck9w
ZXJhdGlvblRvQ29tcGxldGUoKSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gQ3JlYXRlcyBh
bmQgcmV0dXJucyBhIG5ldyBwbGF0Zm9ybS1zcGVjaWZpYyBBc3luY0ZpbGVTeXN0ZW0gaW5zdGFu
Y2UgaWYgdGhlIHBsYXRmb3JtIGhhcyBpdHMgb3duIGltcGxlbWVudGF0aW9uLgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcm9vdFBh
dGgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggNmNlZTI0NjI5YjdiODZmYWMy
N2EyNWI1YjNhY2FiMzg5M2Q3MGJhOC4uZWExYmE4OWEzZTc3MmYzMWM0Mzg3ODNmNGQ1MDE2MmQ3
MGFlM2NjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisr
KyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtNjYsMTEgKzY2LDEzIEBA
CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkRPTUZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtU3luYy5o
IgogI2luY2x1ZGUgIkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlRXJyb3IuaCIKICNp
bmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU3luY0NhbGxi
YWNrSGVscGVyLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzY2LDYgKzM2
OCwyNSBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OnJlcXVlc3RGaWxlU3lzdGVtKGludCB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgUGFzc1JlZlB0cjxGaWxlUwogICAgIExvY2FsRmlsZVN5c3RlbTo6bG9j
YWxGaWxlU3lzdGVtKCkucmVxdWVzdEZpbGVTeXN0ZW0odGhpcywgZmlsZVN5c3RlbVR5cGUsIHNp
emUsIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2ssIHRoaXMpKTsKIH0KIAorUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gV29ya2Vy
Q29udGV4dDo6cmVxdWVzdEZpbGVTeXN0ZW1TeW5jKGludCB0eXBlLCBsb25nIGxvbmcgc2l6ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAgIGlmICghQXN5bmNGaWxlU3lz
dGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lz
dGVtKCkpIHsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSBmaWxlU3lzdGVtVHlwZSA9IHN0YXRp
Y19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSk7CisgICAgaWYgKGZpbGVTeXN0ZW1U
eXBlICE9IEFzeW5jRmlsZVN5c3RlbTo6VGVtcG9yYXJ5ICYmIGZpbGVTeXN0ZW1UeXBlICE9IEFz
eW5jRmlsZVN5c3RlbTo6UGVyc2lzdGVudCkgeworICAgICAgICBlYyA9IElOVkFMSURfTU9ESUZJ
Q0FUSU9OX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgRmlsZVN5c3RlbVN5
bmNDYWxsYmFja0hlbHBlciBoZWxwZXI7CisgICAgTG9jYWxGaWxlU3lzdGVtOjpsb2NhbEZpbGVT
eXN0ZW0oKS5yZXF1ZXN0RmlsZVN5c3RlbSh0aGlzLCBmaWxlU3lzdGVtVHlwZSwgc2l6ZSwgRmls
ZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlKGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVy
LmVycm9yQ2FsbGJhY2soKSwgdGhpcyksIHRydWUpOworICAgIHJldHVybiBoZWxwZXIuZ2V0UmVz
dWx0KGVjKTsKK30KKwogQ09NUElMRV9BU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihXb3JrZXJDb250
ZXh0OjpURU1QT1JBUlkpID09IHN0YXRpY19jYXN0PGludD4oQXN5bmNGaWxlU3lzdGVtOjpUZW1w
b3JhcnkpLCBlbnVtX21pc21hdGNoKTsKIENPTVBJTEVfQVNTRVJUKHN0YXRpY19jYXN0PGludD4o
V29ya2VyQ29udGV4dDo6UEVSU0lTVEVOVCkgPT0gc3RhdGljX2Nhc3Q8aW50PihBc3luY0ZpbGVT
eXN0ZW06OlBlcnNpc3RlbnQpLCBlbnVtX21pc21hdGNoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmgKaW5kZXggNDEyOGE1NjIzYjhlZjhhZGMzNDIwNzQxNTNhMGVhNGM2Yjk4NGQ4Zi4u
MDg4MDRkMmEwZWRmODYxZWFlNmY3M2MwZjZiMjY3M2ZkNDY1ODY5MCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Q29udGV4dC5oCkBAIC00NSw2ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBCbG9iOworICAgIGNsYXNzIERPTUZpbGVTeXN0ZW1TeW5jOwogICAgIGNsYXNzIERhdGFi
YXNlOwogICAgIGNsYXNzIERhdGFiYXNlQ2FsbGJhY2s7CiAgICAgY2xhc3MgRGF0YWJhc2VTeW5j
OwpAQCAtMTMwLDYgKzEzMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBF
UlNJU1RFTlQsCiAgICAgICAgIH07CiAgICAgICAgIHZvaWQgcmVxdWVzdEZpbGVTeXN0ZW0oaW50
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBQYXNzUmVmUHRyPEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgICAgICBQYXNzUmVmUHRyPERPTUZpbGVTeXN0
ZW1TeW5jPiByZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW50IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBF
eGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1
c2VkIGZvciBHQyBtYXJraW5nLiBTZWUgSlNXb3JrZXJDb250ZXh0OjptYXJrQ2hpbGRyZW4oTWFy
a1N0YWNrJikgaW4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmlk
bCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAppbmRleCAzZTE4NWMwZDViOGUw
YTEzN2JkOTI4YzUyYTJkYmE4MTc1ZjgwMzM3Li5hYTQwZmYzZjgyMDllMWYzODI4NmJhMjU3M2U2
MWZiMDY1OTk2MTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5p
ZGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCkBAIC0xMDgsNyArMTA4
LDggQEAgbW9kdWxlIHRocmVhZHMgewogI2lmIGRlZmluZWQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAm
JiBFTkFCTEVfRklMRV9TWVNURU0KICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVEVNUE9S
QVJZID0gMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgUEVSU0lTVEVOVCA9IDE7Ci0g
ICAgICAgIFtFbmFibGVkQXRSdW50aW1lXSB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKGluIHVuc2ln
bmVkIHNob3J0IHR5cGUsIGluIGxvbmcgbG9uZyBzaXplLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFs
XSBGaWxlU3lzdGVtQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlv
bmFsXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICBbRW5hYmxlZEF0UnVu
dGltZT1GaWxlU3lzdGVtXSB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtKGluIHVuc2lnbmVkIHNob3J0
IHR5cGUsIGluIGxvbmcgbG9uZyBzaXplLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBGaWxlU3lz
dGVtQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbQ2FsbGJhY2ssIE9wdGlvbmFsXSBFcnJv
ckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICBbRW5hYmxlZEF0UnVudGltZT1GaWxl
U3lzdGVtXSBET01GaWxlU3lzdGVtU3luYyByZXF1ZXN0RmlsZVN5c3RlbVN5bmMoaW4gdW5zaWdu
ZWQgc2hvcnQgdHlwZSwgaW4gbG9uZyBsb25nIHNpemUpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7
CiAKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPUZpbGVTeXN0
ZW1dIEZsYWdzQ29uc3RydWN0b3IgRmxhZ3M7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ4ODRh
YjYwYWNkN2Y3YjdmYjcwYTI4MTJhZjA5MGJkNTIzMmJmY2UuLjBiNjUxMmU3ODdjMjUyMDczYTdj
ZTZmMmQyZDExNmI5MzkyMmFkZDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEw
LTEwLTA2ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRmlsZVN5c3RlbVN5bmMg
aW1wbGVtZW50YXRpb24gZm9yIFdvcmtlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNDQKKworICAgICAgICAqIHNyYy9Mb2NhbEZpbGVTeXN0ZW1D
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RG
aWxlU3lzdGVtKTogQWRkZWQgYSBuZXcgcGFyYW1ldGVyCisgICAgICAgIGZvciBzeW5jaHJvbm91
cyBtb2RlLgorICAgICAgICAqIHNyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsOjpXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbCk6IEFkZGVkCisgICAgICAgIGEgcGFyYW1ldGVyIGZvciBzeW5jaHJvbm91
cyBtb2RlLgorICAgICAgICAoV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbDo6ZGlk
T3BlbkZpbGVTeXN0ZW0pOiBDaGFuZ2VkIHRvCisgICAgICAgIGNyZWF0ZXMgV29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0gd2l0aCBzeW5jaHJvbm91cyBmbGFnLgorICAgICAgICAqIHNyYy9X
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6b3BlbkZpbGVTeXN0ZW0pOiBB
ZGRlZCBhIHBhcmFtZXRlciBmb3IKKyAgICAgICAgc3luY2hyb25vdXMgbW9kZS4KKyAgICAgICAg
KiBzcmMvV2ViV29ya2VyQmFzZS5oOgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OndhaXRGb3JPcGVyYXRpb25Ub0NvbXBs
ZXRlKToKKyAgICAgICAgQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmls
ZVN5c3RlbUNocm9taXVtOjpyZWFkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZURpcmVjdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6ZmlsZUV4aXN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6ZGlyZWN0b3J5
RXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
OjpyZWFkRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckFzeW5jRmlsZVN5c3Rl
bUNocm9taXVtOjpjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKToKKyAgICAg
ICAgVXBkYXRlZCB0byBzdG9yZSB0aGUgY3JlYXRlZCBicmlkZ2UgaW4gYSBtZW1iZXIgdmFyaWFi
bGUgc28gdGhhdAorICAgICAgICB3ZSBjYW4gY2FsbCBicmlkZ2UtPnN0b3AoKSBsYXRlciB3aGVu
IHRoZSBSdW5Mb29wIGlzIHRlcm1pbmF0aW5nLgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW06OmNyZWF0ZSk6IEFkZGVkIGEgbmV3CisgICAgICAgIHBhcmFtZXRlciBmb3Ig
c3luY2hyb25vdXMgbW9kZS4KKwogMjAxMC0wOS0yOSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0xvY2FsRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRleCBhNGYyZDcy
Mzc4OTU2ZWUxMjUzNzA4OGZjMmFjOTlhZTE1NGRkZDY5Li4yNWIxZmViZmEyNTQ4MTI1N2Q1MzBh
ZDc4NzYwOGRhOGMwOTU0N2EzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2Fs
RmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsRmls
ZVN5c3RlbUNocm9taXVtLmNwcApAQCAtNTcsNyArNTcsNyBAQCBMb2NhbEZpbGVTeXN0ZW0mIExv
Y2FsRmlsZVN5c3RlbTo6bG9jYWxGaWxlU3lzdGVtKCkKICAgICByZXR1cm4gKmxvY2FsRmlsZVN5
c3RlbTsKIH0KIAotdm9pZCBMb2NhbEZpbGVTeXN0ZW06OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxi
YWNrcykKK3ZvaWQgTG9jYWxGaWxlU3lzdGVtOjpyZXF1ZXN0RmlsZVN5c3RlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBs
b25nIHNpemUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IGJvb2wgc3luY2hyb25vdXMpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIGlmIChjb250
ZXh0LT5pc0RvY3VtZW50KCkpIHsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBMb2NhbEZpbGVTeXN0
ZW06OnJlcXVlc3RGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFz
eW5jRmkKICAgICAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCA9IHN0YXRpY19jYXN0
PFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsKICAgICAgICAgV29ya2VyTG9hZGVyUHJveHkqIHdv
cmtlckxvYWRlclByb3h5ID0gJndvcmtlckNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQ
cm94eSgpOwogICAgICAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXIgPSBzdGF0aWNfY2FzdDxX
ZWJXb3JrZXJCYXNlKj4od29ya2VyTG9hZGVyUHJveHkpOwotICAgICAgICB3ZWJXb3JrZXItPm9w
ZW5GaWxlU3lzdGVtKHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBzaXpl
LCBuZXcgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzLCBjb250ZXh0KSk7Cisg
ICAgICAgIHdlYldvcmtlci0+b3BlbkZpbGVTeXN0ZW0oc3RhdGljX2Nhc3Q8V2ViRmlsZVN5c3Rl
bTo6VHlwZT4odHlwZSksIHNpemUsIG5ldyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxs
YmFja3MsIGNvbnRleHQsIHN5bmNocm9ub3VzKSwgc3luY2hyb25vdXMpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1w
bC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNw
cAppbmRleCA2YjhjODBmNzA1ZmQ3YzAwZGJhZWM0Y2IxNjk5ZDRhZDc5ZWI5MDRkLi5mNDRlOGYx
Yjk4MzFmMWY1NzY0ZWEyOTI0MDQ4NzZlOWJkNWQ3ZjViIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcApAQCAtNDUsOSArNDUsMTAg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzSW1wbDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsOjpX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBib29sIHN5bmNocm9ub3VzKQogICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwg
bV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3N5bmNocm9ub3VzKHN5bmNocm9ub3VzKQogewog
ICAgIEFTU0VSVChtX2NhbGxiYWNrcyk7CiB9CkBAIC03OSw3ICs4MCw3IEBAIHZvaWQgV2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGw6OmRpZFJlYWREaXJlY3RvcnkoY29uc3QgV2ViVmVjdG9yPFdl
YkZpbGVTeXN0ZW1FCiB2b2lkIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsOjpkaWRPcGVuRmls
ZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgcGF0aCkKIHsK
ICAgICBpZiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpCi0gICAg
ICAgIG1fY2FsbGJhY2tzLT5kaWRPcGVuRmlsZVN5c3RlbShuYW1lLCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6Y3JlYXRlKG1fY29udGV4dCwgcGF0aCkpOworICAgICAgICBtX2NhbGxi
YWNrcy0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OmNyZWF0ZShtX2NvbnRleHQsIHBhdGgsIG1fc3luY2hyb25vdXMpKTsKICAgICBlbHNlCiAg
ICAgICAgIG1fY2FsbGJhY2tzLT5kaWRPcGVuRmlsZVN5c3RlbShuYW1lLCBBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bTo6Y3JlYXRlKHBhdGgpKTsKICAgICBkZWxldGUgdGhpczsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaAppbmRleCA5NDdmZDJm
OGM3M2JkZjgyMDhmNGQwYWUyYWMzNmIyZjZiOTFkNzExLi43NWZhMmJiOTk0ZjA2ZTQyNjg0N2Yw
N2FiMjIyZmJlYWJmODJmMWQyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZp
bGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzSW1wbC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFdlYlN0cmluZzsK
IAogY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoUGFz
c093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+LCBXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiA9IDApOworICAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBs
KFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiwgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogPSAwLCBib29sIHN5bmNocm9ub3VzID0gZmFsc2UpOwog
ICAgIHZpcnR1YWwgfldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3VjY2VlZCgpOwpAQCAtNjMsNiArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
VXNlZCBmb3Igd29ya2VyJ3Mgb3BlbkZpbGVTeXN0ZW0gY2FsbGJhY2tzLgogICAgIFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAgICBib29sIG1fc3luY2hyb25v
dXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtl
ckJhc2UuY3BwCmluZGV4IGY0ZjU5MjE1ZDBmZjBmOTIyYzAwYWFmNzYwYzQ5NTY4NzNjOWQyZDcu
LmRlNDg1OGM5YTg2ZDk3MTk2MzUyNWUyMDU1NzQ0YTk5OGMxOTQ5NjQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJCYXNlLmNwcApAQCAtMjM3LDExICsyMzcsMjMgQEAgYm9vbCBXZWJXb3Jr
ZXJCYXNlOjphbGxvd0RhdGFiYXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHIKIH0KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLXZvaWQgV2ViV29ya2Vy
QmFzZTo6b3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcg
c2l6ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBXZWJXb3JrZXJC
YXNlOjpvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBz
aXplLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGJvb2wgc3luY2hyb25vdXMp
CiB7CisgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IG1fd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCk7CiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogY29udHJvbGxlciA9IFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KCk7Ci0gICAgUmVmUHRyPFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSA9IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OmNyZWF0ZSh0aGlzLCBjb250cm9sbGVyLT53b3JrZXJDb250ZXh0KCksIGNhbGxi
YWNrcyk7Ci0gICAgYnJpZGdlLT5wb3N0T3BlbkZpbGVTeXN0ZW1Ub01haW5UaHJlYWQoY29tbW9u
Q2xpZW50KCksIHR5cGUsIHNpemUsIG9wZW5GaWxlU3lzdGVtTW9kZSk7CisgICAgV29ya2VyQ29u
dGV4dCogd29ya2VyQ29udGV4dCA9IGNvbnRyb2xsZXItPndvcmtlckNvbnRleHQoKTsKKworICAg
IC8vIENyZWF0ZSBhIHVuaXF1ZSBtb2RlIGZvciB0aGlzIG9wZW5GaWxlU3lzdGVtIGNhbGwuCisg
ICAgU3RyaW5nIG1vZGUgPSBvcGVuRmlsZVN5c3RlbU1vZGU7CisgICAgbW9kZS5hcHBlbmQoU3Ry
aW5nOjpudW1iZXIocnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7CisKKyAgICBSZWZQdHI8V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlID0gV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZTo6Y3JlYXRlKHRoaXMsIHdvcmtlckNvbnRleHQsIGNhbGxiYWNrcyk7Cisg
ICAgYnJpZGdlLT5wb3N0T3BlbkZpbGVTeXN0ZW1Ub01haW5UaHJlYWQoY29tbW9uQ2xpZW50KCks
IHR5cGUsIHNpemUsIG1vZGUpOworCisgICAgaWYgKHN5bmNocm9ub3VzKSB7CisgICAgICAgIGlm
IChydW5Mb29wLnJ1bkluTW9kZSh3b3JrZXJDb250ZXh0LCBtb2RlKSA9PSBNZXNzYWdlUXVldWVU
ZXJtaW5hdGVkKQorICAgICAgICAgICAgYnJpZGdlLT5zdG9wKCk7CisgICAgfQogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5oIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgKaW5kZXggMWY0YmMwMzE2OTg4ZDAyMDQ1
YzA0NjZhZWU3NmJjMDlhZWYwYjQwOC4uZmU4NGJmNzhmYTAwNjAwNGEyYzMxMDBjNTgyZTU3Mzc1
ZWQyMjJjYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmgKQEAgLTkzLDcgKzkzLDcg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIC8vIFJlcXVlc3RzIHRv
IG9wZW4gYSBmaWxlIHN5c3RlbSBmb3IgdGhpcyB3b3JrZXIuIChOb3RlIHRoYXQgdGhpcyBpcyBu
b3QgdGhlIGltcGxlbWVudGF0aW9uIGZvciBXZWJGcmFtZUNsaWVudDo6b3BlbkZpbGVTeXN0ZW0u
KQotICAgIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25n
IHNpemUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICB2b2lkIG9wZW5GaWxlU3lzdGVt
KFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzKiwgYm9vbCBzeW5jaHJvbm91cyk7CiAjZW5kaWYKIAogICAgIC8vIEV4ZWN1dGVzIHRoZSBn
aXZlbiB0YXNrIG9uIHRoZSBtYWluIHRocmVhZC4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggYjIxYjcwOWU3NmY5
YzlhNGNhMzBjZjJlMmViNDFiODg5OWRlZjg5Yi4uNmMyZDRhZTczNGIxMzg4MzE1NWU4NzU2MWZh
YzNlN2Y5NGQyNmRjZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJB
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTUzLDE3ICs1MywxNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyIGZpbGVTeXN0ZW1PcGVyYXRpb25zTW9kZVtd
ID0gImZpbGVTeXN0ZW1PcGVyYXRpb25zTW9kZSI7CiAKLVdvcmtlckFzeW5jRmlsZVN5c3RlbUNo
cm9taXVtOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHJvb3RQYXRoKQorV29ya2VyQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW06OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGJvb2wgc3luY2hyb25v
dXMpCiAgICAgOiBBc3luY0ZpbGVTeXN0ZW0ocm9vdFBhdGgpCiAgICAgLCBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoY29udGV4dCkKICAgICAsIG1fd2ViRmlsZVN5c3RlbShXZWJLaXQ6OndlYktp
dENsaWVudCgpLT5maWxlU3lzdGVtKCkpCi0gICAgLCBtX21vZGUoZmlsZVN5c3RlbU9wZXJhdGlv
bnNNb2RlKQorICAgICwgbV93b3JrZXJDb250ZXh0KHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQq
Pihjb250ZXh0KSkKKyAgICAsIG1fc3luY2hyb25vdXMoc3luY2hyb25vdXMpCiB7CiAgICAgQVNT
RVJUKG1fd2ViRmlsZVN5c3RlbSk7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNXb3JrZXJDb250ZXh0KCkpOwogCi0gICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4
dCA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KTsKLSAgICBXb3JrZXJMb2Fk
ZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHkgPSAmd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndv
cmtlckxvYWRlclByb3h5KCk7CisgICAgV29ya2VyTG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclBy
b3h5ID0gJm1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCk7CiAg
ICAgbV93b3JrZXIgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4od29ya2VyTG9hZGVyUHJv
eHkpOwogfQogCkBAIC03MSw0OSArNzEsNjIgQEAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06On5Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSgpCiB7CiB9CiAKK2Jvb2wgV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkKK3sK
KyAgICBpZiAoIW1fYnJpZGdlRm9yQ3VycmVudE9wZXJhdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+
IGJyaWRnZSA9IG1fYnJpZGdlRm9yQ3VycmVudE9wZXJhdGlvbi5yZWxlYXNlKCk7CisgICAgaWYg
KG1fd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPnJ1bkxvb3AoKS5ydW5Jbk1vZGUobV93b3JrZXJD
b250ZXh0LCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKSA9PSBNZXNzYWdlUXVldWVUZXJtaW5h
dGVkKSB7CisgICAgICAgIGJyaWRnZS0+c3RvcCgpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNo
cm9taXVtOjptb3ZlKGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFj
a3MpLT5wb3N0TW92ZVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRl
c3RpbmF0aW9uUGF0aCwgbV9tb2RlKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RNb3ZlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3Rl
bSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9u
KTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y29weShjb25zdCBT
dHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0ZVdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENvcHlUb01haW5U
aHJlYWQobV93ZWJGaWxlU3lzdGVtLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIG1fbW9k
ZSk7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3Mp
LT5wb3N0Q29weVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3Rp
bmF0aW9uUGF0aCwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3JlYXRl
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0UmVtb3ZlVG9N
YWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9tb2RlKTsKKyAgICBjcmVhdGVXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RSZW1vdmVUb01haW5U
aHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsK
IH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVhZE1ldGFkYXRhKGNv
bnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKLSAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNh
bGxiYWNrcyktPnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBw
YXRoLCBtX21vZGUpOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uo
Y2FsbGJhY2tzKS0+cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0s
IHBhdGgsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBl
eGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3Mp
LT5wb3N0Q3JlYXRlRmlsZVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIGV4Y2x1
c2l2ZSwgbV9tb2RlKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
KGNhbGxiYWNrcyktPnBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwg
cGF0aCwgZXhjbHVzaXZlLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZShjYWxsYmFja3MpLT5wb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFkKG1fd2ViRmls
ZVN5c3RlbSwgcGF0aCwgZXhjbHVzaXZlLCBtX21vZGUpOworICAgIGNyZWF0ZVdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFp
blRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIGV4Y2x1c2l2ZSwgbV9tb2RlRm9yQ3VycmVu
dE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmZp
bGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdEZpbGVFeGlzdHNUb01haW5UaHJlYWQobV93ZWJGaWxl
U3lzdGVtLCBwYXRoLCBtX21vZGUpOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdEZpbGVFeGlzdHNUb01haW5UaHJlYWQobV93ZWJGaWxl
U3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBXb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
LSAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBv
c3REaXJlY3RvcnlFeGlzdHNUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBtX21v
ZGUpOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tz
KS0+cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgs
IG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUNocm9taXVtOjpyZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVhdGVXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RSZWFkRGlyZWN0b3J5
VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9tb2RlKTsKKyAgICBjcmVhdGVX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RSZWFkRGlyZWN0
b3J5VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9tb2RlRm9yQ3VycmVudE9w
ZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0
ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCkBAIC0xMjMsNyArMTM2LDEzIEBAIHZvaWQgV29y
a2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJD
bGllbnQqLCBjb25zdCBTCiAKIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZT4gV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UoUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKLSAgICByZXR1cm4gV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
Y3JlYXRlKG1fd29ya2VyLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG5ldyBXZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBBU1NFUlQoIW1fc3luY2hyb25vdXMg
fHwgIW1fYnJpZGdlRm9yQ3VycmVudE9wZXJhdGlvbi5nZXQoKSk7CisKKyAgICBtX21vZGVGb3JD
dXJyZW50T3BlcmF0aW9uID0gZmlsZVN5c3RlbU9wZXJhdGlvbnNNb2RlOworICAgIG1fbW9kZUZv
ckN1cnJlbnRPcGVyYXRpb24uYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fd29ya2VyQ29udGV4dC0+
dGhyZWFkKCktPnJ1bkxvb3AoKS5jcmVhdGVVbmlxdWVJZCgpKSk7CisKKyAgICBtX2JyaWRnZUZv
ckN1cnJlbnRPcGVyYXRpb24gPSBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVh
dGUobV93b3JrZXIsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbmV3IFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgcmV0dXJuIG1fYnJpZGdlRm9y
Q3VycmVudE9wZXJhdGlvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oCmluZGV4
IDdjZDM0Yjk3ZmE0ZTc0OWUxZWJmOGJjM2Q2OWEwOWYzYzZmOTYyNDYuLjVmYzc2NDZhZDliNjE1
ZWExZmMzY2E0OGI3MjgzNWJiNDg0YzdmMTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKQEAgLTQ4LDE2ICs0OCwyMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBXb3JrZXJDb250ZXh0OwogCiBjbGFz
cyBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW0g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgp
CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiByb290UGF0aCwgYm9vbCBzeW5j
aHJvbm91cykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0oY29udGV4dCwgcm9vdFBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShjb250ZXh0LCByb290UGF0
aCwgc3luY2hyb25vdXMpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5Xb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bSgpOwogCisgICAgLy8gUnVucyBvbmUgcGVuZGluZyBvcGVyYXRpb24gKHRv
IHdhaXQgZm9yIGNvbXBsZXRpb24gaW4gdGhlIHN5bmMtbW9kZSkuCisgICAgdmlydHVhbCBib29s
IHdhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgbW92ZShj
b25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9pZCBj
b3B5KGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CkBAIC03MCwxMyArNzQsMTcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKIAogcHJpdmF0
ZToKLSAgICBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiByb290UGF0aCk7CisgICAgV29ya2VyQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgs
IGJvb2wgc3luY2hyb25vdXMpOworCiAgICAgUGFzc1JlZlB0cjxXZWJLaXQ6OldvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UoUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKIAogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5c3RlbTsKICAgICBXZWJLaXQ6OldlYldvcmtlckJhc2Uq
IG1fd29ya2VyOwotICAgIFN0cmluZyBtX21vZGU7CisgICAgV29ya2VyQ29udGV4dCogbV93b3Jr
ZXJDb250ZXh0OworICAgIFJlZlB0cjxXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U+IG1fYnJpZGdlRm9yQ3VycmVudE9wZXJhdGlvbjsKKyAgICBTdHJpbmcgbV9tb2RlRm9y
Q3VycmVudE9wZXJhdGlvbjsKKyAgICBib29sIG1fc3luY2hyb25vdXM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="59660"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>