<?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>207374</bug_id>
          
          <creation_ts>2020-02-06 19:23:15 -0800</creation_ts>
          <short_desc>[Cocoa] Slightly improve performance of Font::getCFStringAttributes()</short_desc>
          <delta_ts>2020-02-07 12:27:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1616013</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-02-06 19:23:15 -0800</bug_when>
    <thetext>[Cocoa] Slightly improve performance of Font::getCFStringAttributes()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616014</commentid>
    <comment_count>1</comment_count>
      <attachid>390046</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-02-06 19:25:32 -0800</bug_when>
    <thetext>Created attachment 390046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616024</commentid>
    <comment_count>2</comment_count>
      <attachid>390048</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-02-06 19:30:58 -0800</bug_when>
    <thetext>Created attachment 390048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616181</commentid>
    <comment_count>3</comment_count>
      <attachid>390048</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-07 09:26:14 -0800</bug_when>
    <thetext>Comment on attachment 390048
Patch

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

This looks good. Like I said earlier, if this is *really* hot then we should go even further with some kind of caching/memoizing so we don’t create a dictionary at all in most cases.

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataCoreText.cpp:38
&gt; +    CFTypeRef keys[5];
&gt; +    CFTypeRef values[5];

Easy mistake would be to add a new case below and not update the array sizes here. Would be nice if we could find a way to assert or static_assert or something to make it trivial to catch the mistake either at compile time or runtime.

&gt; Source/WebCore/platform/graphics/mac/SimpleFontDataCoreText.cpp:59
&gt; +    static CTParagraphStyleRef paragraphStyle = nullptr;
&gt; +    if (!paragraphStyle) {
&gt; +        paragraphStyle = CTParagraphStyleCreate(nullptr, 0);
&gt; +        CTParagraphStyleSetCompositionLanguage(paragraphStyle, kCTCompositionLanguageNone);
&gt; +    }

This can be written something like this:

    static CTParagraphStyleRef paragraphStyle = [] () {
        auto style = CTParagraphStyleCreate(nullptr, 0);
        CGParagraphStyleSetCompositionLanguage(style, kCTCompositionLanguageNone);
        return style;
     }();

I think it’s slightly better coding style. Could even put this into a separate function for clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616234</commentid>
    <comment_count>4</comment_count>
      <attachid>390103</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-02-07 10:30:50 -0800</bug_when>
    <thetext>Created attachment 390103
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616259</commentid>
    <comment_count>5</comment_count>
      <attachid>390103</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-07 10:59:15 -0800</bug_when>
    <thetext>Comment on attachment 390103
Patch for committing

Clearing flags on attachment: 390103

Committed r256037: &lt;https://trac.webkit.org/changeset/256037&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616297</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-07 12:27:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/59269074&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390046</attachid>
            <date>2020-02-06 19:25:32 -0800</date>
            <delta_ts>2020-02-06 19:30:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207374-20200206192532.patch</filename>
            <type>text/plain</type>
            <size>4775</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU2NzE2ZmM5YjE3ZTll
NjA5ZTYzZTdkNTFiMWMyYjcxODE0OGViMS4uYjNjM2MwOThlNGQ0ZGRkNTM3YThmOTgxZDAzY2Qw
NzVkYzI0YjQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAyLTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBT
bGlnaHRseSBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIEZvbnQ6OmdldENGU3RyaW5nQXR0cmlidXRl
cygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcz
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0
Y2ggZnJvbSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKCkgdG8gQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KCkuIEFsc28sIGRvbid0IGNvbnN0cnVjdCBhIENUUGFyYWdyYXBoU3R5bGUgZWFjaCB0aW1lIHRo
ZSBmdW5jdGlvbiBpcyBjYWxsZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhl
cmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRoRm9y
U2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBs
ZUZvbnREYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Z2V0Q0ZTdHJp
bmdBdHRyaWJ1dGVzIGNvbnN0KToKKwogMjAyMC0wMi0wNiAgRG91ZyBLZWxseSAgPGRvdWdrQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJlY3QgVGV4dFRyYWNrIHNvcnRpbmcgd2l0aCBpbnZh
bGlkIEJDUDQ3IGxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggZmRjNTk2ZTdiNmEyZDIxMjdhNGM5OTJhM2MxZTVlNTBj
YmEzZjA1YS4uMWVjNWEzODIxZDIwM2NhMjY0NjkwZTcyYzk2YWMzNDRkZjIxNDkxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAt
NDI4LDggKzQyOCw2IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRleHQoU3Ry
aW5nVmlldyB0ZXh0KSBjb25zdAogICAgICAgICByZXR1cm4gKmNhY2hlRW50cnk7CiAKICAgICBH
bHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKLSAgICBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTY+
IGdseXBoczsKLSAgICBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxNj4gYWR2YW5jZXM7CiAg
ICAgYm9vbCBoYXNLZXJuaW5nT3JMaWdhdHVyZXMgPSBlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWly
ZXNTaGFwaW5nKCk7CiAgICAgZmxvYXQgcnVuV2lkdGggPSAwOwogICAgIGF1dG8mIGZvbnQgPSBw
cmltYXJ5Rm9udCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4IDk3NjUwZDFl
NmY1MGMyMmM2M2NjNDkyYWYzYjgzYWNmNzA2YzY5YTAuLjI3MGI1YTczOWFiYmE5YTA2MmQ1OGFl
NTE3OTI3Yjk4ZTk4ODI5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKQEAgLTM0
LDI5ICszNCw0OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IEZvbnQ6OmdldENGU3RyaW5nQXR0cmlidXRlcyhib29sIGVuYWJsZUtlcm5pbmcsIEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKSBjb25z
dAogewotICAgIGF1dG8gYXR0cmlidXRlc0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwgJmtDRkNvcHlTdHJpbmdEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwor
ICAgIENGVHlwZVJlZiBrZXlzWzVdOworICAgIENGVHlwZVJlZiB2YWx1ZXNbNV07CisKKyAgICBr
ZXlzWzBdID0ga0NURm9udEF0dHJpYnV0ZU5hbWU7CisgICAgdmFsdWVzWzBdID0gcGxhdGZvcm1E
YXRhKCkuY3RGb250KCk7CisgICAgaW50IGNvdW50ID0gMTsKIAotICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwg
cGxhdGZvcm1EYXRhKCkuY3RGb250KCkpOwogI2lmIFVTRShDVEZPTlRUUkFOU0ZPUk1HTFlQSFNX
SVRITEFOR1VBR0UpCi0gICAgaWYgKCFsb2NhbGUuaXNFbXB0eSgpKQotICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShhdHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKSwga0NUTGFuZ3VhZ2VBdHRy
aWJ1dGVOYW1lLCBsb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGVTdHJpbmc7CisgICAgaWYgKCFsb2NhbGUuaXNF
bXB0eSgpKSB7CisgICAgICAgIGxvY2FsZVN0cmluZyA9IGxvY2FsZS5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpOworICAgICAgICBrZXlzW2NvdW50XSA9IGtDVExhbmd1YWdlQXR0cmlidXRlTmFt
ZTsKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IGxvY2FsZVN0cmluZy5nZXQoKTsKKyAgICAgICAg
Kytjb3VudDsKKyAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShsb2NhbGUpOwogI2VuZGlm
Ci0gICAgYXV0byBwYXJhZ3JhcGhTdHlsZSA9IGFkb3B0Q0YoQ1RQYXJhZ3JhcGhTdHlsZUNyZWF0
ZShudWxscHRyLCAwKSk7Ci0gICAgQ1RQYXJhZ3JhcGhTdHlsZVNldENvbXBvc2l0aW9uTGFuZ3Vh
Z2UocGFyYWdyYXBoU3R5bGUuZ2V0KCksIGtDVENvbXBvc2l0aW9uTGFuZ3VhZ2VOb25lKTsKLSAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKSwga0NUUGFy
YWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lLCBwYXJhZ3JhcGhTdHlsZS5nZXQoKSk7CisgICAgc3Rh
dGljIENUUGFyYWdyYXBoU3R5bGVSZWYgcGFyYWdyYXBoU3R5bGUgPSBudWxscHRyOworICAgIGlm
ICghcGFyYWdyYXBoU3R5bGUpIHsKKyAgICAgICAgcGFyYWdyYXBoU3R5bGUgPSBDVFBhcmFncmFw
aFN0eWxlQ3JlYXRlKG51bGxwdHIsIDApOworICAgICAgICBDVFBhcmFncmFwaFN0eWxlU2V0Q29t
cG9zaXRpb25MYW5ndWFnZShwYXJhZ3JhcGhTdHlsZSwga0NUQ29tcG9zaXRpb25MYW5ndWFnZU5v
bmUpOworICAgIH0KKyAgICBrZXlzW2NvdW50XSA9IGtDVFBhcmFncmFwaFN0eWxlQXR0cmlidXRl
TmFtZTsKKyAgICB2YWx1ZXNbY291bnRdID0gcGFyYWdyYXBoU3R5bGUuZ2V0KCk7CisgICAgKytj
b3VudDsKIAogICAgIGlmICghZW5hYmxlS2VybmluZykgewogICAgICAgICBjb25zdCBmbG9hdCB6
ZXJvID0gMDsKICAgICAgICAgc3RhdGljIENGTnVtYmVyUmVmIHplcm9LZXJuaW5nVmFsdWUgPSBD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6
ZXJvKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoYXR0cmlidXRlc0RpY3Rpb25hcnku
Z2V0KCksIGtDVEtlcm5BdHRyaWJ1dGVOYW1lLCB6ZXJvS2VybmluZ1ZhbHVlKTsKKyAgICAgICAg
a2V5c1tjb3VudF0gPSBrQ1RLZXJuQXR0cmlidXRlTmFtZTsKKyAgICAgICAgdmFsdWVzW2NvdW50
XSA9IHplcm9LZXJuaW5nVmFsdWU7CisgICAgICAgICsrY291bnQ7CiAgICAgfQogCi0gICAgaWYg
KG9yaWVudGF0aW9uID09IEZvbnRPcmllbnRhdGlvbjo6VmVydGljYWwpCi0gICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ1RWZXJ0aWNhbEZv
cm1zQXR0cmlidXRlTmFtZSwga0NGQm9vbGVhblRydWUpOworICAgIGlmIChvcmllbnRhdGlvbiA9
PSBGb250T3JpZW50YXRpb246OlZlcnRpY2FsKSB7CisgICAgICAgIGtleXNbY291bnRdID0ga0NU
VmVydGljYWxGb3Jtc0F0dHJpYnV0ZU5hbWU7CisgICAgICAgIHZhbHVlc1tjb3VudF0gPSBrQ0ZC
b29sZWFuVHJ1ZTsKKyAgICAgICAgKytjb3VudDsKKyAgICB9CiAKLSAgICByZXR1cm4gYXR0cmli
dXRlc0RpY3Rpb25hcnk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgY291bnQsICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIH0KIAog
I2lmIEhBVkUoRElTQUxMT1dBQkxFX1VTRVJfSU5TVEFMTEVEX0ZPTlRTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390048</attachid>
            <date>2020-02-06 19:30:58 -0800</date>
            <delta_ts>2020-02-07 09:26:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207374-20200206193057.patch</filename>
            <type>text/plain</type>
            <size>4769</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU2NzE2ZmM5YjE3ZTll
NjA5ZTYzZTdkNTFiMWMyYjcxODE0OGViMS4uYjNjM2MwOThlNGQ0ZGRkNTM3YThmOTgxZDAzY2Qw
NzVkYzI0YjQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAyLTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBT
bGlnaHRseSBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIEZvbnQ6OmdldENGU3RyaW5nQXR0cmlidXRl
cygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcz
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0
Y2ggZnJvbSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKCkgdG8gQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KCkuIEFsc28sIGRvbid0IGNvbnN0cnVjdCBhIENUUGFyYWdyYXBoU3R5bGUgZWFjaCB0aW1lIHRo
ZSBmdW5jdGlvbiBpcyBjYWxsZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhl
cmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRoRm9y
U2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBs
ZUZvbnREYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Z2V0Q0ZTdHJp
bmdBdHRyaWJ1dGVzIGNvbnN0KToKKwogMjAyMC0wMi0wNiAgRG91ZyBLZWxseSAgPGRvdWdrQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbmNvcnJlY3QgVGV4dFRyYWNrIHNvcnRpbmcgd2l0aCBpbnZh
bGlkIEJDUDQ3IGxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggZmRjNTk2ZTdiNmEyZDIxMjdhNGM5OTJhM2MxZTVlNTBj
YmEzZjA1YS4uMWVjNWEzODIxZDIwM2NhMjY0NjkwZTcyYzk2YWMzNDRkZjIxNDkxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAt
NDI4LDggKzQyOCw2IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRleHQoU3Ry
aW5nVmlldyB0ZXh0KSBjb25zdAogICAgICAgICByZXR1cm4gKmNhY2hlRW50cnk7CiAKICAgICBH
bHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKLSAgICBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTY+
IGdseXBoczsKLSAgICBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxNj4gYWR2YW5jZXM7CiAg
ICAgYm9vbCBoYXNLZXJuaW5nT3JMaWdhdHVyZXMgPSBlbmFibGVLZXJuaW5nKCkgfHwgcmVxdWly
ZXNTaGFwaW5nKCk7CiAgICAgZmxvYXQgcnVuV2lkdGggPSAwOwogICAgIGF1dG8mIGZvbnQgPSBw
cmltYXJ5Rm9udCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4IDk3NjUwZDFl
NmY1MGMyMmM2M2NjNDkyYWYzYjgzYWNmNzA2YzY5YTAuLjIxMzdkZmY5MTE5YTg0N2IxYmY3YmYy
MjY5NjQxY2E3MzRjZTE0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKQEAgLTM0
LDI5ICszNCw0OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IEZvbnQ6OmdldENGU3RyaW5nQXR0cmlidXRlcyhib29sIGVuYWJsZUtlcm5pbmcsIEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKSBjb25z
dAogewotICAgIGF1dG8gYXR0cmlidXRlc0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwgJmtDRkNvcHlTdHJpbmdEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwor
ICAgIENGVHlwZVJlZiBrZXlzWzVdOworICAgIENGVHlwZVJlZiB2YWx1ZXNbNV07CisKKyAgICBr
ZXlzWzBdID0ga0NURm9udEF0dHJpYnV0ZU5hbWU7CisgICAgdmFsdWVzWzBdID0gcGxhdGZvcm1E
YXRhKCkuY3RGb250KCk7CisgICAgaW50IGNvdW50ID0gMTsKIAotICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwg
cGxhdGZvcm1EYXRhKCkuY3RGb250KCkpOwogI2lmIFVTRShDVEZPTlRUUkFOU0ZPUk1HTFlQSFNX
SVRITEFOR1VBR0UpCi0gICAgaWYgKCFsb2NhbGUuaXNFbXB0eSgpKQotICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShhdHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKSwga0NUTGFuZ3VhZ2VBdHRy
aWJ1dGVOYW1lLCBsb2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGVTdHJpbmc7CisgICAgaWYgKCFsb2NhbGUuaXNF
bXB0eSgpKSB7CisgICAgICAgIGxvY2FsZVN0cmluZyA9IGxvY2FsZS5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpOworICAgICAgICBrZXlzW2NvdW50XSA9IGtDVExhbmd1YWdlQXR0cmlidXRlTmFt
ZTsKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IGxvY2FsZVN0cmluZy5nZXQoKTsKKyAgICAgICAg
Kytjb3VudDsKKyAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShsb2NhbGUpOwogI2VuZGlm
Ci0gICAgYXV0byBwYXJhZ3JhcGhTdHlsZSA9IGFkb3B0Q0YoQ1RQYXJhZ3JhcGhTdHlsZUNyZWF0
ZShudWxscHRyLCAwKSk7Ci0gICAgQ1RQYXJhZ3JhcGhTdHlsZVNldENvbXBvc2l0aW9uTGFuZ3Vh
Z2UocGFyYWdyYXBoU3R5bGUuZ2V0KCksIGtDVENvbXBvc2l0aW9uTGFuZ3VhZ2VOb25lKTsKLSAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKSwga0NUUGFy
YWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lLCBwYXJhZ3JhcGhTdHlsZS5nZXQoKSk7CisgICAgc3Rh
dGljIENUUGFyYWdyYXBoU3R5bGVSZWYgcGFyYWdyYXBoU3R5bGUgPSBudWxscHRyOworICAgIGlm
ICghcGFyYWdyYXBoU3R5bGUpIHsKKyAgICAgICAgcGFyYWdyYXBoU3R5bGUgPSBDVFBhcmFncmFw
aFN0eWxlQ3JlYXRlKG51bGxwdHIsIDApOworICAgICAgICBDVFBhcmFncmFwaFN0eWxlU2V0Q29t
cG9zaXRpb25MYW5ndWFnZShwYXJhZ3JhcGhTdHlsZSwga0NUQ29tcG9zaXRpb25MYW5ndWFnZU5v
bmUpOworICAgIH0KKyAgICBrZXlzW2NvdW50XSA9IGtDVFBhcmFncmFwaFN0eWxlQXR0cmlidXRl
TmFtZTsKKyAgICB2YWx1ZXNbY291bnRdID0gcGFyYWdyYXBoU3R5bGU7CisgICAgKytjb3VudDsK
IAogICAgIGlmICghZW5hYmxlS2VybmluZykgewogICAgICAgICBjb25zdCBmbG9hdCB6ZXJvID0g
MDsKICAgICAgICAgc3RhdGljIENGTnVtYmVyUmVmIHplcm9LZXJuaW5nVmFsdWUgPSBDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6ZXJvKTsK
LSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoYXR0cmlidXRlc0RpY3Rpb25hcnkuZ2V0KCks
IGtDVEtlcm5BdHRyaWJ1dGVOYW1lLCB6ZXJvS2VybmluZ1ZhbHVlKTsKKyAgICAgICAga2V5c1tj
b3VudF0gPSBrQ1RLZXJuQXR0cmlidXRlTmFtZTsKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IHpl
cm9LZXJuaW5nVmFsdWU7CisgICAgICAgICsrY291bnQ7CiAgICAgfQogCi0gICAgaWYgKG9yaWVu
dGF0aW9uID09IEZvbnRPcmllbnRhdGlvbjo6VmVydGljYWwpCi0gICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ1RWZXJ0aWNhbEZvcm1zQXR0
cmlidXRlTmFtZSwga0NGQm9vbGVhblRydWUpOworICAgIGlmIChvcmllbnRhdGlvbiA9PSBGb250
T3JpZW50YXRpb246OlZlcnRpY2FsKSB7CisgICAgICAgIGtleXNbY291bnRdID0ga0NUVmVydGlj
YWxGb3Jtc0F0dHJpYnV0ZU5hbWU7CisgICAgICAgIHZhbHVlc1tjb3VudF0gPSBrQ0ZCb29sZWFu
VHJ1ZTsKKyAgICAgICAgKytjb3VudDsKKyAgICB9CiAKLSAgICByZXR1cm4gYXR0cmlidXRlc0Rp
Y3Rpb25hcnk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgY291bnQsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNh
bGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIH0KIAogI2lmIEhB
VkUoRElTQUxMT1dBQkxFX1VTRVJfSU5TVEFMTEVEX0ZPTlRTKQo=
</data>
<flag name="review"
          id="405697"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390103</attachid>
            <date>2020-02-07 10:30:50 -0800</date>
            <delta_ts>2020-02-07 10:59:15 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-207374-20200207103049.patch</filename>
            <type>text/plain</type>
            <size>4847</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYxNDU3MGJmZmNlNjgx
ZjcwN2U5YTQ5MDg2NGJjN2RhYzRiYzQ0ZC4uMzQ5MDUwYTY5YmZlMTBmYzhmMTA3MzUwYjdkZjFi
YTM2Zjg2MzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTAyLTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBT
bGlnaHRseSBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIEZvbnQ6OmdldENGU3RyaW5nQXR0cmlidXRl
cygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcz
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTd2l0Y2gg
ZnJvbSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKCkgdG8gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKCku
IEFsc28sIGRvbid0IGNvbnN0cnVjdCBhIENUUGFyYWdyYXBoU3R5bGUgZWFjaCB0aW1lIHRoZSBm
dW5jdGlvbiBpcyBjYWxsZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUg
aXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRoRm9yU2lt
cGxlVGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZv
bnREYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Z2V0Q0ZTdHJpbmdB
dHRyaWJ1dGVzIGNvbnN0KToKKwogMjAyMC0wMi0wNyAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgRmlsdGVyIG91dCBUVVJOL1NUVU4gLmxvY2FsIFVSTHMgZnJv
bSBhIFJUQ1BlZXJDb25uZWN0aW9uIGljZVNlcnZlcnMgbGlzdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGZkYzU5NmU3YjZhMmQy
MTI3YTRjOTkyYTNjMWU1ZTUwY2JhM2YwNWEuLjFlYzVhMzgyMWQyMDNjYTI2NDY5MGU3MmM5NmFj
MzQ0ZGYyMTQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAKQEAgLTQyOCw4ICs0MjgsNiBAQCBmbG9hdCBGb250Q2FzY2FkZTo6d2lk
dGhGb3JTaW1wbGVUZXh0KFN0cmluZ1ZpZXcgdGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuICpj
YWNoZUVudHJ5OwogCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgVmVjdG9yPEds
eXBoQnVmZmVyR2x5cGgsIDE2PiBnbHlwaHM7Ci0gICAgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5j
ZSwgMTY+IGFkdmFuY2VzOwogICAgIGJvb2wgaGFzS2VybmluZ09yTGlnYXR1cmVzID0gZW5hYmxl
S2VybmluZygpIHx8IHJlcXVpcmVzU2hhcGluZygpOwogICAgIGZsb2F0IHJ1bldpZHRoID0gMDsK
ICAgICBhdXRvJiBmb250ID0gcHJpbWFyeUZvbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0
LmNwcAppbmRleCA5NzY1MGQxZTZmNTBjMjJjNjNjYzQ5MmFmM2I4M2FjZjcwNmM2OWEwLi5kOWQ0
MTUxZWMzMmQzOGMyNmU3NzczY2RkYjFiNThiNTU4NmM3YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRh
Q29yZVRleHQuY3BwCkBAIC0zNCwyOSArMzQsNTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBGb250OjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoYm9v
bCBlbmFibGVLZXJuaW5nLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIGNvbnN0IEF0b21T
dHJpbmcmIGxvY2FsZSkgY29uc3QKIHsKLSAgICBhdXRvIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0g
YWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDQs
ICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpKTsKKyAgICBDRlR5cGVSZWYga2V5c1s1XTsKKyAgICBDRlR5cGVSZWYg
dmFsdWVzWzVdOworCisgICAga2V5c1swXSA9IGtDVEZvbnRBdHRyaWJ1dGVOYW1lOworICAgIHZh
bHVlc1swXSA9IHBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpOworICAgIHNpemVfdCBjb3VudCA9IDE7
CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKSwg
a0NURm9udEF0dHJpYnV0ZU5hbWUsIHBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpKTsKICNpZiBVU0Uo
Q1RGT05UVFJBTlNGT1JNR0xZUEhTV0lUSExBTkdVQUdFKQotICAgIGlmICghbG9jYWxlLmlzRW1w
dHkoKSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoYXR0cmlidXRlc0RpY3Rpb25hcnku
Z2V0KCksIGtDVExhbmd1YWdlQXR0cmlidXRlTmFtZSwgbG9jYWxlLnN0cmluZygpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxlU3RyaW5n
OworICAgIGlmICghbG9jYWxlLmlzRW1wdHkoKSkgeworICAgICAgICBsb2NhbGVTdHJpbmcgPSBs
b2NhbGUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAga2V5c1tjb3VudF0gPSBr
Q1RMYW5ndWFnZUF0dHJpYnV0ZU5hbWU7CisgICAgICAgIHZhbHVlc1tjb3VudF0gPSBsb2NhbGVT
dHJpbmcuZ2V0KCk7CisgICAgICAgICsrY291bnQ7CisgICAgfQogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0obG9jYWxlKTsKICNlbmRpZgotICAgIGF1dG8gcGFyYWdyYXBoU3R5bGUgPSBhZG9wdENG
KENUUGFyYWdyYXBoU3R5bGVDcmVhdGUobnVsbHB0ciwgMCkpOwotICAgIENUUGFyYWdyYXBoU3R5
bGVTZXRDb21wb3NpdGlvbkxhbmd1YWdlKHBhcmFncmFwaFN0eWxlLmdldCgpLCBrQ1RDb21wb3Np
dGlvbkxhbmd1YWdlTm9uZSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoYXR0cmlidXRlc0Rp
Y3Rpb25hcnkuZ2V0KCksIGtDVFBhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZSwgcGFyYWdyYXBo
U3R5bGUuZ2V0KCkpOworICAgIHN0YXRpYyBDVFBhcmFncmFwaFN0eWxlUmVmIHBhcmFncmFwaFN0
eWxlID0gW10geworICAgICAgICBhdXRvIHBhcmFncmFwaFN0eWxlID0gQ1RQYXJhZ3JhcGhTdHls
ZUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICAgICAgQ1RQYXJhZ3JhcGhTdHlsZVNldENvbXBvc2l0
aW9uTGFuZ3VhZ2UocGFyYWdyYXBoU3R5bGUsIGtDVENvbXBvc2l0aW9uTGFuZ3VhZ2VOb25lKTsK
KyAgICAgICAgcmV0dXJuIHBhcmFncmFwaFN0eWxlOworICAgIH0oKTsKKyAgICBrZXlzW2NvdW50
XSA9IGtDVFBhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZTsKKyAgICB2YWx1ZXNbY291bnRdID0g
cGFyYWdyYXBoU3R5bGU7CisgICAgKytjb3VudDsKIAogICAgIGlmICghZW5hYmxlS2VybmluZykg
ewogICAgICAgICBjb25zdCBmbG9hdCB6ZXJvID0gMDsKICAgICAgICAgc3RhdGljIENGTnVtYmVy
UmVmIHplcm9LZXJuaW5nVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6ZXJvKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoYXR0cmlidXRlc0RpY3Rpb25hcnkuZ2V0KCksIGtDVEtlcm5BdHRyaWJ1dGVOYW1lLCB6ZXJv
S2VybmluZ1ZhbHVlKTsKKyAgICAgICAga2V5c1tjb3VudF0gPSBrQ1RLZXJuQXR0cmlidXRlTmFt
ZTsKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IHplcm9LZXJuaW5nVmFsdWU7CisgICAgICAgICsr
Y291bnQ7CisgICAgfQorCisgICAgaWYgKG9yaWVudGF0aW9uID09IEZvbnRPcmllbnRhdGlvbjo6
VmVydGljYWwpIHsKKyAgICAgICAga2V5c1tjb3VudF0gPSBrQ1RWZXJ0aWNhbEZvcm1zQXR0cmli
dXRlTmFtZTsKKyAgICAgICAgdmFsdWVzW2NvdW50XSA9IGtDRkJvb2xlYW5UcnVlOworICAgICAg
ICArK2NvdW50OwogICAgIH0KIAotICAgIGlmIChvcmllbnRhdGlvbiA9PSBGb250T3JpZW50YXRp
b246OlZlcnRpY2FsKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShhdHRyaWJ1dGVzRGlj
dGlvbmFyeS5nZXQoKSwga0NUVmVydGljYWxGb3Jtc0F0dHJpYnV0ZU5hbWUsIGtDRkJvb2xlYW5U
cnVlKTsKKyAgICBBU1NFUlQoY291bnQgPD0gV1RGX0FSUkFZX0xFTkdUSChrZXlzKSk7CiAKLSAg
ICByZXR1cm4gYXR0cmlidXRlc0RpY3Rpb25hcnk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0
aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgY291bnQsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKIH0KIAogI2lmIEhBVkUoRElTQUxMT1dBQkxFX1VTRVJfSU5TVEFMTEVEX0ZPTlRT
KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>