<?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>63563</bug_id>
          
          <creation_ts>2011-06-28 14:15:09 -0700</creation_ts>
          <short_desc>DFG JIT - add support for double arith to speculative path</short_desc>
          <delta_ts>2011-06-28 14:33:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>429133</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-28 14:15:09 -0700</bug_when>
    <thetext>Add integer support for div &amp; mod, add double support for div, mod, add, sub &amp; mul, dynamically selecting based on operand types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429135</commentid>
    <comment_count>1</comment_count>
      <attachid>98970</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-28 14:17:14 -0700</bug_when>
    <thetext>Created attachment 98970
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429139</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-28 14:20:52 -0700</bug_when>
    <thetext>Attachment 98970 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:187:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 6 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>429141</commentid>
    <comment_count>3</comment_count>
      <attachid>98970</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-06-28 14:24:03 -0700</bug_when>
    <thetext>Comment on attachment 98970
The patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:196
&gt; +            } else if (isDoubleConstant(nodeIndex)) {

Fiux these style issues

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:204
&gt; +                return fpr;

again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429150</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-28 14:33:51 -0700</bug_when>
    <thetext>Fixed in r89961.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98970</attachid>
            <date>2011-06-28 14:17:14 -0700</date>
            <delta_ts>2011-06-28 14:24:03 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>63563.patch</filename>
            <type>text/plain</type>
            <size>19901</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk5NTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTEtMDYtMjggIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU2MworICAgICAgICBERkcgSklUIC0g
YWRkIHN1cHBvcnQgZm9yIGRvdWJsZSBhcml0aCB0byBzcGVjdWxhdGl2ZSBwYXRoCisKKyAgICAg
ICAgQWRkIGludGVnZXIgc3VwcG9ydCBmb3IgZGl2ICYgbW9kLCBhZGQgZG91YmxlIHN1cHBvcnQg
Zm9yIGRpdiwgbW9kLAorICAgICAgICBhZGQsIHN1YiAmIG11bCwgZHluYW1pY2FsbHkgc2VsZWN0
aW5nIGJhc2VkIG9uIG9wZXJhbmQgdHlwZXMuCisKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RlBSVGVtcG9yYXJ5OjpGUFJUZW1wb3Jh
cnkpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZn
L0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFzc2Vt
Ymxlcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ6
OlNwZWN1bGF0ZURvdWJsZU9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQ6On5TcGVjdWxhdGVEb3VibGVPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGVEb3VibGVPcGVyYW5kOjppbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRlRG91YmxlT3BlcmFuZDo6ZnByKToKKwogMjAxMS0wNi0yOCAgR2F2aW4gQmFycmFjbG91
Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVy
IEh1bnQuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDg5OTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM2LDYgKzYz
NiwyOCBAQCBGUFJUZW1wb3Jhcnk6OkZQUlRlbXBvcmFyeShKSVRDb2RlR2VuZXJhCiAgICAgICAg
IG1fZnByID0gbV9qaXQtPmZwckFsbG9jYXRlKCk7CiB9CiAKK0ZQUlRlbXBvcmFyeTo6RlBSVGVt
cG9yYXJ5KEpJVENvZGVHZW5lcmF0b3IqIGppdCwgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCYgb3Ax
KQorICAgIDogbV9qaXQoaml0KQorICAgICwgbV9mcHIoSW52YWxpZEZQUlJlZykKK3sKKyAgICBp
ZiAobV9qaXQtPmNhblJldXNlKG9wMS5pbmRleCgpKSkKKyAgICAgICAgbV9mcHIgPSBtX2ppdC0+
cmV1c2Uob3AxLmZwcigpKTsKKyAgICBlbHNlCisgICAgICAgIG1fZnByID0gbV9qaXQtPmZwckFs
bG9jYXRlKCk7Cit9CisKK0ZQUlRlbXBvcmFyeTo6RlBSVGVtcG9yYXJ5KEpJVENvZGVHZW5lcmF0
b3IqIGppdCwgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCYgb3AxLCBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kJiBvcDIpCisgICAgOiBtX2ppdChqaXQpCisgICAgLCBtX2ZwcihJbnZhbGlkRlBSUmVnKQor
eworICAgIGlmIChtX2ppdC0+Y2FuUmV1c2Uob3AxLmluZGV4KCkpKQorICAgICAgICBtX2ZwciA9
IG1faml0LT5yZXVzZShvcDEuZnByKCkpOworICAgIGVsc2UgaWYgKG1faml0LT5jYW5SZXVzZShv
cDIuaW5kZXgoKSkpCisgICAgICAgIG1fZnByID0gbV9qaXQtPnJldXNlKG9wMi5mcHIoKSk7Cisg
ICAgZWxzZQorICAgICAgICBtX2ZwciA9IG1faml0LT5mcHJBbGxvY2F0ZSgpOworfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDg5OTU3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CiBjbGFzcyBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZDsKIGNsYXNzIFNwZWN1bGF0ZVN0cmljdElu
dDMyT3BlcmFuZDsKK2NsYXNzIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQ7CiBjbGFzcyBTcGVjdWxh
dGVDZWxsT3BlcmFuZDsKIAogCkBAIC0xMDM1LDYgKzEwMzYsOCBAQCBwdWJsaWM6CiAgICAgRlBS
VGVtcG9yYXJ5KEpJVENvZGVHZW5lcmF0b3IqKTsKICAgICBGUFJUZW1wb3JhcnkoSklUQ29kZUdl
bmVyYXRvciosIERvdWJsZU9wZXJhbmQmKTsKICAgICBGUFJUZW1wb3JhcnkoSklUQ29kZUdlbmVy
YXRvciosIERvdWJsZU9wZXJhbmQmLCBEb3VibGVPcGVyYW5kJik7CisgICAgRlBSVGVtcG9yYXJ5
KEpJVENvZGVHZW5lcmF0b3IqLCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kJik7CisgICAgRlBSVGVt
cG9yYXJ5KEpJVENvZGVHZW5lcmF0b3IqLCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kJiwgU3BlY3Vs
YXRlRG91YmxlT3BlcmFuZCYpOwogCiAgICAgfkZQUlRlbXBvcmFyeSgpCiAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gODk5
NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGgmIGdyYXBoKCkg
eyByZXR1cm4gbV9ncmFwaDsgfQogICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgeyByZXR1cm4g
bV9jb2RlQmxvY2s7IH0KICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSB7IHJldHVybiBt
X2dsb2JhbERhdGE7IH0KKyAgICBBc3NlbWJsZXJUeXBlX1QmIGFzc2VtYmxlcigpIHsgcmV0dXJu
IG1fYXNzZW1ibGVyOyB9CiAKICNpZiBDUFUoWDg2XzY0KQogICAgIHZvaWQgcHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKEdQUlJlZyByZWcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gODk5NTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTc0LDYgKzE3NCwxMjEgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlSW50UwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0ZQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQoreworICAgIE5vZGUm
IG5vZGUgPSBtX2ppdC5ncmFwaCgpW25vZGVJbmRleF07CisgICAgVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlciA9IG5vZGUudmlydHVhbFJlZ2lzdGVyKCk7CisgICAgR2VuZXJhdGlvbklu
Zm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlcl07CisKKyAgICBpZiAo
aW5mby5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXROb25lKSB7CisgICAgICAgIEdQUlJl
ZyBncHIgPSBhbGxvY2F0ZSgpOworCisgICAgICAgIGlmIChub2RlLmlzQ29uc3RhbnQoKSkgewor
ICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlSW5kZXgpKSB7CisgICAgICAgICAg
ICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9jYXRlKCk7CisgICAgICAgICAgICAgICAgbV9qaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50
ZXJwcmV0RG91YmxlVG9JbnRwdHIoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZU9mSW50MzJDb25z
dGFudChub2RlSW5kZXgpKSkpKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlUHRy
VG9Eb3VibGUoZ3ByLCBmcHIpOworICAgICAgICAgICAgICAgIHVubG9jayhncHIpOworCisgICAg
ICAgICAgICAgICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRl
ckRvdWJsZSk7CisgICAgICAgICAgICAgICAgaW5mby5maWxsRG91YmxlKGZwcik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZwcjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNEb3VibGVDb25z
dGFudChub2RlSW5kZXgpKSB7CisgICAgICAgICAgICAgICAgRlBSUmVnIGZwciA9IGZwckFsbG9j
YXRlKCk7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tUHRy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIodmFsdWVP
ZkRvdWJsZUNvbnN0YW50KG5vZGVJbmRleCkpKSksIGdwcik7CisgICAgICAgICAgICAgICAgbV9q
aXQubW92ZVB0clRvRG91YmxlKGdwciwgZnByKTsKKyAgICAgICAgICAgICAgICB1bmxvY2soZ3By
KTsKKworICAgICAgICAgICAgICAgIG1fZnBycy5yZXRhaW4oZnByLCB2aXJ0dWFsUmVnaXN0ZXIs
IFNwaWxsT3JkZXJEb3VibGUpOworICAgICAgICAgICAgICAgIGluZm8uZmlsbERvdWJsZShmcHIp
OworICAgICAgICAgICAgICAgIHJldHVybiBmcHI7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIEFTU0VSVChpc0pTQ29uc3RhbnQobm9kZUluZGV4KSk7CisgICAgICAgICAg
ICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KTsKKyAg
ICAgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW1QdHIoSlNWYWx1ZTo6
ZW5jb2RlKGpzVmFsdWUpKSwgZ3ByKTsKKyAgICAgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdw
ciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3RhbnQpOworICAgICAgICAgICAgICAg
IGluZm8uZmlsbEpTVmFsdWUoZ3ByLCBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAgIHVu
bG9jayhncHIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
RGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKKyAgICAgICAgICAg
IEFTU0VSVChzcGlsbEZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBtX2dwcnMu
cmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CisgICAgICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGdwcik7CisgICAgICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKGdwciwgc3BpbGxGb3JtYXQp
OworICAgICAgICAgICAgdW5sb2NrKGdwcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0
Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6Cisg
ICAgICAgIC8vIFNob3VsZCBoYXZlIGZpbGxlZCwgYWJvdmUuCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAKKyAgICBjYXNlIERhdGFGb3JtYXRDZWxsOgorICAgIGNhc2Ug
RGF0YUZvcm1hdEpTQ2VsbDoKKyAgICBjYXNlIERhdGFGb3JtYXRKUzogeworICAgICAgICBHUFJS
ZWcganNWYWx1ZUdwciA9IGluZm8uZ3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGpzVmFsdWVH
cHIpOworICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKKyAgICAgICAgR1BSUmVn
IHRlbXBHcHIgPSBhbGxvY2F0ZSgpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBqc1Zh
bHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOworCisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywganNW
YWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisKKyAgICAgICAgLy8g
Rmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFs
dWUKKyAgICAgICAgbV9qaXQubW92ZShqc1ZhbHVlR3ByLCB0ZW1wR3ByKTsKKyAgICAgICAgbV9q
aXQuYWRkUHRyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgdGVtcEdwcik7CisgICAg
ICAgIG1faml0Lm1vdmVQdHJUb0RvdWJsZSh0ZW1wR3ByLCBmcHIpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBoYXNVbmJveGVkRG91YmxlID0gbV9qaXQuanVtcCgpOworCisgICAgICAgIC8v
IEZpbmFsbHksIGhhbmRsZSBpbnRlZ2Vycy4KKyAgICAgICAgaXNJbnRlZ2VyLmxpbmsoJm1faml0
KTsKKyAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoanNWYWx1ZUdwciwgZnByKTsK
KyAgICAgICAgaGFzVW5ib3hlZERvdWJsZS5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgbV9ncHJz
LnJlbGVhc2UoanNWYWx1ZUdwcik7CisgICAgICAgIG1fZ3Bycy51bmxvY2soanNWYWx1ZUdwcik7
CisgICAgICAgIG1fZ3Bycy51bmxvY2sodGVtcEdwcik7CisgICAgICAgIG1fZnBycy5yZXRhaW4o
ZnByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJEb3VibGUpOworICAgICAgICBpbmZvLmZp
bGxEb3VibGUoZnByKTsKKyAgICAgICAgcmV0dXJuIGZwcjsKKyAgICB9CisKKyAgICBjYXNlIERh
dGFGb3JtYXRKU0ludGVnZXI6CisgICAgY2FzZSBEYXRhRm9ybWF0SW50ZWdlcjogeworICAgICAg
ICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKKyAgICAgICAgR1BSUmVnIGdwciA9IGluZm8u
Z3ByKCk7CisgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CisgICAgICAgIG1faml0LmNvbnZlcnRJ
bnQzMlRvRG91YmxlKGdwciwgZnByKTsKKyAgICAgICAgbV9ncHJzLnVubG9jayhncHIpOworICAg
ICAgICByZXR1cm4gZnByOworICAgIH0KKworICAgIC8vIFVuYm94IHRoZSBkb3VibGUKKyAgICBj
YXNlIERhdGFGb3JtYXRKU0RvdWJsZTogeworICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIo
KTsKKyAgICAgICAgRlBSUmVnIGZwciA9IHVuYm94RG91YmxlKGdwcik7CisKKyAgICAgICAgbV9n
cHJzLnJlbGVhc2UoZ3ByKTsKKyAgICAgICAgbV9mcHJzLnJldGFpbihmcHIsIHZpcnR1YWxSZWdp
c3RlciwgU3BpbGxPcmRlckRvdWJsZSk7CisKKyAgICAgICAgaW5mby5maWxsRG91YmxlKGZwcik7
CisgICAgICAgIHJldHVybiBmcHI7CisgICAgfQorCisgICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OiB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBpbmZvLmZwcigpOworICAgICAgICBtX2ZwcnMubG9j
ayhmcHIpOworICAgICAgICByZXR1cm4gZnByOworICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gSW52YWxpZEZQUlJlZzsKK30KKwogR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChOb2RlSW5kZXggbm9kZUluZGV4KQogewog
ICAgIE5vZGUmIG5vZGUgPSBtX2ppdC5ncmFwaCgpW25vZGVJbmRleF07CkBAIC00MzAsMTIwICs1
NDUsMTgwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9
CiAKICAgICBjYXNlIFZhbHVlVG9OdW1iZXI6IHsKLSAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBvcDEpOwotICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0Lmdwcigp
KTsKLSAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4LCBv
cDEuZm9ybWF0KCkpOworICAgICAgICBpZiAoaXNJbnRlZ2VyKG5vZGUuY2hpbGQxKSkgeworICAg
ICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsK
KyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKKyAgICAgICAgICAg
IG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgaW50ZWdl
clJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4LCBvcDEuZm9ybWF0KCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS5jaGlsZDEpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIG9wMSk7CisgICAgICAgIG1faml0Lm1vdmVEb3VibGUob3AxLmZwcigpLCByZXN1bHQuZnBy
KCkpOworICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBtX2NvbXBpbGVJbmRleCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBB
cml0aEFkZDogewotICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQxKSkgewot
ICAgICAgICAgICAgaW50MzJfdCBpbW0xID0gdmFsdWVPZkludDMyQ29uc3RhbnQobm9kZS5jaGls
ZDEpOwotICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUu
Y2hpbGQyKTsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAg
IGlmIChpc0ludGVnZXIobm9kZS5jaGlsZDEpIHx8IGlzSW50ZWdlcihub2RlLmNoaWxkMikpIHsK
KyAgICAgICAgICAgIGlmIChpc0ludDMyQ29uc3RhbnQobm9kZS5jaGlsZDEpKSB7CisgICAgICAg
ICAgICAgICAgaW50MzJfdCBpbW0xID0gdmFsdWVPZkludDMyQ29uc3RhbnQobm9kZS5jaGlsZDEp
OworICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LmNoaWxkMik7CisgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKIAot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hBZGQzMihNYWNyb0Fzc2Vt
Ymxlcjo6T3ZlcmZsb3csIG9wMi5ncHIoKSwgSW1tMzIoaW1tMSksIHJlc3VsdC5ncHIoKSkpOwor
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9B
c3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIEltbTMyKGltbTEpLCByZXN1bHQuZ3ByKCkp
KTsKIAotICAgICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUlu
ZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAg
ICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMikpIHsKKyAgICAgICAgICAgICAgICBp
bnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMikpIHsKKyAgICAgICAgICAgICAgICBTcGVj
dWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEpOworICAgICAgICAgICAg
ICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQyKTsKKyAg
ICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hBZGQzMihNYWNyb0Fzc2VtYmxlcjo6T3Zl
cmZsb3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSkpOworCisgICAgICAg
ICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7
Ci0gICAgICAgICAgICBpbnQzMl90IGltbTIgPSB2YWx1ZU9mSW50MzJDb25zdGFudChub2RlLmNo
aWxkMik7Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAg
ICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKTsKKyAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwogCi0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVy
Zmxvdywgb3AxLmdwcigpLCBJbW0zMihpbW0yKSwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgICAg
ICBHUFJSZWcgZ3ByMSA9IG9wMS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBncHIyID0gb3Ay
LmdwcigpOworICAgICAgICAgICAgR1BSUmVnIGdwclJlc3VsdCA9IHJlc3VsdC5ncHIoKTsKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIo
TWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBncHIxLCBncHIyLCBncHJSZXN1bHQpOworCisgICAg
ICAgICAgICBpZiAoZ3ByMSA9PSBncHJSZXN1bHQpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhjaGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2ZUFkZCwgZ3ByUmVz
dWx0LCBncHIyKSk7CisgICAgICAgICAgICBlbHNlIGlmIChncHIyID09IGdwclJlc3VsdCkKKyAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGNoZWNrLCBTcGVjdWxhdGlvblJlY292ZXJ5
KFNwZWN1bGF0aXZlQWRkLCBncHJSZXN1bHQsIGdwcjEpKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGNoZWNrKTsKIAotICAgICAgICAgICAgaW50
ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGlu
dGVnZXJSZXN1bHQoZ3ByUmVzdWx0LCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7Ci0gICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVy
YW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMik7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgb3AxLCBvcDIpOwogCi0gICAgICAgIEdQUlJlZyBncHIxID0gb3AxLmdwcigpOwotICAg
ICAgICBHUFJSZWcgZ3ByMiA9IG9wMi5ncHIoKTsKLSAgICAgICAgR1BSUmVnIGdwclJlc3VsdCA9
IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2pp
dC5icmFuY2hBZGQzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIGdwcjEsIGdwcjIsIGdwclJl
c3VsdCk7Ci0KLSAgICAgICAgaWYgKGdwcjEgPT0gZ3ByUmVzdWx0KQotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhjaGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2ZUFkZCwg
Z3ByUmVzdWx0LCBncHIyKSk7Ci0gICAgICAgIGVsc2UgaWYgKGdwcjIgPT0gZ3ByUmVzdWx0KQot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhjaGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShT
cGVjdWxhdGl2ZUFkZCwgZ3ByUmVzdWx0LCBncHIxKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soY2hlY2spOworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBvcDEsIG9wMik7CisKKyAgICAgICAgRlBSUmVnIHJlZzEgPSBvcDEuZnByKCk7CisgICAg
ICAgIEZQUlJlZyByZWcyID0gb3AyLmZwcigpOworICAgICAgICBtX2ppdC5hZGREb3VibGUocmVn
MSwgcmVnMiwgcmVzdWx0LmZwcigpKTsKIAotICAgICAgICBpbnRlZ2VyUmVzdWx0KGdwclJlc3Vs
dCwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBt
X2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgQXJpdGhT
dWI6IHsKLSAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMikpIHsKKyAgICAg
ICAgaWYgKGlzSW50ZWdlcihub2RlLmNoaWxkMSkgfHwgaXNJbnRlZ2VyKG5vZGUuY2hpbGQyKSkg
eworICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMikpIHsKKyAgICAg
ICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEp
OworICAgICAgICAgICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5v
ZGUuY2hpbGQyKTsKKyAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hTdWIzMihNYWNy
b0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIo
KSkpOworCisgICAgICAgICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29t
cGlsZUluZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLmNoaWxkMSk7Ci0gICAgICAgICAgICBpbnQzMl90IGltbTIgPSB2YWx1ZU9mSW50MzJD
b25zdGFudChub2RlLmNoaWxkMik7CisgICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFu
ZCBvcDIodGhpcywgbm9kZS5jaGlsZDIpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKIAotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hTdWIz
MihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3Vs
dC5ncHIoKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hTdWIz
MihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQu
Z3ByKCkpKTsKIAogICAgICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29t
cGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAK
LSAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsK
LSAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKTsK
LSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLQotICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AxLmdw
cigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBvcDEpOworCisgICAgICAgIEZQUlJlZyByZWcxID0gb3AxLmZwcigpOworICAgICAg
ICBGUFJSZWcgcmVnMiA9IG9wMi5mcHIoKTsKKyAgICAgICAgbV9qaXQuc3ViRG91YmxlKHJlZzEs
IHJlZzIsIHJlc3VsdC5mcHIoKSk7CiAKLSAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3By
KCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwg
bV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIEFyaXRo
TXVsOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNo
aWxkMSk7Ci0gICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNo
aWxkMik7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIGlmIChp
c0ludGVnZXIobm9kZS5jaGlsZDEpICYmIGlzSW50ZWdlcihub2RlLmNoaWxkMikpIHsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7Cisg
ICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIp
OworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKIAotICAgICAgICBHUFJS
ZWcgcmVnMSA9IG9wMS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlZzIgPSBvcDIuZ3ByKCk7Ci0g
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6
Ok92ZXJmbG93LCByZWcxLCByZWcyLCByZXN1bHQuZ3ByKCkpKTsKLQotICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCByZXN1bHROb25aZXJvID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgcmVnMSwgVHJ1c3RlZElt
bTMyKDApKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6Okxlc3NUaGFuLCByZWcyLCBUcnVzdGVkSW1tMzIoMCkpKTsKLSAgICAgICAgcmVz
dWx0Tm9uWmVyby5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICBHUFJSZWcgcmVnMSA9IG9wMS5n
cHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZWcyID0gb3AyLmdwcigpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZs
b3csIHJlZzEsIHJlZzIsIHJlc3VsdC5ncHIoKSkpOwogCi0gICAgICAgIGludGVnZXJSZXN1bHQo
cmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCByZXN1bHROb25aZXJvID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayht
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHJlZzEsIFRydXN0ZWRJbW0z
MigwKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHJlZzIsIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICAg
ICAgcmVzdWx0Tm9uWmVyby5saW5rKCZtX2ppdCk7CisKKyAgICAgICAgICAgIGludGVnZXJSZXN1
bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNo
aWxkMSk7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hp
bGQyKTsKKyAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7CisKKyAg
ICAgICAgRlBSUmVnIHJlZzEgPSBvcDEuZnByKCk7CisgICAgICAgIEZQUlJlZyByZWcyID0gb3Ay
LmZwcigpOworICAgICAgICAKKyAgICAgICAgbV9qaXQubXVsRG91YmxlKHJlZzEsIHJlZzIsIHJl
c3VsdC5mcHIoKSk7CisgICAgICAgIAorICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigp
LCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgQXJp
dGhEaXY6IHsKLSAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUu
Y2hpbGQxKTsKLSAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUu
Y2hpbGQyKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7Ci0K
LSAgICAgICAgb3AxLmdwcigpOwotICAgICAgICBvcDIuZ3ByKCk7Ci0gICAgICAgIHRlcm1pbmF0
ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKCk7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBv
cDIodGhpcywgbm9kZS5jaGlsZDIpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IG9wMSk7CisKKyAgICAgICAgRlBSUmVnIHJlZzEgPSBvcDEuZnByKCk7CisgICAgICAgIEZQUlJl
ZyByZWcyID0gb3AyLmZwcigpOworICAgICAgICBtX2ppdC5kaXZEb3VibGUocmVnMSwgcmVnMiwg
cmVzdWx0LmZwcigpKTsKIAotICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9j
b21waWxlSW5kZXgpOworICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBtX2NvbXBp
bGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgQXJpdGhNb2Q6IHsK
ICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsK
ICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKTsK
LSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSBlYXgodGhpcywgWDg2UmVnaXN0ZXJzOjplYXgpOworICAgICAgICBHUFJUZW1w
b3JhcnkgZWR4KHRoaXMsIFg4NlJlZ2lzdGVyczo6ZWR4KTsKKyAgICAgICAgR1BSUmVnIG9wMUdw
ciA9IG9wMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIG9wMkdwciA9IG9wMi5ncHIoKTsKIAotICAg
ICAgICBvcDEuZ3ByKCk7Ci0gICAgICAgIG9wMi5ncHIoKTsKLSAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhtX2ppdC5icmFu
Y2hUZXN0UHRyKEpJVENvbXBpbGVyOjpaZXJvLCBvcDJHcHIpKTsKKworICAgICAgICBHUFJSZWcg
dGVtcDIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAob3AyR3ByID09IFg4NlJlZ2lzdGVy
czo6ZWF4IHx8IG9wMkdwciA9PSBYODZSZWdpc3RlcnM6OmVkeCkgeworICAgICAgICAgICAgdGVt
cDIgPSBhbGxvY2F0ZSgpOworICAgICAgICAgICAgbV9qaXQubW92ZShvcDJHcHIsIHRlbXAyKTsK
KyAgICAgICAgICAgIG9wMkdwciA9IHRlbXAyOworICAgICAgICB9CisKKyAgICAgICAgbV9qaXQu
bW92ZShvcDFHcHIsIGVheC5ncHIoKSk7CisgICAgICAgIG1faml0LmFzc2VtYmxlcigpLmNkcSgp
OworICAgICAgICBtX2ppdC5hc3NlbWJsZXIoKS5pZGl2bF9yKG9wMkdwcik7CisKKyAgICAgICAg
aWYgKHRlbXAyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAgICAgICB1bmxvY2sodGVtcDIpOwog
Ci0gICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7Cisg
ICAgICAgIGludGVnZXJSZXN1bHQoZWR4LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gODk5NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjks
NyBAQCBwdWJsaWM6CiAgICAgLy8gbWFjaGluZSByZWdpc3RlcnMsIGltcGxpY2l0bHkgZ2VuZXJh
dGluZyBzcGVjdWxhdGlvbiBjaGVja3MgYXMgbmVlZGVkLgogICAgIEdQUlJlZyBmaWxsU3BlY3Vs
YXRlSW50KE5vZGVJbmRleCwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0KTsKICAgICBHUFJSZWcg
ZmlsbFNwZWN1bGF0ZUludFN0cmljdChOb2RlSW5kZXgpOworICAgIEZQUlJlZyBmaWxsU3BlY3Vs
YXRlRG91YmxlKE5vZGVJbmRleCk7CiAgICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKE5vZGVJ
bmRleCk7CiAKIHByaXZhdGU6CkBAIC0zMTcsNiArMzE4LDQyIEBAIHByaXZhdGU6CiAgICAgR1BS
UmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAorY2xhc3MgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgU3BlY3VsYXRlRG91YmxlT3BlcmFuZChTcGVjdWxhdGl2
ZUpJVCogaml0LCBOb2RlSW5kZXggaW5kZXgpCisgICAgICAgIDogbV9qaXQoaml0KQorICAgICAg
ICAsIG1faW5kZXgoaW5kZXgpCisgICAgICAgICwgbV9mcHJPckludmFsaWQoSW52YWxpZEZQUlJl
ZykKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2ppdCk7CisgICAgICAgIGlmIChqaXQtPmlzRmls
bGVkKGluZGV4KSkKKyAgICAgICAgICAgIGZwcigpOworICAgIH0KKworICAgIH5TcGVjdWxhdGVE
b3VibGVPcGVyYW5kKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2Zwck9ySW52YWxpZCAhPSBJ
bnZhbGlkRlBSUmVnKTsKKyAgICAgICAgbV9qaXQtPnVubG9jayhtX2Zwck9ySW52YWxpZCk7Cisg
ICAgfQorCisgICAgTm9kZUluZGV4IGluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2luZGV4OworICAgIH0KKworICAgIEZQUlJlZyBmcHIoKQorICAgIHsKKyAgICAgICAgaWYg
KG1fZnByT3JJbnZhbGlkID09IEludmFsaWRGUFJSZWcpCisgICAgICAgICAgICBtX2Zwck9ySW52
YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlRG91YmxlKGluZGV4KCkpOworICAgICAgICByZXR1
cm4gbV9mcHJPckludmFsaWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFNwZWN1bGF0aXZlSklU
KiBtX2ppdDsKKyAgICBOb2RlSW5kZXggbV9pbmRleDsKKyAgICBGUFJSZWcgbV9mcHJPckludmFs
aWQ7Cit9OworCiBjbGFzcyBTcGVjdWxhdGVDZWxsT3BlcmFuZCB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgU3BlY3VsYXRlQ2VsbE9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGppdCwgTm9kZUluZGV4
IGluZGV4KQo=
</data>
<flag name="review"
          id="93342"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>