<?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>187569</bug_id>
          
          <creation_ts>2018-07-11 17:10:12 -0700</creation_ts>
          <short_desc>Need to handle CodeBlock::replacement() being null.</short_desc>
          <delta_ts>2018-07-12 10:41:25 -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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1441294</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-11 17:10:12 -0700</bug_when>
    <thetext>CodeBlock::replacement() may return a nullptr.  Some of our code already checks for this while others do not.  We should add null checks in all the places that need it.

&lt;rdar://problem/41468692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441298</commentid>
    <comment_count>1</comment_count>
      <attachid>344792</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-11 17:18:18 -0700</bug_when>
    <thetext>Created attachment 344792
proposed patch.

Let&apos;s try this on the EWS.  I feel that I still need to think it through a bit more before it&apos;s ready for review.  But feel free to comment if you see something not right.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441507</commentid>
    <comment_count>2</comment_count>
      <attachid>344845</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-12 08:16:40 -0700</bug_when>
    <thetext>Created attachment 344845
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441525</commentid>
    <comment_count>3</comment_count>
      <attachid>344845</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-12 09:32:34 -0700</bug_when>
    <thetext>Comment on attachment 344845
proposed patch.

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

Weren’t you saying there was another place that needed a null check yesterday? What was the function you were seeing crash?

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2427
&gt; +    bool hasReplacement = (replacement &amp;&amp; replacement != this);

No need for null check

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2428
&gt; +    if ((result == CompilationSuccessful) != hasReplacement) {

I don’t think your change here is doing anything since this can’t be null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441551</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-12 10:12:40 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; Comment on attachment 344845 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=344845&amp;action=review
&gt; 
&gt; Weren’t you saying there was another place that needed a null check
&gt; yesterday? What was the function you were seeing crash?

The other place is operationOptimize().  That case is covered by the check added in CodeBlock::hasOptimizedReplacement().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441568</commentid>
    <comment_count>5</comment_count>
      <attachid>344845</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-12 10:29:35 -0700</bug_when>
    <thetext>Comment on attachment 344845
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2427
&gt;&gt; +    bool hasReplacement = (replacement &amp;&amp; replacement != this);
&gt; 
&gt; No need for null check

Why?  Technically, we don&apos;t need the whole &quot;if ((result == CompilationSuccessful) != (theReplacement != this))&quot; check either because CodeBlock::setOptimizationThresholdBasedOnCompilationResult() is only called with result == CompilationSuccessful from JITToDFGDeferredCompilationCallback::compilationDidComplete() right after it installed the replacement.  The only reason that this check is here is to catch a bug that violates the invariant that we must have a replacement if result == CompilationSuccessful, and to print a meaningful error message when that bug is detected.  So, why not check for a null check as well that is also a violation of that invariant?

Note: (replacement != this) only detects that we have a replacement if and only if replacement is not null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441571</commentid>
    <comment_count>6</comment_count>
      <attachid>344845</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-07-12 10:34:30 -0700</bug_when>
    <thetext>Comment on attachment 344845
proposed patch.

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2427
&gt;&gt;&gt; +    bool hasReplacement = (replacement &amp;&amp; replacement != this);
&gt;&gt; 
&gt;&gt; No need for null check
&gt; 
&gt; Why?  Technically, we don&apos;t need the whole &quot;if ((result == CompilationSuccessful) != (theReplacement != this))&quot; check either because CodeBlock::setOptimizationThresholdBasedOnCompilationResult() is only called with result == CompilationSuccessful from JITToDFGDeferredCompilationCallback::compilationDidComplete() right after it installed the replacement.  The only reason that this check is here is to catch a bug that violates the invariant that we must have a replacement if result == CompilationSuccessful, and to print a meaningful error message when that bug is detected.  So, why not check for a null check as well that is also a violation of that invariant?
&gt; 
&gt; Note: (replacement != this) only detects that we have a replacement if and only if replacement is not null.

I misread this. Ignore me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1441573</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-07-12 10:41:25 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r233772: &lt;http://trac.webkit.org/r233772&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344792</attachid>
            <date>2018-07-11 17:18:18 -0700</date>
            <delta_ts>2018-07-12 08:16:40 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-187569.patch</filename>
            <type>text/plain</type>
            <size>11115</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMzNzQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE4LTA3LTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBO
ZWVkIHRvIGhhbmRsZSBDb2RlQmxvY2s6OnJlcGxhY2VtZW50KCkgYmVpbmcgbnVsbC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzU2OQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDE0Njg2OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpIG1heSByZXR1cm4g
YSBudWxscHRyLiAgU29tZSBvZiBvdXIgY29kZSBhbHJlYWR5IGNoZWNrcworICAgICAgICBmb3Ig
dGhpcyB3aGlsZSBvdGhlcnMgZG8gbm90LiAgV2Ugc2hvdWxkIGFkZCBudWxsIGNoZWNrcyBpbiBh
bGwgdGhlIHBsYWNlcyB0aGF0CisgICAgICAgIG5lZWQgaXQuCisKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJl
cGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZERkdDb21waWxlcyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1Rv
RlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpU
b0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRCZWNvbWVSZWFk
eUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKEpTQzo6REZHOjpUb0ZUTERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorCiAyMDE4LTA3LTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEl0ZXJhdG9yIG9mIEFycmF5LmtleXMoKSByZXR1cm5z
IG9iamVjdCBpbiB3cm9uZyBvcmRlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMzc0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjU2LDcg
KzE2NTYsOCBAQCBDb2RlQmxvY2sqIENvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKCkKICNpZiBF
TkFCTEUoSklUKQogYm9vbCBDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxhY2VtZW50KEpJVENv
ZGU6OkpJVFR5cGUgdHlwZVRvUmVwbGFjZSkKIHsKLSAgICByZXR1cm4gSklUQ29kZTo6aXNIaWdo
ZXJUaWVyKHJlcGxhY2VtZW50KCktPmppdFR5cGUoKSwgdHlwZVRvUmVwbGFjZSk7CisgICAgQ29k
ZUJsb2NrKiByZXBsYWNlbWVudCA9IHRoaXMtPnJlcGxhY2VtZW50KCk7CisgICAgcmV0dXJuIHJl
cGxhY2VtZW50ICYmIEpJVENvZGU6OmlzSGlnaGVyVGllcihyZXBsYWNlbWVudC0+aml0VHlwZSgp
LCB0eXBlVG9SZXBsYWNlKTsKIH0KIAogYm9vbCBDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxh
Y2VtZW50KCkKQEAgLTE5NzAsOCArMTk3MSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpqZXR0aXNvbihQ
cm9maWxlcjo6SmV0dGkKICAgICAgICAgaWYgKERGRzo6c2hvdWxkRHVtcERpc2Fzc2VtYmx5KCkp
CiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRGlkIGNvdW50IHJlb3B0aW1pemF0aW9uIGZvciAi
LCAqdGhpcywgIlxuIik7CiAgICAgfQotICAgIAotICAgIGlmICh0aGlzICE9IHJlcGxhY2VtZW50
KCkpIHsKKworICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnQgPSB0aGlzLT5yZXBsYWNlbWVudCgp
OworICAgIGlmIChyZXBsYWNlbWVudCAmJiB0aGlzICE9IHJlcGxhY2VtZW50KSB7CiAgICAgICAg
IC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSB3ZXJlIG5ldmVyIHRoZSBlbnRyeXBvaW50LiBUaGlzIGNh
biBoYXBwZW4gZm9yIE9TUiBlbnRyeSBjb2RlCiAgICAgICAgIC8vIGJsb2Nrcy4KICAgICAgICAg
cmV0dXJuOwpAQCAtMjE4Myw3ICsyMTg1LDggQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpudW1iZXJP
ZkRGR0NvbXBpbGVzKAogICAgICAgICAgICAgcmV0dXJuIDEwMDAwMDA7CiAgICAgICAgIHJldHVy
biAobV9oYXNCZWVuQ29tcGlsZWRXaXRoRlRMID8gMSA6IDApICsgbV9yZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcjsKICAgICB9Ci0gICAgcmV0dXJuIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQo
cmVwbGFjZW1lbnQoKS0+aml0VHlwZSgpKSA/IDEgOiAwKSArIG1fcmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXI7CisgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCA9IHRoaXMtPnJlcGxhY2VtZW50
KCk7CisgICAgcmV0dXJuICgocmVwbGFjZW1lbnQgJiYgSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KHJlcGxhY2VtZW50LT5qaXRUeXBlKCkpKSA/IDEgOiAwKSArIG1fcmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXI7CiB9CiAKIGludDMyX3QgQ29kZUJsb2NrOjpjb2RlVHlwZVRocmVzaG9sZE11bHRp
cGxpZXIoKSBjb25zdApAQCAtMjQxOCwxOSArMjQyMSwyMCBAQCB2b2lkIENvZGVCbG9jazo6c2V0
T3B0aW1pemF0aW9uVGhyZXNob2xkCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogICAgIAotICAgIENvZGVCbG9jayogdGhlUmVwbGFjZW1lbnQgPSByZXBsYWNl
bWVudCgpOwotICAgIGlmICgocmVzdWx0ID09IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCkgIT0gKHRo
ZVJlcGxhY2VtZW50ICE9IHRoaXMpKSB7CisgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCA9IHRo
aXMtPnJlcGxhY2VtZW50KCk7CisgICAgYm9vbCBoYXNSZXBsYWNlbWVudCA9IChyZXBsYWNlbWVu
dCAmJiByZXBsYWNlbWVudCAhPSB0aGlzKTsKKyAgICBpZiAoKHJlc3VsdCA9PSBDb21waWxhdGlv
blN1Y2Nlc3NmdWwpICE9IGhhc1JlcGxhY2VtZW50KSB7CiAgICAgICAgIGRhdGFMb2coKnRoaXMs
ICI6IHdlIGhhdmUgcmVzdWx0ID0gIiwgcmVzdWx0LCAiIGJ1dCAiKTsKLSAgICAgICAgaWYgKHRo
ZVJlcGxhY2VtZW50ID09IHRoaXMpCisgICAgICAgIGlmIChyZXBsYWNlbWVudCA9PSB0aGlzKQog
ICAgICAgICAgICAgZGF0YUxvZygid2UgYXJlIG91ciBvd24gcmVwbGFjZW1lbnQuXG4iKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZGF0YUxvZygib3VyIHJlcGxhY2VtZW50IGlzICIsIHBv
aW50ZXJEdW1wKHRoZVJlcGxhY2VtZW50KSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJv
dXIgcmVwbGFjZW1lbnQgaXMgIiwgcG9pbnRlckR1bXAocmVwbGFjZW1lbnQpLCAiXG4iKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCiAgICAgc3dp
dGNoIChyZXN1bHQpIHsKICAgICBjYXNlIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bDoKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKHJlcGxhY2VtZW50KCktPmpp
dFR5cGUoKSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXBsYWNlbWVudCAmJiBKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQocmVwbGFjZW1lbnQtPmppdFR5cGUoKSkpOwogICAgICAgICBvcHRp
bWl6ZU5leHRJbnZvY2F0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIENvbXBpbGF0
aW9uRmFpbGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAyMzM3NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYzLDcgKzI4NjMsOCBAQCBleHRl
cm4gIkMiIHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyUmVvCiAgICAgLy8KICAgICAvLyBOb3Rl
IHRoYXQgZXZlbiBpZiBvcHRpbWl6ZWRDb2RlQmxvY2sgaXMgYW4gRlRMRm9yT1NSRW50cnkgc3R5
bGUgQ29kZUJsb2NrLCB0aGlzIGNvbmRpdGlvbiBpcyBhCiAgICAgLy8gc3VyZSBiZXQgdGhhdCB3
ZSBkb24ndCBoYXZlIGFueXRoaW5nIGVsc2UgbGVmdCB0byBkby4KLSAgICBpZiAoY29kZUJsb2Nr
LT5yZXBsYWNlbWVudCgpID09IGNvZGVCbG9jaykgeworICAgIENvZGVCbG9jayogcmVwbGFjZW1l
bnQgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7CisgICAgaWYgKCFyZXBsYWNlbWVudCB8fCBy
ZXBsYWNlbWVudCA9PSBjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkKICAgICAgICAgICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIjogTm90IHJlb3B0aW1pemlu
ZyBiZWNhdXNlIHdlJ3ZlIGFscmVhZHkgYmVlbiBqZXR0aXNvbmVkLlxuIik7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVG9GVExEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAy
MzM3NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCB2b2lk
IFRvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjCiB7CiAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkgewogICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIk9wdGltaXpp
bmcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiAoZm9yICIsICpwcm9maWxlZERGR0Nv
ZGVCbG9jaywKKyAgICAgICAgICAgICJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsIGNvZGVC
bG9jaywgIiAoZm9yICIsIHByb2ZpbGVkREZHQ29kZUJsb2NrLAogICAgICAgICAgICAgIikgZGlk
IGJlY29tZSByZWFkeS5cbiIpOwogICAgIH0KICAgICAKQEAgLTYzLDE1ICs2MywxNSBAQCB2b2lk
IFRvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjCiB7CiAgICAgaWYgKE9wdGlvbnM6
OnZlcmJvc2VPU1IoKSkgewogICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIk9wdGltaXpp
bmcgY29tcGlsYXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiAoZm9yICIsICpwcm9maWxlZERGR0Nv
ZGVCbG9jaywKKyAgICAgICAgICAgICJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsIGNvZGVC
bG9jaywgIiAoZm9yICIsIHByb2ZpbGVkREZHQ29kZUJsb2NrLAogICAgICAgICAgICAgIikgcmVz
dWx0OiAiLCByZXN1bHQsICJcbiIpOwogICAgIH0KICAgICAKICAgICBpZiAocHJvZmlsZWRERkdD
b2RlQmxvY2stPnJlcGxhY2VtZW50KCkgIT0gcHJvZmlsZWRERkdDb2RlQmxvY2spIHsKICAgICAg
ICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAgICAgZGF0YUxvZygKLSAg
ICAgICAgICAgICAgICAiRHJvcHBpbmcgRlRMIGNvZGUgYmxvY2sgIiwgKmNvZGVCbG9jaywgIiBv
biB0aGUgZmxvb3IgYmVjYXVzZSB0aGUgIgotICAgICAgICAgICAgICAgICJERkcgY29kZSBibG9j
ayAiLCAqcHJvZmlsZWRERkdDb2RlQmxvY2ssICIgd2FzIGpldHRpc29uZWQuXG4iKTsKKyAgICAg
ICAgICAgICAgICAiRHJvcHBpbmcgRlRMIGNvZGUgYmxvY2sgIiwgY29kZUJsb2NrLCAiIG9uIHRo
ZSBmbG9vciBiZWNhdXNlIHRoZSAiCisgICAgICAgICAgICAgICAgIkRGRyBjb2RlIGJsb2NrICIs
IHByb2ZpbGVkREZHQ29kZUJsb2NrLCAiIHdhcyBqZXR0aXNvbmVkLlxuIik7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjMzNzQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzNyw4ICsx
NTM3LDkgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CisgICAgICAgIENvZGVC
bG9jayogcmVwbGFjZW1lbnQgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7CiAgICAgICAgIGlm
IChVTkxJS0VMWShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKQotICAgICAgICAgICAgZGF0YUxvZygi
Q29uc2lkZXJpbmcgT1NSICIsICpjb2RlQmxvY2ssICIgLT4gIiwgKmNvZGVCbG9jay0+cmVwbGFj
ZW1lbnQoKSwgIi5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgT1NSICIs
IGNvZGVCbG9jaywgIiAtPiAiLCByZXBsYWNlbWVudCwgIi5cbiIpOwogICAgICAgICAvLyBJZiB3
ZSBoYXZlIGFuIG9wdGltaXplZCByZXBsYWNlbWVudCwgdGhlbiBpdCBtdXN0IGJlIHRoZSBjYXNl
IHRoYXQgd2UgZW50ZXJlZAogICAgICAgICAvLyBjdGlfb3B0aW1pemUgZnJvbSBhIGxvb3AuIFRo
YXQncyBiZWNhdXNlIGlmIHRoZXJlJ3MgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LAogICAgICAg
ICAvLyB0aGVuIGFsbCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVsaW5rZWQgdG8g
dGhlIHJlcGxhY2VtZW50IGFuZCBzbwpAQCAtMTU1MiwxNCArMTU1MywxNCBAQCBTbG93UGF0aFJl
dHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIC8vIGF0dGVtcHQgT1NSIGVu
dHJ5LiBIZW5jZSBpdCBtaWdodCBldmVuIGJlIGNvcnJlY3QgZm9yCiAgICAgICAgIC8vIHNob3Vs
ZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpIHRvIGFsd2F5cyByZXR1cm4gdHJ1ZS4gQnV0IHdlIG1h
a2UgaXQgZG8gc29tZQogICAgICAgICAvLyBhZGRpdGlvbmFsIGNoZWNraW5nIGFueXdheSwgdG8g
cmVkdWNlIHRoZSBhbW91bnQgb2YgcmVjb21waWxhdGlvbiB0aHJhc2hpbmcuCi0gICAgICAgIGlm
IChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNob3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygp
KSB7CisgICAgICAgIGlmIChyZXBsYWNlbWVudC0+c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93
KCkpIHsKICAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlP
cHRpbWl6ZVRvREZHIiwgKCJzaG91bGQgcmVvcHRpbWl6ZSBmcm9tIGxvb3Agbm93IikpOwogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsKICAgICAgICAg
ICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgICAgICAgICAiVHJpZ2dlcmluZyByZW9wdGlt
aXphdGlvbiBvZiAiLCAqY29kZUJsb2NrLAotICAgICAgICAgICAgICAgICAgICAiKCIsICpjb2Rl
QmxvY2stPnJlcGxhY2VtZW50KCksICIpIChpbiBsb29wKS5cbiIpOworICAgICAgICAgICAgICAg
ICAgICAiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAiLCBjb2RlQmxvY2ssCisgICAgICAg
ICAgICAgICAgICAgICIoIiwgcmVwbGFjZW1lbnQsICIpIChpbiBsb29wKS5cbiIpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5qZXR0aXNvbihQ
cm9maWxlcjo6SmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlciwg
Q291bnRSZW9wdGltaXphdGlvbik7CisgICAgICAgICAgICByZXBsYWNlbWVudC0+amV0dGlzb24o
UHJvZmlsZXI6OkpldHRpc29uRHVlVG9CYXNlbGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXIs
IENvdW50UmVvcHRpbWl6YXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgw
LCAwKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0xNjAyLDEzICsxNjAzLDEzIEBAIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICB9CiAgICAgCiAgICAg
Q29kZUJsb2NrKiBvcHRpbWl6ZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7
Ci0gICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChvcHRpbWl6ZWRDb2RlQmxvY2st
PmppdFR5cGUoKSkpOworICAgIEFTU0VSVChvcHRpbWl6ZWRDb2RlQmxvY2sgJiYgSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKG9wdGltaXplZENvZGVCbG9jay0+aml0VHlwZSgpKSk7CiAgICAgCiAg
ICAgaWYgKHZvaWQqIGRhdGFCdWZmZXIgPSBERkc6OnByZXBhcmVPU1JFbnRyeShleGVjLCBvcHRp
bWl6ZWRDb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7CiAgICAgICAgIENPREVCTE9DS19MT0df
RVZFTlQob3B0aW1pemVkQ29kZUJsb2NrLCAib3NyRW50cnkiLCAoImF0IGJjIyIsIGJ5dGVjb2Rl
SW5kZXgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsK
ICAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgIlBlcmZvcm1pbmcgT1NSICIs
ICpjb2RlQmxvY2ssICIgLT4gIiwgKm9wdGltaXplZENvZGVCbG9jaywgIi5cbiIpOworICAgICAg
ICAgICAgICAgICJQZXJmb3JtaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4gIiwgb3B0aW1pemVk
Q29kZUJsb2NrLCAiLlxuIik7CiAgICAgICAgIH0KIAogICAgICAgICBjb2RlQmxvY2stPm9wdGlt
aXplU29vbigpOwpAQCAtMTYyMCw3ICsxNjIxLDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aQogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1Io
KSkpIHsKICAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICJPcHRpbWl6aW5nICIsICpjb2Rl
QmxvY2ssICIgLT4gIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwKKyAgICAgICAgICAgICJP
cHRpbWl6aW5nICIsIGNvZGVCbG9jaywgIiAtPiAiLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCks
CiAgICAgICAgICAgICAiIHN1Y2NlZWRlZCwgT1NSIGZhaWxlZCwgYWZ0ZXIgYSBkZWxheSBvZiAi
LAogICAgICAgICAgICAgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSwgIi5c
biIpOwogICAgIH0KQEAgLTE2NDEsOCArMTY0Miw4IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ss
ICJkZWxheU9wdGltaXplVG9ERkciLCAoInNob3VsZCByZW9wdGltaXplIG5vdyIpKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsKICAgICAgICAgICAgIGRh
dGFMb2coCi0gICAgICAgICAgICAgICAgIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwg
KmNvZGVCbG9jaywgIiAtPiAiLAotICAgICAgICAgICAgICAgICpjb2RlQmxvY2stPnJlcGxhY2Vt
ZW50KCksICIgKGFmdGVyIE9TUiBmYWlsKS5cbiIpOworICAgICAgICAgICAgICAgICJUcmlnZ2Vy
aW5nIHJlb3B0aW1pemF0aW9uIG9mICIsIGNvZGVCbG9jaywgIiAtPiAiLAorICAgICAgICAgICAg
ICAgIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwgIiAoYWZ0ZXIgT1NSIGZhaWwpLlxuIik7CiAg
ICAgICAgIH0KICAgICAgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6
SmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlck9uT1NSRW50cnlG
YWlsLCBDb3VudFJlb3B0aW1pemF0aW9uKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgw
LCAwKTsKQEAgLTE2NjIsNiArMTY2Myw5IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJ5T1NSRW50ZXIKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CiAKICAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2Nr
KCktPnJlcGxhY2VtZW50KCk7CisgICAgaWYgKFVOTElLRUxZKCFvcHRpbWl6ZWRSZXBsYWNlbWVu
dCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgc3dpdGNoIChvcHRpbWl6ZWRSZXBs
YWNlbWVudC0+aml0VHlwZSgpKSB7CiAgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CiAgICAgY2Fz
ZSBKSVRDb2RlOjpGVExKSVQ6IHsKQEAgLTE2ODEsNiArMTY4NSw4IEBAIGNoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXIKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9
IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIW9wdGltaXplZFJl
cGxhY2VtZW50KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKG9wdGlt
aXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkpIHsKICAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>344845</attachid>
            <date>2018-07-12 08:16:40 -0700</date>
            <delta_ts>2018-07-12 10:34:30 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-187569.patch</filename>
            <type>text/plain</type>
            <size>10650</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMzNzY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE4LTA3LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBO
ZWVkIHRvIGhhbmRsZSBDb2RlQmxvY2s6OnJlcGxhY2VtZW50KCkgYmVpbmcgbnVsbC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzU2OQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDE0Njg2OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ29kZUJsb2NrOjpyZXBsYWNlbWVudCgpIG1heSByZXR1cm4g
YSBudWxscHRyLiAgU29tZSBvZiBvdXIgY29kZSBhbHJlYWR5IGNoZWNrcworICAgICAgICBmb3Ig
dGhpcyB3aGlsZSBvdGhlcnMgZG8gbm90LiAgV2Ugc2hvdWxkIGFkZCBudWxsIGNoZWNrcyBpbiBh
bGwgdGhlIHBsYWNlcyB0aGF0CisgICAgICAgIG5lZWQgaXQuCisKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJl
cGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZERkdDb21waWxlcyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6c2V0T3B0aW1pemF0aW9uVGhyZXNob2xkQmFzZWRPbkNvbXBpbGF0aW9uUmVzdWx0
KToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR1Rv
RlRMRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpU
b0ZUTERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRCZWNvbWVSZWFk
eUFzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKEpTQzo6REZHOjpUb0ZUTERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjazo6Y29tcGlsYXRpb25EaWRDb21wbGV0ZSk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorCiAyMDE4LTA3LTEyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIFRocmVhZCBWTSYgdG8gSlNDZWxsOjptZXRo
b2RUYWJsZShWTSYpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMjMzNzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NTYsNyArMTY1Niw4IEBA
IENvZGVCbG9jayogQ29kZUJsb2NrOjpiYXNlbGluZVZlcnNpb24oKQogI2lmIEVOQUJMRShKSVQp
CiBib29sIENvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoSklUQ29kZTo6SklUVHlw
ZSB0eXBlVG9SZXBsYWNlKQogewotICAgIHJldHVybiBKSVRDb2RlOjppc0hpZ2hlclRpZXIocmVw
bGFjZW1lbnQoKS0+aml0VHlwZSgpLCB0eXBlVG9SZXBsYWNlKTsKKyAgICBDb2RlQmxvY2sqIHJl
cGxhY2VtZW50ID0gdGhpcy0+cmVwbGFjZW1lbnQoKTsKKyAgICByZXR1cm4gcmVwbGFjZW1lbnQg
JiYgSklUQ29kZTo6aXNIaWdoZXJUaWVyKHJlcGxhY2VtZW50LT5qaXRUeXBlKCksIHR5cGVUb1Jl
cGxhY2UpOwogfQogCiBib29sIENvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKQpA
QCAtMjE4Niw3ICsyMTg3LDggQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpudW1iZXJPZkRGR0NvbXBp
bGVzKAogICAgICAgICAgICAgcmV0dXJuIDEwMDAwMDA7CiAgICAgICAgIHJldHVybiAobV9oYXNC
ZWVuQ29tcGlsZWRXaXRoRlRMID8gMSA6IDApICsgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRl
cjsKICAgICB9Ci0gICAgcmV0dXJuIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQocmVwbGFjZW1l
bnQoKS0+aml0VHlwZSgpKSA/IDEgOiAwKSArIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7
CisgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCA9IHRoaXMtPnJlcGxhY2VtZW50KCk7CisgICAg
cmV0dXJuICgocmVwbGFjZW1lbnQgJiYgSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKHJlcGxhY2Vt
ZW50LT5qaXRUeXBlKCkpKSA/IDEgOiAwKSArIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7
CiB9CiAKIGludDMyX3QgQ29kZUJsb2NrOjpjb2RlVHlwZVRocmVzaG9sZE11bHRpcGxpZXIoKSBj
b25zdApAQCAtMjQyMSwxOSArMjQyMywyMCBAQCB2b2lkIENvZGVCbG9jazo6c2V0T3B0aW1pemF0
aW9uVGhyZXNob2xkCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogICAgIAotICAgIENvZGVCbG9jayogdGhlUmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudCgpOwot
ICAgIGlmICgocmVzdWx0ID09IENvbXBpbGF0aW9uU3VjY2Vzc2Z1bCkgIT0gKHRoZVJlcGxhY2Vt
ZW50ICE9IHRoaXMpKSB7CisgICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCA9IHRoaXMtPnJlcGxh
Y2VtZW50KCk7CisgICAgYm9vbCBoYXNSZXBsYWNlbWVudCA9IChyZXBsYWNlbWVudCAmJiByZXBs
YWNlbWVudCAhPSB0aGlzKTsKKyAgICBpZiAoKHJlc3VsdCA9PSBDb21waWxhdGlvblN1Y2Nlc3Nm
dWwpICE9IGhhc1JlcGxhY2VtZW50KSB7CiAgICAgICAgIGRhdGFMb2coKnRoaXMsICI6IHdlIGhh
dmUgcmVzdWx0ID0gIiwgcmVzdWx0LCAiIGJ1dCAiKTsKLSAgICAgICAgaWYgKHRoZVJlcGxhY2Vt
ZW50ID09IHRoaXMpCisgICAgICAgIGlmIChyZXBsYWNlbWVudCA9PSB0aGlzKQogICAgICAgICAg
ICAgZGF0YUxvZygid2UgYXJlIG91ciBvd24gcmVwbGFjZW1lbnQuXG4iKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgZGF0YUxvZygib3VyIHJlcGxhY2VtZW50IGlzICIsIHBvaW50ZXJEdW1w
KHRoZVJlcGxhY2VtZW50KSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJvdXIgcmVwbGFj
ZW1lbnQgaXMgIiwgcG9pbnRlckR1bXAocmVwbGFjZW1lbnQpLCAiXG4iKTsKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCiAgICAgc3dpdGNoIChyZXN1
bHQpIHsKICAgICBjYXNlIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bDoKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKHJlcGxhY2VtZW50KCktPmppdFR5cGUoKSkp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXBsYWNlbWVudCAmJiBKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQocmVwbGFjZW1lbnQtPmppdFR5cGUoKSkpOwogICAgICAgICBvcHRpbWl6ZU5leHRJ
bnZvY2F0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIENvbXBpbGF0aW9uRmFpbGVk
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShy
ZXZpc2lvbiAyMzM3NjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYzLDcgKzI4NjMsOCBAQCBleHRlcm4gIkMiIHZv
aWQgSklUX09QRVJBVElPTiB0cmlnZ2VyUmVvCiAgICAgLy8KICAgICAvLyBOb3RlIHRoYXQgZXZl
biBpZiBvcHRpbWl6ZWRDb2RlQmxvY2sgaXMgYW4gRlRMRm9yT1NSRW50cnkgc3R5bGUgQ29kZUJs
b2NrLCB0aGlzIGNvbmRpdGlvbiBpcyBhCiAgICAgLy8gc3VyZSBiZXQgdGhhdCB3ZSBkb24ndCBo
YXZlIGFueXRoaW5nIGVsc2UgbGVmdCB0byBkby4KLSAgICBpZiAoY29kZUJsb2NrLT5yZXBsYWNl
bWVudCgpID09IGNvZGVCbG9jaykgeworICAgIENvZGVCbG9jayogcmVwbGFjZW1lbnQgPSBjb2Rl
QmxvY2stPnJlcGxhY2VtZW50KCk7CisgICAgaWYgKCFyZXBsYWNlbWVudCB8fCByZXBsYWNlbWVu
dCA9PSBjb2RlQmxvY2spIHsKICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAg
ICAgICAgICAgIGRhdGFMb2coKmNvZGVCbG9jaywgIjogTm90IHJlb3B0aW1pemluZyBiZWNhdXNl
IHdlJ3ZlIGFscmVhZHkgYmVlbiBqZXR0aXNvbmVkLlxuIik7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVG9GVExEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VG9GVExEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAyMzM3NjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RvRlRMRGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFRvRlRMRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjCiB7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkgewogICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIk9wdGltaXppbmcgY29tcGls
YXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiAoZm9yICIsICpwcm9maWxlZERGR0NvZGVCbG9jaywK
KyAgICAgICAgICAgICJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsIGNvZGVCbG9jaywgIiAo
Zm9yICIsIHByb2ZpbGVkREZHQ29kZUJsb2NrLAogICAgICAgICAgICAgIikgZGlkIGJlY29tZSBy
ZWFkeS5cbiIpOwogICAgIH0KICAgICAKQEAgLTYzLDE1ICs2MywxNSBAQCB2b2lkIFRvRlRMRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrOjpjCiB7CiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSkgewogICAgICAgICBkYXRhTG9nKAotICAgICAgICAgICAgIk9wdGltaXppbmcgY29tcGls
YXRpb24gb2YgIiwgKmNvZGVCbG9jaywgIiAoZm9yICIsICpwcm9maWxlZERGR0NvZGVCbG9jaywK
KyAgICAgICAgICAgICJPcHRpbWl6aW5nIGNvbXBpbGF0aW9uIG9mICIsIGNvZGVCbG9jaywgIiAo
Zm9yICIsIHByb2ZpbGVkREZHQ29kZUJsb2NrLAogICAgICAgICAgICAgIikgcmVzdWx0OiAiLCBy
ZXN1bHQsICJcbiIpOwogICAgIH0KICAgICAKICAgICBpZiAocHJvZmlsZWRERkdDb2RlQmxvY2st
PnJlcGxhY2VtZW50KCkgIT0gcHJvZmlsZWRERkdDb2RlQmxvY2spIHsKICAgICAgICAgaWYgKE9w
dGlvbnM6OnZlcmJvc2VPU1IoKSkgewogICAgICAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAg
ICAgICAiRHJvcHBpbmcgRlRMIGNvZGUgYmxvY2sgIiwgKmNvZGVCbG9jaywgIiBvbiB0aGUgZmxv
b3IgYmVjYXVzZSB0aGUgIgotICAgICAgICAgICAgICAgICJERkcgY29kZSBibG9jayAiLCAqcHJv
ZmlsZWRERkdDb2RlQmxvY2ssICIgd2FzIGpldHRpc29uZWQuXG4iKTsKKyAgICAgICAgICAgICAg
ICAiRHJvcHBpbmcgRlRMIGNvZGUgYmxvY2sgIiwgY29kZUJsb2NrLCAiIG9uIHRoZSBmbG9vciBi
ZWNhdXNlIHRoZSAiCisgICAgICAgICAgICAgICAgIkRGRyBjb2RlIGJsb2NrICIsIHByb2ZpbGVk
REZHQ29kZUJsb2NrLCAiIHdhcyBqZXR0aXNvbmVkLlxuIik7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjMzNzY4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzNyw4ICsxNTM3LDkgQEAg
U2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoY29kZUJs
b2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CisgICAgICAgIENvZGVCbG9jayogcmVw
bGFjZW1lbnQgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7CiAgICAgICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjp2ZXJib3NlT1NSKCkpKQotICAgICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJp
bmcgT1NSICIsICpjb2RlQmxvY2ssICIgLT4gIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwg
Ii5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgT1NSICIsIGNvZGVCbG9j
aywgIiAtPiAiLCByZXBsYWNlbWVudCwgIi5cbiIpOwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGFu
IG9wdGltaXplZCByZXBsYWNlbWVudCwgdGhlbiBpdCBtdXN0IGJlIHRoZSBjYXNlIHRoYXQgd2Ug
ZW50ZXJlZAogICAgICAgICAvLyBjdGlfb3B0aW1pemUgZnJvbSBhIGxvb3AuIFRoYXQncyBiZWNh
dXNlIGlmIHRoZXJlJ3MgYW4gb3B0aW1pemVkIHJlcGxhY2VtZW50LAogICAgICAgICAvLyB0aGVu
IGFsbCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVsaW5rZWQgdG8gdGhlIHJlcGxh
Y2VtZW50IGFuZCBzbwpAQCAtMTU1MiwxNCArMTU1MywxNCBAQCBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIC8vIGF0dGVtcHQgT1NSIGVudHJ5LiBIZW5j
ZSBpdCBtaWdodCBldmVuIGJlIGNvcnJlY3QgZm9yCiAgICAgICAgIC8vIHNob3VsZFJlb3B0aW1p
emVGcm9tTG9vcE5vdygpIHRvIGFsd2F5cyByZXR1cm4gdHJ1ZS4gQnV0IHdlIG1ha2UgaXQgZG8g
c29tZQogICAgICAgICAvLyBhZGRpdGlvbmFsIGNoZWNraW5nIGFueXdheSwgdG8gcmVkdWNlIHRo
ZSBhbW91bnQgb2YgcmVjb21waWxhdGlvbiB0aHJhc2hpbmcuCi0gICAgICAgIGlmIChjb2RlQmxv
Y2stPnJlcGxhY2VtZW50KCktPnNob3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygpKSB7CisgICAg
ICAgIGlmIChyZXBsYWNlbWVudC0+c2hvdWxkUmVvcHRpbWl6ZUZyb21Mb29wTm93KCkpIHsKICAg
ICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6ZVRv
REZHIiwgKCJzaG91bGQgcmVvcHRpbWl6ZSBmcm9tIGxvb3Agbm93IikpOwogICAgICAgICAgICAg
aWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsKICAgICAgICAgICAgICAgICBk
YXRhTG9nKAotICAgICAgICAgICAgICAgICAgICAiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBv
ZiAiLCAqY29kZUJsb2NrLAotICAgICAgICAgICAgICAgICAgICAiKCIsICpjb2RlQmxvY2stPnJl
cGxhY2VtZW50KCksICIpIChpbiBsb29wKS5cbiIpOworICAgICAgICAgICAgICAgICAgICAiVHJp
Z2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAiLCBjb2RlQmxvY2ssCisgICAgICAgICAgICAgICAg
ICAgICIoIiwgcmVwbGFjZW1lbnQsICIpIChpbiBsb29wKS5cbiIpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5qZXR0aXNvbihQcm9maWxlcjo6
SmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlciwgQ291bnRSZW9w
dGltaXphdGlvbik7CisgICAgICAgICAgICByZXBsYWNlbWVudC0+amV0dGlzb24oUHJvZmlsZXI6
OkpldHRpc29uRHVlVG9CYXNlbGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXIsIENvdW50UmVv
cHRpbWl6YXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0xNjAyLDEzICsxNjAzLDEzIEBAIFNsb3dQYXRoUmV0
dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICB9CiAgICAgCiAgICAgQ29kZUJsb2Nr
KiBvcHRpbWl6ZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7Ci0gICAgQVNT
RVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChvcHRpbWl6ZWRDb2RlQmxvY2stPmppdFR5cGUo
KSkpOworICAgIEFTU0VSVChvcHRpbWl6ZWRDb2RlQmxvY2sgJiYgSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKG9wdGltaXplZENvZGVCbG9jay0+aml0VHlwZSgpKSk7CiAgICAgCiAgICAgaWYgKHZv
aWQqIGRhdGFCdWZmZXIgPSBERkc6OnByZXBhcmVPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRDb2Rl
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7CiAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQob3B0
aW1pemVkQ29kZUJsb2NrLCAib3NyRW50cnkiLCAoImF0IGJjIyIsIGJ5dGVjb2RlSW5kZXgpKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsKICAgICAgICAg
ICAgIGRhdGFMb2coCi0gICAgICAgICAgICAgICAgIlBlcmZvcm1pbmcgT1NSICIsICpjb2RlQmxv
Y2ssICIgLT4gIiwgKm9wdGltaXplZENvZGVCbG9jaywgIi5cbiIpOworICAgICAgICAgICAgICAg
ICJQZXJmb3JtaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4gIiwgb3B0aW1pemVkQ29kZUJsb2Nr
LCAiLlxuIik7CiAgICAgICAgIH0KIAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigp
OwpAQCAtMTYyMCw3ICsxNjIxLDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aQogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsKICAg
ICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICJPcHRpbWl6aW5nICIsICpjb2RlQmxvY2ssICIg
LT4gIiwgKmNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSwKKyAgICAgICAgICAgICJPcHRpbWl6aW5n
ICIsIGNvZGVCbG9jaywgIiAtPiAiLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksCiAgICAgICAg
ICAgICAiIHN1Y2NlZWRlZCwgT1NSIGZhaWxlZCwgYWZ0ZXIgYSBkZWxheSBvZiAiLAogICAgICAg
ICAgICAgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSwgIi5cbiIpOwogICAg
IH0KQEAgLTE2NDEsOCArMTY0Miw4IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGkKICAgICAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9w
dGltaXplVG9ERkciLCAoInNob3VsZCByZW9wdGltaXplIG5vdyIpKTsKICAgICAgICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsKICAgICAgICAgICAgIGRhdGFMb2coCi0g
ICAgICAgICAgICAgICAgIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgKmNvZGVCbG9j
aywgIiAtPiAiLAotICAgICAgICAgICAgICAgICpjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksICIg
KGFmdGVyIE9TUiBmYWlsKS5cbiIpOworICAgICAgICAgICAgICAgICJUcmlnZ2VyaW5nIHJlb3B0
aW1pemF0aW9uIG9mICIsIGNvZGVCbG9jaywgIiAtPiAiLAorICAgICAgICAgICAgICAgIGNvZGVC
bG9jay0+cmVwbGFjZW1lbnQoKSwgIiAoYWZ0ZXIgT1NSIGZhaWwpLlxuIik7CiAgICAgICAgIH0K
ICAgICAgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25E
dWVUb0Jhc2VsaW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlck9uT1NSRW50cnlGYWlsLCBDb3Vu
dFJlb3B0aW1pemF0aW9uKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKQEAg
LTE2NjIsNiArMTY2Myw5IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50
ZXIKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKICAgICBD
b2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxh
Y2VtZW50KCk7CisgICAgaWYgKFVOTElLRUxZKCFvcHRpbWl6ZWRSZXBsYWNlbWVudCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCiAgICAgc3dpdGNoIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+
aml0VHlwZSgpKSB7CiAgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CiAgICAgY2FzZSBKSVRDb2Rl
OjpGVExKSVQ6IHsKQEAgLTE2ODEsNiArMTY4NSw4IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVHJ5T1NSRW50ZXIKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CiAgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9IGNvZGVCbG9j
ay0+cmVwbGFjZW1lbnQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIW9wdGltaXplZFJlcGxhY2VtZW50
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKG9wdGltaXplZFJlcGxh
Y2VtZW50LT5qaXRUeXBlKCkpIHsKICAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDoK
</data>
<flag name="review"
          id="362866"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>