<?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>124819</bug_id>
          
          <creation_ts>2013-11-24 12:30:52 -0800</creation_ts>
          <short_desc>DatabaseProcess: Add &quot;UniqueIDBDatabase&quot; that multiple WebProcesses can connect to</short_desc>
          <delta_ts>2013-11-24 16:19:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124521</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>mitz</cc>
    
    <cc>rego+ews</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>953855</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-24 12:30:52 -0800</bug_when>
    <thetext>DatbaseProcess: Add &quot;UniquedIDBDatabase&quot; that multiple WebProcesses can connect to</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953857</commentid>
    <comment_count>1</comment_count>
      <attachid>217764</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-24 12:41:28 -0800</bug_when>
    <thetext>Created attachment 217764
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953858</commentid>
    <comment_count>2</comment_count>
      <attachid>217764</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-24 12:55:08 -0800</bug_when>
    <thetext>Comment on attachment 217764
Patch v1

Attachment 217764 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/35328266</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953861</commentid>
    <comment_count>3</comment_count>
      <attachid>217765</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-24 13:26:16 -0800</bug_when>
    <thetext>Created attachment 217765
Patch v2 - Fix includes leftover from a stash merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953863</commentid>
    <comment_count>4</comment_count>
      <attachid>217765</attachid>
    <who name="">mitz</who>
    <bug_when>2013-11-24 13:47:39 -0800</bug_when>
    <thetext>Comment on attachment 217765
Patch v2 - Fix includes leftover from a stash merge.

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

&gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:81
&gt; +    RefPtr&lt;UniqueIDBDatabase&gt; database = m_idbDatabases.get(identifier);
&gt; +    if (database)
&gt; +        return database;
&gt; +
&gt; +    database = UniqueIDBDatabase::create(identifier);
&gt; +    m_idbDatabases.set(identifier, database);
&gt; +
&gt; +    return database.release();

Is there a way to do this without hashing twice in the not-found case? I think there is (using HashMap::find).

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:70
&gt; +    UniqueIDBDatabaseIdentifier m_databaseIdentifier;

Why do we need this as a member variable here and can’t rely on getting the identifier from the m_uniqueIDBDatabase member?

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseIdentifier.h:58
&gt; +    mutable String m_identifierString;

This doesn’t appear to be used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953865</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-24 15:10:32 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/159737</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953869</commentid>
    <comment_count>6</comment_count>
      <attachid>217765</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-11-24 16:19:47 -0800</bug_when>
    <thetext>Comment on attachment 217765
Patch v2 - Fix includes leftover from a stash merge.

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

&gt;&gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:81
&gt;&gt; +    RefPtr&lt;UniqueIDBDatabase&gt; database = m_idbDatabases.get(identifier);
&gt;&gt; +    if (database)
&gt;&gt; +        return database;
&gt;&gt; +
&gt;&gt; +    database = UniqueIDBDatabase::create(identifier);
&gt;&gt; +    m_idbDatabases.set(identifier, database);
&gt;&gt; +
&gt;&gt; +    return database.release();
&gt; 
&gt; Is there a way to do this without hashing twice in the not-found case? I think there is (using HashMap::find).

Here’s a good way to write it without hashing twice:

    RefPtr&lt;UniqueIDDatabase&gt;&amp; database = m_idbDatabases.add(identifier, nullptr).iterator-&gt;value;
    if (!database)
        database = UniqueIDBDatabase::create(identifier);
    return database;

We use this idiom a lot.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:66
&gt; +    m_databaseIdentifier = std::move(UniqueIDBDatabaseIdentifier(databaseName, openingOrigin, mainFrameOrigin));

I don’t think this std::move is needed or helpful.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217764</attachid>
            <date>2013-11-24 12:41:28 -0800</date>
            <delta_ts>2013-11-24 13:26:16 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36083</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNTU5ZTgxLi5iNGQ3NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMTEtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIERhdGFiYXNlUHJvY2VzczogQWRkICJVbmlxdWVJREJEYXRhYmFzZSIgdGhhdCBtdWx0aXBs
ZSBXZWJQcm9jZXNzZXMgY2FuIGNvbm5lY3QgdG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6fklEQkRhdGFi
YXNlQmFja2VuZCk6IFVucmVnaXN0ZXIgZnJvbSB0aGUgSURCRmFjdG9yeS4KKwogMjAxMy0xMS0y
MyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcAppbmRleCA4
OWI2Yzc3Li5mZDk5NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKQEAgLTEyNCw2ICsxMjQsNyBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZDo6ZGlkT3BlbkludGVybmFsQXN5bmMoY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0YSYgbWV0YWRhdAogCiBJREJEYXRhYmFzZUJhY2tlbmQ6On5JREJEYXRhYmFzZUJh
Y2tlbmQoKQogeworICAgIG1fZmFjdG9yeS0+cmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKG1faWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpjcmVhdGVPYmplY3RTdG9y
ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQp
CkBAIC00NDcsNyArNDQ4LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5Db25uZWN0
aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFAKICAgICBwcm9jZXNz
UGVuZGluZ0NhbGxzKCk7CiB9CiAKLQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5Db25u
ZWN0aW9uSW50ZXJuYWwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbikKIHsKICAgICBBU1NFUlQobV9wZW5k
aW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkNjNmYjVjLi42NDFiZmY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTMtMTEtMjQgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIERhdGFiYXNlUHJvY2VzczogQWRkICJVbmlx
dWVJREJEYXRhYmFzZSIgdGhhdCBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgY2FuIGNvbm5lY3QgdG8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuaXF1ZUlE
QkRhdGFiYXNlIGluc3RhbmNlcyBhcmUgcGVyLURhdGFiYXNlUHJvY2Vzcywgc28gaXQgbWFuYWdl
cyB0aGUgc2V0IG9mIHRoZW0uCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6Z2V0T3JDcmVhdGVV
bmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6cmVt
b3ZlVW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFz
ZVByb2Nlc3MuaDoKKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKworICAgICAgICBTdGFydCBmb3J3YXJkaW5nIHRoaW5ncyBhbG9u
ZyB0byB0aGUgYXBwcm9wcmlhdGUgVW5pcXVlSURCRGF0YWJhc2UuCisgICAgICAgICogRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6fkRhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJREJD
b25uZWN0aW9uOjpkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpnZXRPckVzdGFibGlz
aElEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5oOgorCisgICAgICAgIEEgY2xhc3MgdGhh
dCByZXByZXNlbnRzIGEgc2luZ2xlIGNvbmNyZXRlIElEQiBkYXRhYmFzZSB0aGF0IG11bHRpcGxl
IFdlYlByb2Nlc3NlcyBjYW4gY29ubmVjdCB0by4KKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6On5VbmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlx
dWVJREJEYXRhYmFzZTo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpV
bmlxdWVJREJEYXRhYmFzZTo6Z2V0SURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgICogRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2Vi
S2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6OmlkZW50aWZpZXIpOgorCisgICAgICAgIEEgY2xhc3MgdG8gaGVscCB1bmlx
dWVseSBpZGVudGlmeSBhbiBJREJEYXRhYmFzZSB0aGF0IGNhbiBiZSBleHBhbmRlZCBhcyBuZWVk
ZWQuCisgICAgICAgIEltcG9ydGFudGx5LCBpdCBrbm93cyBob3cgdG8gYmUgdXNlZCBhcyBhIGtl
eSBpbiBhIEhhc2hNYXAuCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VW5p
cXVlSURCRGF0YWJhc2VJZGVudGlmaWVyOjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlm
aWVyOjpoYXNoKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVy
Ojppc051bGwpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBEYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFz
ZU5hbWUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI6Om9w
ZW5pbmdPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZp
ZXI6Om1haW5GcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNl
SWRlbnRpZmllckhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFz
ZUlkZW50aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFi
YXNlSWRlbnRpZmllckhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisKKyAgICAgICAgKiBTaGFy
ZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCRmFjdG9yeUJhY2tlbmQ6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5
QmFja2VuZDo6cmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKToKKworICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMy0xMS0yMiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycywgc3RhcnRpbmcgd2l0aCB0aGUgZGF0YWJhc2UgcGF0aC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggY2Uz
YzM4My4uMmRkNDUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEYXRhYmFz
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKIAogI2lmIEVOQUJMRShEQVRBQkFT
RV9QUk9DRVNTKQogCkBAIC02OCw2ICs2OSwyNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpTdAog
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS0+c3RvcCgpOwogfQogCitQYXNzUmVmUHRyPFVuaXF1ZUlE
QkRhdGFiYXNlPiBEYXRhYmFzZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Uo
Y29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UgPSBtX2lkYkRhdGFiYXNlcy5nZXQoaWRl
bnRpZmllcik7CisgICAgaWYgKGRhdGFiYXNlKQorICAgICAgICByZXR1cm4gZGF0YWJhc2U7CisK
KyAgICBkYXRhYmFzZSA9IFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGUoaWRlbnRpZmllcik7Cisg
ICAgbV9pZGJEYXRhYmFzZXMuc2V0KGlkZW50aWZpZXIsIGRhdGFiYXNlKTsKKworICAgIHJldHVy
biBkYXRhYmFzZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpyZW1vdmVV
bmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UpCit7Cisg
ICAgY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyID0gZGF0YWJh
c2UuaWRlbnRpZmllcigpOworICAgIEFTU0VSVChtX2lkYkRhdGFiYXNlcy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisKKyAgICAvLyBGSVhNRTogUGVyZm9ybSBuZWNlc3Nhcnkgc2h1dCBkb3duIG9m
IHRoZSB1bmlxdWUgZGF0YWJhc2UgYmVmb3JlIGl0IGlzIGFjdHVhbGx5IGRlc3Ryb3llZC4KKyAg
ICBtX2lkYkRhdGFiYXNlcy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzOjppbml0aWFsaXplRGF0YWJhc2VQcm9jZXNzKGNvbnN0IERhdGFiYXNlUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2luZGV4ZWREYXRhYmFzZURp
cmVjdG9yeSA9IHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCmluZGV4IDYzYWNk
ZDUuLmIxMDRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmgKQEAgLTI5LDEwICsyOSwxMiBAQAogI2lmIEVOQUJMRShEQVRBQkFTRV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCisjaW5jbHVkZSAiVW5pcXVlSURC
RGF0YWJhc2VJZGVudGlmaWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKIAog
c3RydWN0IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIApAQCAtNDMsNiArNDUs
OSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OyB9CiAKKyAgICBQ
YXNzUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIHZvaWQgcmVtb3ZlVW5p
cXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2UmKTsKKwogcHJpdmF0ZToKICAg
ICBEYXRhYmFzZVByb2Nlc3MoKTsKICAgICB+RGF0YWJhc2VQcm9jZXNzKCk7CkBAIC02Niw2ICs3
MSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+PiBtX2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnM7CiAKICAgICBTdHJp
bmcgbV9pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CisKKyAgICBIYXNoTWFwPFVuaXF1ZUlEQkRh
dGFiYXNlSWRlbnRpZmllciwgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPj4gbV9pZGJEYXRhYmFz
ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uaAppbmRleCAwYjlhOTdmLi45NmVjMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbl9oCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKIAogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNSw4ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1jbGFzcyBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOwotCiBjbGFzcyBEYXRhYmFz
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhYmFzZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+LCBwdWJsaWMgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBw
dWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJD
b25uZWN0aW9uLmNwcAppbmRleCA2YzgyNWIzLi5lMTg4NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViSURCU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+
CkBAIC00NSwzMiArNDcsMzYgQEAgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6RGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbihEYXRhYmFzZVRvV2ViUHJvY2Vzc0MKIAogRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbjo6fkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24oKQogewor
ICAgIEFTU0VSVCghbV91bmlxdWVJREJEYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbjo6ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKQogewotICAgIC8v
IERvIGFueSBuZWNlc3NhcnkgY2xlYW51cCB3b3JrIGhlcmUuCisgICAgbV91bmlxdWVJREJEYXRh
YmFzZS0+dW5yZWdpc3RlckNvbm5lY3Rpb24oKnRoaXMpOworICAgIG1fdW5pcXVlSURCRGF0YWJh
c2UuY2xlYXIoKTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjplc3Rh
Ymxpc2hDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFp
bkZyYW1lT3JpZ2luKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBvbmNlLCBzbyB0aGUgc3RvcmVkIGRhdGFiYXNlIG5hbWUgc2hvdWxkIHN0aWxsIGJlIG51bGwu
CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UsIHNvIHRoZSBz
dG9yZWQgZGF0YWJhc2UgaWRlbnRpZmllciBzaG91bGQgc3RpbGwgYmUgbnVsbC4KICAgICAvLyBB
bHNvLCBpdCBpcyBpbnZhbGlkIHRvIHNldCB0aGUgc3RvcmVkIGRhdGFiYXNlIG5hbWUgdG8gdGhl
IG51bGwgc3RyaW5nLgotICAgIEFTU0VSVChtX2RhdGFiYXNlTmFtZS5pc051bGwoKSk7CisgICAg
QVNTRVJUKG1fZGF0YWJhc2VJZGVudGlmaWVyLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoIWRhdGFi
YXNlTmFtZS5pc051bGwoKSk7CiAKLSAgICBtX2RhdGFiYXNlTmFtZSA9IGRhdGFiYXNlTmFtZTsK
LSAgICBtX29wZW5pbmdPcmlnaW4gPSBvcGVuaW5nT3JpZ2luOwotICAgIG1fbWFpbkZyYW1lT3Jp
Z2luID0gbWFpbkZyYW1lT3JpZ2luOworICAgIG1fZGF0YWJhc2VJZGVudGlmaWVyID0gc3RkOjpt
b3ZlKFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZU5hbWUsIG9wZW5pbmdPcmln
aW4sIG1haW5GcmFtZU9yaWdpbikpOworCisgICAgbV91bmlxdWVJREJEYXRhYmFzZSA9IERhdGFi
YXNlUHJvY2Vzczo6c2hhcmVkKCkuZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShtX2RhdGFi
YXNlSWRlbnRpZmllcik7CisgICAgbV91bmlxdWVJREJEYXRhYmFzZS0+cmVnaXN0ZXJDb25uZWN0
aW9uKCp0aGlzKTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpnZXRP
ckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEodWludDY0X3QgcmVxdWVzdElEKQogewotICAg
IC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBpcyBzdWNjZXNzZnVsbHkgY2FsbGVkIGJ5IG1lc3NhZ2lu
ZyBmcm9tIHRoZSBXZWJQcm9jZXNzLCBhbmQgY2FsbHMgYmFjayB3aXRoIGR1bW15IGRhdGEuCi0g
ICAgLy8gTmVlZHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4KKyAgICBBU1NFUlQobV91bmlxdWVJREJE
YXRhYmFzZSk7CiAKLSAgICBJREJEYXRhYmFzZU1ldGFkYXRhIGRhdGE7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkR2V0T3JFc3RhYmxpc2hJREJEYXRhYmFz
ZU1ldGFkYXRhKHJlcXVlc3RJRCwgZmFsc2UsIGRhdGEpKTsKKyAgICBSZWZQdHI8RGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlzKTsKKyAgICBtX3VuaXF1ZUlEQkRh
dGFiYXNlLT5nZXRJREJEYXRhYmFzZU1ldGFkYXRhKFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGJv
b2wgc3VjY2VzcywgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpIHsKKyAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlk
R2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKHJlcXVlc3RJRCwgc3VjY2VzcywgbWV0
YWRhdGEpKTsKKyAgICB9KTsKIH0KIAogQ29yZUlQQzo6Q29ubmVjdGlvbiogRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJ
REJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaAppbmRleCA5MzM1MzcwLi45N2I5OTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaApAQCAtMzEsMTEg
KzMxLDEzIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFT
RV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCisjaW5jbHVkZSAi
VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEYXRhYmFzZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKIAogY2xhc3MgRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFiYXNlUHJvY2Vzc0lE
QkNvbm5lY3Rpb24+LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CkBA
IC02NSw5ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgUmVmPERhdGFiYXNlVG9XZWJQcm9jZXNzQ29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI7CiAKLSAgICBTdHJpbmcgbV9kYXRhYmFzZU5hbWU7Ci0gICAgU2VjdXJpdHlPcmln
aW5EYXRhIG1fb3BlbmluZ09yaWdpbjsKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgbV9tYWluRnJh
bWVPcmlnaW47CisgICAgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyIG1fZGF0YWJhc2VJZGVu
dGlmaWVyOworCisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBtX3VuaXF1ZUlEQkRhdGFi
YXNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZjZmNDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCisKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisKKyNpbmNsdWRl
ICJEYXRhYmFzZVByb2Nlc3MuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworVW5pcXVlSURCRGF0
YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitV
bmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlEQkRhdGFiYXNlKCkKK3sKK30KKwordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cmVnaXN0ZXJDb25uZWN0aW9uKERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5z
KCZjb25uZWN0aW9uKSk7CisgICAgbV9jb25uZWN0aW9ucy5hZGQoJmNvbm5lY3Rpb24pOworfQor
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihEYXRhYmFzZVBy
b2Nlc3NJREJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX2Nvbm5lY3Rp
b25zLmNvbnRhaW5zKCZjb25uZWN0aW9uKSk7CisgICAgbV9jb25uZWN0aW9ucy5yZW1vdmUoJmNv
bm5lY3Rpb24pOworCisgICAgaWYgKG1fY29ubmVjdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICBE
YXRhYmFzZVByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZVVuaXF1ZUlEQkRhdGFiYXNlKCp0aGlzKTsK
K30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0SURCRGF0YWJhc2VNZXRhZGF0YShzdGQ6
OmZ1bmN0aW9uPHZvaWQoYm9vbCwgY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYp
PiBjb21wbGV0aW9uQ2FsbGJhY2spCit7CisgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIGlzIHN1
Y2Nlc3NmdWxseSBjYWxsZWQgYnkgbWVzc2FnaW5nIGZyb20gdGhlIFdlYlByb2Nlc3MsIGFuZCBj
YWxscyBiYWNrIHdpdGggZHVtbXkgZGF0YS4KKyAgICAvLyBOZWVkcyByZWFsIGltcGxlbWVudGF0
aW9uLgorCisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YTsKKyAgICBjb21wbGV0aW9u
Q2FsbGJhY2soZmFsc2UsIG1ldGFkYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uN2I5YmZkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtMCwwICsxLDc1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBVbmlxdWVJREJEYXRhYmFzZV9oCisjZGVmaW5lIFVuaXF1
ZUlEQkRhdGFiYXNlX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUo
REFUQUJBU0VfUFJPQ0VTUykKKworI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjsKKworc3RydWN0IFNlY3VyaXR5T3JpZ2lu
RGF0YTsKKworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmlx
dWVJREJEYXRhYmFzZT4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVuaXF1ZUlE
QkRhdGFiYXNlPiBjcmVhdGUoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVbmlxdWVJREJEYXRh
YmFzZShpZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgflVuaXF1ZUlEQkRhdGFiYXNlKCk7CisK
KyAgICBjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9u
KERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb25u
ZWN0aW9uKERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgZ2V0SURC
RGF0YWJhc2VNZXRhZGF0YShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCwgY29uc3QgV2ViQ29yZTo6
SURCRGF0YWJhc2VNZXRhZGF0YSYpPiBjb21wbGV0aW9uQ2FsbGJhY2spOworCitwcml2YXRlOgor
ICAgIFVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYp
OworCisgICAgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKworICAg
IEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rp
b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisjZW5kaWYgLy8gVW5p
cXVlSURCRGF0YWJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUlkZW50aWZp
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmOGJkN2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1Vu
aXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUlkZW50
aWZpZXIuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJB
U0VfUFJPQ0VTUykKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1VuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcjo6VW5pcXVlSURC
RGF0YWJhc2VJZGVudGlmaWVyKCkKK3sKK30KKworVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVy
OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4pCisgICAgOiBtX2RhdGFiYXNlTmFtZShkYXRhYmFz
ZU5hbWUpCisgICAgLCBtX29wZW5pbmdPcmlnaW4ob3BlbmluZ09yaWdpbikKKyAgICAsIG1fbWFp
bkZyYW1lT3JpZ2luKG1haW5GcmFtZU9yaWdpbikKK3sKKyAgICAvLyBXaGlsZSBpdCBpcyB2YWxp
ZCB0byBoYXZlIGFuIGVtcHR5IGRhdGFiYXNlIG5hbWUsIGl0IGlzIG5vdCB2YWxpZCB0byBoYXZl
IGEgbnVsbCBvbmUuCisgICAgQVNTRVJUKCFtX2RhdGFiYXNlTmFtZS5pc051bGwoKSk7Cit9CisK
K1VuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcjo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVy
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICA6IG1fZGF0YWJhc2VOYW1lKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQoreworfQorCitib29sIFVuaXF1ZUlEQkRhdGFiYXNl
SWRlbnRpZmllcjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAoreworICAgIHJldHVy
biBtX2RhdGFiYXNlTmFtZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworfQorCit1bnNpZ25l
ZCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI6Omhhc2goKSBjb25zdAoreworICAgIHVuc2ln
bmVkIGhhc2hDb2Rlc1s3XSA9IHsKKyAgICAgICAgbV9kYXRhYmFzZU5hbWUuaW1wbCgpID8gbV9k
YXRhYmFzZU5hbWUuaW1wbCgpLT5oYXNoKCkgOiAwLAorICAgICAgICBtX29wZW5pbmdPcmlnaW4u
cHJvdG9jb2wuaW1wbCgpID8gbV9vcGVuaW5nT3JpZ2luLnByb3RvY29sLmltcGwoKS0+aGFzaCgp
IDogMCwKKyAgICAgICAgbV9vcGVuaW5nT3JpZ2luLmhvc3QuaW1wbCgpID8gbV9vcGVuaW5nT3Jp
Z2luLmhvc3QuaW1wbCgpLT5oYXNoKCkgOiAwLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9vcGVuaW5nT3JpZ2luLnBvcnQpLAorICAgICAgICBtX21haW5GcmFtZU9yaWdpbi5wcm90
b2NvbC5pbXBsKCkgPyBtX21haW5GcmFtZU9yaWdpbi5wcm90b2NvbC5pbXBsKCktPmhhc2goKSA6
IDAsCisgICAgICAgIG1fbWFpbkZyYW1lT3JpZ2luLmhvc3QuaW1wbCgpID8gbV9tYWluRnJhbWVP
cmlnaW4uaG9zdC5pbXBsKCktPmhhc2goKSA6IDAsCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX21haW5GcmFtZU9yaWdpbi5wb3J0KQorICAgIH07CisgICAgcmV0dXJuIFN0cmluZ0hh
c2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKK30KKworYm9v
bCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgLy8g
T25seSBhIGRlZmF1bHQgY29uc3RydWN0ZWQgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyIGNh
biBoYXZlIGEgbnVsbCBkYXRhYmFzZSBuYW1lLgorICAgIHJldHVybiBtX2RhdGFiYXNlTmFtZS5p
c051bGwoKTsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRl
bnRpZmllciYgYSwgY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBiKQoreworICAg
IGlmICgmYSA9PSAmYikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gYS5kYXRh
YmFzZU5hbWUoKSA9PSBiLmRhdGFiYXNlTmFtZSgpCisgICAgICAgICYmIGEub3BlbmluZ09yaWdp
bigpID09IGIub3BlbmluZ09yaWdpbigpCisgICAgICAgICYmIGEubWFpbkZyYW1lT3JpZ2luKCkg
PT0gYi5tYWluRnJhbWVPcmlnaW4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L1VuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODJmZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUlk
ZW50aWZpZXIuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVbmlxdWVJ
REJEYXRhYmFzZUlkZW50aWZpZXJfaAorI2RlZmluZSBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZp
ZXJfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVW5pcXVl
SURCRGF0YWJhc2VJZGVudGlmaWVyIHsKK3B1YmxpYzoKKyAgICBVbmlxdWVJREJEYXRhYmFzZUlk
ZW50aWZpZXIoKTsKKyAgICBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4pOworCisgICAgYm9vbCBp
c051bGwoKSBjb25zdDsKKworICAgIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZU5hbWU7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9wZW5pbmdPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29wZW5pbmdPcmlnaW47IH0KKyAgICBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFtZU9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fbWFpbkZyYW1lT3JpZ2luOyB9CisKKyAgICBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIo
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKKyAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworCitwcml2YXRl
OgorICAgIFN0cmluZyBtX2RhdGFiYXNlTmFtZTsKKyAgICBTZWN1cml0eU9yaWdpbkRhdGEgbV9v
cGVuaW5nT3JpZ2luOworICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBtX21haW5GcmFtZU9yaWdpbjsK
KworICAgIG11dGFibGUgU3RyaW5nIG1faWRlbnRpZmllclN0cmluZzsKK307CisKK2Jvb2wgb3Bl
cmF0b3I9PShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBVbmlxdWVJ
REJEYXRhYmFzZUlkZW50aWZpZXImKTsKKworc3RydWN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRp
Zmllckhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVuaXF1ZUlEQkRhdGFi
YXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gaWRlbnRpZmllci5oYXNoKCk7IH0K
KyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIm
IGEsIGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBi
OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKK307CisKK3N0cnVjdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXJIYXNoVHJh
aXRzIDogV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8VW5pcXVlSURCRGF0YWJhc2VJZGVudGlm
aWVyPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0
cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBVbmlxdWVJREJEYXRhYmFz
ZUlkZW50aWZpZXImIGluZm8pIHsgcmV0dXJuIGluZm8uaXNOdWxsKCk7IH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcj4gOiBXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllckhhc2hUcmFpdHMgeyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI+IHsK
KyAgICB0eXBlZGVmIFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVySGFzaCBIYXNo
OworfTsKKworfSAvLyBuYW1lc3BhZWMgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisjZW5kaWYgLy8gVW5pcXVlSURC
RGF0YWJhc2VJZGVudGlmaWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKaW5kZXggZmQ3MTg4MC4uZGFhYzZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTg5LDQgKzg5LDE0IEBAIHZvaWQgcGVy
Zm9ybUFQSUNhbGxiYWNrV2l0aFNlY3VyaXR5T3JpZ2luRGF0YVZlY3Rvcihjb25zdCBWZWN0b3I8
U2VjdXJpdHlPcmlnaW5ECiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5W
YWx1ZShBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKHNlY3VyaXR5T3JpZ2lucykpLmdldCgp
KTsKIH0KIAorYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgYSwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBiKQoreworICAgIGlmICgmYSA9PSAmYikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gYS5wcm90b2NvbCA9PSBiLnByb3RvY29sCisgICAg
ICAgICYmIGEuaG9zdCA9PSBiLmhvc3QKKyAgICAgICAgJiYgYS5wb3J0ID09IGIucG9ydDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2VjdXJpdHlP
cmlnaW5EYXRhLmgKaW5kZXggZjE2YTAyYi4uYzNmODdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtNTYsNiArNTYsOCBAQCBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhIHsKIAogdm9pZCBwZXJmb3JtQVBJQ2FsbGJhY2tXaXRoU2VjdXJpdHlPcmln
aW5EYXRhVmVjdG9yKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgQXJyYXlDYWxs
YmFjayopOwogCitib29sIG9wZXJhdG9yPT0oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gU2VjdXJpdHlPcmlnaW5EYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAppbmRleCA0Y2Q5MGM1Li5iZjFhOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dC5o
IgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTY2MDg2Yy4uNThlZWMxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTM5LDYgKzUzOSwxMCBAQAogCQk1MTVFNzcyODE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1
ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVF
NzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi87IH07CiAJCTUxNUU3NzJC
MTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3Mjkx
ODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Ki87IH07CiAJCTUxNUU3NzJDMTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUU3NzJBMTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJNTE1RTc3MkYxODQwMTU4MDAwMDcyMDNGIC8qIFVuaXF1
ZUlEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUU3NzJEMTg0MDE1ODAwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZS5jcHAg
Ki87IH07CisJCTUxNUU3NzMwMTg0MDE1ODAwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MkUx
ODQwMTU4MDAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggKi87IH07CisJCTUxNUU3NzMz
MTg0MDJENTEwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MzExODQwMkQ1
MTAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgKi87IH07CisJCTUx
NUU3NzM0MTg0MDJENTEwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3NzMyMTg0
MDJENTEwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaCAqLzsgfTsKIAkJ
NTE2MEJGRTExMzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmcubWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEJGRTAxMzM4MURGOTAwOTE4OTk5
IC8qIExvZ2dpbmcubWFjLm1tICovOyB9OwogCQk1MTYzMTk5MjE2Mjg5ODBBMDBFMjJGMDAgLyog
TmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNjMxOTkxMTYyODk4MEEwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vz
c1Byb3h5TWFjLm1tICovOyB9OwogCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJGMDAgLyogTmV0d29y
a1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFBQ0M5MzQxNjI4MDY0ODAwMzQyNTUwIC8qIE5ldHdvcmtQcm9j
ZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTIwNjksNiArMjA3MywxMCBAQAogCQk1
MTVFNzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTVFNzcyOTE4NDAwOEI5MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERh
dGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNUU3NzJBMTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJh
c2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxNUU3NzJEMTg0MDE1ODAwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUU3NzJFMTg0MDE1ODAwMDA3MjAzRiAv
KiBVbmlxdWVJREJEYXRhYmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBV
bmlxdWVJREJEYXRhYmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTVFNzcz
MTE4NDAyRDUxMDAwNzIwM0YgLyogVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRp
Zmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUU3NzMyMTg0MDJENTEw
MDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjBCRkUwMTMzODFERjkwMDkxODk5OSAvKiBMb2dnaW5n
Lm1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvZ2dpbmcu
bWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYzMTk5MTE2Mjg5ODBBMDBF
MjJGMDAgLyogTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzUHJveHlNYWMubW07IHBhdGggPSBtYWMv
TmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE2N0VFOUUxNzAzNzdCRjAwNzY4MUNBIC8qIERpc2tDYWNoZU1vbml0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlza0NhY2hlTW9uaXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDA1Nyw2ICs0MDY1LDEwIEBACiAJCQkJNTFEMEQ0MkUxODNCMzQx
MzAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwICovLAogCQkJCTUx
RDBENDJGMTgzQjM0MTMwMDk3MDQxRCAvKiBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgg
Ki8sCiAJCQkJNTFEMEQ0MzAxODNCMzQxMzAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lEQkNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNTE1RTc3MkQxODQwMTU4MDAwMDcyMDNGIC8q
IFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLywKKwkJCQk1MTVFNzcyRTE4NDAxNTgwMDAwNzIwM0Yg
LyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKKwkJCQk1MTVFNzczMTE4NDAyRDUxMDAwNzIwM0Yg
LyogVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCAqLywKKwkJCQk1MTVFNzczMjE4NDAy
RDUxMDAwNzIwM0YgLyogVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IEluZGV4ZWREQjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01NTM2
LDYgKzU1NDgsNyBAQAogCQkJCUJDMDMyREFCMTBGNDM3RDEwMDU4QzE1QSAvKiBDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTM2MTgzRTE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVj
dGlvblN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMzODMwQzE3MjEyMjgyMDA4QTJGQzMg
LyogQ29va2llU3RvcmFnZVNoaW1MaWJyYXJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTVFNzcz
MDE4NDAxNTgwMDAwNzIwM0YgLyogVW5pcXVlSURCRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUI4NzhCNjE1MTMzNDI4REMwMDY4ODhFOSAvKiBDb3JyZWN0aW9uUGFuZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI5ODlBNDE0MTY3RDE4NEIwMDRGOTZEMiAvKiBDdXN0b21Qcm90b2NvbE1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NUUwNDg1MTgxQTA5NEEwMDFGNzJGMiAvKiBW
aWV3U3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtNTc1OCw2ICs1NzcxLDcgQEAKIAkJCQlCQzcy
QjlGQjExRTY0NzZCMDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRjUwNzI4MTI0MzI5QUEwMDU5NTVBRSAvKiBXZWJDZXJ0aWZpY2F0ZUlu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyRDc1MTBGNDM3OEQwMDU4QzE1QSAvKiBXZWJD
aHJvbWVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNUU3NzM0MTg0MDJENTEwMDA3MjAz
RiAvKiBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTNG
ODdCOUJFMTU4OTQwMTkwMDkwRkY2MiAvKiBXZWJDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTNGODdCOUMwMTU4OTQwRDgwMDkwRkY2MiAvKiBXZWJDb2xvclBpY2tlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM0QTYyOTAxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLApAQCAtNjg0Miw4ICs2ODU2LDEwIEBACiAJCQkJQkMwMzJEQUExMEY0
MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMEVB
QzYxMTVEN0RBMzAwNTNFOTM3IC8qIENvbm5lY3Rpb25NYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTEzNjE4M0QxNjMxMjZEQTAwQTk5RERFIC8qIENvbm5lY3Rpb25TdGFjay5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MTVFNzczMzE4NDAyRDUxMDAwNzIwM0YgLyogVW5pcXVlSURCRGF0YWJh
c2VJZGVudGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQTA0OUI3MTgwQ0NEMEEwMEFB
RkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc4
RTFBNEQxODIwOEQ3MDAwMzEwMDdBIC8qIFdLTlNVUkwubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
MTVFNzcyRjE4NDAxNTgwMDAwNzIwM0YgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkRBMDQ5QjMxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJl
bW90ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREMzODMxMDE3MjEyNDQwMDA4QTJGQzMgLyog
Q29va2llU3RvcmFnZVNoaW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjg3OEI2MTYxMzM0MjhE
QzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZh
Y3RvcnlCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKaW5kZXggMjgwOGQ3MC4uMzhlZTlmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZD4+IElEQkRh
dGFiYXNlQmFja2VuZE1hcDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQkRhdGFiYXNlQmFj
a2VuZCo+IElEQkRhdGFiYXNlQmFja2VuZE1hcDsKIAogc3RhdGljIElEQkRhdGFiYXNlQmFja2Vu
ZE1hcCYgc2hhcmVkRGF0YWJhc2VCYWNrZW5kTWFwKCkKIHsKQEAgLTg3LDcgKzg3LDcgQEAgdm9p
ZCBXZWJJREJGYWN0b3J5QmFja2VuZDo6b3Blbihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwg
dWludDY0X3QgdmVyc2lvbiwgaW4KICAgICBpZiAoaXQgPT0gc2hhcmVkRGF0YWJhc2VCYWNrZW5k
TWFwKCkuZW5kKCkpIHsKICAgICAgICAgUmVmUHRyPElEQlNlcnZlckNvbm5lY3Rpb24+IHNlcnZl
ckNvbm5lY3Rpb24gPSBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGUoZGF0YWJhc2VOYW1l
LCBvcGVuaW5nT3JpZ2luLCBtYWluRnJhbWVPcmlnaW4pOwogICAgICAgICBkYXRhYmFzZUJhY2tl
bmQgPSBJREJEYXRhYmFzZUJhY2tlbmQ6OmNyZWF0ZShkYXRhYmFzZU5hbWUsIGRhdGFiYXNlSWRl
bnRpZmllciwgdGhpcywgKnNlcnZlckNvbm5lY3Rpb24pOwotICAgICAgICBzaGFyZWREYXRhYmFz
ZUJhY2tlbmRNYXAoKS5zZXQoZGF0YWJhc2VJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQpOwor
ICAgICAgICBzaGFyZWREYXRhYmFzZUJhY2tlbmRNYXAoKS5zZXQoZGF0YWJhc2VJZGVudGlmaWVy
LCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwogICAgIH0gZWxzZQogICAgICAgICBkYXRhYmFzZUJh
Y2tlbmQgPSBpdC0+dmFsdWU7CiAKQEAgLTk5LDkgKzk5LDkgQEAgdm9pZCBXZWJJREJGYWN0b3J5
QmFja2VuZDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3MKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYklEQkZhY3RvcnlCYWNr
ZW5kOjpyZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJikKK3ZvaWQgV2ViSURC
RmFjdG9yeUJhY2tlbmQ6OnJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzaGFyZWREYXRhYmFzZUJh
Y2tlbmRNYXAoKS5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>
<flag name="commit-queue"
          id="240953"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217765</attachid>
            <date>2013-11-24 13:26:16 -0800</date>
            <delta_ts>2013-11-24 16:19:47 -0800</delta_ts>
            <desc>Patch v2 - Fix includes leftover from a stash merge.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>35626</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNTU5ZTgxLi5iNGQ3NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMTEtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIERhdGFiYXNlUHJvY2VzczogQWRkICJVbmlxdWVJREJEYXRhYmFzZSIgdGhhdCBtdWx0aXBs
ZSBXZWJQcm9jZXNzZXMgY2FuIGNvbm5lY3QgdG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6fklEQkRhdGFi
YXNlQmFja2VuZCk6IFVucmVnaXN0ZXIgZnJvbSB0aGUgSURCRmFjdG9yeS4KKwogMjAxMy0xMS0y
MyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHU3RyZWFtZXJdIFJlbW92ZSAwLjEwIGNvZGVwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcAppbmRleCA4
OWI2Yzc3Li5mZDk5NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKQEAgLTEyNCw2ICsxMjQsNyBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZDo6ZGlkT3BlbkludGVybmFsQXN5bmMoY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0YSYgbWV0YWRhdAogCiBJREJEYXRhYmFzZUJhY2tlbmQ6On5JREJEYXRhYmFzZUJh
Y2tlbmQoKQogeworICAgIG1fZmFjdG9yeS0+cmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKG1faWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpjcmVhdGVPYmplY3RTdG9y
ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQp
CkBAIC00NDcsNyArNDQ4LDYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5Db25uZWN0
aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIFAKICAgICBwcm9jZXNz
UGVuZGluZ0NhbGxzKCk7CiB9CiAKLQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5Db25u
ZWN0aW9uSW50ZXJuYWwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbikKIHsKICAgICBBU1NFUlQobV9wZW5k
aW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkNjNmYjVjLi42NDFiZmY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTMtMTEtMjQgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIERhdGFiYXNlUHJvY2VzczogQWRkICJVbmlx
dWVJREJEYXRhYmFzZSIgdGhhdCBtdWx0aXBsZSBXZWJQcm9jZXNzZXMgY2FuIGNvbm5lY3QgdG8K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuaXF1ZUlE
QkRhdGFiYXNlIGluc3RhbmNlcyBhcmUgcGVyLURhdGFiYXNlUHJvY2Vzcywgc28gaXQgbWFuYWdl
cyB0aGUgc2V0IG9mIHRoZW0uCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6Z2V0T3JDcmVhdGVV
bmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzczo6cmVt
b3ZlVW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFz
ZVByb2Nlc3MuaDoKKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaDoKKworICAgICAgICBTdGFydCBmb3J3YXJkaW5nIHRoaW5ncyBhbG9u
ZyB0byB0aGUgYXBwcm9wcmlhdGUgVW5pcXVlSURCRGF0YWJhc2UuCisgICAgICAgICogRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6fkRhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJREJD
b25uZWN0aW9uOjpkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmVzdGFibGlzaENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpnZXRPckVzdGFibGlz
aElEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5oOgorCisgICAgICAgIEEgY2xhc3MgdGhh
dCByZXByZXNlbnRzIGEgc2luZ2xlIGNvbmNyZXRlIElEQiBkYXRhYmFzZSB0aGF0IG11bHRpcGxl
IFdlYlByb2Nlc3NlcyBjYW4gY29ubmVjdCB0by4KKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6On5VbmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpyZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlx
dWVJREJEYXRhYmFzZTo6dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpV
bmlxdWVJREJEYXRhYmFzZTo6Z2V0SURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgICogRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2Vi
S2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6OmlkZW50aWZpZXIpOgorCisgICAgICAgIEEgY2xhc3MgdG8gaGVscCB1bmlx
dWVseSBpZGVudGlmeSBhbiBJREJEYXRhYmFzZSB0aGF0IGNhbiBiZSBleHBhbmRlZCBhcyBuZWVk
ZWQuCisgICAgICAgIEltcG9ydGFudGx5LCBpdCBrbm93cyBob3cgdG8gYmUgdXNlZCBhcyBhIGtl
eSBpbiBhIEhhc2hNYXAuCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6VW5p
cXVlSURCRGF0YWJhc2VJZGVudGlmaWVyOjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlm
aWVyOjpoYXNoKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVy
Ojppc051bGwpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBEYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFz
ZU5hbWUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI6Om9w
ZW5pbmdPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZp
ZXI6Om1haW5GcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNl
SWRlbnRpZmllckhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFz
ZUlkZW50aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFi
YXNlSWRlbnRpZmllckhhc2hUcmFpdHM6OmlzRW1wdHlWYWx1ZSk6CisKKyAgICAgICAgKiBTaGFy
ZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5oOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCRmFjdG9yeUJhY2tlbmQ6Om9wZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5
QmFja2VuZDo6cmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKToKKworICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMy0xMS0yMiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycywgc3RhcnRpbmcgd2l0aCB0aGUgZGF0YWJhc2UgcGF0aC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggY2Uz
YzM4My4uMmRkNDUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEYXRhYmFz
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKIAogI2lmIEVOQUJMRShEQVRBQkFT
RV9QUk9DRVNTKQogCkBAIC02OCw2ICs2OSwyNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpTdAog
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS0+c3RvcCgpOwogfQogCitQYXNzUmVmUHRyPFVuaXF1ZUlE
QkRhdGFiYXNlPiBEYXRhYmFzZVByb2Nlc3M6OmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2Uo
Y29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gZGF0YWJhc2UgPSBtX2lkYkRhdGFiYXNlcy5nZXQoaWRl
bnRpZmllcik7CisgICAgaWYgKGRhdGFiYXNlKQorICAgICAgICByZXR1cm4gZGF0YWJhc2U7CisK
KyAgICBkYXRhYmFzZSA9IFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGUoaWRlbnRpZmllcik7Cisg
ICAgbV9pZGJEYXRhYmFzZXMuc2V0KGlkZW50aWZpZXIsIGRhdGFiYXNlKTsKKworICAgIHJldHVy
biBkYXRhYmFzZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpyZW1vdmVV
bmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UpCit7Cisg
ICAgY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyID0gZGF0YWJh
c2UuaWRlbnRpZmllcigpOworICAgIEFTU0VSVChtX2lkYkRhdGFiYXNlcy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CisKKyAgICAvLyBGSVhNRTogUGVyZm9ybSBuZWNlc3Nhcnkgc2h1dCBkb3duIG9m
IHRoZSB1bmlxdWUgZGF0YWJhc2UgYmVmb3JlIGl0IGlzIGFjdHVhbGx5IGRlc3Ryb3llZC4KKyAg
ICBtX2lkYkRhdGFiYXNlcy5yZW1vdmUoaWRlbnRpZmllcik7Cit9CisKIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzOjppbml0aWFsaXplRGF0YWJhc2VQcm9jZXNzKGNvbnN0IERhdGFiYXNlUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBtX2luZGV4ZWREYXRhYmFzZURp
cmVjdG9yeSA9IHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCmluZGV4IDYzYWNk
ZDUuLmIxMDRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmgKQEAgLTI5LDEwICsyOSwxMiBAQAogI2lmIEVOQUJMRShEQVRBQkFTRV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzLmgiCisjaW5jbHVkZSAiVW5pcXVlSURC
RGF0YWJhc2VJZGVudGlmaWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKIAog
c3RydWN0IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIApAQCAtNDMsNiArNDUs
OSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OyB9CiAKKyAgICBQ
YXNzUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNl
KGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIHZvaWQgcmVtb3ZlVW5p
cXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2UmKTsKKwogcHJpdmF0ZToKICAg
ICBEYXRhYmFzZVByb2Nlc3MoKTsKICAgICB+RGF0YWJhc2VQcm9jZXNzKCk7CkBAIC02Niw2ICs3
MSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+PiBtX2RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbnM7CiAKICAgICBTdHJp
bmcgbV9pbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CisKKyAgICBIYXNoTWFwPFVuaXF1ZUlEQkRh
dGFiYXNlSWRlbnRpZmllciwgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPj4gbV9pZGJEYXRhYmFz
ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uaAppbmRleCAwYjlhOTdmLi45NmVjMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbl9oCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKIAogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNSw4ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1jbGFzcyBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOwotCiBjbGFzcyBEYXRhYmFz
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhYmFzZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+LCBwdWJsaWMgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBw
dWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJD
b25uZWN0aW9uLmNwcAppbmRleCA2YzgyNWIzLi5lMTg4NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViSURCU2VydmVyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+
CkBAIC00NSwzMiArNDcsMzYgQEAgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6RGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbihEYXRhYmFzZVRvV2ViUHJvY2Vzc0MKIAogRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbjo6fkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24oKQogewor
ICAgIEFTU0VSVCghbV91bmlxdWVJREJEYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbjo6ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKQogewotICAgIC8v
IERvIGFueSBuZWNlc3NhcnkgY2xlYW51cCB3b3JrIGhlcmUuCisgICAgbV91bmlxdWVJREJEYXRh
YmFzZS0+dW5yZWdpc3RlckNvbm5lY3Rpb24oKnRoaXMpOworICAgIG1fdW5pcXVlSURCRGF0YWJh
c2UuY2xlYXIoKTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjplc3Rh
Ymxpc2hDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFp
bkZyYW1lT3JpZ2luKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBvbmNlLCBzbyB0aGUgc3RvcmVkIGRhdGFiYXNlIG5hbWUgc2hvdWxkIHN0aWxsIGJlIG51bGwu
CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UsIHNvIHRoZSBz
dG9yZWQgZGF0YWJhc2UgaWRlbnRpZmllciBzaG91bGQgc3RpbGwgYmUgbnVsbC4KICAgICAvLyBB
bHNvLCBpdCBpcyBpbnZhbGlkIHRvIHNldCB0aGUgc3RvcmVkIGRhdGFiYXNlIG5hbWUgdG8gdGhl
IG51bGwgc3RyaW5nLgotICAgIEFTU0VSVChtX2RhdGFiYXNlTmFtZS5pc051bGwoKSk7CisgICAg
QVNTRVJUKG1fZGF0YWJhc2VJZGVudGlmaWVyLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoIWRhdGFi
YXNlTmFtZS5pc051bGwoKSk7CiAKLSAgICBtX2RhdGFiYXNlTmFtZSA9IGRhdGFiYXNlTmFtZTsK
LSAgICBtX29wZW5pbmdPcmlnaW4gPSBvcGVuaW5nT3JpZ2luOwotICAgIG1fbWFpbkZyYW1lT3Jp
Z2luID0gbWFpbkZyYW1lT3JpZ2luOworICAgIG1fZGF0YWJhc2VJZGVudGlmaWVyID0gc3RkOjpt
b3ZlKFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZU5hbWUsIG9wZW5pbmdPcmln
aW4sIG1haW5GcmFtZU9yaWdpbikpOworCisgICAgbV91bmlxdWVJREJEYXRhYmFzZSA9IERhdGFi
YXNlUHJvY2Vzczo6c2hhcmVkKCkuZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShtX2RhdGFi
YXNlSWRlbnRpZmllcik7CisgICAgbV91bmlxdWVJREJEYXRhYmFzZS0+cmVnaXN0ZXJDb25uZWN0
aW9uKCp0aGlzKTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpnZXRP
ckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEodWludDY0X3QgcmVxdWVzdElEKQogewotICAg
IC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBpcyBzdWNjZXNzZnVsbHkgY2FsbGVkIGJ5IG1lc3NhZ2lu
ZyBmcm9tIHRoZSBXZWJQcm9jZXNzLCBhbmQgY2FsbHMgYmFjayB3aXRoIGR1bW15IGRhdGEuCi0g
ICAgLy8gTmVlZHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4KKyAgICBBU1NFUlQobV91bmlxdWVJREJE
YXRhYmFzZSk7CiAKLSAgICBJREJEYXRhYmFzZU1ldGFkYXRhIGRhdGE7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkR2V0T3JFc3RhYmxpc2hJREJEYXRhYmFz
ZU1ldGFkYXRhKHJlcXVlc3RJRCwgZmFsc2UsIGRhdGEpKTsKKyAgICBSZWZQdHI8RGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlzKTsKKyAgICBtX3VuaXF1ZUlEQkRh
dGFiYXNlLT5nZXRJREJEYXRhYmFzZU1ldGFkYXRhKFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGJv
b2wgc3VjY2VzcywgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpIHsKKyAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlk
R2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKHJlcXVlc3RJRCwgc3VjY2VzcywgbWV0
YWRhdGEpKTsKKyAgICB9KTsKIH0KIAogQ29yZUlQQzo6Q29ubmVjdGlvbiogRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJ
REJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaAppbmRleCA5MzM1MzcwLi45N2I5OTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaApAQCAtMzEsMTEg
KzMxLDEzIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFT
RV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCisjaW5jbHVkZSAi
VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEYXRhYmFzZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb247CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKIAogY2xhc3MgRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFiYXNlUHJvY2Vzc0lE
QkNvbm5lY3Rpb24+LCBwdWJsaWMgQ29yZUlQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CkBA
IC02NSw5ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgUmVmPERhdGFiYXNlVG9XZWJQcm9jZXNzQ29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI7CiAKLSAgICBTdHJpbmcgbV9kYXRhYmFzZU5hbWU7Ci0gICAgU2VjdXJpdHlPcmln
aW5EYXRhIG1fb3BlbmluZ09yaWdpbjsKLSAgICBTZWN1cml0eU9yaWdpbkRhdGEgbV9tYWluRnJh
bWVPcmlnaW47CisgICAgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyIG1fZGF0YWJhc2VJZGVu
dGlmaWVyOworCisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBtX3VuaXF1ZUlEQkRhdGFi
YXNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZjZmNDkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCisKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisKKyNpbmNsdWRl
ICJEYXRhYmFzZVByb2Nlc3MuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworVW5pcXVlSURCRGF0
YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitV
bmlxdWVJREJEYXRhYmFzZTo6flVuaXF1ZUlEQkRhdGFiYXNlKCkKK3sKK30KKwordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6cmVnaXN0ZXJDb25uZWN0aW9uKERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5z
KCZjb25uZWN0aW9uKSk7CisgICAgbV9jb25uZWN0aW9ucy5hZGQoJmNvbm5lY3Rpb24pOworfQor
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihEYXRhYmFzZVBy
b2Nlc3NJREJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX2Nvbm5lY3Rp
b25zLmNvbnRhaW5zKCZjb25uZWN0aW9uKSk7CisgICAgbV9jb25uZWN0aW9ucy5yZW1vdmUoJmNv
bm5lY3Rpb24pOworCisgICAgaWYgKG1fY29ubmVjdGlvbnMuaXNFbXB0eSgpKQorICAgICAgICBE
YXRhYmFzZVByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZVVuaXF1ZUlEQkRhdGFiYXNlKCp0aGlzKTsK
K30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0SURCRGF0YWJhc2VNZXRhZGF0YShzdGQ6
OmZ1bmN0aW9uPHZvaWQoYm9vbCwgY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYp
PiBjb21wbGV0aW9uQ2FsbGJhY2spCit7CisgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9kIGlzIHN1
Y2Nlc3NmdWxseSBjYWxsZWQgYnkgbWVzc2FnaW5nIGZyb20gdGhlIFdlYlByb2Nlc3MsIGFuZCBj
YWxscyBiYWNrIHdpdGggZHVtbXkgZGF0YS4KKyAgICAvLyBOZWVkcyByZWFsIGltcGxlbWVudGF0
aW9uLgorCisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YTsKKyAgICBjb21wbGV0aW9u
Q2FsbGJhY2soZmFsc2UsIG1ldGFkYXRhKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BS
T0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uN2I5YmZkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtMCwwICsxLDc1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBVbmlxdWVJREJEYXRhYmFzZV9oCisjZGVmaW5lIFVuaXF1
ZUlEQkRhdGFiYXNlX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUo
REFUQUJBU0VfUFJPQ0VTUykKKworI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjsKKworc3RydWN0IFNlY3VyaXR5T3JpZ2lu
RGF0YTsKKworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmlx
dWVJREJEYXRhYmFzZT4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVuaXF1ZUlE
QkRhdGFiYXNlPiBjcmVhdGUoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVbmlxdWVJREJEYXRh
YmFzZShpZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgflVuaXF1ZUlEQkRhdGFiYXNlKCk7CisK
KyAgICBjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9u
KERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb25u
ZWN0aW9uKERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24mKTsKKworICAgIHZvaWQgZ2V0SURC
RGF0YWJhc2VNZXRhZGF0YShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCwgY29uc3QgV2ViQ29yZTo6
SURCRGF0YWJhc2VNZXRhZGF0YSYpPiBjb21wbGV0aW9uQ2FsbGJhY2spOworCitwcml2YXRlOgor
ICAgIFVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYp
OworCisgICAgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKworICAg
IEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rp
b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisjZW5kaWYgLy8gVW5p
cXVlSURCRGF0YWJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUlkZW50aWZp
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmOGJkN2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1Vu
aXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUlkZW50
aWZpZXIuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJB
U0VfUFJPQ0VTUykKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1VuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcjo6VW5pcXVlSURC
RGF0YWJhc2VJZGVudGlmaWVyKCkKK3sKK30KKworVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVy
OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4pCisgICAgOiBtX2RhdGFiYXNlTmFtZShkYXRhYmFz
ZU5hbWUpCisgICAgLCBtX29wZW5pbmdPcmlnaW4ob3BlbmluZ09yaWdpbikKKyAgICAsIG1fbWFp
bkZyYW1lT3JpZ2luKG1haW5GcmFtZU9yaWdpbikKK3sKKyAgICAvLyBXaGlsZSBpdCBpcyB2YWxp
ZCB0byBoYXZlIGFuIGVtcHR5IGRhdGFiYXNlIG5hbWUsIGl0IGlzIG5vdCB2YWxpZCB0byBoYXZl
IGEgbnVsbCBvbmUuCisgICAgQVNTRVJUKCFtX2RhdGFiYXNlTmFtZS5pc051bGwoKSk7Cit9CisK
K1VuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcjo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVy
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICA6IG1fZGF0YWJhc2VOYW1lKFdU
Rjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQoreworfQorCitib29sIFVuaXF1ZUlEQkRhdGFiYXNl
SWRlbnRpZmllcjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAoreworICAgIHJldHVy
biBtX2RhdGFiYXNlTmFtZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOworfQorCit1bnNpZ25l
ZCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI6Omhhc2goKSBjb25zdAoreworICAgIHVuc2ln
bmVkIGhhc2hDb2Rlc1s3XSA9IHsKKyAgICAgICAgbV9kYXRhYmFzZU5hbWUuaW1wbCgpID8gbV9k
YXRhYmFzZU5hbWUuaW1wbCgpLT5oYXNoKCkgOiAwLAorICAgICAgICBtX29wZW5pbmdPcmlnaW4u
cHJvdG9jb2wuaW1wbCgpID8gbV9vcGVuaW5nT3JpZ2luLnByb3RvY29sLmltcGwoKS0+aGFzaCgp
IDogMCwKKyAgICAgICAgbV9vcGVuaW5nT3JpZ2luLmhvc3QuaW1wbCgpID8gbV9vcGVuaW5nT3Jp
Z2luLmhvc3QuaW1wbCgpLT5oYXNoKCkgOiAwLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9vcGVuaW5nT3JpZ2luLnBvcnQpLAorICAgICAgICBtX21haW5GcmFtZU9yaWdpbi5wcm90
b2NvbC5pbXBsKCkgPyBtX21haW5GcmFtZU9yaWdpbi5wcm90b2NvbC5pbXBsKCktPmhhc2goKSA6
IDAsCisgICAgICAgIG1fbWFpbkZyYW1lT3JpZ2luLmhvc3QuaW1wbCgpID8gbV9tYWluRnJhbWVP
cmlnaW4uaG9zdC5pbXBsKCktPmhhc2goKSA6IDAsCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX21haW5GcmFtZU9yaWdpbi5wb3J0KQorICAgIH07CisgICAgcmV0dXJuIFN0cmluZ0hh
c2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKK30KKworYm9v
bCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgLy8g
T25seSBhIGRlZmF1bHQgY29uc3RydWN0ZWQgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyIGNh
biBoYXZlIGEgbnVsbCBkYXRhYmFzZSBuYW1lLgorICAgIHJldHVybiBtX2RhdGFiYXNlTmFtZS5p
c051bGwoKTsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRl
bnRpZmllciYgYSwgY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBiKQoreworICAg
IGlmICgmYSA9PSAmYikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gYS5kYXRh
YmFzZU5hbWUoKSA9PSBiLmRhdGFiYXNlTmFtZSgpCisgICAgICAgICYmIGEub3BlbmluZ09yaWdp
bigpID09IGIub3BlbmluZ09yaWdpbigpCisgICAgICAgICYmIGEubWFpbkZyYW1lT3JpZ2luKCkg
PT0gYi5tYWluRnJhbWVPcmlnaW4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L1VuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODJmZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUlk
ZW50aWZpZXIuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVbmlxdWVJ
REJEYXRhYmFzZUlkZW50aWZpZXJfaAorI2RlZmluZSBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZp
ZXJfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgVW5pcXVl
SURCRGF0YWJhc2VJZGVudGlmaWVyIHsKK3B1YmxpYzoKKyAgICBVbmlxdWVJREJEYXRhYmFzZUlk
ZW50aWZpZXIoKTsKKyAgICBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4pOworCisgICAgYm9vbCBp
c051bGwoKSBjb25zdDsKKworICAgIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZU5hbWU7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9wZW5pbmdPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29wZW5pbmdPcmlnaW47IH0KKyAgICBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFtZU9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fbWFpbkZyYW1lT3JpZ2luOyB9CisKKyAgICBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIo
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKTsKKyAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3Q7CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworCitwcml2YXRl
OgorICAgIFN0cmluZyBtX2RhdGFiYXNlTmFtZTsKKyAgICBTZWN1cml0eU9yaWdpbkRhdGEgbV9v
cGVuaW5nT3JpZ2luOworICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBtX21haW5GcmFtZU9yaWdpbjsK
KworICAgIG11dGFibGUgU3RyaW5nIG1faWRlbnRpZmllclN0cmluZzsKK307CisKK2Jvb2wgb3Bl
cmF0b3I9PShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBVbmlxdWVJ
REJEYXRhYmFzZUlkZW50aWZpZXImKTsKKworc3RydWN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRp
Zmllckhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFVuaXF1ZUlEQkRhdGFi
YXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gaWRlbnRpZmllci5oYXNoKCk7IH0K
KyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIm
IGEsIGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBi
OyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBmYWxzZTsKK307CisKK3N0cnVjdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXJIYXNoVHJh
aXRzIDogV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8VW5pcXVlSURCRGF0YWJhc2VJZGVudGlm
aWVyPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0
cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBVbmlxdWVJREJEYXRhYmFz
ZUlkZW50aWZpZXImIGluZm8pIHsgcmV0dXJuIGluZm8uaXNOdWxsKCk7IH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcj4gOiBXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllckhhc2hUcmFpdHMgeyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI+IHsK
KyAgICB0eXBlZGVmIFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVySGFzaCBIYXNo
OworfTsKKworfSAvLyBuYW1lc3BhZWMgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisjZW5kaWYgLy8gVW5pcXVlSURC
RGF0YWJhc2VJZGVudGlmaWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKaW5kZXggZmQ3MTg4MC4uZGFhYzZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTg5LDQgKzg5LDE0IEBAIHZvaWQgcGVy
Zm9ybUFQSUNhbGxiYWNrV2l0aFNlY3VyaXR5T3JpZ2luRGF0YVZlY3Rvcihjb25zdCBWZWN0b3I8
U2VjdXJpdHlPcmlnaW5ECiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5W
YWx1ZShBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKHNlY3VyaXR5T3JpZ2lucykpLmdldCgp
KTsKIH0KIAorYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgYSwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBiKQoreworICAgIGlmICgmYSA9PSAmYikKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gYS5wcm90b2NvbCA9PSBiLnByb3RvY29sCisgICAg
ICAgICYmIGEuaG9zdCA9PSBiLmhvc3QKKyAgICAgICAgJiYgYS5wb3J0ID09IGIucG9ydDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2VjdXJpdHlP
cmlnaW5EYXRhLmgKaW5kZXggZjE2YTAyYi4uYzNmODdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtNTYsNiArNTYsOCBAQCBzdHJ1Y3QgU2VjdXJp
dHlPcmlnaW5EYXRhIHsKIAogdm9pZCBwZXJmb3JtQVBJQ2FsbGJhY2tXaXRoU2VjdXJpdHlPcmln
aW5EYXRhVmVjdG9yKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgQXJyYXlDYWxs
YmFjayopOwogCitib29sIG9wZXJhdG9yPT0oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gU2VjdXJpdHlPcmlnaW5EYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNjYwODZjLi41OGVlYzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01
MzksNiArNTM5LDEwIEBACiAJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU3
NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLzsgfTsKIAkJNTE1RTc3MkIx
ODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyOTE4
NDAwOEI5MDAwNzIwM0YgLyogRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAq
LzsgfTsKIAkJNTE1RTc3MkMxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE1RTc3MkExODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oICovOyB9OworCQk1MTVFNzcyRjE4NDAxNTgwMDAwNzIwM0YgLyogVW5pcXVl
SURCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE1RTc3MkQxODQwMTU4MDAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAq
LzsgfTsKKwkJNTE1RTc3MzAxODQwMTU4MDAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzcyRTE4
NDAxNTgwMDAwNzIwM0YgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLzsgfTsKKwkJNTE1RTc3MzMx
ODQwMkQ1MTAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNzczMTE4NDAyRDUx
MDAwNzIwM0YgLyogVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCAqLzsgfTsKKwkJNTE1
RTc3MzQxODQwMkQ1MTAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1RTc3MzIxODQw
MkQ1MTAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oICovOyB9OwogCQk1
MTYwQkZFMTEzMzgxREY5MDA5MTg5OTkgLyogTG9nZ2luZy5tYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwQkZFMDEzMzgxREY5MDA5MTg5OTkg
LyogTG9nZ2luZy5tYWMubW0gKi87IH07CiAJCTUxNjMxOTkyMTYyODk4MEEwMEUyMkYwMCAvKiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE2MzE5OTExNjI4OTgwQTAwRTIyRjAwIC8qIE5ldHdvcmtQcm9jZXNz
UHJveHlNYWMubW0gKi87IH07CiAJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3Jr
UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUFDQzkzNDE2MjgwNjQ4MDAzNDI1NTAgLyogTmV0d29ya1Byb2Nl
c3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtMjA2OSw2ICsyMDczLDEwIEBACiAJCTUx
NUU3NzI2MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNUU3NzI5MTg0MDA4QjkwMDA3MjAzRiAvKiBEYXRhYmFzZVByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0
YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE1RTc3MkExODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNlUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFz
ZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE1RTc3MkQxODQwMTU4MDAwMDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZUlEQkRhdGFiYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1RTc3MkUxODQwMTU4MDAwMDcyMDNGIC8q
IFVuaXF1ZUlEQkRhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVu
aXF1ZUlEQkRhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNUU3NzMx
MTg0MDJENTEwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2VJZGVudGlm
aWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE1RTc3MzIxODQwMkQ1MTAw
MDcyMDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MEJGRTAxMzM4MURGOTAwOTE4OTk5IC8qIExvZ2dpbmcu
bWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9nZ2luZy5t
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjMxOTkxMTYyODk4MEEwMEUy
MkYwMCAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NQcm94eU1hYy5tbTsgcGF0aCA9IG1hYy9O
ZXR3b3JrUHJvY2Vzc1Byb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTY3RUU5RTE3MDM3N0JGMDA3NjgxQ0EgLyogRGlza0NhY2hlTW9uaXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNrQ2FjaGVNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00MDU3LDYgKzQwNjUsMTAgQEAKIAkJCQk1MUQwRDQyRTE4M0IzNDEz
MDA5NzA0MUQgLyogRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTFE
MEQ0MkYxODNCMzQxMzAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaCAq
LywKIAkJCQk1MUQwRDQzMDE4M0IzNDEzMDA5NzA0MUQgLyogRGF0YWJhc2VQcm9jZXNzSURCQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk1MTVFNzcyRDE4NDAxNTgwMDAwNzIwM0YgLyog
VW5pcXVlSURCRGF0YWJhc2UuY3BwICovLAorCQkJCTUxNUU3NzJFMTg0MDE1ODAwMDA3MjAzRiAv
KiBVbmlxdWVJREJEYXRhYmFzZS5oICovLAorCQkJCTUxNUU3NzMxMTg0MDJENTEwMDA3MjAzRiAv
KiBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwICovLAorCQkJCTUxNUU3NzMyMTg0MDJE
NTEwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gSW5kZXhlZERCOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU1MzYs
NiArNTU0OCw3IEBACiAJCQkJQkMwMzJEQUIxMEY0MzdEMTAwNThDMTVBIC8qIENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMzYxODNFMTYzMTI2REEwMEE5OURERSAvKiBDb25uZWN0
aW9uU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzM4MzBDMTcyMTIyODIwMDhBMkZDMyAv
KiBDb29raWVTdG9yYWdlU2hpbUxpYnJhcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNUU3NzMw
MTg0MDE1ODAwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjg3OEI2MTUxMzM0MjhEQzAwNjg4OEU5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjk4OUE0MTQxNjdEMTg0QjAwNEY5NkQyIC8qIEN1c3RvbVByb3RvY29sTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY1RTA0ODUxODFBMDk0QTAwMUY3MkYyIC8qIFZp
ZXdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC01NzU4LDYgKzU3NzEsNyBAQAogCQkJCUJDNzJC
OUZCMTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNGNTA3MjgxMjQzMjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRpZmljYXRlSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJENzUxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNo
cm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE1RTc3MzQxODQwMkQ1MTAwMDcyMDNG
IC8qIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0Y4
N0I5QkUxNTg5NDAxOTAwOTBGRjYyIC8qIFdlYkNvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJM0Y4N0I5QzAxNTg5NDBEODAwOTBGRjYyIC8qIFdlYkNvbG9yUGlja2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzRBNjI5MDE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC02ODQyLDggKzY4NTYsMTAgQEAKIAkJCQlCQzAzMkRBQTEwRjQz
N0QxMDA1OEMxNUEgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMwRUFD
NjExNUQ3REEzMDA1M0U5MzcgLyogQ29ubmVjdGlvbk1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MTM2MTgzRDE2MzEyNkRBMDBBOTlEREUgLyogQ29ubmVjdGlvblN0YWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxNUU3NzMzMTg0MDJENTEwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFz
ZUlkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBMDQ5QjcxODBDQ0QwQTAwQUFG
QTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzhF
MUE0RDE4MjA4RDcwMDAzMTAwN0EgLyogV0tOU1VSTC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUx
NUU3NzJGMTg0MDE1ODAwMDA3MjAzRiAvKiBVbmlxdWVJREJEYXRhYmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyREEwNDlCMzE4MENDQ0QzMDBBQUZBOUUgLyogUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzM4MzEwMTcyMTI0NDAwMDhBMkZDMyAvKiBD
b29raWVTdG9yYWdlU2hpbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCODc4QjYxNjEzMzQyOERD
MDA2ODg4RTkgLyogQ29ycmVjdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFj
dG9yeUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcAppbmRleCAyODA4ZDcwLi4zOGVlOWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCRmFjdG9yeUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi10
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPj4gSURCRGF0
YWJhc2VCYWNrZW5kTWFwOwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCRGF0YWJhc2VCYWNr
ZW5kKj4gSURCRGF0YWJhc2VCYWNrZW5kTWFwOwogCiBzdGF0aWMgSURCRGF0YWJhc2VCYWNrZW5k
TWFwJiBzaGFyZWREYXRhYmFzZUJhY2tlbmRNYXAoKQogewpAQCAtODcsNyArODcsNyBAQCB2b2lk
IFdlYklEQkZhY3RvcnlCYWNrZW5kOjpvcGVuKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCB1
aW50NjRfdCB2ZXJzaW9uLCBpbgogICAgIGlmIChpdCA9PSBzaGFyZWREYXRhYmFzZUJhY2tlbmRN
YXAoKS5lbmQoKSkgewogICAgICAgICBSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4gc2VydmVy
Q29ubmVjdGlvbiA9IFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0ZShkYXRhYmFzZU5hbWUs
IG9wZW5pbmdPcmlnaW4sIG1haW5GcmFtZU9yaWdpbik7CiAgICAgICAgIGRhdGFiYXNlQmFja2Vu
ZCA9IElEQkRhdGFiYXNlQmFja2VuZDo6Y3JlYXRlKGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VJZGVu
dGlmaWVyLCB0aGlzLCAqc2VydmVyQ29ubmVjdGlvbik7Ci0gICAgICAgIHNoYXJlZERhdGFiYXNl
QmFja2VuZE1hcCgpLnNldChkYXRhYmFzZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZCk7Cisg
ICAgICAgIHNoYXJlZERhdGFiYXNlQmFja2VuZE1hcCgpLnNldChkYXRhYmFzZUlkZW50aWZpZXIs
IGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGRhdGFiYXNlQmFj
a2VuZCA9IGl0LT52YWx1ZTsKIApAQCAtOTksOSArOTksOSBAQCB2b2lkIFdlYklEQkZhY3RvcnlC
YWNrZW5kOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViSURCRmFjdG9yeUJhY2tl
bmQ6OnJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmKQordm9pZCBXZWJJREJG
YWN0b3J5QmFja2VuZDo6cmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHNoYXJlZERhdGFiYXNlQmFj
a2VuZE1hcCgpLnJlbW92ZShpZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Cg==
</data>
<flag name="review"
          id="240954"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>