<?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>120965</bug_id>
          
          <creation_ts>2013-09-07 13:31:28 -0700</creation_ts>
          <short_desc>FTL should support typed array GetByVal and related ops</short_desc>
          <delta_ts>2013-09-07 14:13:21 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>926255</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-07 13:31:28 -0700</bug_when>
    <thetext>Support just enough to compile this function for any typed array type:

function foo(a) {
    var result = 0;
    for (var i = 0; i &lt; a.length; ++i)
        result += a[i];
    return result;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926257</commentid>
    <comment_count>1</comment_count>
      <attachid>210920</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-07 13:33:31 -0700</bug_when>
    <thetext>Created attachment 210920
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926258</commentid>
    <comment_count>2</comment_count>
      <attachid>210921</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-07 13:42:15 -0700</bug_when>
    <thetext>Created attachment 210921
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926262</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-07 14:13:21 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/155260</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210920</attachid>
            <date>2013-09-07 13:33:31 -0700</date>
            <delta_ts>2013-09-07 13:42:15 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19022</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1MjU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDEzLTA5LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBzdXBwb3J0IHR5cGVkIGFycmF5IEdldEJ5VmFsIGFuZCByZWxhdGVkIG9wcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwOTY1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBU
aGlzIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGZvbGxvd2luZyB0eXBlZCBhcnJheSBpbnN0YW50aWF0
aW9ucyBvZiB0aGUgZm9sbG93aW5nCisgICAgICAgIERGRyBJUiBvcHM6CisgICAgICAgIAorICAg
ICAgICAtIEdldEJ5VmFsCisgICAgICAgIAorICAgICAgICAtIEdldEluZGV4ZWRQcm9wZXJ0eVN0
b3JhZ2UKKyAgICAgICAgCisgICAgICAgIC0gQ2hlY2tBcnJheQorICAgICAgICAKKyAgICAgICAg
LSBHZXRBcnJheUxlbmd0aAorICAgICAgICAKKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgQ2hlY2tB
cnJheSBmb3IgSW50MzIvRG91YmxlL0NvbnRpZ3VvdXMgYXJyYXlzLgorCisgICAgICAgICogZGZn
L0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6dG9JbmRleGluZ1NoYXBlKToK
KyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlN
b2RlOjpzaGFwZU1hc2spOgorICAgICAgICAqIGZ0bC9GVExBYmJyZXZpYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OkZUTDo6ZmxvYXRUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpidWlsZFNFeHQp
OgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICog
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6
CisgICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
Q29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMpOgorICAgICAgICAqIGZ0bC9GVExDb21tb25WYWx1
ZXMuaDoKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNoZWNrQXJyYXkpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0QXJyYXlMZW5ndGgpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppc0FycmF5VHlwZSk6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06Omhhc0NsYXNzSW5mbyk6CisgICAgICAgICogZnRsL0ZUTE91
dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnRQdHIpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6c2lnbkV4dCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
Ojpsb2FkRmxvYXQpOgorCiAyMDEzLTA5LTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgVmVjdG9yTW92ZXIgc2hvdWxkIHVzZSBzdGQ6Om1vdmUKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHJldmlzaW9u
IDE1NTI1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDU4LDYgKzQ1OCwyNCBAQCBjb25zdCBjaGFyKiBhcnJheUNvbnZl
cnNpb25Ub1N0cmluZyhBcnJhCiAgICAgfQogfQogCitJbmRleGluZ1R5cGUgdG9JbmRleGluZ1No
YXBlKEFycmF5OjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBB
cnJheTo6SW50MzI6CisgICAgICAgIHJldHVybiBJbnQzMlNoYXBlOworICAgIGNhc2UgQXJyYXk6
OkRvdWJsZToKKyAgICAgICAgcmV0dXJuIERvdWJsZVNoYXBlOworICAgIGNhc2UgQXJyYXk6OkNv
bnRpZ3VvdXM6CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcGU7CisgICAgY2FzZSBBcnJh
eTo6QXJyYXlTdG9yYWdlOgorICAgICAgICByZXR1cm4gQXJyYXlTdG9yYWdlU2hhcGU7CisgICAg
Y2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKKyAgICAgICAgcmV0dXJuIFNsb3dQdXRB
cnJheVN0b3JhZ2VTaGFwZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gTm9JbmRleGlu
Z1NoYXBlOworICAgIH0KK30KKwogVHlwZWRBcnJheVR5cGUgdG9UeXBlZEFycmF5VHlwZShBcnJh
eTo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCShyZXZpc2lvbiAxNTUyNTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
NiArMTA0LDggQEAgY29uc3QgY2hhciogYXJyYXlDbGFzc1RvU3RyaW5nKEFycmF5OjpDbAogY29u
c3QgY2hhciogYXJyYXlTcGVjdWxhdGlvblRvU3RyaW5nKEFycmF5OjpTcGVjdWxhdGlvbik7CiBj
b25zdCBjaGFyKiBhcnJheUNvbnZlcnNpb25Ub1N0cmluZyhBcnJheTo6Q29udmVyc2lvbik7CiAK
K0luZGV4aW5nVHlwZSB0b0luZGV4aW5nU2hhcGUoQXJyYXk6OlR5cGUpOworCiBUeXBlZEFycmF5
VHlwZSB0b1R5cGVkQXJyYXlUeXBlKEFycmF5OjpUeXBlKTsKIEFycmF5OjpUeXBlIHRvQXJyYXlU
eXBlKFR5cGVkQXJyYXlUeXBlKTsKIApAQCAtMzgzLDYgKzM4NSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiB0eXBlKCkgPT0gQXJyYXk6OlN0cmluZzsKICAgICB9CiAgICAgCisgICAgSW5k
ZXhpbmdUeXBlIHNoYXBlTWFzaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdG9JbmRl
eGluZ1NoYXBlKHR5cGUoKSk7CisgICAgfQorICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIHR5cGVk
QXJyYXlUeXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB0b1R5cGVkQXJyYXlUeXBl
KHR5cGUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlh
dGlvbnMuaAkocmV2aXNpb24gMTU1MjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYmJyZXZpYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgc3RhdGlj
IGlubGluZSBMVHlwZSBpbnQxNlR5cGUoTENvbnRleHQgYwogc3RhdGljIGlubGluZSBMVHlwZSBp
bnQzMlR5cGUoTENvbnRleHQgY29udGV4dCkgeyByZXR1cm4gTExWTUludDMyVHlwZUluQ29udGV4
dChjb250ZXh0KTsgfQogc3RhdGljIGlubGluZSBMVHlwZSBpbnQ2NFR5cGUoTENvbnRleHQgY29u
dGV4dCkgeyByZXR1cm4gTExWTUludDY0VHlwZUluQ29udGV4dChjb250ZXh0KTsgfQogc3RhdGlj
IGlubGluZSBMVHlwZSBpbnRQdHJUeXBlKExDb250ZXh0IGNvbnRleHQpIHsgcmV0dXJuIExMVk1J
bnQ2NFR5cGVJbkNvbnRleHQoY29udGV4dCk7IH0KK3N0YXRpYyBpbmxpbmUgTFR5cGUgZmxvYXRU
eXBlKExDb250ZXh0IGNvbnRleHQpIHsgcmV0dXJuIExMVk1GbG9hdFR5cGVJbkNvbnRleHQoY29u
dGV4dCk7IH0KIHN0YXRpYyBpbmxpbmUgTFR5cGUgZG91YmxlVHlwZShMQ29udGV4dCBjb250ZXh0
KSB7IHJldHVybiBMTFZNRG91YmxlVHlwZUluQ29udGV4dChjb250ZXh0KTsgfQogCiBzdGF0aWMg
aW5saW5lIExUeXBlIHBvaW50ZXJUeXBlKExUeXBlIHR5cGUpIHsgcmV0dXJuIExMVk1Qb2ludGVy
VHlwZSh0eXBlLCAwKTsgfQpAQCAtMjAxLDYgKzIwMiw3IEBAIHN0YXRpYyBpbmxpbmUgTFZhbHVl
IGJ1aWxkTFNocihMQnVpbGRlciAKIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGJ1aWxkTm90KExCdWls
ZGVyIGJ1aWxkZXIsIExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gTExWTUJ1aWxkTm90KGJ1aWxkZXIs
IHZhbHVlLCAiIik7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGJ1aWxkTG9hZChMQnVpbGRlciBi
dWlsZGVyLCBMVmFsdWUgcG9pbnRlcikgeyByZXR1cm4gTExWTUJ1aWxkTG9hZChidWlsZGVyLCBw
b2ludGVyLCAiIik7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGJ1aWxkU3RvcmUoTEJ1aWxkZXIg
YnVpbGRlciwgTFZhbHVlIHZhbHVlLCBMVmFsdWUgcG9pbnRlcikgeyByZXR1cm4gTExWTUJ1aWxk
U3RvcmUoYnVpbGRlciwgdmFsdWUsIHBvaW50ZXIpOyB9CitzdGF0aWMgaW5saW5lIExWYWx1ZSBi
dWlsZFNFeHQoTEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJl
dHVybiBMTFZNQnVpbGRTRXh0KGJ1aWxkZXIsIHZhbHVlLCB0eXBlLCAiIik7IH0KIHN0YXRpYyBp
bmxpbmUgTFZhbHVlIGJ1aWxkWkV4dChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExU
eXBlIHR5cGUpIHsgcmV0dXJuIExMVk1CdWlsZFpFeHQoYnVpbGRlciwgdmFsdWUsIHR5cGUsICIi
KTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRGUFRvU0koTEJ1aWxkZXIgYnVpbGRlciwg
TFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQnVpbGRGUFRvU0koYnVpbGRl
ciwgdmFsdWUsIHR5cGUsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRTSVRvRlAo
TEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZN
QnVpbGRTSVRvRlAoYnVpbGRlciwgdmFsdWUsIHR5cGUsICIiKTsgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJ
KHJldmlzaW9uIDE1NTI1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMyArNDEsMTggQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogI2RlZmluZSBGT1JfRUFDSF9BQlNUUkFDVF9G
SUVMRChtYWNybykgXAogICAgIG1hY3JvKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgsIEJ1dHRlcmZs
eTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkgXAogICAgIG1hY3JvKEJ1dHRlcmZseV92ZWN0b3JM
ZW5ndGgsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkgXAorICAgIG1hY3JvKEpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpIFwKKyAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19tb2RlLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZNb2RlKCkpIFwKKyAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld192ZWN0b3Is
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSBcCiAgICAgbWFjcm8oSlNDZWxs
X3N0cnVjdHVyZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTT2Jq
ZWN0X2J1dHRlcmZseSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSBcCiAgICAgbWFjcm8o
SlNTdHJpbmdfbGVuZ3RoLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3Jv
KEpTU3RyaW5nX3ZhbHVlLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSBcCiAgICAgbWFjcm8o
U3RyaW5nSW1wbF9kYXRhLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpIFwKICAgICBtYWNybyhT
dHJpbmdJbXBsX2hhc2hBbmRGbGFncywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSkgXAorICAg
IG1hY3JvKFN0cnVjdHVyZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkp
IFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9i
amVjdE9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nVHlwZSwgU3RydWN0
dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV90eXBlSW5m
b0ZsYWdzLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSkKIAogI2RlZmluZSBGT1Jf
RUFDSF9JTkRFWEVEX0FCU1RSQUNUX0hFQVAobWFjcm8pIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE1NTI1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTEsNiArOTEsMjIgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIAogICAgIGNhc2UgR2xvYmFsVmFyV2F0Y2hwb2ludDoKICAgICAgICAgLy8gVGhlc2Ug
YXJlIE9LLgogICAgICAgICBicmVhazsKKyAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3Jh
Z2U6CisgICAgICAgIGlmIChpc1R5cGVkVmlldyhub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5
VHlwZSgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGls
ZTsKKyAgICBjYXNlIENoZWNrQXJyYXk6CisgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2Rl
KCkudHlwZSgpKSB7CisgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgICAgICBjYXNlIEFy
cmF5OjpEb3VibGU6CisgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChpc1R5cGVkVmlldyhu
b2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpKSkKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIHN3aXRjaCAobm9kZS0+
YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgpAQCAtOTgs
NiArMTE0LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAg
ICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoaXNUeXBlZFZpZXcobm9kZS0+YXJyYXlNb2RlKCku
dHlwZWRBcnJheVR5cGUoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBy
ZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTExMCw2
ICsxMjgsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAg
ICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChpc1R5cGVkVmlldyhub2RlLT5hcnJheU1vZGUoKS50
eXBlZEFycmF5VHlwZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZE9T
UkVudGVyOwogICAgICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAgICAgICAgIH0KICAg
ICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS5zcGVjdWxhdGlvbigpKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCShyZXZpc2lv
biAxNTUyNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICszOCwxNCBAQCBDb21tb25WYWx1ZXM6OkNvbW1v
blZhbHVlcyhMQ29udGV4dCBjb250CiAgICAgLCBpbnQzMihpbnQzMlR5cGUoY29udGV4dCkpCiAg
ICAgLCBpbnQ2NChpbnQ2NFR5cGUoY29udGV4dCkpCiAgICAgLCBpbnRQdHIoaW50UHRyVHlwZShj
b250ZXh0KSkKKyAgICAsIGZsb2F0VHlwZShGVEw6OmZsb2F0VHlwZShjb250ZXh0KSkKICAgICAs
IGRvdWJsZVR5cGUoRlRMOjpkb3VibGVUeXBlKGNvbnRleHQpKQogICAgICwgcmVmOChwb2ludGVy
VHlwZShpbnQ4KSkKICAgICAsIHJlZjE2KHBvaW50ZXJUeXBlKGludDE2KSkKICAgICAsIHJlZjMy
KHBvaW50ZXJUeXBlKGludDMyKSkKICAgICAsIHJlZjY0KHBvaW50ZXJUeXBlKGludDY0KSkKICAg
ICAsIHJlZlB0cihwb2ludGVyVHlwZShpbnRQdHIpKQorICAgICwgcmVmRmxvYXQocG9pbnRlclR5
cGUoZmxvYXRUeXBlKSkKICAgICAsIHJlZkRvdWJsZShwb2ludGVyVHlwZShkb3VibGVUeXBlKSkK
ICAgICAsIGJvb2xlYW5UcnVlKGNvbnN0SW50KGJvb2xlYW4sIHRydWUsIFplcm9FeHRlbmQpKQog
ICAgICwgYm9vbGVhbkZhbHNlKGNvbnN0SW50KGJvb2xlYW4sIGZhbHNlLCBaZXJvRXh0ZW5kKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAkocmV2
aXNpb24gMTU1MjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDE0IEBAIHB1YmxpYzoKICAgICBjb25z
dCBMVHlwZSBpbnQzMjsKICAgICBjb25zdCBMVHlwZSBpbnQ2NDsKICAgICBjb25zdCBMVHlwZSBp
bnRQdHI7CisgICAgY29uc3QgTFR5cGUgZmxvYXRUeXBlOwogICAgIGNvbnN0IExUeXBlIGRvdWJs
ZVR5cGU7CiAgICAgY29uc3QgTFR5cGUgcmVmODsKICAgICBjb25zdCBMVHlwZSByZWYxNjsKICAg
ICBjb25zdCBMVHlwZSByZWYzMjsKICAgICBjb25zdCBMVHlwZSByZWY2NDsKICAgICBjb25zdCBM
VHlwZSByZWZQdHI7CisgICAgY29uc3QgTFR5cGUgcmVmRmxvYXQ7CiAgICAgY29uc3QgTFR5cGUg
cmVmRG91YmxlOwogICAgIGNvbnN0IExWYWx1ZSBib29sZWFuVHJ1ZTsKICAgICBjb25zdCBMVmFs
dWUgYm9vbGVhbkZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE1NTI1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEs
NiArMzQxLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OgogICAgICAg
ICAgICAgY29tcGlsZUdldEJ1dHRlcmZseSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgICAgIGNvbXBpbGVHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDaGVja0FycmF5OgorICAgICAgICAgICAgY29tcGlsZUNoZWNrQXJyYXkoKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29t
cGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyMDMsNiArMTIw
OSwyNCBAQCBwcml2YXRlOgogICAgICAgICBzZXRTdG9yYWdlKG1fb3V0LmxvYWRQdHIobG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbV9oZWFwcy5KU09iamVjdF9idXR0ZXJmbHkpKTsKICAgICB9
CiAgICAgCisgICAgdm9pZCBjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSgpCisgICAg
eworICAgICAgICBzZXRTdG9yYWdlKG1fb3V0LmxvYWRQdHIobG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0b3IpKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCBjb21waWxlQ2hlY2tBcnJheSgpCisgICAgeworICAgICAgICBFZGdlIGVkZ2UgPSBt
X25vZGUtPmNoaWxkMSgpOworICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwoZWRnZSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZCht
X2dyYXBoLCBtX25vZGUsIG1fc3RhdGUuZm9yTm9kZShlZGdlKSkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICBzcGVjdWxhdGUoCisgICAgICAgICAgICBCYWRJbmRleGlu
Z1R5cGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKKyAgICAgICAgICAgIG1fb3V0LmJpdE5vdChp
c0FycmF5VHlwZShjZWxsLCBtX25vZGUtPmFycmF5TW9kZSgpKSkpOworICAgIH0KKyAgICAKICAg
ICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC0xMjEwLDEyICsxMjM0LDE4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgY2FzZSBBcnJheTo6Q29u
dGlndW91czogewogICAgICAgICAgICAgc2V0SW50MzIobV9vdXQubG9hZDMyKGxvd1N0b3JhZ2Uo
bV9ub2RlLT5jaGlsZDIoKSksIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCkpOwotICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG1fbm9k
ZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSkpIHsKKyAgICAgICAgICAgICAgICBzZXRJ
bnQzMigKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xMjgxLDEwICsxMzExLDkw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICBkZWZhdWx0OgorICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgICAgICBUeXBl
ZEFycmF5VHlwZSB0eXBlID0gbV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaXNUeXBlZFZpZXcodHlwZSkpIHsKKyAgICAg
ICAgICAgICAgICBMVmFsdWUgYXJyYXkgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKKyAgICAgICAgICAgICAg
ICAgICAgT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgbV9v
dXQuYWJvdmVPckVxdWFsKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIG1fb3V0Lmxv
YWQzMihhcnJheSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKSk7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVyIHBvaW50ZXIgPSBUeXBlZFBv
aW50ZXIoCisgICAgICAgICAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMs
CisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5zaGwoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuemVyb0V4dChpbmRleCwgbV9vdXQuaW50UHRyKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihsb2dFbGVtZW50U2l6
ZSh0eXBlKSkpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGlzSW50
KHR5cGUpKSB7CisgICAgICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQ7CisgICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQubG9hZDgo
cG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQubG9h
ZDE2KHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0
LmxvYWQzMihwb2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplKHR5cGUpIDwgNCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2lnbmVkKHR5cGUpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LnNpZ25FeHQocmVzdWx0LCBtX291dC5p
bnQzMik7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9vdXQuemVyb0V4dChyZXN1bHQsIG1fb3V0LmludDMyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNldEludDMyKHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChpc1NpZ25lZCh0eXBlKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0SW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+c2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGVGb3J3YXJkKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE92ZXJmbG93LCBub1ZhbHVlKCksIDAsIG1fb3V0Lmxlc3NUaGFuKHJl
c3VsdCwgbV9vdXQuaW50MzJaZXJvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1SW50
MzJWYWx1ZShyZXN1bHQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEludDMyKHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZSht
X291dC51bnNpZ25lZFRvRlAocmVzdWx0LCBtX291dC5kb3VibGVUeXBlKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoaXNGbG9hdCh0eXBlKSk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIFR5cGVGbG9hdDMyOgorICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBtX291dC5sb2FkRmxvYXQocG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVHlwZUZsb2F0NjQ6CisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1fb3V0LmxvYWREb3VibGUocG9pbnRlcik7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0LnNlbGVjdCgKKyAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlRXF1YWwocmVzdWx0LCByZXN1bHQpLCByZXN1
bHQsIG1fb3V0LmNvbnN0RG91YmxlKFFOYU4pKTsKKyAgICAgICAgICAgICAgICBzZXREb3VibGUo
cmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgfSB9CiAgICAgfQogICAgIAogICAgIHZv
aWQgY29tcGlsZVB1dEJ5VmFsKCkKQEAgLTIzMTksNiArMjQyOSw0NyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gaXNTdHJpbmcoY2VsbCk7CiAgICAgfQogICAgIAorICAgIExWYWx1ZSBpc0Fy
cmF5VHlwZShMVmFsdWUgY2VsbCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoYXJyYXlNb2RlLnR5cGUoKSkgeworICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoK
KyAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1
b3VzOiB7CisgICAgICAgICAgICBMVmFsdWUgaW5kZXhpbmdUeXBlID0gbV9vdXQubG9hZDgoCisg
ICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1
cmUpLAorICAgICAgICAgICAgICAgIG1faGVhcHMuU3RydWN0dXJlX2luZGV4aW5nVHlwZSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSkg
eworICAgICAgICAgICAgY2FzZSBBcnJheTo6T3JpZ2luYWxBcnJheToKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBBcnJheTo6QXJyYXk6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAorICAgICAgICAgICAgICAgICAgICBtX291
dC5iaXRBbmQoaW5kZXhpbmdUeXBlLCBtX291dC5jb25zdEludDgoSXNBcnJheSB8IEluZGV4aW5n
U2hhcGVNYXNrKSksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50OChJc0FycmF5
IHwgYXJyYXlNb2RlLnNoYXBlTWFzaygpKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKKyAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuYml0QW5kKGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQ4KElu
ZGV4aW5nU2hhcGVNYXNrKSksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50OChh
cnJheU1vZGUuc2hhcGVNYXNrKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3NJbmZv
KGNlbGwsIGNsYXNzSW5mb0ZvclR5cGUoYXJyYXlNb2RlLnR5cGVkQXJyYXlUeXBlKCkpKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMVmFsdWUgaGFzQ2xhc3NJbmZvKExWYWx1ZSBjZWxs
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBtX291
dC5lcXVhbCgKKyAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoCisgICAgICAgICAgICAgICAgbV9v
dXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAorICAgICAgICAgICAg
ICAgIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksCisgICAgICAgICAgICBtX291dC5jb25z
dEludFB0cihjbGFzc0luZm8pKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVPYmpl
Y3QoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKICAgICB7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNL
KGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY09iamVjdCwgaXNOb3RPYmplY3QoY2VsbCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAxNTUy
NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDgsNyArMTA4LDkgQEAgcHVibGljOgogICAgIExWYWx1ZSBjb25zdEludDgoaW50
OF90IHZhbHVlKSB7IHJldHVybiBjb25zdEludChpbnQ4LCB2YWx1ZSk7IH0KICAgICBMVmFsdWUg
Y29uc3RJbnQzMihpbnQzMl90IHZhbHVlKSB7IHJldHVybiBjb25zdEludChpbnQzMiwgdmFsdWUp
OyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBMVmFsdWUgY29uc3RJbnRQdHIoVCB2
YWx1ZSkgeyByZXR1cm4gY29uc3RJbnQoaW50UHRyLCBiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZh
bHVlKSk7IH0KKyAgICBMVmFsdWUgY29uc3RJbnRQdHIoVCogdmFsdWUpIHsgcmV0dXJuIGNvbnN0
SW50KGludFB0ciwgYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkpOyB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICBMVmFsdWUgY29uc3RJbnRQdHIoVCB2YWx1ZSkgeyByZXR1cm4g
Y29uc3RJbnQoaW50UHRyLCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4odmFsdWUpKTsgfQogICAgIExW
YWx1ZSBjb25zdEludDY0KGludDY0X3QgdmFsdWUpIHsgcmV0dXJuIGNvbnN0SW50KGludDY0LCB2
YWx1ZSk7IH0KICAgICBMVmFsdWUgY29uc3REb3VibGUoZG91YmxlIHZhbHVlKSB7IHJldHVybiBj
b25zdFJlYWwoZG91YmxlVHlwZSwgdmFsdWUpOyB9CiAgICAgCkBAIC0xNjksNiArMTcxLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gY2FsbChkb3VibGVBYnNJbnRyaW5zaWMoKSwgdmFsdWUp
OwogICAgIH0KICAgICAKKyAgICBMVmFsdWUgc2lnbkV4dChMVmFsdWUgdmFsdWUsIExUeXBlIHR5
cGUpIHsgcmV0dXJuIGJ1aWxkU0V4dChtX2J1aWxkZXIsIHZhbHVlLCB0eXBlKTsgfQogICAgIExW
YWx1ZSB6ZXJvRXh0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRaRXh0
KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CiAgICAgTFZhbHVlIGZwVG9JbnQoTFZhbHVlIHZh
bHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWlsZEZQVG9TSShtX2J1aWxkZXIsIHZhbHVlLCB0
eXBlKTsgfQogICAgIExWYWx1ZSBmcFRvSW50MzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBmcFRv
SW50KHZhbHVlLCBpbnQzMik7IH0KQEAgLTIwMSw2ICsyMDQsNyBAQCBwdWJsaWM6CiAgICAgTFZh
bHVlIGxvYWQzMihUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZChwb2ludGVyLCBy
ZWYzMik7IH0KICAgICBMVmFsdWUgbG9hZDY0KFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVy
biBsb2FkKHBvaW50ZXIsIHJlZjY0KTsgfQogICAgIExWYWx1ZSBsb2FkUHRyKFR5cGVkUG9pbnRl
ciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZlB0cik7IH0KKyAgICBMVmFsdWUg
bG9hZEZsb2F0KFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIHJl
ZkZsb2F0KTsgfQogICAgIExWYWx1ZSBsb2FkRG91YmxlKFR5cGVkUG9pbnRlciBwb2ludGVyKSB7
IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZkRvdWJsZSk7IH0KICAgICB2b2lkIHN0b3JlMzIoTFZh
bHVlIHZhbHVlLCBUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyBzdG9yZSh2YWx1ZSwgcG9pbnRlciwg
cmVmMzIpOyB9CiAgICAgdm9pZCBzdG9yZTY0KExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVyIHBv
aW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50ZXIsIHJlZjY0KTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210921</attachid>
            <date>2013-09-07 13:42:15 -0700</date>
            <delta_ts>2013-09-07 14:04:49 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20481</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1MjU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDEzLTA5LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHNob3VsZCBzdXBwb3J0IHR5cGVkIGFycmF5IEdldEJ5VmFsIGFuZCByZWxhdGVkIG9wcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwOTY1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBU
aGlzIGFkZHMgc3VwcG9ydCBmb3IgdHlwZWQgYXJyYXkgaW5zdGFudGlhdGlvbnMgb2YgdGhlIGZv
bGxvd2luZyBERkcgSVIgb3BzOgorICAgICAgICAKKyAgICAgICAgLSBHZXRCeVZhbAorICAgICAg
ICAKKyAgICAgICAgLSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlCisgICAgICAgIAorICAgICAg
ICAtIENoZWNrQXJyYXkKKyAgICAgICAgCisgICAgICAgIC0gR2V0QXJyYXlMZW5ndGgKKyAgICAg
ICAgCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIENoZWNrQXJyYXkgZm9yIEludDMyL0RvdWJsZS9D
b250aWd1b3VzIGFycmF5cy4KKworICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OnRvSW5kZXhpbmdTaGFwZSk6CisgICAgICAgICogZGZnL0RGR0FycmF5
TW9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6c2hhcGVNYXNrKToKKyAgICAg
ICAgKiBmdGwvRlRMQWJicmV2aWF0aW9ucy5oOgorICAgICAgICAoSlNDOjpGVEw6OmZsb2F0VHlw
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6YnVpbGRTRXh0KToKKyAgICAgICAgKEpTQzo6RlRMOjpi
dWlsZEZQQ2FzdCk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoK
KyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
YW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcyk6CisgICAgICAgICogZnRsL0ZU
TENvbW1vblZhbHVlcy5oOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tBcnJh
eSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRBcnJheUxl
bmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzQXJyYXlUeXBlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aGFzQ2xhc3NJbmZvKToKKyAgICAgICAg
KiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdEludFB0
cik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpzaWduRXh0KToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OmZwQ2FzdCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkRmxv
YXQpOgorCiAyMDEzLTA5LTA3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgVmVjdG9yTW92ZXIgc2hvdWxkIHVzZSBzdGQ6Om1vdmUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHJldmlzaW9uIDE1NTI1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDU4LDYgKzQ1OCwyNCBAQCBjb25zdCBjaGFyKiBhcnJheUNvbnZlcnNpb25Ub1N0
cmluZyhBcnJhCiAgICAgfQogfQogCitJbmRleGluZ1R5cGUgdG9JbmRleGluZ1NoYXBlKEFycmF5
OjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBBcnJheTo6SW50
MzI6CisgICAgICAgIHJldHVybiBJbnQzMlNoYXBlOworICAgIGNhc2UgQXJyYXk6OkRvdWJsZToK
KyAgICAgICAgcmV0dXJuIERvdWJsZVNoYXBlOworICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcGU7CisgICAgY2FzZSBBcnJheTo6QXJyYXlT
dG9yYWdlOgorICAgICAgICByZXR1cm4gQXJyYXlTdG9yYWdlU2hhcGU7CisgICAgY2FzZSBBcnJh
eTo6U2xvd1B1dEFycmF5U3RvcmFnZToKKyAgICAgICAgcmV0dXJuIFNsb3dQdXRBcnJheVN0b3Jh
Z2VTaGFwZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gTm9JbmRleGluZ1NoYXBlOwor
ICAgIH0KK30KKwogVHlwZWRBcnJheVR5cGUgdG9UeXBlZEFycmF5VHlwZShBcnJheTo6VHlwZSB0
eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheU1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5oCShyZXZpc2lvbiAxNTUyNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDgg
QEAgY29uc3QgY2hhciogYXJyYXlDbGFzc1RvU3RyaW5nKEFycmF5OjpDbAogY29uc3QgY2hhciog
YXJyYXlTcGVjdWxhdGlvblRvU3RyaW5nKEFycmF5OjpTcGVjdWxhdGlvbik7CiBjb25zdCBjaGFy
KiBhcnJheUNvbnZlcnNpb25Ub1N0cmluZyhBcnJheTo6Q29udmVyc2lvbik7CiAKK0luZGV4aW5n
VHlwZSB0b0luZGV4aW5nU2hhcGUoQXJyYXk6OlR5cGUpOworCiBUeXBlZEFycmF5VHlwZSB0b1R5
cGVkQXJyYXlUeXBlKEFycmF5OjpUeXBlKTsKIEFycmF5OjpUeXBlIHRvQXJyYXlUeXBlKFR5cGVk
QXJyYXlUeXBlKTsKIApAQCAtMzgzLDYgKzM4NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB0eXBlKCkgPT0gQXJyYXk6OlN0cmluZzsKICAgICB9CiAgICAgCisgICAgSW5kZXhpbmdUeXBl
IHNoYXBlTWFzaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdG9JbmRleGluZ1NoYXBl
KHR5cGUoKSk7CisgICAgfQorICAgIAogICAgIFR5cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBl
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB0b1R5cGVkQXJyYXlUeXBlKHR5cGUoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGlvbnMuaAko
cmV2aXNpb24gMTU1MjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYmJyZXZp
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgc3RhdGljIGlubGluZSBM
VHlwZSBpbnQxNlR5cGUoTENvbnRleHQgYwogc3RhdGljIGlubGluZSBMVHlwZSBpbnQzMlR5cGUo
TENvbnRleHQgY29udGV4dCkgeyByZXR1cm4gTExWTUludDMyVHlwZUluQ29udGV4dChjb250ZXh0
KTsgfQogc3RhdGljIGlubGluZSBMVHlwZSBpbnQ2NFR5cGUoTENvbnRleHQgY29udGV4dCkgeyBy
ZXR1cm4gTExWTUludDY0VHlwZUluQ29udGV4dChjb250ZXh0KTsgfQogc3RhdGljIGlubGluZSBM
VHlwZSBpbnRQdHJUeXBlKExDb250ZXh0IGNvbnRleHQpIHsgcmV0dXJuIExMVk1JbnQ2NFR5cGVJ
bkNvbnRleHQoY29udGV4dCk7IH0KK3N0YXRpYyBpbmxpbmUgTFR5cGUgZmxvYXRUeXBlKExDb250
ZXh0IGNvbnRleHQpIHsgcmV0dXJuIExMVk1GbG9hdFR5cGVJbkNvbnRleHQoY29udGV4dCk7IH0K
IHN0YXRpYyBpbmxpbmUgTFR5cGUgZG91YmxlVHlwZShMQ29udGV4dCBjb250ZXh0KSB7IHJldHVy
biBMTFZNRG91YmxlVHlwZUluQ29udGV4dChjb250ZXh0KTsgfQogCiBzdGF0aWMgaW5saW5lIExU
eXBlIHBvaW50ZXJUeXBlKExUeXBlIHR5cGUpIHsgcmV0dXJuIExMVk1Qb2ludGVyVHlwZSh0eXBl
LCAwKTsgfQpAQCAtMjAxLDExICsyMDIsMTMgQEAgc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRM
U2hyKExCdWlsZGVyIAogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGROb3QoTEJ1aWxkZXIgYnVp
bGRlciwgTFZhbHVlIHZhbHVlKSB7IHJldHVybiBMTFZNQnVpbGROb3QoYnVpbGRlciwgdmFsdWUs
ICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRMb2FkKExCdWlsZGVyIGJ1aWxkZXIs
IExWYWx1ZSBwb2ludGVyKSB7IHJldHVybiBMTFZNQnVpbGRMb2FkKGJ1aWxkZXIsIHBvaW50ZXIs
ICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRTdG9yZShMQnVpbGRlciBidWlsZGVy
LCBMVmFsdWUgdmFsdWUsIExWYWx1ZSBwb2ludGVyKSB7IHJldHVybiBMTFZNQnVpbGRTdG9yZShi
dWlsZGVyLCB2YWx1ZSwgcG9pbnRlcik7IH0KK3N0YXRpYyBpbmxpbmUgTFZhbHVlIGJ1aWxkU0V4
dChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIExM
Vk1CdWlsZFNFeHQoYnVpbGRlciwgdmFsdWUsIHR5cGUsICIiKTsgfQogc3RhdGljIGlubGluZSBM
VmFsdWUgYnVpbGRaRXh0KExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlw
ZSkgeyByZXR1cm4gTExWTUJ1aWxkWkV4dChidWlsZGVyLCB2YWx1ZSwgdHlwZSwgIiIpOyB9CiBz
dGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZEZQVG9TSShMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUg
dmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIExMVk1CdWlsZEZQVG9TSShidWlsZGVyLCB2YWx1
ZSwgdHlwZSwgIiIpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZFNJVG9GUChMQnVpbGRl
ciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIExMVk1CdWlsZFNJ
VG9GUChidWlsZGVyLCB2YWx1ZSwgdHlwZSwgIiIpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBi
dWlsZFVJVG9GUChMQnVpbGRlciBidWlsZGVyLCBMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsg
cmV0dXJuIExMVk1CdWlsZFVJVG9GUChidWlsZGVyLCB2YWx1ZSwgdHlwZSwgIiIpOyB9CiBzdGF0
aWMgaW5saW5lIExWYWx1ZSBidWlsZEludENhc3QoTEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVlIHZh
bHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQnVpbGRJbnRDYXN0KGJ1aWxkZXIsIHZhbHVl
LCB0eXBlLCAiIik7IH0KK3N0YXRpYyBpbmxpbmUgTFZhbHVlIGJ1aWxkRlBDYXN0KExCdWlsZGVy
IGJ1aWxkZXIsIExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gTExWTUJ1aWxkRlBD
YXN0KGJ1aWxkZXIsIHZhbHVlLCB0eXBlLCAiIik7IH0KIHN0YXRpYyBpbmxpbmUgTFZhbHVlIGJ1
aWxkSW50VG9QdHIoTEJ1aWxkZXIgYnVpbGRlciwgTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7
IHJldHVybiBMTFZNQnVpbGRJbnRUb1B0cihidWlsZGVyLCB2YWx1ZSwgdHlwZSwgIiIpOyB9CiBz
dGF0aWMgaW5saW5lIExWYWx1ZSBidWlsZFB0clRvSW50KExCdWlsZGVyIGJ1aWxkZXIsIExWYWx1
ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gTExWTUJ1aWxkUHRyVG9JbnQoYnVpbGRlciwg
dmFsdWUsIHR5cGUsICIiKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgYnVpbGRCaXRDYXN0KExC
dWlsZGVyIGJ1aWxkZXIsIExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gTExWTUJ1
aWxkQml0Q2FzdChidWlsZGVyLCB2YWx1ZSwgdHlwZSwgIiIpOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAko
cmV2aXNpb24gMTU1MjUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwxOCBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAjZGVmaW5lIEZPUl9FQUNIX0FCU1RSQUNUX0ZJ
RUxEKG1hY3JvKSBcCiAgICAgbWFjcm8oQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCwgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSBcCiAgICAgbWFjcm8oQnV0dGVyZmx5X3ZlY3Rvckxl
bmd0aCwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSBcCisgICAgbWFjcm8oSlNB
cnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSkgXAorICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X21vZGUsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZk1vZGUoKSkgXAorICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvciwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpIFwKICAgICBtYWNybyhKU0NlbGxf
c3RydWN0dXJlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNPYmpl
Y3RfYnV0dGVyZmx5LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhK
U1N0cmluZ19sZW5ndGgsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFjcm8o
SlNTdHJpbmdfdmFsdWUsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpIFwKICAgICBtYWNybyhT
dHJpbmdJbXBsX2RhdGEsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0
cmluZ0ltcGxfaGFzaEFuZEZsYWdzLCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSBcCisgICAg
bWFjcm8oU3RydWN0dXJlX2NsYXNzSW5mbywgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9nbG9iYWxPYmplY3QsIFN0cnVjdHVyZTo6Z2xvYmFsT2Jq
ZWN0T2Zmc2V0KCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdUeXBlLCBTdHJ1Y3R1
cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3R5cGVJbmZv
RmxhZ3MsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKQogCiAjZGVmaW5lIEZPUl9F
QUNIX0lOREVYRURfQUJTVFJBQ1RfSEVBUChtYWNybykgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTU1MjUzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw2ICs5MSwyMiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogCiAgICAgY2FzZSBHbG9iYWxWYXJXYXRjaHBvaW50OgogICAgICAgICAvLyBUaGVzZSBh
cmUgT0suCiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZToKKyAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlU
eXBlKCkpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxl
OworICAgIGNhc2UgQ2hlY2tBcnJheToKKyAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUo
KS50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAgIGNhc2UgQXJy
YXk6OkRvdWJsZToKKyAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG5v
ZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CisgICAgICAgIH0KKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgc3dpdGNoIChub2RlLT5h
cnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CkBAIC05OCw2
ICsxMTQsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAg
ICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChpc1R5cGVkVmlldyhub2RlLT5hcnJheU1vZGUoKS50
eXBlZEFycmF5VHlwZSgpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIHJl
dHVybiBDYW5ub3RDb21waWxlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTEwLDYg
KzEyOCw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAg
ICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KG5vZGUtPmFycmF5TW9kZSgpLnR5
cGVkQXJyYXlUeXBlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBDYW5Db21waWxlQW5kT1NS
RW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICAgICAgfQogICAg
ICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnNwZWN1bGF0aW9uKCkpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAJKHJldmlzaW9u
IDE1NTI1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIgKzM4LDE0IEBAIENvbW1vblZhbHVlczo6Q29tbW9u
VmFsdWVzKExDb250ZXh0IGNvbnQKICAgICAsIGludDMyKGludDMyVHlwZShjb250ZXh0KSkKICAg
ICAsIGludDY0KGludDY0VHlwZShjb250ZXh0KSkKICAgICAsIGludFB0cihpbnRQdHJUeXBlKGNv
bnRleHQpKQorICAgICwgZmxvYXRUeXBlKEZUTDo6ZmxvYXRUeXBlKGNvbnRleHQpKQogICAgICwg
ZG91YmxlVHlwZShGVEw6OmRvdWJsZVR5cGUoY29udGV4dCkpCiAgICAgLCByZWY4KHBvaW50ZXJU
eXBlKGludDgpKQogICAgICwgcmVmMTYocG9pbnRlclR5cGUoaW50MTYpKQogICAgICwgcmVmMzIo
cG9pbnRlclR5cGUoaW50MzIpKQogICAgICwgcmVmNjQocG9pbnRlclR5cGUoaW50NjQpKQogICAg
ICwgcmVmUHRyKHBvaW50ZXJUeXBlKGludFB0cikpCisgICAgLCByZWZGbG9hdChwb2ludGVyVHlw
ZShmbG9hdFR5cGUpKQogICAgICwgcmVmRG91YmxlKHBvaW50ZXJUeXBlKGRvdWJsZVR5cGUpKQog
ICAgICwgYm9vbGVhblRydWUoY29uc3RJbnQoYm9vbGVhbiwgdHJ1ZSwgWmVyb0V4dGVuZCkpCiAg
ICAgLCBib29sZWFuRmFsc2UoY29uc3RJbnQoYm9vbGVhbiwgZmFsc2UsIFplcm9FeHRlbmQpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCShyZXZp
c2lvbiAxNTUyNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiArNTAsMTQgQEAgcHVibGljOgogICAgIGNvbnN0
IExUeXBlIGludDMyOwogICAgIGNvbnN0IExUeXBlIGludDY0OwogICAgIGNvbnN0IExUeXBlIGlu
dFB0cjsKKyAgICBjb25zdCBMVHlwZSBmbG9hdFR5cGU7CiAgICAgY29uc3QgTFR5cGUgZG91Ymxl
VHlwZTsKICAgICBjb25zdCBMVHlwZSByZWY4OwogICAgIGNvbnN0IExUeXBlIHJlZjE2OwogICAg
IGNvbnN0IExUeXBlIHJlZjMyOwogICAgIGNvbnN0IExUeXBlIHJlZjY0OwogICAgIGNvbnN0IExU
eXBlIHJlZlB0cjsKKyAgICBjb25zdCBMVHlwZSByZWZGbG9hdDsKICAgICBjb25zdCBMVHlwZSBy
ZWZEb3VibGU7CiAgICAgY29uc3QgTFZhbHVlIGJvb2xlYW5UcnVlOwogICAgIGNvbnN0IExWYWx1
ZSBib29sZWFuRmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTU1MjUzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MSw2
ICszNDEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgICAg
ICAgICBjb21waWxlR2V0QnV0dGVyZmx5KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgorICAgICAgICAgICAgY29tcGlsZUdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENoZWNrQXJyYXk6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tBcnJheSgpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21w
aWxlR2V0QXJyYXlMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIwMyw2ICsxMjA5
LDI0IEBAIHByaXZhdGU6CiAgICAgICAgIHNldFN0b3JhZ2UobV9vdXQubG9hZFB0cihsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRlcmZseSkpOwogICAgIH0K
ICAgICAKKyAgICB2b2lkIGNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKCkKKyAgICB7
CisgICAgICAgIHNldFN0b3JhZ2UobV9vdXQubG9hZFB0cihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpLCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X3ZlY3RvcikpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGNvbXBpbGVDaGVja0FycmF5KCkKKyAgICB7CisgICAgICAgIEVkZ2UgZWRnZSA9IG1f
bm9kZS0+Y2hpbGQxKCk7CisgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChlZGdlKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmFscmVhZHlDaGVja2VkKG1f
Z3JhcGgsIG1fbm9kZSwgbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgICAgIHNwZWN1bGF0ZSgKKyAgICAgICAgICAgIEJhZEluZGV4aW5n
VHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCAwLAorICAgICAgICAgICAgbV9vdXQuYml0Tm90KGlz
QXJyYXlUeXBlKGNlbGwsIG1fbm9kZS0+YXJyYXlNb2RlKCkpKSk7CisgICAgfQorICAgIAogICAg
IHZvaWQgY29tcGlsZUdldEFycmF5TGVuZ3RoKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9u
b2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTEyMTAsMTIgKzEyMzQsMTggQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgogICAgICAgICBjYXNlIEFycmF5OjpDb250
aWd1b3VzOiB7CiAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5sb2FkMzIobG93U3RvcmFnZSht
X25vZGUtPmNoaWxkMigpKSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKSk7Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoaXNUeXBlZFZpZXcobV9ub2Rl
LT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpKSkgeworICAgICAgICAgICAgICAgIHNldElu
dDMyKAorICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIobG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTEyODEsMTAgKzEzMTEsOTAg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAgICAg
Ci0gICAgICAgIGRlZmF1bHQ6CisgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgIFR5cGVk
QXJyYXlUeXBlIHR5cGUgPSBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChpc1R5cGVkVmlldyh0eXBlKSkgeworICAgICAg
ICAgICAgICAgIExWYWx1ZSBhcnJheSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKAorICAgICAgICAgICAgICAg
ICAgICBPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCAwLAorICAgICAgICAgICAgICAgICAgICBtX291
dC5hYm92ZU9yRXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgbV9vdXQubG9h
ZDMyKGFycmF5LCBtX2hlYXBzLkpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCkpKTsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBUeXBlZFBvaW50ZXIgcG9pbnRlciA9IFR5cGVkUG9p
bnRlcigKKyAgICAgICAgICAgICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcywK
KyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRkKAorICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnNobCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX291dC56ZXJvRXh0KGluZGV4LCBtX291dC5pbnRQdHIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGxvZ0VsZW1lbnRTaXpl
KHR5cGUpKSkpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQo
dHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdDsKKyAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgeworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX291dC5sb2FkOChw
b2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX291dC5sb2Fk
MTYocG9pbnRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQu
bG9hZDMyKHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPCA0KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTaWduZWQodHlwZSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9vdXQuc2lnbkV4dChyZXN1bHQsIG1fb3V0Lmlu
dDMyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtX291dC56ZXJvRXh0KHJlc3VsdCwgbV9vdXQuaW50MzIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2lnbmVkKHR5cGUpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRJbnQzMihyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZUZvcndhcmQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgT3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwgbV9vdXQubGVzc1RoYW4ocmVz
dWx0LCBtX291dC5pbnQzMlplcm8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVJbnQz
MlZhbHVlKHJlc3VsdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIocmVzdWx0
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgc2V0RG91YmxlKG1f
b3V0LnVuc2lnbmVkVG9GUChyZXN1bHQsIG1fb3V0LmRvdWJsZVR5cGUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIEFTU0VSVChpc0Zsb2F0KHR5cGUpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0OworICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkg
eworICAgICAgICAgICAgICAgIGNhc2UgVHlwZUZsb2F0MzI6CisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG1fb3V0LmZwQ2FzdChtX291dC5sb2FkRmxvYXQocG9pbnRlciksIG1fb3V0LmRv
dWJsZVR5cGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIFR5cGVGbG9hdDY0OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX291dC5sb2Fk
RG91YmxlKHBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtX291dC5zZWxlY3QoCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmRv
dWJsZUVxdWFsKHJlc3VsdCwgcmVzdWx0KSwgcmVzdWx0LCBtX291dC5jb25zdERvdWJsZShRTmFO
KSk7CisgICAgICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgICAgIH0gfQogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbCgpCkBAIC0y
MzE5LDYgKzI0MjksNDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGNlbGwp
OwogICAgIH0KICAgICAKKyAgICBMVmFsdWUgaXNBcnJheVR5cGUoTFZhbHVlIGNlbGwsIEFycmF5
TW9kZSBhcnJheU1vZGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS50eXBlKCkp
IHsKKyAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJs
ZToKKyAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czogeworICAgICAgICAgICAgTFZhbHVl
IGluZGV4aW5nVHlwZSA9IG1fb3V0LmxvYWQ4KAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQ
dHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwKKyAgICAgICAgICAgICAgICBtX2hl
YXBzLlN0cnVjdHVyZV9pbmRleGluZ1R5cGUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBz
d2l0Y2ggKGFycmF5TW9kZS5hcnJheUNsYXNzKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6
Ok9yaWdpbmFsQXJyYXk6CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGNhc2UgQXJyYXk6OkFycmF5OgorICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5l
cXVhbCgKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuYml0QW5kKGluZGV4aW5nVHlwZSwgbV9v
dXQuY29uc3RJbnQ4KElzQXJyYXkgfCBJbmRleGluZ1NoYXBlTWFzaykpLAorICAgICAgICAgICAg
ICAgICAgICBtX291dC5jb25zdEludDgoSXNBcnJheSB8IGFycmF5TW9kZS5zaGFwZU1hc2soKSkp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9vdXQuZXF1YWwoCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmJpdEFuZChp
bmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50OChJbmRleGluZ1NoYXBlTWFzaykpLAorICAgICAg
ICAgICAgICAgICAgICBtX291dC5jb25zdEludDgoYXJyYXlNb2RlLnNoYXBlTWFzaygpKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGhhc0NsYXNzSW5mbyhjZWxsLCBjbGFzc0luZm9Gb3JUeXBlKGFy
cmF5TW9kZS50eXBlZEFycmF5VHlwZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
TFZhbHVlIGhhc0NsYXNzSW5mbyhMVmFsdWUgY2VsbCwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8pCisgICAgeworICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCisgICAgICAgICAgICBtX291
dC5sb2FkUHRyKAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5K
U0NlbGxfc3RydWN0dXJlKSwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLlN0cnVjdHVyZV9jbGFz
c0luZm8pLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoY2xhc3NJbmZvKSk7CisgICAg
fQorICAgIAogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwp
CiAgICAgewogICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2Us
IFNwZWNPYmplY3QsIGlzTm90T2JqZWN0KGNlbGwpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTU1MjUzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw5IEBAIHB1
YmxpYzoKICAgICBMVmFsdWUgY29uc3RJbnQ4KGludDhfdCB2YWx1ZSkgeyByZXR1cm4gY29uc3RJ
bnQoaW50OCwgdmFsdWUpOyB9CiAgICAgTFZhbHVlIGNvbnN0SW50MzIoaW50MzJfdCB2YWx1ZSkg
eyByZXR1cm4gY29uc3RJbnQoaW50MzIsIHZhbHVlKTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci0gICAgTFZhbHVlIGNvbnN0SW50UHRyKFQgdmFsdWUpIHsgcmV0dXJuIGNvbnN0SW50KGlu
dFB0ciwgYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkpOyB9CisgICAgTFZhbHVlIGNvbnN0
SW50UHRyKFQqIHZhbHVlKSB7IHJldHVybiBjb25zdEludChpbnRQdHIsIGJpdHdpc2VfY2FzdDxp
bnRwdHJfdD4odmFsdWUpKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgTFZhbHVl
IGNvbnN0SW50UHRyKFQgdmFsdWUpIHsgcmV0dXJuIGNvbnN0SW50KGludFB0ciwgc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KHZhbHVlKSk7IH0KICAgICBMVmFsdWUgY29uc3RJbnQ2NChpbnQ2NF90IHZh
bHVlKSB7IHJldHVybiBjb25zdEludChpbnQ2NCwgdmFsdWUpOyB9CiAgICAgTFZhbHVlIGNvbnN0
RG91YmxlKGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4gY29uc3RSZWFsKGRvdWJsZVR5cGUsIHZhbHVl
KTsgfQogICAgIApAQCAtMTY5LDYgKzE3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNh
bGwoZG91YmxlQWJzSW50cmluc2ljKCksIHZhbHVlKTsKICAgICB9CiAgICAgCisgICAgTFZhbHVl
IHNpZ25FeHQoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBidWlsZFNFeHQobV9i
dWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KICAgICBMVmFsdWUgemVyb0V4dChMVmFsdWUgdmFsdWUs
IExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkWkV4dChtX2J1aWxkZXIsIHZhbHVlLCB0eXBlKTsg
fQogICAgIExWYWx1ZSBmcFRvSW50KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4g
YnVpbGRGUFRvU0kobV9idWlsZGVyLCB2YWx1ZSwgdHlwZSk7IH0KICAgICBMVmFsdWUgZnBUb0lu
dDMyKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gZnBUb0ludCh2YWx1ZSwgaW50MzIpOyB9CkBAIC0x
NzgsNiArMTgxLDcgQEAgcHVibGljOgogICAgIExWYWx1ZSB1bnNpZ25lZFRvRG91YmxlKExWYWx1
ZSB2YWx1ZSkgeyByZXR1cm4gdW5zaWduZWRUb0ZQKHZhbHVlLCBkb3VibGVUeXBlKTsgfQogICAg
IExWYWx1ZSBpbnRDYXN0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRJ
bnRDYXN0KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CiAgICAgTFZhbHVlIGNhc3RUb0ludDMy
KExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gaW50Q2FzdCh2YWx1ZSwgaW50MzIpOyB9CisgICAgTFZh
bHVlIGZwQ2FzdChMVmFsdWUgdmFsdWUsIExUeXBlIHR5cGUpIHsgcmV0dXJuIGJ1aWxkRlBDYXN0
KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CiAgICAgTFZhbHVlIGludFRvUHRyKExWYWx1ZSB2
YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gYnVpbGRJbnRUb1B0cihtX2J1aWxkZXIsIHZhbHVl
LCB0eXBlKTsgfQogICAgIExWYWx1ZSBiaXRDYXN0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkg
eyByZXR1cm4gYnVpbGRCaXRDYXN0KG1fYnVpbGRlciwgdmFsdWUsIHR5cGUpOyB9CiAgICAgCkBA
IC0yMDEsNiArMjA1LDcgQEAgcHVibGljOgogICAgIExWYWx1ZSBsb2FkMzIoVHlwZWRQb2ludGVy
IHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgcmVmMzIpOyB9CiAgICAgTFZhbHVlIGxv
YWQ2NChUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZChwb2ludGVyLCByZWY2NCk7
IH0KICAgICBMVmFsdWUgbG9hZFB0cihUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9h
ZChwb2ludGVyLCByZWZQdHIpOyB9CisgICAgTFZhbHVlIGxvYWRGbG9hdChUeXBlZFBvaW50ZXIg
cG9pbnRlcikgeyByZXR1cm4gbG9hZChwb2ludGVyLCByZWZGbG9hdCk7IH0KICAgICBMVmFsdWUg
bG9hZERvdWJsZShUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZChwb2ludGVyLCBy
ZWZEb3VibGUpOyB9CiAgICAgdm9pZCBzdG9yZTMyKExWYWx1ZSB2YWx1ZSwgVHlwZWRQb2ludGVy
IHBvaW50ZXIpIHsgc3RvcmUodmFsdWUsIHBvaW50ZXIsIHJlZjMyKTsgfQogICAgIHZvaWQgc3Rv
cmU2NChMVmFsdWUgdmFsdWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHN0b3JlKHZhbHVlLCBw
b2ludGVyLCByZWY2NCk7IH0K
</data>
<flag name="review"
          id="232953"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>