<?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>109545</bug_id>
          
          <creation_ts>2013-02-11 22:00:03 -0800</creation_ts>
          <short_desc>DFG CompareEq optimization should be retuned</short_desc>
          <delta_ts>2013-02-12 09:35:54 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>830555</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-11 22:00:03 -0800</bug_when>
    <thetext>Couple of things seem to have gone wrong:

- Backend still emits checks even if the CFA has proven them to be unnecessary

- Object-to-object comparisons seem to no longer be emitted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830560</commentid>
    <comment_count>1</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-02-11 22:06:35 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Couple of things seem to have gone wrong:
&gt; 
&gt; - Backend still emits checks even if the CFA has proven them to be unnecessary
&gt; 
&gt; - Object-to-object comparisons seem to no longer be emitted

inverted branch? :-D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830561</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-11 22:07:33 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)
&gt; &gt; Couple of things seem to have gone wrong:
&gt; &gt; 
&gt; &gt; - Backend still emits checks even if the CFA has proven them to be unnecessary
&gt; &gt; 
&gt; &gt; - Object-to-object comparisons seem to no longer be emitted
&gt; 
&gt; inverted branch? :-D

Affirmative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830590</commentid>
    <comment_count>3</comment_count>
      <attachid>187779</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-11 23:17:03 -0800</bug_when>
    <thetext>Created attachment 187779
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830984</commentid>
    <comment_count>4</comment_count>
      <attachid>187779</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-02-12 08:56:45 -0800</bug_when>
    <thetext>Comment on attachment 187779
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831017</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-12 09:35:54 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/142636</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187779</attachid>
            <date>2013-02-11 23:17:03 -0800</date>
            <delta_ts>2013-02-12 08:56:45 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>37793</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQyNTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDEzLTAyLTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIENvbXBhcmVFcSBvcHRpbWl6YXRpb24gc2hvdWxkIGJlIHJldHVuZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTU0NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSBNYWRlIHRoZSBv
YmplY3QtdG8tb2JqZWN0IGVxdWFsaXR5IGNhc2Ugd29yayBhZ2FpbiBieSBob2lzdGluZyB0aGUg
aWYgc3RhdGVtZW50CisgICAgICAgICAgZm9yIGl0LiBQcmV2aW91c2x5LCBvYmplY3QtdG8tb2Jq
ZWN0IGVxdWFsaXR5IHdvdWxkIGJlIGNvbXBpbGVkIGFzCisgICAgICAgICAgb2JqZWN0LXRvLW9i
amVjdC1vci1vdGhlci4KKyAgICAgICAgCisgICAgICAgIC0gQWRkZWQgQWJzdHJhY3RTdGF0ZSBn
dWFyZHMgZm9yIG1vc3Qgb2YgdGhlIHR5cGUgY2hlY2tzIHRoYXQgdGhlIG9iamVjdCBlcXVhbGl0
eQorICAgICAgICAgIGNvZGUgdXNlcy4KKyAgICAgICAgCisgICAgICAgIExvb2tzIGxpa2UgYSBo
aW50IG9mIGEgc3BlZWQtdXAgb24gYWxsIG9mIHRoZSB0aGluZ3MuCisKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wYXJlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVj
dFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToK
KwogMjAxMy0wMi0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2UgSlNDIEFQSSBtb3JlIE5VTEwgdG9sZXJhbnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTQyNTc1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODQ4LDIyICs4NDgsMjIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVu
c2lnbmVkIGluZAogICAgICAgICAgICAgICAgIG5vZGUtPnNldENhbkV4aXQoZmFsc2UpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSAKLSAgICAgICAgICAgIGlmIChsZWZ0
LT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSAmJiByaWdodC0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0
T3JPdGhlcigpKSB7CisgICAgICAgICAgICBpZiAobGVmdC0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0
KCkgJiYgcmlnaHQtPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAg
bm9kZS0+c2V0Q2FuRXhpdCh0cnVlKTsKLSAgICAgICAgICAgICAgICBmb3JOb2RlKGxlZnQpLmZp
bHRlcihTcGVjQ2VsbCAmIH5TcGVjU3RyaW5nKTsKLSAgICAgICAgICAgICAgICBmb3JOb2RlKHJp
Z2h0KS5maWx0ZXIoKFNwZWNDZWxsICYgflNwZWNTdHJpbmcpIHwgU3BlY090aGVyKTsKKyAgICAg
ICAgICAgICAgICBmb3JOb2RlKGxlZnQpLmZpbHRlcihTcGVjT2JqZWN0TWFzayk7CisgICAgICAg
ICAgICAgICAgZm9yTm9kZShyaWdodCkuZmlsdGVyKFNwZWNPYmplY3RNYXNrKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsZWZ0LT5zaG91
bGRTcGVjdWxhdGVPYmplY3RPck90aGVyKCkgJiYgcmlnaHQtPnNob3VsZFNwZWN1bGF0ZU9iamVj
dCgpKSB7CisgICAgICAgICAgICBpZiAobGVmdC0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgJiYg
cmlnaHQtPnNob3VsZFNwZWN1bGF0ZU9iamVjdE9yT3RoZXIoKSkgewogICAgICAgICAgICAgICAg
IG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZm9yTm9kZShsZWZ0KS5m
aWx0ZXIoKFNwZWNDZWxsICYgflNwZWNTdHJpbmcpIHwgU3BlY090aGVyKTsKLSAgICAgICAgICAg
ICAgICBmb3JOb2RlKHJpZ2h0KS5maWx0ZXIoU3BlY0NlbGwgJiB+U3BlY1N0cmluZyk7CisgICAg
ICAgICAgICAgICAgZm9yTm9kZShsZWZ0KS5maWx0ZXIoU3BlY09iamVjdE1hc2spOworICAgICAg
ICAgICAgICAgIGZvck5vZGUocmlnaHQpLmZpbHRlcihTcGVjT2JqZWN0TWFzayB8IFNwZWNPdGhl
cik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAobGVmdC0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgJiYgcmlnaHQtPnNob3VsZFNwZWN1bGF0
ZU9iamVjdCgpKSB7CisgICAgICAgICAgICBpZiAobGVmdC0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0
T3JPdGhlcigpICYmIHJpZ2h0LT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkgewogICAgICAgICAg
ICAgICAgIG5vZGUtPnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgZm9yTm9kZShs
ZWZ0KS5maWx0ZXIoU3BlY0NlbGwgJiB+U3BlY1N0cmluZyk7Ci0gICAgICAgICAgICAgICAgZm9y
Tm9kZShyaWdodCkuZmlsdGVyKFNwZWNDZWxsICYgflNwZWNTdHJpbmcpOworICAgICAgICAgICAg
ICAgIGZvck5vZGUobGVmdCkuZmlsdGVyKFNwZWNPYmplY3RNYXNrIHwgU3BlY090aGVyKTsKKyAg
ICAgICAgICAgICAgICBmb3JOb2RlKHJpZ2h0KS5maWx0ZXIoU3BlY09iamVjdE1hc2spOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZp
c2lvbiAxNDI1NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDkxLDI2ICsxNDkxLDM1IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICAKICAgICBpZiAobV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWRXYXRjaHBvaW50KCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkV2F0Y2hwb2ludCgpLT5hZGQoc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOyAKLSAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChv
cDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKLSAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2Rl
LT5jaGlsZDIoKSwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmplY3RNYXNrKSB7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCAKKyAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdE1hc2spIHsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIAorICAgICAgICAgICAgICAgIG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAK
KyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0
cnVjdHVyZSh0aGlzKTsKICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5n
cHIoKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ax
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3Ry
dWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAg
aWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmplY3RN
YXNrKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LCAKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCisgICAgICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQ
UiwgCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICB9CiAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVz
dDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTUxOCwx
MSArMTUyNywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSkpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsK
LSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQ
dHIoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwor
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3Bl
Y09iamVjdE1hc2spIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+
Y2hpbGQyKCksIAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0dXJlR1BSLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ICAgIH0KICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgCiAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBA
IC0xNTU2LDIxICsxNTY4LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RU
b09iamUKICAgICAKICAgICBpZiAobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJy
ZW50Tm9kZS0+Y29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCkt
PmlzU3RpbGxWYWxpZCgpKSB7IAogICAgICAgICBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnQoKS0+YWRkKHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpKTsKLSAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0
Q2hpbGQsIAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobGVmdENo
aWxkKS5tX3R5cGUgJiB+U3BlY09iamVjdE1hc2spIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soCisgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwob3AxR1BSKSwgbGVmdENoaWxkLCAKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIo
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCisgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhp
cyk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAKICAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRD
aGlsZCwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9k
ZShsZWZ0Q2hpbGQpLm1fdHlwZSAmIH5TcGVjT2JqZWN0TWFzaykgeworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIAorICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAorICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsCisgICAgICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOworICAgICAgICB9CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCAKICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCAKQEAgLTE1ODcsMjEgKzE2MDUsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFu
Y2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuCiAgICAgaWYgKG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pLT5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkV2F0Y2hwb2ludCgpLT5pc1N0aWxsVmFsaWQoKSkgeyAKICAgICAgICAgbV9qaXQuZ3Jh
cGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiktPm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmFkZChzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7
Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BS
LCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQ
dHIoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ICAgIGlmICgobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIFNwZWNDZWxsKSAm
IH5TcGVjT2JqZWN0TWFzaykgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAg
ICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIp
LCByaWdodENoaWxkLCAKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMp
OwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwogCiAgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BS
KSwgcmlnaHRDaGlsZCwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQ
UiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgaWYgKChtX3N0
YXRlLmZvck5vZGUocmlnaHRDaGlsZCkubV90eXBlICYgU3BlY0NlbGwpICYgflNwZWNPYmplY3RN
YXNrKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQs
IAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIs
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICB9CiAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQ
YXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xNjE5LDcgKzE2
NDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgCiAg
ICAgLy8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IG5v
dCBiZSBhIGNlbGwuIENoZWNrIGlmIHRoYXQgaXMgZW5vdWdoIHRvCiAgICAgLy8gcHJvdmUgdGhh
dCBpdCBpcyBlaXRoZXIgbnVsbCBvciB1bmRlZmluZWQuCi0gICAgaWYgKCFpc090aGVyT3JFbXB0
eVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiB+U3BlY0Nl
bGwpKSB7CisgICAgaWYgKChtX3N0YXRlLmZvck5vZGUocmlnaHRDaGlsZCkubV90eXBlICYgflNw
ZWNDZWxsKSAmIH5TcGVjT3RoZXIpIHsKICAgICAgICAgbV9qaXQubW92ZShvcDJUYWdHUFIsIHJl
c3VsdEdQUik7CiAgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIp
OwogICAgICAgICAKQEAgLTE2NTYsMjEgKzE2ODAsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIAogICAgIGlmIChtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnQoKS0+aXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgbV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWRXYXRjaHBvaW50KCktPmFkZChzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7Ci0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbGVmdENoaWxkLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgIGlmIChtX3N0YXRlLmZv
ck5vZGUobGVmdENoaWxkKS5tX3R5cGUgJiB+U3BlY09iamVjdE1hc2spIHsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLAorICAgICAgICAgICAgICAgIG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAK
KyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0
cnVjdHVyZSh0aGlzKTsKICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5n
cHIoKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ax
R1BSKSwgbGVmdENoaWxkLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJl
R1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgaWYgKG1f
c3RhdGUuZm9yTm9kZShsZWZ0Q2hpbGQpLm1fdHlwZSAmIH5TcGVjT2JqZWN0TWFzaykgeworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsCisgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAorICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgfQogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRD
aGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTE2ODYsMjEgKzE3MTYsMjcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRo
aW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuCiAgICAgaWYgKG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pLT5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5pc1N0aWxsVmFsaWQoKSkgewogICAgICAg
ICBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2lu
KS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+YWRkKHNwZWN1bGF0aW9uV2F0
Y2hwb2ludCgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLAotICAgICAgICAgICAgbV9q
aXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgICAgICBpZiAoKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiBT
cGVjQ2VsbCkgJiB+U3BlY09iamVjdE1hc2spIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soCisgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQ
YXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIo
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCisgICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0
dXJlKHRoaXMpOwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigp
OwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQ
YXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHN0
cnVjdHVyZUdQUiwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAg
IGlmICgobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIFNwZWNDZWxsKSAmIH5T
cGVjT2JqZWN0TWFzaykgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAg
ICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCBy
aWdodENoaWxkLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0dXJlR1BSLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ICAgIH0KICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJU
YWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLAogICAgICAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAt
MTcxNSw3ICsxNzUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2Jq
ZQogICAgIAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hp
bGQgbXVzdCBub3QgYmUgYSBjZWxsLiBDaGVjayBpZiB0aGF0IGlzIGVub3VnaCB0bwogICAgIC8v
IHByb3ZlIHRoYXQgaXQgaXMgZWl0aGVyIG51bGwgb3IgdW5kZWZpbmVkLgotICAgIGlmIChpc090
aGVyT3JFbXB0eVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5tX3R5cGUg
JiB+U3BlY0NlbGwpKQorICAgIGlmICgobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlw
ZSAmIH5TcGVjQ2VsbCkgJiB+U3BlY090aGVyKQogICAgICAgICByaWdodE5vdENlbGwubGluaygm
bV9qaXQpOwogICAgIGVsc2UgewogICAgICAgICBqdW1wKG5vdFRha2VuLCBGb3JjZUp1bXApOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAxNDI1NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ0LDI3ICsxNTQ0LDM2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgCiAgICAgaWYgKG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludCgpLT5pc1N0aWxsVmFsaWQoKSkgewotICAgICAgICBtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnQoKS0+YWRkKHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpKTsgCi0gICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCi0g
ICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICBtX2ppdC5n
cmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5jb2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnQoKS0+YWRkKHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpKTsKKyAgICAg
ICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmpl
Y3RNYXNrKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAg
IEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAorICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICB9CisgICAgICAgIGlmIChtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0TWFzaykgeworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCisgICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUo
dGhpcyk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAK
ICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAot
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmplY3RNYXNrKSB7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgICAg
ICAgICAgc3RydWN0dXJlR1BSLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgIH0KICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyhvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTE1NzIs
MTEgKzE1ODEsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaQog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7
Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwg
bm9kZS0+Y2hpbGQyKCksCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVH
UFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICBpZiAobV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdE1hc2spIHsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgQmFkVHlwZSwg
SlNWYWx1ZVJlZ3Mob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCisgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IAorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAorICAgICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgfQogICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAogICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIApAQCAtMTYwNiwyMSArMTYxOCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0VG9PYmplCiAgICAKICAgICBpZiAobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50KCktPmlzU3RpbGxWYWxpZCgpKSB7IAogICAgICAgICBtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnQoKS0+YWRkKHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpKTsKLSAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBsZWZ0Q2hpbGQs
IAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobGVmdENoaWxkKS5t
X3R5cGUgJiB+U3BlY09iamVjdE1hc2spIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
CisgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbGVmdENoaWxk
LCAKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxE
YXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAgICAgICAgIEdQUlJlZyBz
dHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBzdHJ1Y3R1cmVHUFIpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVSZWdzKG9wMUdQUiksIGxlZnRDaGlsZCwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIo
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAg
IHN0cnVjdHVyZUdQUiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAg
ICAgaWYgKG1fc3RhdGUuZm9yTm9kZShsZWZ0Q2hpbGQpLm1fdHlwZSAmIH5TcGVjT2JqZWN0TWFz
aykgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBCYWRU
eXBlLCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBsZWZ0Q2hpbGQsIAorICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LAorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsCisgICAgICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICB9CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbGVmdENoaWxkLAogICAgICAgICAgICAgbV9q
aXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IApAQCAtMTYzNiwyMSArMTY1NCwyNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0VG9PYmplCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRD
aGlsZCBtdXN0IGJlIGEgY2VsbC4gCiAgICAgaWYgKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludCgpLT5pc1N0aWxsVmFsaWQoKSkgeyAKICAgICAgICAgbV9qaXQuZ3JhcGgoKS5nbG9i
YWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50KCktPmFkZChzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7Ci0gICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGls
ZCwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgICAgICBpZiAoKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxk
KS5tX3R5cGUgJiBTcGVjQ2VsbCkgJiB+U3BlY09iamVjdE1hc2spIHsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3Ay
R1BSKSwgcmlnaHRDaGlsZCwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCisgICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAg
ICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAKICAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsCi0gICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAot
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKKyAgICAgICAgaWYgKChtX3N0YXRlLmZvck5vZGUocmlnaHRDaGlsZCkubV90eXBl
ICYgU3BlY0NlbGwpICYgflNwZWNPYmplY3RNYXNrKSB7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAorICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJp
Z2h0Q2hpbGQsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCisgICAgICAgICAgICAgICAgICAgIHN0cnVj
dHVyZUdQUiwKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAg
IH0KICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIp
LCByaWdodENoaWxkLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTY2OCw3ICsxNjkyLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIAogICAgIC8vIFdlIGtu
b3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBub3QgYmUgYSBjZWxs
LiBDaGVjayBpZiB0aGF0IGlzIGVub3VnaCB0bwogICAgIC8vIHByb3ZlIHRoYXQgaXQgaXMgZWl0
aGVyIG51bGwgb3IgdW5kZWZpbmVkLgotICAgIGlmICghaXNPdGhlck9yRW1wdHlTcGVjdWxhdGlv
bihtX3N0YXRlLmZvck5vZGUocmlnaHRDaGlsZCkubV90eXBlICYgflNwZWNDZWxsKSkgeworICAg
IGlmICgobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIH5TcGVjQ2VsbCkgJiB+
U3BlY090aGVyKSB7CiAgICAgICAgIG1faml0Lm1vdmUob3AyR1BSLCByZXN1bHRHUFIpOwogICAg
ICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRl
ZmluZWQpLCByZXN1bHRHUFIpOwogICAgICAgICAKQEAgLTE3MDQsMjEgKzE3MjgsMjcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIAogICAgIGlmIChtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luKS0+bWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+aXNTdGlsbFZhbGlkKCkpIHsKICAgICAg
ICAgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdp
biktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmFkZChzcGVjdWxhdGlvbldh
dGNocG9pbnQoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3Mob3AxR1BSKSwgbGVmdENoaWxkLCAKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmds
b2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICBpZiAobV9zdGF0
ZS5mb3JOb2RlKGxlZnRDaGlsZCkubV90eXBlICYgflNwZWNPYmplY3RNYXNrKSB7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKG9wMUdQUiksIGxlZnRDaGlsZCwgCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRy
KAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAorICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRo
aXMpOwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwogCiAg
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKLSAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBsZWZ0Q2hpbGQsIAotICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpF
cXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShsZWZ0Q2hpbGQp
Lm1fdHlwZSAmIH5TcGVjT2JqZWN0TWFzaykgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKKyAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBsZWZ0Q2hp
bGQsIAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJl
R1BSLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgIH0K
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBs
ZWZ0Q2hpbGQsIAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTczNCwyMSArMTc2NCwyNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgLy8gV2Uga25vdyB0aGF0
IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4gCiAgICAgaWYg
KG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4p
LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5pc1N0aWxsVmFsaWQoKSkgewog
ICAgICAgICBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2Rl
T3JpZ2luKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+YWRkKHNwZWN1bGF0
aW9uV2F0Y2hwb2ludCgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRy
KAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgIGlmICgo
bV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIFNwZWNDZWxsKSAmIH5TcGVjT2Jq
ZWN0TWFzaykgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAg
ICBCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLAorICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ay
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0
cnVjdHVyZS5ncHIoKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7
Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwg
cmlnaHRDaGlsZCwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwg
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgIGlmICgobV9zdGF0
ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIFNwZWNDZWxsKSAmIH5TcGVjT2JqZWN0TWFz
aykgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBCYWRU
eXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLAorICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCAKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKKyAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgIH0KICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIApAQCAtMTc2Myw3ICsxNzk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBl
ZXBIb2xlT2JqZQogICAgIAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gs
IHJpZ2h0Q2hpbGQgbXVzdCBub3QgYmUgYSBjZWxsLiBDaGVjayBpZiB0aGF0IGlzIGVub3VnaCB0
bwogICAgIC8vIHByb3ZlIHRoYXQgaXQgaXMgZWl0aGVyIG51bGwgb3IgdW5kZWZpbmVkLgotICAg
IGlmIChpc090aGVyT3JFbXB0eVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxk
KS5tX3R5cGUgJiB+U3BlY0NlbGwpKQorICAgIGlmICgobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hp
bGQpLm1fdHlwZSAmIH5TcGVjQ2VsbCkgJiB+U3BlY090aGVyKQogICAgICAgICByaWdodE5vdENl
bGwubGluaygmbV9qaXQpOwogICAgIGVsc2UgewogICAgICAgICBqdW1wKG5vdFRha2VuLCBGb3Jj
ZUp1bXApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE0MjU3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAxLDI2ICsxNTAx
LDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAKICAg
ICBpZiAobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+Y29kZU9yaWdpbiktPm1h
c3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAg
ICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5hZGQoc3BlY3VsYXRpb25XYXRjaHBvaW50
KCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCAKLSAgICAgICAgICAgIG1faml0LmJy
YW5jaFB0cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwotICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MkdQUiksIG5vZGUtPmNoaWxkMigpLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgIGlmIChtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0TWFzaykgeworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgCisgICAgICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlICYgflNwZWNPYmplY3RNYXNrKSB7CisgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAorICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCAKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ay
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0
cnVjdHVyZS5ncHIoKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7
Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQ
dHIoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwor
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3Bl
Y09iamVjdE1hc2spIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+
Y2hpbGQxKCksCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAorICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3R1cmVHUFIsIAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAg
ICAgfQogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAogICAgICAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAt
MTUyOCwxMSArMTUzNywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVP
YmplCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKSkpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJl
R1BSKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKLSAgICAgICAgICAgIG1faml0LmJy
YW5jaFB0cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAm
IH5TcGVjT2JqZWN0TWFzaykgeworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAg
ICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBu
b2RlLT5jaGlsZDIoKSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCisgICAgICAgICAgICAgICAgICAg
IHN0cnVjdHVyZUdQUiwgCisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwor
ICAgICAgICB9CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCiAgICAgICAgICAgICBtX2pp
dC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
CkBAIC0xNTk2LDEyICsxNjA4LDEyIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVw
SG9sZUJyYW4KICAgICAgICAgICAgICAgICBub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoKG5v
ZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbiwgb3BlcmF0aW9uKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1
bGF0ZU9iamVjdE9yT3RoZXIoKSkKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hv
dWxkU3BlY3VsYXRlT2JqZWN0KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU9i
amVjdCgpKQorICAgICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5v
ZGUsIGJyYW5jaE5vZGUpOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZU9iamVjdCgpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVP
YmplY3RPck90aGVyKCkpCiAgICAgICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0VG9P
YmplY3RPck90aGVyRXF1YWxpdHkobm9kZS0+Y2hpbGQxKCksIG5vZGUtPmNoaWxkMigpLCBicmFu
Y2hOb2RlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVj
dWxhdGVPYmplY3RPck90aGVyKCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU9i
amVjdCgpKQogICAgICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JP
dGhlckVxdWFsaXR5KG5vZGUtPmNoaWxkMigpLCBub2RlLT5jaGlsZDEoKSwgYnJhbmNoTm9kZSk7
Ci0gICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2Jq
ZWN0KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKQotICAgICAg
ICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGUp
OwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbm9uU3BlY3VsYXRpdmVQZWVw
aG9sZUJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24sIG9wZXJhdGlvbik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMzc5LDYgKzMzOTEsMTEgQEAgYm9vbCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAgICAgICAgICAgbm9uU3BlY3VsYXRp
dmVOb25QZWVwaG9sZUNvbXBhcmUobm9kZSwgY29uZGl0aW9uLCBvcGVyYXRpb24pOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3Bl
Y3VsYXRlT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2Rl
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSAmJiBub2RlLT5j
aGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0T3JPdGhlcigpKSB7CiAgICAgICAgICAgICBj
b21waWxlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkobm9kZS0+Y2hpbGQxKCksIG5vZGUt
PmNoaWxkMigpKTsKQEAgLTMzODksMTEgKzM0MDYsNiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpj
b21wYXJlKE5vZGUqIG5vZGUsCiAgICAgICAgICAgICBjb21waWxlT2JqZWN0VG9PYmplY3RPck90
aGVyRXF1YWxpdHkobm9kZS0+Y2hpbGQyKCksIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0
ZU9iamVjdCgpKSB7Ci0gICAgICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgbm9u
U3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmUobm9kZSwgY29uZGl0aW9uLCBvcGVyYXRpb24p
Owo=
</data>
<flag name="review"
          id="207699"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>