<?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>139162</bug_id>
          
          <creation_ts>2014-12-01 16:32:32 -0800</creation_ts>
          <short_desc>Crash when setting &apos;flex&apos; CSS property to &apos;calc(2 * 3) calc(2 * 3)&apos;</short_desc>
          <delta_ts>2014-12-02 11:15:11 -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>CSS</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>138778</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1051666</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-01 16:32:32 -0800</bug_when>
    <thetext>Crash when setting &apos;flex&apos; CSS property to &apos;calc(2 * 3) calc(2 * 3)&apos;

Trace:
ASSERTION FAILED: !m_parsedCalculation
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000010f7280fa WTFCrash + 42
1   com.apple.WebCore             	0x000000011124cc3b WebCore::CSSParser::parseCalculation(WebCore::CSSParserValue*, WebCore::CalculationPermittedValueRange) + 235 (CSSParser.cpp:10000)
2   com.apple.WebCore             	0x000000011124c899 WebCore::CSSParser::validCalculationUnit(WebCore::CSSParserValue*, WebCore::CSSParser::Units, WebCore::CSSParser::ReleaseParsedCalcValueCondition) + 105 (CSSParser.cpp:1588)
3   com.apple.WebCore             	0x000000011124cd2e WebCore::CSSParser::validUnit(WebCore::CSSParserValue*, WebCore::CSSParser::Units, WebCore::CSSParserMode, WebCore::CSSParser::ReleaseParsedCalcValueCondition) + 78 (CSSParser.cpp:1640)
4   com.apple.WebCore             	0x0000000111288d28 WebCore::CSSParser::validUnit(WebCore::CSSParserValue*, WebCore::CSSParser::Units, WebCore::CSSParser::ReleaseParsedCalcValueCondition) + 56 (CSSParser.h:622)
5   com.apple.WebCore             	0x000000011125e355 WebCore::CSSParser::parseFlex(WebCore::CSSParserValueList*, bool) + 213 (CSSParser.cpp:7363)
6   com.apple.WebCore             	0x0000000111250d6a WebCore::CSSParser::parseValue(WebCore::CSSPropertyID, bool) + 14666 (CSSParser.cpp:2491)
7   com.apple.WebCore             	0x00000001112150e3 cssyyparse(WebCore::CSSParser*) + 2771 (.CSSGrammar.y:389)
8   com.apple.WebCore             	0x000000011124a6ae WebCore::CSSParser::parseValue(WebCore::MutableStyleProperties*, WebCore::CSSPropertyID, WTF::String const&amp;, bool, WebCore::StyleSheetContents*) + 110 (CSSParser.cpp:1314)
9   com.apple.WebCore             	0x00000001112498e7 WebCore::CSSParser::parseValue(WebCore::MutableStyleProperties*, WebCore::CSSPropertyID, WTF::String const&amp;, bool, WebCore::CSSParserMode, WebCore::StyleSheetContents*) + 471 (CSSParser.cpp:1302)
10  com.apple.WebCore             	0x0000000112bb040f WebCore::MutableStyleProperties::setProperty(WebCore::CSSPropertyID, WTF::String const&amp;, bool, WebCore::StyleSheetContents*) + 159 (StyleProperties.cpp:682)
11  com.apple.WebCore             	0x0000000112552d2b WebCore::PropertySetCSSStyleDeclaration::setPropertyInternal(WebCore::CSSPropertyID, WTF::String const&amp;, bool, int&amp;) + 171 (PropertySetCSSStyleDeclaration.cpp:265)
12  com.apple.WebCore             	0x0000000111d22ec8 WebCore::JSCSSStyleDeclaration::putDelegate(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;) + 392 (JSCSSStyleDeclarationCustom.cpp:342)
13  com.apple.WebCore             	0x0000000111d1e079 WebCore::JSCSSStyleDeclaration::put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;) + 329 (JSCSSStyleDeclaration.cpp:284)
14  com.apple.JavaScriptCore      	0x000000010f0a1252 JSC::JSValue::put(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&amp;) + 210
15  com.apple.JavaScriptCore      	0x000000010f073cf6 void JSC::DFG::operationPutByValInternal&lt;false, false&gt;(JSC::ExecState*, long long, long long, long long) + 678</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051677</commentid>
    <comment_count>1</comment_count>
      <attachid>242364</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-01 17:07:46 -0800</bug_when>
    <thetext>Created attachment 242364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051846</commentid>
    <comment_count>2</comment_count>
      <attachid>242364</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-02 09:02:53 -0800</bug_when>
    <thetext>Comment on attachment 242364
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:6948
&gt;      const double result = m_parsedCalculation ? m_parsedCalculation-&gt;doubleValue() : v-&gt;fValue;

Seems overkill to say const here. Just to emphasize that it’s not changed in the next three lines of code in this tiny function?

&gt; Source/WebCore/css/CSSParser.cpp:6950
&gt; +        m_parsedCalculation.clear();

Or maybe just = nullptr.

Also, the argument name here is “v” and the definition of the argument is formatted incorrectly (with a space before the *), and the argument should be a reference not a pointer.

And passing an argument to tell this to release the parsed calculation is just strange. Two separate functions would be much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051877</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-02 10:24:12 -0800</bug_when>
    <thetext>&gt; And passing an argument to tell this to release the parsed calculation is
&gt; just strange. Two separate functions would be much better.

I agree this needs refactoring. However, I&apos;d like to handle this separately because it does not only affect this function. The same pattern is used for:
- validCalculationUnit()
- validUnit()
- parsedDouble()

I need to think a bit more about this to come up with a nicer proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051882</commentid>
    <comment_count>4</comment_count>
      <attachid>242426</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-02 10:40:18 -0800</bug_when>
    <thetext>Created attachment 242426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051888</commentid>
    <comment_count>5</comment_count>
      <attachid>242429</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-12-02 10:57:00 -0800</bug_when>
    <thetext>Created attachment 242429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051904</commentid>
    <comment_count>6</comment_count>
      <attachid>242429</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-02 11:15:07 -0800</bug_when>
    <thetext>Comment on attachment 242429
Patch

Clearing flags on attachment: 242429

Committed r176674: &lt;http://trac.webkit.org/changeset/176674&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051905</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-02 11:15:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242364</attachid>
            <date>2014-12-01 17:07:46 -0800</date>
            <delta_ts>2014-12-02 10:40:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139162-20141201170816.patch</filename>
            <type>text/plain</type>
            <size>5862</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2NTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhNzgwN2M5ZGVjYWM5
NjQyMGU5NzIyZWRiZmY2ZTIzNzExNmJhNC4uNmQ0NmMzZTVlYjkwYjYzNDc2MmNkMjUwMjUzYjVh
MmY1NWQ4NWIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE0LTEyLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggd2hlbiBzZXR0aW5n
ICdmbGV4JyBDU1MgcHJvcGVydHkgdG8gJ2NhbGMoMiAqIDMpIGNhbGMoMiAqIDMpJworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5MTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IGNhbGN1bGF0ZWQgdmFsdWVzIGluICdmbGV4JyBDU1MgcHJvcGVydHkuCisgICAgICAgIFByZXZp
b3VzbHksIHRob3NlIGRpZCBub3Qgd29yayBpbiByZWxlYXNlIGJ1aWxkcywgYW5kIHdlcmUgaGl0
dGluZworICAgICAgICBhbiBhc3NlcnRpb24gaW4gZGVidWcgYnVpbGRzLgorCisgICAgICAgIFRl
c3Q6IGZhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS5odG1sCisKKyAgICAgICAgKiBjc3Mv
Q1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VkRG91Ymxl
KToKKyAgICAgICAgQ2FsbCBSZWZQdHI6OmNsZWFyKCkgaW5zdGVhZCBvZiBSZWZQdHI6OnJlbGVh
c2UoKSBhcyB3ZSBhcmUgbm90CisgICAgICAgIGludGVyZXN0ZWQgaW4gdGhlIHJldHVybiB2YWx1
ZS4KKworICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZsZXgpOgorCiAyMDE0LTEy
LTAxICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogRE9NRXhjZXB0aW9ucyBkbyBub3Qgc2hvdyB0aGUgZXJyb3IgbWVzc2FnZSBz
dHJpbmcgaW4gUGF1c2UgUmVhc29uIHNlY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggNzhlZjY0MjE3OThiMjQ1ZWFiNWMwYmYzMzRlZmY0MDM5YmNiMzFiMS4uNGRmYzI0MGM0NTc3
MTMxOWYwMGY1ZmM1ODdiYWE0NDM1MTRlMGVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTY5NDcsNyArNjk0Nyw3IEBAIGlubGluZSBkb3VibGUgQ1NTUGFyc2VyOjpwYXJzZWREb3Vi
bGUoQ1NTUGFyc2VyVmFsdWUgKnYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWVDCiB7CiAgICAgY29u
c3QgZG91YmxlIHJlc3VsdCA9IG1fcGFyc2VkQ2FsY3VsYXRpb24gPyBtX3BhcnNlZENhbGN1bGF0
aW9uLT5kb3VibGVWYWx1ZSgpIDogdi0+ZlZhbHVlOwogICAgIGlmIChyZWxlYXNlQ2FsYyA9PSBS
ZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKQotICAgICAgICBtX3BhcnNlZENhbGN1bGF0aW9uLnJlbGVh
c2UoKTsKKyAgICAgICAgbV9wYXJzZWRDYWxjdWxhdGlvbi5jbGVhcigpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTczNjIsMTAgKzczNjIsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
RmxleChDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MsIGJvb2wgaW1wb3J0YW50KQogICAgIHdoaWxl
IChDU1NQYXJzZXJWYWx1ZSogYXJnID0gYXJncy0+Y3VycmVudCgpKSB7CiAgICAgICAgIGlmICh2
YWxpZFVuaXQoYXJnLCBGTnVtYmVyIHwgRk5vbk5lZykpIHsKICAgICAgICAgICAgIGlmIChmbGV4
R3JvdyA9PSB1bnNldFZhbHVlKQotICAgICAgICAgICAgICAgIGZsZXhHcm93ID0gYXJnLT5mVmFs
dWU7CisgICAgICAgICAgICAgICAgZmxleEdyb3cgPSBwYXJzZWREb3VibGUoYXJnLCBSZWxlYXNl
UGFyc2VkQ2FsY1ZhbHVlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGZsZXhTaHJpbmsgPT0gdW5z
ZXRWYWx1ZSkKLSAgICAgICAgICAgICAgICBmbGV4U2hyaW5rID0gYXJnLT5mVmFsdWU7Ci0gICAg
ICAgICAgICBlbHNlIGlmICghYXJnLT5mVmFsdWUpIHsKKyAgICAgICAgICAgICAgICBmbGV4U2hy
aW5rID0gcGFyc2VkRG91YmxlKGFyZywgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSk7CisgICAgICAg
ICAgICBlbHNlIGlmICghcGFyc2VkRG91YmxlKGFyZywgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSkp
IHsKICAgICAgICAgICAgICAgICAvLyBmbGV4IG9ubHkgYWxsb3dzIGEgYmFzaXMgb2YgMCAoc2Fu
cyB1bml0cykgaWYgZmxleC1ncm93IGFuZCBmbGV4LXNocmluayB2YWx1ZXMgaGF2ZSBhbHJlYWR5
IGJlZW4gc2V0LgogICAgICAgICAgICAgICAgIGZsZXhCYXNpcyA9IGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZVZhbHVlKDAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgICAgICAgICAgfSBl
bHNlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA1NDg1N2E3MDRjMmE0ZjU4NzlmMTE4NTViMTIwZGYzYzRlYWEyNjZmLi4z
NWE0YTQ1NGM1NDJiOTA0M2E0ZDQxZDhiODc1OTgyNjNiMGVlODMyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTQtMTItMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBDcmFzaCB3aGVuIHNldHRpbmcgJ2ZsZXgnIENTUyBwcm9wZXJ0eSB0byAnY2FsYygyICog
MykgY2FsYygyICogMyknCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkxNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgbGF5b3V0IHRlc3QgZm9yIGNhbGN1bGF0ZWQgdmFsdWUgc3VwcG9ydCBmb3Ig
J2ZsZXgnIENTUyBwcm9wZXJ0eS4KKworICAgICAgICAqIGZhc3QvY3NzL2ZsZXgtY2FsY3VsYXRl
ZC12YWx1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZsZXgtY2Fs
Y3VsYXRlZC12YWx1ZS5odG1sOiBBZGRlZC4KKwogMjAxNC0xMi0wMSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTUV4Y2Vw
dGlvbnMgZG8gbm90IHNob3cgdGhlIGVycm9yIG1lc3NhZ2Ugc3RyaW5nIGluIFBhdXNlIFJlYXNv
biBzZWN0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mbGV4LWNhbGN1bGF0
ZWQtdmFsdWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmxleC1jYWxjdWxh
dGVkLXZhbHVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2QyMTI5Njk5ODBhMzU2ODRmOTg4
YjI0OTZjNWZjYTYxM2JiYTA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZmxleC1jYWxjdWxhdGVkLXZhbHVlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitU
ZXN0cyBhc3NpZ25pbmcgYSBjYWxjdWxhdGVkIHZhbHVlcyB0byAnZmxleCcgQ1NTIHByb3BlcnR5
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0RGl2LnN0eWxlWydm
bGV4J10gaXMgIiIKK3Rlc3REaXYuc3R5bGVbJ2ZsZXgnXSA9ICdjYWxjKDIgKiAzKSBjYWxjKDIg
KiAzKScKK1BBU1MgdGVzdERpdi5zdHlsZVsnZmxleCddIGlzICI2IDYgMHB4IgorUEFTUyB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RGl2KS5nZXRQcm9wZXJ0eVZhbHVlKCdmbGV4JykgaXMg
IjYgNiAwcHgiCit0ZXN0RGl2LnN0eWxlWydmbGV4J10gPSAnY2FsYygyICogMykgY2FsYygyICog
MykgY2FsYygxMCUgKiAyKScKK1BBU1MgdGVzdERpdi5zdHlsZVsnZmxleCddIGlzICI2IDYgY2Fs
YygyMCUpIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RGl2KS5nZXRQcm9wZXJ0
eVZhbHVlKCdmbGV4JykgaXMgIjYgNiAyMCUiCit0ZXN0RGl2LnN0eWxlWydmbGV4J10gPSAnY2Fs
YygyICogMykgY2FsYygyICogMykgY2FsYygzIC0gMyknCitQQVNTIHRlc3REaXYuc3R5bGVbJ2Zs
ZXgnXSBpcyAiNiA2IDBweCIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdERpdiku
Z2V0UHJvcGVydHlWYWx1ZSgnZmxleCcpIGlzICI2IDYgMHB4IgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvZmxleC1jYWxjdWxhdGVkLXZhbHVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E4ZGI5ODg3NjJkYTNh
MjU3MTZiNzY0OWFiYzdkODJkOTk3MGYwMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9InRlc3REaXYiPjwvZGl2PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJUZXN0cyBhc3NpZ25pbmcgYSBjYWxjdWxhdGVkIHZhbHVlcyB0byAnZmxl
eCcgQ1NTIHByb3BlcnR5LiIpOworCit2YXIgdGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0RGl2Iik7CisKK3Nob3VsZEJlRW1wdHlTdHJpbmcoInRlc3REaXYuc3R5bGVbJ2Zs
ZXgnXSIpOworZXZhbEFuZExvZygidGVzdERpdi5zdHlsZVsnZmxleCddID0gJ2NhbGMoMiAqIDMp
IGNhbGMoMiAqIDMpJyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXN0RGl2LnN0eWxlWydm
bGV4J10iLCAiNiA2IDBweCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29t
cHV0ZWRTdHlsZSh0ZXN0RGl2KS5nZXRQcm9wZXJ0eVZhbHVlKCdmbGV4JykiLCAiNiA2IDBweCIp
OworCitldmFsQW5kTG9nKCJ0ZXN0RGl2LnN0eWxlWydmbGV4J10gPSAnY2FsYygyICogMykgY2Fs
YygyICogMykgY2FsYygxMCUgKiAyKSciKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygidGVzdERp
di5zdHlsZVsnZmxleCddIiwgIjYgNiBjYWxjKDIwJSkiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdERpdikuZ2V0UHJvcGVydHlWYWx1ZSgnZmxl
eCcpIiwgIjYgNiAyMCUiKTsKKworZXZhbEFuZExvZygidGVzdERpdi5zdHlsZVsnZmxleCddID0g
J2NhbGMoMiAqIDMpIGNhbGMoMiAqIDMpIGNhbGMoMyAtIDMpJyIpOworc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJ0ZXN0RGl2LnN0eWxlWydmbGV4J10iLCAiNiA2IDBweCIpOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RGl2KS5nZXRQcm9wZXJ0eVZh
bHVlKCdmbGV4JykiLCAiNiA2IDBweCIpOworCis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242426</attachid>
            <date>2014-12-02 10:40:18 -0800</date>
            <delta_ts>2014-12-02 10:56:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139162-20141202104050.patch</filename>
            <type>text/plain</type>
            <size>17753</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2NjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE5YjIxYThkMWQyYTky
NWY2NmE4ZjNmMzkzYWI3OTg3ZDEyYjg5Yy4uMmYyNGM0YTk1ZDk5OTEzMGM1NDk5ZDU3NTdlNWIz
MDI1YjU0MjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE0LTEyLTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggd2hlbiBzZXR0aW5n
ICdmbGV4JyBDU1MgcHJvcGVydHkgdG8gJ2NhbGMoMiAqIDMpIGNhbGMoMiAqIDMpJworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5MTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNh
bGN1bGF0ZWQgdmFsdWVzIGluICdmbGV4JyBDU1MgcHJvcGVydHkuCisgICAgICAgIFByZXZpb3Vz
bHksIHRob3NlIGRpZCBub3Qgd29yayBpbiByZWxlYXNlIGJ1aWxkcywgYW5kIHdlcmUgaGl0dGlu
ZworICAgICAgICBhbiBhc3NlcnRpb24gaW4gZGVidWcgYnVpbGRzLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dmFsaWRDYWxjdWxhdGlv
blVuaXQpOgorICAgICAgICBEbyBub3QgY2FsbCBSZWZQdHI6OnJlbGVhc2UoKSBhcyB3ZSBhcmUg
bm90IGludGVyZXN0ZWQgaW4gdGhlIHJldHVybgorICAgICAgICB2YWx1ZS4gQXNzaWduIG51bGxw
dHIgdG8gdGhlIG1lbWJlciBpbnN0ZWFkLgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxQb3Np
dGlvbkNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VGb250V2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VkRG91
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y29sb3JJbnRGcm9tVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yUGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlSFNMUGFyYW1ldGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmxleCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorCiAyMDE0LTEyLTAyICBUaWJvciBNZXN6YXJvcyAgPHRtZXN6YXJvcy51LXN6ZWdlZEBwYXJ0
bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFVzZSByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9p
bnRlcnMgaW4gRWRpdGluZ1N0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDc4ZWY2
NDIxNzk4YjI0NWVhYjVjMGJmMzM0ZWZmNDAzOWJjYjMxYjEuLjYwMmQ2ZTllZDExZDJjMzg4NTAx
Y2ZkYTAzNDAyMzAyNDFhYmEwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xNjI0
LDcgKzE2MjQsNyBAQCBib29sIENTU1BhcnNlcjo6dmFsaWRDYWxjdWxhdGlvblVuaXQoQ1NTUGFy
c2VyVmFsdWUqIHZhbHVlLCBVbml0cyB1bml0ZmxhZ3MsIFJlbAogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgaWYgKCFiIHx8IHJlbGVhc2VDYWxjID09IFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUp
Ci0gICAgICAgIG1fcGFyc2VkQ2FsY3VsYXRpb24ucmVsZWFzZSgpOworICAgICAgICBtX3BhcnNl
ZENhbGN1bGF0aW9uID0gbnVsbHB0cjsKICAgICByZXR1cm4gYjsgICAgCiB9CiAKQEAgLTI1MDQs
NyArMjUwNCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5T3JkZXI6CiAgICAgICAg
IGlmICh2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyLCBDU1NTdHJpY3RNb2RlKSkgewogICAgICAg
ICAgICAgLy8gV2UgcmVzdHJpY3QgdGhlIHNtYWxsZXN0IHZhbHVlIHRvIGludCBtaW4gKyAyIGJl
Y2F1c2Ugd2UgdXNlIGludCBtaW4gYW5kIGludCBtaW4gKyAxIGFzIHNwZWNpYWwgdmFsdWVzIGlu
IGEgaGFzaCBzZXQuCi0gICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gc3RkOjptYXg8ZG91Ymxl
PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpICsgMiwgcGFyc2VkRG91YmxlKHZhbHVl
LCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKSk7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0g
c3RkOjptYXg8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpICsgMiwgcGFy
c2VkRG91YmxlKCp2YWx1ZSwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSkpOwogICAgICAgICAgICAg
cGFyc2VkVmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShyZXN1bHQsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7
CiAgICAgICAgIH0KQEAgLTM5OTYsNyArMzk5Niw3IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb25Db21wb25lbnQoQ1NTUGFyc2VyVmFs
CiAgICAgICAgIGludCBwZXJjZW50ID0gMDsKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVm
dCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0KSB7CiAgICAgICAgICAgICBpZiAoY3VtdWxhdGl2ZUZs
YWdzICYgWEZpbGxQb3NpdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGN1bXVsYXRpdmVGbGFncyB8PSBY
RmlsbFBvc2l0aW9uOwogICAgICAgICAgICAgaW5kaXZpZHVhbEZsYWcgPSBYRmlsbFBvc2l0aW9u
OwogICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlUmlnaHQpCkBAIC00MDA0LDcgKzQwMDQs
NyBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFBv
c2l0aW9uQ29tcG9uZW50KENTU1BhcnNlclZhbAogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYg
KGlkID09IENTU1ZhbHVlVG9wIHx8IGlkID09IENTU1ZhbHVlQm90dG9tKSB7CiAgICAgICAgICAg
ICBpZiAoY3VtdWxhdGl2ZUZsYWdzICYgWUZpbGxQb3NpdGlvbikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGN1
bXVsYXRpdmVGbGFncyB8PSBZRmlsbFBvc2l0aW9uOwogICAgICAgICAgICAgaW5kaXZpZHVhbEZs
YWcgPSBZRmlsbFBvc2l0aW9uOwogICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQm90dG9t
KQpAQCAtNDAzMCwxMiArNDAzMCwxMiBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBD
U1NQYXJzZXI6OnBhcnNlRmlsbFBvc2l0aW9uQ29tcG9uZW50KENTU1BhcnNlclZhbAogICAgICAg
ICAgICAgaW5kaXZpZHVhbEZsYWcgPSBZRmlsbFBvc2l0aW9uOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKG1fcGFyc2VkQ2FsY3VsYXRpb24pCi0gICAgICAgICAgICAgICAgbV9w
YXJzZWRDYWxjdWxhdGlvbi5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgICAgICBtX3BhcnNlZENhbGN1bGF0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVO
dW1lcmljVmFsdWUodmFsdWVMaXN0LT5jdXJyZW50KCkpOwogICAgIH0KLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogc3RhdGljIGJvb2wgaXNWYWx1ZUNvbmZsaWN0aW5n
V2l0aEN1cnJlbnRFZGdlKGludCB2YWx1ZTEsIGludCB2YWx1ZTIpCkBAIC00Njc2LDE1ICs0Njc2
LDE2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9yaWdpblNob3J0aGFuZChSZWZQ
dHI8Q1NTVmFsdWU+JiB2YWx1ZTEsIFJlZlB0cjxDCiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUN1
YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBk
b3VibGUmIHJlc3VsdCkKIHsKLSAgICBDU1NQYXJzZXJWYWx1ZSogdiA9IGFyZ3MtPmN1cnJlbnQo
KTsKLSAgICBpZiAoIXZhbGlkVW5pdCh2LCBGTnVtYmVyKSkKKyAgICBDU1NQYXJzZXJWYWx1ZSog
dmFsdWUgPSBhcmdzLT5jdXJyZW50KCk7CisgICAgaWYgKCF2YWxpZFVuaXQodmFsdWUsIEZOdW1i
ZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gcGFyc2VkRG91YmxlKHYs
IFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpOwotICAgIHYgPSBhcmdzLT5uZXh0KCk7Ci0gICAgaWYg
KCF2KQorICAgIHJlc3VsdCA9IHBhcnNlZERvdWJsZSgqdmFsdWUsIFJlbGVhc2VQYXJzZWRDYWxj
VmFsdWUpOworICAgIHZhbHVlID0gYXJncy0+bmV4dCgpOworICAgIGlmICghdmFsdWUpIHsKICAg
ICAgICAgLy8gVGhlIGxhc3QgbnVtYmVyIGluIHRoZSBmdW5jdGlvbiBoYXMgbm8gY29tbWEgYWZ0
ZXIgaXQsIHNvIHdlJ3JlIGRvbmUuCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghaXND
b21tYSh2KSkKKyAgICB9CisgICAgaWYgKCFpc0NvbW1hKHZhbHVlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGFyZ3MtPm5leHQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY0NDIsMTIg
KzY0NDMsMTIgQEAgc3RhdGljIENTU1ZhbHVlSUQgY3JlYXRlRm9udFdlaWdodFZhbHVlS2V5d29y
ZChpbnQgd2VpZ2h0KQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VGb250V2VpZ2h0KGJvb2wgaW1w
b3J0YW50KQogewotICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJy
ZW50KCk7Ci0gICAgaWYgKCh2YWx1ZS0+aWQgPj0gQ1NTVmFsdWVOb3JtYWwpICYmICh2YWx1ZS0+
aWQgPD0gQ1NTVmFsdWU5MDApKSB7Ci0gICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9u
dFdlaWdodCwgY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKHZhbHVlLT5pZCks
IGltcG9ydGFudCk7CisgICAgQ1NTUGFyc2VyVmFsdWUmIHZhbHVlID0gKm1fdmFsdWVMaXN0LT5j
dXJyZW50KCk7CisgICAgaWYgKCh2YWx1ZS5pZCA+PSBDU1NWYWx1ZU5vcm1hbCkgJiYgKHZhbHVl
LmlkIDw9IENTU1ZhbHVlOTAwKSkgeworICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRXZWlnaHQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZS5pZCks
IGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAodmFsaWRV
bml0KHZhbHVlLCBGSW50ZWdlciB8IEZOb25OZWcsIENTU1F1aXJrc01vZGUpKSB7CisgICAgaWYg
KHZhbGlkVW5pdCgmdmFsdWUsIEZJbnRlZ2VyIHwgRk5vbk5lZywgQ1NTUXVpcmtzTW9kZSkpIHsK
ICAgICAgICAgaW50IHdlaWdodCA9IHN0YXRpY19jYXN0PGludD4ocGFyc2VkRG91YmxlKHZhbHVl
LCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKSk7CiAgICAgICAgIGlmICghKHdlaWdodCAlIDEwMCkg
JiYgd2VpZ2h0ID49IDEwMCAmJiB3ZWlnaHQgPD0gOTAwKSB7CiAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShjcmVhdGVGb250V2VpZ2h0VmFsdWVLZXl3b3JkKHdlaWdodCkpLCBpbXBvcnRhbnQp
OwpAQCAtNjk0MywxMSArNjk0NCwxMSBAQCBib29sIENTU1BhcnNlcjo6ZmFzdFBhcnNlQ29sb3Io
UkdCQTMyJiByZ2IsIGNvbnN0IFN0cmluZ1R5cGUmIG5hbWUsIGJvb2wgc3RyaWN0KQogICAgIHJl
dHVybiBmYWxzZTsKIH0KICAgICAKLWlubGluZSBkb3VibGUgQ1NTUGFyc2VyOjpwYXJzZWREb3Vi
bGUoQ1NTUGFyc2VyVmFsdWUgKnYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWVDb25kaXRpb24gcmVs
ZWFzZUNhbGMpCitpbmxpbmUgZG91YmxlIENTU1BhcnNlcjo6cGFyc2VkRG91YmxlKENTU1BhcnNl
clZhbHVlJiB2YWx1ZSwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZUNvbmRpdGlvbiByZWxlYXNlQ2Fs
YykKIHsKLSAgICBjb25zdCBkb3VibGUgcmVzdWx0ID0gbV9wYXJzZWRDYWxjdWxhdGlvbiA/IG1f
cGFyc2VkQ2FsY3VsYXRpb24tPmRvdWJsZVZhbHVlKCkgOiB2LT5mVmFsdWU7CisgICAgZG91Ymxl
IHJlc3VsdCA9IG1fcGFyc2VkQ2FsY3VsYXRpb24gPyBtX3BhcnNlZENhbGN1bGF0aW9uLT5kb3Vi
bGVWYWx1ZSgpIDogdmFsdWUuZlZhbHVlOwogICAgIGlmIChyZWxlYXNlQ2FsYyA9PSBSZWxlYXNl
UGFyc2VkQ2FsY1ZhbHVlKQotICAgICAgICBtX3BhcnNlZENhbGN1bGF0aW9uLnJlbGVhc2UoKTsK
KyAgICAgICAgbV9wYXJzZWRDYWxjdWxhdGlvbiA9IG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtNjk2MCw2NiArNjk2MSw2NiBAQCBib29sIENTU1BhcnNlcjo6aXNDYWxjdWxh
dGlvbihDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCiAgICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LW1heCgiKSk7CiB9CiAKLWlubGlu
ZSBpbnQgQ1NTUGFyc2VyOjpjb2xvckludEZyb21WYWx1ZShDU1NQYXJzZXJWYWx1ZSogdikKK2lu
bGluZSBpbnQgQ1NTUGFyc2VyOjpjb2xvckludEZyb21WYWx1ZShDU1NQYXJzZXJWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgYm9vbCBpc1BlcmNlbnQ7CiAgICAgCiAgICAgaWYgKG1fcGFyc2VkQ2FsY3Vs
YXRpb24pCiAgICAgICAgIGlzUGVyY2VudCA9IG1fcGFyc2VkQ2FsY3VsYXRpb24tPmNhdGVnb3J5
KCkgPT0gQ2FsY1BlcmNlbnQ7CiAgICAgZWxzZQotICAgICAgICBpc1BlcmNlbnQgPSB2LT51bml0
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsKKyAgICAgICAgaXNQZXJjZW50
ID0gdmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7CiAKLSAg
ICBjb25zdCBkb3VibGUgdmFsdWUgPSBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNlZENhbGNW
YWx1ZSk7CisgICAgY29uc3QgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VkRG91YmxlKHZhbHVl
LCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKTsKICAgICAKLSAgICBpZiAodmFsdWUgPD0gMC4wKQor
ICAgIGlmIChkb3VibGVWYWx1ZSA8PSAwLjApCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYg
KGlzUGVyY2VudCkgewotICAgICAgICBpZiAodmFsdWUgPj0gMTAwLjApCisgICAgICAgIGlmIChk
b3VibGVWYWx1ZSA+PSAxMDAuMCkKICAgICAgICAgICAgIHJldHVybiAyNTU7Ci0gICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICogMjU2LjAgLyAxMDAuMCk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KGRvdWJsZVZhbHVlICogMjU2LjAgLyAxMDAuMCk7CiAgICAg
fQogCi0gICAgaWYgKHZhbHVlID49IDI1NS4wKQorICAgIGlmIChkb3VibGVWYWx1ZSA+PSAyNTUu
MCkKICAgICAgICAgcmV0dXJuIDI1NTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZh
bHVlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihkb3VibGVWYWx1ZSk7CiB9CiAKIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSogdmFsdWUs
IGludCogY29sb3JBcnJheSwgYm9vbCBwYXJzZUFscGhhKQogewogICAgIENTU1BhcnNlclZhbHVl
TGlzdCogYXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKLSAgICBDU1NQYXJzZXJW
YWx1ZSogdiA9IGFyZ3MtPmN1cnJlbnQoKTsKKyAgICBDU1NQYXJzZXJWYWx1ZSogY3VycmVudFZh
bHVlID0gYXJncy0+Y3VycmVudCgpOwogICAgIFVuaXRzIHVuaXRUeXBlID0gRlVua25vd247CiAg
ICAgLy8gR2V0IHRoZSBmaXJzdCB2YWx1ZSBhbmQgaXRzIHR5cGUKLSAgICBpZiAodmFsaWRVbml0
KHYsIEZJbnRlZ2VyLCBDU1NTdHJpY3RNb2RlKSkKKyAgICBpZiAodmFsaWRVbml0KGN1cnJlbnRW
YWx1ZSwgRkludGVnZXIsIENTU1N0cmljdE1vZGUpKQogICAgICAgICB1bml0VHlwZSA9IEZJbnRl
Z2VyOwotICAgIGVsc2UgaWYgKHZhbGlkVW5pdCh2LCBGUGVyY2VudCwgQ1NTU3RyaWN0TW9kZSkp
CisgICAgZWxzZSBpZiAodmFsaWRVbml0KGN1cnJlbnRWYWx1ZSwgRlBlcmNlbnQsIENTU1N0cmlj
dE1vZGUpKQogICAgICAgICB1bml0VHlwZSA9IEZQZXJjZW50OwogICAgIGVsc2UKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAotICAgIGNvbG9yQXJyYXlbMF0gPSBjb2xvckludEZyb21WYWx1
ZSh2KTsKKyAgICBjb2xvckFycmF5WzBdID0gY29sb3JJbnRGcm9tVmFsdWUoKmN1cnJlbnRWYWx1
ZSk7CiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAzOyBpKyspIHsKLSAgICAgICAgdiA9IGFyZ3Mt
Pm5leHQoKTsKLSAgICAgICAgaWYgKHYtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9y
ICYmIHYtPmlWYWx1ZSAhPSAnLCcpCisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGFyZ3MtPm5leHQo
KTsKKyAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZS0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6T3Bl
cmF0b3IgJiYgY3VycmVudFZhbHVlLT5pVmFsdWUgIT0gJywnKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB2ID0gYXJncy0+bmV4dCgpOwotICAgICAgICBpZiAoIXZhbGlkVW5p
dCh2LCB1bml0VHlwZSwgQ1NTU3RyaWN0TW9kZSkpCisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGFy
Z3MtPm5leHQoKTsKKyAgICAgICAgaWYgKCF2YWxpZFVuaXQoY3VycmVudFZhbHVlLCB1bml0VHlw
ZSwgQ1NTU3RyaWN0TW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNv
bG9yQXJyYXlbaV0gPSBjb2xvckludEZyb21WYWx1ZSh2KTsKKyAgICAgICAgY29sb3JBcnJheVtp
XSA9IGNvbG9ySW50RnJvbVZhbHVlKCpjdXJyZW50VmFsdWUpOwogICAgIH0KICAgICBpZiAocGFy
c2VBbHBoYSkgewotICAgICAgICB2ID0gYXJncy0+bmV4dCgpOwotICAgICAgICBpZiAodi0+dW5p
dCAhPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdi0+aVZhbHVlICE9ICcsJykKKyAgICAg
ICAgY3VycmVudFZhbHVlID0gYXJncy0+bmV4dCgpOworICAgICAgICBpZiAoY3VycmVudFZhbHVl
LT51bml0ICE9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiBjdXJyZW50VmFsdWUtPmlWYWx1
ZSAhPSAnLCcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHYgPSBhcmdzLT5u
ZXh0KCk7Ci0gICAgICAgIGlmICghdmFsaWRVbml0KHYsIEZOdW1iZXIsIENTU1N0cmljdE1vZGUp
KQorICAgICAgICBjdXJyZW50VmFsdWUgPSBhcmdzLT5uZXh0KCk7CisgICAgICAgIGlmICghdmFs
aWRVbml0KGN1cnJlbnRWYWx1ZSwgRk51bWJlciwgQ1NTU3RyaWN0TW9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbnN0IGRvdWJsZSB2YWx1ZSA9IHBhcnNlZERvdWJs
ZSh2LCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKTsKKyAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVl
ID0gcGFyc2VkRG91YmxlKCpjdXJyZW50VmFsdWUsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpOwog
ICAgICAgICAvLyBDb252ZXJ0IHRoZSBmbG9hdGluZyBwb2ludGVyIG51bWJlciBvZiBhbHBoYSB0
byBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCwgMjU2KSwKICAgICAgICAgLy8gd2l0aCBhbiBl
cXVhbCBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCAyNTYgdmFsdWVzLgotICAgICAgICBjb2xvckFy
cmF5WzNdID0gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1heDxkb3VibGU+KDAsIHN0ZDo6bWluPGRv
dWJsZT4oMSwgdmFsdWUpKSAqIG5leHRhZnRlcigyNTYuMCwgMC4wKSk7CisgICAgICAgIGNvbG9y
QXJyYXlbM10gPSBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWF4PGRvdWJsZT4oMCwgc3RkOjptaW48
ZG91YmxlPigxLCBkb3VibGVWYWx1ZSkpICogbmV4dGFmdGVyKDI1Ni4wLCAwLjApKTsKICAgICB9
CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC03MDMyLDI5ICs3MDMzLDI5IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIGludCogY29s
b3JBcnJheSwgYm9vCiBib29sIENTU1BhcnNlcjo6cGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNl
clZhbHVlKiB2YWx1ZSwgZG91YmxlKiBjb2xvckFycmF5LCBib29sIHBhcnNlQWxwaGEpCiB7CiAg
ICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsdWUtPmZ1bmN0aW9uLT5hcmdzLmdldCgp
OwotICAgIENTU1BhcnNlclZhbHVlKiB2ID0gYXJncy0+Y3VycmVudCgpOworICAgIENTU1BhcnNl
clZhbHVlKiBjdXJyZW50VmFsdWUgPSBhcmdzLT5jdXJyZW50KCk7CiAgICAgLy8gR2V0IHRoZSBm
aXJzdCB2YWx1ZQotICAgIGlmICghdmFsaWRVbml0KHYsIEZOdW1iZXIsIENTU1N0cmljdE1vZGUp
KQorICAgIGlmICghdmFsaWRVbml0KGN1cnJlbnRWYWx1ZSwgRk51bWJlciwgQ1NTU3RyaWN0TW9k
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBub3JtYWxpemUgdGhlIEh1ZSB2YWx1
ZSBhbmQgY2hhbmdlIGl0IHRvIGJlIGJldHdlZW4gMCBhbmQgMS4wCi0gICAgY29sb3JBcnJheVsw
XSA9ICgoKHN0YXRpY19jYXN0PGludD4ocGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxj
VmFsdWUpKSAlIDM2MCkgKyAzNjApICUgMzYwKSAvIDM2MC4wOwotICAgIGZvciAoaW50IGkgPSAx
OyBpIDwgMzsgaSsrKSB7Ci0gICAgICAgIHYgPSBhcmdzLT5uZXh0KCk7Ci0gICAgICAgIGlmICh2
LT51bml0ICE9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2LT5pVmFsdWUgIT0gJywnKQor
ICAgIGNvbG9yQXJyYXlbMF0gPSAoKChzdGF0aWNfY2FzdDxpbnQ+KHBhcnNlZERvdWJsZSgqY3Vy
cmVudFZhbHVlLCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKSkgJSAzNjApICsgMzYwKSAlIDM2MCkg
LyAzNjAuMDsKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IDM7ICsraSkgeworICAgICAgICBjdXJy
ZW50VmFsdWUgPSBhcmdzLT5uZXh0KCk7CisgICAgICAgIGlmIChjdXJyZW50VmFsdWUtPnVuaXQg
IT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIGN1cnJlbnRWYWx1ZS0+aVZhbHVlICE9ICcs
JykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsK
LSAgICAgICAgaWYgKCF2YWxpZFVuaXQodiwgRlBlcmNlbnQsIENTU1N0cmljdE1vZGUpKQorICAg
ICAgICBjdXJyZW50VmFsdWUgPSBhcmdzLT5uZXh0KCk7CisgICAgICAgIGlmICghdmFsaWRVbml0
KGN1cnJlbnRWYWx1ZSwgRlBlcmNlbnQsIENTU1N0cmljdE1vZGUpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBjb2xvckFycmF5W2ldID0gc3RkOjptYXg8ZG91YmxlPigwLCBz
dGQ6Om1pbjxkb3VibGU+KDEwMCwgcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFs
dWUpKSkgLyAxMDAuMDsgLy8gbmVlZHMgdG8gYmUgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLjAKKyAg
ICAgICAgY29sb3JBcnJheVtpXSA9IHN0ZDo6bWF4PGRvdWJsZT4oMCwgc3RkOjptaW48ZG91Ymxl
PigxMDAsIHBhcnNlZERvdWJsZSgqY3VycmVudFZhbHVlLCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVl
KSkpIC8gMTAwLjA7IC8vIG5lZWRzIHRvIGJlIHZhbHVlIGJldHdlZW4gMCBhbmQgMS4wCiAgICAg
fQogICAgIGlmIChwYXJzZUFscGhhKSB7Ci0gICAgICAgIHYgPSBhcmdzLT5uZXh0KCk7Ci0gICAg
ICAgIGlmICh2LT51bml0ICE9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2LT5pVmFsdWUg
IT0gJywnKQorICAgICAgICBjdXJyZW50VmFsdWUgPSBhcmdzLT5uZXh0KCk7CisgICAgICAgIGlm
IChjdXJyZW50VmFsdWUtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIGN1cnJl
bnRWYWx1ZS0+aVZhbHVlICE9ICcsJykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgdiA9IGFyZ3MtPm5leHQoKTsKLSAgICAgICAgaWYgKCF2YWxpZFVuaXQodiwgRk51bWJlciwg
Q1NTU3RyaWN0TW9kZSkpCisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGFyZ3MtPm5leHQoKTsKKyAg
ICAgICAgaWYgKCF2YWxpZFVuaXQoY3VycmVudFZhbHVlLCBGTnVtYmVyLCBDU1NTdHJpY3RNb2Rl
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29sb3JBcnJheVszXSA9IHN0
ZDo6bWF4PGRvdWJsZT4oMCwgc3RkOjptaW48ZG91YmxlPigxLCBwYXJzZWREb3VibGUodiwgUmVs
ZWFzZVBhcnNlZENhbGNWYWx1ZSkpKTsKKyAgICAgICAgY29sb3JBcnJheVszXSA9IHN0ZDo6bWF4
PGRvdWJsZT4oMCwgc3RkOjptaW48ZG91YmxlPigxLCBwYXJzZWREb3VibGUoKmN1cnJlbnRWYWx1
ZSwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSkpKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC03MzYyLDEwICs3MzYzLDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZsZXgoQ1NTUGFy
c2VyVmFsdWVMaXN0KiBhcmdzLCBib29sIGltcG9ydGFudCkKICAgICB3aGlsZSAoQ1NTUGFyc2Vy
VmFsdWUqIGFyZyA9IGFyZ3MtPmN1cnJlbnQoKSkgewogICAgICAgICBpZiAodmFsaWRVbml0KGFy
ZywgRk51bWJlciB8IEZOb25OZWcpKSB7CiAgICAgICAgICAgICBpZiAoZmxleEdyb3cgPT0gdW5z
ZXRWYWx1ZSkKLSAgICAgICAgICAgICAgICBmbGV4R3JvdyA9IGFyZy0+ZlZhbHVlOworICAgICAg
ICAgICAgICAgIGZsZXhHcm93ID0gcGFyc2VkRG91YmxlKCphcmcsIFJlbGVhc2VQYXJzZWRDYWxj
VmFsdWUpOwogICAgICAgICAgICAgZWxzZSBpZiAoZmxleFNocmluayA9PSB1bnNldFZhbHVlKQot
ICAgICAgICAgICAgICAgIGZsZXhTaHJpbmsgPSBhcmctPmZWYWx1ZTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKCFhcmctPmZWYWx1ZSkgeworICAgICAgICAgICAgICAgIGZsZXhTaHJpbmsgPSBwYXJz
ZWREb3VibGUoKmFyZywgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSk7CisgICAgICAgICAgICBlbHNl
IGlmICghcGFyc2VkRG91YmxlKCphcmcsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gZmxleCBvbmx5IGFsbG93cyBhIGJhc2lzIG9mIDAgKHNhbnMgdW5pdHMp
IGlmIGZsZXgtZ3JvdyBhbmQgZmxleC1zaHJpbmsgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuIHNl
dC4KICAgICAgICAgICAgICAgICBmbGV4QmFzaXMgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1
ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICAgICAgICAgIH0gZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggYTJhNDUwZjZjNjlmNzQ4MDNkZTg3OGU3M2NkZjg1OGYy
Yzk4NDFhYi4uNThjNjUxYmE4YjRkYjg4MTU2OTE1MmQwMmJhNDZlZjRjY2NjNjIzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaApAQCAtNjIzLDggKzYyMyw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2
YWxpZFVuaXQoQ1NTUGFyc2VyVmFsdWUqLCBVbml0cywgQ1NTUGFyc2VyTW9kZSwgUmVsZWFzZVBh
cnNlZENhbGNWYWx1ZUNvbmRpdGlvbiByZWxlYXNlQ2FsYyA9IERvTm90UmVsZWFzZVBhcnNlZENh
bGNWYWx1ZSk7CiAKICAgICBib29sIHBhcnNlQm9yZGVySW1hZ2VRdWFkKFVuaXRzLCBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+Jik7Ci0gICAgaW50IGNvbG9ySW50RnJvbVZhbHVlKENTU1BhcnNl
clZhbHVlKik7Ci0gICAgZG91YmxlIHBhcnNlZERvdWJsZShDU1NQYXJzZXJWYWx1ZSosIFJlbGVh
c2VQYXJzZWRDYWxjVmFsdWVDb25kaXRpb24gcmVsZWFzZUNhbGMgPSBEb05vdFJlbGVhc2VQYXJz
ZWRDYWxjVmFsdWUpOworICAgIGludCBjb2xvckludEZyb21WYWx1ZShDU1NQYXJzZXJWYWx1ZSYp
OworICAgIGRvdWJsZSBwYXJzZWREb3VibGUoQ1NTUGFyc2VyVmFsdWUmLCBSZWxlYXNlUGFyc2Vk
Q2FsY1ZhbHVlQ29uZGl0aW9uIHJlbGVhc2VDYWxjID0gRG9Ob3RSZWxlYXNlUGFyc2VkQ2FsY1Zh
bHVlKTsKICAgICAKICAgICBmcmllbmQgY2xhc3MgVHJhbnNmb3JtT3BlcmF0aW9uSW5mbzsKICAg
ICBmcmllbmQgY2xhc3MgRmlsdGVyT3BlcmF0aW9uSW5mbzsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZWY5MWIzNjU0N2U0
OTY5M2Y3ZDlkMjQwYjYyYTJiODM4Nzk2N2Q4Li40OGExNTU2NzhjMTMwMWRmZDdiZjgzMzczOGYw
ODZiYmRhMjRkMmM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMTItMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBDcmFzaCB3aGVuIHNldHRpbmcgJ2Zs
ZXgnIENTUyBwcm9wZXJ0eSB0byAnY2FsYygyICogMykgY2FsYygyICogMyknCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkxNjIKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgZm9yIGNh
bGN1bGF0ZWQgdmFsdWUgc3VwcG9ydCBmb3IgJ2ZsZXgnIENTUyBwcm9wZXJ0eS4KKworICAgICAg
ICAqIGZhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS5odG1sOiBBZGRlZC4KKwog
MjAxNC0xMi0wMiAgU3lsdmFpbiBHYWxpbmVhdSAgPGdhbGluZWF1QGFkb2JlLmNvbT4KIAogICAg
IE1pc3Npbmcgc3VwcG9ydCBmb3IgaW5uZXJIVE1MIG9uIFNWR0VsZW1lbnQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mbGV4LWNhbGN1bGF0ZWQtdmFsdWUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIzZDIxMjk2OTk4MGEzNTY4NGY5ODhiMjQ5NmM1ZmNhNjEzYmJhMDcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mbGV4LWNhbGN1bGF0ZWQtdmFs
dWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Rlc3RzIGFzc2lnbmluZyBhIGNhbGN1
bGF0ZWQgdmFsdWVzIHRvICdmbGV4JyBDU1MgcHJvcGVydHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHRlc3REaXYuc3R5bGVbJ2ZsZXgnXSBpcyAiIgordGVzdERpdi5z
dHlsZVsnZmxleCddID0gJ2NhbGMoMiAqIDMpIGNhbGMoMiAqIDMpJworUEFTUyB0ZXN0RGl2LnN0
eWxlWydmbGV4J10gaXMgIjYgNiAwcHgiCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRl
c3REaXYpLmdldFByb3BlcnR5VmFsdWUoJ2ZsZXgnKSBpcyAiNiA2IDBweCIKK3Rlc3REaXYuc3R5
bGVbJ2ZsZXgnXSA9ICdjYWxjKDIgKiAzKSBjYWxjKDIgKiAzKSBjYWxjKDEwJSAqIDIpJworUEFT
UyB0ZXN0RGl2LnN0eWxlWydmbGV4J10gaXMgIjYgNiBjYWxjKDIwJSkiCitQQVNTIHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKHRlc3REaXYpLmdldFByb3BlcnR5VmFsdWUoJ2ZsZXgnKSBpcyAiNiA2
IDIwJSIKK3Rlc3REaXYuc3R5bGVbJ2ZsZXgnXSA9ICdjYWxjKDIgKiAzKSBjYWxjKDIgKiAzKSBj
YWxjKDMgLSAzKScKK1BBU1MgdGVzdERpdi5zdHlsZVsnZmxleCddIGlzICI2IDYgMHB4IgorUEFT
UyB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RGl2KS5nZXRQcm9wZXJ0eVZhbHVlKCdmbGV4
JykgaXMgIjYgNiAwcHgiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmxleC1jYWxjdWxh
dGVkLXZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mbGV4LWNhbGN1bGF0ZWQtdmFs
dWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYThkYjk4ODc2MmRhM2EyNTcxNmI3NjQ5YWJjN2Q4MmQ5OTcw
ZjAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmxleC1jYWxjdWxh
dGVkLXZhbHVlLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PGRpdiBpZD0idGVzdERpdiI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIGFz
c2lnbmluZyBhIGNhbGN1bGF0ZWQgdmFsdWVzIHRvICdmbGV4JyBDU1MgcHJvcGVydHkuIik7CisK
K3ZhciB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3REaXYiKTsKKworc2hv
dWxkQmVFbXB0eVN0cmluZygidGVzdERpdi5zdHlsZVsnZmxleCddIik7CitldmFsQW5kTG9nKCJ0
ZXN0RGl2LnN0eWxlWydmbGV4J10gPSAnY2FsYygyICogMykgY2FsYygyICogMyknIik7CitzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInRlc3REaXYuc3R5bGVbJ2ZsZXgnXSIsICI2IDYgMHB4Iik7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3REaXYpLmdl
dFByb3BlcnR5VmFsdWUoJ2ZsZXgnKSIsICI2IDYgMHB4Iik7CisKK2V2YWxBbmRMb2coInRlc3RE
aXYuc3R5bGVbJ2ZsZXgnXSA9ICdjYWxjKDIgKiAzKSBjYWxjKDIgKiAzKSBjYWxjKDEwJSAqIDIp
JyIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ0ZXN0RGl2LnN0eWxlWydmbGV4J10iLCAiNiA2
IGNhbGMoMjAlKSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXN0RGl2KS5nZXRQcm9wZXJ0eVZhbHVlKCdmbGV4JykiLCAiNiA2IDIwJSIpOworCitl
dmFsQW5kTG9nKCJ0ZXN0RGl2LnN0eWxlWydmbGV4J10gPSAnY2FsYygyICogMykgY2FsYygyICog
MykgY2FsYygzIC0gMyknIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInRlc3REaXYuc3R5bGVb
J2ZsZXgnXSIsICI2IDYgMHB4Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKHRlc3REaXYpLmdldFByb3BlcnR5VmFsdWUoJ2ZsZXgnKSIsICI2IDYgMHB4
Iik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242429</attachid>
            <date>2014-12-02 10:57:00 -0800</date>
            <delta_ts>2014-12-02 11:15:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139162-20141202105733.patch</filename>
            <type>text/plain</type>
            <size>19108</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2NjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y3MGQwNzQ2ZGIwMDJh
ODIwMTRkMjkzNDE0YWQxOWQwODk3MmQ3Zi4uYWE3YTc4YjM5OGMzYmVjOTY0Mjk4YTM0OWUwYzA4
OTY3MThiNzZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDE0LTEyLTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQ3Jhc2ggd2hlbiBzZXR0aW5n
ICdmbGV4JyBDU1MgcHJvcGVydHkgdG8gJ2NhbGMoMiAqIDMpIGNhbGMoMiAqIDMpJworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5MTYyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNh
bGN1bGF0ZWQgdmFsdWVzIGluICdmbGV4JyBDU1MgcHJvcGVydHkuCisgICAgICAgIFByZXZpb3Vz
bHksIHRob3NlIGRpZCBub3Qgd29yayBpbiByZWxlYXNlIGJ1aWxkcywgYW5kIHdlcmUgaGl0dGlu
ZworICAgICAgICBhbiBhc3NlcnRpb24gaW4gZGVidWcgYnVpbGRzLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6dmFsaWRDYWxjdWxhdGlv
blVuaXQpOgorICAgICAgICBEbyBub3QgY2FsbCBSZWZQdHI6OnJlbGVhc2UoKSBhcyB3ZSBhcmUg
bm90IGludGVyZXN0ZWQgaW4gdGhlIHJldHVybgorICAgICAgICB2YWx1ZS4gQXNzaWduIG51bGxw
dHIgdG8gdGhlIG1lbWJlciBpbnN0ZWFkLgorCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxQb3Np
dGlvbkNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VGb250V2VpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VkRG91
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y29sb3JJbnRGcm9tVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yUGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlSFNMUGFyYW1ldGVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmxleCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorCisyMDE0LTEyLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAg
ICAgQ3Jhc2ggd2hlbiBzZXR0aW5nICdjb2x1bW4tc3BhbicgQ1NTIHByb3BlcnR5IHRvICdjYWxj
KDIgKiAzKScKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzOTE3MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGNmOTQyMDdmNzQ2ODA2MDk3
M2FjNTRmOGU3MTYyOTcxM2VjMGIxODUuLmFjN2YxYmQ2YThhYjIxOWIwNDg2ODA3YzA5ZGU2YTMw
MmYxMDUzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xNjI0LDcgKzE2MjQsNyBA
QCBib29sIENTU1BhcnNlcjo6dmFsaWRDYWxjdWxhdGlvblVuaXQoQ1NTUGFyc2VyVmFsdWUqIHZh
bHVlLCBVbml0cyB1bml0ZmxhZ3MsIFJlbAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYg
KCFiIHx8IHJlbGVhc2VDYWxjID09IFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpCi0gICAgICAgIG1f
cGFyc2VkQ2FsY3VsYXRpb24ucmVsZWFzZSgpOworICAgICAgICBtX3BhcnNlZENhbGN1bGF0aW9u
ID0gbnVsbHB0cjsKICAgICByZXR1cm4gYjsgICAgCiB9CiAKQEAgLTI1MDQsNyArMjUwNCw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5T3JkZXI6CiAgICAgICAgIGlmICh2YWxpZFVu
aXQodmFsdWUsIEZJbnRlZ2VyLCBDU1NTdHJpY3RNb2RlKSkgewogICAgICAgICAgICAgLy8gV2Ug
cmVzdHJpY3QgdGhlIHNtYWxsZXN0IHZhbHVlIHRvIGludCBtaW4gKyAyIGJlY2F1c2Ugd2UgdXNl
IGludCBtaW4gYW5kIGludCBtaW4gKyAxIGFzIHNwZWNpYWwgdmFsdWVzIGluIGEgaGFzaCBzZXQu
Ci0gICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gc3RkOjptYXg8ZG91YmxlPihzdGQ6Om51bWVy
aWNfbGltaXRzPGludD46Om1pbigpICsgMiwgcGFyc2VkRG91YmxlKHZhbHVlLCBSZWxlYXNlUGFy
c2VkQ2FsY1ZhbHVlKSk7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gc3RkOjptYXg8ZG91
YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpICsgMiwgcGFyc2VkRG91YmxlKCp2
YWx1ZSwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSkpOwogICAgICAgICAgICAgcGFyc2VkVmFsdWUg
PSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShyZXN1bHQsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKTsKICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgIH0K
QEAgLTI3MjAsNyArMjcyMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sdW1u
U3BhbjogLy8gbm9uZSB8IGFsbCB8IDEgKHdpbGwgYmUgZHJvcHBlZCBpbiB0aGUgdW5wcmVmaXhl
ZCBwcm9wZXJ0eSkKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQWxsIHx8IGlkID09IENTU1Zh
bHVlTm9uZSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKLSAgICAgICAgZWxz
ZSBpZiAodmFsaWRVbml0KHZhbHVlLCBGTnVtYmVyIHwgRk5vbk5lZykgJiYgcGFyc2VkRG91Ymxl
KHZhbHVlLCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKSA9PSAxKSB7CisgICAgICAgIGVsc2UgaWYg
KHZhbGlkVW5pdCh2YWx1ZSwgRk51bWJlciB8IEZOb25OZWcpICYmIHBhcnNlZERvdWJsZSgqdmFs
dWUsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpID09IDEpIHsKICAgICAgICAgICAgIGFkZFByb3Bl
cnR5KENTU1Byb3BlcnR5Q29sdW1uU3BhbiwgY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoMSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI3MzAsNyArMjczMCw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAvLyBBbHdheXMgcGFyc2UgdGhpcyBwcm9wZXJ0eSBpbiBzdHJpY3QgbW9kZSwgc2luY2Ug
aXQgd291bGQgYmUgYW1iaWd1b3VzIG90aGVyd2lzZSB3aGVuIHVzZWQgaW4gdGhlICdjb2x1bW5z
JyBzaG9ydGhhbmQgcHJvcGVydHkuCi0gICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlk
VW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIENTU1N0cmljdE1vZGUpICYmIHBhcnNlZERv
dWJsZSh2YWx1ZSk7CisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlkVW5pdCh2YWx1
ZSwgRkxlbmd0aCB8IEZOb25OZWcsIENTU1N0cmljdE1vZGUpICYmIHBhcnNlZERvdWJsZSgqdmFs
dWUpOwogICAgICAgICAgICAgaWYgKCF2YWxpZFByaW1pdGl2ZSkKICAgICAgICAgICAgICAgICBt
X3BhcnNlZENhbGN1bGF0aW9uLmNsZWFyKCk7CiAgICAgICAgIH0KQEAgLTQwMDIsNyArNDAwMiw3
IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsUG9z
aXRpb25Db21wb25lbnQoQ1NTUGFyc2VyVmFsCiAgICAgICAgIGludCBwZXJjZW50ID0gMDsKICAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlTGVmdCB8fCBpZCA9PSBDU1NWYWx1ZVJpZ2h0KSB7CiAg
ICAgICAgICAgICBpZiAoY3VtdWxhdGl2ZUZsYWdzICYgWEZpbGxQb3NpdGlvbikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgICAgIGN1bXVsYXRpdmVGbGFncyB8PSBYRmlsbFBvc2l0aW9uOwogICAgICAgICAgICAgaW5k
aXZpZHVhbEZsYWcgPSBYRmlsbFBvc2l0aW9uOwogICAgICAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlUmlnaHQpCkBAIC00MDEwLDcgKzQwMTAsNyBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFBvc2l0aW9uQ29tcG9uZW50KENTU1BhcnNlclZhbAog
ICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlVG9wIHx8IGlkID09IENT
U1ZhbHVlQm90dG9tKSB7CiAgICAgICAgICAgICBpZiAoY3VtdWxhdGl2ZUZsYWdzICYgWUZpbGxQ
b3NpdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGN1bXVsYXRpdmVGbGFncyB8PSBZRmlsbFBvc2l0aW9u
OwogICAgICAgICAgICAgaW5kaXZpZHVhbEZsYWcgPSBZRmlsbFBvc2l0aW9uOwogICAgICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlQm90dG9tKQpAQCAtNDAzNiwxMiArNDAzNiwxMiBAQCBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFBvc2l0aW9uQ29t
cG9uZW50KENTU1BhcnNlclZhbAogICAgICAgICAgICAgaW5kaXZpZHVhbEZsYWcgPSBZRmlsbFBv
c2l0aW9uOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKG1fcGFyc2VkQ2FsY3Vs
YXRpb24pCi0gICAgICAgICAgICAgICAgbV9wYXJzZWRDYWxjdWxhdGlvbi5yZWxlYXNlKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBtX3BhcnNlZENhbGN1bGF0aW9u
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUodmFsdWVMaXN0LT5jdXJyZW50
KCkpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogc3Rh
dGljIGJvb2wgaXNWYWx1ZUNvbmZsaWN0aW5nV2l0aEN1cnJlbnRFZGdlKGludCB2YWx1ZTEsIGlu
dCB2YWx1ZTIpCkBAIC00NjgyLDE1ICs0NjgyLDE2IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRy
YW5zZm9ybU9yaWdpblNob3J0aGFuZChSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTEsIFJlZlB0cjxD
CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShD
U1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3VibGUmIHJlc3VsdCkKIHsKLSAgICBDU1NQYXJz
ZXJWYWx1ZSogdiA9IGFyZ3MtPmN1cnJlbnQoKTsKLSAgICBpZiAoIXZhbGlkVW5pdCh2LCBGTnVt
YmVyKSkKKyAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBhcmdzLT5jdXJyZW50KCk7CisgICAg
aWYgKCF2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmVzdWx0ID0gcGFyc2VkRG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpOwotICAg
IHYgPSBhcmdzLT5uZXh0KCk7Ci0gICAgaWYgKCF2KQorICAgIHJlc3VsdCA9IHBhcnNlZERvdWJs
ZSgqdmFsdWUsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpOworICAgIHZhbHVlID0gYXJncy0+bmV4
dCgpOworICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgLy8gVGhlIGxhc3QgbnVtYmVyIGluIHRo
ZSBmdW5jdGlvbiBoYXMgbm8gY29tbWEgYWZ0ZXIgaXQsIHNvIHdlJ3JlIGRvbmUuCiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmICghaXNDb21tYSh2KSkKKyAgICB9CisgICAgaWYgKCFpc0Nv
bW1hKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGFyZ3MtPm5leHQoKTsKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTY0NDgsMTIgKzY0NDksMTIgQEAgc3RhdGljIENTU1ZhbHVlSUQg
Y3JlYXRlRm9udFdlaWdodFZhbHVlS2V5d29yZChpbnQgd2VpZ2h0KQogCiBib29sIENTU1BhcnNl
cjo6cGFyc2VGb250V2VpZ2h0KGJvb2wgaW1wb3J0YW50KQogewotICAgIENTU1BhcnNlclZhbHVl
KiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgaWYgKCh2YWx1ZS0+aWQgPj0g
Q1NTVmFsdWVOb3JtYWwpICYmICh2YWx1ZS0+aWQgPD0gQ1NTVmFsdWU5MDApKSB7Ci0gICAgICAg
IGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKHZhbHVlLT5pZCksIGltcG9ydGFudCk7CisgICAgQ1NTUGFyc2VyVmFs
dWUmIHZhbHVlID0gKm1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CisgICAgaWYgKCh2YWx1ZS5pZCA+
PSBDU1NWYWx1ZU5vcm1hbCkgJiYgKHZhbHVlLmlkIDw9IENTU1ZhbHVlOTAwKSkgeworICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGNzc1ZhbHVlUG9vbCgpLmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZSh2YWx1ZS5pZCksIGltcG9ydGFudCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSAgICBpZiAodmFsaWRVbml0KHZhbHVlLCBGSW50ZWdlciB8IEZOb25OZWcs
IENTU1F1aXJrc01vZGUpKSB7CisgICAgaWYgKHZhbGlkVW5pdCgmdmFsdWUsIEZJbnRlZ2VyIHwg
Rk5vbk5lZywgQ1NTUXVpcmtzTW9kZSkpIHsKICAgICAgICAgaW50IHdlaWdodCA9IHN0YXRpY19j
YXN0PGludD4ocGFyc2VkRG91YmxlKHZhbHVlLCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKSk7CiAg
ICAgICAgIGlmICghKHdlaWdodCAlIDEwMCkgJiYgd2VpZ2h0ID49IDEwMCAmJiB3ZWlnaHQgPD0g
OTAwKSB7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGNz
c1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShjcmVhdGVGb250V2VpZ2h0VmFsdWVL
ZXl3b3JkKHdlaWdodCkpLCBpbXBvcnRhbnQpOwpAQCAtNjk0OSwxMSArNjk1MCwxMSBAQCBib29s
IENTU1BhcnNlcjo6ZmFzdFBhcnNlQ29sb3IoUkdCQTMyJiByZ2IsIGNvbnN0IFN0cmluZ1R5cGUm
IG5hbWUsIGJvb2wgc3RyaWN0KQogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLWlubGluZSBk
b3VibGUgQ1NTUGFyc2VyOjpwYXJzZWREb3VibGUoQ1NTUGFyc2VyVmFsdWUgKnYsIFJlbGVhc2VQ
YXJzZWRDYWxjVmFsdWVDb25kaXRpb24gcmVsZWFzZUNhbGMpCitpbmxpbmUgZG91YmxlIENTU1Bh
cnNlcjo6cGFyc2VkRG91YmxlKENTU1BhcnNlclZhbHVlJiB2YWx1ZSwgUmVsZWFzZVBhcnNlZENh
bGNWYWx1ZUNvbmRpdGlvbiByZWxlYXNlQ2FsYykKIHsKLSAgICBjb25zdCBkb3VibGUgcmVzdWx0
ID0gbV9wYXJzZWRDYWxjdWxhdGlvbiA/IG1fcGFyc2VkQ2FsY3VsYXRpb24tPmRvdWJsZVZhbHVl
KCkgOiB2LT5mVmFsdWU7CisgICAgZG91YmxlIHJlc3VsdCA9IG1fcGFyc2VkQ2FsY3VsYXRpb24g
PyBtX3BhcnNlZENhbGN1bGF0aW9uLT5kb3VibGVWYWx1ZSgpIDogdmFsdWUuZlZhbHVlOwogICAg
IGlmIChyZWxlYXNlQ2FsYyA9PSBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKQotICAgICAgICBtX3Bh
cnNlZENhbGN1bGF0aW9uLnJlbGVhc2UoKTsKKyAgICAgICAgbV9wYXJzZWRDYWxjdWxhdGlvbiA9
IG51bGxwdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNjk2Niw2NiArNjk2Nyw2NiBA
QCBib29sIENTU1BhcnNlcjo6aXNDYWxjdWxhdGlvbihDU1NQYXJzZXJWYWx1ZSogdmFsdWUpCiAg
ICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS0+ZnVuY3Rpb24tPm5hbWUsICIt
d2Via2l0LW1heCgiKSk7CiB9CiAKLWlubGluZSBpbnQgQ1NTUGFyc2VyOjpjb2xvckludEZyb21W
YWx1ZShDU1NQYXJzZXJWYWx1ZSogdikKK2lubGluZSBpbnQgQ1NTUGFyc2VyOjpjb2xvckludEZy
b21WYWx1ZShDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYm9vbCBpc1BlcmNlbnQ7CiAg
ICAgCiAgICAgaWYgKG1fcGFyc2VkQ2FsY3VsYXRpb24pCiAgICAgICAgIGlzUGVyY2VudCA9IG1f
cGFyc2VkQ2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgPT0gQ2FsY1BlcmNlbnQ7CiAgICAgZWxzZQot
ICAgICAgICBpc1BlcmNlbnQgPSB2LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRTsKKyAgICAgICAgaXNQZXJjZW50ID0gdmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0U7CiAKLSAgICBjb25zdCBkb3VibGUgdmFsdWUgPSBwYXJzZWRE
b3VibGUodiwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSk7CisgICAgY29uc3QgZG91YmxlIGRvdWJs
ZVZhbHVlID0gcGFyc2VkRG91YmxlKHZhbHVlLCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKTsKICAg
ICAKLSAgICBpZiAodmFsdWUgPD0gMC4wKQorICAgIGlmIChkb3VibGVWYWx1ZSA8PSAwLjApCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGlzUGVyY2VudCkgewotICAgICAgICBpZiAodmFs
dWUgPj0gMTAwLjApCisgICAgICAgIGlmIChkb3VibGVWYWx1ZSA+PSAxMDAuMCkKICAgICAgICAg
ICAgIHJldHVybiAyNTU7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlICog
MjU2LjAgLyAxMDAuMCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGRvdWJsZVZh
bHVlICogMjU2LjAgLyAxMDAuMCk7CiAgICAgfQogCi0gICAgaWYgKHZhbHVlID49IDI1NS4wKQor
ICAgIGlmIChkb3VibGVWYWx1ZSA+PSAyNTUuMCkKICAgICAgICAgcmV0dXJuIDI1NTsKIAotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50Pihkb3VibGVWYWx1ZSk7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yUGFyYW1l
dGVycyhDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIGludCogY29sb3JBcnJheSwgYm9vbCBwYXJzZUFs
cGhhKQogewogICAgIENTU1BhcnNlclZhbHVlTGlzdCogYXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+
YXJncy5nZXQoKTsKLSAgICBDU1NQYXJzZXJWYWx1ZSogdiA9IGFyZ3MtPmN1cnJlbnQoKTsKKyAg
ICBDU1NQYXJzZXJWYWx1ZSogY3VycmVudFZhbHVlID0gYXJncy0+Y3VycmVudCgpOwogICAgIFVu
aXRzIHVuaXRUeXBlID0gRlVua25vd247CiAgICAgLy8gR2V0IHRoZSBmaXJzdCB2YWx1ZSBhbmQg
aXRzIHR5cGUKLSAgICBpZiAodmFsaWRVbml0KHYsIEZJbnRlZ2VyLCBDU1NTdHJpY3RNb2RlKSkK
KyAgICBpZiAodmFsaWRVbml0KGN1cnJlbnRWYWx1ZSwgRkludGVnZXIsIENTU1N0cmljdE1vZGUp
KQogICAgICAgICB1bml0VHlwZSA9IEZJbnRlZ2VyOwotICAgIGVsc2UgaWYgKHZhbGlkVW5pdCh2
LCBGUGVyY2VudCwgQ1NTU3RyaWN0TW9kZSkpCisgICAgZWxzZSBpZiAodmFsaWRVbml0KGN1cnJl
bnRWYWx1ZSwgRlBlcmNlbnQsIENTU1N0cmljdE1vZGUpKQogICAgICAgICB1bml0VHlwZSA9IEZQ
ZXJjZW50OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGNvbG9y
QXJyYXlbMF0gPSBjb2xvckludEZyb21WYWx1ZSh2KTsKKyAgICBjb2xvckFycmF5WzBdID0gY29s
b3JJbnRGcm9tVmFsdWUoKmN1cnJlbnRWYWx1ZSk7CiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAz
OyBpKyspIHsKLSAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsKLSAgICAgICAgaWYgKHYtPnVuaXQg
IT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHYtPmlWYWx1ZSAhPSAnLCcpCisgICAgICAg
IGN1cnJlbnRWYWx1ZSA9IGFyZ3MtPm5leHQoKTsKKyAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZS0+
dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgY3VycmVudFZhbHVlLT5pVmFsdWUg
IT0gJywnKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2ID0gYXJncy0+bmV4
dCgpOwotICAgICAgICBpZiAoIXZhbGlkVW5pdCh2LCB1bml0VHlwZSwgQ1NTU3RyaWN0TW9kZSkp
CisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGFyZ3MtPm5leHQoKTsKKyAgICAgICAgaWYgKCF2YWxp
ZFVuaXQoY3VycmVudFZhbHVlLCB1bml0VHlwZSwgQ1NTU3RyaWN0TW9kZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbG9yQXJyYXlbaV0gPSBjb2xvckludEZyb21WYWx1
ZSh2KTsKKyAgICAgICAgY29sb3JBcnJheVtpXSA9IGNvbG9ySW50RnJvbVZhbHVlKCpjdXJyZW50
VmFsdWUpOwogICAgIH0KICAgICBpZiAocGFyc2VBbHBoYSkgewotICAgICAgICB2ID0gYXJncy0+
bmV4dCgpOwotICAgICAgICBpZiAodi0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3Ig
JiYgdi0+aVZhbHVlICE9ICcsJykKKyAgICAgICAgY3VycmVudFZhbHVlID0gYXJncy0+bmV4dCgp
OworICAgICAgICBpZiAoY3VycmVudFZhbHVlLT51bml0ICE9IENTU1BhcnNlclZhbHVlOjpPcGVy
YXRvciAmJiBjdXJyZW50VmFsdWUtPmlWYWx1ZSAhPSAnLCcpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHYgPSBhcmdzLT5uZXh0KCk7Ci0gICAgICAgIGlmICghdmFsaWRVbml0
KHYsIEZOdW1iZXIsIENTU1N0cmljdE1vZGUpKQorICAgICAgICBjdXJyZW50VmFsdWUgPSBhcmdz
LT5uZXh0KCk7CisgICAgICAgIGlmICghdmFsaWRVbml0KGN1cnJlbnRWYWx1ZSwgRk51bWJlciwg
Q1NTU3RyaWN0TW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNvbnN0
IGRvdWJsZSB2YWx1ZSA9IHBhcnNlZERvdWJsZSh2LCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKTsK
KyAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gcGFyc2VkRG91YmxlKCpjdXJyZW50VmFsdWUs
IFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpOwogICAgICAgICAvLyBDb252ZXJ0IHRoZSBmbG9hdGlu
ZyBwb2ludGVyIG51bWJlciBvZiBhbHBoYSB0byBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCwg
MjU2KSwKICAgICAgICAgLy8gd2l0aCBhbiBlcXVhbCBkaXN0cmlidXRpb24gYWNyb3NzIGFsbCAy
NTYgdmFsdWVzLgotICAgICAgICBjb2xvckFycmF5WzNdID0gc3RhdGljX2Nhc3Q8aW50PihzdGQ6
Om1heDxkb3VibGU+KDAsIHN0ZDo6bWluPGRvdWJsZT4oMSwgdmFsdWUpKSAqIG5leHRhZnRlcigy
NTYuMCwgMC4wKSk7CisgICAgICAgIGNvbG9yQXJyYXlbM10gPSBzdGF0aWNfY2FzdDxpbnQ+KHN0
ZDo6bWF4PGRvdWJsZT4oMCwgc3RkOjptaW48ZG91YmxlPigxLCBkb3VibGVWYWx1ZSkpICogbmV4
dGFmdGVyKDI1Ni4wLCAwLjApKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC03MDM4
LDI5ICs3MDM5LDI5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yUGFyYW1ldGVycyhDU1NQ
YXJzZXJWYWx1ZSogdmFsdWUsIGludCogY29sb3JBcnJheSwgYm9vCiBib29sIENTU1BhcnNlcjo6
cGFyc2VIU0xQYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlKiB2YWx1ZSwgZG91YmxlKiBjb2xvckFy
cmF5LCBib29sIHBhcnNlQWxwaGEpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0g
dmFsdWUtPmZ1bmN0aW9uLT5hcmdzLmdldCgpOwotICAgIENTU1BhcnNlclZhbHVlKiB2ID0gYXJn
cy0+Y3VycmVudCgpOworICAgIENTU1BhcnNlclZhbHVlKiBjdXJyZW50VmFsdWUgPSBhcmdzLT5j
dXJyZW50KCk7CiAgICAgLy8gR2V0IHRoZSBmaXJzdCB2YWx1ZQotICAgIGlmICghdmFsaWRVbml0
KHYsIEZOdW1iZXIsIENTU1N0cmljdE1vZGUpKQorICAgIGlmICghdmFsaWRVbml0KGN1cnJlbnRW
YWx1ZSwgRk51bWJlciwgQ1NTU3RyaWN0TW9kZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAvLyBub3JtYWxpemUgdGhlIEh1ZSB2YWx1ZSBhbmQgY2hhbmdlIGl0IHRvIGJlIGJldHdlZW4g
MCBhbmQgMS4wCi0gICAgY29sb3JBcnJheVswXSA9ICgoKHN0YXRpY19jYXN0PGludD4ocGFyc2Vk
RG91YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSAlIDM2MCkgKyAzNjApICUgMzYwKSAv
IDM2MC4wOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7Ci0gICAgICAgIHYgPSBh
cmdzLT5uZXh0KCk7Ci0gICAgICAgIGlmICh2LT51bml0ICE9IENTU1BhcnNlclZhbHVlOjpPcGVy
YXRvciAmJiB2LT5pVmFsdWUgIT0gJywnKQorICAgIGNvbG9yQXJyYXlbMF0gPSAoKChzdGF0aWNf
Y2FzdDxpbnQ+KHBhcnNlZERvdWJsZSgqY3VycmVudFZhbHVlLCBSZWxlYXNlUGFyc2VkQ2FsY1Zh
bHVlKSkgJSAzNjApICsgMzYwKSAlIDM2MCkgLyAzNjAuMDsKKyAgICBmb3IgKGludCBpID0gMTsg
aSA8IDM7ICsraSkgeworICAgICAgICBjdXJyZW50VmFsdWUgPSBhcmdzLT5uZXh0KCk7CisgICAg
ICAgIGlmIChjdXJyZW50VmFsdWUtPnVuaXQgIT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYm
IGN1cnJlbnRWYWx1ZS0+aVZhbHVlICE9ICcsJykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsKLSAgICAgICAgaWYgKCF2YWxpZFVuaXQodiwgRlBl
cmNlbnQsIENTU1N0cmljdE1vZGUpKQorICAgICAgICBjdXJyZW50VmFsdWUgPSBhcmdzLT5uZXh0
KCk7CisgICAgICAgIGlmICghdmFsaWRVbml0KGN1cnJlbnRWYWx1ZSwgRlBlcmNlbnQsIENTU1N0
cmljdE1vZGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb2xvckFycmF5
W2ldID0gc3RkOjptYXg8ZG91YmxlPigwLCBzdGQ6Om1pbjxkb3VibGU+KDEwMCwgcGFyc2VkRG91
YmxlKHYsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpKSkgLyAxMDAuMDsgLy8gbmVlZHMgdG8gYmUg
dmFsdWUgYmV0d2VlbiAwIGFuZCAxLjAKKyAgICAgICAgY29sb3JBcnJheVtpXSA9IHN0ZDo6bWF4
PGRvdWJsZT4oMCwgc3RkOjptaW48ZG91YmxlPigxMDAsIHBhcnNlZERvdWJsZSgqY3VycmVudFZh
bHVlLCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKSkpIC8gMTAwLjA7IC8vIG5lZWRzIHRvIGJlIHZh
bHVlIGJldHdlZW4gMCBhbmQgMS4wCiAgICAgfQogICAgIGlmIChwYXJzZUFscGhhKSB7Ci0gICAg
ICAgIHYgPSBhcmdzLT5uZXh0KCk7Ci0gICAgICAgIGlmICh2LT51bml0ICE9IENTU1BhcnNlclZh
bHVlOjpPcGVyYXRvciAmJiB2LT5pVmFsdWUgIT0gJywnKQorICAgICAgICBjdXJyZW50VmFsdWUg
PSBhcmdzLT5uZXh0KCk7CisgICAgICAgIGlmIChjdXJyZW50VmFsdWUtPnVuaXQgIT0gQ1NTUGFy
c2VyVmFsdWU6Ok9wZXJhdG9yICYmIGN1cnJlbnRWYWx1ZS0+aVZhbHVlICE9ICcsJykKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsKLSAgICAgICAg
aWYgKCF2YWxpZFVuaXQodiwgRk51bWJlciwgQ1NTU3RyaWN0TW9kZSkpCisgICAgICAgIGN1cnJl
bnRWYWx1ZSA9IGFyZ3MtPm5leHQoKTsKKyAgICAgICAgaWYgKCF2YWxpZFVuaXQoY3VycmVudFZh
bHVlLCBGTnVtYmVyLCBDU1NTdHJpY3RNb2RlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgY29sb3JBcnJheVszXSA9IHN0ZDo6bWF4PGRvdWJsZT4oMCwgc3RkOjptaW48ZG91
YmxlPigxLCBwYXJzZWREb3VibGUodiwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSkpKTsKKyAgICAg
ICAgY29sb3JBcnJheVszXSA9IHN0ZDo6bWF4PGRvdWJsZT4oMCwgc3RkOjptaW48ZG91YmxlPigx
LCBwYXJzZWREb3VibGUoKmN1cnJlbnRWYWx1ZSwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZSkpKTsK
ICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC03MzY4LDEwICs3MzY5LDEwIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZUZsZXgoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzLCBib29sIGltcG9y
dGFudCkKICAgICB3aGlsZSAoQ1NTUGFyc2VyVmFsdWUqIGFyZyA9IGFyZ3MtPmN1cnJlbnQoKSkg
ewogICAgICAgICBpZiAodmFsaWRVbml0KGFyZywgRk51bWJlciB8IEZOb25OZWcpKSB7CiAgICAg
ICAgICAgICBpZiAoZmxleEdyb3cgPT0gdW5zZXRWYWx1ZSkKLSAgICAgICAgICAgICAgICBmbGV4
R3JvdyA9IGFyZy0+ZlZhbHVlOworICAgICAgICAgICAgICAgIGZsZXhHcm93ID0gcGFyc2VkRG91
YmxlKCphcmcsIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpOwogICAgICAgICAgICAgZWxzZSBpZiAo
ZmxleFNocmluayA9PSB1bnNldFZhbHVlKQotICAgICAgICAgICAgICAgIGZsZXhTaHJpbmsgPSBh
cmctPmZWYWx1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFhcmctPmZWYWx1ZSkgeworICAgICAg
ICAgICAgICAgIGZsZXhTaHJpbmsgPSBwYXJzZWREb3VibGUoKmFyZywgUmVsZWFzZVBhcnNlZENh
bGNWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmICghcGFyc2VkRG91YmxlKCphcmcsIFJlbGVh
c2VQYXJzZWRDYWxjVmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgLy8gZmxleCBvbmx5IGFsbG93
cyBhIGJhc2lzIG9mIDAgKHNhbnMgdW5pdHMpIGlmIGZsZXgtZ3JvdyBhbmQgZmxleC1zaHJpbmsg
dmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuIHNldC4KICAgICAgICAgICAgICAgICBmbGV4QmFzaXMg
PSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSgwLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggYTJhNDUw
ZjZjNjlmNzQ4MDNkZTg3OGU3M2NkZjg1OGYyYzk4NDFhYi4uNThjNjUxYmE4YjRkYjg4MTU2OTE1
MmQwMmJhNDZlZjRjY2NjNjIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNjIzLDggKzYy
Myw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2YWxpZFVuaXQoQ1NTUGFyc2VyVmFsdWUqLCBVbml0
cywgQ1NTUGFyc2VyTW9kZSwgUmVsZWFzZVBhcnNlZENhbGNWYWx1ZUNvbmRpdGlvbiByZWxlYXNl
Q2FsYyA9IERvTm90UmVsZWFzZVBhcnNlZENhbGNWYWx1ZSk7CiAKICAgICBib29sIHBhcnNlQm9y
ZGVySW1hZ2VRdWFkKFVuaXRzLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+Jik7Ci0gICAgaW50
IGNvbG9ySW50RnJvbVZhbHVlKENTU1BhcnNlclZhbHVlKik7Ci0gICAgZG91YmxlIHBhcnNlZERv
dWJsZShDU1NQYXJzZXJWYWx1ZSosIFJlbGVhc2VQYXJzZWRDYWxjVmFsdWVDb25kaXRpb24gcmVs
ZWFzZUNhbGMgPSBEb05vdFJlbGVhc2VQYXJzZWRDYWxjVmFsdWUpOworICAgIGludCBjb2xvcklu
dEZyb21WYWx1ZShDU1NQYXJzZXJWYWx1ZSYpOworICAgIGRvdWJsZSBwYXJzZWREb3VibGUoQ1NT
UGFyc2VyVmFsdWUmLCBSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlQ29uZGl0aW9uIHJlbGVhc2VDYWxj
ID0gRG9Ob3RSZWxlYXNlUGFyc2VkQ2FsY1ZhbHVlKTsKICAgICAKICAgICBmcmllbmQgY2xhc3Mg
VHJhbnNmb3JtT3BlcmF0aW9uSW5mbzsKICAgICBmcmllbmQgY2xhc3MgRmlsdGVyT3BlcmF0aW9u
SW5mbzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBhMzk2YjQyMjc0NjRmZTgxMzliNmVkNTJkZmU0YTUxZDc3YjcwZGU3Li5j
NzRiZTNhNjBjMWU0ODBjZWJmNjRjZjU5MzNiNTI0YjcyNDA3NGNiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MTcgQEAKIDIwMTQtMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAg
ICAgICBDcmFzaCB3aGVuIHNldHRpbmcgJ2ZsZXgnIENTUyBwcm9wZXJ0eSB0byAnY2FsYygyICog
MykgY2FsYygyICogMyknCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkxNjIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBBZGQgbGF5b3V0IHRlc3QgZm9yIGNhbGN1bGF0ZWQgdmFsdWUgc3VwcG9ydCBmb3IgJ2Zs
ZXgnIENTUyBwcm9wZXJ0eS4KKworICAgICAgICAqIGZhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12
YWx1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZsZXgtY2FsY3Vs
YXRlZC12YWx1ZS5odG1sOiBBZGRlZC4KKworMjAxNC0xMi0wMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCiAgICAgICAgIENyYXNoIHdoZW4gc2V0dGluZyAnY29sdW1uLXNwYW4n
IENTUyBwcm9wZXJ0eSB0byAnY2FsYygyICogMyknCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkxNzAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvZmxleC1jYWxjdWxhdGVkLXZhbHVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjNkMjEyOTY5OTgwYTM1Njg0Zjk4OGIyNDk2YzVmY2E2MTNiYmEwNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxOSBAQAorVGVzdHMgYXNzaWduaW5nIGEgY2FsY3VsYXRlZCB2YWx1ZXMg
dG8gJ2ZsZXgnIENTUyBwcm9wZXJ0eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgdGVzdERpdi5zdHlsZVsnZmxleCddIGlzICIiCit0ZXN0RGl2LnN0eWxlWydmbGV4J10g
PSAnY2FsYygyICogMykgY2FsYygyICogMyknCitQQVNTIHRlc3REaXYuc3R5bGVbJ2ZsZXgnXSBp
cyAiNiA2IDBweCIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdERpdikuZ2V0UHJv
cGVydHlWYWx1ZSgnZmxleCcpIGlzICI2IDYgMHB4IgordGVzdERpdi5zdHlsZVsnZmxleCddID0g
J2NhbGMoMiAqIDMpIGNhbGMoMiAqIDMpIGNhbGMoMTAlICogMiknCitQQVNTIHRlc3REaXYuc3R5
bGVbJ2ZsZXgnXSBpcyAiNiA2IGNhbGMoMjAlKSIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5
bGUodGVzdERpdikuZ2V0UHJvcGVydHlWYWx1ZSgnZmxleCcpIGlzICI2IDYgMjAlIgordGVzdERp
di5zdHlsZVsnZmxleCddID0gJ2NhbGMoMiAqIDMpIGNhbGMoMiAqIDMpIGNhbGMoMyAtIDMpJwor
UEFTUyB0ZXN0RGl2LnN0eWxlWydmbGV4J10gaXMgIjYgNiAwcHgiCitQQVNTIHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKHRlc3REaXYpLmdldFByb3BlcnR5VmFsdWUoJ2ZsZXgnKSBpcyAiNiA2IDBw
eCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mbGV4LWNhbGN1bGF0ZWQtdmFsdWUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZsZXgtY2FsY3VsYXRlZC12YWx1ZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNhOGRiOTg4NzYyZGEzYTI1NzE2Yjc2NDlhYmM3ZDgyZDk5NzBmMDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9mbGV4LWNhbGN1bGF0ZWQtdmFsdWUuaHRt
bApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJ0ZXN0
RGl2Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgYXNzaWduaW5nIGEgY2Fs
Y3VsYXRlZCB2YWx1ZXMgdG8gJ2ZsZXgnIENTUyBwcm9wZXJ0eS4iKTsKKwordmFyIHRlc3REaXYg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdERpdiIpOworCitzaG91bGRCZUVtcHR5U3Ry
aW5nKCJ0ZXN0RGl2LnN0eWxlWydmbGV4J10iKTsKK2V2YWxBbmRMb2coInRlc3REaXYuc3R5bGVb
J2ZsZXgnXSA9ICdjYWxjKDIgKiAzKSBjYWxjKDIgKiAzKSciKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygidGVzdERpdi5zdHlsZVsnZmxleCddIiwgIjYgNiAwcHgiKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdERpdikuZ2V0UHJvcGVydHlWYWx1
ZSgnZmxleCcpIiwgIjYgNiAwcHgiKTsKKworZXZhbEFuZExvZygidGVzdERpdi5zdHlsZVsnZmxl
eCddID0gJ2NhbGMoMiAqIDMpIGNhbGMoMiAqIDMpIGNhbGMoMTAlICogMiknIik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoInRlc3REaXYuc3R5bGVbJ2ZsZXgnXSIsICI2IDYgY2FsYygyMCUpIik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3REaXYp
LmdldFByb3BlcnR5VmFsdWUoJ2ZsZXgnKSIsICI2IDYgMjAlIik7CisKK2V2YWxBbmRMb2coInRl
c3REaXYuc3R5bGVbJ2ZsZXgnXSA9ICdjYWxjKDIgKiAzKSBjYWxjKDIgKiAzKSBjYWxjKDMgLSAz
KSciKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygidGVzdERpdi5zdHlsZVsnZmxleCddIiwgIjYg
NiAwcHgiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUo
dGVzdERpdikuZ2V0UHJvcGVydHlWYWx1ZSgnZmxleCcpIiwgIjYgNiAwcHgiKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>