<?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>194583</bug_id>
          
          <creation_ts>2019-02-12 22:10:32 -0800</creation_ts>
          <short_desc>Cache the results of BytecodeGenerator::getVariablesUnderTDZ</short_desc>
          <delta_ts>2019-02-14 16:06:38 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1505610</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-12 22:10:32 -0800</bug_when>
    <thetext>To speed up repeated computations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505611</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-12 22:12:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/48028140&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505630</commentid>
    <comment_count>2</comment_count>
      <attachid>361900</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-12 23:18:58 -0800</bug_when>
    <thetext>Created attachment 361900
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505670</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-13 01:38:35 -0800</bug_when>
    <thetext>Ugh, our bytecode-cache tests are slightly wrong. It expects that scripts never change -- however, my test is precisely a script that changes on each invocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505671</commentid>
    <comment_count>4</comment_count>
      <attachid>361900</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-13 02:01:01 -0800</bug_when>
    <thetext>Comment on attachment 361900
patch

Attachment 361900 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/11132300

New failing tests:
microbenchmarks/cache-get-variables-under-tdz-in-bytecode-generator.js.bytecode-cache
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506378</commentid>
    <comment_count>5</comment_count>
      <attachid>361900</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-14 14:23:56 -0800</bug_when>
    <thetext>Comment on attachment 361900
patch

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

r=me with one suggestion.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1317
&gt; +        uint64_t m_tdzStackEpoch { 1 };
&gt; +        uint64_t m_cachedVariablesUnderTDZEpoch { 0 };
&gt; +        CompactVariableMap::Handle m_cachedVariablesUnderTDZ;

Why not clearing m_cachedVariablesUnderTDZ when changing tdz stack instead of tracking the change with epoch? (Adding `explicit operator bool()` to CompactVariableMap::Handle, and clear the cached handle instead of incrementing epoch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506379</commentid>
    <comment_count>6</comment_count>
      <attachid>361900</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-14 14:27:38 -0800</bug_when>
    <thetext>Comment on attachment 361900
patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:1317
&gt;&gt; +        CompactVariableMap::Handle m_cachedVariablesUnderTDZ;
&gt; 
&gt; Why not clearing m_cachedVariablesUnderTDZ when changing tdz stack instead of tracking the change with epoch? (Adding `explicit operator bool()` to CompactVariableMap::Handle, and clear the cached handle instead of incrementing epoch).

Sounds good. Not sure why I went with a more complicated implementation. This is much nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506406</commentid>
    <comment_count>7</comment_count>
      <attachid>362073</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-14 15:39:28 -0800</bug_when>
    <thetext>Created attachment 362073
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506420</commentid>
    <comment_count>8</comment_count>
      <attachid>362073</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-14 16:06:36 -0800</bug_when>
    <thetext>Comment on attachment 362073
patch for landing

Clearing flags on attachment: 362073

Committed r241571: &lt;https://trac.webkit.org/changeset/241571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506421</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-14 16:06:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361900</attachid>
            <date>2019-02-12 23:18:58 -0800</date>
            <delta_ts>2019-02-14 15:39:28 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>17326</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDEzNDcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE5LTAyLTEyICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIENhY2hlIHRoZSByZXN1bHRzIG9mIEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZXRWYXJpYWJsZXNVbmRlclREWgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODAyODE0MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9jYWNoZS1nZXQtdmFyaWFibGVzLXVuZGVyLXRkei1pbi1ieXRlY29kZS1nZW5lcmF0
b3IuanM6IEFkZGVkLgorICAgICAgICAoaS5zY3JpcHQpOgorICAgICAgICAoaS5NYXRoLnJhbmRv
bSk6CisKIDIwMTktMDItMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBTdHJpbmcuZnJvbUNoYXJDb2RlJ3Mgc2xvdyBwYXRoIGFsd2F5cyBnZW5l
cmF0ZXMgMTZiaXQgc3RyaW5nCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9jYWNoZS1n
ZXQtdmFyaWFibGVzLXVuZGVyLXRkei1pbi1ieXRlY29kZS1nZW5lcmF0b3IuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FjaGUtZ2V0LXZhcmlhYmxlcy11bmRlci10
ZHotaW4tYnl0ZWNvZGUtZ2VuZXJhdG9yLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2NhY2hlLWdldC12YXJpYWJsZXMtdW5kZXItdGR6LWluLWJ5dGVjb2RlLWdl
bmVyYXRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACitsZXQgc2NyaXB0ID0g
IigoKSA9PiB7IjsKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgc2NyaXB0
ICs9IGBsZXQgeCR7aX0gPSAke2l9O1xuYDsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKKyAgICBzY3JpcHQgKz0gYGZ1bmN0aW9uIGYke2l9KCkgeyByZXR1cm4gImZvbyI7
IH1cbmA7Cit9CisKK3NjcmlwdCArPSAifSkoKTsiCisKK2xldCBzdGFydCA9IERhdGUubm93KCk7
Citmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAkLmV2YWxTY3JpcHQoYGNhY2hl
QnVzdCA9ICR7TWF0aC5yYW5kb20oKX07ICR7c2NyaXB0fWApOworfQorCitpZiAoZmFsc2UpCisg
ICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjQxMjMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE5LTAyLTEyICBTYWFtIGJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIENhY2hlIHRoZSByZXN1bHRzIG9mIEJ5dGVj
b2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRlclREWgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80ODAyODE0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIG1ha2VzIGl0IHNvIHRoYXQgZ2V0VmFyaWFibGVzVW5kZXJURFogY2Fj
aGVzIGEgcmVzdWx0IG9mCisgICAgICAgIENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlLiBnZXRW
YXJpYWJsZXNVbmRlclREWiBpcyBjb3N0bHkgd2hlbgorICAgICAgICBpdCdzIGNhbGxlZCBpbiBh
biBlbnZpcm9ubWVudCB3aGVyZSB0aGVyZSBhcmUgYSBsb3Qgb2YgdmFyaWFibGVzLgorICAgICAg
ICBUaGlzIHBhdGNoIG1ha2VzIGl0IHNvIHdlIGNhY2hlIGl0cyByZXN1bHRzLiBUaGlzIGlzIHBy
b2ZpdGFibGUgd2hlbgorICAgICAgICBnZXRWYXJpYWJsZXNVbmRlclREWiBpcyBjYWxsZWQgcmVw
ZWF0ZWRseSB3aXRoIHRoZSBzYW1lIGVudmlyb25tZW50CisgICAgICAgIHN0YXRlLiBUaGlzIGlz
IGNvbW1vbiBzaW5jZSB3ZSBjYWxsIHRoaXMgZXZlcnkgdGltZSB3ZSBlbmNvdW50ZXIgYQorICAg
ICAgICBmdW5jdGlvbiBkZWZpbml0aW9uL2V4cHJlc3Npb24gbm9kZS4KKworICAgICAgICAqIGJ1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVj
dXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnBv
cExleGljYWxTY29wZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmxpZnRURFpDaGVja0lmUG9zc2libGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6cHVzaFREWlZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZXRWYXJpYWJsZXNVbmRlclREWik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpy
ZXN0b3JlVERaU3RhY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAg
ICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkNv
bXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlOjpIYW5kbGUpOgorICAgICAgICAoSlNDOjpDb21wYWN0
VmFyaWFibGVNYXA6OkhhbmRsZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZSk6
CisKIDIwMTktMDItMDggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2Ugc2hvdWxkIG9ubHkgbWFrZSByb3BlIHN0cmluZ3Mgd2hlbiBjb25jYXRlbmF0
aW5nIHN0cmluZ3MgbG9uZyBlbm91Z2guCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAkocmV2aXNpb24gMjQxMjMw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3ICsyNTgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQnVpbHRpbkV4ZWN1CiAgICAgfQogCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBk
dW1teVREWlZhcmlhYmxlczsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNv
dXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1v
ZGU6OkNsYXNzaWMsIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5
LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIHZtLm1fY29tcGFjdFZhcmlhYmxlTWFwLT5n
ZXQoZHVtbXlURFpWYXJpYWJsZXMpLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzQnVpbHRp
bkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxl
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDI0MTIzMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25z
dHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRN
b2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xh
c3NDb25zdHJ1Y3RvcikKK1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VD
b2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1
bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFy
c2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSBwYXJl
bnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlw
ZSwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikKICAgICA6IEJhc2UoKnZt
LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ZpcnN0TGluZU9mZnNldChub2RlLT5maXJzdExpbmUoKSAt
IHBhcmVudFNvdXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpKQogICAgICwgbV9saW5lQ291
bnQobm9kZS0+bGFzdExpbmUoKSAtIG5vZGUtPmZpcnN0TGluZSgpKQpAQCAtMTA3LDcgKzEwNyw3
IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fZWNt
YU5hbWUobm9kZS0+ZWNtYU5hbWUoKSkKICAgICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVy
cmVkTmFtZSgpKQogICAgICwgbV9jbGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKQotICAg
ICwgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyh2bS0+bV9jb21wYWN0VmFyaWFibGVNYXAtPmdl
dChwYXJlbnRTY29wZVREWlZhcmlhYmxlcykpCisgICAgLCBtX3BhcmVudFNjb3BlVERaVmFyaWFi
bGVzKFdURk1vdmUocGFyZW50U2NvcGVURFpWYXJpYWJsZXMpKQogewogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGVzZSBiaXRmaWVsZHMgYXJlIGFkZXF1YXRlbHkgd2lkZS4KICAgICBBU1NFUlQobV9jb25z
dHJ1Y3RBYmlsaXR5ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmlsaXR5KSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAkocmV2aXNpb24gMjQxMjMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnZt
LnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2Uuc3BhY2U7CiAgICAgfQogCi0gICAgc3Rh
dGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0
aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RB
YmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0TW9kZSwgVmFyaWFibGVFbnZpcm9ubWVu
dCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkK
KyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlu
a2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBDb21wYWN0VmFy
aWFibGVNYXA6OkhhbmRsZSBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRU
eXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1
Y3RvciA9IGZhbHNlKQogICAgIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUq
IGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU+KHZtLT5oZWFwKSkKICAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNv
dXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlw
dE1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQnVp
bHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgc291
cmNlTWFwcGluZ1VSTCkgeyBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUgPSBzb3VyY2VNYXBw
aW5nVVJMOyB9CiAKIHByaXZhdGU6Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0q
LCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2Rl
LCBWYXJpYWJsZUVudmlyb25tZW50JiwgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFk
YXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNl
clNjcmlwdE1vZGUsIENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlLCAgSlNDOjpEZXJpdmVkQ29u
dGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERlY29kZXImLCBWYXJpYWJsZUVudmlyb25tZW50Jiwg
Y29uc3QgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlJik7CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0
TGluZU9mZnNldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNDEyMzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE5NSw2ICsyMTk1LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6cG9wTGV4aWNhbFNjb3BlSQogICAgIH0KIAogICAgIG1fVERaU3RhY2sucmVtb3ZlTGFzdCgp
OworICAgICsrbV90ZHpTdGFja0Vwb2NoOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpw
cmVwYXJlTGV4aWNhbFNjb3BlRm9yTmV4dEZvckxvb3BJdGVyYXRpb24oVmFyaWFibGVFbnZpcm9u
bWVudE5vZGUqIG5vZGUsIFJlZ2lzdGVySUQqIGxvb3BTeW1ib2xUYWJsZSkKQEAgLTI4MTQsOCAr
MjgxNSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpsaWZ0VERaQ2hlY2tJZlBvCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9URFpTdGFjay5zaXplKCk7IGktLTspIHsKICAgICAgICAgYXV0
byBpdGVyID0gbV9URFpTdGFja1tpXS5maW5kKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoaXRl
ciAhPSBtX1REWlN0YWNrW2ldLmVuZCgpKSB7Ci0gICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUg
PT0gVERaTmVjZXNzaXR5TGV2ZWw6Ok9wdGltaXplKQorICAgICAgICAgICAgaWYgKGl0ZXItPnZh
bHVlID09IFREWk5lY2Vzc2l0eUxldmVsOjpPcHRpbWl6ZSkgeworICAgICAgICAgICAgICAgICsr
bV90ZHpTdGFja0Vwb2NoOwogICAgICAgICAgICAgICAgIGl0ZXItPnZhbHVlID0gVERaTmVjZXNz
aXR5TGV2ZWw6Ok5vdE5lZWRlZDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjg0MCwxMCArMjg0MywxNiBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzCiAgICAgICAgIG1hcC5hZGQoZW50cnkua2V5LCBlbnRy
eS52YWx1ZS5pc0Z1bmN0aW9uKCkgPyBURFpOZWNlc3NpdHlMZXZlbDo6Tm90TmVlZGVkIDogbGV2
ZWwpOwogCiAgICAgbV9URFpTdGFjay5hcHBlbmQoV1RGTW92ZShtYXApKTsKKyAgICArK21fdGR6
U3RhY2tFcG9jaDsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0VmFyaWFibGVzVW5k
ZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYgcmVzdWx0KQorQ29tcGFjdFZhcmlhYmxlTWFwOjpI
YW5kbGUgQnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVyVERaKCkKIHsKKyAgICBp
ZiAobV90ZHpTdGFja0Vwb2NoID09IG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFpFcG9jaCkKKyAg
ICAgICAgcmV0dXJuIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFo7CisKKyAgICBtX2NhY2hlZFZh
cmlhYmxlc1VuZGVyVERaRXBvY2ggPSBtX3RkelN0YWNrRXBvY2g7CisKICAgICAvLyBXZSBrZWVw
IHRyYWNrIG9mIHZhcmlhYmxlc1RoYXREb250TmVlZFREWiBpbiB0aGlzIGFsZ29yaXRobSB0byBw
cmV2ZW50CiAgICAgLy8gcmVwb3J0aW5nIHRoYXQgIngiIGlzIHVuZGVyIFREWiBpZiB0aGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCBhdCAiLi4uIi4KICAgICAvLwpAQCAtMjg1NCwxOCArMjg2MywyMSBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRlCiAgICAgLy8gICAgICAg
ICB9CiAgICAgLy8gICAgICAgICBsZXQgeDsKICAgICAvLyAgICAgfQotICAgIC8vCiAgICAgU21h
bGxQdHJTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqLCAxNj4gdmFyaWFibGVzVGhhdERvbnROZWVkVERa
OworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW52aXJvbm1lbnQ7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9URFpTdGFjay5zaXplKCk7IGktLTsgKSB7CiAgICAgICAgIGF1dG8mIG1hcCA9IG1f
VERaU3RhY2tbaV07CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtYXApICB7CiAgICAgICAg
ICAgICBpZiAoZW50cnkudmFsdWUgIT0gVERaTmVjZXNzaXR5TGV2ZWw6Ok5vdE5lZWRlZCkgewog
ICAgICAgICAgICAgICAgIGlmICghdmFyaWFibGVzVGhhdERvbnROZWVkVERaLmNvbnRhaW5zKGVu
dHJ5LmtleS5nZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZW50cnkua2V5
LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuYWRkKGVudHJ5LmtleS5n
ZXQoKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB2YXJpYWJsZXNUaGF0
RG9udE5lZWRURFouYWRkKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CisKKyAg
ICBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaID0gbV92bS0+bV9jb21wYWN0VmFyaWFibGVNYXAt
PmdldChlbnZpcm9ubWVudCk7CisgICAgcmV0dXJuIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFo7
CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlVERaU3RhY2soQnl0ZWNvZGVH
ZW5lcmF0b3I6OlByZXNlcnZlZFREWlN0YWNrJiBwcmVzZXJ2ZWRTdGFjaykKQEAgLTI4NzYsNiAr
Mjg4OCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlVERaU3RhY2sKIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVURFpTdGFjayhjb25zdCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJlc2VydmVkVERaU3RhY2smIHByZXNlcnZlZFN0YWNrKQogewogICAgIG1fVERaU3RhY2sg
PSBwcmVzZXJ2ZWRTdGFjay5tX3ByZXNlcnZlZFREWlN0YWNrOworICAgICsrbV90ZHpTdGFja0Vw
b2NoOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld09iamVjdChS
ZWdpc3RlcklEKiBkc3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyNDEyMzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExMzcsOCArMTEzNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6
OkRlcml2ZWRNZXRob2RDb250ZXh0OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBWYXJp
YWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwotICAgICAgICAgICAgZ2V0VmFyaWFi
bGVzVW5kZXJURFoodmFyaWFibGVzVW5kZXJURFopOworICAgICAgICAgICAgQ29tcGFjdFZhcmlh
YmxlTWFwOjpIYW5kbGUgdmFyaWFibGVzVW5kZXJURFogPSBnZXRWYXJpYWJsZXNVbmRlclREWigp
OwogCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhlc2UgZmxhZ3MsIFBhcnNlck1vZGVzIGFuZCBw
cm9wYWdhdGlvbiB0byBYWFhDb2RlQmxvY2tzIHNob3VsZCBiZSByZW9yZ2FuaXplZC4KICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcK
QEAgLTExNDcsMTAgKzExNDYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiBtZXRhZGF0YS0+Y29u
c3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQogICAgICAgICAgICAgICAg
IGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Q7CiAKLSAg
ICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0s
IG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBV
bmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVj
dEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgdmFyaWFibGVzVW5kZXJURFosIG5ld0Rlcml2ZWRDb250
ZXh0VHlwZSk7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIG1ldGFkYXRhLCBpc0J1aWx0aW5G
dW5jdGlvbigpID8gVW5saW5rZWRCdWlsdGluRnVuY3Rpb24gOiBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2RlKCksIFdURk1vdmUodmFyaWFibGVzVW5k
ZXJURFopLCBuZXdEZXJpdmVkQ29udGV4dFR5cGUpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9p
ZCBnZXRWYXJpYWJsZXNVbmRlclREWihWYXJpYWJsZUVudmlyb25tZW50Jik7CisgICAgICAgIENv
bXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlIGdldFZhcmlhYmxlc1VuZGVyVERaKCk7CiAKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50cywgUmVnaXN0ZXJJRCogZmlyc3RGcmVlUmVnaXN0ZXIsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNh
bGwpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsT3A+CkBAIC0xMzEzLDYgKzEzMTIs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dG
dW5jdGlvbkNvbnRleHQ7CiAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250
ZXh0VHlwZSB7IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSB9OwogCisgICAgICAgIHVpbnQ2NF90
IG1fdGR6U3RhY2tFcG9jaCB7IDEgfTsKKyAgICAgICAgdWludDY0X3QgbV9jYWNoZWRWYXJpYWJs
ZXNVbmRlclREWkVwb2NoIHsgMCB9OworICAgICAgICBDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRs
ZSBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaOworCiAgICAgICAgIHVzaW5nIENhdGNoRW50cnkg
PSBzdGQ6OnR1cGxlPFRyeURhdGEqLCBWaXJ0dWFsUmVnaXN0ZXIsIFZpcnR1YWxSZWdpc3Rlcj47
CiAgICAgICAgIFZlY3RvcjxDYXRjaEVudHJ5PiBtX2NhdGNoZXNUb0VtaXQ7CiAgICAgfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmly
b25tZW50LmNwcAkocmV2aXNpb24gMjQxMjMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDQgKzE4
MywyNyBAQCBDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZTo6fkhhbmRsZSgpCiAgICAgfQogfQog
CitDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZTo6SGFuZGxlKGNvbnN0IENvbXBhY3RWYXJpYWJs
ZU1hcDo6SGFuZGxlJiBvdGhlcikKK3sKKyAgICAqdGhpcyA9IG90aGVyOworfQorCitDb21wYWN0
VmFyaWFibGVNYXA6OkhhbmRsZSYgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU6Om9wZXJhdG9y
PShjb25zdCBIYW5kbGUmIG90aGVyKQoreworICAgIG1fbWFwID0gb3RoZXIubV9tYXA7CisgICAg
bV9lbnZpcm9ubWVudCA9IG90aGVyLm1fZW52aXJvbm1lbnQ7CisKKyAgICBpZiAoIW1fbWFwKSB7
CisgICAgICAgIEFTU0VSVCghbV9lbnZpcm9ubWVudCk7CisgICAgICAgIC8vIFRoaXMgaGFwcGVu
cyBpZiBgb3RoZXJgIHdlcmUgbW92ZWQgaW50byBhIGRpZmZlcmVudCBoYW5kbGUuCisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBhdXRvIGl0ZXIgPSBtX21hcC0+bV9tYXAuZmlu
ZChDb21wYWN0VmFyaWFibGVNYXBLZXkgeyAqbV9lbnZpcm9ubWVudCB9KTsKKyAgICBSRUxFQVNF
X0FTU0VSVChpdGVyICE9IG1fbWFwLT5tX21hcC5lbmQoKSk7CisgICAgKytpdGVyLT52YWx1ZTsK
KworICAgIHJldHVybiAqdGhpczsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAko
cmV2aXNpb24gMjQxMjMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw4ICsyMDQsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIGNsYXNzIENvbXBhY3RWYXJpYWJsZU1hcCA6IHB1YmxpYyBSZWZDb3VudGVkPENv
bXBhY3RWYXJpYWJsZU1hcD4gewogcHVibGljOgogICAgIGNsYXNzIEhhbmRsZSB7Ci0gICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7IC8vIElmIHdlIHdhbnRlZCB0byBtYWtlIHRo
aXMgY29weWFibGUsIHdlJ2QgbmVlZCB0byBkbyBhIGhhc2h0YWJsZSBsb29rdXAgYW5kIGJ1bXAg
dGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgbWFwIGVudHJ5LgogICAgIHB1YmxpYzoKKyAgICAg
ICAgSGFuZGxlKCkgPSBkZWZhdWx0OworCiAgICAgICAgIEhhbmRsZShDb21wYWN0VmFyaWFibGVF
bnZpcm9ubWVudCYgZW52aXJvbm1lbnQsIENvbXBhY3RWYXJpYWJsZU1hcCYgbWFwKQogICAgICAg
ICAgICAgOiBtX2Vudmlyb25tZW50KCZlbnZpcm9ubWVudCkKICAgICAgICAgICAgICwgbV9tYXAo
Jm1hcCkKQEAgLTIxOCw2ICsyMTksMTAgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKCFv
dGhlci5tX21hcCk7CiAgICAgICAgICAgICBvdGhlci5tX2Vudmlyb25tZW50ID0gbnVsbHB0cjsK
ICAgICAgICAgfQorCisgICAgICAgIEhhbmRsZShjb25zdCBIYW5kbGUmKTsKKyAgICAgICAgSGFu
ZGxlJiBvcGVyYXRvcj0oY29uc3QgSGFuZGxlJik7CisKICAgICAgICAgfkhhbmRsZSgpOwogCiAg
ICAgICAgIGNvbnN0IENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCgpIGNv
bnN0CkBAIC0yMjYsNyArMjMxLDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICBwcml2YXRl
OgotICAgICAgICBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCogbV9lbnZpcm9ubWVudDsKKyAg
ICAgICAgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQqIG1fZW52aXJvbm1lbnQgeyBudWxscHRy
IH07CiAgICAgICAgIFJlZlB0cjxDb21wYWN0VmFyaWFibGVNYXA+IG1fbWFwOwogICAgIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAkocmV2
aXNpb24gMjQxMjMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmcKICAgICAvLyBpbiB0aGUgZ2xvYmFsIGxleGljYWwgZW52
aXJvbm1lbnQsIHdoaWNoIHdlIGFsd2F5cyBURFogY2hlY2sgYWNjZXNzZXMgZnJvbS4KICAgICBW
YXJpYWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVzOwogICAgIENvbnN0cnVjdEFiaWxp
dHkgY29uc3RydWN0QWJpbGl0eSA9IGNvbnN0cnVjdEFiaWxpdHlGb3JQYXJzZU1vZGUobWV0YWRh
dGEtPnBhcnNlTW9kZSgpKTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNv
dXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHks
IEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgZW1wdHlURFpWYXJpYWJsZXMsIERlcml2ZWRD
b250ZXh0VHlwZTo6Tm9uZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBz
b3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5
LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIHZtLm1fY29tcGFjdFZhcmlhYmxlTWFwLT5n
ZXQoZW1wdHlURFpWYXJpYWJsZXMpLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpOwogCiAgICAg
ZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVy
KCktPnNvdXJjZVVSTCgpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldFNvdXJjZU1hcHBp
bmdVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1hcHBpbmdVUkwoKSk7Cg==
</data>
<flag name="review"
          id="378540"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="378546"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362073</attachid>
            <date>2019-02-14 15:39:28 -0800</date>
            <delta_ts>2019-02-14 16:06:36 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>17315</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDE1NjYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE5LTAyLTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIENhY2hlIHRoZSByZXN1bHRzIG9mIEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZXRWYXJpYWJsZXNVbmRlclREWgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk0NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODAyODE0MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgICogbWljcm9iZW5j
aG1hcmtzL2NhY2hlLWdldC12YXJpYWJsZXMtdW5kZXItdGR6LWluLWJ5dGVjb2RlLWdlbmVyYXRv
ci5qczogQWRkZWQuCisKIDIwMTktMDItMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbSlNDXSBTdHJpbmcuZnJvbUNoYXJDb2RlJ3Mgc2xvdyBwYXRoIGFs
d2F5cyBnZW5lcmF0ZXMgMTZiaXQgc3RyaW5nCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9jYWNoZS1nZXQtdmFyaWFibGVzLXVuZGVyLXRkei1pbi1ieXRlY29kZS1nZW5lcmF0b3IuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvY2FjaGUtZ2V0LXZhcmlhYmxl
cy11bmRlci10ZHotaW4tYnl0ZWNvZGUtZ2VuZXJhdG9yLmpzCShub25leGlzdGVudCkKKysrIEpT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL2NhY2hlLWdldC12YXJpYWJsZXMtdW5kZXItdGR6LWluLWJ5
dGVjb2RlLWdlbmVyYXRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACisvL0Ag
cnVuRGVmYXVsdAorCitsZXQgc2NyaXB0ID0gIigoKSA9PiB7IjsKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7CisgICAgc2NyaXB0ICs9IGBsZXQgeCR7aX0gPSAke2l9O1xuYDsKK30K
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICBzY3JpcHQgKz0gYGZ1bmN0
aW9uIGYke2l9KCkgeyByZXR1cm4gImZvbyI7IH1cbmA7Cit9CisKK3NjcmlwdCArPSAifSkoKTsi
CisKK2xldCBzdGFydCA9IERhdGUubm93KCk7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kp
IHsKKyAgICAkLmV2YWxTY3JpcHQoYGNhY2hlQnVzdCA9ICR7TWF0aC5yYW5kb20oKX07ICR7c2Ny
aXB0fWApOworfQorCitpZiAoZmFsc2UpCisgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQxNTYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE5LTAyLTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IENhY2hlIHRoZSByZXN1bHRzIG9mIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRl
clREWgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0
NTgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODAyODE0MD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhh
dCBnZXRWYXJpYWJsZXNVbmRlclREWiBjYWNoZXMgYSByZXN1bHQgb2YKKyAgICAgICAgQ29tcGFj
dFZhcmlhYmxlTWFwOjpIYW5kbGUuIGdldFZhcmlhYmxlc1VuZGVyVERaIGlzIGNvc3RseSB3aGVu
CisgICAgICAgIGl0J3MgY2FsbGVkIGluIGFuIGVudmlyb25tZW50IHdoZXJlIHRoZXJlIGFyZSBh
IGxvdCBvZiB2YXJpYWJsZXMuCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gd2UgY2Fj
aGUgaXRzIHJlc3VsdHMuIFRoaXMgaXMgcHJvZml0YWJsZSB3aGVuCisgICAgICAgIGdldFZhcmlh
Ymxlc1VuZGVyVERaIGlzIGNhbGxlZCByZXBlYXRlZGx5IHdpdGggdGhlIHNhbWUgZW52aXJvbm1l
bnQKKyAgICAgICAgc3RhdGUuIFRoaXMgaXMgY29tbW9uIHNpbmNlIHdlIGNhbGwgdGhpcyBldmVy
eSB0aW1lIHdlIGVuY291bnRlciBhCisgICAgICAgIGZ1bmN0aW9uIGRlZmluaXRpb24vZXhwcmVz
c2lvbiBub2RlLgorCisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoK
KyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAg
IChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6cG9wTGV4aWNhbFNjb3BlSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bGlmdFREWkNoZWNrSWZQb3NzaWJsZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVyVERaKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVURFpTdGFjayk6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjptYWtlRnVuY3Rpb24pOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcDoKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGU6OkhhbmRs
ZSk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlOjpvcGVyYXRvcj0p
OgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6
OkNvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUpOgorCiAyMDE5LTAyLTE0ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTm9uLUpJVCBlbnRy
eXBvaW50cyBzaG91bGQgc2hhcmUgTmF0aXZlSklUQ29kZSBwZXIgZW50cnlwb2ludCB0eXBlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcAkocmV2aXNpb24gMjQxNTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCw3
ICsyNTgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1CiAgICAg
fQogCiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1teVREWlZhcmlhYmxlczsKLSAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25z
dHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFyaWFi
bGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0
cnVjdG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgJm1l
dGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNz
aWMsIHZtLm1fY29tcGFjdFZhcmlhYmxlTWFwLT5nZXQoZHVtbXlURFpWYXJpYWJsZXMpLCBEZXJp
dmVkQ29udGV4dFR5cGU6Ok5vbmUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsK
ICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDI0MTU2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc4LDcgKzc4LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBw
YXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0
VHlwZSwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvcikKK1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCBraW5kLCBDb25zdHJ1Y3RB
YmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBD
b21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0J1aWx0aW5EZWZhdWx0Q2xh
c3NDb25zdHJ1Y3RvcikKICAgICA6IEJhc2UoKnZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ZpcnN0
TGluZU9mZnNldChub2RlLT5maXJzdExpbmUoKSAtIHBhcmVudFNvdXJjZS5maXJzdExpbmUoKS5v
bmVCYXNlZEludCgpKQogICAgICwgbV9saW5lQ291bnQobm9kZS0+bGFzdExpbmUoKSAtIG5vZGUt
PmZpcnN0TGluZSgpKQpAQCAtMTA3LDcgKzEwNyw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1fZWNtYU5hbWUobm9kZS0+ZWNtYU5hbWUoKSkKICAg
ICAsIG1faW5mZXJyZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQogICAgICwgbV9jbGFzc1Nv
dXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKQotICAgICwgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxl
cyh2bS0+bV9jb21wYWN0VmFyaWFibGVNYXAtPmdldChwYXJlbnRTY29wZVREWlZhcmlhYmxlcykp
CisgICAgLCBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzKFdURk1vdmUocGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGVzZSBiaXRmaWVsZHMgYXJlIGFkZXF1
YXRlbHkgd2lkZS4KICAgICBBU1NFUlQobV9jb25zdHJ1Y3RBYmlsaXR5ID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmlsaXR5KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aAkocmV2aXNpb24gMjQxNTYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gJnZtLnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
U3BhY2Uuc3BhY2U7CiAgICAgfQogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUg
c2NyaXB0TW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMs
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVm
YXVsdENsYXNzQ29uc3RydWN0b3IgPSBmYWxzZSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVu
Y3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2Ny
aXB0TW9kZSBzY3JpcHRNb2RlLCBDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9v
bCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQogICAgIHsKICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKICAgICAg
ICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlv
bktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFi
bGVzLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
KTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTb3VyY2VNYXBwaW5n
VVJMRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgc291cmNlTWFwcGluZ1VSTCkgeyBtX3NvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmUgPSBzb3VyY2VNYXBwaW5nVVJMOyB9CiAKIHByaXZhdGU6Ci0gICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3Ry
dWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiwgIEpT
Qzo6RGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVj
dG9yKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVyZSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25L
aW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIENvbXBhY3RWYXJpYWJs
ZU1hcDo6SGFuZGxlLCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWlsdGluRGVm
YXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKERl
Y29kZXImLCBWYXJpYWJsZUVudmlyb25tZW50JiwgY29uc3QgQ2FjaGVkRnVuY3Rpb25FeGVjdXRh
YmxlJik7CiAKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZU9mZnNldDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCShyZXZpc2lvbiAyNDE1NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5NSw2ICsy
MTk1LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cG9wTGV4aWNhbFNjb3BlSQogICAgIH0K
IAogICAgIG1fVERaU3RhY2sucmVtb3ZlTGFzdCgpOworICAgIG1fY2FjaGVkVmFyaWFibGVzVW5k
ZXJURFogPSB7IH07CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXBhcmVMZXhpY2Fs
U2NvcGVGb3JOZXh0Rm9yTG9vcEl0ZXJhdGlvbihWYXJpYWJsZUVudmlyb25tZW50Tm9kZSogbm9k
ZSwgUmVnaXN0ZXJJRCogbG9vcFN5bWJvbFRhYmxlKQpAQCAtMjgxNCw4ICsyODE1LDEwIEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmxpZnRURFpDaGVja0lmUG8KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX1REWlN0YWNrLnNpemUoKTsgaS0tOykgewogICAgICAgICBhdXRvIGl0ZXIgPSBtX1RE
WlN0YWNrW2ldLmZpbmQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChpdGVyICE9IG1fVERaU3Rh
Y2tbaV0uZW5kKCkpIHsKLSAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZSA9PSBURFpOZWNlc3Np
dHlMZXZlbDo6T3B0aW1pemUpCisgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUgPT0gVERaTmVj
ZXNzaXR5TGV2ZWw6Ok9wdGltaXplKSB7CisgICAgICAgICAgICAgICAgbV9jYWNoZWRWYXJpYWJs
ZXNVbmRlclREWiA9IHsgfTsKICAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZSA9IFREWk5lY2Vz
c2l0eUxldmVsOjpOb3ROZWVkZWQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KQEAgLTI4NDAsMTAgKzI4NDMsMTQgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6cHVzaFREWlZhcmlhYmxlcwogICAgICAgICBtYXAuYWRkKGVudHJ5LmtleSwgZW50
cnkudmFsdWUuaXNGdW5jdGlvbigpID8gVERaTmVjZXNzaXR5TGV2ZWw6Ok5vdE5lZWRlZCA6IGxl
dmVsKTsKIAogICAgIG1fVERaU3RhY2suYXBwZW5kKFdURk1vdmUobWFwKSk7CisgICAgbV9jYWNo
ZWRWYXJpYWJsZXNVbmRlclREWiA9IHsgfTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
Z2V0VmFyaWFibGVzVW5kZXJURFooVmFyaWFibGVFbnZpcm9ubWVudCYgcmVzdWx0KQorQ29tcGFj
dFZhcmlhYmxlTWFwOjpIYW5kbGUgQnl0ZWNvZGVHZW5lcmF0b3I6OmdldFZhcmlhYmxlc1VuZGVy
VERaKCkKIHsKKyAgICBpZiAobV9jYWNoZWRWYXJpYWJsZXNVbmRlclREWikKKyAgICAgICAgcmV0
dXJuIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFo7CisKICAgICAvLyBXZSBrZWVwIHRyYWNrIG9m
IHZhcmlhYmxlc1RoYXREb250TmVlZFREWiBpbiB0aGlzIGFsZ29yaXRobSB0byBwcmV2ZW50CiAg
ICAgLy8gcmVwb3J0aW5nIHRoYXQgIngiIGlzIHVuZGVyIFREWiBpZiB0aGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBhdCAiLi4uIi4KICAgICAvLwpAQCAtMjg1NCwxOCArMjg2MSwyMSBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpnZXRWYXJpYWJsZXNVbmRlCiAgICAgLy8gICAgICAgICB9CiAgICAg
Ly8gICAgICAgICBsZXQgeDsKICAgICAvLyAgICAgfQotICAgIC8vCiAgICAgU21hbGxQdHJTZXQ8
VW5pcXVlZFN0cmluZ0ltcGwqLCAxNj4gdmFyaWFibGVzVGhhdERvbnROZWVkVERaOworICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQgZW52aXJvbm1lbnQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9U
RFpTdGFjay5zaXplKCk7IGktLTsgKSB7CiAgICAgICAgIGF1dG8mIG1hcCA9IG1fVERaU3RhY2tb
aV07CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtYXApICB7CiAgICAgICAgICAgICBpZiAo
ZW50cnkudmFsdWUgIT0gVERaTmVjZXNzaXR5TGV2ZWw6Ok5vdE5lZWRlZCkgewogICAgICAgICAg
ICAgICAgIGlmICghdmFyaWFibGVzVGhhdERvbnROZWVkVERaLmNvbnRhaW5zKGVudHJ5LmtleS5n
ZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZW50cnkua2V5LmdldCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuYWRkKGVudHJ5LmtleS5nZXQoKSk7CiAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB2YXJpYWJsZXNUaGF0RG9udE5lZWRU
RFouYWRkKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBtX2NhY2hl
ZFZhcmlhYmxlc1VuZGVyVERaID0gbV92bS0+bV9jb21wYWN0VmFyaWFibGVNYXAtPmdldChlbnZp
cm9ubWVudCk7CisgICAgcmV0dXJuIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJURFo7CiB9CiAKIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlVERaU3RhY2soQnl0ZWNvZGVHZW5lcmF0b3I6
OlByZXNlcnZlZFREWlN0YWNrJiBwcmVzZXJ2ZWRTdGFjaykKQEAgLTI4NzYsNiArMjg4Niw3IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnByZXNlcnZlVERaU3RhY2sKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OnJlc3RvcmVURFpTdGFjayhjb25zdCBCeXRlY29kZUdlbmVyYXRvcjo6UHJlc2Vy
dmVkVERaU3RhY2smIHByZXNlcnZlZFN0YWNrKQogewogICAgIG1fVERaU3RhY2sgPSBwcmVzZXJ2
ZWRTdGFjay5tX3ByZXNlcnZlZFREWlN0YWNrOworICAgIG1fY2FjaGVkVmFyaWFibGVzVW5kZXJU
RFogPSB7IH07CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3T2Jq
ZWN0KFJlZ2lzdGVySUQqIGRzdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDI0MTU2MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEzNyw4ICsxMTM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0
VHlwZTo6RGVyaXZlZE1ldGhvZENvbnRleHQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQgdmFyaWFibGVzVW5kZXJURFo7Ci0gICAgICAgICAgICBnZXRW
YXJpYWJsZXNVbmRlclREWih2YXJpYWJsZXNVbmRlclREWik7CisgICAgICAgICAgICBDb21wYWN0
VmFyaWFibGVNYXA6OkhhbmRsZSB2YXJpYWJsZXNVbmRlclREWiA9IGdldFZhcmlhYmxlc1VuZGVy
VERaKCk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGVzZSBmbGFncywgUGFyc2VyTW9kZXMg
YW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mgc2hvdWxkIGJlIHJlb3JnYW5pemVkLgog
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTU0NwpAQCAtMTE0NywxMCArMTE0NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRh
LT5jb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAgICAg
ICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdDsK
IAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
bV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24o
KSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29u
c3RydWN0QWJpbGl0eSwgc2NyaXB0TW9kZSgpLCB2YXJpYWJsZXNVbmRlclREWiwgbmV3RGVyaXZl
ZENvbnRleHRUeXBlKTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUoKSwgV1RGTW92ZSh2YXJpYWJs
ZXNVbmRlclREWiksIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIGdldFZhcmlhYmxlc1VuZGVyVERaKFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKKyAgICAg
ICAgQ29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUgZ2V0VmFyaWFibGVzVW5kZXJURFooKTsKIAog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29uc3RydWN0VmFyYXJncyhSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCog
YXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dh
YmxlQ2FsbCk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxPcD4KQEAgLTEzMTMsNiAr
MTMxMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fbmVlZHNUb1VwZGF0ZUFy
cm93RnVuY3Rpb25Db250ZXh0OwogICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGUgbV9kZXJpdmVk
Q29udGV4dFR5cGUgeyBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUgfTsKIAorICAgICAgICBDb21w
YWN0VmFyaWFibGVNYXA6OkhhbmRsZSBtX2NhY2hlZFZhcmlhYmxlc1VuZGVyVERaOworCiAgICAg
ICAgIHVzaW5nIENhdGNoRW50cnkgPSBzdGQ6OnR1cGxlPFRyeURhdGEqLCBWaXJ0dWFsUmVnaXN0
ZXIsIFZpcnR1YWxSZWdpc3Rlcj47CiAgICAgICAgIFZlY3RvcjxDYXRjaEVudHJ5PiBtX2NhdGNo
ZXNUb0VtaXQ7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAkocmV2aXNpb24gMjQxNTYzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgzLDQgKzE4MywyNyBAQCBDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZTo6
fkhhbmRsZSgpCiAgICAgfQogfQogCitDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZTo6SGFuZGxl
KGNvbnN0IENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlJiBvdGhlcikKK3sKKyAgICAqdGhpcyA9
IG90aGVyOworfQorCitDb21wYWN0VmFyaWFibGVNYXA6OkhhbmRsZSYgQ29tcGFjdFZhcmlhYmxl
TWFwOjpIYW5kbGU6Om9wZXJhdG9yPShjb25zdCBIYW5kbGUmIG90aGVyKQoreworICAgIG1fbWFw
ID0gb3RoZXIubV9tYXA7CisgICAgbV9lbnZpcm9ubWVudCA9IG90aGVyLm1fZW52aXJvbm1lbnQ7
CisKKyAgICBpZiAoIW1fbWFwKSB7CisgICAgICAgIEFTU0VSVCghbV9lbnZpcm9ubWVudCk7Cisg
ICAgICAgIC8vIFRoaXMgaGFwcGVucyBpZiBgb3RoZXJgIHdlcmUgbW92ZWQgaW50byBhIGRpZmZl
cmVudCBoYW5kbGUuCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBhdXRvIGl0
ZXIgPSBtX21hcC0+bV9tYXAuZmluZChDb21wYWN0VmFyaWFibGVNYXBLZXkgeyAqbV9lbnZpcm9u
bWVudCB9KTsKKyAgICBSRUxFQVNFX0FTU0VSVChpdGVyICE9IG1fbWFwLT5tX21hcC5lbmQoKSk7
CisgICAgKytpdGVyLT52YWx1ZTsKKworICAgIHJldHVybiAqdGhpczsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjQxNTYzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
NCw4ICsyMDQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIENvbXBhY3RWYXJpYWJsZU1hcCA6
IHB1YmxpYyBSZWZDb3VudGVkPENvbXBhY3RWYXJpYWJsZU1hcD4gewogcHVibGljOgogICAgIGNs
YXNzIEhhbmRsZSB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhhbmRsZSk7IC8vIElm
IHdlIHdhbnRlZCB0byBtYWtlIHRoaXMgY29weWFibGUsIHdlJ2QgbmVlZCB0byBkbyBhIGhhc2h0
YWJsZSBsb29rdXAgYW5kIGJ1bXAgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgbWFwIGVudHJ5
LgogICAgIHB1YmxpYzoKKyAgICAgICAgSGFuZGxlKCkgPSBkZWZhdWx0OworCiAgICAgICAgIEhh
bmRsZShDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQsIENvbXBhY3RWYXJp
YWJsZU1hcCYgbWFwKQogICAgICAgICAgICAgOiBtX2Vudmlyb25tZW50KCZlbnZpcm9ubWVudCkK
ICAgICAgICAgICAgICwgbV9tYXAoJm1hcCkKQEAgLTIxOCwxNSArMjE5LDIxIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIEFTU0VSVCghb3RoZXIubV9tYXApOwogICAgICAgICAgICAgb3RoZXIubV9l
bnZpcm9ubWVudCA9IG51bGxwdHI7CiAgICAgICAgIH0KKworICAgICAgICBIYW5kbGUoY29uc3Qg
SGFuZGxlJik7CisgICAgICAgIEhhbmRsZSYgb3BlcmF0b3I9KGNvbnN0IEhhbmRsZSYpOworCiAg
ICAgICAgIH5IYW5kbGUoKTsKIAorICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gISFtX21hcDsgfQorCiAgICAgICAgIGNvbnN0IENvbXBhY3RWYXJpYWJsZUVu
dmlyb25tZW50JiBlbnZpcm9ubWVudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiAqbV9lbnZpcm9ubWVudDsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQqIG1fZW52aXJvbm1lbnQ7CisgICAgICAgIENvbXBh
Y3RWYXJpYWJsZUVudmlyb25tZW50KiBtX2Vudmlyb25tZW50IHsgbnVsbHB0ciB9OwogICAgICAg
ICBSZWZQdHI8Q29tcGFjdFZhcmlhYmxlTWFwPiBtX21hcDsKICAgICB9OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHJldmlzaW9uIDI0MTU2
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Q29kZUNhY2hlOjpnCiAgICAgLy8gaW4gdGhlIGdsb2JhbCBsZXhpY2FsIGVudmlyb25tZW50LCB3
aGljaCB3ZSBhbHdheXMgVERaIGNoZWNrIGFjY2Vzc2VzIGZyb20uCiAgICAgVmFyaWFibGVFbnZp
cm9ubWVudCBlbXB0eVREWlZhcmlhYmxlczsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkgPSBjb25zdHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5wYXJzZU1v
ZGUoKSk7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFk
YXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNj
cmlwdE1vZGU6OkNsYXNzaWMsIGVtcHR5VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6
Ok5vbmUpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRh
ZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJT
Y3JpcHRNb2RlOjpDbGFzc2ljLCB2bS5tX2NvbXBhY3RWYXJpYWJsZU1hcC0+Z2V0KGVtcHR5VERa
VmFyaWFibGVzKSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lKTsKIAogICAgIGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+c2V0U291cmNlVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VV
UkwoKSk7CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0
aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VNYXBwaW5nVVJMKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>