<?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>149616</bug_id>
          
          <creation_ts>2015-09-29 00:46:07 -0700</creation_ts>
          <short_desc>Introduce SymbolUse optimization into CompareEq and CompareStrictEq</short_desc>
          <delta_ts>2015-10-01 10:21:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=149713</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1129174</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-29 00:46:07 -0700</bug_when>
    <thetext>Introduce SymbolUse optimization into CompareEq and CompareStrictEq</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129176</commentid>
    <comment_count>1</comment_count>
      <attachid>262049</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-29 00:48:15 -0700</bug_when>
    <thetext>Created attachment 262049
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129178</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-29 00:51:12 -0700</bug_when>
    <thetext>Attachment 262049 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1239:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1300:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129182</commentid>
    <comment_count>3</comment_count>
      <attachid>262051</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-29 01:21:55 -0700</bug_when>
    <thetext>Created attachment 262051
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129184</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-29 01:25:19 -0700</bug_when>
    <thetext>Attachment 262051 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1239:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1300:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129203</commentid>
    <comment_count>5</comment_count>
      <attachid>262058</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-29 03:33:06 -0700</bug_when>
    <thetext>Created attachment 262058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129206</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-29 03:35:29 -0700</bug_when>
    <thetext>Attachment 262058 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1239:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1300:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129209</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-29 03:37:49 -0700</bug_when>
    <thetext>And next: https://bugs.webkit.org/show_bug.cgi?id=149622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129359</commentid>
    <comment_count>8</comment_count>
      <attachid>262058</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-29 13:23:30 -0700</bug_when>
    <thetext>Comment on attachment 262058
Patch

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

r=me with comment:

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3984
&gt; +    if (node-&gt;isBinaryUseKind(SymbolUse)) {

Can you include some tests that include testing of peephole optimization?
Both for strict-equality and sloppy-equality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129953</commentid>
    <comment_count>9</comment_count>
      <attachid>262058</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-10-01 09:52:36 -0700</bug_when>
    <thetext>Comment on attachment 262058
Patch

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

Thank you for your review :)

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3984
&gt;&gt; +    if (node-&gt;isBinaryUseKind(SymbolUse)) {
&gt; 
&gt; Can you include some tests that include testing of peephole optimization?
&gt; Both for strict-equality and sloppy-equality.

After investigating the current implementation, I&apos;ve found that compilePeepHoleSymbolEquality, compilePeepHoleObjectStrictEquality, compilePeepHoleBooleanBranch etc. is never executed now (at least, under the current JSC tests)
We have op_jless operation, but don&apos;t have op_jeq operation. So between op_eq and op_jtrue (or op_jfalse), we have MovHint to store the result of op_eq to the register. As a result, detectPeepHoleBranch() never detects the peephole.

compilePeepHoleDoubleBranch is currently called when we use op_jless, op_jgreater etc. But it is also not called when using `==`, and `===` ops.

For now, I added FIXME about this here. And open the bug for that.
https://bugs.webkit.org/show_bug.cgi?id=149713</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129965</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-10-01 10:21:19 -0700</bug_when>
    <thetext>Committed r190414: &lt;http://trac.webkit.org/changeset/190414&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262049</attachid>
            <date>2015-09-29 00:48:15 -0700</date>
            <delta_ts>2015-09-29 01:21:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149616-20150929004748.patch</filename>
            <type>text/plain</type>
            <size>13895</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTg1NzgzMjNjNjZjZmJmNTIxMTk3MmM1NWIyNjk1MDYzOWFjZDQ1Li40N2JhNGU0MTA3MThlMzhh
Zjg1YzEyMDc2YzI5NWEwNjNhYmI5YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNS0wOS0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgU3ltYm9sVXNlIG9wdGltaXphdGlvbiBpbnRvIENv
bXBhcmVFcSBhbmQgQ29tcGFyZVN0cmljdEVxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTaW5jZSBFUzYgU3ltYm9scyBhcmUgdXNlZCBhcyBhbiBlbnVt
IHZhbHVlWzFdIChBbmQgV2ViS2l0IGluc3BlY3RvciBkbyBzbyBmb3IgRXNwcmltYSdzIHR5cGUg
b2Ygbm9kZXMpLAorICAgICAgICBvcHRpbWl6aW5nIGVxdWFsaXR5IGNvbXBhcmlzb24gZm9yIHN5
bWJvbHMgbWFrZXMgbXVjaCBzZW5zZS4KKworICAgICAgICBbMV06IGh0dHA6Ly93d3cuMmFsaXR5
LmNvbS8yMDE0LzEyL2VzNi1zeW1ib2xzLmh0bWwKKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpzaG91bGRTcGVjdWxhdGVTeW1ib2wpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ltYm9sRXF1YWxpdHkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVTeW1ib2xT
dHJpY3RFcXVhbGl0eSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
Q29tcGFyZUVxKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLWVxdWFs
aXR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGVxdWFsKToKKyAg
ICAgICAgKHN0cmljdEVxdWFsKToKKyAgICAgICAgKGxpc3QuZm9yRWFjaC5yZXN1bHQuc2V0IDEp
OgorCiAyMDE1LTA5LTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgZml4IGRlYnVnIHRlc3RzLiBCZWZvcmUgbWFya2luZywgd2UgbmVlZCB0
byBjYWxsIHJlZ2lzdGVyR0NUaHJlYWRzKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDE2Nzdj
NmYxNjRiYzA1ZGI2MzRlNDBjNzBhZTc4M2FkZmUzNDgxNS4uMGI0YTAyMGRiNmFkMmRhMGFmYzk1
NmU5NDU5MDFhNzBhOGE3MzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTE4OCw2ICsxMTg4
LDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1
dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5v
ZGUtPm9wKCkgPT0gQ29tcGFyZUVxICYmIGxlZnRDb25zdC5pc1N5bWJvbCgpICYmIHJpZ2h0Q29u
c3QuaXNTeW1ib2woKSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KGFzU3ltYm9sKGxl
ZnRDb25zdCktPnByaXZhdGVOYW1lKCkgPT0gYXNTeW1ib2wocmlnaHRDb25zdCktPnByaXZhdGVO
YW1lKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDb21wYXJlRXEpIHsKQEAgLTEy
MzEsNiArMTIzNiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlw
ZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAgICAg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSB8fAogICAgICAgICAgICAgICAgIG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpIHx8CiAgICAgICAgICAgICAgICAgbm9kZS0+
aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpIHx8CisgICAgICAgICAgICAgICAgbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8CiAgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE9iamVjdFVzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoT2JqZWN0VXNlLCBPYmplY3RPck90aGVyVXNlKSB8fApAQCAtMTI5MSw2ICsxMjk3LDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSW50NTJSZXBVc2UpIHx8CiAgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKFN0cmluZ1VzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtp
bmQoU3RyaW5nSWRlbnRVc2UpIHx8CisgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFN5bWJvbFVzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQo
T2JqZWN0VXNlKSB8fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNj
VXNlLCBVbnR5cGVkVXNlKSB8fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2lu
ZChVbnR5cGVkVXNlLCBNaXNjVXNlKSB8fApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKaW5kZXggZDVlOWMzZDdmNDllZGZhY2IyOTM2Njk4MmM3NTRiZjQ0MTg1
N2IyMy4uNzkwY2E3NThiMDNmNmUxMzYyMzU3ZGI4MGQ1MjZiNDgyNzY2MjRkNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC00MTEsNiArNDExLDEy
IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gQ29tcGFyZUVxKQogICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVN5bWJvbChub2RlLT5j
aGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZp
eEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+
Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlU3RyaW5nSWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
SWRlbnQoKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2Rl
LT5jaGlsZDIoKSk7CkBAIC00OTMsNiArNDk5LDExIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5j
aGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSwgbm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3lt
Ym9sVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xV
c2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5n
SWRlbnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkg
ewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDIo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDg3NDY4NDYwNWRkYzY0MzU4
YzU5ODMyMGVjYzM1Zjg4MjgyOWM4ZmQuLjY4MTU5YjZiNTc3ZDkwNzAwZjE0MmJjYTg1NmUzZTAz
ZTUyZTUzNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xODY4LDYgKzE4
NjgsMTEgQEAgc3RydWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzU3RyaW5nT3JT
dHJpbmdPYmplY3RTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc1N5bWJvbFNw
ZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3Bl
Y3VsYXRlRmluYWxPYmplY3QoKQogICAgIHsKQEAgLTIwMTMsNiArMjAxOCwxMSBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZU51bWJlck9yQm9vbGVh
bkV4cGVjdGluZ0RlZmluZWQoKQogICAgICAgICAgICAgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVO
dW1iZXJPckJvb2xlYW5FeHBlY3RpbmdEZWZpbmVkKCk7CiAgICAgfQorCisgICAgc3RhdGljIGJv
b2wgc2hvdWxkU3BlY3VsYXRlU3ltYm9sKE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG9wMS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkgJiYgb3AyLT5zaG91bGRT
cGVjdWxhdGVTeW1ib2woKTsKKyAgICB9CiAgICAgCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3Bl
Y3VsYXRlRmluYWxPYmplY3QoTm9kZSogb3AxLCBOb2RlKiBvcDIpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAwOTZmMjVi
MmQzZjdmMDZlYmY2ZTQ0OGYwZDAxOWZiZWFlNjNmOGZhLi4zMjQ1ZjNkZmRiNGYyZjhlNDM1MmZm
OWQyNWQ4NDBlYzEzMGQwNWJiIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTM1Niw2ICsxMzU2LDggQEAgYm9vbCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpS
ZWxhdGlvbmEKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQm9vbGVhblVzZSkpCiAgICAgICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQm9vbGVh
bkJyYW5jaChub2RlLCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkpCisgICAgICAgICAgICAgICAgY29t
cGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZSk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkKICAgICAgICAgICAg
ICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UsIE9iamVj
dE9yT3RoZXJVc2UpKQpAQCAtMzg3OSw2ICszODgxLDExIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24g
Y29uCiAgICAgICAgICAgICBjb21waWxlU3RyaW5nSWRlbnRFcXVhbGl0eShub2RlKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoU3ltYm9sVXNlKSkgeworICAgICAgICAgICAgY29tcGlsZVN5bWJvbEVxdWFs
aXR5KG5vZGUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkpIHsKICAgICAg
ICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlKTsKQEAgLTM5NzMsNiArMzk4MCwyMSBA
QCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAg
ICAgY29tcGlsZURvdWJsZUNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFs
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKworICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoU3ltYm9sVXNlKSkgeworICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxv
Y2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOworICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJs
b2NrICE9IFVJTlRfTUFYKSB7CisgICAgICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9j
ay0+YXQoYnJhbmNoSW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZVN5
bWJvbEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGUpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBt
X2luZGV4SW5CbG9jayA9IGJyYW5jaEluZGV4SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVu
dE5vZGUgPSBicmFuY2hOb2RlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgY29tcGlsZVN5bWJvbEVxdWFsaXR5KG5vZGUpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogICAgIAogICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNl
KSkgewogICAgICAgICBjb21waWxlU3RyaW5nRXF1YWxpdHkobm9kZSk7CkBAIC00MDcwLDYgKzQw
OTIsNTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUq
IG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmEKICAgICB1bmJsZXNzZWRCb29sZWFuUmVz
dWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTeW1ib2xFcXVhbGl0eShOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGxlZnQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJp
Z2h0KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAodGhp
cyk7CisKKyAgICBHUFJSZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgR1BSUmVnIHJpZ2h0
R1BSID0gcmlnaHQuZ3ByKCk7CisgICAgR1BSUmVnIGxlZnRUZW1wR1BSID0gbGVmdFRlbXAuZ3By
KCk7CisKKyAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQxKCksIGxlZnRHUFIpOworICAg
IHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwgcmlnaHRHUFIpOworCisgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhsZWZ0R1BSLCBTeW1ib2w6Om9mZnNldE9m
UHJpdmF0ZU5hbWUoKSksIGxlZnRUZW1wR1BSKTsKKyAgICBtX2ppdC5jb21wYXJlUHRyKE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgbGVmdFRlbXBHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJp
Z2h0R1BSLCBTeW1ib2w6Om9mZnNldE9mUHJpdmF0ZU5hbWUoKSksIGxlZnRUZW1wR1BSKTsKKwor
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQobGVmdFRlbXBHUFIsIG5vZGUpOworfQorCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVTeW1ib2xTdHJpY3RFcXVhbGl0eShOb2Rl
KiBub2RlLCBOb2RlKiBicmFuY2hOb2RlKQoreworICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJh
bmNoTm9kZS0+YnJhbmNoRGF0YSgpLT50YWtlbi5ibG9jazsKKyAgICBCYXNpY0Jsb2NrKiBub3RU
YWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CisKKyAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVt
cG9yYXJ5IGxlZnRUZW1wKHRoaXMpOworCisgICAgR1BSUmVnIGxlZnRHUFIgPSBsZWZ0Lmdwcigp
OworICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0LmdwcigpOworICAgIEdQUlJlZyBsZWZ0VGVt
cEdQUiA9IGxlZnRUZW1wLmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxk
MSgpLCBsZWZ0R1BSKTsKKyAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIHJpZ2h0
R1BSKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobGVmdEdQ
UiwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpLCBsZWZ0VGVtcEdQUik7CisgICAgaWYg
KHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIGxlZnRUZW1wR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhy
aWdodEdQUiwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpLCBub3RUYWtlbik7CisgICAg
ICAgIGp1bXAodGFrZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGxlZnRUZW1wR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyaWdodEdQUiwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpLCB0YWtlbik7CisgICAg
ICAgIGp1bXAobm90VGFrZW4pOworICAgIH0KK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVN0cmluZ0VxdWFsaXR5KAogICAgIE5vZGUqIG5vZGUsIEdQUlJlZyBsZWZ0R1BSLCBHUFJS
ZWcgcmlnaHRHUFIsIEdQUlJlZyBsZW5ndGhHUFIsIEdQUlJlZyBsZWZ0VGVtcEdQUiwKICAgICBH
UFJSZWcgcmlnaHRUZW1wR1BSLCBHUFJSZWcgbGVmdFRlbXAyR1BSLCBHUFJSZWcgcmlnaHRUZW1w
MkdQUiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApp
bmRleCBjOGM2ZmE0YmJkMzU1YzdkMzFhZTdkYTE5YzlmNGJhY2QxZDlhNjIxLi5kZjk0ZjkyODFj
MzYzYWJiNDliZGM4NDQzMDBjNzVkYjk5NTJhMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zMTQsNiArMzE0LDggQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpCiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xV
c2UpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoT2JqZWN0VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKQpAQCAtMzQ0LDYgKzM0Niw4IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkpCiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpKQor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlz
Y1VzZSwgVW50eXBlZFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggMzk4YmE1NzVhZDFiZmQy
OTM2NDM5YjdkYmUwYmIzYzEzNjc1YWZkNi4uZWRlYjdkMjVhNzQ5YjMyNGU0Yzg4YzkyOTRmYmQ0
N2RlNDQ1Nzk5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAKQEAgLTQxOTAsNiArNDE5MCw3IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsK
ICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkKICAg
ICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkKICAgICAgICAg
ICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCisgICAgICAgICAgICB8
fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpCiAgICAgICAgICAgICB8fCBtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBp
bGVDb21wYXJlU3RyaWN0RXEoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQyODIsNiArNDI4
MywxNSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1
YWwobG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgbG93Qm9vbGVhbihtX25vZGUtPmNoaWxk
MigpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJp
Z2h0ID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIGxl
ZnRTdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihsZWZ0LCBtX2hlYXBzLlN5bWJvbF9wcml2YXRl
TmFtZSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHRTdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0
cihyaWdodCwgbV9oZWFwcy5TeW1ib2xfcHJpdmF0ZU5hbWUpOworICAgICAgICAgICAgc2V0Qm9v
bGVhbihtX291dC5lcXVhbChsZWZ0U3RyaW5nSW1wbCwgcmlnaHRTdHJpbmdJbXBsKSk7CisgICAg
ICAgICAgICByZXR1cm5uOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobV9ub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkKICAgICAgICAgICAgIHx8IG1f
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UsIE1pc2NVc2UpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1lcXVhbGl0eS5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLWVxdWFsaXR5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY3NzE2NmJkNTRhMWEyYmU5Mjc1YWM5ZGYzYzIxNjdlZTgyY2NmZDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N5bWJvbC1l
cXVhbGl0eS5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gZXF1YWwoYSwg
YikgeworICAgIHJldHVybiBhID09IGI7Cit9CisKK2Z1bmN0aW9uIHN0cmljdEVxdWFsKGEsIGIp
IHsKKyAgICByZXR1cm4gYSA9PT0gYjsKK30KKwordmFyIHMxID0gU3ltYm9sKCkKK3ZhciBzMiA9
IFN5bWJvbCgpOworCit2YXIgbGlzdCA9IFsKKyAgICBbIFsgczEsIHMxIF0sIHRydWUgXSwKKyAg
ICBbIFsgczIsIHMxIF0sIGZhbHNlIF0sCisgICAgWyBbIHMxLCBzMiBdLCBmYWxzZSBdLAorICAg
IFsgWyBzMiwgczIgXSwgdHJ1ZSBdLAorXTsKKworbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChzZXQp
IHsKKyAgICB2YXIgcGFpciA9ICBzZXRbMF07CisgICAgdmFyIHJlc3VsdCA9IHNldFsxXTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoZXF1
YWwocGFpclswXSwgcGFpclsxXSksIHJlc3VsdCk7CisgICAgICAgIHNob3VsZEJlKHN0cmljdEVx
dWFsKHBhaXJbMF0sIHBhaXJbMV0pLCByZXN1bHQpOworICAgIH0KK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262051</attachid>
            <date>2015-09-29 01:21:55 -0700</date>
            <delta_ts>2015-09-29 03:33:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149616-20150929172131.patch</filename>
            <type>text/plain</type>
            <size>14836</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjQzMTJhNmQ4YTliNGUzNGQ3ZWFlMWU3OWVkYzY0MTA2Y2ZiYjdlLi4wOTIzYTZkMzk3NGVhNTVh
ZDVjMzJiOTg5ZTMxMjQ4YmQxODNkODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNS0wOS0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgU3ltYm9sVXNlIG9wdGltaXphdGlvbiBpbnRvIENv
bXBhcmVFcSBhbmQgQ29tcGFyZVN0cmljdEVxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTaW5jZSBFUzYgU3ltYm9scyBhcmUgdXNlZCBhcyBhbiBlbnVt
IHZhbHVlWzFdIChBbmQgV2ViS2l0IGluc3BlY3RvciBkbyBzbyBmb3IgRXNwcmltYSdzIHR5cGUg
b2Ygbm9kZXMpLAorICAgICAgICBvcHRpbWl6aW5nIGVxdWFsaXR5IGNvbXBhcmlzb24gZm9yIHN5
bWJvbHMgbWFrZXMgbXVjaCBzZW5zZS4KKworICAgICAgICBbMV06IGh0dHA6Ly93d3cuMmFsaXR5
LmNvbS8yMDE0LzEyL2VzNi1zeW1ib2xzLmh0bWwKKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVw
Tm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpzaG91bGRTcGVjdWxhdGVTeW1ib2wpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ltYm9sRXF1YWxpdHkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVTeW1ib2xF
cXVhbGl0eSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZUVxKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZVN0cmljdEVxKToKKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3Mvc3ltYm9sLWVxdWFsaXR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKGVxdWFsKToKKyAgICAgICAgKHN0cmljdEVxdWFsKToKKyAgICAg
ICAgKGxpc3QuZm9yRWFjaC5yZXN1bHQuc2V0IDEpOgorCiAyMDE1LTA5LTI4ICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJz
ZU1lbW9yeUFtb3VudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGQxNjc3YzZmMTY0YmMwNWRiNjM0
ZTQwYzcwYWU3ODNhZGZlMzQ4MTUuLjY5MTgzZjc5ZDEzZWUwMDI0OTVmZWY4MDhhODgxOTBmNzk4
MWQxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTExODgsNiArMTE4OCwxMSBAQAogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENvbXBhcmVFcSAmJiBsZWZ0Q29uc3QuaXNT
eW1ib2woKSAmJiByaWdodENvbnN0LmlzU3ltYm9sKCkpIHsKKyAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc0Jvb2xlYW4oYXNTeW1ib2wobGVmdENvbnN0KS0+cHJpdmF0ZU5hbWUo
KSA9PSBhc1N5bWJvbChyaWdodENvbnN0KS0+cHJpdmF0ZU5hbWUoKSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBDb21wYXJlRXEpIHsKQEAgLTEyMzEsNiArMTIzNiw3IEBACiAgICAg
ICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSB8fAogICAgICAg
ICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpIHx8CiAgICAgICAgICAg
ICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpIHx8CisgICAgICAgICAgICAg
ICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkgfHwKICAgICAgICAgICAgICAgICBu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRlbnRVc2UpIHx8CiAgICAgICAgICAgICAgICAg
bm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkgfHwKICAgICAgICAgICAgICAgICBub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBPYmplY3RPck90aGVyVXNlKSB8fApAQCAtMTI5
MSw2ICsxMjk3LDcgQEAKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50
NTJSZXBVc2UpIHx8CiAgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmlu
Z1VzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nSWRl
bnRVc2UpIHx8CisgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVz
ZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSB8
fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVk
VXNlKSB8fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNl
LCBNaXNjVXNlKSB8fApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggZDVlOWMzZDdmNDllZGZhY2IyOTM2Njk4MmM3NTRiZjQ0MTg1N2IyMy4uNzkwY2E3
NThiMDNmNmUxMzYyMzU3ZGI4MGQ1MjZiNDgyNzY2MjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC00MTEsNiArNDExLDEyIEBAIGNsYXNzIEZp
eHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgIT0gQ29tcGFyZUVxKQogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDEoKS5ub2Rl
KCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFN5
bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9s
VXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+Y2xlYXJGbGFncyhO
b2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRl
bnQoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDIoKSk7
CkBAIC00OTMsNiArNDk5LDExIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8RG91YmxlUmVwVXNlPihub2RlLT5jaGlsZDIoKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgeworICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSAmJiBu
b2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nSWRlbnQoKSkgewogICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8U3RyaW5nSWRlbnRVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDc5NGVmM2QxYWZiZTY5NzlkMDJjMDk4YzdlYWI2
MGE4Y2QwMTViMDMuLmYxYTBlZDExZDk1OTc4YTk5MGEzZDc0Mzg1ZjEzZTY1OWJlMmFlMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xODc2LDYgKzE4NzYsMTEgQEAgc3Ry
dWN0IE5vZGUgewogICAgIHsKICAgICAgICAgcmV0dXJuIGlzU3RyaW5nT3JTdHJpbmdPYmplY3RT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KKworICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlU3ltYm9sKCkKKyAgICB7CisgICAgICAgIHJldHVybiBpc1N5bWJvbFNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24oKSk7CisgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlRmluYWxP
YmplY3QoKQogICAgIHsKQEAgLTIwMjEsNiArMjAyNiwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1bGF0ZU51bWJlck9yQm9vbGVhbkV4cGVjdGluZ0Rl
ZmluZWQoKQogICAgICAgICAgICAgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVOdW1iZXJPckJvb2xl
YW5FeHBlY3RpbmdEZWZpbmVkKCk7CiAgICAgfQorCisgICAgc3RhdGljIGJvb2wgc2hvdWxkU3Bl
Y3VsYXRlU3ltYm9sKE5vZGUqIG9wMSwgTm9kZSogb3AyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wMS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkgJiYgb3AyLT5zaG91bGRTcGVjdWxhdGVTeW1i
b2woKTsKKyAgICB9CiAgICAgCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlRmluYWxP
YmplY3QoTm9kZSogb3AxLCBOb2RlKiBvcDIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAwOTZmMjViMmQzZjdmMDZlYmY2
ZTQ0OGYwZDAxOWZiZWFlNjNmOGZhLi40OTc2NGFmYzk3NWFhNmJjMDQ0MWQ1MjNmM2M5MWJjMjBj
NjUzOGRlIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcApAQCAtMTM1Niw2ICsxMzU2LDggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVBlZXBIb2xlQnJhbmNoKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmEKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVh
blVzZSkpCiAgICAgICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlQm9vbGVhbkJyYW5jaChub2Rl
LCBicmFuY2hOb2RlLCBjb25kaXRpb24pOworICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkpCisgICAgICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xl
U3ltYm9sRXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZSk7CiAgICAgICAgICAgICBlbHNlIGlmIChu
b2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkKICAgICAgICAgICAgICAgICBjb21waWxl
UGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RVc2UsIE9iamVjdE9yT3RoZXJVc2Up
KQpAQCAtMzg3OSw2ICszODgxLDExIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9k
ZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uCiAgICAgICAg
ICAgICBjb21waWxlU3RyaW5nSWRlbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQo
U3ltYm9sVXNlKSkgeworICAgICAgICAgICAgY29tcGlsZVN5bWJvbEVxdWFsaXR5KG5vZGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBp
bGVPYmplY3RFcXVhbGl0eShub2RlKTsKQEAgLTM5NzMsNiArMzk4MCwyMSBAQCBib29sIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZURv
dWJsZUNvbXBhcmUobm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUVxdWFsKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3lt
Ym9sVXNlKSkgeworICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQ
ZWVwSG9sZUJyYW5jaCgpOworICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRf
TUFYKSB7CisgICAgICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNo
SW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZVN5bWJvbEVxdWFsaXR5
KG5vZGUsIGJyYW5jaE5vZGUpOworICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBtX2luZGV4SW5CbG9j
ayA9IGJyYW5jaEluZGV4SW5CbG9jazsKKyAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFu
Y2hOb2RlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY29t
cGlsZVN5bWJvbEVxdWFsaXR5KG5vZGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQog
ICAgIAogICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkgewogICAgICAg
ICBjb21waWxlU3RyaW5nRXF1YWxpdHkobm9kZSk7CkBAIC00MDcwLDYgKzQwOTIsNTggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUJvb2xlYW5Db21wYXJlKE5vZGUqIG5vZGUsIE1hY3Jv
QXNzZW1ibGVyOjpSZWxhdGlvbmEKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTeW1ib2xFcXVh
bGl0eShOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGxlZnQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHJpZ2h0KHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKKyAgICBHUFJUZW1wb3JhcnkgbGVmdFRlbXAodGhpcyk7CisgICAgR1BS
VGVtcG9yYXJ5IHJpZ2h0VGVtcCh0aGlzKTsKKworICAgIEdQUlJlZyBsZWZ0R1BSID0gbGVmdC5n
cHIoKTsKKyAgICBHUFJSZWcgcmlnaHRHUFIgPSByaWdodC5ncHIoKTsKKyAgICBHUFJSZWcgbGVm
dFRlbXBHUFIgPSBsZWZ0VGVtcC5ncHIoKTsKKyAgICBHUFJSZWcgcmlnaHRUZW1wR1BSID0gcmln
aHRUZW1wLmdwcigpOworCisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMSgpLCBsZWZ0
R1BSKTsKKyAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIHJpZ2h0R1BSKTsKKwor
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MobGVmdEdQUiwgU3ltYm9sOjpv
ZmZzZXRPZlByaXZhdGVOYW1lKCkpLCBsZWZ0VGVtcEdQUik7CisgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhyaWdodEdQUiwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1l
KCkpLCByaWdodFRlbXBHUFIpOworCisgICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6
RXF1YWwsIGxlZnRUZW1wR1BSLCByaWdodFRlbXBHUFIsIGxlZnRUZW1wR1BSKTsKKworICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQobGVmdFRlbXBHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiBub2RlLCBOb2Rl
KiBicmFuY2hOb2RlKQoreworICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJhbmNoTm9kZS0+YnJh
bmNoRGF0YSgpLT50YWtlbi5ibG9jazsKKyAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5j
aE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CisKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBsZWZ0KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCByaWdodCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgR1BSVGVtcG9yYXJ5IGxlZnRU
ZW1wKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSByaWdodFRlbXAodGhpcyk7CisKKyAgICBHUFJS
ZWcgbGVmdEdQUiA9IGxlZnQuZ3ByKCk7CisgICAgR1BSUmVnIHJpZ2h0R1BSID0gcmlnaHQuZ3By
KCk7CisgICAgR1BSUmVnIGxlZnRUZW1wR1BSID0gbGVmdFRlbXAuZ3ByKCk7CisgICAgR1BSUmVn
IHJpZ2h0VGVtcEdQUiA9IHJpZ2h0VGVtcC5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVN5bWJvbChu
b2RlLT5jaGlsZDEoKSwgbGVmdEdQUik7CisgICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxk
MigpLCByaWdodEdQUik7CisKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGxlZnRHUFIsIFN5bWJvbDo6b2Zmc2V0T2ZQcml2YXRlTmFtZSgpKSwgbGVmdFRlbXBHUFIpOwor
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmlnaHRHUFIsIFN5bWJvbDo6
b2Zmc2V0T2ZQcml2YXRlTmFtZSgpKSwgcmlnaHRUZW1wR1BSKTsKKyAgICBpZiAodGFrZW4gPT0g
bmV4dEJsb2NrKCkpIHsKKyAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
bGVmdFRlbXBHUFIsIHJpZ2h0VGVtcEdQUiwgbm90VGFrZW4pOworICAgICAgICBqdW1wKHRha2Vu
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBs
ZWZ0VGVtcEdQUiwgcmlnaHRUZW1wR1BSLCB0YWtlbik7CisgICAgICAgIGp1bXAobm90VGFrZW4p
OworICAgIH0KK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0VxdWFsaXR5
KAogICAgIE5vZGUqIG5vZGUsIEdQUlJlZyBsZWZ0R1BSLCBHUFJSZWcgcmlnaHRHUFIsIEdQUlJl
ZyBsZW5ndGhHUFIsIEdQUlJlZyBsZWZ0VGVtcEdQUiwKICAgICBHUFJSZWcgcmlnaHRUZW1wR1BS
LCBHUFJSZWcgbGVmdFRlbXAyR1BSLCBHUFJSZWcgcmlnaHRUZW1wMkdQUiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA0ODEyZmExZDQyOWQ4
ZmM0ZWI5NWUwNDg2MjQxY2I1MDAyMWE4MDY5Li45ZDliYjQ4OWQxMDU2MTQzZGRhNzIwMzc4NTAx
Yzk4ZDZjZmM0OGVkIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCkBAIC0yMDc3LDggKzIwNzcsMTAgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewog
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5j
aE5vZGUpOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0U3RyaWN0RXF1YWxpdHkoRWRn
ZSBvYmplY3RDaGlsZCwgRWRnZSBvdGhlckNoaWxkLCBOb2RlKiBicmFuY2hOb2RlKTsKICAgICB2
b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KEVkZ2UgbGVm
dENoaWxkLCBFZGdlIHJpZ2h0Q2hpbGQsIE5vZGUqIGJyYW5jaE5vZGUpOworICAgIHZvaWQgY29t
cGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkoTm9kZSosIE5vZGUqIGJyYW5jaE5vZGUpOwogICAg
IHZvaWQgY29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPYmpl
Y3RTdHJpY3RFcXVhbGl0eShFZGdlIG9iamVjdENoaWxkLCBFZGdlIG90aGVyQ2hpbGQpOworICAg
IHZvaWQgY29tcGlsZVN5bWJvbEVxdWFsaXR5KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVPYmpl
Y3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eShFZGdlIGxlZnRDaGlsZCwgRWRnZSByaWdodENoaWxk
KTsKICAgICB2b2lkIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChFZGdlIHZhbHVlKTsK
ICAgICB2b2lkIGNvbXBpbGVMb2dpY2FsTm90KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBmMzYxN2JlNTI4ZTliODE5MGM2NzRk
NjUwYjk3NzhlZTk4NDFkNmRkLi4xZTk2ZTJiMmRlMzIzZjdjMThmMGQ4ZTc2MTQ0YjEyYWU5OWU2
ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CkBAIC0zMjAsNiArMzIwLDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChTdHJpbmdJZGVudFVzZSkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpKQorICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKQpA
QCAtMzUwLDYgKzM1Miw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVz
ZUtpbmQoQm9vbGVhblVzZSkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUt
PmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNl
LCBNaXNjVXNlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHAKaW5kZXggOTg2YjQzNWZhNWI4ZTZkOGI0MGVjNDJlOGVhYzQ3MjhkOWI5YjYxNC4u
ODA0ZDMwZWNlYzdkNWMyOWExMmQ0ZWIwMDQ4MDkzMTJiZjJhNmI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTQyMDIsNiArNDIw
Miw3IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNC
aW5hcnlVc2VLaW5kKERvdWJsZVJlcFVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5h
cnlVc2VLaW5kKE9iamVjdFVzZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJvb2xlYW5Vc2UpCisgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChT
eW1ib2xVc2UpCiAgICAgICAgICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJ
ZGVudFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTQyOTQsNiArNDI5NSwxNSBAQCBjbGFzcyBMb3dlckRGR1RvTExW
TSB7CiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwobG93Qm9vbGVhbihtX25vZGUtPmNoaWxk
MSgpKSwgbG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJv
bFVzZSkpIHsKKyAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hp
bGQyKCkpOworICAgICAgICAgICAgTFZhbHVlIGxlZnRTdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0
cihsZWZ0LCBtX2hlYXBzLlN5bWJvbF9wcml2YXRlTmFtZSk7CisgICAgICAgICAgICBMVmFsdWUg
cmlnaHRTdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihyaWdodCwgbV9oZWFwcy5TeW1ib2xfcHJp
dmF0ZU5hbWUpOworICAgICAgICAgICAgc2V0Qm9vbGVhbihtX291dC5lcXVhbChsZWZ0U3RyaW5n
SW1wbCwgcmlnaHRTdHJpbmdJbXBsKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBV
bnR5cGVkVXNlKQogICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBl
ZFVzZSwgTWlzY1VzZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3Mvc3ltYm9sLWVxdWFsaXR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zeW1ib2wtZXF1YWxpdHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc3MTY2YmQ1NGExYTJiZTky
NzVhYzlkZjNjMjE2N2VlODJjY2ZkMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLWVxdWFsaXR5LmpzCkBAIC0wLDAgKzEsMzEgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCitmdW5jdGlvbiBlcXVhbChhLCBiKSB7CisgICAgcmV0dXJuIGEgPT0gYjsKK30K
KworZnVuY3Rpb24gc3RyaWN0RXF1YWwoYSwgYikgeworICAgIHJldHVybiBhID09PSBiOworfQor
Cit2YXIgczEgPSBTeW1ib2woKQordmFyIHMyID0gU3ltYm9sKCk7CisKK3ZhciBsaXN0ID0gWwor
ICAgIFsgWyBzMSwgczEgXSwgdHJ1ZSBdLAorICAgIFsgWyBzMiwgczEgXSwgZmFsc2UgXSwKKyAg
ICBbIFsgczEsIHMyIF0sIGZhbHNlIF0sCisgICAgWyBbIHMyLCBzMiBdLCB0cnVlIF0sCitdOwor
CitsaXN0LmZvckVhY2goZnVuY3Rpb24gKHNldCkgeworICAgIHZhciBwYWlyID0gIHNldFswXTsK
KyAgICB2YXIgcmVzdWx0ID0gc2V0WzFdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkgeworICAgICAgICBzaG91bGRCZShlcXVhbChwYWlyWzBdLCBwYWlyWzFdKSwgcmVzdWx0
KTsKKyAgICAgICAgc2hvdWxkQmUoc3RyaWN0RXF1YWwocGFpclswXSwgcGFpclsxXSksIHJlc3Vs
dCk7CisgICAgfQorfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262058</attachid>
            <date>2015-09-29 03:33:06 -0700</date>
            <delta_ts>2015-09-29 13:23:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149616-20150929193242.patch</filename>
            <type>text/plain</type>
            <size>14840</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjQzMTJhNmQ4YTliNGUzNGQ3ZWFlMWU3OWVkYzY0MTA2Y2ZiYjdlLi45NTI0MWVmZTVlZThmZDNh
YWNhZWY2NjA4NDVlNzJiMDFjMDU4MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNS0wOS0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgU3ltYm9sVXNlIG9wdGltaXphdGlvbiBpbnRvIENv
bXBhcmVFcSBhbmQgQ29tcGFyZVN0cmljdEVxCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTaW5jZSBFUzYgU3ltYm9scyBhcmUgdXNlZCBhcyBhbiBlbnVt
IHZhbHVlWzFdIChBbmQgV2ViS2l0IGluc3BlY3RvciBkbyBzbyBmb3IgRXNwcmltYSdzIHR5cGUg
b2Ygbm9kZXMpLAorICAgICAgICBvcHRpbWl6aW5nIGVxdWFsaXR5IGNvbXBhcmlzb24gZm9yIHN5
bWJvbHMgbWFrZXMgbXVjaCBzZW5zZS4KKworICAgICAgICBUaGlzIHBhdGNoIGxldmVyYWdlcyBT
eW1ib2xVc2UgZm9yIENvbXBhcmVFcSBhbmQgQ29tcGFyZVN0cmljdEVxLgorICAgICAgICBPcHRp
bWl6YXRpb25zIGZvciBib3RoIERGRyBhbmQgRlRMIGFyZSBpbXBsZW1lbnRlZC4KKworICAgICAg
ICBbMV06IGh0dHA6Ly93d3cuMmFsaXR5LmNvbS8yMDE0LzEyL2VzNi1zeW1ib2xzLmh0bWwKKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVTeW1ib2wpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
eHRyYWN0U3RyaW5nSW1wbEZyb21CaW5hcnlTeW1ib2xzKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN5bWJvbEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlU3ltYm9sRXF1YWxpdHkpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L3N5bWJvbC1lcXVhbGl0eS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
IChlcXVhbCk6CisgICAgICAgIChzdHJpY3RFcXVhbCk6CisgICAgICAgIChsaXN0LmZvckVhY2gu
cmVzdWx0LnNldCAxKToKKwogMjAxNS0wOS0yOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgcGFyc2VNZW1vcnlBbW91bnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCBkMTY3N2M2ZjE2NGJjMDVkYjYzNGU0MGM3MGFlNzgzYWRmZTM0
ODE1Li42OTE4M2Y3OWQxM2VlMDAyNDk1ZmVmODA4YTg4MTkwZjc5ODFkMWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0xMTg4LDYgKzExODgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBDb21wYXJlRXEgJiYgbGVmdENvbnN0LmlzU3ltYm9sKCkgJiYgcmlnaHRD
b25zdC5pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNC
b29sZWFuKGFzU3ltYm9sKGxlZnRDb25zdCktPnByaXZhdGVOYW1lKCkgPT0gYXNTeW1ib2wocmln
aHRDb25zdCktPnByaXZhdGVOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0g
Q29tcGFyZUVxKSB7CkBAIC0xMjMxLDYgKzEyMzYsNyBAQAogICAgICAgICAgICAgICAgIG5vZGUt
PmlzQmluYXJ5VXNlS2luZChJbnQ1MlJlcFVzZSkgfHwKICAgICAgICAgICAgICAgICBub2RlLT5p
c0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSB8fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmlu
YXJ5VXNlS2luZChCb29sZWFuVXNlKSB8fAorICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5
VXNlS2luZChTeW1ib2xVc2UpIHx8CiAgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VL
aW5kKFN0cmluZ0lkZW50VXNlKSB8fAogICAgICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNl
S2luZChPYmplY3RVc2UpIHx8CiAgICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE9iamVjdFVzZSwgT2JqZWN0T3JPdGhlclVzZSkgfHwKQEAgLTEyOTEsNiArMTI5Nyw3IEBACiAg
ICAgICAgICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEludDUyUmVwVXNlKSB8fAogICAg
ICAgICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdVc2UpIHx8CiAgICAgICAg
ICAgICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSB8fAorICAgICAg
ICAgICAgICAgIG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpIHx8CiAgICAgICAgICAg
ICAgICAgbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkgfHwKICAgICAgICAgICAgICAg
ICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkgfHwKICAgICAgICAg
ICAgICAgICBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkgfHwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGQ1ZTljM2Q3
ZjQ5ZWRmYWNiMjkzNjY5ODJjNzU0YmY0NDE4NTdiMjMuLjc5MGNhNzU4YjAzZjZlMTM2MjM1N2Ri
ODBkNTI2YjQ4Mjc2NjI0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcApAQCAtNDExLDYgKzQxMSwxMiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IENv
bXBhcmVFcSkKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5jaGlsZDIo
KS5ub2RlKCkpKSB7CisgICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQy
KCkpOworICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0ZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hp
bGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPFN0cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAg
Zml4RWRnZTxTdHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQyKCkpOwpAQCAtNDkzLDYgKzQ5OSwx
MSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBm
aXhFZGdlPERvdWJsZVJlcFVzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZVN5bWJvbChub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpIHsK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkgJiYgbm9kZS0+Y2hpbGQyKCktPnNo
b3VsZFNwZWN1bGF0ZVN0cmluZ0lkZW50KCkpIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPFN0
cmluZ0lkZW50VXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxT
dHJpbmdJZGVudFVzZT4obm9kZS0+Y2hpbGQyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAppbmRleCA3OTRlZjNkMWFmYmU2OTc5ZDAyYzA5OGM3ZWFiNjBhOGNkMDE1YjAzLi5mMWEw
ZWQxMWQ5NTk3OGE5OTBhM2Q3NDM4NWYxM2U2NTliZTJhZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaApAQCAtMTg3Niw2ICsxODc2LDExIEBAIHN0cnVjdCBOb2RlIHsKICAgICB7
CiAgICAgICAgIHJldHVybiBpc1N0cmluZ09yU3RyaW5nT2JqZWN0U3BlY3VsYXRpb24ocHJlZGlj
dGlvbigpKTsKICAgICB9CisKKyAgICBib29sIHNob3VsZFNwZWN1bGF0ZVN5bWJvbCgpCisgICAg
eworICAgICAgICByZXR1cm4gaXNTeW1ib2xTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAg
IH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkKICAgICB7CkBA
IC0yMDIxLDYgKzIwMjYsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gb3AxLT5z
aG91bGRTcGVjdWxhdGVOdW1iZXJPckJvb2xlYW5FeHBlY3RpbmdEZWZpbmVkKCkKICAgICAgICAg
ICAgICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyT3JCb29sZWFuRXhwZWN0aW5nRGVmaW5l
ZCgpOwogICAgIH0KKworICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZVN5bWJvbChOb2Rl
KiBvcDEsIE5vZGUqIG9wMikKKyAgICB7CisgICAgICAgIHJldHVybiBvcDEtPnNob3VsZFNwZWN1
bGF0ZVN5bWJvbCgpICYmIG9wMi0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCk7CisgICAgfQogICAg
IAogICAgIHN0YXRpYyBib29sIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KE5vZGUqIG9wMSwg
Tm9kZSogb3AyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKaW5kZXggMDk2ZjI1YjJkM2Y3ZjA2ZWJmNmU0NDhmMGQwMTlmYmVhZTYz
ZjhmYS4uZDgyYzIwMzFjYjA0OWRkOTUyZWJmODdmYjQ1MDI1OWNiODI4MmVhNCAxMDA3NTUKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzNTYs
NiArMTM1Niw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaChO
b2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpKQogICAgICAgICAg
ICAgICAgIGNvbXBpbGVQZWVwSG9sZUJvb2xlYW5CcmFuY2gobm9kZSwgYnJhbmNoTm9kZSwgY29u
ZGl0aW9uKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1i
b2xVc2UpKQorICAgICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZVN5bWJvbEVxdWFsaXR5KG5v
ZGUsIGJyYW5jaE5vZGUpOwogICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKE9iamVjdFVzZSkpCiAgICAgICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1
YWxpdHkobm9kZSwgYnJhbmNoTm9kZSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBPYmplY3RPck90aGVyVXNlKSkKQEAgLTM4NzksNiArMzg4
MSwxMSBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNz
ZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbgogICAgICAgICAgICAgY29tcGlsZVN0cmlu
Z0lkZW50RXF1YWxpdHkobm9kZSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KKworICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkpIHsKKyAg
ICAgICAgICAgIGNvbXBpbGVTeW1ib2xFcXVhbGl0eShub2RlKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChPYmplY3RVc2UpKSB7CiAgICAgICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHko
bm9kZSk7CkBAIC0zOTczLDYgKzM5ODAsMjEgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVN0cmljdEVxKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVEb3VibGVDb21wYXJlKG5vZGUs
IE1hY3JvQXNzZW1ibGVyOjpEb3VibGVFcXVhbCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CisKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkpIHsKKyAgICAg
ICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsK
KyAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgeworICAgICAgICAg
ICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7Cisg
ICAgICAgICAgICBjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShub2RlLCBicmFuY2hOb2Rl
KTsKKyAgICAgICAgICAgIHVzZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICB1c2Uobm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleElu
QmxvY2s7CisgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gYnJhbmNoTm9kZTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVTeW1ib2xFcXVhbGl0
eShub2RlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICAKICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ1VzZSkpIHsKICAgICAgICAgY29tcGlsZVN0cmluZ0Vx
dWFsaXR5KG5vZGUpOwpAQCAtNDA3MCw2ICs0MDkyLDUyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVCb29sZWFuQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZXh0cmFj
dFN0cmluZ0ltcGxGcm9tQmluYXJ5U3ltYm9scyhFZGdlIGxlZnRTeW1ib2xFZGdlLCBFZGdlIHJp
Z2h0U3ltYm9sRWRnZSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBsZWZ0KHRoaXMsIGxlZnRTeW1ib2xFZGdlKTsKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCByaWdodCh0aGlzLCByaWdodFN5bWJvbEVkZ2UpOworICAgIEdQUlRlbXBvcmFyeSBs
ZWZ0VGVtcCh0aGlzKTsKKyAgICBHUFJUZW1wb3JhcnkgcmlnaHRUZW1wKHRoaXMpOworCisgICAg
R1BSUmVnIGxlZnRHUFIgPSBsZWZ0LmdwcigpOworICAgIEdQUlJlZyByaWdodEdQUiA9IHJpZ2h0
LmdwcigpOworICAgIEdQUlJlZyBsZWZ0VGVtcEdQUiA9IGxlZnRUZW1wLmdwcigpOworICAgIEdQ
UlJlZyByaWdodFRlbXBHUFIgPSByaWdodFRlbXAuZ3ByKCk7CisKKyAgICBzcGVjdWxhdGVTeW1i
b2wobGVmdFN5bWJvbEVkZ2UsIGxlZnRHUFIpOworICAgIHNwZWN1bGF0ZVN5bWJvbChyaWdodFN5
bWJvbEVkZ2UsIHJpZ2h0R1BSKTsKKworICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MobGVmdEdQUiwgU3ltYm9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpLCBsZWZ0VGVtcEdQ
Uik7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyaWdodEdQUiwgU3lt
Ym9sOjpvZmZzZXRPZlByaXZhdGVOYW1lKCkpLCByaWdodFRlbXBHUFIpOworCisgICAgZnVuY3Rv
cihsZWZ0VGVtcEdQUiwgcmlnaHRUZW1wR1BSKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVN5bWJvbEVxdWFsaXR5KE5vZGUqIG5vZGUpCit7CisgICAgZXh0cmFjdFN0cmluZ0lt
cGxGcm9tQmluYXJ5U3ltYm9scyhub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIFsmXSAo
R1BSUmVnIGxlZnRTdHJpbmdJbXBsLCBHUFJSZWcgcmlnaHRTdHJpbmdJbXBsKSB7CisgICAgICAg
IG1faml0LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsZWZ0U3RyaW5nSW1wbCwgcmln
aHRTdHJpbmdJbXBsLCBsZWZ0U3RyaW5nSW1wbCk7CisgICAgICAgIHVuYmxlc3NlZEJvb2xlYW5S
ZXN1bHQobGVmdFN0cmluZ0ltcGwsIG5vZGUpOworICAgIH0pOworfQorCit2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUGVlcEhvbGVTeW1ib2xFcXVhbGl0eShOb2RlKiBub2RlLCBOb2RlKiBi
cmFuY2hOb2RlKQoreworICAgIEJhc2ljQmxvY2sqIHRha2VuID0gYnJhbmNoTm9kZS0+YnJhbmNo
RGF0YSgpLT50YWtlbi5ibG9jazsKKyAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5v
ZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7CisKKyAgICBleHRyYWN0U3RyaW5nSW1w
bEZyb21CaW5hcnlTeW1ib2xzKG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgWyZdIChH
UFJSZWcgbGVmdFN0cmluZ0ltcGwsIEdQUlJlZyByaWdodFN0cmluZ0ltcGwpIHsKKyAgICAgICAg
aWYgKHRha2VuID09IG5leHRCbG9jaygpKSB7CisgICAgICAgICAgICBicmFuY2hQdHIoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBsZWZ0U3RyaW5nSW1wbCwgcmlnaHRTdHJpbmdJbXBsLCBub3RUYWtl
bik7CisgICAgICAgICAgICBqdW1wKHRha2VuKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxlZnRTdHJpbmdJbXBsLCByaWdodFN0
cmluZ0ltcGwsIHRha2VuKTsKKyAgICAgICAgICAgIGp1bXAobm90VGFrZW4pOworICAgICAgICB9
CisgICAgfSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdFcXVhbGl0
eSgKICAgICBOb2RlKiBub2RlLCBHUFJSZWcgbGVmdEdQUiwgR1BSUmVnIHJpZ2h0R1BSLCBHUFJS
ZWcgbGVuZ3RoR1BSLCBHUFJSZWcgbGVmdFRlbXBHUFIsCiAgICAgR1BSUmVnIHJpZ2h0VGVtcEdQ
UiwgR1BSUmVnIGxlZnRUZW1wMkdQUiwgR1BSUmVnIHJpZ2h0VGVtcDJHUFIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNDgxMmZhMWQ0Mjlk
OGZjNGViOTVlMDQ4NjI0MWNiNTAwMjFhODA2OS4uYjQyMGVlZTkyNjJjYWVlZDExYWQ5NzAwMmQ5
ODU3MTQ4MzA5MDZjZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaApAQCAtMjA5NCw2ICsyMDk0LDExIEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsK
ICAgICB2b2lkIGNvbXBpbGVTdHJpbmdaZXJvTGVuZ3RoKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVNaXNjU3RyaWN0RXEoTm9kZSopOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
KyAgICB2b2lkIGV4dHJhY3RTdHJpbmdJbXBsRnJvbUJpbmFyeVN5bWJvbHMoRWRnZSBsZWZ0U3lt
Ym9sRWRnZSwgRWRnZSByaWdodFN5bWJvbEVkZ2UsIGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB2b2lk
IGNvbXBpbGVTeW1ib2xFcXVhbGl0eShOb2RlKik7CisgICAgdm9pZCBjb21waWxlUGVlcEhvbGVT
eW1ib2xFcXVhbGl0eShOb2RlKiwgTm9kZSogYnJhbmNoTm9kZSk7CisKICAgICB2b2lkIGVtaXRP
YmplY3RPck90aGVyQnJhbmNoKEVkZ2UgdmFsdWUsIEJhc2ljQmxvY2sqIHRha2VuLCBCYXNpY0Js
b2NrKiBub3RUYWtlbik7CiAgICAgdm9pZCBlbWl0U3RyaW5nQnJhbmNoKEVkZ2UgdmFsdWUsIEJh
c2ljQmxvY2sqIHRha2VuLCBCYXNpY0Jsb2NrKiBub3RUYWtlbik7CiAgICAgdm9pZCBlbWl0QnJh
bmNoKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAppbmRleCBmMzYxN2JlNTI4ZTliODE5MGM2NzRkNjUwYjk3NzhlZTk4NDFkNmRkLi4xZTk2
ZTJiMmRlMzIzZjdjMThmMGQ4ZTc2MTQ0YjEyYWU5OWU2ZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0zMjAsNiArMzIwLDggQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkp
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChT
eW1ib2xVc2UpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoT2JqZWN0VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9k
ZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKQpAQCAtMzUwLDYgKzM1Miw4IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoQm9vbGVhblVzZSkpCiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xV
c2UpKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoTWlzY1VzZSwgVW50eXBlZFVzZSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggOTg2YjQzNWZh
NWI4ZTZkOGI0MGVjNDJlOGVhYzQ3MjhkOWI5YjYxNC4uODA0ZDMwZWNlYzdkNWMyOWExMmQ0ZWIw
MDQ4MDkzMTJiZjJhNmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKQEAgLTQyMDIsNiArNDIwMiw3IEBAIGNsYXNzIExvd2VyREZHVG9M
TFZNIHsKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKERvdWJsZVJlcFVz
ZSkKICAgICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkKICAg
ICAgICAgICAgIHx8IG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpCisgICAgICAg
ICAgICB8fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTeW1ib2xVc2UpCiAgICAgICAgICAgICB8
fCBtX25vZGUtPmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpIHsKICAgICAgICAgICAg
IGNvbXBpbGVDb21wYXJlU3RyaWN0RXEoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQyOTQs
NiArNDI5NSwxNSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgICAgICAgICAgbV9v
dXQuZXF1YWwobG93Qm9vbGVhbihtX25vZGUtPmNoaWxkMSgpKSwgbG93Qm9vbGVhbihtX25vZGUt
PmNoaWxkMigpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICAgICAg
aWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN5bWJvbFVzZSkpIHsKKyAgICAgICAgICAgIExW
YWx1ZSBsZWZ0ID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgTFZh
bHVlIHJpZ2h0ID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgTFZh
bHVlIGxlZnRTdHJpbmdJbXBsID0gbV9vdXQubG9hZFB0cihsZWZ0LCBtX2hlYXBzLlN5bWJvbF9w
cml2YXRlTmFtZSk7CisgICAgICAgICAgICBMVmFsdWUgcmlnaHRTdHJpbmdJbXBsID0gbV9vdXQu
bG9hZFB0cihyaWdodCwgbV9oZWFwcy5TeW1ib2xfcHJpdmF0ZU5hbWUpOworICAgICAgICAgICAg
c2V0Qm9vbGVhbihtX291dC5lcXVhbChsZWZ0U3RyaW5nSW1wbCwgcmlnaHRTdHJpbmdJbXBsKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICht
X25vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKQogICAgICAgICAgICAg
fHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3ltYm9sLWVxdWFsaXR5
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zeW1ib2wtZXF1YWxpdHku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGJmODlmODNiMzdiOTViNzAwNTcwOTAyMTQxZDY2MzMzOTEzZmNlOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3lt
Ym9sLWVxdWFsaXR5LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBlcXVh
bChhLCBiKSB7CisgICAgcmV0dXJuIGEgPT0gYjsKK30KKworZnVuY3Rpb24gc3RyaWN0RXF1YWwo
YSwgYikgeworICAgIHJldHVybiBhID09PSBiOworfQorCit2YXIgczEgPSBTeW1ib2woKQordmFy
IHMyID0gU3ltYm9sKCk7CisKK3ZhciBsaXN0ID0gWworICAgIFsgWyBzMSwgczEgXSwgdHJ1ZSBd
LAorICAgIFsgWyBzMiwgczEgXSwgZmFsc2UgXSwKKyAgICBbIFsgczEsIHMyIF0sIGZhbHNlIF0s
CisgICAgWyBbIHMyLCBzMiBdLCB0cnVlIF0sCisgICAgWyBbIHMyLCA0MiBdLCBmYWxzZSBdLAor
XTsKKworbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChzZXQpIHsKKyAgICB2YXIgcGFpciA9ICBzZXRb
MF07CisgICAgdmFyIHJlc3VsdCA9IHNldFsxXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpIHsKKyAgICAgICAgc2hvdWxkQmUoZXF1YWwocGFpclswXSwgcGFpclsxXSksIHJl
c3VsdCk7CisgICAgICAgIHNob3VsZEJlKHN0cmljdEVxdWFsKHBhaXJbMF0sIHBhaXJbMV0pLCBy
ZXN1bHQpOworICAgIH0KK30pOwo=
</data>
<flag name="review"
          id="287227"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>