<?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>200675</bug_id>
          
          <creation_ts>2019-08-13 09:22:55 -0700</creation_ts>
          <short_desc>Rename StringBuilder::append(UChar32) to StringBuilder::appendCharacter(UChar32) to avoid accidental change in behavior when replacing append with flexibleAppend</short_desc>
          <delta_ts>2019-08-13 20:16:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1560812</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-13 09:22:55 -0700</bug_when>
    <thetext>Rename StringBuilder::append(UChar32) to StringBuilder::appendCharacter(SUChar32) to avoid accidental change in behavior when replacing append with flexibleAppend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560818</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-13 09:28:44 -0700</bug_when>
    <thetext>When we switch StringBuilder::append(...) to be based on the StringConcatenate/makeString flexibleAppend implementation, if we don&apos;t change anything, the behavior of StringBuilder::append(UChar32) will go from appending a character to appending a stringified number.

To work around this, we can rename StringBuilder::append(UChar32) to StringBuilder::appendCharacter(UChar32) and update all the call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560820</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-13 09:30:41 -0700</bug_when>
    <thetext>Longer term, it would be nicer to have a better solution for this, and one that can be used consistently between makeString() and StringBuilder.

The only idea I have right now is adding a struct Character/CodePoint { UChar32 } that people can wrap UChar32s in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560821</commentid>
    <comment_count>3</comment_count>
      <attachid>376174</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-13 09:33:48 -0700</bug_when>
    <thetext>Created attachment 376174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560828</commentid>
    <comment_count>4</comment_count>
      <attachid>376174</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-13 09:59:21 -0700</bug_when>
    <thetext>Comment on attachment 376174
Patch

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

&gt; Source/WTF/wtf/FileSystem.cpp:185
&gt; +        result.appendCharacter(toASCIIHexValue(inputString[i + 2], inputString[i + 3]) &lt;&lt; 8 | toASCIIHexValue(inputString[i + 4], inputString[i + 5]));

This looks like it’s a 4 digit hex value. No reason to convert that to UChar32 instead of UChar. Could just use a local UChar instead.

&gt; Source/WebCore/css/CSSMarkup.cpp:101
&gt; +            appendTo.appendCharacter(0xfffd);

This one doesn’t need the UChar32 overload and is only getting that one because the constant 0xfffd is int, not UChar. Could use the replacementCharacter UChar constant from CharacterNames.h instead and then would be able to use the normal append instead.

&gt; Source/WebCore/platform/mock/mediasource/MockBox.cpp:54
&gt; +        builder.appendCharacter(array-&gt;item(i));

An 8-bit integer doesn’t need to be appended as a UChar32. The item function returns an int, but one that’s guaranteed to be an 8-bit signed integer, I think. Maybe we should add a typecast here instead of calling appendCharacter?

&gt; Source/WebCore/platform/mock/mediasource/MockBox.cpp:75
&gt; +        builder.appendCharacter(array-&gt;item(i));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560844</commentid>
    <comment_count>5</comment_count>
      <attachid>376174</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-13 10:26:24 -0700</bug_when>
    <thetext>Comment on attachment 376174
Patch

Another thought: We might want at least one overload  of appendCharacter even if they are deleted so we don’t call this slightly more expensive function accidentally.  For  types like char, UChar and LChar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561054</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-08-13 20:15:04 -0700</bug_when>
    <thetext>Committed r248659: &lt;https://trac.webkit.org/changeset/248659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561055</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-13 20:16:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/54286358&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376174</attachid>
            <date>2019-08-13 09:33:48 -0700</date>
            <delta_ts>2019-08-13 09:59:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200675-20190813093348.patch</filename>
            <type>text/plain</type>
            <size>16340</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NTk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE5LTA4LTEzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKFVDaGFyMzIpIHRvIFN0cmluZ0J1aWxkZXI6OmFw
cGVuZENoYXJhY3RlcihVQ2hhcjMyKSB0byBhdm9pZCBhY2NpZGVudGFsIGNoYW5nZSBpbiBiZWhh
dmlvciB3aGVuIHJlcGxhY2luZyBhcHBlbmQgd2l0aCBmbGV4aWJsZUFwcGVuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNjc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB5YXJyL1lhcnJQYXJzZXIu
aDoKKyAgICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjp0cnlDb25zdW1lR3JvdXBOYW1lKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6UGFyc2VyOjp0cnlDb25zdW1lVW5pY29kZVByb3BlcnR5RXhwcmVz
c2lvbik6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lIGZyb20gU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kKFVDaGFyMzIpIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcihVQ2hhcjMyKS4K
KwogMjAxOS0wOC0xMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIEpTQ29udGV4dCBJbnNwZWN0b3I6IEJhc2ljIENvbW1hbmRMaW5lQVBJIGRvZXNuJ3Qg
d29yawpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAkocmV2aXNp
b24gMjQ4NTk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIGlm
IChpc0lkZW50aWZpZXJTdGFydChjaCkpIHsKICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgaWRl
bnRpZmllckJ1aWxkZXI7Ci0gICAgICAgICAgICBpZGVudGlmaWVyQnVpbGRlci5hcHBlbmQoY2gp
OworICAgICAgICAgICAgaWRlbnRpZmllckJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVyKGNoKTsKIAog
ICAgICAgICAgICAgd2hpbGUgKCFhdEVuZE9mUGF0dGVybigpKSB7CiAgICAgICAgICAgICAgICAg
Y2ggPSB0cnlDb25zdW1lSWRlbnRpZmllckNoYXJhY3RlcigpOwpAQCAtMTA0Myw3ICsxMDQzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpZmllclBhcnQoY2gpKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGlkZW50aWZpZXJC
dWlsZGVyLmFwcGVuZChjaCk7CisgICAgICAgICAgICAgICAgaWRlbnRpZmllckJ1aWxkZXIuYXBw
ZW5kQ2hhcmFjdGVyKGNoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xMDY0LDcg
KzEwNjQsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGZvdW5kRXF1YWxzID0gZmFsc2U7CiAg
ICAgICAgIHVuc2lnbmVkIGVycm9ycyA9IDA7CiAKLSAgICAgICAgZXhwcmVzc2lvbkJ1aWxkZXIu
YXBwZW5kKGNvbnN1bWUoKSk7CisgICAgICAgIGV4cHJlc3Npb25CdWlsZGVyLmFwcGVuZENoYXJh
Y3Rlcihjb25zdW1lKCkpOwogCiAgICAgICAgIHdoaWxlICghYXRFbmRPZlBhdHRlcm4oKSkgewog
ICAgICAgICAgICAgaW50IGNoID0gcGVlaygpOwpAQCAtMTA5OSw3ICsxMDk5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzVW5pY29kZVByb3BlcnR5VmFsdWVFeHByZXNz
aW9uQ2hhcihjaCkpCiAgICAgICAgICAgICAgICAgZXJyb3JzKys7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgZXhwcmVzc2lvbkJ1aWxkZXIuYXBwZW5kKGNoKTsKKyAgICAgICAg
ICAgICAgICBleHByZXNzaW9uQnVpbGRlci5hcHBlbmRDaGFyYWN0ZXIoY2gpOwogICAgICAgICB9
CiAKICAgICAgICAgbV9lcnJvckNvZGUgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVy
dHlFeHByZXNzaW9uOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODU5NSkKKysrIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDgtMTMgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTdHJpbmdCdWlsZGVy
OjphcHBlbmQoVUNoYXIzMikgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVyKFVDaGFy
MzIpIHRvIGF2b2lkIGFjY2lkZW50YWwgY2hhbmdlIGluIGJlaGF2aW9yIHdoZW4gcmVwbGFjaW5n
IGFwcGVuZCB3aXRoIGZsZXhpYmxlQXBwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIHdlIHN3aXRjaCBTdHJpbmdCdWlsZGVyOjphcHBlbmQo
Li4uKSB0byBiZSBiYXNlZCBvbiB0aGUgU3RyaW5nQ29uY2F0ZW5hdGUvbWFrZVN0cmluZyBmbGV4
aWJsZUFwcGVuZCAKKyAgICAgICAgaW1wbGVtZW50YXRpb24sIGlmIHdlIGRvbid0IGNoYW5nZSBh
bnl0aGluZywgdGhlIGJlaGF2aW9yIG9mIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChVQ2hhcjMyKSB3
aWxsIGdvIGZyb20gCisgICAgICAgIGFwcGVuZGluZyBhIGNoYXJhY3RlciB0byBhcHBlbmRpbmcg
YSBzdHJpbmdpZmllZCBudW1iZXIuCisKKyAgICAgICAgVG8gd29yayBhcm91bmQgdGhpcywgd2Ug
Y2FuIHJlbmFtZSBTdHJpbmdCdWlsZGVyOjphcHBlbmQoVUNoYXIzMikgdG8gU3RyaW5nQnVpbGRl
cjo6YXBwZW5kQ2hhcmFjdGVyKFVDaGFyMzIpIAorICAgICAgICBhbmQgdXBkYXRlIGFsbCB0aGUg
Y2FsbCBzaXRlcy4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVyKToKKyAgICAgICAgUmVuYW1l
ZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoVUNoYXIzMikgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5k
Q2hhcmFjdGVyKFVDaGFyMzIpLgorCisgICAgICAgICogd3RmL0ZpbGVTeXN0ZW0uY3BwOgorICAg
ICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVjb2RlRnJvbUZpbGVuYW1lKToKKyAgICAgICAg
VXBkYXRlIGZvciBuZXcgbmFtZS4KKwogMjAxOS0wOC0xMiAgVGFrYXNoaSBLb21vcmkgIDxUYWth
c2hpLktvbW9yaUBzb255LmNvbT4KIAogICAgICAgICBbV1RGXSBUaHJlYWQ6OnJlbW92ZUZyb21U
aHJlYWRHcm91cCBsZWFrcyB3ZWFrIHBvaW50ZXJzLgpJbmRleDogU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAJ
KHJldmlzaW9uIDI0ODU5NSkKKysrIFNvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgU3RyaW5nIGRlY29kZUZyb21GaWxlbmFtZShj
b25zdCBTdHJpbmcmIAogICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChpbnB1dFN0cmluZ1tp
ICsgNV0pKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICByZXN1bHQuYXBwZW5k
KHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgMl0sIGlucHV0U3RyaW5nW2kgKyAzXSkg
PDwgOCB8IHRvQVNDSUlIZXhWYWx1ZShpbnB1dFN0cmluZ1tpICsgNF0sIGlucHV0U3RyaW5nW2kg
KyA1XSkpOworICAgICAgICByZXN1bHQuYXBwZW5kQ2hhcmFjdGVyKHRvQVNDSUlIZXhWYWx1ZShp
bnB1dFN0cmluZ1tpICsgMl0sIGlucHV0U3RyaW5nW2kgKyAzXSkgPDwgOCB8IHRvQVNDSUlIZXhW
YWx1ZShpbnB1dFN0cmluZ1tpICsgNF0sIGlucHV0U3RyaW5nW2kgKyA1XSkpOwogICAgICAgICBp
ICs9IDU7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkocmV2
aXNpb24gMjQ4NTk1KQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFwcGVuZChz
dGF0aWNfY2FzdDxMQ2hhcj4oYykpOwogICAgIH0KIAotICAgIHZvaWQgYXBwZW5kKFVDaGFyMzIg
YykKKyAgICB2b2lkIGFwcGVuZENoYXJhY3RlcihVQ2hhcjMyIGMpCiAgICAgewogICAgICAgICBp
ZiAoVV9JU19CTVAoYykpIHsKICAgICAgICAgICAgIGFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4o
YykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NTk1KQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTktMDgtMTMgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTdHJpbmdCdWls
ZGVyOjphcHBlbmQoVUNoYXIzMikgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVyKFVD
aGFyMzIpIHRvIGF2b2lkIGFjY2lkZW50YWwgY2hhbmdlIGluIGJlaGF2aW9yIHdoZW4gcmVwbGFj
aW5nIGFwcGVuZCB3aXRoIGZsZXhpYmxlQXBwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5nVG9VU1ZTdHJpbmcpOgorICAgICAgICAqIGNz
cy9DU1NNYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplQ2hhcmFjdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2VyaWFsaXplU3RyaW5nKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Rva2VuaXplci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb2tlbml6ZXI6OmNvbnN1bWVTdHJpbmdUb2tlblVu
dGlsKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZVVybFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Rva2VuaXplcjo6Y29uc3VtZU5hbWUpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVudGl0eVBhcnNlcjo6Y29uc3VtZU5hbWVkRW50aXR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0JveDo6
cGVla1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1RyYWNrQm94OjpNb2NrVHJhY2tCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhcGl0YWxpemUpOgorICAgICAgICAqIHhtbC9wYXJzZXIvQ2hhcmFjdGVyUmVmZXJlbmNlUGFy
c2VySW5saW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUNoYXJhY3RlclJlZmVyZW5j
ZSk6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lIGZyb20gU3RyaW5nQnVpbGRlcjo6YXBwZW5k
KFVDaGFyMzIpIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVuZENoYXJhY3RlcihVQ2hhcjMyKS4KKwog
MjAxOS0wOC0xMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW1RGQ10gQWRkIHJvd1NwYW4gYW5kIGNvbFNwYW4gdG8gQm94CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcAkocmV2aXNp
b24gMjQ4NTk1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3Ry
aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGlubGluZSBT
dHJpbmcgc3RyaW5nVG9VU1ZTdHJpbmcoUwogICAgICAgICBpZiAoVV9JU19TVVJST0dBVEUoY29k
ZVBvaW50KSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZW1lbnRDaGFyYWN0ZXIp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvZGVQb2ludCk7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kQ2hhcmFjdGVyKGNvZGVQb2ludCk7CiAgICAgfQogICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NNYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNYXJrdXAu
Y3BwCShyZXZpc2lvbiAyNDg1OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWFya3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgYm9vbCBpc0NTU1Rva2Vu
aXplcklkZW50aWZpZXIoY29uCiBzdGF0aWMgdm9pZCBzZXJpYWxpemVDaGFyYWN0ZXIoVUNoYXIz
MiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKIHsKICAgICBhcHBlbmRUby5hcHBlbmQoJ1xc
Jyk7Ci0gICAgYXBwZW5kVG8uYXBwZW5kKGMpOworICAgIGFwcGVuZFRvLmFwcGVuZENoYXJhY3Rl
cihjKTsKIH0KIAogc3RhdGljIHZvaWQgc2VyaWFsaXplQ2hhcmFjdGVyQXNDb2RlUG9pbnQoVUNo
YXIzMiBjLCBTdHJpbmdCdWlsZGVyJiBhcHBlbmRUbykKQEAgLTk4LDEzICs5OCwxMyBAQCB2b2lk
IHNlcmlhbGl6ZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpCiAgICAgICAgIGluZGV4ICs9IFUx
Nl9MRU5HVEgoYyk7CiAKICAgICAgICAgaWYgKCFjKQotICAgICAgICAgICAgYXBwZW5kVG8uYXBw
ZW5kKDB4ZmZmZCk7CisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmRDaGFyYWN0ZXIoMHhmZmZk
KTsKICAgICAgICAgZWxzZSBpZiAoYyA8PSAweDFmIHx8IGMgPT0gMHg3ZiB8fCAoMHgzMCA8PSBj
ICYmIGMgPD0gMHgzOSAmJiAoaXNGaXJzdCB8fCAoaXNTZWNvbmQgJiYgaXNGaXJzdENoYXJIeXBo
ZW4pKSkpCiAgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXJBc0NvZGVQb2ludChjLCBhcHBl
bmRUbyk7CiAgICAgICAgIGVsc2UgaWYgKGMgPT0gMHgyZCAmJiBpc0ZpcnN0ICYmIGluZGV4ID09
IGlkZW50aWZpZXIubGVuZ3RoKCkpCiAgICAgICAgICAgICBzZXJpYWxpemVDaGFyYWN0ZXIoYywg
YXBwZW5kVG8pOwogICAgICAgICBlbHNlIGlmICgweDgwIDw9IGMgfHwgYyA9PSAweDJkIHx8IGMg
PT0gMHg1ZiB8fCAoMHgzMCA8PSBjICYmIGMgPD0gMHgzOSkgfHwgKDB4NDEgPD0gYyAmJiBjIDw9
IDB4NWEpIHx8ICgweDYxIDw9IGMgJiYgYyA8PSAweDdhKSkKLSAgICAgICAgICAgIGFwcGVuZFRv
LmFwcGVuZChjKTsKKyAgICAgICAgICAgIGFwcGVuZFRvLmFwcGVuZENoYXJhY3RlcihjKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgc2VyaWFsaXplQ2hhcmFjdGVyKGMsIGFwcGVuZFRvKTsK
IApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgc2VyaWFsaXplU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW4KICAgICAgICAgZWxzZSBpZiAoYyA9PSAweDIyIHx8IGMgPT0gMHg1YykKICAgICAgICAg
ICAgIHNlcmlhbGl6ZUNoYXJhY3RlcihjLCBhcHBlbmRUbyk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGFwcGVuZFRvLmFwcGVuZChjKTsKKyAgICAgICAgICAgIGFwcGVuZFRvLmFwcGVuZENo
YXJhY3RlcihjKTsKICAgICB9CiAKICAgICBhcHBlbmRUby5hcHBlbmQoJyInKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Rva2VuaXplci5jcHAJKHJldmlzaW9uIDI0ODU5
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVG9rZW5pemVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjE3LDcgKzYxNyw3IEBAIENTU1BhcnNlclRva2VuIENTU1Rva2VuaXplcjo6
Y29uc3VtZVN0cmkKICAgICAgICAgICAgIGlmIChpc05ld0xpbmUobV9pbnB1dC5wZWVrV2l0aG91
dFJlcGxhY2VtZW50KDApKSkKICAgICAgICAgICAgICAgICBjb25zdW1lU2luZ2xlV2hpdGVzcGFj
ZUlmTmV4dCgpOyAvLyBUaGlzIGhhbmRsZXMgXHJcbiBmb3IgdXMKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKGNvbnN1bWVFc2NhcGUoKSk7CisgICAgICAg
ICAgICAgICAgb3V0cHV0LmFwcGVuZENoYXJhY3Rlcihjb25zdW1lRXNjYXBlKCkpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoY2MpOwogICAgIH0KQEAgLTY5NSw3
ICs2OTUsNyBAQCBDU1NQYXJzZXJUb2tlbiBDU1NUb2tlbml6ZXI6OmNvbnN1bWVVcmxUCiAKICAg
ICAgICAgaWYgKGNjID09ICdcXCcpIHsKICAgICAgICAgICAgIGlmICh0d29DaGFyc0FyZVZhbGlk
RXNjYXBlKGNjLCBtX2lucHV0LnBlZWtXaXRob3V0UmVwbGFjZW1lbnQoMCkpKSB7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChjb25zdW1lRXNjYXBlKCkpOworICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRDaGFyYWN0ZXIoY29uc3VtZUVzY2FwZSgpKTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzg3LDcg
Kzc4Nyw3IEBAIFN0cmluZ1ZpZXcgQ1NTVG9rZW5pemVyOjpjb25zdW1lTmFtZSgpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAodHdvQ2hhcnNBcmVWYWxpZEVz
Y2FwZShjYywgbV9pbnB1dC5wZWVrV2l0aG91dFJlcGxhY2VtZW50KDApKSkgewotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChjb25zdW1lRXNjYXBlKCkpOworICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZENoYXJhY3Rlcihjb25zdW1lRXNjYXBlKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KICAgICAgICAgcmVjb25zdW1lKGNjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxFbnRpdHlQYXJzZXIuY3BwCShyZXZpc2lvbiAyNDg1OTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRW50aXR5UGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksOSArOTksOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChlbnRpdHlTZWFy
Y2gubW9zdFJlY2VudE1hdGNoKCktPmxhc3RDaGFyYWN0ZXIoKSA9PSAnOycKICAgICAgICAgICAg
IHx8ICFhZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlcgogICAgICAgICAgICAgfHwgIShpc0FTQ0lJ
QWxwaGFudW1lcmljKGNjKSB8fCBjYyA9PSAnPScpKSB7Ci0gICAgICAgICAgICBkZWNvZGVkRW50
aXR5LmFwcGVuZChlbnRpdHlTZWFyY2gubW9zdFJlY2VudE1hdGNoKCktPmZpcnN0VmFsdWUpOwor
ICAgICAgICAgICAgZGVjb2RlZEVudGl0eS5hcHBlbmRDaGFyYWN0ZXIoZW50aXR5U2VhcmNoLm1v
c3RSZWNlbnRNYXRjaCgpLT5maXJzdFZhbHVlKTsKICAgICAgICAgICAgIGlmIChlbnRpdHlTZWFy
Y2gubW9zdFJlY2VudE1hdGNoKCktPnNlY29uZFZhbHVlKQotICAgICAgICAgICAgICAgIGRlY29k
ZWRFbnRpdHkuYXBwZW5kKGVudGl0eVNlYXJjaC5tb3N0UmVjZW50TWF0Y2goKS0+c2Vjb25kVmFs
dWUpOworICAgICAgICAgICAgICAgIGRlY29kZWRFbnRpdHkuYXBwZW5kQ2hhcmFjdGVyKGVudGl0
eVNlYXJjaC5tb3N0UmVjZW50TWF0Y2goKS0+c2Vjb25kVmFsdWUpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2Us
IGNvbnN1bWVkQ2hhcmFjdGVycyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAJKHJldmlzaW9uIDI0ODU5NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgU3RyaW5nIE1vY2tCb3g6OnBlZWtUeXBlKEFy
cmF5QnVmZmVyKiBkYQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBhdXRvIGFycmF5
ID0gSlNDOjpJbnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAwLCA0KTsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IDQ7ICsraSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJyYXktPml0ZW0oaSkpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZENoYXJhY3RlcihhcnJheS0+aXRlbShpKSk7CiAgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIApAQCAtNzIsNyArNzIsNyBAQCBNb2NrVHJhY2tC
b3g6Ok1vY2tUcmFja0JveChBcnJheUJ1ZmZlciogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwogICAgIGF1dG8gYXJyYXkgPSBKU0M6OkludDhBcnJheTo6Y3JlYXRlKGRhdGEsIDEyLCA0KTsK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
YXJyYXktPml0ZW0oaSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZENoYXJhY3RlcihhcnJheS0+
aXRlbShpKSk7CiAgICAgbV9jb2RlYyA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKIAogICAgIG1fa2lu
ZCA9IHN0YXRpY19jYXN0PFRyYWNrS2luZD4odmlldy0+Z2V0PHVpbnQ4X3Q+KDE2LCB0cnVlKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiAy
NDg1OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCBTdHJpbmcgY2FwaXRhbGl6ZShjb25zdCBTdHJp
bmcmIHN0cmluZywgCiAgICAgaW50MzJfdCBlbmRPZldvcmQ7CiAgICAgZm9yIChlbmRPZldvcmQg
PSB1YnJrX25leHQoYnJlYWtJdGVyYXRvcik7IGVuZE9mV29yZCAhPSBVQlJLX0RPTkU7IHN0YXJ0
T2ZXb3JkID0gZW5kT2ZXb3JkLCBlbmRPZldvcmQgPSB1YnJrX25leHQoYnJlYWtJdGVyYXRvcikp
IHsKICAgICAgICAgaWYgKHN0YXJ0T2ZXb3JkKSAvLyBEbyBub3QgYXBwZW5kIHRoZSBmaXJzdCBj
aGFyYWN0ZXIsIHNpbmNlIGl0J3MgdGhlIHByZXZpb3VzIGNoYXJhY3Rlciwgbm90IGZyb20gdGhp
cyBzdHJpbmcuCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVfdG90aXRsZShzdHJpbmdJbXBs
W3N0YXJ0T2ZXb3JkIC0gMV0pKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGFyYWN0ZXIo
dV90b3RpdGxlKHN0cmluZ0ltcGxbc3RhcnRPZldvcmQgLSAxXSkpOwogICAgICAgICBmb3IgKGlu
dCBpID0gc3RhcnRPZldvcmQgKyAxOyBpIDwgZW5kT2ZXb3JkOyBpKyspCiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHN0cmluZ0ltcGxbaSAtIDFdKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL0NoYXJhY3RlclJlZmVyZW5jZVBhcnNl
cklubGluZXMuaAkocmV2aXNpb24gMjQ4NTk1KQorKysgU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9DaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
MSwxMSArMTExLDExIEBAIGJvb2wgY29uc3VtZUNoYXJhY3RlclJlZmVyZW5jZShTZWdtZW50ZWQK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJzsnKSB7CiAgICAg
ICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOwotICAgICAgICAgICAg
ICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRpdHlG
b3Iob3ZlcmZsb3cgPyAwIDogcmVzdWx0KSk7CisgICAgICAgICAgICAgICAgZGVjb2RlZENoYXJh
Y3Rlci5hcHBlbmRDaGFyYWN0ZXIoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihvdmVy
ZmxvdyA/IDAgOiByZXN1bHQpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmIChQYXJzZXJGdW5jdGlvbnM6OmFjY2VwdE1hbGZvcm1l
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgZGVjb2RlZENoYXJhY3Rlci5hcHBlbmQoUGFyc2VyRnVu
Y3Rpb25zOjpsZWdhbEVudGl0eUZvcihvdmVyZmxvdyA/IDAgOiByZXN1bHQpKTsKKyAgICAgICAg
ICAgICAgICBkZWNvZGVkQ2hhcmFjdGVyLmFwcGVuZENoYXJhY3RlcihQYXJzZXJGdW5jdGlvbnM6
OmxlZ2FsRW50aXR5Rm9yKG92ZXJmbG93ID8gMCA6IHJlc3VsdCkpOwogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFj
dGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CkBAIC0xMzAsMTEgKzEzMCwxMSBAQCBi
b29sIGNvbnN1bWVDaGFyYWN0ZXJSZWZlcmVuY2UoU2VnbWVudGVkCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoY2hhcmFjdGVyID09ICc7JykgewogICAgICAgICAgICAgICAgIHNvdXJj
ZS5hZHZhbmNlUGFzdE5vbk5ld2xpbmUoKTsKLSAgICAgICAgICAgICAgICBkZWNvZGVkQ2hhcmFj
dGVyLmFwcGVuZChQYXJzZXJGdW5jdGlvbnM6OmxlZ2FsRW50aXR5Rm9yKG92ZXJmbG93ID8gMCA6
IHJlc3VsdCkpOworICAgICAgICAgICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kQ2hhcmFj
dGVyKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRpdHlGb3Iob3ZlcmZsb3cgPyAwIDogcmVzdWx0
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoUGFyc2VyRnVuY3Rpb25zOjphY2NlcHRNYWxmb3JtZWQoKSkgewotICAgICAgICAg
ICAgICAgIGRlY29kZWRDaGFyYWN0ZXIuYXBwZW5kKFBhcnNlckZ1bmN0aW9uczo6bGVnYWxFbnRp
dHlGb3Iob3ZlcmZsb3cgPyAwIDogcmVzdWx0KSk7CisgICAgICAgICAgICAgICAgZGVjb2RlZENo
YXJhY3Rlci5hcHBlbmRDaGFyYWN0ZXIoUGFyc2VyRnVuY3Rpb25zOjpsZWdhbEVudGl0eUZvcihv
dmVyZmxvdyA/IDAgOiByZXN1bHQpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBjb25z
dW1lZENoYXJhY3RlcnMpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4NTk1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDgtMTMgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTdHJpbmdCdWlsZGVyOjphcHBlbmQoVUNo
YXIzMikgdG8gU3RyaW5nQnVpbGRlcjo6YXBwZW5kQ2hhcmFjdGVyKFVDaGFyMzIpIHRvIGF2b2lk
IGFjY2lkZW50YWwgY2hhbmdlIGluIGJlaGF2aW9yIHdoZW4gcmVwbGFjaW5nIGFwcGVuZCB3aXRo
IGZsZXhpYmxlQXBwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDA2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lIGZy
b20gU3RyaW5nQnVpbGRlcjo6YXBwZW5kKFVDaGFyMzIpIHRvIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZENoYXJhY3RlcihVQ2hhcjMyKS4KKwogMjAxOS0wOC0xMiAgVGFrYXNoaSBLb21vcmkgIDxUYWth
c2hpLktvbW9yaUBzb255LmNvbT4KIAogICAgICAgICBbV1RGXSBUaHJlYWQ6OnJlbW92ZUZyb21U
aHJlYWRHcm91cCBsZWFrcyB3ZWFrIHBvaW50ZXJzLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI0ODU5NSkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw5ICs5Myw5IEBAIFRFU1QoU3RyaW5nQnVpbGRlclRlc3QsIEFwcGVuZCkK
ICAgICAvLyBUZXN0IGFwcGVuZGluZyBVQ2hhcjMyIGNoYXJhY3RlcnMgdG8gU3RyaW5nQnVpbGRl
ci4KICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXJGb3JVQ2hhcjMyQXBwZW5kOwogICAgIFVDaGFy
MzIgZnJha3R1ckFDaGFyID0gMHgxRDUwNDsKLSAgICBidWlsZGVyRm9yVUNoYXIzMkFwcGVuZC5h
cHBlbmQoZnJha3R1ckFDaGFyKTsgLy8gVGhlIGZyYWt0dXIgQSBpcyBub3QgaW4gdGhlIEJNUCwg
c28gaXQncyB0d28gVVRGLTE2IGNvZGUgdW5pdHMgbG9uZy4KKyAgICBidWlsZGVyRm9yVUNoYXIz
MkFwcGVuZC5hcHBlbmRDaGFyYWN0ZXIoZnJha3R1ckFDaGFyKTsgLy8gVGhlIGZyYWt0dXIgQSBp
cyBub3QgaW4gdGhlIEJNUCwgc28gaXQncyB0d28gVVRGLTE2IGNvZGUgdW5pdHMgbG9uZy4KICAg
ICBBU1NFUlRfRVEoMlUsIGJ1aWxkZXJGb3JVQ2hhcjMyQXBwZW5kLmxlbmd0aCgpKTsKLSAgICBi
dWlsZGVyRm9yVUNoYXIzMkFwcGVuZC5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXIzMj4oJ0EnKSk7
CisgICAgYnVpbGRlckZvclVDaGFyMzJBcHBlbmQuYXBwZW5kQ2hhcmFjdGVyKHN0YXRpY19jYXN0
PFVDaGFyMzI+KCdBJykpOwogICAgIEFTU0VSVF9FUSgzVSwgYnVpbGRlckZvclVDaGFyMzJBcHBl
bmQubGVuZ3RoKCkpOwogICAgIGNvbnN0IFVDaGFyIHJlc3VsdEFycmF5W10gPSB7IFUxNl9MRUFE
KGZyYWt0dXJBQ2hhciksIFUxNl9UUkFJTChmcmFrdHVyQUNoYXIpLCAnQScgfTsKICAgICBleHBl
Y3RCdWlsZGVyQ29udGVudChTdHJpbmcocmVzdWx0QXJyYXksIFdURl9BUlJBWV9MRU5HVEgocmVz
dWx0QXJyYXkpKSwgYnVpbGRlckZvclVDaGFyMzJBcHBlbmQpOwo=
</data>
<flag name="review"
          id="391948"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>