<?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>128060</bug_id>
          
          <creation_ts>2014-02-01 19:57:43 -0800</creation_ts>
          <short_desc>IDB: Support IDBFactory.deleteDatabase()</short_desc>
          <delta_ts>2014-02-02 11:51:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124521</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>974696</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-02-01 19:57:43 -0800</bug_when>
    <thetext>Required for running layout tests.

&lt;rdar://problem/15965021&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974753</commentid>
    <comment_count>1</comment_count>
      <attachid>222918</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-02 01:09:20 -0800</bug_when>
    <thetext>Created attachment 222918
Patch v1

Touches the filesystem (delete), so requires extra scrutiny.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974754</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-02 01:11:04 -0800</bug_when>
    <thetext>Attachment 222918 did not pass style-queue:


ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:202:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.h:44:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 2 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974782</commentid>
    <comment_count>3</comment_count>
      <attachid>222918</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-02 10:21:39 -0800</bug_when>
    <thetext>Comment on attachment 222918
Patch v1

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

r=me

&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:164
&gt; -    m_backend-&gt;deleteDatabase(name, request, context-&gt;securityOrigin(), context, getIndexedDBDatabasePath(context));
&gt; +    m_backend-&gt;deleteDatabase(name, *(context-&gt;securityOrigin()), *(context-&gt;topOrigin()), request, context, getIndexedDBDatabasePath(context));

It feels like instead of *(context-&gt;securityOrigin()), you could just say *context-&gt;securityOrigin().  The extra parens make me initially expect something sneaky to be going on even though it&apos;s pretty straight-forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974786</commentid>
    <comment_count>4</comment_count>
      <attachid>222918</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-02 10:40:00 -0800</bug_when>
    <thetext>Comment on attachment 222918
Patch v1

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

Count me as a pair of eyes.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.cpp:558
&gt; -void IDBDatabaseBackend::deleteDatabaseAsync(PassRefPtr&lt;IDBCallbacks&gt; callbacks)
&gt; +void IDBDatabaseBackend::deleteDatabaseAsync(PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks)

Hungarian notation!?

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:166
&gt; +        LOG(IDB, &quot;UniqueIDBDatabase::shutdownBackingStore would deleting file &apos;%s&apos; on disk&quot;, dbFilename.utf8().data());

would deleting file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974788</commentid>
    <comment_count>5</comment_count>
      <attachid>222918</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-02 10:49:51 -0800</bug_when>
    <thetext>Comment on attachment 222918
Patch v1

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.cpp:558
&gt;&gt; +void IDBDatabaseBackend::deleteDatabaseAsync(PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks)
&gt; 
&gt; Hungarian notation!?

It is the sanctioned prefix for PassRefPtr when you want to put it into a RefPtr in the function. http://www.webkit.org/coding/RefPtr.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974796</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-02 11:21:23 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 222918 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222918&amp;action=review
&gt; 
&gt; Count me as a pair of eyes.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.cpp:558
&gt; &gt; -void IDBDatabaseBackend::deleteDatabaseAsync(PassRefPtr&lt;IDBCallbacks&gt; callbacks)
&gt; &gt; +void IDBDatabaseBackend::deleteDatabaseAsync(PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks)
&gt; 
&gt; Hungarian notation!?

Tim already pointed out this is the PassRefPtr standard.


&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:166
&gt; &gt; +        LOG(IDB, &quot;UniqueIDBDatabase::shutdownBackingStore would deleting file &apos;%s&apos; on disk&quot;, dbFilename.utf8().data());
&gt; 
&gt; would deleting file?

Yikes.  Thanks!

(In reply to comment #3)

&gt; &gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:164
&gt; &gt; -    m_backend-&gt;deleteDatabase(name, request, context-&gt;securityOrigin(), context, getIndexedDBDatabasePath(context));
&gt; &gt; +    m_backend-&gt;deleteDatabase(name, *(context-&gt;securityOrigin()), *(context-&gt;topOrigin()), request, context, getIndexedDBDatabasePath(context));
&gt; 
&gt; It feels like instead of *(context-&gt;securityOrigin()), you could just say *context-&gt;securityOrigin().  The extra parens make me initially expect something sneaky to be going on even though it&apos;s pretty straight-forward.

You&apos;re right.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974797</commentid>
    <comment_count>7</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-02-02 11:31:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 222918 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222918&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackend.cpp:558
&gt; &gt;&gt; +void IDBDatabaseBackend::deleteDatabaseAsync(PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks)
&gt; &gt; 
&gt; &gt; Hungarian notation!?
&gt; 
&gt; It is the sanctioned prefix for PassRefPtr when you want to put it into a RefPtr in the function. http://www.webkit.org/coding/RefPtr.html

What a weird choice. I get the desire to distinguish the name from the actually used one, but I&apos;d use something like &quot;passCallbacks&quot; or &quot;callbacksParam&quot; or &quot;callbacksArg&quot; to make this clear. I will have to ask Darin why he used &quot;prp&quot; in the RefPtr guide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974798</commentid>
    <comment_count>8</comment_count>
      <attachid>222918</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2014-02-02 11:42:23 -0800</bug_when>
    <thetext>Comment on attachment 222918
Patch v1

I don&apos;t see any issues besides those spotted by others. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974799</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-02-02 11:51:32 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/163266</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222918</attachid>
            <date>2014-02-02 01:09:20 -0800</date>
            <delta_ts>2014-02-02 11:42:23 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29949</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDEzZGUwLi45OTY1ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTQtMDItMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIElEQjogU3VwcG9ydCBJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODA2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFj
a2VuZDo6ZGVsZXRlRGF0YWJhc2VBc3luYyk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0ZURh
dGFiYXNlKToKKworICAgICAgICBDaGFuZ2UgZmFjdG9yeS1sZXZlbCBkZWxldGVEYXRhYmFzZSB0
byB0YWtlIG9wZW5pbmcgYW5kIG1haW4gZnJhbWUgb3JpZ2luczoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZl
bERCLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0
aW9uTGV2ZWxEQi5oOgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKIDIwMTQtMDItMDEg
IEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92
ZSB0aGUgSmF2YVNjcmlwdCBiaW5kaW5ncyBvZiBEYXRhc2V0RE9NU3RyaW5nTWFwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
LmNwcAppbmRleCAxM2VkOWU1Li45OTlhMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKQEAgLTU1NSwxMyAr
NTU1LDEzIEBAIGJvb2wgSURCRGF0YWJhc2VCYWNrZW5kOjppc0RlbGV0ZURhdGFiYXNlQmxvY2tl
ZCgpCiAgICAgcmV0dXJuIGNvbm5lY3Rpb25Db3VudCgpOwogfQogCi12b2lkIElEQkRhdGFiYXNl
QmFja2VuZDo6ZGVsZXRlRGF0YWJhc2VBc3luYyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6OmRlbGV0ZURhdGFiYXNlQXN5bmMoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcykKIHsKICAgICBBU1NFUlQoIWlzRGVs
ZXRlRGF0YWJhc2VCbG9ja2VkKCkpOwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZD4g
c2VsZih0aGlzKTsKKyAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7CiAgICAgbV9zZXJ2ZXJDb25uZWN0aW9uLT5kZWxldGVEYXRhYmFzZShtX21ldGFkYXRh
Lm5hbWUsIFtzZWxmLCBjYWxsYmFja3NdKGJvb2wgc3VjY2VzcykgewotICAgICAgICBBU1NFUlQo
c2VsZi0+bV9kZWxldGVDYWxsYmFja3NXYWl0aW5nQ29tcGxldGlvbi5jb250YWlucyhjYWxsYmFj
a3MpKTsKICAgICAgICAgc2VsZi0+bV9kZWxldGVDYWxsYmFja3NXYWl0aW5nQ29tcGxldGlvbi5y
ZW1vdmUoY2FsbGJhY2tzKTsKIAogICAgICAgICAvLyBJZiB0aGlzIElEQkRhdGFiYXNlQmFja2Vu
ZCB3YXMgY2xvc2VkIHdoaWxlIHdhaXRpbmcgZm9yIGRlbGV0ZURhdGFiYXNlIHRvIGNvbXBsZXRl
LCBubyBwb2ludCBpbiBwZXJmb3JtaW5nIGFueSBjYWxsYmFja3MuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDdjNzNkODQuLjk3M2Yx
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
Y3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJG
YWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogICAgIH0KIAog
ICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6
Y3JlYXRlKGNvbnRleHQsIDAsIDAsIDAsIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzOjpOdWxs
KTsKLSAgICBtX2JhY2tlbmQtPmRlbGV0ZURhdGFiYXNlKG5hbWUsIHJlcXVlc3QsIGNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250
ZXh0KSk7CisgICAgbV9iYWNrZW5kLT5kZWxldGVEYXRhYmFzZShuYW1lLCAqKGNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCkpLCAqKGNvbnRleHQtPnRvcE9yaWdpbigpKSwgcmVxdWVzdCwgY29udGV4
dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKICAgICByZXR1cm4gcmVxdWVz
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggM2M3YzU5My4uMjIxZTJjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIHVpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBtYWluRnJhbWVPcmlnaW4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBtYWluRnJhbWVPcmlnaW4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIHVuaXF1
ZUlkZW50aWZpZXIpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDBjMjFiNjIuLmVhNTUxNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJD
b25uZWN0aW9uLmgKQEAgLTU5LDEzICs1OSwxMSBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCBzdWNjZXNzKT4gQm9vbENhbGxiYWNrRnVuY3Rpb247CiAK
LSAgICAvLyBGYWN0b3J5LWxldmVsIG9wZXJhdGlvbnMKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBCb29sQ2FsbGJhY2tGdW5jdGlvbiBzdWNjZXNz
Q2FsbGJhY2spID0gMDsKLQogICAgIC8vIERhdGFiYXNlLWxldmVsIG9wZXJhdGlvbnMKICAgICB0
eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGJv
b2wgc3VjY2Vzcyk+IEdldElEQkRhdGFiYXNlTWV0YWRhdGFGdW5jdGlvbjsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKEdldElEQkRhdGFiYXNlTWV0
YWRhdGFGdW5jdGlvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBCb29sQ2FsbGJh
Y2tGdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2spID0gMDsKIAogICAgIC8vIFRyYW5zYWN0aW9uLWxl
dmVsIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIHZvaWQgb3BlblRyYW5zYWN0aW9uKGludDY0X3Qg
dHJhbnNhY3Rpb25JRCwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlLCBCb29sQ2FsbGJhY2tGdW5jdGlvbiBzdWNjZXNzQ2Fs
bGJhY2spID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcAppbmRl
eCAzNTQxZmE4Li4xZjFjYWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVs
REIuY3BwCkBAIC0xMDMsMTAgKzEwMywxMCBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxE
Qjo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhYwogICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlTmFtZXMucmVsZWFzZSgpKTsKIH0KIAotdm9p
ZCBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIGRhdGFEaXJlY3RvcnkpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6
ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbiYg
b3BlbmluZ09yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBk
YXRhRGlyZWN0b3J5KQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCRmFjdG9yeUJhY2tlbmRM
ZXZlbERCOjpkZWxldGVEYXRhYmFzZSIpOwotICAgIGNvbnN0IFN0cmluZyB1bmlxdWVJZGVudGlm
aWVyID0gY29tcHV0ZVVuaXF1ZUlkZW50aWZpZXIobmFtZSwgKnNlY3VyaXR5T3JpZ2luKTsKKyAg
ICBjb25zdCBTdHJpbmcgdW5pcXVlSWRlbnRpZmllciA9IGNvbXB1dGVVbmlxdWVJZGVudGlmaWVy
KG5hbWUsIG9wZW5pbmdPcmlnaW4pOwogCiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwOjppdGVy
YXRvciBpdCA9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmZpbmQodW5pcXVlSWRlbnRpZmllcik7CiAg
ICAgaWYgKGl0ICE9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZExldmVsREI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREIKICAgICB9CiAKICAgICAvLyBGSVhNRTogRXZl
cnl0aGluZyBmcm9tIG5vdyBvbiBzaG91bGQgYmUgZG9uZSBvbiBhbm90aGVyIHRocmVhZC4KLSAg
ICBSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tp
bmdTdG9yZSgqc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOworICAgIFJlZlB0cjxJREJC
YWNraW5nU3RvcmVMZXZlbERCPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKG9wZW5p
bmdPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogICAgIGlmICghYmFja2luZ1N0b3JlKSB7CiAgICAg
ICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIG9wZW5pbmcgYmFja2lu
ZyBzdG9yZSBmb3IgaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlLiIpKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJGYWN0b3J5QmFja2VuZExldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmgKaW5kZXggMDA0MDQ2MC4uZDE2
OWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxk
Yi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oCkBAIC02MSw3ICs2
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKSBvdmVycmlkZSBmaW5hbDsKICAg
ICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IHZlcnNpb24s
IGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdP
cmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPcmlnaW4pIG92ZXJyaWRlIGZp
bmFsOwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgb3ZlcnJpZGUg
ZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJiBtYWluRnJhbWVPcmlnaW4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgb3ZlcnJpZGUgZmluYWw7CiAK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxE
Qj4gb3BlbkJhY2tpbmdTdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYg
ZGF0YURpcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmgKaW5kZXgg
NjlkZjc3OS4uZGJjOGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlvbkxldmVs
REIuaApAQCAtNDgsMTIgKzQ4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Ns
b3NlZCgpIG92ZXJyaWRlOwogCi0gICAgLy8gRmFjdG9yeS1sZXZlbCBvcGVyYXRpb25zCi0gICAg
dmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgQm9vbENhbGxi
YWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKSBvdmVycmlkZTsKLQogICAgIC8vIERhdGFiYXNl
LWxldmVsIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3JFc3RhYmxpc2hJREJEYXRh
YmFzZU1ldGFkYXRhKEdldElEQkRhdGFiYXNlTWV0YWRhdGFGdW5jdGlvbikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vz
c0NhbGxiYWNrKSBvdmVycmlkZTsKIAogICAgIC8vIFRyYW5zYWN0aW9uLWxldmVsIG9wZXJhdGlv
bnMKICAgICB2aXJ0dWFsIHZvaWQgb3BlblRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25J
RCwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlLCBCb29sQ2FsbGJhY2tGdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhN2UyOTkzLi5kZmNhZjU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtMzEwMyw2ICszMTAzLDcgQEAgX19aTjdXZWJDb3JlMTBJREJLZXlEYXRh
QzFFUEtOU182SURCS2V5RQogX19aTjdXZWJDb3JlMTBJREJLZXlQYXRoQzFFUktOM1dURjZTdHJp
bmdFCiBfX1pON1dlYkNvcmUxMElEQktleVBhdGhDMUVSS04zV1RGNlZlY3RvcklOUzFfNlN0cmlu
Z0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxMElEQktleVBhdGg2
ZGVjb2RlRVJOU18xMktleWVkRGVjb2RlckVSUzBfCitfX1pON1dlYkNvcmUxOElEQkRhdGFiYXNl
QmFja2VuZDE0ZGVsZXRlRGF0YWJhc2VFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJJREJDYWxsYmFj
a3NFRUUKIF9fWk43V2ViQ29yZTE4SURCRGF0YWJhc2VCYWNrZW5kMTRvcGVuQ29ubmVjdGlvbkVO
M1dURjEwUGFzc1JlZlB0cklOU18xMklEQkNhbGxiYWNrc0VFRU5TMl9JTlNfMjBJREJEYXRhYmFz
ZUNhbGxiYWNrc0VFRXh5CiBfX1pON1dlYkNvcmUxOElEQkRhdGFiYXNlQmFja2VuZDZjcmVhdGVF
UktOM1dURjZTdHJpbmdFUzRfUE5TXzI2SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2VFUk5TXzE5
SURCU2VydmVyQ29ubmVjdGlvbkUKIF9fWk43V2ViQ29yZTE4SURCRGF0YWJhc2VCYWNrZW5kRDFF
dgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDhlNTNmOWIuLjMyYjM3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NyBAQAorMjAxNC0wMi0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSURCOiBTdXBwb3J0IElEQkZhY3RvcnkuZGVsZXRlRGF0YWJhc2UoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MDYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpkZWxldGVEYXRhYmFzZSk6CisKKyAg
ICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmNhbGN1bGF0ZUFic29sdXRlRGF0
YWJhc2VGaWxlbmFtZSk6IENlbnRyYWwgcGxhY2UgdG8KKyAgICAgICAgICBjYWxjdWxhdGUgdGhl
IGRhdGFiYXNlIGZpbGVuYW1lLgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6
dW5yZWdpc3RlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFz
ZTo6c2h1dGRvd24pOiBQYXNzIHNodXRkb3duIHR5cGUgYWxvbmcuIAorICAgICAgICAoV2ViS2l0
OjpVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd25CYWNraW5nU3RvcmUpOiBJZiB0aGlzIGlzIGEg
ZGVsZXRlIHNodXRkb3duLCBkZWxldGUgdGhlIERCLgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkU2h1dGRvd25CYWNraW5nU3RvcmUpOiAKKyAgICAgICAgKFdlYktpdDo6
VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6VW5p
cXVlSURCRGF0YWJhc2U6OnBvc3RNYWluVGhyZWFkVGFzayk6IEFsbCBzb21lIHRhc2tzIHRvIGJ5
cGFzcyB0aGUgbm8tbW9yZS1yZXF1ZXN0IHJlc3RyaWN0aW9uLgorICAgICAgICAoV2ViS2l0OjpV
bmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzayk6IERpdHRvLgorICAgICAgICAqIERh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKworICAgICAgICAq
IERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlU1FMaXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VCYWNr
aW5nU3RvcmVTUUxpdGU6On5VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpnZXRP
ckVzdGFibGlzaE1ldGFkYXRhKTogVXNlIAorICAgICAgICAgIGNhbGN1bGF0ZUFic29sdXRlRGF0
YWJhc2VGaWxlbmFtZSBmcm9tIFVuaXF1ZUlEQkRhdGFiYXNlLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUJhY2tlbmQ6Om9wZW4pOiBVcGRhdGUgbG9nZ2luZyBj
aGFubmVsLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5QmFja2VuZDo6ZGVsZXRlRGF0
YWJhc2UpOiBJbXBsZW1lbnQuCisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmg6CisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ3Jvc3NU
aHJlYWRDb3BpZXIuaDoKKwogMjAxNC0wMi0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSURCOiBJbXBsZW1lbnQgSURCQ3Vyc29yLmRlbGV0ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcAppbmRleCAyZGJmZWVm
Li43ZDg0MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlv
bi5jcHAKQEAgLTgxLDEwICs4MSwxOSBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rp
b246OmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YSh1aW50NjRfdCByZQogCiB2b2lk
IERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmRlbGV0ZURhdGFiYXNlKHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CisgICAgQVNTRVJUKG1fdW5p
cXVlSURCRGF0YWJhc2UpOworCiAgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyBkZWxldGVE
YXRhYmFzZSByZXF1ZXN0IElEICVsbHUiLCByZXF1ZXN0SUQpOwogCi0gICAgLy8gRklYTUU6IElt
cGxlbWVudAotICAgIHNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZERl
bGV0ZURhdGFiYXNlKHJlcXVlc3RJRCwgZmFsc2UpKTsKKyAgICBpZiAoZGF0YWJhc2VOYW1lICE9
IG1fdW5pcXVlSURCRGF0YWJhc2UtPmlkZW50aWZpZXIoKS5kYXRhYmFzZU5hbWUoKSkgeworICAg
ICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gZGVsZXRlIGRhdGFiYXNlIG5hbWUgdGhhdCBkb2Vz
bid0IG1hdGNoIHdpdGggdGhpcyBkYXRhYmFzZSBjb25uZWN0aW9uJ3MgZGF0YWJhc2UgbmFtZSIp
OworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWREZWxl
dGVEYXRhYmFzZShyZXF1ZXN0SUQsIGZhbHNlKSk7CisgICAgfQorCisgICAgUmVmUHRyPERhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7CisgICAgbV91bmlxdWVJ
REJEYXRhYmFzZS0+ZGVsZXRlRGF0YWJhc2UoW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBz
dWNjZXNzKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZl
ckNvbm5lY3Rpb246OkRpZERlbGV0ZURhdGFiYXNlKHJlcXVlc3RJRCwgc3VjY2VzcykpOworICAg
IH0pOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246Om9wZW5UcmFuc2Fj
dGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rpb25JRCwgY29uc3QgVmVj
dG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlEcywgdWludDY0X3QgaW50TW9kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKaW5kZXggNDI5YmNlNi4uYjg2NGUyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJVbmlx
dWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIgogI2luY2x1ZGUgIldlYkNyb3NzVGhy
ZWFkQ29waWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CkBAIC00Nyw2ICs0
OCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K1N0cmluZyBVbmlxdWVJREJEYXRhYmFzZTo6Y2FsY3VsYXRlQWJzb2x1dGVEYXRhYmFzZUZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSkKK3sKKyAgICByZXR1
cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGFic29sdXRlRGF0YWJhc2VEaXJlY3RvcnksICJJ
bmRleGVkREIuc3FsaXRlMyIpOworfQorCiBVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0
YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAg
IDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2FjY2VwdGluZ05ld1JlcXVlc3Rz
KHRydWUpCkBAIC0xMDYsMTUgKzExMiwxOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjp1bnJl
Z2lzdGVyQ29ubmVjdGlvbihEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uJiBjb25uZQogICAg
IG1fY29ubmVjdGlvbnMucmVtb3ZlKCZjb25uZWN0aW9uKTsKIAogICAgIGlmIChtX2Nvbm5lY3Rp
b25zLmlzRW1wdHkoKSkgewotICAgICAgICBzaHV0ZG93bigpOworICAgICAgICBzaHV0ZG93bihV
bmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZTo6Tm9ybWFsU2h1dGRvd24pOwogICAgICAgICBE
YXRhYmFzZVByb2Nlc3M6OnNoYXJlZCgpLnJlbW92ZVVuaXF1ZUlEQkRhdGFiYXNlKCp0aGlzKTsK
ICAgICB9CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duKCkKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OnNodXRkb3duKFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlIHR5
cGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAorICAgIGlmICghbV9hY2NlcHRp
bmdOZXdSZXF1ZXN0cykKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9hY2NlcHRpbmdOZXdSZXF1
ZXN0cyA9IGZhbHNlOwogCiAgICAgewpAQCAtMTM1LDI4ICsxNDQsNjYgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6c2h1dGRvd24oKQogCiAgICAgZm9yIChjb25zdCBhdXRvJiBpdCA6IG1fcGVu
ZGluZ0RhdGFiYXNlVGFza3MpCiAgICAgICAgIGl0LnZhbHVlLT5yZXF1ZXN0QWJvcnRlZCgpOwor
CisgICAgbV9wZW5kaW5nTWV0YWRhdGFSZXF1ZXN0cy5jbGVhcigpOworICAgIG1fcGVuZGluZ1Ry
YW5zYWN0aW9uUmVxdWVzdHMuY2xlYXIoKTsKKyAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmNs
ZWFyKCk7CiAgICAgICAgIAogICAgIC8vIEJhbGFuY2VkIGJ5IGFuIGFkb3B0UmVmIGluIDo6ZGlk
U2h1dGRvd25CYWNraW5nU3RvcmUoKQogICAgIHJlZigpOwogCi0gICAgRGF0YWJhc2VQcm9jZXNz
OjpzaGFyZWQoKS5xdWV1ZSgpLmRpc3BhdGNoKGJpbmQoJlVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0
ZG93bkJhY2tpbmdTdG9yZSwgdGhpcykpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5
bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duQmFja2luZ1N0b3JlLCB0
eXBlLCBhYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5KCkpLCBEYXRhYmFzZVRhc2tUeXBlOjpTaHV0
ZG93bik7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duQmFja2luZ1N0b3Jl
KCkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duQmFja2luZ1N0b3JlKFVuaXF1ZUlE
QkRhdGFiYXNlU2h1dGRvd25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3Rv
cnkpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKG1fYmFja2luZ1N0
b3JlKQotICAgICAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOwogCi0gICAgUnVuTG9vcDo6bWFp
bigpLT5kaXNwYXRjaChiaW5kKCZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkU2h1dGRvd25CYWNraW5n
U3RvcmUsIHRoaXMpKTsKKyAgICBtX2JhY2tpbmdTdG9yZS5jbGVhcigpOworCisgICAgaWYgKHR5
cGUgPT0gVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGU6OkRlbGV0ZVNodXRkb3duKSB7Cisg
ICAgICAgIFN0cmluZyBkYkZpbGVuYW1lID0gVW5pcXVlSURCRGF0YWJhc2U6OmNhbGN1bGF0ZUFi
c29sdXRlRGF0YWJhc2VGaWxlbmFtZShkYXRhYmFzZURpcmVjdG9yeSk7CisgICAgICAgIExPRyhJ
REIsICJVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd25CYWNraW5nU3RvcmUgd291bGQgZGVsZXRp
bmcgZmlsZSAnJXMnIG9uIGRpc2siLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBkZWxldGVGaWxlKGRiRmlsZW5hbWUpOworICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShk
YXRhYmFzZURpcmVjdG9yeSk7CisgICAgfQorCisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0
ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRTaHV0ZG93bkJhY2tpbmdT
dG9yZSwgdHlwZSksIERhdGFiYXNlVGFza1R5cGU6OlNodXRkb3duKTsKIH0KIAotdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkU2h1dGRvd25CYWNraW5nU3RvcmUoKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkU2h1dGRvd25CYWNraW5nU3RvcmUoVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93
blR5cGUgdHlwZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgLy8gQmFs
YW5jZWQgYnkgYSByZWYgaW4gOjpzaHV0ZG93bigpCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlPiBwcm90ZWN0b3IoYWRvcHRSZWYodGhpcykpOworCisgICAgaWYgKG1fcGVuZGluZ1NodXRk
b3duVGFzaykKKyAgICAgICAgbV9wZW5kaW5nU2h1dGRvd25UYXNrLT5jb21wbGV0ZVJlcXVlc3Qo
dHlwZSk7CisKKyAgICBtX3BlbmRpbmdTaHV0ZG93blRhc2sgPSBudWxscHRyOworfQorCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVEYXRhYmFzZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9v
bCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fYWNjZXB0aW5nTmV3UmVxdWVzdHMp
IHsKKyAgICAgICAgLy8gU29tZW9uZSBlbHNlIGhhcyBhbHJlYWR5IHNodXRkb3duIHRoaXMgZGF0
YWJhc2UsIHNvIHdlIGNhbid0IHJlcXVlc3QgYSBkZWxldGUuCisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3N1Y2Nlc3NDYWxsYmFja10oKSB7CisgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2so
ZmFsc2UpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0
cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIG1fcGVuZGluZ1NodXRk
b3duVGFzayA9IEFzeW5jUmVxdWVzdEltcGw8VW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGU+
OjpjcmVhdGUoW3RoaXMsIHByb3RlY3Rvciwgc3VjY2Vzc0NhbGxiYWNrXShVbmlxdWVJREJEYXRh
YmFzZVNodXRkb3duVHlwZSB0eXBlKSB7CisgICAgICAgIC8vIElmIHRoZSBzaHV0ZG93biBqdXN0
IGNvbXBsZXRlZCB3YXMgYSBEZWxldGUgc2h1dGRvd24gdGhlbiB3ZSBzdWNjZWVkZWQuCisgICAg
ICAgIC8vIElmIG5vdCByZXBvcnQgZmFpbHVyZSBpbnN0ZWFkIG9mIHRyeWluZyBhZ2Fpbi4KKyAg
ICAgICAgc3VjY2Vzc0NhbGxiYWNrKHR5cGUgPT0gVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5
cGU6OkRlbGV0ZVNodXRkb3duKTsKKyAgICB9LCBbdGhpcywgcHJvdGVjdG9yLCBzdWNjZXNzQ2Fs
bGJhY2tdKCkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOworICAgIH0pOworCisg
ICAgc2h1dGRvd24oVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGU6OkRlbGV0ZVNodXRkb3du
KTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFz
ZU1ldGFkYXRhKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sLCBjb25zdCBJREJEYXRhYmFzZU1ldGFk
YXRhJik+IGNvbXBsZXRpb25DYWxsYmFjaykKQEAgLTEwMTMsMTEgKzEwNjAsMTEgQEAgU3RyaW5n
IFVuaXF1ZUlEQkRhdGFiYXNlOjphYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QKICAg
ICByZXR1cm4gRGF0YWJhc2VQcm9jZXNzOjpzaGFyZWQoKS5hYnNvbHV0ZUluZGV4ZWREYXRhYmFz
ZVBhdGhGcm9tRGF0YWJhc2VSZWxhdGl2ZVBhdGgobV9kYXRhYmFzZVJlbGF0aXZlRGlyZWN0b3J5
KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdE1haW5UaHJlYWRUYXNrKHN0ZDo6
dW5pcXVlX3B0cjxBc3luY1Rhc2s+IHRhc2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0
TWFpblRocmVhZFRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gdGFzaywgRGF0YWJhc2VU
YXNrVHlwZSB0YXNrVHlwZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAg
IGlmICghbV9hY2NlcHRpbmdOZXdSZXF1ZXN0cykKKyAgICBpZiAoIW1fYWNjZXB0aW5nTmV3UmVx
dWVzdHMgJiYgdGFza1R5cGUgPT0gRGF0YWJhc2VUYXNrVHlwZTo6Tm9ybWFsKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tYWluVGhyZWFkVGFza011dGV4KTsK
QEAgLTEwNTAsMTEgKzEwOTcsMTEgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybU5l
eHRNYWluVGhyZWFkVGFzaygpCiAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKIH0KIAotdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNU
YXNrPiB0YXNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdERhdGFiYXNlVGFzayhzdGQ6
OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiB0YXNrLCBEYXRhYmFzZVRhc2tUeXBlIHRhc2tUeXBlKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoIW1fYWNjZXB0aW5nTmV3
UmVxdWVzdHMpCisgICAgaWYgKCFtX2FjY2VwdGluZ05ld1JlcXVlc3RzICYmIHRhc2tUeXBlID09
IERhdGFiYXNlVGFza1R5cGU6Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fZGF0YWJhc2VUYXNrTXV0ZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5o
CmluZGV4IGVlNDhlNTQuLjIyYjMzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTU1
LDYgKzU1LDExIEBAIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlOwogCiBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCitlbnVtIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlU2h1
dGRvd25UeXBlIHsKKyAgICBOb3JtYWxTaHV0ZG93biwKKyAgICBEZWxldGVTaHV0ZG93bgorfTsK
KwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
VW5pcXVlSURCRGF0YWJhc2U+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVbmlx
dWVJREJEYXRhYmFzZT4gY3JlYXRlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllcikKQEAgLTY0LDExICs2OSwxNSBAQCBwdWJsaWM6CiAKICAgICB+VW5pcXVlSURC
RGF0YWJhc2UoKTsKIAorICAgIHN0YXRpYyBTdHJpbmcgY2FsY3VsYXRlQWJzb2x1dGVEYXRhYmFz
ZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgYWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSk7CisKICAg
ICBjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgcmVnaXN0ZXJDb25uZWN0aW9uKERh
dGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24mKTsKICAgICB2b2lkIHVucmVnaXN0ZXJDb25uZWN0
aW9uKERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24mKTsKIAorICAgIHZvaWQgZGVsZXRlRGF0
YWJhc2Uoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworCiAgICAg
dm9pZCBnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoc3RkOjpmdW5jdGlvbjx2b2lk
KGJvb2wsIGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmKT4gY29tcGxldGlvbkNh
bGxiYWNrKTsKIAogICAgIHZvaWQgb3BlblRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlEcywgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUsIHN0ZDo6ZnVuY3Rpb248
dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKQEAgLTEwNyw4ICsxMTYsMTMgQEAgcHJpdmF0
ZToKIAogICAgIFN0cmluZyBhYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3Q7CiAKLSAg
ICB2b2lkIHBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4pOwotICAg
IHZvaWQgc2h1dGRvd24oKTsKKyAgICBlbnVtIGNsYXNzIERhdGFiYXNlVGFza1R5cGUgeworICAg
ICAgICBOb3JtYWwsCisgICAgICAgIFNodXRkb3duCisgICAgfTsKKyAgICB2b2lkIHBvc3REYXRh
YmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4sIERhdGFiYXNlVGFza1R5cGUgPSBE
YXRhYmFzZVRhc2tUeXBlOjpOb3JtYWwpOworCisgICAgdm9pZCBzaHV0ZG93bihVbmlxdWVJREJE
YXRhYmFzZVNodXRkb3duVHlwZSk7CiAKICAgICAvLyBNZXRob2QgdGhhdCBhdHRlbXB0cyB0byBt
YWtlIGxlZ2FsIGZpbGVuYW1lcyBmcm9tIGFsbCBsZWdhbCBkYXRhYmFzZSBuYW1lcwogICAgIFN0
cmluZyBmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0OwpAQCAtMTIzLDcgKzEzNyw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgLy8gVG8gYmUgY2FsbGVkIGZyb20gdGhlIGRhdGFiYXNlIHdv
cmtxdWV1ZSB0aHJlYWQgb25seQogICAgIHZvaWQgcGVyZm9ybU5leHREYXRhYmFzZVRhc2soKTsK
LSAgICB2b2lkIHBvc3RNYWluVGhyZWFkVGFzayhzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPik7
CisgICAgdm9pZCBwb3N0TWFpblRocmVhZFRhc2soc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4s
IERhdGFiYXNlVGFza1R5cGUgPSBEYXRhYmFzZVRhc2tUeXBlOjpOb3JtYWwpOwogICAgIHZvaWQg
b3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlk
ZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5KTsKICAgICB2b2lkIG9w
ZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIFdlYkNv
cmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKTsKICAgICB2b2lkIGJlZ2luQmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYpOwpAQCAtMTQ1LDcgKzE1OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb3VudEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VE
YXRhJik7CiAgICAgdm9pZCBkZWxldGVSYW5nZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYpOwogCi0gICAg
dm9pZCBzaHV0ZG93bkJhY2tpbmdTdG9yZSgpOworICAgIHZvaWQgc2h1dGRvd25CYWNraW5nU3Rv
cmUoVW5pcXVlSURCRGF0YWJhc2VTaHV0ZG93blR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VE
aXJlY3RvcnkpOwogCiAgICAgLy8gQ2FsbGJhY2tzIGZyb20gdGhlIGRhdGFiYXNlIHdvcmtxdWV1
ZSB0aHJlYWQsIHRvIGJlIHBlcmZvcm1lZCBvbiB0aGUgbWFpbiB0aHJlYWQgb25seQogICAgIHZv
aWQgcGVyZm9ybU5leHRNYWluVGhyZWFkVGFzaygpOwpAQCAtMTY1LDcgKzE3OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRDb3VudEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
aW50NjRfdCBjb3VudCwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSk7CiAgICAgdm9pZCBkaWREZWxldGVSYW5nZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJl
cXVlc3RJRCwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
CiAKLSAgICB2b2lkIGRpZFNodXRkb3duQmFja2luZ1N0b3JlKCk7CisgICAgdm9pZCBkaWRTaHV0
ZG93bkJhY2tpbmdTdG9yZShVbmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZSk7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZUJvb2xSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNz
KTsKIAogICAgIGJvb2wgbV9hY2NlcHRpbmdOZXdSZXF1ZXN0czsKQEAgLTE3Myw2ICsxODcsNyBA
QCBwcml2YXRlOgogICAgIERlcXVlPFJlZlB0cjxBc3luY1JlcXVlc3Q+PiBtX3BlbmRpbmdNZXRh
ZGF0YVJlcXVlc3RzOwogICAgIEhhc2hNYXA8SURCSWRlbnRpZmllciwgUmVmUHRyPEFzeW5jUmVx
dWVzdD4+IG1fcGVuZGluZ1RyYW5zYWN0aW9uUmVxdWVzdHM7CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPEFzeW5jUmVxdWVzdD4+IG1fcGVuZGluZ0RhdGFiYXNlVGFza3M7CisgICAgUmVm
UHRyPEFzeW5jUmVxdWVzdD4gbV9wZW5kaW5nU2h1dGRvd25UYXNrOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGE+IG1fbWV0YWRhdGE7CiAgICAgYm9v
bCBtX2RpZEdldE1ldGFkYXRhRnJvbUJhY2tpbmdTdG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9J
bmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcApp
bmRleCA2MGMwZTZmLi43YmJmZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNR
TGl0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9z
cWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKICNpbmNsdWRlICJJREJTZXJp
YWxpemF0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTGl0ZUlEQkN1
cnNvci5oIgogI2luY2x1ZGUgIlNRTGl0ZUlEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CkBAIC02Nyw2ICs2OCw5IEBAIFVuaXF1ZUlEQkRhdGFiYXNlQmFj
a2luZ1N0b3JlU1FMaXRlOjpVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZShjb25z
dCBVCiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6flVuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlU1FMaXRlKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
KworICAgIG1fdHJhbnNhY3Rpb25zLmNsZWFyKCk7CisgICAgbV9zcWxpdGVEQiA9IG51bGxwdHI7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZU1ldGFkYXRhPiBVbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsTWV0YWRhdGEo
KQpAQCAtMjk0LDcgKzI5OCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZU1ldGFkYXRh
PiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Z2V0T3JFCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBTdHJpbmcgZGJGaWxlbmFtZSA9IHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3RvcnksICJJbmRleGVkREIu
c3FsaXRlMyIpOworICAgIFN0cmluZyBkYkZpbGVuYW1lID0gVW5pcXVlSURCRGF0YWJhc2U6OmNh
bGN1bGF0ZUFic29sdXRlRGF0YWJhc2VGaWxlbmFtZShtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rv
cnkpOworCiAgICAgbV9zcWxpdGVEQiA9IG9wZW5TUUxpdGVEYXRhYmFzZUF0UGF0aChkYkZpbGVu
YW1lKTsKICAgICBpZiAoIW1fc3FsaXRlREIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCA3ZGM1ZTNk
Li45YTJhYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ3Jvc3NUaHJl
YWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaApAQCAtMzQsNiArMzQsOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBJREJJZGVu
dGlmaWVyOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyOworCitlbnVtIGNsYXNz
IFVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlOwogfQogCiBuYW1lc3BhY2UgV1RGIHsKQEAg
LTUwLDYgKzUyLDE0IEBAIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxm
YWxzZSwgZmFsc2UsIFdlYktpdDo6SURCSWRlbnRpZmllcj4gewogICAgIHN0YXRpYyBXZWJLaXQ6
OklEQklkZW50aWZpZXIgY29weShjb25zdCBXZWJLaXQ6OklEQklkZW50aWZpZXImKTsKIH07CiAK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
V2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZVNodXRkb3duVHlwZT4geworICAgIHN0YXRpYyBXZWJL
aXQ6OlVuaXF1ZUlEQkRhdGFiYXNlU2h1dGRvd25UeXBlIGNvcHkoY29uc3QgV2ViS2l0OjpVbmlx
dWVJREJEYXRhYmFzZVNodXRkb3duVHlwZSYgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0
eXBlOworICAgIH0KK307CisKIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIFZlY3RvcjxjaGFyPj4gewogICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4g
Y29weShjb25zdCBWZWN0b3I8Y2hhcj4mKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZh
Y3RvcnlCYWNrZW5kLmNwcAppbmRleCA3YmU3Y2ZiLi5hNDcxMTMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXZWJJ
REJGYWN0b3J5QmFja2VuZDo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHIKIHZvaWQgV2ViSURCRmFjdG9yeUJhY2tlbmQ6Om9wZW4oY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZU5hbWUsIHVpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgdHJhbnNhY3Rpb25J
ZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3JpZ2luKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgTE9HKFN0b3JhZ2VBUEksICJXZWJJREJG
YWN0b3J5QmFja2VuZDo6b3BlbiIpOworICAgIExPRyhJREIsICJXZWJJREJGYWN0b3J5QmFja2Vu
ZDo6b3BlbiIpOwogCiAgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IHVuaXF1ZURhdGFi
YXNlSWRlbnRpZmllcihkYXRhYmFzZU5hbWUsIG9wZW5pbmdPcmlnaW4sIG1haW5GcmFtZU9yaWdp
bik7CiAgICAgaWYgKGRhdGFiYXNlSWRlbnRpZmllci5pc051bGwoKSkgewpAQCAtOTUsOSArOTUs
MzAgQEAgdm9pZCBXZWJJREJGYWN0b3J5QmFja2VuZDo6b3Blbihjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgdWludDY0X3QgdmVyc2lvbiwgaW4KICAgICBkYXRhYmFzZUJhY2tlbmQtPm9wZW5D
b25uZWN0aW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZl
cnNpb24pOwogfQogCi12b2lkIFdlYklEQkZhY3RvcnlCYWNrZW5kOjpkZWxldGVEYXRhYmFzZShj
b25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJikKK3ZvaWQg
V2ViSURCRmFjdG9yeUJhY2tlbmQ6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgY29uc3QgU2VjdXJp
dHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJREIs
ICJXZWJJREJGYWN0b3J5QmFja2VuZDo6ZGVsZXRlRGF0YWJhc2UiKTsKKworICAgIFN0cmluZyBk
YXRhYmFzZUlkZW50aWZpZXIgPSB1bmlxdWVEYXRhYmFzZUlkZW50aWZpZXIoZGF0YWJhc2VOYW1l
LCBvcGVuaW5nT3JpZ2luLCBtYWluRnJhbWVPcmlnaW4pOworICAgIGlmIChkYXRhYmFzZUlkZW50
aWZpZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZEFjY2Vzc0Vycm9yLCAi
RG9jdW1lbnQgaXMgbm90IGFsbG93ZWQgdG8gdXNlIEluZGV4ZWQgRGF0YWJhc2VzIikpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgdGhlcmUncyBhbHJlYWR5IGEgY29ubmVj
dGlvbiB0byB0aGUgZGF0YWJhc2UsIGRlbGV0ZSBpdCBkaXJlY3RseS4KKyAgICBJREJEYXRhYmFz
ZUJhY2tlbmRNYXA6Oml0ZXJhdG9yIGl0ID0gc2hhcmVkRGF0YWJhc2VCYWNrZW5kTWFwKCkuZmlu
ZChkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIGlmIChpdCAhPSBzaGFyZWREYXRhYmFzZUJhY2tl
bmRNYXAoKS5lbmQoKSkgeworICAgICAgICBpdC0+dmFsdWUtPmRlbGV0ZURhdGFiYXNlKGNhbGxi
YWNrcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8SURCU2VydmVyQ29u
bmVjdGlvbj4gc2VydmVyQ29ubmVjdGlvbiA9IFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmNyZWF0
ZShkYXRhYmFzZU5hbWUsIG9wZW5pbmdPcmlnaW4sIG1haW5GcmFtZU9yaWdpbik7CisgICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNr
ZW5kOjpjcmVhdGUoZGF0YWJhc2VOYW1lLCBkYXRhYmFzZUlkZW50aWZpZXIsIHRoaXMsICpzZXJ2
ZXJDb25uZWN0aW9uKTsKKworICAgIHNoYXJlZERhdGFiYXNlQmFja2VuZE1hcCgpLnNldChkYXRh
YmFzZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgZGF0YWJhc2VCYWNr
ZW5kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOworICAgIHNoYXJlZERhdGFiYXNlQmFja2Vu
ZE1hcCgpLnJlbW92ZShkYXRhYmFzZUlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYklEQkZhY3Rv
cnlCYWNrZW5kOjpyZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuaAppbmRleCA0YTExMTk0
Li5lZWZmMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCRmFjdG9yeUJhY2tlbmQuaApAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1l
cyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBkYXRhRGlyKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIHVpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRh
dGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdP
cmlnaW4sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBtYWluRnJhbWVPcmlnaW4pIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIGRhdGFEaXIpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRh
YmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgbWFpbkZyYW1lT3Jp
Z2luLFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgZGF0YURpcikgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgdW5pcXVl
SWRlbnRpZmllcikgb3ZlcnJpZGU7CiAK
</data>
<flag name="review"
          id="246942"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>