<?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>176590</bug_id>
          
          <creation_ts>2017-09-08 05:58:48 -0700</creation_ts>
          <short_desc>[DFG][FTL] GetByVal(ObjectUse with Array::Generic, StringUse/SymbolUse) should be supported</short_desc>
          <delta_ts>2017-09-27 12:37:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346773</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-08 05:58:48 -0700</bug_when>
    <thetext>We can find the code like,

var dispatchTable = {
   &quot;xxx&quot;: function () { ... },
   &quot;yyy&quot;: ...,
   ...
};


dispatchTable[xxx]()

In the above case, we can easily find

1. dispatchTable is Cell
2. xxx is String

I find it in Octane/TypeScript.

Currently, we always go to operationGetByVal, which is too generic method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346784</commentid>
    <comment_count>1</comment_count>
      <attachid>320261</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-08 07:30:35 -0700</bug_when>
    <thetext>Created attachment 320261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346788</commentid>
    <comment_count>2</comment_count>
      <attachid>320263</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-08 07:41:07 -0700</bug_when>
    <thetext>Created attachment 320263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346792</commentid>
    <comment_count>3</comment_count>
      <attachid>320263</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-08 07:53:00 -0700</bug_when>
    <thetext>Comment on attachment 320263
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3175
&gt; +    JSValueRegs resultRegs = result.regs();

Is it worth using the FlushedCallResult (I forget actual class name) here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346794</commentid>
    <comment_count>4</comment_count>
      <attachid>320263</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-08 08:07:16 -0700</bug_when>
    <thetext>Comment on attachment 320263
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3175
&gt;&gt; +    JSValueRegs resultRegs = result.regs();
&gt; 
&gt; Is it worth using the FlushedCallResult (I forget actual class name) here?

Sounds good. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346802</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-08 08:36:25 -0700</bug_when>
    <thetext>Committed r221783: &lt;http://trac.webkit.org/changeset/221783&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353534</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:37:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693620&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320261</attachid>
            <date>2017-09-08 07:30:35 -0700</date>
            <delta_ts>2017-09-08 07:41:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176590-20170908233034.patch</filename>
            <type>text/plain</type>
            <size>16171</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OWUxMGFiNTI5NmExMTlhYjJlNmU3MTE5MTRhNjFjZjU1ODMwNGVmLi4wMDExY2M2ZDQxYmYzN2E3
YWZjOTM4ZjM1NmMyYTllNDZkNTAyZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxNy0wOS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEdldEJ5VmFsKE9iamVjdFVzZSB3aXRoIEFycmF5
OjpHZW5lcmljLCBTdHJpbmdVc2UvU3ltYm9sVXNlKSBzaG91bGQgYmUgc3VwcG9ydGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY1OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgZml4dXAg
ZWRnZXMgZm9yIEdldEJ5VmFsKEFycmF5OjpHZW5lcmljKSB0byBjYWxsIGZhc3RlciBvcGVyYXRp
b24gaW5zdGVhZCBvZiBnZW5lcmljIG9wZXJhdGlvbkdldEJ5VmFsLgorCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgcGF0
Y2hlZAorCisgICAgICAgIG9iamVjdC1pdGVyYXRlICAgICAgICAgICAgICAgIDUuODUzMSstMC4z
MDI5ICAgICAgICAgICAgNS43OTAzKy0wLjI3OTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTA4eCBm
YXN0ZXIKKyAgICAgICAgb2JqZWN0LWl0ZXJhdGUtc3ltYm9scyAgICAgICAgNy40MDk5Ky0wLjM5
OTMgICAgIF4gICAgICA1LjgyNTQrLTAuMjI3NiAgICAgICAgXiBkZWZpbml0ZWx5IDEuMjcyMHgg
ZmFzdGVyCisKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN5bWJvbCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlR2V0QnlWYWwpOgorCiAyMDE3LTA5LTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBVc2UgSklUIHByb2JlcyBmb3IgREZHIE9TUiBleGl0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZGVjODE5YmM2YjZjMjc2
OWVmNTQ1OGFiNzQ5MDExZTQ5YzA1Yjk4MC4uOGI5NGZkZjhiZWE3MWM2M2I1OGJjMTE1NmIzNzE1
NjE5YWE3MzBhNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCkBAIC03ODgsNiArNzg4LDE5IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpHZW5lcmljOgorICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVT
dHJpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNl
Pihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDIo
KS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZp
eEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsgLy8gU3BlY3VsYXRpbmcgY2VsbCBkdWUgdG8gcmVnaXN0ZXIgcHJlc3N1
cmUgb24gMzItYml0LgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAppbmRleCA3MDc4MmZiODJmYTg3MjcxYmJjOWZhNThjY2RmYWRlMDZhZjlmMzUx
Li5iMjNhYmM1M2MxMTQ5MDJlOGJiOTQ0NDc5YmZiYTk3NTlmNTY5OGUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTU4NCw2ICs1ODQsMzggQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludChF
eGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW4KICAgICByZXR1cm4gZ2V0QnlWYWxDZWxsSW50KGV4ZWMs
IGJhc2UsIGluZGV4KTsKIH0KIAorQUxXQVlTX0lOTElORSBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZh
bE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZS0+
c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHko
c3RydWN0dXJlKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlLT5mYXN0R2V0
T3duUHJvcGVydHkodm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorICAgIHJldHVybiBiYXNlLT5nZXQoZXhlYywgcHJvcGVydHlO
YW1lKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZh
bE9iamVjdFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgSlNDZWxsKiBzdHJp
bmcpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHN0cmluZyktPnRv
SWRlbnRpZmllcihleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGdldEJ5VmFsT2JqZWN0KGV4ZWMsIHZtLCBhc09iamVjdChiYXNlKSwgcHJvcGVydHlO
YW1lKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlW
YWxPYmplY3RTeW1ib2woRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEpTQ2VsbCogc3lt
Ym9sKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRC
eVZhbE9iamVjdChleGVjLCB2bSwgYXNPYmplY3QoYmFzZSksIGFzU3ltYm9sKHN5bWJvbCktPnBy
aXZhdGVOYW1lKCkpKTsKK30KKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAppbmRleCBmYzlkZjE4ZjE1YjY5OWI3MDBkMDFiNjM3ZWI4NWNiZDVjYmFj
NjRlLi40MzE5NjQ2NDZiZmVhNjM4YTBjMTdkMjdhOGI3NWM1YTUxMWZjNTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtNzEsNiArNzEsOCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeVZhbENlbGwoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbFN0cmluZ0ludChFeGVjU3RhdGUqLCBKU1N0cmluZyosIGludDMyX3QpIFdURl9JTlRFUk5B
TDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RT
dHJpbmcoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKiBzdHJpbmcpIFdURl9JTlRFUk5BTDsK
K0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTeW1i
b2woRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKiBzeW1ib2wpIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9QcmltaXRpdmUoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVG9OdW1iZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdp
dGhUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDcwYzdmNmIzZDhlODI0ZTMzNmJjY2Y2MThm
OWNkOGQ0YmJlYjFiOTkuLmEwOTY1ZGNlMzhhM2I5ZTUwODZlM2U2MWVlMWU5MjE3ZmQzMmE3NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC0zMTQ0LDYgKzMxNDQsNDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5
VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGUKICAgICBub1Jl
c3VsdChub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsRm9y
T2JqZWN0V2l0aFN0cmluZyhOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGFyZzEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFy
ZzIodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKworICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKKyAgICBHUFJSZWcg
YXJnMkdQUiA9IGFyZzIuZ3ByKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7CisKKyAgICBzcGVjdWxhdGVPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGFyZzFHUFIp
OworICAgIHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDIoKSwgYXJnMkdQUik7CisKKyAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmpl
Y3RTdHJpbmcsIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIGFyZzFHUFIsIGFyZzJHUFIpOwor
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Z3MsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JP
YmplY3RXaXRoU3ltYm9sKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
YXJnMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJn
Mih0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOworCisgICAgR1BSUmVnIGFyZzFHUFIgPSBhcmcxLmdwcigpOworICAgIEdQUlJlZyBh
cmcyR1BSID0gYXJnMi5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0
LnJlZ3MoKTsKKworICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDEoKSwgYXJnMUdQUik7
CisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBhcmcyR1BSKTsKKworICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVj
dFN5bWJvbCwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgYXJnMUdQUiwgYXJnMkdQUik7Cisg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9y
T2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJl
ZyBzY3JhdGNoUmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcpCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCBw
cm90b3R5cGUgaXMgYW4gb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IDUwYjFkMDlkNjlkNTlkMjRiNTczODVlYjFiNGM2ZWVhZDZh
ODJlYmEuLmYwOTFiZTY5MTY2OGI5YjUxNjRkZDg3NTVjZGIwMTgxMjQ0OTlmM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTI4NzMsNiAr
Mjg3Myw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9h
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKKyAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbEZvck9iamVjdFdpdGhTdHJpbmcoTm9k
ZSopOworICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN5bWJvbChOb2RlKik7
CiAgICAgLy8gSWYgdGhpcyByZXR1cm5zIGZhbHNlIGl0IG1lYW5zIHRoYXQgd2UgdGVybWluYXRl
ZCBzcGVjdWxhdGl2ZSBleGVjdXRpb24uCiAgICAgYm9vbCBnZXRJbnRUeXBlZEFycmF5U3RvcmVP
cGVyYW5kKAogICAgICAgICBHUFJUZW1wb3JhcnkmIHZhbHVlLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMzhmYjVk
ZTJmM2VhMzNlODVkZmVhOTFjOGZkYjBjNmUwYjY3NzE1YS4uMzNlNjUzMDIxMDJjYjUyZGRiM2Rj
NzE1MDE4ZDM0MzllZmM5YWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yNTkzLDYgKzI1OTMsMTggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzogeworICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgeworICAgICAg
ICAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3RyaW5nKG5vZGUpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN5bWJvbFVzZSkgeworICAg
ICAgICAgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3ltYm9sKG5vZGUp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBw
cm9iYWJseSBiZSByaWdodC4KICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDI4NjIxZDYyNzIxZWQzOTJhMDE1Yjg3ZTBkZjNiNTNhYmQ4Mzk3ZDEuLmU2
NjRiYWYxYmE4YTFiMTYzNzk3ZjZjZDE4ZGE2M2UwZWRjNTY2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjcyOSw2ICsy
NzI5LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6IHsK
KyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdV
c2UpIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN0
cmluZyhub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTeW1i
b2xVc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0
aFN5bWJvbChub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggNjJiNmNmYTI4NGUzODg0NzZiMzUxNDdlOGQ1Y2ZkMTI1MGYxNTg2My4uMjAwMzhiNDJi
N2VjN2ZiOWM0MjJmMWYzNGE4NTc1ZWUzYTQ1ZGY0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzY3Myw2ICszNjczLDIxIEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFy
cmF5OjpHZW5lcmljOiB7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gT2JqZWN0VXNlKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCku
dXNlS2luZCgpID09IFN0cmluZ1VzZSkgeworICAgICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVl
KHZtQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSwgbG93U3RyaW5nKG1fbm9k
ZS0+Y2hpbGQyKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkg
PT0gU3ltYm9sVXNlKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAor
ICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25H
ZXRCeVZhbE9iamVjdFN5bWJvbCksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgbG93T2JqZWN0KG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIo
KSkpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAogICAgICAgICAgICAg
ICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwpLCBtX2NhbGxGcmFt
ZSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhkNDM2NTljYzYxNDc1ZDQzNTZjMmM0NTUwMzNiOWJl
OTBhOGQ5NTAuLjk2NzE5MTFjYmMxMzhjZTRkMmVmMDI2YTczMDU5ZTIxMjQ1MWI0NTUgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTctMDktMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0RGR11bRlRMXSBHZXRCeVZhbChDZWxsVXNlIHdpdGggQXJyYXk6Okdl
bmVyaWMsIFN0cmluZ1VzZS9TeW1ib2xVc2UpIHNob3VsZCBiZSBzdXBwb3J0ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjU5MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1hcmtz
L29iamVjdC1pdGVyYXRlLXN5bWJvbHMuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL29iamVjdC1pdGVyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9vYmplY3QtaXRlcmF0ZS1zeW1ib2xzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVz
cy9vYmplY3QtaXRlcmF0ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
ICh0ZXN0KToKKwogMjAxNy0wOS0wNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dpbjMyXSAxMCBKU0Mgc3RyZXNzIHRlc3RzIGFyZSBmYWlsaW5nLgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWl0ZXJhdGUtc3ltYm9s
cy5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1pdGVyYXRlLXN5bWJvbHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDRhZWQ3ZGViM2M3NWEzYmE1NDE2NzlmMjAzNzFjNzYyOGFhYWMyZQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1pdGVyYXRlLXN5
bWJvbHMuanMKQEAgLTAsMCArMSwyNyBAQAordmFyIGEgPSBTeW1ib2woImEiKTsKK3ZhciBiID0g
U3ltYm9sKCJiIik7Cit2YXIgYyA9IFN5bWJvbCgiYyIpOwordmFyIGQgPSBTeW1ib2woImQiKTsK
K3ZhciBlID0gU3ltYm9sKCJlIik7CisKK3ZhciBvYmogPSB7CisgICAgW2FdOiAxLAorICAgIFti
XTogMiwKKyAgICBbY106IDMsCisgICAgW2RdOiBudWxsLAorICAgIFtlXTogJ2UnCit9OworCitm
dW5jdGlvbiB0ZXN0KHNyYykgeworICAgIHZhciBhcnJheSA9IFtdOworICAgIHZhciBrZXlzID0g
T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzcmMpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwga2V5cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTsKKyAgICAg
ICAgYXJyYXkucHVzaChzcmNba2V5XSk7CisgICAgfQorICAgIHJldHVybiBhcnJheTsKK30KK25v
SW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3Qo
b2JqKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1pdGVyYXRl
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWl0ZXJhdGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGI3NjI0MWY3YmRhZmJjYjM0OTA1NTA1ZmQxZTQxNDk5NzhhNDFkYQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1pdGVyYXRlLmpzCkBAIC0wLDAg
KzEsMjEgQEAKK3ZhciBvYmogPSB7CisgICAgYTogMSwKKyAgICBiOiAyLAorICAgIGM6IDMsCisg
ICAgZDogbnVsbCwKKyAgICBlOiAnZScKK307CisKK2Z1bmN0aW9uIHRlc3Qoc3JjKSB7CisgICAg
dmFyIGFycmF5ID0gW107CisgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzcmMpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIga2V5ID0g
a2V5c1tpXTsKKyAgICAgICAgYXJyYXkucHVzaChzcmNba2V5XSk7CisgICAgfQorICAgIHJldHVy
biBhcnJheTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsg
KytpKQorICAgIHRlc3Qob2JqKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1p
dGVyYXRlLXN5bWJvbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtaXRlcmF0ZS1zeW1ib2xz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIzODRmZDQwMzE2ZWQ3MmRkMGQ3YTc3YzBjNzc3YjVmYmViYzY1MjIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vYmplY3QtaXRlcmF0ZS1zeW1ib2xz
LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgYSA9IFN5bWJvbCgiYSIpOwordmFy
IGIgPSBTeW1ib2woImIiKTsKK3ZhciBjID0gU3ltYm9sKCJjIik7Cit2YXIgZCA9IFN5bWJvbCgi
ZCIpOwordmFyIGUgPSBTeW1ib2woImUiKTsKKwordmFyIG9iaiA9IHsKKyAgICBbYV06IDEsCisg
ICAgW2JdOiAyLAorICAgIFtjXTogMywKKyAgICBbZF06IG51bGwsCisgICAgW2VdOiAnZScKK307
CisKK2Z1bmN0aW9uIHRlc3Qoc3JjKSB7CisgICAgdmFyIGFycmF5ID0gW107CisgICAgdmFyIGtl
eXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNyYyk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBrZXkgPSBrZXlzW2ldOwor
ICAgICAgICBhcnJheS5wdXNoKHNyY1trZXldKTsKKyAgICB9CisgICAgcmV0dXJuIGFycmF5Owor
fQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkodGVzdChvYmopKSwgYFsxLDIsMyxudWxsLCJlIl1gKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29iamVjdC1pdGVyYXRlLmpzIGIvSlNUZXN0cy9z
dHJlc3Mvb2JqZWN0LWl0ZXJhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdhMTc0NWZkZTg5NDNlY2M5MDNh
NzM0YTAzZjExZmMwMTI3YzhjNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29i
amVjdC1pdGVyYXRlLmpzCkBAIC0wLDAgKzEsMjYgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgb2JqID0gewor
ICAgIGE6IDEsCisgICAgYjogMiwKKyAgICBjOiAzLAorICAgIGQ6IG51bGwsCisgICAgZTogJ2Un
Cit9OworCitmdW5jdGlvbiB0ZXN0KHNyYykgeworICAgIHZhciBhcnJheSA9IFtdOworICAgIHZh
ciBrZXlzID0gT2JqZWN0LmtleXMoc3JjKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMu
bGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciBrZXkgPSBrZXlzW2ldOworICAgICAgYXJyYXkucHVz
aChzcmNba2V5XSk7CisgICAgfQorICAgIHJldHVybiBhcnJheTsKK30KK25vSW5saW5lKHRlc3Qp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KHRlc3Qob2JqKSksIGBbMSwyLDMsbnVsbCwiZSJdYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320263</attachid>
            <date>2017-09-08 07:41:07 -0700</date>
            <delta_ts>2017-09-08 07:53:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176590-20170908234106.patch</filename>
            <type>text/plain</type>
            <size>16452</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OWUxMGFiNTI5NmExMTlhYjJlNmU3MTE5MTRhNjFjZjU1ODMwNGVmLi45NDc4MmJkZGMzNjZhODdj
NmQyZTU0NWZjNTQ4YjBmYjBjOTAwYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNy0wOS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEdldEJ5VmFsKE9iamVjdFVzZSB3aXRoIEFycmF5
OjpHZW5lcmljLCBTdHJpbmdVc2UvU3ltYm9sVXNlKSBzaG91bGQgYmUgc3VwcG9ydGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY1OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhZGQgZml4dXAg
ZWRnZXMgZm9yIEdldEJ5VmFsKEFycmF5OjpHZW5lcmljKSB0byBjYWxsIGZhc3RlciBvcGVyYXRp
b24gaW5zdGVhZCBvZiBnZW5lcmljIG9wZXJhdGlvbkdldEJ5VmFsLgorCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgcGF0
Y2hlZAorCisgICAgICAgIG9iamVjdC1pdGVyYXRlICAgICAgICAgICAgICAgIDUuODUzMSstMC4z
MDI5ICAgICAgICAgICAgNS43OTAzKy0wLjI3OTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTA4eCBm
YXN0ZXIKKyAgICAgICAgb2JqZWN0LWl0ZXJhdGUtc3ltYm9scyAgICAgICAgNy40MDk5Ky0wLjM5
OTMgICAgIF4gICAgICA1LjgyNTQrLTAuMjI3NiAgICAgICAgXiBkZWZpbml0ZWx5IDEuMjcyMHgg
ZmFzdGVyCisKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Z2V0QnlWYWxPYmplY3QpOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsRm9yT2Jq
ZWN0V2l0aFN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbEZvck9iamVjdFdpdGhTeW1ib2wpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5VmFsKToKKwogMjAx
Ny0wOS0wNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIEpJ
VCBwcm9iZXMgZm9yIERGRyBPU1IgZXhpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCmluZGV4IGRlYzgxOWJjNmI2YzI3NjllZjU0NThhYjc0OTAxMWU0OWMw
NWI5ODAuLjhiOTRmZGY4YmVhNzFjNjNiNThiYzExNTZiMzcxNTYxOWFhNzMwYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtNzg4LDYgKzc4OCwx
OSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ1VzZT4obm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN5
bWJvbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+
KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7IC8vIFNw
ZWN1bGF0aW5nIGNlbGwgZHVlIHRvIHJlZ2lzdGVyIHByZXNzdXJlIG9uIDMyLWJpdC4KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNzA3
ODJmYjgyZmE4NzI3MWJiYzlmYTU4Y2NkZmFkZTA2YWY5ZjM1MS4uZDdmMGJkMTU0NTU0M2I2MzRi
ZWQ0MmRkMTUwZDdjNGQ5MDFlYmU2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCkBAIC0xODQsNiArMTg0LDE2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEVuY29kZWRKU1ZhbHVlIHBhcnNlSW50UmVzdWx0KGRvdWJsZSBpbnB1dCkKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGlucHV0KSk7CiB9CiAKK0FMV0FZU19JTkxJTkUgc3Rh
dGljIEpTVmFsdWUgZ2V0QnlWYWxPYmplY3QoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTT2Jq
ZWN0KiBiYXNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQoreworICAgIFN0cnVjdHVyZSYg
c3RydWN0dXJlID0gKmJhc2UtPnN0cnVjdHVyZSh2bSk7CisgICAgaWYgKEpTQ2VsbDo6Y2FuVXNl
RmFzdEdldE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVz
dWx0ID0gYmFzZS0+ZmFzdEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFt
ZSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gYmFzZS0+
Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7Cit9CisKIGV4dGVybiAiQyIgewogCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTU4NCw2ICs1OTQsMjggQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludChFeGVjU3RhdGUqIGV4ZWMs
IEpTU3RyaW4KICAgICByZXR1cm4gZ2V0QnlWYWxDZWxsSW50KGV4ZWMsIGJhc2UsIGluZGV4KTsK
IH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVj
dFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgSlNDZWxsKiBzdHJpbmcpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CisKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGFzU3RyaW5nKHN0cmluZyktPnRvSWRlbnRp
ZmllcihleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGdldEJ5VmFsT2JqZWN0KGV4ZWMsIHZtLCBhc09iamVjdChiYXNlKSwgcHJvcGVydHlOYW1lKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxPYmpl
Y3RTeW1ib2woRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEpTQ2VsbCogc3ltYm9sKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRCeVZhbE9i
amVjdChleGVjLCB2bSwgYXNPYmplY3QoYmFzZSksIGFzU3ltYm9sKHN5bWJvbCktPnByaXZhdGVO
YW1lKCkpKTsKK30KKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAppbmRleCBmYzlkZjE4ZjE1YjY5OWI3MDBkMDFiNjM3ZWI4NWNiZDVjYmFjNjRlLi40
MzE5NjQ2NDZiZmVhNjM4YTBjMTdkMjdhOGI3NWM1YTUxMWZjNTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtNzEsNiArNzEsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eVZhbENlbGwoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3Bl
cnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEJ5VmFsT2JqZWN0SW50KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCkgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0
cmluZ0ludChFeGVjU3RhdGUqLCBKU1N0cmluZyosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK0Vu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmco
RXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKiBzdHJpbmcpIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTeW1ib2woRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKiBzeW1ib2wpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVG9OdW1iZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlz
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDcwYzdmNmIzZDhlODI0ZTMzNmJjY2Y2MThmOWNkOGQ0
YmJlYjFiOTkuLmEwOTY1ZGNlMzhhM2I5ZTUwODZlM2U2MWVlMWU5MjE3ZmQzMmE3NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0z
MTQ0LDYgKzMxNDQsNDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
RmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGUKICAgICBub1Jlc3VsdChu
b2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0
V2l0aFN0cmluZyhOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFyZzEo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFyZzIodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworICAgIEpTVmFsdWVSZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKKworICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKKyAgICBHUFJSZWcgYXJnMkdQ
UiA9IGFyZzIuZ3ByKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdz
KCk7CisKKyAgICBzcGVjdWxhdGVPYmplY3Qobm9kZS0+Y2hpbGQxKCksIGFyZzFHUFIpOworICAg
IHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDIoKSwgYXJnMkdQUik7CisKKyAgICBmbHVzaFJl
Z2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJp
bmcsIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIGFyZzFHUFIsIGFyZzJHUFIpOworICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RX
aXRoU3ltYm9sKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJnMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJnMih0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworCisgICAgR1BSUmVnIGFyZzFHUFIgPSBhcmcxLmdwcigpOworICAgIEdQUlJlZyBhcmcyR1BS
ID0gYXJnMi5ncHIoKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKKworICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDEoKSwgYXJnMUdQUik7CisgICAg
c3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBhcmcyR1BSKTsKKworICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJv
bCwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0
KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3Jh
dGNoUmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcpCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5
cGUgaXMgYW4gb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCmluZGV4IDUwYjFkMDlkNjlkNTlkMjRiNTczODVlYjFiNGM2ZWVhZDZhODJlYmEu
LmYwOTFiZTY5MTY2OGI5YjUxNjRkZDg3NTVjZGIwMTgxMjQ0OTlmM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTI4NzMsNiArMjg3Myw4
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUq
LCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBl
KTsKKyAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbEZvck9iamVjdFdpdGhTdHJpbmcoTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN5bWJvbChOb2RlKik7CiAgICAg
Ly8gSWYgdGhpcyByZXR1cm5zIGZhbHNlIGl0IG1lYW5zIHRoYXQgd2UgdGVybWluYXRlZCBzcGVj
dWxhdGl2ZSBleGVjdXRpb24uCiAgICAgYm9vbCBnZXRJbnRUeXBlZEFycmF5U3RvcmVPcGVyYW5k
KAogICAgICAgICBHUFJUZW1wb3JhcnkmIHZhbHVlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMzhmYjVkZTJmM2Vh
MzNlODVkZmVhOTFjOGZkYjBjNmUwYjY3NzE1YS4uMzNlNjUzMDIxMDJjYjUyZGRiM2RjNzE1MDE4
ZDM0MzllZmM5YWI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yNTkzLDYgKzI1OTMsMTggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzogeworICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpIHsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgeworICAgICAgICAgICAg
ICAgICAgICBjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3RyaW5nKG5vZGUpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IFN5bWJvbFVzZSkgeworICAgICAgICAg
ICAgICAgICAgICBjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3ltYm9sKG5vZGUpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9iYWJs
eSBiZSByaWdodC4KICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDI4NjIxZDYyNzIxZWQzOTJhMDE1Yjg3ZTBkZjNiNTNhYmQ4Mzk3ZDEuLmU2NjRiYWYx
YmE4YTFiMTYzNzk3ZjZjZDE4ZGE2M2UwZWRjNTY2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjcyOSw2ICsyNzI5LDE3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6IHsKKyAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsK
KyAgICAgICAgICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN0cmluZyhu
b2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBTeW1ib2xVc2Up
IHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsRm9yT2JqZWN0V2l0aFN5bWJv
bChub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
NjJiNmNmYTI4NGUzODg0NzZiMzUxNDdlOGQ1Y2ZkMTI1MGYxNTg2My4uMjAwMzhiNDJiN2VjN2Zi
OWM0MjJmMWYzNGE4NTc1ZWUzYTQ1ZGY0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzY3Myw2ICszNjczLDIxIEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFycmF5OjpH
ZW5lcmljOiB7CisgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
T2JqZWN0VXNlKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2lu
ZCgpID09IFN0cmluZ1VzZSkgeworICAgICAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2Fs
bCgKKyAgICAgICAgICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSwgbG93U3RyaW5nKG1fbm9kZS0+Y2hp
bGQyKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gU3lt
Ym9sVXNlKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAorICAgICAg
ICAgICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZh
bE9iamVjdFN5bWJvbCksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgbG93
T2JqZWN0KG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSkpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAogICAgICAgICAgICAgICAgIElu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwpLCBtX2NhbGxGcmFtZSwKICAg
ICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQyKCkpKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDhkNDM2NTljYzYxNDc1ZDQzNTZjMmM0NTUwMzNiOWJlOTBhOGQ5
NTAuLjQ5MmYwYjA1YjM0NWJhNmNlOGNmNjIzMGNhYWNlMmVhYmQ4MDJiMzIgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTctMDktMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0RGR11bRlRMXSBHZXRCeVZhbChPYmplY3RVc2Ugd2l0aCBBcnJheTo6R2VuZXJp
YywgU3RyaW5nVXNlL1N5bWJvbFVzZSkgc2hvdWxkIGJlIHN1cHBvcnRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NTkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mvb2Jq
ZWN0LWl0ZXJhdGUtc3ltYm9scy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KiBtaWNyb2JlbmNobWFya3Mvb2JqZWN0LWl0ZXJhdGUuanM6IEFkZGVkLgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL29iamVjdC1pdGVyYXRlLXN5bWJvbHMuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL29i
amVjdC1pdGVyYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRl
c3QpOgorCiAyMDE3LTA5LTA3ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2luMzJdIDEwIEpTQyBzdHJlc3MgdGVzdHMgYXJlIGZhaWxpbmcuCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtaXRlcmF0ZS1zeW1ib2xzLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWl0ZXJhdGUtc3ltYm9scy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNGFlZDdkZWIzYzc1YTNiYTU0MTY3OWYyMDM3MWM3NjI4YWFhYzJlCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWl0ZXJhdGUtc3ltYm9s
cy5qcwpAQCAtMCwwICsxLDI3IEBACit2YXIgYSA9IFN5bWJvbCgiYSIpOwordmFyIGIgPSBTeW1i
b2woImIiKTsKK3ZhciBjID0gU3ltYm9sKCJjIik7Cit2YXIgZCA9IFN5bWJvbCgiZCIpOwordmFy
IGUgPSBTeW1ib2woImUiKTsKKwordmFyIG9iaiA9IHsKKyAgICBbYV06IDEsCisgICAgW2JdOiAy
LAorICAgIFtjXTogMywKKyAgICBbZF06IG51bGwsCisgICAgW2VdOiAnZScKK307CisKK2Z1bmN0
aW9uIHRlc3Qoc3JjKSB7CisgICAgdmFyIGFycmF5ID0gW107CisgICAgdmFyIGtleXMgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNyYyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBr
ZXlzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBrZXkgPSBrZXlzW2ldOworICAgICAgICBh
cnJheS5wdXNoKHNyY1trZXldKTsKKyAgICB9CisgICAgcmV0dXJuIGFycmF5OworfQorbm9Jbmxp
bmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgdGVzdChvYmop
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWl0ZXJhdGUuanMg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3QtaXRlcmF0ZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
Yjc2MjQxZjdiZGFmYmNiMzQ5MDU1MDVmZDFlNDE0OTk3OGE0MWRhCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWl0ZXJhdGUuanMKQEAgLTAsMCArMSwy
MSBAQAordmFyIG9iaiA9IHsKKyAgICBhOiAxLAorICAgIGI6IDIsCisgICAgYzogMywKKyAgICBk
OiBudWxsLAorICAgIGU6ICdlJworfTsKKworZnVuY3Rpb24gdGVzdChzcmMpIHsKKyAgICB2YXIg
YXJyYXkgPSBbXTsKKyAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNyYyk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBrZXkgPSBrZXlz
W2ldOworICAgICAgICBhcnJheS5wdXNoKHNyY1trZXldKTsKKyAgICB9CisgICAgcmV0dXJuIGFy
cmF5OworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kp
CisgICAgdGVzdChvYmopOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWl0ZXJh
dGUtc3ltYm9scy5qcyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1pdGVyYXRlLXN5bWJvbHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjM4NGZkNDAzMTZlZDcyZGQwZDdhNzdjMGM3NzdiNWZiZWJjNjUyMgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29iamVjdC1pdGVyYXRlLXN5bWJvbHMuanMK
QEAgLTAsMCArMSwzMiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBhID0gU3ltYm9sKCJhIik7Cit2YXIgYiA9
IFN5bWJvbCgiYiIpOwordmFyIGMgPSBTeW1ib2woImMiKTsKK3ZhciBkID0gU3ltYm9sKCJkIik7
Cit2YXIgZSA9IFN5bWJvbCgiZSIpOworCit2YXIgb2JqID0geworICAgIFthXTogMSwKKyAgICBb
Yl06IDIsCisgICAgW2NdOiAzLAorICAgIFtkXTogbnVsbCwKKyAgICBbZV06ICdlJworfTsKKwor
ZnVuY3Rpb24gdGVzdChzcmMpIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICB2YXIga2V5cyA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc3JjKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGtleXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGtleSA9IGtleXNbaV07CisgICAg
ICAgIGFycmF5LnB1c2goc3JjW2tleV0pOworICAgIH0KKyAgICByZXR1cm4gYXJyYXk7Cit9Citu
b0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeSh0ZXN0KG9iaikpLCBgWzEsMiwzLG51bGwsImUiXWApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LWl0ZXJhdGUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9vYmplY3QtaXRlcmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2ExNzQ1ZmRlODk0M2VjYzkwM2E3MzRh
MDNmMTFmYzAxMjdjOGM3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb2JqZWN0
LWl0ZXJhdGUuanMKQEAgLTAsMCArMSwyNiBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBvYmogPSB7CisgICAg
YTogMSwKKyAgICBiOiAyLAorICAgIGM6IDMsCisgICAgZDogbnVsbCwKKyAgICBlOiAnZScKK307
CisKK2Z1bmN0aW9uIHRlc3Qoc3JjKSB7CisgICAgdmFyIGFycmF5ID0gW107CisgICAgdmFyIGtl
eXMgPSBPYmplY3Qua2V5cyhzcmMpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5n
dGg7ICsraSkgeworICAgICAgdmFyIGtleSA9IGtleXNbaV07CisgICAgICBhcnJheS5wdXNoKHNy
Y1trZXldKTsKKyAgICB9CisgICAgcmV0dXJuIGFycmF5OworfQorbm9JbmxpbmUodGVzdCk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdp
ZnkodGVzdChvYmopKSwgYFsxLDIsMyxudWxsLCJlIl1gKTsK
</data>
<flag name="review"
          id="340397"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>