<?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>180291</bug_id>
          
          <creation_ts>2017-12-01 15:32:24 -0800</creation_ts>
          <short_desc>Let&apos;s scramble ClassInfo pointers in cells.</short_desc>
          <delta_ts>2017-12-01 17:13:46 -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 Local 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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1377100</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-01 15:32:24 -0800</bug_when>
    <thetext>patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377101</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-01 15:32:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/35807620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377103</commentid>
    <comment_count>2</comment_count>
      <attachid>328170</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-01 15:40:02 -0800</bug_when>
    <thetext>Created attachment 328170
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377106</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-01 15:42:29 -0800</bug_when>
    <thetext>Attachment 328170 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp:31:  g_classInfoScrambledPtrKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp:32:  g_masmScrambledPtrKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 19 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>1377114</commentid>
    <comment_count>4</comment_count>
      <attachid>328170</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-01 15:49:46 -0800</bug_when>
    <thetext>Comment on attachment 328170
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377137</commentid>
    <comment_count>5</comment_count>
      <attachid>328180</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-01 16:17:20 -0800</bug_when>
    <thetext>Created attachment 328180
patch for landing + speculative build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377138</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-01 16:19:30 -0800</bug_when>
    <thetext>Attachment 328180 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp:31:  g_classInfoScrambledPtrKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp:32:  g_masmScrambledPtrKey is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 19 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>1377160</commentid>
    <comment_count>7</comment_count>
      <attachid>328186</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-01 16:48:28 -0800</bug_when>
    <thetext>Created attachment 328186
x86_64 benchmark result.

Perf appears to be neutral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377175</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-01 17:13:46 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r225437: &lt;http://trac.webkit.org/r225437&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328170</attachid>
            <date>2017-12-01 15:40:02 -0800</date>
            <delta_ts>2017-12-01 16:17:20 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-180291.patch</filename>
            <type>text/plain</type>
            <size>28003</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1NDIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE3LTEyLTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBM
ZXQncyBzY3JhbWJsZSBDbGFzc0luZm8gcG9pbnRlcnMgaW4gY2VsbHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM1ODA3NjIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNP
YmplY3RSZWYuY3BwOgorICAgICAgICAoY2xhc3NJbmZvUHJpdmF0ZSk6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFsaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6IGNvbnN0KToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJDb2RlUHRyOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrU3ViQ2xh
c3MpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3U3RyaW5n
T2JqZWN0KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld1N0cmluZ09iamVjdCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDaGVja1N1YkNsYXNzKToK
KyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5
SGVscGVyczo6ZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KToKKyAgICAgICAgKiBqaXQv
U3BlY2lhbGl6ZWRUaHVua0pJVC5oOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklU
Ojpsb2FkQXJndW1lbnRXaXRoU3BlY2lmaWNDbGFzcyk6CisgICAgICAgICogcnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZyk6
CisgICAgICAgICogcnVudGltZS9KU0NTY3JhbWJsZWRQdHIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6aW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
U2NyYW1ibGVkUHRyLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNEZXN0cnVjdGlibGVP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3Q6OmNsYXNzSW5mbyBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6OmNsYXNzSW5mbyBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6
CisKIDIwMTctMTItMDEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYkFzc2VtYmx5OiBzdGFjayB0cmFjZSBpbXByb3ZlbWVudCBmb2xsb3ctdXBzCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMjU0MjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2OSw2ICs3Njks
NyBAQCBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRv
ckZ1bmN0aW9uLmNwcAogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCitydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAKIHJ1bnRpbWUvSlNDYWxsZWUu
Y3BwCiBydW50aW1lL0pTQ2VsbC5jcHAKIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09i
amVjdC5oCShyZXZpc2lvbiAyMjU0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRl
ZiBKU0NhbGxiYWNrT2JqZWN0X2gKICNkZWZpbmUgSlNDYWxsYmFja09iamVjdF9oCiAKKyNpbmNs
dWRlICJKU0NTY3JhbWJsZWRQdHIuaCIKICNpbmNsdWRlICJKU09iamVjdFJlZi5oIgogI2luY2x1
ZGUgIkpTVmFsdWVSZWYuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgpAQCAtMjMzLDcgKzIzNCw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxiYWNrR2V0dGVyKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEpTQ2FsbGJhY2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKLSAgICBj
b25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOworICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBt
X2NsYXNzSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDIyNTQyMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MzEsNyArNDMxLDcgQEAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvUHJpdmF0ZQog
ICAgIGlmICh2bS5jdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0ICE9IGpzT2JqZWN0
KQogICAgICAgICByZXR1cm4ganNPYmplY3QtPmNsYXNzSW5mbyh2bSk7CiAKLSAgICByZXR1cm4g
dm0uY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mbzsKKyAgICByZXR1
cm4gdm0uY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mby5kZXNjcmFt
YmxlZCgpOwogfQogCiB2b2lkKiBKU09iamVjdEdldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqZWN0
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTQyMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00NTg0LDYgKzQ1ODQsOCBAQAogCQlGRTIwQ0U5QjE1
RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMTEludENMb29wLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAg
LyogTExJbnRDTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENM
b29wLmg7IHBhdGggPSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFMkE4NzVGMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1NjcmFtYmxlZFB0
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURB
NUYgLyogSlNDU2NyYW1ibGVkUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ1NjcmFtYmxlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMkU2QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTMwMjJEMDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFs
eXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFz
aEFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMDIyRDExRTNE
NzM5NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2lnaWxsQ3Jhc2hBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjUxOSw2ICs2NTIxLDggQEAKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYw
RjcgLyogSlNDSlNWYWx1ZS5jcHAgKi8sCiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8q
IEpTQ0pTVmFsdWUuaCAqLywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNW
YWx1ZUlubGluZXMuaCAqLywKKwkJCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDU2Ny
YW1ibGVkUHRyLmNwcCAqLywKKwkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDU2Ny
YW1ibGVkUHRyLmggKi8sCiAJCQkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9t
R2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwICovLAogCQkJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBC
RSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QkQxN0I2
QjVBQjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuY3BwICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNw
cAkocmV2aXNpb24gMjI1NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNiArMzMsNiBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdWludHB0cl90IGdfbWFzbVNjcmFtYmxlZFB0cktleTsK
LQotdm9pZCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmluaXRpYWxpemUoKQotewotICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uo
aW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7Ci0gICAgICAgIGdfbWFzbVNjcmFtYmxlZFB0cktleSA9
IG1ha2VTY3JhbWJsZWRQdHJLZXkoKTsKLSAgICB9KTsKLX0KLQogTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlTExJbnRDb2RlUHRyKE9wY29kZUlEIGNv
ZGVJZCkKIHsKICAgICByZXR1cm4gY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKExMSW50Ojpn
ZXRDb2RlUHRyKGNvZGVJZCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCShyZXZpc2lvbiAyMjU0MjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJl
Zi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTAgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIkpTQ1NjcmFtYmxlZFB0
ci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFt
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TY3JhbWJsZWRQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIC8vIEFTU0VSVF9WQUxJRF9DT0RF
X1BPSU5URVIgY2hlY2tzIHRoYXQgcHRyIGlzIGEgbm9uLW51bGwgcG9pbnRlciwgYW5kIHRoYXQg
aXQgaXMgYSB2YWxpZApAQCAtNTEsMTAgKzUxLDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWV4
dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19tYXNtU2NyYW1ibGVkUHRyS2V5Owot
Ci11c2luZyBNYXNtU2NyYW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPGdfbWFzbVNjcmFtYmxlZFB0
cktleT47Ci0KIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKIAogZW51bSBPcGNvZGVJRCA6
IHVuc2lnbmVkOwpAQCAtMzIzLDcgKzMxOSw3IEBAIHB1YmxpYzoKICAgICBUIGV4ZWN1dGFibGVB
ZGRyZXNzKCkgY29uc3QKICAgICB7CiAgICAgICAgIG1fdmFsdWUuYXNzZXJ0SXNTY3JhbWJsZWQo
KTsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPyBtX3ZhbHVlLmRlc2NyYW1ibGU8VD4oKSA6IHN0
YXRpY19jYXN0PFQ+KDApOworICAgICAgICByZXR1cm4gbV92YWx1ZSA/IG1fdmFsdWUuZGVzY3Jh
bWJsZWQ8VD4oKSA6IHN0YXRpY19jYXN0PFQ+KDApOwogICAgIH0KICNpZiBDUFUoQVJNX1RIVU1C
MikKICAgICAvLyBUbyB1c2UgdGhpcyBwb2ludGVyIGFzIGEgZGF0YSBhZGRyZXNzIHJlbW92ZSB0
aGUgZGVjb3JhdGlvbi4KQEAgLTMzMiw3ICszMjgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtX3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RF
X1BPSU5URVIobV92YWx1ZSk7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1
ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZTxjaGFyKj4oKSAtIDEgOiBudWxscHRyKTsKKyAgICAgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxUPihtX3ZhbHVlID8gbV92YWx1ZS5kZXNjcmFtYmxlZDxjaGFy
Kj4oKSAtIDEgOiBudWxscHRyKTsKICAgICB9CiAjZWxzZQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQgPSB2b2lkKj4KQEAgLTM0MCw3ICszMzYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBt
X3ZhbHVlLmFzc2VydElzU2NyYW1ibGVkKCk7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BP
SU5URVIobV92YWx1ZSk7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5kZXNjcmFt
YmxlPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUgPyBt
X3ZhbHVlLmRlc2NyYW1ibGVkPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKICAgICB9CiAjZW5k
aWYKIApAQCAtMzg4LDcgKzM4NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHlWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZW1wdHlWYWx1ZSgpOyB9CiAgICAgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZGVsZXRlZFZhbHVlKCk7IH0K
IAotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBJbnRIYXNoPHVpbnRwdHJfdD46
Omhhc2gobV92YWx1ZS5zY3JhbWJsZWRCaXRzKCkpOyB9CisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0IHsgcmV0dXJuIEludEhhc2g8dWludHB0cl90Pjo6aGFzaChtX3ZhbHVlLmJpdHMoKSk7IH0K
IAogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyNTQyMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NjgsOCArODY4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tB
cnJheShOb2RlKiBubwogICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwKLSAgICAgICAgICAg
IFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRDbGFzc0luZm8pKSk7Ci0gICAgCisgICAgICAgICAgICBU
cnVzdGVkSW1tUHRyKENsYXNzSW5mb1NjcmFtYmxlZFB0cihleHBlY3RlZENsYXNzSW5mbykuYml0
cygpKSkpOworCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CiB9CiAKQEAgLTg3MDUsNiAr
ODcwNSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tTdWJDbGFzCiAKICAg
ICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUoKm1faml0LnZtKCksIGJhc2VHUFIsIG90aGVy
R1BSLCBzcGVjaWZpZWRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhvdGhlckdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIG90aGVyR1BS
KTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5KSwgc3BlY2lmaWVkR1BSKTsK
KyAgICAgICAgbV9qaXQueG9yNjQoc3BlY2lmaWVkR1BSLCBvdGhlckdQUik7CisjZW5kaWYKICAg
ICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobm9kZS0+Y2xhc3NJ
bmZvKCkpLCBzcGVjaWZpZWRHUFIpOwogCiAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgbG9v
cCA9IG1faml0LmxhYmVsKCk7CkBAIC04OTk5LDcgKzkwMDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3U3RyaW5nT2JqCiAgICAgICAgIHNsb3dQYXRoKTsKICAgICAKICAgICBt
X2ppdC5zdG9yZVB0cigKLSAgICAgICAgVHJ1c3RlZEltbVB0cihTdHJpbmdPYmplY3Q6OmluZm8o
KSksCisgICAgICAgIFRydXN0ZWRJbW1QdHIoQ2xhc3NJbmZvU2NyYW1ibGVkUHRyKFN0cmluZ09i
amVjdDo6aW5mbygpKS5iaXRzKCkpLAogICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgbV9qaXQuc3RvcmU2NCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyNTQyMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAxMCw3ICs1MDEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbGFz
dE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd0Nhc2UpOwogCiAgICAgICAg
IExWYWx1ZSBmYXN0UmVzdWx0VmFsdWUgPSBhbGxvY2F0ZU9iamVjdDxTdHJpbmdPYmplY3Q+KHN0
cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd0Nhc2UpOwotICAgICAgICBtX291dC5zdG9y
ZVB0cihtX291dC5jb25zdEludFB0cihTdHJpbmdPYmplY3Q6OmluZm8oKSksIGZhc3RSZXN1bHRW
YWx1ZSwgbV9oZWFwcy5KU0Rlc3RydWN0aWJsZU9iamVjdF9jbGFzc0luZm8pOworICAgICAgICBt
X291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihDbGFzc0luZm9TY3JhbWJsZWRQdHIoU3Ry
aW5nT2JqZWN0OjppbmZvKCkpLmJpdHMoKSksIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU0Rl
c3RydWN0aWJsZU9iamVjdF9jbGFzc0luZm8pOwogICAgICAgICBtX291dC5zdG9yZTY0KHN0cmlu
ZywgZmFzdFJlc3VsdFZhbHVlLCBtX2hlYXBzLkpTV3JhcHBlck9iamVjdF9pbnRlcm5hbFZhbHVl
KTsKICAgICAgICAgbXV0YXRvckZlbmNlKCk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RS
ZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdFJlc3VsdFZhbHVlKTsKQEAgLTExMTYwLDcgKzExMTYw
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAKICAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3Ry
dWN0dXJlKGNlbGwpOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3RoZXJBdFN0YXJ0ID0g
bV9vdXQuYW5jaG9yKG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9j
bGFzc0luZm8pKTsKKyAgICAgICAgICAgIExWYWx1ZSBzY3JhbWJsZWRDbGFzc0luZm8gPSBtX291
dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKTsKKyAgICAg
ICAgICAgIExWYWx1ZSBjbGFzc0luZm8gPSBtX291dC5iaXRYb3Ioc2NyYW1ibGVkQ2xhc3NJbmZv
LCBtX291dC5jb25zdEludDY0KGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5KSk7CisgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBvdGhlckF0U3RhcnQgPSBtX291dC5hbmNob3IoY2xhc3NJbmZv
KTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAobG9vcCk7CiAKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obG9vcCwgcGFyZW50Q2xhc3MpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAy
MjU0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjI1LDcgKzE2MjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbWl0
QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QoVk0mIHZtLCBHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIs
IEp1bXBMaXN0JiBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0
PENsYXNzVHlwZT4odm0sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVz
dGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKLSAgICAg
ICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKSwgQWRkcmVz
cyhyZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOwor
ICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKENsYXNzSW5mb1NjcmFtYmxlZFB0cihzdHJ1
Y3R1cmUtPmNsYXNzSW5mbygpKS5iaXRzKCkpLCBBZGRyZXNzKHJlc3VsdEdQUiwgSlNEZXN0cnVj
dGlibGVPYmplY3Q6OmNsYXNzSW5mb09mZnNldCgpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQg
ZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKEdQUlJlZyBiYXNlR1BSLCB1bnNpZ25lZCBpbmxp
bmVDYXBhY2l0eSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRU
aHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAyMjU0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw3ICs3
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFy
Z3VtZW50KGFyZ3VtZW50LCBkc3QpOwogICAgICAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUoKnZt
KCksIGRzdCwgc2NyYXRjaCwgZHN0KTsKLSAgICAgICAgICAgIGFwcGVuZEZhaWx1cmUoYnJhbmNo
UHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIGFwcGVuZEZhaWx1
cmUoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKENsYXNzSW5mb1NjcmFtYmxlZFB0cihjbGFzc0lu
Zm8pLmJpdHMoKSkpKTsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRoZSBhcmd1
bWVudCBzaW5jZSBlbWl0TG9hZFN0cnVjdHVyZSBjbG9iYmVyZWQgaXQuCiAgICAgICAgICAgICBs
b2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNw
cAkocmV2aXNpb24gMjI1NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw3ICs1OSw3
IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAKICAgICBzdGQ6OmNhbGxfb25jZShpbml0
aWFsaXplVGhyZWFkaW5nT25jZUZsYWcsIFtdewogICAgICAgICBXVEY6OmluaXRpYWxpemVUaHJl
YWRpbmcoKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFsaXplKCk7Cisg
ICAgICAgIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlzKCk7CiAgICAgICAgIE9wdGlvbnM6Omlu
aXRpYWxpemUoKTsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgICAg
IFdyaXRlQmFycmllckNvdW50ZXJzOjppbml0aWFsaXplKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NTY3JhbWJsZWRQdHIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ1Nj
cmFtYmxlZFB0ci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordWludHB0cl90IGdfY2xhc3NJbmZv
U2NyYW1ibGVkUHRyS2V5OwordWludHB0cl90IGdfbWFzbVNjcmFtYmxlZFB0cktleTsKKwordm9p
ZCBpbml0aWFsaXplU2NyYW1ibGVkUHRyS2V5cygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25j
ZUZsYWcsIFtdIHsKKyAgICAgICAgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXkgPSBtYWtlU2Ny
YW1ibGVkUHRyS2V5KCk7CisgICAgICAgIGdfbWFzbVNjcmFtYmxlZFB0cktleSA9IG1ha2VTY3Jh
bWJsZWRQdHJLZXkoKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1NjcmFtYmxl
ZFB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9TY3JhbWJsZWRQdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgSlNfRVhQ
T1JUREFUQSB1aW50cHRyX3QgZ19jbGFzc0luZm9TY3JhbWJsZWRQdHJLZXk7CitleHRlcm4gIkMi
IEpTX0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFzbVNjcmFtYmxlZFB0cktleTsKKworc3RydWN0
IENsYXNzSW5mbzsKKwordXNpbmcgQ2xhc3NJbmZvU2NyYW1ibGVkUHRyID0gU2NyYW1ibGVkUHRy
PGNvbnN0IENsYXNzSW5mbyosIGdfY2xhc3NJbmZvU2NyYW1ibGVkUHRyS2V5PjsKK3VzaW5nIE1h
c21TY3JhbWJsZWRQdHIgPSBTY3JhbWJsZWRQdHI8dm9pZCosIGdfbWFzbVNjcmFtYmxlZFB0cktl
eT47CisKK3ZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMjI1NDIxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAmdm0uZGVzdHJ1Y3RpYmxl
T2JqZWN0U3BhY2U7CiAgICAgfQogCi0gICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBj
b25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQorICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm8uZGVzY3JhbWJsZWQoKTsgfQogICAgIAog
ICAgIHN0YXRpYyBwdHJkaWZmX3QgY2xhc3NJbmZvT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBtX2NsYXNzSW5mbyk7IH0KIApAQCAtNTYsNyAr
NTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGNvbnN0IENsYXNzSW5m
byogbV9jbGFzc0luZm87CisgICAgQ2xhc3NJbmZvU2NyYW1ibGVkUHRyIG1fY2xhc3NJbmZvOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lv
biAyMjU0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gJnZtLnNlZ21lbnRlZFZhcmlhYmxlT2JqZWN0U3BhY2U7CiAgICAgfQog
ICAgIAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc0luZm87IH0KKyAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NJbmZvLmRlc2NyYW1ibGVkKCk7IH0KICAgICAKIHByb3RlY3RlZDoKICAgICBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgSlNTY29wZSopOwpAQCAt
MTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgU2VnbWVudGVkVmVjdG9yPFdyaXRlQmFycmll
cjxVbmtub3duPiwgMTY+IG1fdmFyaWFibGVzOwogICAgIENvbmN1cnJlbnRKU0xvY2sgbV9sb2Nr
OwogICAgIGJvb2wgbV9hbHJlYWR5RGVzdHJveWVkIHsgZmFsc2UgfTsgLy8gV2UgdXNlIHRoZXNl
IGFzc2VydGlvbnMgdG8gY2hlY2sgdGhhdCB3ZSBhcmVuJ3QgZG9pbmcgYW5jaWVudCBoYWNrcyB0
aGF0IHJlc3VsdCBpbiB0aGlzIGJlaW5nIGRlc3Ryb3llZCBtb3JlIHRoYW4gb25jZS4KLSAgICBj
b25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOworICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBt
X2NsYXNzSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDIyNTQyMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMi0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDY4LDcgKzQ2OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0T2JqZWN0
VG9TdHJpbmdWYWx1ZShFeGVjU3RhdGUqLCBWTSYsIEpTU3RyaW5nKiB2YWx1ZSwgUHJvcGVydHlT
bG90IHRvU3RyaW5nVGFnU3ltYm9sU2xvdCk7CiAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CisgICAgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mby5kZXNjcmFtYmxlZCgpOyB9
CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7CkBAIC03
OTgsNyArNzk4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4g
bV9uYW1lSW5QcmV2aW91czsKIAotICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87Cisg
ICAgQ2xhc3NJbmZvU2NyYW1ibGVkUHRyIG1fY2xhc3NJbmZvOwogCiAgICAgU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlIG1fdHJhbnNpdGlvblRhYmxlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgJKHJldmlzaW9uIDIyNTQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw3ICs0MTQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFByb21pc2VEZWZlcnJlZFRpbWVyPiBwcm9taXNlRGVmZXJyZWRU
aW1lcjsKICAgICAKICAgICBKU0NlbGwqIGN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmpl
Y3Q7Ci0gICAgY29uc3QgQ2xhc3NJbmZvKiBjdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2Jq
ZWN0Q2xhc3NJbmZvOworICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBjdXJyZW50bHlEZXN0cnVj
dGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJbmZvOwogCiAgICAgQXRvbWljU3RyaW5nVGFibGUqIG1f
YXRvbWljU3RyaW5nVGFibGU7CiAgICAgV1RGOjpTeW1ib2xSZWdpc3RyeSBtX3N5bWJvbFJlZ2lz
dHJ5OwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTQyMSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMTItMDEgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIExldCdzIHNjcmFtYmxlIENsYXNzSW5mbyBwb2lu
dGVycyBpbiBjZWxscy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDI5MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzU4MDc2MjA+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU2NyYW1ibGVk
UHRyLmg6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6ZGVzY3JhbWJsZWQgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmJpdHMgY29uc3QpOgorICAgICAgICAoV1RGOjpT
Y3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6c2NyYW1ibGUpOgorICAgICAg
ICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRlc2NyYW1ibGUpOgorICAgICAgICAoV1RGOjpTY3JhbWJs
ZWRQdHI6OiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6c2Ny
YW1ibGVkQml0cyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMTctMTItMDEgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBJbnRlcm5hbHMudGVybWluYXRlU2Vy
dmljZVdvcmtlciwgYW5kIHRoZSBhYmlsaXR5IHRvIHJlc3RhcnQgc2VydmljZSB3b3JrZXJzIGZv
ciBwb3N0TWVzc2FnZS4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCShyZXZpc2lvbiAyMjU0MjEp
CisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
MTIgKzQwLDExIEBAIG5hbWVzcGFjZSBXVEYgewogCiB1c2luZyBTY3JhbWJsZWRQdHJCaXRzID0g
dWludHB0cl90OwogCi10ZW1wbGF0ZTx1aW50cHRyX3QmIGtleT4KK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19w
b2ludGVyPFQ+Ojp2YWx1ZT4+CiBjbGFzcyBTY3JhbWJsZWRQdHIgewogcHVibGljOgogICAgIFNj
cmFtYmxlZFB0cigpIHsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4K
ICAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoVCBwdHIpCiAgICAgICAgIDogbV9zY3JhbWJsZWRC
aXRzKHNjcmFtYmxlKHB0cikpCiAgICAgewpAQCAtNjEsMjYgKzYwLDI2IEBAIHB1YmxpYzoKICAg
ICB9CiAKICNpZiBFTkFCTEUoU0NSQU1CTEVEX1BUUl9BU1NFUlRTKQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQgPSB2b2lkKj4KLSAgICBzdGF0aWMgYm9vbCBpc1NjcmFtYmxlZChUIHZhbHVlKSB7
IHJldHVybiAhdmFsdWUgfHwgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2YWx1ZSkgJiAw
eGZmZmYwMDAwMDAwMDAwMDApOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPgot
ICAgIHN0YXRpYyB2b2lkIGFzc2VydElzU2NyYW1ibGVkKFQgdmFsdWUpIHsgUkVMRUFTRV9BU1NF
UlQoaXNTY3JhbWJsZWQodmFsdWUpKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lk
Kj4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChUIHZhbHVlKSB7IFJFTEVB
U0VfQVNTRVJUKCFpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VSA9IHZvaWQqPgorICAgIHN0YXRpYyBib29sIGlzU2NyYW1ibGVkKFUgdmFsdWUpIHsgcmV0dXJu
ICF2YWx1ZSB8fCAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSAmIDB4ZmZmZjAw
MDAwMDAwMDAwMCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gdm9pZCo+CisgICAgc3Rh
dGljIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSB2YWx1ZSkgeyBSRUxFQVNFX0FTU0VSVChpc1Nj
cmFtYmxlZCh2YWx1ZSkpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPgorICAg
IHN0YXRpYyB2b2lkIGFzc2VydElzTm90U2NyYW1ibGVkKFUgdmFsdWUpIHsgUkVMRUFTRV9BU1NF
UlQoIWlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KICNlbHNlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChUKSB7IH0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2VydElzTm90U2NyYW1ibGVk
KFQpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4gc3RhdGljIHZvaWQgYXNz
ZXJ0SXNTY3JhbWJsZWQoVSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPiBz
dGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChVKSB7IH0KICNlbmRpZgogICAgIHZvaWQg
YXNzZXJ0SXNTY3JhbWJsZWQoKSBjb25zdCB7IGFzc2VydElzU2NyYW1ibGVkKG1fc2NyYW1ibGVk
Qml0cyk7IH0KICAgICB2b2lkIGFzc2VydElzTm90U2NyYW1ibGVkKCkgY29uc3QgeyBhc3NlcnRJ
c05vdFNjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUID0gdm9pZCo+Ci0gICAgVCBkZXNjcmFtYmxlKCkgY29uc3QgeyByZXR1cm4gZGVzY3JhbWJs
ZTxUPihtX3NjcmFtYmxlZEJpdHMpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+Cisg
ICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VT4obV9zY3JhbWJs
ZWRCaXRzKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPjo6dHlwZT4KICAgICBB
TFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1ibGU8VD4o
bV9zY3JhbWJsZWRCaXRzKTsgfQogCi0gICAgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRz
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JhbWJsZWRCaXRzOyB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSA9IFNjcmFtYmxlZFB0ckJpdHM+CisgICAgVSBiaXRzKCkgY29uc3QgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFU+KG1fc2NyYW1ibGVkQml0cyk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIW1fc2NyYW1ibGVkQml0czsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc2NyYW1ibGVkQml0czsgfQpAQCAtOTMsMjAgKzky
LDI3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlID0gdm9pZCosIHR5
cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFB0clR5cGU+
Ojp2YWx1ZT46OnR5cGU+CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFB0clR5cGUgYikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBkZXNjcmFtYmxlPFB0clR5cGU+KCkgPT0gYjsKKyAgICAgICAg
cmV0dXJuIGRlc2NyYW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKICAgICB9CiAKKyAgICBTY3JhbWJs
ZWRQdHImIG9wZXJhdG9yPShUIHB0cikKKyAgICB7CisgICAgICAgIG1fc2NyYW1ibGVkQml0cyA9
IHB0ciA/IHNjcmFtYmxlKHB0cikgOiAwOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
ICAgIFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IFNjcmFtYmxlZFB0ciYpID0gZGVmYXVs
dDsKKwogcHJpdmF0ZToKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShU
IHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7
IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFQg
ZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxUPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZShV
IHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJpdHM+KHB0cikgXiBrZXk7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUg
ZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMpIHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxVPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQogI2Vsc2UKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2Ny
YW1ibGUoVCBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIp
OyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBU
IGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8VD4oc2NyYW1ibGVkQml0cyk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgor
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMgc2NyYW1ibGUoVSBwdHIp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihwdHIpOyB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIGRlc2NyYW1ibGUo
U2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4o
c2NyYW1ibGVkQml0cyk7IH0KICNlbmRpZgogCiAgICAgU2NyYW1ibGVkUHRyQml0cyBtX3NjcmFt
YmxlZEJpdHMgeyAwIH07Cg==
</data>
<flag name="review"
          id="347369"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328180</attachid>
            <date>2017-12-01 16:17:20 -0800</date>
            <delta_ts>2017-12-01 16:17:20 -0800</delta_ts>
            <desc>patch for landing + speculative build fix</desc>
            <filename>bug-180291.patch</filename>
            <type>text/plain</type>
            <size>29728</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1NDIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE3LTEyLTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBM
ZXQncyBzY3JhbWJsZSBDbGFzc0luZm8gcG9pbnRlcnMgaW4gY2VsbHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM1ODA3NjIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisK
KyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAqIEFQSS9KU09iamVj
dFJlZi5jcHA6CisgICAgICAgIChjbGFzc0luZm9Qcml2YXRlKToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuY3BwOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmluaXRpYWxpemUpOiBEZWxldGVkLgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjogY29uc3QpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI6Omhhc2ggY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmpl
Y3QpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3U3RyaW5nT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrU3ViQ2xhc3MpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgorICAgICAgICAqIGppdC9TcGVj
aWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6Omxv
YWRBcmd1bWVudFdpdGhTcGVjaWZpY0NsYXNzKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ1NjcmFtYmxlZFB0ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
Ojppbml0aWFsaXplU2NyYW1ibGVkUHRyS2V5cyk6CisgICAgICAgICogcnVudGltZS9KU0NTY3Jh
bWJsZWRQdHIuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xhc3NJbmZvIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6Y2xhc3NJbmZvIGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAxNy0xMi0wMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViQXNzZW1ibHk6IHN0YWNrIHRyYWNlIGltcHJvdmVtZW50IGZvbGxvdy11cHMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDIyNTQyMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzY5LDYgKzc2OSw3IEBA
IHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAogcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwCiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5jcHAKK3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcAogcnVudGltZS9KU0NhbGxlZS5jcHAK
IHJ1bnRpbWUvSlNDZWxsLmNwcAogcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgJKHJldmlzaW9uIDIyNTQyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIEpT
Q2FsbGJhY2tPYmplY3RfaAogI2RlZmluZSBKU0NhbGxiYWNrT2JqZWN0X2gKIAorI2luY2x1ZGUg
IkpTQ1NjcmFtYmxlZFB0ci5oIgogI2luY2x1ZGUgIkpTT2JqZWN0UmVmLmgiCiAjaW5jbHVkZSAi
SlNWYWx1ZVJlZi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC0yMzMsNyArMjM0LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2FsbGJhY2tHZXR0ZXIoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SlNDYWxsYmFja09iamVjdERhdGE+IG1fY2FsbGJhY2tPYmplY3REYXRhOwotICAgIGNvbnN0
IENsYXNzSW5mbyogbV9jbGFzc0luZm87CisgICAgQ2xhc3NJbmZvU2NyYW1ibGVkUHRyIG1fY2xh
c3NJbmZvOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMjI1NDIxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMSw3
ICs0MzEsNyBAQCBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm9Qcml2YXRlCiAgICAg
aWYgKHZtLmN1cnJlbnRseURlc3RydWN0aW5nQ2FsbGJhY2tPYmplY3QgIT0ganNPYmplY3QpCiAg
ICAgICAgIHJldHVybiBqc09iamVjdC0+Y2xhc3NJbmZvKHZtKTsKIAotICAgIHJldHVybiB2bS5j
dXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJbmZvOworICAgIHJldHVybiB2
bS5jdXJyZW50bHlEZXN0cnVjdGluZ0NhbGxiYWNrT2JqZWN0Q2xhc3NJbmZvLmRlc2NyYW1ibGVk
KCk7CiB9CiAKIHZvaWQqIEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmplY3QpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1NDIxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MTUsNiArMTcxNSw3IEBACiAJCUZFMUMwRkZEMUIxOTNF
OTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTIwQ0U5
RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50
Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGRTJBODc2MDFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkE4NzVGMUYw
MjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovOyB9OworCQlGRTJC
MEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlNDU2NyYW1ibGVkUHRyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYg
LyogSlNDU2NyYW1ibGVkUHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5h
bHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MzAyMkQxMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzMDIyRDcxRTQyODU3
MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTMwMjJENTFFNDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3Iu
aCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmggKi87IH07CkBAIC00NTg0LDYgKzQ1ODUsOCBAQAogCQlGRTIwQ0U5QjE1RjA0
QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBMTEludENMb29wLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyog
TExJbnRDTG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29w
Lmg7IHBhdGggPSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMkE4NzVGMUYwMjM4MTYwMEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDU2NyYW1ibGVk
UHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1NjcmFtYmxlZFB0ci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYg
LyogSlNDU2NyYW1ibGVkUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ1NjcmFtYmxlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MkU2QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTMwMjJEMDFFM0Q3Mzk2MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXpl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFzaEFu
YWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMDIyRDExRTNENzM5
NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2lnaWxsQ3Jhc2hBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjUxOSw2ICs2NTIyLDggQEAKIAkJCQlGNjkyQTg4NzAyNTU1OTdEMDFGRjYwRjcg
LyogSlNDSlNWYWx1ZS5jcHAgKi8sCiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAwRTJBMjRGIC8qIEpT
Q0pTVmFsdWUuaCAqLywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNDSlNWYWx1
ZUlubGluZXMuaCAqLywKKwkJCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmNwcCAqLywKKwkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmggKi8sCiAJCQkJNzJBQUY3Q0IxRDBEMzE4QjAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0
dGVyU2V0dGVyRnVuY3Rpb24uY3BwICovLAogCQkJCTcyQUFGN0NDMUQwRDMxOEIwMDVFNjBCRSAv
KiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmggKi8sCiAJCQkJMEYyQjY2QkQxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTRGF0YVZpZXcuY3BwICovLApAQCAtODEyOCw2ICs4MTMzLDcgQEAKIAkJ
CQkwRkVDODUyQTFCREFDREFDMDA4MEZGNzQgLyogQjNQaGFzZVNjb3BlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjM3MzA4RDFDMEJEMjkxMDAwNTJCRkEgLyogQjNQaGlDaGlsZHJlbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQzg1MkMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRTJCMEI2OTFGRDIyN0UwMDA3NURBNUYgLyogSlNDU2NyYW1i
bGVkUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyog
QjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcyNUNBQTFDNTAzREVE
MDBBRDk0M0EgLyogQjNQdXJlQ1NFLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzQyMkE2NzFDMTYy
Njc4MDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5jcHAJKHJldmlzaW9uIDIyNTQyMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMTYgKzMzLDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXVpbnRwdHJfdCBnX21h
c21TY3JhbWJsZWRQdHJLZXk7Ci0KLXZvaWQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjppbml0aWFs
aXplKCkKLXsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOwot
ICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10gewotICAgICAgICBnX21h
c21TY3JhbWJsZWRQdHJLZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7Ci0gICAgfSk7Ci19Ci0K
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUxMSW50
Q29kZVB0cihPcGNvZGVJRCBjb2RlSWQpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21FeGVjdXRh
YmxlQWRkcmVzcyhMTEludDo6Z2V0Q29kZVB0cihjb2RlSWQpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aAkocmV2aXNpb24gMjI1NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDEwIEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNs
dWRlICJKU0NTY3JhbWJsZWRQdHIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvU2NyYW1ibGVkUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAv
LyBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSIGNoZWNrcyB0aGF0IHB0ciBpcyBhIG5vbi1udWxs
IHBvaW50ZXIsIGFuZCB0aGF0IGl0IGlzIGEgdmFsaWQKQEAgLTUxLDEwICs1MSw2IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi1leHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IGdfbWFz
bVNjcmFtYmxlZFB0cktleTsKLQotdXNpbmcgTWFzbVNjcmFtYmxlZFB0ciA9IFNjcmFtYmxlZFB0
cjxnX21hc21TY3JhbWJsZWRQdHJLZXk+OwotCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7
CiAKIGVudW0gT3Bjb2RlSUQgOiB1bnNpZ25lZDsKQEAgLTMyMyw3ICszMTksNyBAQCBwdWJsaWM6
CiAgICAgVCBleGVjdXRhYmxlQWRkcmVzcygpIGNvbnN0CiAgICAgewogICAgICAgICBtX3ZhbHVl
LmFzc2VydElzU2NyYW1ibGVkKCk7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5k
ZXNjcmFtYmxlPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKKyAgICAgICAgcmV0dXJuIG1fdmFs
dWUgPyBtX3ZhbHVlLmRlc2NyYW1ibGVkPFQ+KCkgOiBzdGF0aWNfY2FzdDxUPigwKTsKICAgICB9
CiAjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgLy8gVG8gdXNlIHRoaXMgcG9pbnRlciBhcyBhIGRh
dGEgYWRkcmVzcyByZW1vdmUgdGhlIGRlY29yYXRpb24uCkBAIC0zMzIsNyArMzI4LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOwogICAgICAg
ICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PFQ+KG1fdmFsdWUgPyBtX3ZhbHVlLmRlc2NyYW1ibGU8Y2hhcio+KCkgLSAxIDog
bnVsbHB0cik7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4obV92YWx1ZSA/IG1fdmFs
dWUuZGVzY3JhbWJsZWQ8Y2hhcio+KCkgLSAxIDogbnVsbHB0cik7CiAgICAgfQogI2Vsc2UKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+CkBAIC0zNDAsNyArMzM2LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgbV92YWx1ZS5hc3NlcnRJc1NjcmFtYmxlZCgpOwogICAgICAgICBB
U1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gbV92YWx1
ZSA/IG1fdmFsdWUuZGVzY3JhbWJsZTxUPigpIDogc3RhdGljX2Nhc3Q8VD4oMCk7CisgICAgICAg
IHJldHVybiBtX3ZhbHVlID8gbV92YWx1ZS5kZXNjcmFtYmxlZDxUPigpIDogc3RhdGljX2Nhc3Q8
VD4oMCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTM4OCw3ICszODQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IGVtcHR5VmFsdWUo
KTsgfQogICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09
IGRlbGV0ZWRWYWx1ZSgpOyB9CiAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4g
SW50SGFzaDx1aW50cHRyX3Q+OjpoYXNoKG1fdmFsdWUuc2NyYW1ibGVkQml0cygpKTsgfQorICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBJbnRIYXNoPHVpbnRwdHJfdD46Omhhc2go
bV92YWx1ZS5iaXRzKCkpOyB9CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAyMjU0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY4LDggKzg2OCw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICAgICAgbV9qaXQuYnJhbmNoUHRy
KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZz
ZXQoKSksCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkQ2xhc3NJbmZvKSkpOwot
ICAgIAorICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihDbGFzc0luZm9TY3JhbWJsZWRQdHIoZXhw
ZWN0ZWRDbGFzc0luZm8pLmJpdHMoKSkpKTsKKwogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUp
OwogfQogCkBAIC04NzA1LDYgKzg3MDUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrU3ViQ2xhcwogCiAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKCptX2ppdC52
bSgpLCBiYXNlR1BSLCBvdGhlckdQUiwgc3BlY2lmaWVkR1BSKTsKICAgICAgICAgbV9qaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3RoZXJHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBvdGhlckdQUik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktl
eSksIHNwZWNpZmllZEdQUik7CisgICAgICAgIG1faml0LnhvcjY0KHNwZWNpZmllZEdQUiwgb3Ro
ZXJHUFIpOworI2VuZGlmCiAgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKG5vZGUtPmNsYXNzSW5mbygpKSwgc3BlY2lmaWVkR1BSKTsKIAogICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIGxvb3AgPSBtX2ppdC5sYWJlbCgpOwpAQCAtODk5OSw3ICs5MDAzLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iagogICAgICAgICBzbG93
UGF0aCk7CiAgICAgCiAgICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIo
U3RyaW5nT2JqZWN0OjppbmZvKCkpLAorICAgICAgICBUcnVzdGVkSW1tUHRyKENsYXNzSW5mb1Nj
cmFtYmxlZFB0cihTdHJpbmdPYmplY3Q6OmluZm8oKSkuYml0cygpKSwKICAgICAgICAgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIG1faml0LnN0b3JlNjQoCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZp
c2lvbiAyMjU0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMTAsNyArNTAxMCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNs
b3dDYXNlKTsKIAogICAgICAgICBMVmFsdWUgZmFzdFJlc3VsdFZhbHVlID0gYWxsb2NhdGVPYmpl
Y3Q8U3RyaW5nT2JqZWN0PihzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dDYXNlKTsK
LSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoU3RyaW5nT2JqZWN0Ojpp
bmZvKCkpLCBmYXN0UmVzdWx0VmFsdWUsIG1faGVhcHMuSlNEZXN0cnVjdGlibGVPYmplY3RfY2xh
c3NJbmZvKTsKKyAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoQ2xhc3NJ
bmZvU2NyYW1ibGVkUHRyKFN0cmluZ09iamVjdDo6aW5mbygpKS5iaXRzKCkpLCBmYXN0UmVzdWx0
VmFsdWUsIG1faGVhcHMuSlNEZXN0cnVjdGlibGVPYmplY3RfY2xhc3NJbmZvKTsKICAgICAgICAg
bV9vdXQuc3RvcmU2NChzdHJpbmcsIGZhc3RSZXN1bHRWYWx1ZSwgbV9oZWFwcy5KU1dyYXBwZXJP
YmplY3RfaW50ZXJuYWxWYWx1ZSk7CiAgICAgICAgIG11dGF0b3JGZW5jZSgpOwogICAgICAgICBW
YWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RSZXN1bHRWYWx1ZSk7
CkBAIC0xMTE2MCw3ICsxMTE2MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogCiAgICAgICAgICAgICBMVmFsdWUg
c3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZShjZWxsKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJs
b2NrIG90aGVyQXRTdGFydCA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwg
bV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKSk7CisgICAgICAgICAgICBMVmFsdWUgc2NyYW1i
bGVkQ2xhc3NJbmZvID0gbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJl
X2NsYXNzSW5mbyk7CisgICAgICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0gbV9vdXQuYml0WG9y
KHNjcmFtYmxlZENsYXNzSW5mbywgbV9vdXQuY29uc3RJbnQ2NChnX2NsYXNzSW5mb1NjcmFtYmxl
ZFB0cktleSkpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3RoZXJBdFN0YXJ0ID0gbV9v
dXQuYW5jaG9yKGNsYXNzSW5mbyk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGxvb3ApOwogCiAg
ICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGxvb3AsIHBh
cmVudENsYXNzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxw
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAkocmV2aXNpb24gMjI1NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KFZNJiB2bSwgR1BS
UmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoR1BSMSwg
R1BSUmVnIHNjcmF0Y2hHUFIyLCBKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBl
bWl0QWxsb2NhdGVKU09iamVjdDxDbGFzc1R5cGU+KHZtLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIy
LCBzbG93UGF0aCk7Ci0gICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLT5j
bGFzc0luZm8oKSksIEFkZHJlc3MocmVzdWx0R1BSLCBKU0Rlc3RydWN0aWJsZU9iamVjdDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihDbGFzc0lu
Zm9TY3JhbWJsZWRQdHIoc3RydWN0dXJlLT5jbGFzc0luZm8oKSkuYml0cygpKSwgQWRkcmVzcyhy
ZXN1bHRHUFIsIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0OjpjbGFzc0luZm9PZmZzZXQoKSkpOwogICAg
IH0KICAgICAKICAgICB2b2lkIGVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShHUFJSZWcgYmFz
ZUdQUiwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2aXNpb24gMjI1NDIxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAgICAgICAgICAgIGVt
aXRMb2FkU3RydWN0dXJlKCp2bSgpLCBkc3QsIHNjcmF0Y2gsIGRzdCk7Ci0gICAgICAgICAgICBh
cHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1
cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CisgICAg
ICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNo
LCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihDbGFzc0luZm9T
Y3JhbWJsZWRQdHIoY2xhc3NJbmZvKS5iaXRzKCkpKSk7CiAgICAgICAgICAgICAvLyBXZSBoYXZl
IHRvIHJlbG9hZCB0aGUgYXJndW1lbnQgc2luY2UgZW1pdExvYWRTdHJ1Y3R1cmUgY2xvYmJlcmVk
IGl0LgogICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDIyNTQyMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTksNyArNTksNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogCiAgICAg
c3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVRocmVhZGluZ09uY2VGbGFnLCBbXXsKICAgICAgICAg
V1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjo6aW5pdGlhbGl6ZSgpOworICAgICAgICBpbml0aWFsaXplU2NyYW1ibGVkUHRyS2V5cygpOwog
ICAgICAgICBPcHRpb25zOjppbml0aWFsaXplKCk7CiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJf
UFJPRklMSU5HKQogICAgICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDU2NyYW1ibGVkUHRyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NTY3JhbWJsZWRQ
dHIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q1NjcmFtYmxlZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU0NTY3JhbWJsZWRQdHIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3Vp
bnRwdHJfdCBnX2NsYXNzSW5mb1NjcmFtYmxlZFB0cktleTsKK3VpbnRwdHJfdCBnX21hc21TY3Jh
bWJsZWRQdHJLZXk7CisKK3ZvaWQgaW5pdGlhbGl6ZVNjcmFtYmxlZFB0cktleXMoKQoreworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIGdfY2xhc3NJbmZvU2NyYW1i
bGVkUHRyS2V5ID0gbWFrZVNjcmFtYmxlZFB0cktleSgpOworICAgICAgICBnX21hc21TY3JhbWJs
ZWRQdHJLZXkgPSBtYWtlU2NyYW1ibGVkUHRyS2V5KCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NTY3Jh
bWJsZWRQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NTY3JhbWJsZWRQdHIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NTY3JhbWJsZWRQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvU2NyYW1ibGVkUHRyLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IGdfY2xhc3NJbmZvU2NyYW1ibGVk
UHRyS2V5OworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX21hc21TY3JhbWJs
ZWRQdHJLZXk7CisKK3N0cnVjdCBDbGFzc0luZm87CisKK3VzaW5nIENsYXNzSW5mb1NjcmFtYmxl
ZFB0ciA9IFNjcmFtYmxlZFB0cjxjb25zdCBDbGFzc0luZm8qLCBnX2NsYXNzSW5mb1NjcmFtYmxl
ZFB0cktleT47Cit1c2luZyBNYXNtU2NyYW1ibGVkUHRyID0gU2NyYW1ibGVkUHRyPHZvaWQqLCBn
X21hc21TY3JhbWJsZWRQdHJLZXk+OworCit2b2lkIGluaXRpYWxpemVTY3JhbWJsZWRQdHJLZXlz
KCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHJldmlzaW9uIDIyNTQy
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gJnZtLmRlc3RydWN0aWJsZU9iamVjdFNwYWNlOwogICAgIH0KIAotICAgIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0KKyAgICBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvLmRlc2Ny
YW1ibGVkKCk7IH0KICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IGNsYXNzSW5mb09mZnNldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Rlc3RydWN0aWJsZU9iamVjdCwgbV9jbGFzc0lu
Zm8pOyB9CiAKQEAgLTU2LDcgKzU2LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOworICAgIENsYXNzSW5mb1NjcmFtYmxl
ZFB0ciBtX2NsYXNzSW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QuaAkocmV2aXNpb24gMjI1NDIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5zZWdtZW50ZWRWYXJpYWJsZU9i
amVjdFNwYWNlOwogICAgIH0KICAgICAKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygp
IGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFz
c0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mby5kZXNjcmFtYmxlZCgpOyB9CiAgICAg
CiBwcm90ZWN0ZWQ6CiAgICAgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdChWTSYsIFN0cnVjdHVy
ZSosIEpTU2NvcGUqKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIFNlZ21lbnRl
ZFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4sIDE2PiBtX3ZhcmlhYmxlczsKICAgICBDb25j
dXJyZW50SlNMb2NrIG1fbG9jazsKICAgICBib29sIG1fYWxyZWFkeURlc3Ryb3llZCB7IGZhbHNl
IH07IC8vIFdlIHVzZSB0aGVzZSBhc3NlcnRpb25zIHRvIGNoZWNrIHRoYXQgd2UgYXJlbid0IGRv
aW5nIGFuY2llbnQgaGFja3MgdGhhdCByZXN1bHQgaW4gdGhpcyBiZWluZyBkZXN0cm95ZWQgbW9y
ZSB0aGFuIG9uY2UuCi0gICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKKyAgICBDbGFz
c0luZm9TY3JhbWJsZWRQdHIgbV9jbGFzc0luZm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lv
biAyMjU0MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDksIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldE9iamVjdFRvU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiwgVk0mLCBKU1N0cmlu
ZyogdmFsdWUsIFByb3BlcnR5U2xvdCB0b1N0cmluZ1RhZ1N5bWJvbFNsb3QpOwogCi0gICAgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQor
ICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0lu
Zm8uZGVzY3JhbWJsZWQoKTsgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9m
ZnNldCgpCiAgICAgewpAQCAtNzk4LDcgKzc5OCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+IG1fbmFtZUluUHJldmlvdXM7CiAKLSAgICBjb25zdCBDbGFzc0lu
Zm8qIG1fY2xhc3NJbmZvOworICAgIENsYXNzSW5mb1NjcmFtYmxlZFB0ciBtX2NsYXNzSW5mbzsK
IAogICAgIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSBtX3RyYW5zaXRpb25UYWJsZTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMjU0MjEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyAr
NDE0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9taXNlRGVmZXJyZWRUaW1l
cj4gcHJvbWlzZURlZmVycmVkVGltZXI7CiAgICAgCiAgICAgSlNDZWxsKiBjdXJyZW50bHlEZXN0
cnVjdGluZ0NhbGxiYWNrT2JqZWN0OwotICAgIGNvbnN0IENsYXNzSW5mbyogY3VycmVudGx5RGVz
dHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mbzsKKyAgICBDbGFzc0luZm9TY3JhbWJsZWRQ
dHIgY3VycmVudGx5RGVzdHJ1Y3RpbmdDYWxsYmFja09iamVjdENsYXNzSW5mbzsKIAogICAgIEF0
b21pY1N0cmluZ1RhYmxlKiBtX2F0b21pY1N0cmluZ1RhYmxlOwogICAgIFdURjo6U3ltYm9sUmVn
aXN0cnkgbV9zeW1ib2xSZWdpc3RyeTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU0MjEpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTEy
LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBMZXQncyBzY3Jh
bWJsZSBDbGFzc0luZm8gcG9pbnRlcnMgaW4gY2VsbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1ODA3NjIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAg
KiB3dGYvU2NyYW1ibGVkUHRyLmg6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6ZGVzY3Jh
bWJsZWQgY29uc3QpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmJpdHMgY29uc3QpOgor
ICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpT
Y3JhbWJsZWRQdHI6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OlNjcmFtYmxlZFB0cjo6c2Ny
YW1ibGUpOgorICAgICAgICAoV1RGOjpTY3JhbWJsZWRQdHI6OmRlc2NyYW1ibGUpOgorICAgICAg
ICAoV1RGOjpTY3JhbWJsZWRQdHI6OiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlNj
cmFtYmxlZFB0cjo6c2NyYW1ibGVkQml0cyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMTctMTItMDEg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBJbnRlcm5h
bHMudGVybWluYXRlU2VydmljZVdvcmtlciwgYW5kIHRoZSBhYmlsaXR5IHRvIHJlc3RhcnQgc2Vy
dmljZSB3b3JrZXJzIGZvciBwb3N0TWVzc2FnZS4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NjcmFt
YmxlZFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NjcmFtYmxlZFB0ci5oCShy
ZXZpc2lvbiAyMjU0MjEpCisrKyBTb3VyY2UvV1RGL3d0Zi9TY3JhbWJsZWRQdHIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsMTIgKzQwLDExIEBAIG5hbWVzcGFjZSBXVEYgewogCiB1c2luZyBTY3Jh
bWJsZWRQdHJCaXRzID0gdWludHB0cl90OwogCi10ZW1wbGF0ZTx1aW50cHRyX3QmIGtleT4KK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+CiBjbGFzcyBTY3JhbWJsZWRQdHIgewog
cHVibGljOgogICAgIFNjcmFtYmxlZFB0cigpIHsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46
OnZhbHVlPjo6dHlwZT4KICAgICBleHBsaWNpdCBTY3JhbWJsZWRQdHIoVCBwdHIpCiAgICAgICAg
IDogbV9zY3JhbWJsZWRCaXRzKHNjcmFtYmxlKHB0cikpCiAgICAgewpAQCAtNjEsMjYgKzYwLDI2
IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiBFTkFCTEUoU0NSQU1CTEVEX1BUUl9BU1NFUlRTKQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQgPSB2b2lkKj4KLSAgICBzdGF0aWMgYm9vbCBpc1NjcmFt
YmxlZChUIHZhbHVlKSB7IHJldHVybiAhdmFsdWUgfHwgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90Pih2YWx1ZSkgJiAweGZmZmYwMDAwMDAwMDAwMDApOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCA9IHZvaWQqPgotICAgIHN0YXRpYyB2b2lkIGFzc2VydElzU2NyYW1ibGVkKFQgdmFsdWUp
IHsgUkVMRUFTRV9BU1NFUlQoaXNTY3JhbWJsZWQodmFsdWUpKTsgfQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQgPSB2b2lkKj4KLSAgICBzdGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChU
IHZhbHVlKSB7IFJFTEVBU0VfQVNTRVJUKCFpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IHZvaWQqPgorICAgIHN0YXRpYyBib29sIGlzU2NyYW1ibGVkKFUg
dmFsdWUpIHsgcmV0dXJuICF2YWx1ZSB8fCAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSAmIDB4ZmZmZjAwMDAwMDAwMDAwMCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0g
dm9pZCo+CisgICAgc3RhdGljIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSB2YWx1ZSkgeyBSRUxF
QVNFX0FTU0VSVChpc1NjcmFtYmxlZCh2YWx1ZSkpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VSA9IHZvaWQqPgorICAgIHN0YXRpYyB2b2lkIGFzc2VydElzTm90U2NyYW1ibGVkKFUgdmFsdWUp
IHsgUkVMRUFTRV9BU1NFUlQoIWlzU2NyYW1ibGVkKHZhbHVlKSk7IH0KICNlbHNlCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc1NjcmFtYmxlZChU
KSB7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+IHN0YXRpYyB2b2lkIGFzc2Vy
dElzTm90U2NyYW1ibGVkKFQpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSB2b2lkKj4g
c3RhdGljIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoVSkgeyB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVSA9IHZvaWQqPiBzdGF0aWMgdm9pZCBhc3NlcnRJc05vdFNjcmFtYmxlZChVKSB7IH0KICNl
bmRpZgogICAgIHZvaWQgYXNzZXJ0SXNTY3JhbWJsZWQoKSBjb25zdCB7IGFzc2VydElzU2NyYW1i
bGVkKG1fc2NyYW1ibGVkQml0cyk7IH0KICAgICB2b2lkIGFzc2VydElzTm90U2NyYW1ibGVkKCkg
Y29uc3QgeyBhc3NlcnRJc05vdFNjcmFtYmxlZChtX3NjcmFtYmxlZEJpdHMpOyB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUID0gdm9pZCo+Ci0gICAgVCBkZXNjcmFtYmxlKCkgY29uc3QgeyBy
ZXR1cm4gZGVzY3JhbWJsZTxUPihtX3NjcmFtYmxlZEJpdHMpOyB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSA9IFQ+CisgICAgVSBkZXNjcmFtYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGRlc2NyYW1i
bGU8VT4obV9zY3JhbWJsZWRCaXRzKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVl
Pjo6dHlwZT4KICAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJu
IGRlc2NyYW1ibGU8VD4obV9zY3JhbWJsZWRCaXRzKTsgfQogCi0gICAgU2NyYW1ibGVkUHRyQml0
cyBzY3JhbWJsZWRCaXRzKCkgY29uc3QgeyByZXR1cm4gbV9zY3JhbWJsZWRCaXRzOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVSA9IFNjcmFtYmxlZFB0ckJpdHM+CisgICAgVSBiaXRzKCkgY29u
c3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KG1fc2NyYW1ibGVkQml0cyk7IH0KIAogICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc2NyYW1ibGVkQml0czsgfQogICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fc2NyYW1ibGVkQml0czsg
fQpAQCAtOTMsMjAgKzkyLDI3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJU
eXBlID0gdm9pZCosIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19w
b2ludGVyPFB0clR5cGU+Ojp2YWx1ZT46OnR5cGU+CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFB0clR5cGUgYikKICAgICB7Ci0gICAgICAgIHJldHVybiBkZXNjcmFtYmxlPFB0clR5cGU+KCkg
PT0gYjsKKyAgICAgICAgcmV0dXJuIGRlc2NyYW1ibGVkPFB0clR5cGU+KCkgPT0gYjsKICAgICB9
CiAKKyAgICBTY3JhbWJsZWRQdHImIG9wZXJhdG9yPShUIHB0cikKKyAgICB7CisgICAgICAgIG1f
c2NyYW1ibGVkQml0cyA9IHB0ciA/IHNjcmFtYmxlKHB0cikgOiAwOworICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorICAgIFNjcmFtYmxlZFB0ciYgb3BlcmF0b3I9KGNvbnN0IFNjcmFtYmxl
ZFB0ciYpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRy
Qml0cyBzY3JhbWJsZShUIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJp
dHM+KHB0cikgXiBrZXk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFQgZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NyYW1ibGVkUHRy
Qml0cyBzY3JhbWJsZShVIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFNjcmFtYmxlZFB0ckJp
dHM+KHB0cikgXiBrZXk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFUgZGVzY3JhbWJsZShTY3JhbWJsZWRQdHJCaXRzIHNjcmFtYmxlZEJpdHMp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihzY3JhbWJsZWRCaXRzIF4ga2V5KTsgfQogI2Vsc2UK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFt
YmxlZFB0ckJpdHMgc2NyYW1ibGUoVCBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJs
ZWRQdHJCaXRzPihwdHIpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBUIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRz
KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4oc2NyYW1ibGVkQml0cyk7IH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPgorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjcmFtYmxlZFB0ckJpdHMg
c2NyYW1ibGUoVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxTY3JhbWJsZWRQdHJCaXRzPihw
dHIpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBVIGRlc2NyYW1ibGUoU2NyYW1ibGVkUHRyQml0cyBzY3JhbWJsZWRCaXRzKSB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8VT4oc2NyYW1ibGVkQml0cyk7IH0KICNlbmRpZgogCiAgICAgU2NyYW1ibGVk
UHRyQml0cyBtX3NjcmFtYmxlZEJpdHMgeyAwIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>328186</attachid>
            <date>2017-12-01 16:48:28 -0800</date>
            <delta_ts>2017-12-01 16:48:28 -0800</delta_ts>
            <desc>x86_64 benchmark result.</desc>
            <filename>bench-result-x86_64.txt</filename>
            <type>text/plain</type>
            <size>8866</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCA1ICYmIC4uL3dzMi9JbnRlcm5hbC9Ub29scy9TY3JpcHRzL3J1bi1qc2MtYmVuY2ht
YXJrcyAtLW91dGVyIDYgYmFzZTpiYXNlL2pzYyBuZXc6bmV3L2pzYyAtLXN1bnNwaWRlciAtLW9j
dGFuZSAtLWtyYWtlbgpXYXJuaW5nOiBjb3VsZCBub3QgaWRlbnRpZnkgY2hlY2tvdXQgbG9jYXRp
b24gZm9yIGJhc2UKV2FybmluZzogY291bGQgbm90IGlkZW50aWZ5IGNoZWNrb3V0IGxvY2F0aW9u
IGZvciBuZXcKNzQ4Lzc0OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC1lIApHZW5lcmF0aW5nIGJlbmNobWFyayByZXBvcnQgYXQgL1ZvbHVtZXMvRGF0
YS9iZW5jaC9iYXNlX25ld19TdW5TcGlkZXJPY3RhbmVLcmFrZW5fQ2hyb25vbl8yMDE3MTIwMV8x
NjAwX3JlcG9ydC50eHQKQW5kIHJhdyBkYXRhIGF0IC9Wb2x1bWVzL0RhdGEvYmVuY2gvYmFzZV9u
ZXdfU3VuU3BpZGVyT2N0YW5lS3Jha2VuX0Nocm9ub25fMjAxNzEyMDFfMTYwMC5qc29uCgpCZW5j
aG1hcmsgcmVwb3J0IGZvciBTdW5TcGlkZXIsIE9jdGFuZSwgYW5kIEtyYWtlbiBvbiBDaHJvbm9u
IChNYWNCb29rUHJvMTEsMSkuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQgL1ZvbHVtZXMvRGF0YS9i
ZW5jaC9iYXNlL2pzYwoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL2JlbmNoL25ldy9qc2MKCkNvbGxl
Y3RlZCA2IHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCA2IFZNIGludm9jYXRpb25zIHBl
ciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUKbWVhc3Vy
ZW1lbnRzLiBVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlvbiBmb3Ig
d2FybS11cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8K
Z2V0IG1pY3Jvc2Vjb25kLWxldmVsIHRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRp
b24gdGltZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAg
ICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgClN1blNwaWRlcjoKICAgM2QtY3ViZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDcuMTk0MystMS42Mzk2ICAgICAgICAgICAgNi4zOTUyKy0xLjAzMDMgICAgICAgICAg
bWlnaHQgYmUgMS4xMjQ5eCBmYXN0ZXIKICAgM2QtbW9ycGggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDguNDg1OCstMi4yMzY0ICAgICAgICAgICAgNy40MjQzKy0xLjE3MTkgICAg
ICAgICAgbWlnaHQgYmUgMS4xNDMweCBmYXN0ZXIKICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDcuNjE0MistMi42NzMzICAgICA/ICAgICAgOC4yMDk4Ky0xLjMz
NDUgICAgICAgID8gbWlnaHQgYmUgMS4wNzgyeCBzbG93ZXIKICAgYWNjZXNzLWJpbmFyeS10cmVl
cyAgICAgICAgICAgICAgICAgICAgICAgIDMuOTkwNCstMS4wODQ0ICAgICA/ICAgICAgNC4zOTU0
Ky0wLjc3MDYgICAgICAgID8gbWlnaHQgYmUgMS4xMDE1eCBzbG93ZXIKICAgYWNjZXNzLWZhbm5r
dWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMTMyOCstMC43MTM3ICAgICA/ICAgICAg
OS4yMzI2Ky0xLjIwNTggICAgICAgID8gbWlnaHQgYmUgMS4xMzUyeCBzbG93ZXIKICAgYWNjZXNz
LW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTM4NystMC44Mjc5ICAgICA/
ICAgICAgNS40NTM1Ky0zLjMxODUgICAgICAgID8gbWlnaHQgYmUgMS4yMDE2eCBzbG93ZXIKICAg
YWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODU5NistMC41MTk4
ICAgICA/ICAgICAgNC44OTM5Ky0wLjI2MDMgICAgICAgID8KICAgYml0b3BzLTNiaXQtYml0cy1p
bi1ieXRlICAgICAgICAgICAgICAgICAgIDEuNzIxMystMC4xNDY3ICAgICA/ICAgICAgMS43Mzcy
Ky0wLjExOTggICAgICAgID8KICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAg
ICAgICAgIDUuMDU5NystMC4yOTMwICAgICA/ICAgICAgNS4yNjQ4Ky0wLjM1MDAgICAgICAgID8g
bWlnaHQgYmUgMS4wNDA1eCBzbG93ZXIKICAgYml0b3BzLWJpdHdpc2UtYW5kICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuMjgzMSstMC40OTY5ICAgICA/ICAgICAgMy4yODM4Ky0wLjM0NzQgICAg
ICAgID8KICAgYml0b3BzLW5zaWV2ZS1iaXRzICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjgz
OSstMC40MTE1ICAgICAgICAgICAgNi4wOTA4Ky0xLjA2NzggICAgICAgICAgbWlnaHQgYmUgMS4w
MzE3eCBmYXN0ZXIKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAg
IDguNjkwNistMTAuNzg3OCAgICAgICAgICAgNC40OTk2Ky0wLjY2MjIgICAgICAgICAgbWlnaHQg
YmUgMS45MzE0eCBmYXN0ZXIKICAgY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDcuMzE4NystMS45NjI2ICAgICAgICAgICAgNi43NjMwKy0xLjExMDcgICAgICAgICAg
bWlnaHQgYmUgMS4wODIyeCBmYXN0ZXIKICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNDgxMSstMC42MjA2ICAgICAgICAgICAgNC4zMDU2Ky0wLjM2MTAgICAg
ICAgICAgbWlnaHQgYmUgMS4wNDA4eCBmYXN0ZXIKICAgY3J5cHRvLXNoYTEgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuMTE0NistMC45MDkxICAgICA/ICAgICAgNS4zMjEwKy0wLjc0
ODkgICAgICAgID8gbWlnaHQgYmUgMS4wNDAzeCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQtdG9mdGUg
ICAgICAgICAgICAgICAgICAgICAgICAgMTAuODExNCstMS41MTIxICAgICAgICAgICAxMC43Mjk5
Ky0xLjY4ODUgICAgICAgIAogICBkYXRlLWZvcm1hdC14cGFyYiAgICAgICAgICAgICAgICAgICAg
ICAgICAxMS4yNTc4Ky02LjA3NzkgICAgICAgICAgICA3LjgxODgrLTAuOTg4OCAgICAgICAgICBt
aWdodCBiZSAxLjQzOTh4IGZhc3RlcgogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC42ODA5Ky0wLjI1ODQgICAgID8gICAgICA0Ljg1MTgrLTAuNDMzMyAgICAg
ICAgPyBtaWdodCBiZSAxLjAzNjV4IHNsb3dlcgogICBtYXRoLXBhcnRpYWwtc3VtcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi42NTcxKy0wLjY4NDUgICAgID8gICAgICA2Ljc1NDQrLTEuMDQ1
NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDZ4IHNsb3dlcgogICBtYXRoLXNwZWN0cmFsLW5vcm0g
ICAgICAgICAgICAgICAgICAgICAgICAgMi45NzY4Ky0wLjI4NjAgICAgID8gICAgICAzLjMwNzUr
LTEuMDEyMyAgICAgICAgPyBtaWdodCBiZSAxLjExMTF4IHNsb3dlcgogICByZWdleHAtZG5hICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC41ODE5Ky0xLjczNzcgICAgICAgICAgIDEw
LjIyNjgrLTEuNjIxMSAgICAgICAgICBtaWdodCBiZSAxLjAzNDd4IGZhc3RlcgogICBzdHJpbmct
YmFzZTY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi40MTI2Ky0xLjI1MDIgICAgICAg
ICAgICA2LjM2MzkrLTEuMDg5OCAgICAgICAgCiAgIHN0cmluZy1mYXN0YSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA4LjkxMzErLTEuMzA1MSAgICAgPyAgICAgIDkuNTQ3OSstMS41MTAx
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcxMnggc2xvd2VyCiAgIHN0cmluZy10YWdjbG91ZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE0LjkzODMrLTMuMjE2OCAgICAgPyAgICAgMjAuMDE3Nyst
OS45Mjg2ICAgICAgICA/IG1pZ2h0IGJlIDEuMzQwMHggc2xvd2VyCiAgIHN0cmluZy11bnBhY2st
Y29kZSAgICAgICAgICAgICAgICAgICAgICAgIDM2LjQ1MDYrLTE3LjgxNjkgICAgPyAgICAgNDIu
NDY1NystMjcuODU4MyAgICAgICA/IG1pZ2h0IGJlIDEuMTY1MHggc2xvd2VyCiAgIHN0cmluZy12
YWxpZGF0ZS1pbnB1dCAgICAgICAgICAgICAgICAgICAgICA4LjU5MzErLTEuNjc5MiAgICAgICAg
ICAgIDguNDk1NCstMS42MTA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExNXggZmFzdGVyCgogICA8
YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4wNDAxKy0wLjU5Mzgg
ICAgID8gICAgICA4LjIyNTArLTEuNzAxNCAgICAgICAgPyBtaWdodCBiZSAxLjAyMzB4IHNsb3dl
cgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCk9jdGFuZToKICAgZW5jcnlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4yMDIyNystMC4wMDMxMSAgICA/ICAgICAwLjIwNzEyKy0wLjAxMTU3ICAgICAgID8g
bWlnaHQgYmUgMS4wMjQweCBzbG93ZXIKICAgZGVjcnlwdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy44NDIzOSstMC40NjQyMSAgICAgICAgICAzLjgyNjk1Ky0wLjUzNjc1ICAg
ICAgIAogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgICAwLjE2ODEx
Ky0wLjAxMjk3ICAgID8gICAgIDAuMTk4MjkrLTAuMDM5NDUgICAgICAgPyBtaWdodCBiZSAxLjE3
OTV4IHNsb3dlcgogICBlYXJsZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjQwNDgxKy0wLjA2NTQyICAgID8gICAgIDAuNDE3NzgrLTAuMDc1NjAgICAgICAgPyBtaWdodCBi
ZSAxLjAzMjB4IHNsb3dlcgogICBib3llciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4LjYyNTg2Ky0yLjI2NDYyICAgICAgICAgIDcuNjczMDIrLTEuNzc4NDkgICAgICAgICBt
aWdodCBiZSAxLjEyNDJ4IGZhc3RlcgogICBuYXZpZXItc3Rva2VzICAgICAgICAgICAgICAgICAg
ICB4MiAgICAgICA2LjY4MzM3Ky0wLjIxMTQ0ICAgID8gICAgIDcuMDE3NzYrLTAuNTM0MjYgICAg
ICAgPyBtaWdodCBiZSAxLjA1MDB4IHNsb3dlcgogICByYXl0cmFjZSAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiAgICAgICAxLjA1NjU5Ky0wLjAxOTEzICAgID8gICAgIDEuMTE2OTMrLTAuMTc5
NDUgICAgICAgPyBtaWdodCBiZSAxLjA1NzF4IHNsb3dlcgogICByaWNoYXJkcyAgICAgICAgICAg
ICAgICAgICAgICAgICB4MiAgICAgICAwLjEyODAwKy0wLjAwNDI5ICAgID8gICAgIDAuMTM2OTcr
LTAuMDIyNDcgICAgICAgPyBtaWdodCBiZSAxLjA3MDF4IHNsb3dlcgogICBzcGxheSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiAgICAgICAwLjUwOTMxKy0wLjAzNjI2ICAgID8gICAgIDAu
NTQ3NTgrLTAuMDU4MzkgICAgICAgPyBtaWdodCBiZSAxLjA3NTJ4IHNsb3dlcgogICByZWdleHAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDI3LjIyMTI2Ky02LjkyMDIzICAgID8g
ICAgMjguNTExMzQrLTYuODk5MTAgICAgICAgPyBtaWdodCBiZSAxLjA0NzR4IHNsb3dlcgogICBw
ZGZqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDU0LjI5MDI5Ky0wLjc5MzQ0
ICAgID8gICAgNzEuMjIwOTkrLTI2LjA1Njk5ICAgICAgPyBtaWdodCBiZSAxLjMxMTl4IHNsb3dl
cgogICBtYW5kcmVlbCAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDk2LjY0ODY3Ky0y
OC4xNDM1OSAgICAgICAgODQuMjI2OTArLTIxLjc4NDIzICAgICAgICBtaWdodCBiZSAxLjE0NzV4
IGZhc3RlcgogICBnYmVtdSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDU4LjYx
MjkzKy0xNy43MTI2NyAgID8gICAgNTkuOTc0ODYrLTMzLjk1NDk2ICAgICAgPyBtaWdodCBiZSAx
LjAyMzJ4IHNsb3dlcgogICBjbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjcyMjg2Ky0wLjE3MTU1ICAgICAgICAgIDAuNjY0MDkrLTAuMDIxOTQgICAgICAgICBtaWdo
dCBiZSAxLjA4ODV4IGZhc3RlcgogICBqcXVlcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEwLjM0ODcxKy0yLjk2MTUxICAgID8gICAgMTAuOTY4NjUrLTIuMDQzNDEgICAgICAg
PyBtaWdodCBiZSAxLjA1OTl4IHNsb3dlcgogICBib3gyZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MiAgICAgIDE0Ljc2MTg5Ky0yLjkwNzg4ICAgICAgICAgMTQuNTc5NzUrLTMuOTU3Nzcg
ICAgICAgICBtaWdodCBiZSAxLjAxMjV4IGZhc3RlcgogICB6bGliICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MiAgICAgNTQ5LjY0OTgyKy0xNzEuNDc1MjIgICAgICA0NjAuMjc0MzIrLTcy
LjI2MDExICAgICAgICBtaWdodCBiZSAxLjE5NDJ4IGZhc3RlcgogICB0eXBlc2NyaXB0ICAgICAg
ICAgICAgICAgICAgICAgICB4MiAgICAxMDQ3Ljg0MzU5Ky0xMjAuODY4MzIgID8gIDExMjkuMDYz
NzYrLTI5MS41NjcxNSAgICAgPyBtaWdodCBiZSAxLjA3NzV4IHNsb3dlcgoKICAgPGdlb21ldHJp
Yz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy43MjYzNystMC4yOTg2NyAgICA/ICAg
ICA3LjkwNjQ4Ky0wLjMwOTQxICAgICAgID8gbWlnaHQgYmUgMS4wMjMzeCBzbG93ZXIKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAg
ICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IApLcmFrZW46CiAgIGFpLWFzdGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEz
Ni4zODYrLTE4LjAwMiAgICAgICAgICAgMTI2Ljc0NystMy4xMzcgICAgICAgICAgIG1pZ2h0IGJl
IDEuMDc2MXggZmFzdGVyCiAgIGF1ZGlvLWJlYXQtZGV0ZWN0aW9uICAgICAgICAgICAgICAgICAg
ICAgICA2MS41MDErLTkuNTc0ICAgICAgPyAgICAgIDY4LjAwOSstMTkuMjY4ICAgICAgICA/IG1p
Z2h0IGJlIDEuMTA1OHggc2xvd2VyCiAgIGF1ZGlvLWRmdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE1My4xODcrLTUuMzY4ICAgICAgPyAgICAgMTYwLjA4OCstMTguMDIzICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQ1MXggc2xvd2VyCiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1MC42ODQrLTI4LjAwOSAgICAgICAgICAgIDQyLjQ0NystNC4xNjIg
ICAgICAgICAgIG1pZ2h0IGJlIDEuMTk0MHggZmFzdGVyCiAgIGF1ZGlvLW9zY2lsbGF0b3IgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2MS44NzgrLTMuMTI3ICAgICAgPyAgICAgIDY2LjMyMyst
MTIuODE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcxOHggc2xvd2VyCiAgIGltYWdpbmctZGFya3Jv
b20gICAgICAgICAgICAgICAgICAgICAgICAgICA4NC4xMDcrLTguNTA4ICAgICAgPyAgICAgIDg4
LjE0MCstOS45NjkgICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ3OXggc2xvd2VyCiAgIGltYWdpbmct
ZGVzYXR1cmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA4My43MTYrLTEyLjcyNSAgICAgICAg
ICAgIDc0LjY1NSstMi4wODggICAgICAgICAgIG1pZ2h0IGJlIDEuMTIxNHggZmFzdGVyCiAgIGlt
YWdpbmctZ2F1c3NpYW4tYmx1ciAgICAgICAgICAgICAgICAgICAgICA4Ny4wNDUrLTEuOTAxICAg
ICAgPyAgICAgIDkwLjY5NystMTIuNTQ5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxOXggc2xvd2Vy
CiAgIGpzb24tcGFyc2UtZmluYW5jaWFsICAgICAgICAgICAgICAgICAgICAgICA1MC40OTkrLTYu
MTc3ICAgICAgICAgICAgIDQ1LjU3MistMS4xNDEgICAgICAgICAgIG1pZ2h0IGJlIDEuMTA4MXgg
ZmFzdGVyCiAgIGpzb24tc3RyaW5naWZ5LXRpbmRlcmJveCAgICAgICAgICAgICAgICAgICAyNi43
NjYrLTAuOTExICAgICAgPyAgICAgIDI3LjA4MistMC43NzQgICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExOHggc2xvd2VyCiAgIHN0YW5mb3JkLWNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAg
ICA0OS40MzcrLTMuMTA2ICAgICAgPyAgICAgIDQ5Ljk0OCstNC43MjUgICAgICAgICA/IG1pZ2h0
IGJlIDEuMDEwM3ggc2xvd2VyCiAgIHN0YW5mb3JkLWNyeXB0by1jY20gICAgICAgICAgICAgICAg
ICAgICAgICA0Mi4xNTgrLTUuODg2ICAgICAgPyAgICAgIDQ2LjIxNistOC4wODUgICAgICAgICA/
IG1pZ2h0IGJlIDEuMDk2M3ggc2xvd2VyCiAgIHN0YW5mb3JkLWNyeXB0by1wYmtkZjIgICAgICAg
ICAgICAgICAgICAgIDExOS40NDArLTgxLjgxMSAgICAgICAgICAgIDkwLjcyNistMTguMjk2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMzE2NXggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0by1zaGEyNTYt
aXRlcmF0aXZlICAgICAgICAgICAyNi45MDQrLTIuMjA5ICAgICAgICAgICAgIDI2LjM1NSstMS4z
NTggICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwOHggZmFzdGVyCgogICA8YXJpdGhtZXRpYz4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNzMuODM2Ky02LjE1NyAgICAgICAgICAgICA3MS42
NDMrLTIuNTcyICAgICAgICAgICBtaWdodCBiZSAxLjAzMDZ4IGZhc3RlcgoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAg
ICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkdlb21l
YW4gb2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3VsdD4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNi42MDg2Ky0wLjk5MDIgICAgID8gICAgIDE2LjY0MTcrLTEuMDc2MCAgICAg
ICAgPyBtaWdodCBiZSAxLjAwMjB4IHNsb3dlcgoKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>