<?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>223880</bug_id>
          
          <creation_ts>2021-03-29 09:59:15 -0700</creation_ts>
          <short_desc>Stop using a hash as key in the FontCascadeCache</short_desc>
          <delta_ts>2021-03-29 15:28: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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>223858</dup_id>
          
          <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>223858</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1744745</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 09:59:15 -0700</bug_when>
    <thetext>Stop using a hash as key in the FontCascadeCache. Instead, use HashTraits and use FontCascadeCacheKey as key.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744746</commentid>
    <comment_count>1</comment_count>
      <attachid>424540</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 10:00:42 -0700</bug_when>
    <thetext>Created attachment 424540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744749</commentid>
    <comment_count>2</comment_count>
      <attachid>424540</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-29 10:04:01 -0700</bug_when>
    <thetext>Comment on attachment 424540
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.cpp:462
&gt; +    auto addResult = m_fontCascadeCache.add(key, nullptr);

This is going to require a change to Chris Lord’s patch to make the font cache work from non-main threads. We’ll have to isolate the strings in the key after adding it.

&gt; Source/WebCore/platform/graphics/FontCache.cpp:584
&gt; +    // FIXME: Should hash the key and the family name characters rather than making a hash out of other hashes.

Also should use Hasher instead of IntegerHasher. And, yes, I know that’s how we got into this mess in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744819</commentid>
    <comment_count>3</comment_count>
      <attachid>424559</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 12:01:36 -0700</bug_when>
    <thetext>Created attachment 424559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744838</commentid>
    <comment_count>4</comment_count>
      <attachid>424565</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 12:49:38 -0700</bug_when>
    <thetext>Created attachment 424565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744889</commentid>
    <comment_count>5</comment_count>
      <attachid>424565</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-29 13:43:11 -0700</bug_when>
    <thetext>Comment on attachment 424565
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.cpp:406
&gt; +bool FontCascadeCacheKey::operator==(const FontCascadeCacheKey&amp; other) const

This does’t need to be a member function. Could just rename from keysMatch to operator== and leave it as a non-member function.

&gt; Source/WebCore/platform/graphics/FontCache.cpp:590
&gt; +    for (unsigned i = 0; i &lt; key.families.size(); ++i) {
&gt; +        auto&amp; family = key.families[i];

How about a modern for loop?

    for (auto&amp; family : key.families) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744913</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 14:22:38 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 424565 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424565&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/FontCache.cpp:406
&gt; &gt; +bool FontCascadeCacheKey::operator==(const FontCascadeCacheKey&amp; other) const
&gt; 
&gt; This does’t need to be a member function. Could just rename from keysMatch
&gt; to operator== and leave it as a non-member function.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/FontCache.cpp:590
&gt; &gt; +    for (unsigned i = 0; i &lt; key.families.size(); ++i) {
&gt; &gt; +        auto&amp; family = key.families[i];
&gt; 
&gt; How about a modern for loop?
&gt; 
&gt;     for (auto&amp; family : key.families) {

But having the index is convenient to look up the family in the &quot;other&quot; object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744915</commentid>
    <comment_count>7</comment_count>
      <attachid>424579</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 14:25:34 -0700</bug_when>
    <thetext>Created attachment 424579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744942</commentid>
    <comment_count>8</comment_count>
      <attachid>424565</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-29 15:05:04 -0700</bug_when>
    <thetext>Comment on attachment 424565
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/FontCache.cpp:406
&gt;&gt;&gt; +bool FontCascadeCacheKey::operator==(const FontCascadeCacheKey&amp; other) const
&gt;&gt; 
&gt;&gt; This does’t need to be a member function. Could just rename from keysMatch to operator== and leave it as a non-member function.
&gt; 
&gt; But having the index is convenient to look up the family in the &quot;other&quot; object.

In the == function, but I was talking about the hash function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744944</commentid>
    <comment_count>9</comment_count>
      <attachid>424579</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-29 15:06:48 -0700</bug_when>
    <thetext>Comment on attachment 424579
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.cpp:590
&gt; +    for (unsigned i = 0; i &lt; key.families.size(); ++i) {
&gt; +        auto&amp; family = key.families[i];

Unlike the == function, this can use the modern for loop.

&gt; Source/WebCore/platform/graphics/FontCache.h:199
&gt; +namespace WTF {

We don’t need to put this in the WTF namespace. It doesn’t have to the the default hash for FontCascadeCacheKey. It can just be the hash we pass to the HashMap template.

&gt; Source/WebCore/platform/graphics/FontCache.h:219
&gt; +typedef HashMap&lt;FontCascadeCacheKey, std::unique_ptr&lt;FontCascadeCacheEntry&gt;&gt; FontCascadeCache;

How about using instead of typedef since we have to touch this line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744957</commentid>
    <comment_count>10</comment_count>
      <attachid>424593</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 15:23:59 -0700</bug_when>
    <thetext>Created attachment 424593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744958</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-29 15:28:21 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 223858 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424540</attachid>
            <date>2021-03-29 10:00:42 -0700</date>
            <delta_ts>2021-03-29 12:01:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223880-20210329100041.patch</filename>
            <type>text/plain</type>
            <size>6102</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVkYWQwZDFhNDlmYjMz
YTkyODhmNzQ1MmFhMWY3MGI4YzdhZjgzNS4uZDg3ZjUwMTYwNzU4N2Q3ODM0YTliM2EwNDBhODg0
ZjRiOTBhYjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAzLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBhIGhhc2gg
YXMga2V5IGluIHRoZSBGb250Q2FzY2FkZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIGEgaGFzaCBhcyBrZXkgaW4gdGhlIEZv
bnRDYXNjYWRlQ2FjaGUuIEluc3RlYWQsIHVzZSBIYXNoVHJhaXRzIGFuZCB1c2UKKyAgICAgICAg
Rm9udENhc2NhZGVDYWNoZUtleSBhcyBrZXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpyZXRyaWV2ZU9y
QWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV1RGOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6
aGFzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6
SGFzaFRyYWl0czxXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5Pjo6ZW1wdHlWYWx1ZSk6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleT46OmNv
bnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6
Rm9udENhc2NhZGVDYWNoZUtleT46OmlzRGVsZXRlZFZhbHVlKToKKwogMjAyMS0wMy0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2UgV29ya2VyIHNj
cmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29yayBwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCBmYjBmODhk
YTc5MWEzYTYxYzU3YmFjYzFhZjcyYjQ2ZjBjYzkwOTZkLi5mNmI3YzlhNzIxN2Q4YWIyZGJhN2U5
NGU2MjIyZWUzZjI1OGU2NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTQ0MywyMCArNDQzLDYgQEAgc3RhdGljIEZvbnRDYXNjYWRl
Q2FjaGVLZXkgbWFrZUZvbnRDYXNjYWRlQ2FjaGVLZXkoY29uc3QgRm9udENhc2NhZGVEZXNjcmlw
dGlvbiYKICAgICByZXR1cm4ga2V5OwogfQogCi1zdGF0aWMgdW5zaWduZWQgY29tcHV0ZUZvbnRD
YXNjYWRlQ2FjaGVIYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGtleSkKLXsKLSAgICAv
LyBGSVhNRTogU2hvdWxkIGhhc2ggdGhlIGtleSBhbmQgdGhlIGZhbWlseSBuYW1lIGNoYXJhY3Rl
cnMgcmF0aGVyIHRoYW4gbWFraW5nIGEgaGFzaCBvdXQgb2Ygb3RoZXIgaGFzaGVzLgotICAgIElu
dGVnZXJIYXNoZXIgaGFzaGVyOwotICAgIGhhc2hlci5hZGQoa2V5LmZvbnREZXNjcmlwdGlvbktl
eS5jb21wdXRlSGFzaCgpKTsKLSAgICBoYXNoZXIuYWRkKGtleS5mb250U2VsZWN0b3JJZCk7Ci0g
ICAgaGFzaGVyLmFkZChrZXkuZm9udFNlbGVjdG9yVmVyc2lvbik7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGtleS5mYW1pbGllcy5zaXplKCk7ICsraSkgewotICAgICAgICBhdXRvJiBm
YW1pbHkgPSBrZXkuZmFtaWxpZXNbaV07Ci0gICAgICAgIGhhc2hlci5hZGQoZmFtaWx5LmlzTnVs
bCgpID8gMCA6IEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmZhbWlseU5hbWVIYXNoKGZhbWlseSkp
OwotICAgIH0KLSAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKLX0KLQogdm9pZCBGb250Q2FjaGU6
OnBydW5lVW5yZWZlcmVuY2VkRW50cmllc0Zyb21Gb250Q2FzY2FkZUNhY2hlKCkKIHsKICAgICBt
X2ZvbnRDYXNjYWRlQ2FjaGUucmVtb3ZlSWYoW10oYXV0byYgZW50cnkpIHsKQEAgLTQ3Myw5ICs0
NTksNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHJ1bmVTeXN0ZW1GYWxsYmFja0ZvbnRzKCkKIFJlZjxG
b250Q2FzY2FkZUZvbnRzPiBGb250Q2FjaGU6OnJldHJpZXZlT3JBZGRDYWNoZWRGb250cyhjb25z
dCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFJlZlB0cjxGb250U2Vs
ZWN0b3I+JiYgZm9udFNlbGVjdG9yKQogewogICAgIGF1dG8ga2V5ID0gbWFrZUZvbnRDYXNjYWRl
Q2FjaGVLZXkoZm9udERlc2NyaXB0aW9uLCBmb250U2VsZWN0b3IuZ2V0KCkpOwotCi0gICAgdW5z
aWduZWQgaGFzaCA9IGNvbXB1dGVGb250Q2FzY2FkZUNhY2hlSGFzaChrZXkpOwotICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9mb250Q2FzY2FkZUNhY2hlLmFkZChoYXNoLCBudWxscHRyKTsKKyAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fZm9udENhc2NhZGVDYWNoZS5hZGQoa2V5LCBudWxscHRyKTsKICAg
ICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIGtleXNNYXRjaChhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLT5rZXksIGtleSkpCiAgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLT5mb250cy5nZXQoKTsKIApAQCAtNTkyLDMgKzU3NiwyMSBAQCBSZWZQdHI8Rm9udD4g
Rm9udENhY2hlOjpzaW1pbGFyRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9t
U3RyaW5nJikKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBX
VEYgeworCit1bnNpZ25lZCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6aGFzaChjb25zdCBXZWJD
b3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5JiBrZXkpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCBo
YXNoIHRoZSBrZXkgYW5kIHRoZSBmYW1pbHkgbmFtZSBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIG1h
a2luZyBhIGhhc2ggb3V0IG9mIG90aGVyIGhhc2hlcy4KKyAgICBJbnRlZ2VySGFzaGVyIGhhc2hl
cjsKKyAgICBoYXNoZXIuYWRkKGtleS5mb250RGVzY3JpcHRpb25LZXkuY29tcHV0ZUhhc2goKSk7
CisgICAgaGFzaGVyLmFkZChrZXkuZm9udFNlbGVjdG9ySWQpOworICAgIGhhc2hlci5hZGQoa2V5
LmZvbnRTZWxlY3RvclZlcnNpb24pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrZXku
ZmFtaWxpZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgZmFtaWx5ID0ga2V5LmZhbWls
aWVzW2ldOworICAgICAgICBoYXNoZXIuYWRkKGZhbWlseS5pc051bGwoKSA/IDAgOiBXZWJDb3Jl
OjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1lSGFzaChmYW1pbHkpKTsKKyAgICB9
CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCBkMTk4ZjEw
YWY5YWE1ZDI3MzQ2Zjg1NGU5ZmM5MWY0NjczZTA4NGNmLi5mNWE2NGMzMDg4ZjVmNmE5Mjc1YzM5
NGY0NDdhZTc5YmYyNjRiMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1
ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTc4LDYgKzE3OSwxMSBAQCBz
dHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleSB7CiAgICAgVmVjdG9yPEF0b21TdHJpbmcsIDM+IGZh
bWlsaWVzOwogICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvcklkOwogICAgIHVuc2lnbmVkIGZvbnRT
ZWxlY3RvclZlcnNpb247CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVD
YWNoZUtleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0
aW9uS2V5ID09IG90aGVyLmZvbnREZXNjcmlwdGlvbktleSAmJiBmYW1pbGllcyA9PSBvdGhlci5m
YW1pbGllcyAmJiBmb250U2VsZWN0b3JJZCA9PSBvdGhlci5mb250U2VsZWN0b3JJZCAmJiBmb250
U2VsZWN0b3JWZXJzaW9uID09IG90aGVyLmZvbnRTZWxlY3RvclZlcnNpb247CisgICAgfQogfTsK
IAogc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVFbnRyeSB7CkBAIC0xOTEsOCArMTk3LDI5IEBAIHB1
YmxpYzoKICAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gZm9udHM7CiB9OwogCi0vLyBGSVhNRTog
U2hvdWxkIG1ha2UgaGFzaCB0cmFpdHMgZm9yIEZvbnRDYXNjYWRlQ2FjaGVLZXkgaW5zdGVhZCBv
ZiB1c2luZyBhIGhhc2ggYXMgdGhlIGtleSAoc28gd2UgaGFzaCBhIGhhc2gpLgotdHlwZWRlZiBI
YXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udENhc2NhZGVDYWNoZUVudHJ5Piwg
QWxyZWFkeUhhc2hlZD4gRm9udENhc2NhZGVDYWNoZTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUu
CisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2ggewor
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVL
ZXkmKTsKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpGb250Q2FzY2FkZUNh
Y2hlS2V5JiBhLCBjb25zdCBXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5JiBiKSB7IHJldHVy
biBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNv
cmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXk+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6Rm9u
dENhc2NhZGVDYWNoZUtleT4geworICAgIHN0YXRpYyBXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hl
S2V5IGVtcHR5VmFsdWUoKSB7IHJldHVybiB7IH07IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleSYgc2xvdCkgeyBzbG90
LmZvbnRTZWxlY3RvcklkID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6Rm9udENhc2Nh
ZGVDYWNoZUtleSYgc2xvdCkgeyByZXR1cm4gc2xvdC5mb250U2VsZWN0b3JJZCA9PSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IERlZmF1bHRIYXNoPFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXk+IDogRm9udENhc2NhZGVD
YWNoZUtleUhhc2ggeyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit0eXBlZGVmIEhhc2hNYXA8Rm9udENhc2NhZGVDYWNoZUtleSwgc3RkOjp1bmlxdWVf
cHRyPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4+IEZvbnRDYXNjYWRlQ2FjaGU7CiAKIGNsYXNzIEZv
bnRDYWNoZSB7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8Rm9udENhY2hl
PjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424559</attachid>
            <date>2021-03-29 12:01:36 -0700</date>
            <delta_ts>2021-03-29 12:49:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223880-20210329120135.patch</filename>
            <type>text/plain</type>
            <size>7075</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVkYWQwZDFhNDlmYjMz
YTkyODhmNzQ1MmFhMWY3MGI4YzdhZjgzNS4uZDg3ZjUwMTYwNzU4N2Q3ODM0YTliM2EwNDBhODg0
ZjRiOTBhYjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAzLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBhIGhhc2gg
YXMga2V5IGluIHRoZSBGb250Q2FzY2FkZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIGEgaGFzaCBhcyBrZXkgaW4gdGhlIEZv
bnRDYXNjYWRlQ2FjaGUuIEluc3RlYWQsIHVzZSBIYXNoVHJhaXRzIGFuZCB1c2UKKyAgICAgICAg
Rm9udENhc2NhZGVDYWNoZUtleSBhcyBrZXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpyZXRyaWV2ZU9y
QWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV1RGOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6
aGFzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6
SGFzaFRyYWl0czxXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5Pjo6ZW1wdHlWYWx1ZSk6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleT46OmNv
bnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6
Rm9udENhc2NhZGVDYWNoZUtleT46OmlzRGVsZXRlZFZhbHVlKToKKwogMjAyMS0wMy0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2UgV29ya2VyIHNj
cmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29yayBwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCBmYjBmODhk
YTc5MWEzYTYxYzU3YmFjYzFhZjcyYjQ2ZjBjYzkwOTZkLi41ODI4ZDRhYTc4MmI5MTkwZDA5ODNm
NWZlYzA4OGRkZGQ0ZjM2ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTQwMywxNyArNDAzLDE3IEBAIHZvaWQgRm9udENhY2hlOjpw
dXJnZUluYWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKICAgICBwbGF0Zm9ybVB1
cmdlSW5hY3RpdmVGb250RGF0YSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlzTWF0Y2goY29uc3Qg
Rm9udENhc2NhZGVDYWNoZUtleSYgYSwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYikKK2Jv
b2wgRm9udENhc2NhZGVDYWNoZUtleTo6b3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2FkZUNhY2hl
S2V5JiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAoYS5mb250RGVzY3JpcHRpb25LZXkgIT0gYi5m
b250RGVzY3JpcHRpb25LZXkpCisgICAgaWYgKGZvbnREZXNjcmlwdGlvbktleSAhPSBvdGhlci5m
b250RGVzY3JpcHRpb25LZXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5mb250
U2VsZWN0b3JJZCAhPSBiLmZvbnRTZWxlY3RvcklkIHx8IGEuZm9udFNlbGVjdG9yVmVyc2lvbiAh
PSBiLmZvbnRTZWxlY3RvclZlcnNpb24pCisgICAgaWYgKGZvbnRTZWxlY3RvcklkICE9IG90aGVy
LmZvbnRTZWxlY3RvcklkIHx8IGZvbnRTZWxlY3RvclZlcnNpb24gIT0gb3RoZXIuZm9udFNlbGVj
dG9yVmVyc2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHNpemUgPSBh
LmZhbWlsaWVzLnNpemUoKTsKLSAgICBpZiAoc2l6ZSAhPSBiLmZhbWlsaWVzLnNpemUoKSkKKyAg
ICB1bnNpZ25lZCBzaXplID0gZmFtaWxpZXMuc2l6ZSgpOworICAgIGlmIChzaXplICE9IG90aGVy
LmZhbWlsaWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKCFGb250Q2FzY2FkZURlc2Ny
aXB0aW9uOjpmYW1pbHlOYW1lc0FyZUVxdWFsKGEuZmFtaWxpZXNbaV0sIGIuZmFtaWxpZXNbaV0p
KQorICAgICAgICBpZiAoIUZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmZhbWlseU5hbWVzQXJlRXF1
YWwoZmFtaWxpZXNbaV0sIG90aGVyLmZhbWlsaWVzW2ldKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC00NDMsMjAgKzQ0Myw2IEBAIHN0YXRp
YyBGb250Q2FzY2FkZUNhY2hlS2V5IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGNvbnN0IEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIGtleTsKIH0KIAotc3RhdGljIHVuc2lnbmVk
IGNvbXB1dGVGb250Q2FzY2FkZUNhY2hlSGFzaChjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBr
ZXkpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCBoYXNoIHRoZSBrZXkgYW5kIHRoZSBmYW1pbHkg
bmFtZSBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIG1ha2luZyBhIGhhc2ggb3V0IG9mIG90aGVyIGhh
c2hlcy4KLSAgICBJbnRlZ2VySGFzaGVyIGhhc2hlcjsKLSAgICBoYXNoZXIuYWRkKGtleS5mb250
RGVzY3JpcHRpb25LZXkuY29tcHV0ZUhhc2goKSk7Ci0gICAgaGFzaGVyLmFkZChrZXkuZm9udFNl
bGVjdG9ySWQpOwotICAgIGhhc2hlci5hZGQoa2V5LmZvbnRTZWxlY3RvclZlcnNpb24pOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrZXkuZmFtaWxpZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgYXV0byYgZmFtaWx5ID0ga2V5LmZhbWlsaWVzW2ldOwotICAgICAgICBoYXNoZXIuYWRk
KGZhbWlseS5pc051bGwoKSA/IDAgOiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1l
SGFzaChmYW1pbHkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Ci19Ci0KIHZv
aWQgRm9udENhY2hlOjpwcnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNo
ZSgpCiB7CiAgICAgbV9mb250Q2FzY2FkZUNhY2hlLnJlbW92ZUlmKFtdKGF1dG8mIGVudHJ5KSB7
CkBAIC00NzMsMTAgKzQ1OSw4IEBAIHZvaWQgRm9udENhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNr
Rm9udHMoKQogUmVmPEZvbnRDYXNjYWRlRm9udHM+IEZvbnRDYWNoZTo6cmV0cmlldmVPckFkZENh
Y2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwg
UmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCiB7CiAgICAgYXV0byBrZXkgPSBt
YWtlRm9udENhc2NhZGVDYWNoZUtleShmb250RGVzY3JpcHRpb24sIGZvbnRTZWxlY3Rvci5nZXQo
KSk7Ci0KLSAgICB1bnNpZ25lZCBoYXNoID0gY29tcHV0ZUZvbnRDYXNjYWRlQ2FjaGVIYXNoKGtl
eSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ZvbnRDYXNjYWRlQ2FjaGUuYWRkKGhhc2gsIG51
bGxwdHIpOwotICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkgJiYga2V5c01hdGNoKGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPmtleSwga2V5KSkKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
Zm9udENhc2NhZGVDYWNoZS5hZGQoa2V5LCBudWxscHRyKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5p
c05ld0VudHJ5KQogICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Zm9u
dHMuZ2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CkBAIC01OTIsMyArNTc2LDIxIEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnNpbWlsYXJG
b250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmKQogI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3Vuc2lnbmVkIEZv
bnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpoYXNoKGNvbnN0IFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2Fj
aGVLZXkmIGtleSkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGhhc2ggdGhlIGtleSBhbmQgdGhl
IGZhbWlseSBuYW1lIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gbWFraW5nIGEgaGFzaCBvdXQgb2Yg
b3RoZXIgaGFzaGVzLgorICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hlciwga2V5LmZv
bnREZXNjcmlwdGlvbktleS5jb21wdXRlSGFzaCgpKTsKKyAgICBhZGQoaGFzaGVyLCBrZXkuZm9u
dFNlbGVjdG9ySWQpOworICAgIGFkZChoYXNoZXIsIGtleS5mb250U2VsZWN0b3JWZXJzaW9uKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5LmZhbWlsaWVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGF1dG8mIGZhbWlseSA9IGtleS5mYW1pbGllc1tpXTsKKyAgICAgICAgYWRkKGhh
c2hlciwgZmFtaWx5LmlzTnVsbCgpID8gMCA6IFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRp
b246OmZhbWlseU5hbWVIYXNoKGZhbWlseSkpOworICAgIH0KKyAgICByZXR1cm4gaGFzaGVyLmhh
c2goKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IGQxOThmMTBhZjlhYTVkMjczNDZmODU0ZTlmYzkx
ZjQ2NzNlMDg0Y2YuLjc5YjkxN2Y4YWI0NWI0MmJhYjI4MjdhNTI2MWRjYWZhYzQ4M2RlZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0xNzgsNiArMTc5LDggQEAgc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVL
ZXkgewogICAgIFZlY3RvcjxBdG9tU3RyaW5nLCAzPiBmYW1pbGllczsKICAgICB1bnNpZ25lZCBm
b250U2VsZWN0b3JJZDsKICAgICB1bnNpZ25lZCBmb250U2VsZWN0b3JWZXJzaW9uOworCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIG90aGVyKSBjb25zdDsK
IH07CiAKIHN0cnVjdCBGb250Q2FzY2FkZUNhY2hlRW50cnkgewpAQCAtMTkxLDggKzE5NCwyOSBA
QCBwdWJsaWM6CiAgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGZvbnRzOwogfTsKIAotLy8gRklY
TUU6IFNob3VsZCBtYWtlIGhhc2ggdHJhaXRzIGZvciBGb250Q2FzY2FkZUNhY2hlS2V5IGluc3Rl
YWQgb2YgdXNpbmcgYSBoYXNoIGFzIHRoZSBrZXkgKHNvIHdlIGhhc2ggYSBoYXNoKS4KLXR5cGVk
ZWYgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPEZvbnRDYXNjYWRlQ2FjaGVFbnRy
eT4sIEFscmVhZHlIYXNoZWQ+IEZvbnRDYXNjYWRlQ2FjaGU7Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlLgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNo
IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpGb250Q2FzY2FkZUNh
Y2hlS2V5Jik7CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6Rm9udENhc2Nh
ZGVDYWNoZUtleSYgYSwgY29uc3QgV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleSYgYikgeyBy
ZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxX
ZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6
OkZvbnRDYXNjYWRlQ2FjaGVLZXk+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6Rm9udENhc2NhZGVD
YWNoZUtleSBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisgICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXkmIHNsb3QpIHsg
c2xvdC5mb250U2VsZWN0b3JJZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkZvbnRD
YXNjYWRlQ2FjaGVLZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3QuZm9udFNlbGVjdG9ySWQgPT0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5PiA6IEZvbnRDYXNj
YWRlQ2FjaGVLZXlIYXNoIHsgfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordHlwZWRlZiBIYXNoTWFwPEZvbnRDYXNjYWRlQ2FjaGVLZXksIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q2FzY2FkZUNhY2hlRW50cnk+PiBGb250Q2FzY2FkZUNhY2hlOwogCiBjbGFz
cyBGb250Q2FjaGUgewogICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPEZvbnRD
YWNoZT47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424565</attachid>
            <date>2021-03-29 12:49:38 -0700</date>
            <delta_ts>2021-03-29 14:25:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223880-20210329124937.patch</filename>
            <type>text/plain</type>
            <size>7076</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVkYWQwZDFhNDlmYjMz
YTkyODhmNzQ1MmFhMWY3MGI4YzdhZjgzNS4uZDg3ZjUwMTYwNzU4N2Q3ODM0YTliM2EwNDBhODg0
ZjRiOTBhYjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAzLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBhIGhhc2gg
YXMga2V5IGluIHRoZSBGb250Q2FzY2FkZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIGEgaGFzaCBhcyBrZXkgaW4gdGhlIEZv
bnRDYXNjYWRlQ2FjaGUuIEluc3RlYWQsIHVzZSBIYXNoVHJhaXRzIGFuZCB1c2UKKyAgICAgICAg
Rm9udENhc2NhZGVDYWNoZUtleSBhcyBrZXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpyZXRyaWV2ZU9y
QWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV1RGOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6
aGFzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6
SGFzaFRyYWl0czxXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5Pjo6ZW1wdHlWYWx1ZSk6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleT46OmNv
bnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6
Rm9udENhc2NhZGVDYWNoZUtleT46OmlzRGVsZXRlZFZhbHVlKToKKwogMjAyMS0wMy0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2UgV29ya2VyIHNj
cmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29yayBwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCBmYjBmODhk
YTc5MWEzYTYxYzU3YmFjYzFhZjcyYjQ2ZjBjYzkwOTZkLi41ODI4ZDRhYTc4MmI5MTkwZDA5ODNm
NWZlYzA4OGRkZGQ0ZjM2ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTQwMywxNyArNDAzLDE3IEBAIHZvaWQgRm9udENhY2hlOjpw
dXJnZUluYWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKICAgICBwbGF0Zm9ybVB1
cmdlSW5hY3RpdmVGb250RGF0YSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlzTWF0Y2goY29uc3Qg
Rm9udENhc2NhZGVDYWNoZUtleSYgYSwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYikKK2Jv
b2wgRm9udENhc2NhZGVDYWNoZUtleTo6b3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2FkZUNhY2hl
S2V5JiBvdGhlcikgY29uc3QKIHsKLSAgICBpZiAoYS5mb250RGVzY3JpcHRpb25LZXkgIT0gYi5m
b250RGVzY3JpcHRpb25LZXkpCisgICAgaWYgKGZvbnREZXNjcmlwdGlvbktleSAhPSBvdGhlci5m
b250RGVzY3JpcHRpb25LZXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5mb250
U2VsZWN0b3JJZCAhPSBiLmZvbnRTZWxlY3RvcklkIHx8IGEuZm9udFNlbGVjdG9yVmVyc2lvbiAh
PSBiLmZvbnRTZWxlY3RvclZlcnNpb24pCisgICAgaWYgKGZvbnRTZWxlY3RvcklkICE9IG90aGVy
LmZvbnRTZWxlY3RvcklkIHx8IGZvbnRTZWxlY3RvclZlcnNpb24gIT0gb3RoZXIuZm9udFNlbGVj
dG9yVmVyc2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHNpemUgPSBh
LmZhbWlsaWVzLnNpemUoKTsKLSAgICBpZiAoc2l6ZSAhPSBiLmZhbWlsaWVzLnNpemUoKSkKKyAg
ICB1bnNpZ25lZCBzaXplID0gZmFtaWxpZXMuc2l6ZSgpOworICAgIGlmIChzaXplICE9IG90aGVy
LmZhbWlsaWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKCFGb250Q2FzY2FkZURlc2Ny
aXB0aW9uOjpmYW1pbHlOYW1lc0FyZUVxdWFsKGEuZmFtaWxpZXNbaV0sIGIuZmFtaWxpZXNbaV0p
KQorICAgICAgICBpZiAoIUZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmZhbWlseU5hbWVzQXJlRXF1
YWwoZmFtaWxpZXNbaV0sIG90aGVyLmZhbWlsaWVzW2ldKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC00NDMsMjAgKzQ0Myw2IEBAIHN0YXRp
YyBGb250Q2FzY2FkZUNhY2hlS2V5IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGNvbnN0IEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIGtleTsKIH0KIAotc3RhdGljIHVuc2lnbmVk
IGNvbXB1dGVGb250Q2FzY2FkZUNhY2hlSGFzaChjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBr
ZXkpCi17Ci0gICAgLy8gRklYTUU6IFNob3VsZCBoYXNoIHRoZSBrZXkgYW5kIHRoZSBmYW1pbHkg
bmFtZSBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIG1ha2luZyBhIGhhc2ggb3V0IG9mIG90aGVyIGhh
c2hlcy4KLSAgICBJbnRlZ2VySGFzaGVyIGhhc2hlcjsKLSAgICBoYXNoZXIuYWRkKGtleS5mb250
RGVzY3JpcHRpb25LZXkuY29tcHV0ZUhhc2goKSk7Ci0gICAgaGFzaGVyLmFkZChrZXkuZm9udFNl
bGVjdG9ySWQpOwotICAgIGhhc2hlci5hZGQoa2V5LmZvbnRTZWxlY3RvclZlcnNpb24pOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrZXkuZmFtaWxpZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgYXV0byYgZmFtaWx5ID0ga2V5LmZhbWlsaWVzW2ldOwotICAgICAgICBoYXNoZXIuYWRk
KGZhbWlseS5pc051bGwoKSA/IDAgOiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1l
SGFzaChmYW1pbHkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Ci19Ci0KIHZv
aWQgRm9udENhY2hlOjpwcnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNo
ZSgpCiB7CiAgICAgbV9mb250Q2FzY2FkZUNhY2hlLnJlbW92ZUlmKFtdKGF1dG8mIGVudHJ5KSB7
CkBAIC00NzMsMTAgKzQ1OSw4IEBAIHZvaWQgRm9udENhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNr
Rm9udHMoKQogUmVmPEZvbnRDYXNjYWRlRm9udHM+IEZvbnRDYWNoZTo6cmV0cmlldmVPckFkZENh
Y2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwg
UmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCiB7CiAgICAgYXV0byBrZXkgPSBt
YWtlRm9udENhc2NhZGVDYWNoZUtleShmb250RGVzY3JpcHRpb24sIGZvbnRTZWxlY3Rvci5nZXQo
KSk7Ci0KLSAgICB1bnNpZ25lZCBoYXNoID0gY29tcHV0ZUZvbnRDYXNjYWRlQ2FjaGVIYXNoKGtl
eSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ZvbnRDYXNjYWRlQ2FjaGUuYWRkKGhhc2gsIG51
bGxwdHIpOwotICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkgJiYga2V5c01hdGNoKGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPmtleSwga2V5KSkKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
Zm9udENhc2NhZGVDYWNoZS5hZGQoa2V5LCBudWxscHRyKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5p
c05ld0VudHJ5KQogICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Zm9u
dHMuZ2V0KCk7CiAKICAgICBhdXRvJiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CkBAIC01OTIsMyArNTc2LDIxIEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnNpbWlsYXJG
b250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmKQogI2VuZGlmCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3Vuc2lnbmVkIEZv
bnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpoYXNoKGNvbnN0IFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2Fj
aGVLZXkmIGtleSkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGhhc2ggdGhlIGtleSBhbmQgdGhl
IGZhbWlseSBuYW1lIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gbWFraW5nIGEgaGFzaCBvdXQgb2Yg
b3RoZXIgaGFzaGVzLgorICAgIEhhc2hlciBoYXNoZXI7CisgICAgYWRkKGhhc2hlciwga2V5LmZv
bnREZXNjcmlwdGlvbktleS5jb21wdXRlSGFzaCgpKTsKKyAgICBhZGQoaGFzaGVyLCBrZXkuZm9u
dFNlbGVjdG9ySWQpOworICAgIGFkZChoYXNoZXIsIGtleS5mb250U2VsZWN0b3JWZXJzaW9uKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5LmZhbWlsaWVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGF1dG8mIGZhbWlseSA9IGtleS5mYW1pbGllc1tpXTsKKyAgICAgICAgYWRkKGhh
c2hlciwgZmFtaWx5LmlzTnVsbCgpID8gMCA6IFdlYkNvcmU6OkZvbnRDYXNjYWRlRGVzY3JpcHRp
b246OmZhbWlseU5hbWVIYXNoKGZhbWlseSkpOworICAgIH0KKyAgICByZXR1cm4gaGFzaGVyLmhh
c2goKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IGQxOThmMTBhZjlhYTVkMjczNDZmODU0ZTlmYzkx
ZjQ2NzNlMDg0Y2YuLmViZjQyNTAyZWU1OTY5MjA2NDAwYzZhZDM1YjFmOGIyYTA1MjFkZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUg
PHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0xNzgsNiArMTc5LDggQEAgc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVL
ZXkgewogICAgIFZlY3RvcjxBdG9tU3RyaW5nLCAzPiBmYW1pbGllczsKICAgICB1bnNpZ25lZCBm
b250U2VsZWN0b3JJZDsKICAgICB1bnNpZ25lZCBmb250U2VsZWN0b3JWZXJzaW9uOworCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIG90aGVyKSBjb25zdDsK
IH07CiAKIHN0cnVjdCBGb250Q2FzY2FkZUNhY2hlRW50cnkgewpAQCAtMTkxLDggKzE5NCwyOSBA
QCBwdWJsaWM6CiAgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGZvbnRzOwogfTsKIAotLy8gRklY
TUU6IFNob3VsZCBtYWtlIGhhc2ggdHJhaXRzIGZvciBGb250Q2FzY2FkZUNhY2hlS2V5IGluc3Rl
YWQgb2YgdXNpbmcgYSBoYXNoIGFzIHRoZSBrZXkgKHNvIHdlIGhhc2ggYSBoYXNoKS4KLXR5cGVk
ZWYgSGFzaE1hcDx1bnNpZ25lZCwgc3RkOjp1bmlxdWVfcHRyPEZvbnRDYXNjYWRlQ2FjaGVFbnRy
eT4sIEFscmVhZHlIYXNoZWQ+IEZvbnRDYXNjYWRlQ2FjaGU7Cit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlLgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNo
IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpGb250Q2FzY2FkZUNh
Y2hlS2V5Jik7CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6Rm9udENhc2Nh
ZGVDYWNoZUtleSYgYSwgY29uc3QgV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleSYgYikgeyBy
ZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
V2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3Jl
OjpGb250Q2FzY2FkZUNhY2hlS2V5PiB7CisgICAgc3RhdGljIFdlYkNvcmU6OkZvbnRDYXNjYWRl
Q2FjaGVLZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQorICAgIHN0YXRpYyB2b2lkIGNv
bnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5JiBzbG90KSB7
IHNsb3QuZm9udFNlbGVjdG9ySWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpGb250
Q2FzY2FkZUNhY2hlS2V5JiBzbG90KSB7IHJldHVybiBzbG90LmZvbnRTZWxlY3RvcklkID09IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsgfQorfTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleT4gOiBGb250Q2Fz
Y2FkZUNhY2hlS2V5SGFzaCB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3R5cGVkZWYgSGFzaE1hcDxGb250Q2FzY2FkZUNhY2hlS2V5LCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udENhc2NhZGVDYWNoZUVudHJ5Pj4gRm9udENhc2NhZGVDYWNoZTsKIAogY2xh
c3MgRm9udENhY2hlIHsKICAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxGb250
Q2FjaGU+Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424579</attachid>
            <date>2021-03-29 14:25:34 -0700</date>
            <delta_ts>2021-03-29 15:23:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223880-20210329142533.patch</filename>
            <type>text/plain</type>
            <size>6327</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVkYWQwZDFhNDlmYjMz
YTkyODhmNzQ1MmFhMWY3MGI4YzdhZjgzNS4uZDg3ZjUwMTYwNzU4N2Q3ODM0YTliM2EwNDBhODg0
ZjRiOTBhYjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAzLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBhIGhhc2gg
YXMga2V5IGluIHRoZSBGb250Q2FzY2FkZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHVzaW5nIGEgaGFzaCBhcyBrZXkgaW4gdGhlIEZv
bnRDYXNjYWRlQ2FjaGUuIEluc3RlYWQsIHVzZSBIYXNoVHJhaXRzIGFuZCB1c2UKKyAgICAgICAg
Rm9udENhc2NhZGVDYWNoZUtleSBhcyBrZXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpyZXRyaWV2ZU9y
QWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV1RGOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6
aGFzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6
SGFzaFRyYWl0czxXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5Pjo6ZW1wdHlWYWx1ZSk6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleT46OmNv
bnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6
Rm9udENhc2NhZGVDYWNoZUtleT46OmlzRGVsZXRlZFZhbHVlKToKKwogMjAyMS0wMy0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2UgV29ya2VyIHNj
cmlwdHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29yayBwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCBmYjBmODhk
YTc5MWEzYTYxYzU3YmFjYzFhZjcyYjQ2ZjBjYzkwOTZkLi5lNzAxNmIxNGI2NGVlOWVjNWI3NDdi
MzQ0MzdiMDU3Nzg4ZGU4MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHVy
Z2VJbmFjdGl2ZUZvbnREYXRhKHVuc2lnbmVkIHB1cmdlQ291bnQpCiAgICAgcGxhdGZvcm1QdXJn
ZUluYWN0aXZlRm9udERhdGEoKTsKIH0KIAotc3RhdGljIGJvb2wga2V5c01hdGNoKGNvbnN0IEZv
bnRDYXNjYWRlQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGIpCitib29s
IG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYSwgY29uc3QgRm9udENhc2Nh
ZGVDYWNoZUtleSYgYikKIHsKICAgICBpZiAoYS5mb250RGVzY3JpcHRpb25LZXkgIT0gYi5mb250
RGVzY3JpcHRpb25LZXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0MywyMCArNDQzLDYg
QEAgc3RhdGljIEZvbnRDYXNjYWRlQ2FjaGVLZXkgbWFrZUZvbnRDYXNjYWRlQ2FjaGVLZXkoY29u
c3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYKICAgICByZXR1cm4ga2V5OwogfQogCi1zdGF0aWMg
dW5zaWduZWQgY29tcHV0ZUZvbnRDYXNjYWRlQ2FjaGVIYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2Fj
aGVLZXkmIGtleSkKLXsKLSAgICAvLyBGSVhNRTogU2hvdWxkIGhhc2ggdGhlIGtleSBhbmQgdGhl
IGZhbWlseSBuYW1lIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gbWFraW5nIGEgaGFzaCBvdXQgb2Yg
b3RoZXIgaGFzaGVzLgotICAgIEludGVnZXJIYXNoZXIgaGFzaGVyOwotICAgIGhhc2hlci5hZGQo
a2V5LmZvbnREZXNjcmlwdGlvbktleS5jb21wdXRlSGFzaCgpKTsKLSAgICBoYXNoZXIuYWRkKGtl
eS5mb250U2VsZWN0b3JJZCk7Ci0gICAgaGFzaGVyLmFkZChrZXkuZm9udFNlbGVjdG9yVmVyc2lv
bik7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtleS5mYW1pbGllcy5zaXplKCk7ICsr
aSkgewotICAgICAgICBhdXRvJiBmYW1pbHkgPSBrZXkuZmFtaWxpZXNbaV07Ci0gICAgICAgIGhh
c2hlci5hZGQoZmFtaWx5LmlzTnVsbCgpID8gMCA6IEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmZh
bWlseU5hbWVIYXNoKGZhbWlseSkpOwotICAgIH0KLSAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsK
LX0KLQogdm9pZCBGb250Q2FjaGU6OnBydW5lVW5yZWZlcmVuY2VkRW50cmllc0Zyb21Gb250Q2Fz
Y2FkZUNhY2hlKCkKIHsKICAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUucmVtb3ZlSWYoW10oYXV0byYg
ZW50cnkpIHsKQEAgLTQ3MywxMCArNDU5LDggQEAgdm9pZCBGb250Q2FjaGU6OnBydW5lU3lzdGVt
RmFsbGJhY2tGb250cygpCiBSZWY8Rm9udENhc2NhZGVGb250cz4gRm9udENhY2hlOjpyZXRyaWV2
ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2Ny
aXB0aW9uLCBSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikKIHsKICAgICBhdXRv
IGtleSA9IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGZvbnREZXNjcmlwdGlvbiwgZm9udFNlbGVj
dG9yLmdldCgpKTsKLQotICAgIHVuc2lnbmVkIGhhc2ggPSBjb21wdXRlRm9udENhc2NhZGVDYWNo
ZUhhc2goa2V5KTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udENhc2NhZGVDYWNoZS5hZGQo
aGFzaCwgbnVsbHB0cik7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiBrZXlzTWF0
Y2goYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+a2V5LCBrZXkpKQorICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9mb250Q2FzY2FkZUNhY2hlLmFkZChrZXksIG51bGxwdHIpOworICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5mb250cy5nZXQoKTsKIAogICAgIGF1dG8mIG5ld0VudHJ5ID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKQEAgLTU5MiwzICs1NzYsMjEgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6
c2ltaWxhckZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYpCiAj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordW5z
aWduZWQgRm9udENhc2NhZGVDYWNoZUtleUhhc2g6Omhhc2goY29uc3QgV2ViQ29yZTo6Rm9udENh
c2NhZGVDYWNoZUtleSYga2V5KQoreworICAgIC8vIEZJWE1FOiBTaG91bGQgaGFzaCB0aGUga2V5
IGFuZCB0aGUgZmFtaWx5IG5hbWUgY2hhcmFjdGVycyByYXRoZXIgdGhhbiBtYWtpbmcgYSBoYXNo
IG91dCBvZiBvdGhlciBoYXNoZXMuCisgICAgSGFzaGVyIGhhc2hlcjsKKyAgICBhZGQoaGFzaGVy
LCBrZXkuZm9udERlc2NyaXB0aW9uS2V5LmNvbXB1dGVIYXNoKCkpOworICAgIGFkZChoYXNoZXIs
IGtleS5mb250U2VsZWN0b3JJZCk7CisgICAgYWRkKGhhc2hlciwga2V5LmZvbnRTZWxlY3RvclZl
cnNpb24pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrZXkuZmFtaWxpZXMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgYXV0byYgZmFtaWx5ID0ga2V5LmZhbWlsaWVzW2ldOworICAgICAg
ICBhZGQoaGFzaGVyLCBmYW1pbHkuaXNOdWxsKCkgPyAwIDogV2ViQ29yZTo6Rm9udENhc2NhZGVE
ZXNjcmlwdGlvbjo6ZmFtaWx5TmFtZUhhc2goZmFtaWx5KSk7CisgICAgfQorICAgIHJldHVybiBo
YXNoZXIuaGFzaCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggZDE5OGYxMGFmOWFhNWQyNzM0NmY4
NTRlOWZjOTFmNDY3M2UwODRjZi4uMmY3YzM3MmI3OGZiNDNjNjUyY2FmZDU0NDQ1NjFhN2MyZmQ3
NDhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxsaW1pdHMuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE4MCw2ICsxODEsOCBAQCBzdHJ1Y3QgRm9udENhc2Nh
ZGVDYWNoZUtleSB7CiAgICAgdW5zaWduZWQgZm9udFNlbGVjdG9yVmVyc2lvbjsKIH07CiAKK2Jv
b2wgb3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiwgY29uc3QgRm9udENhc2Nh
ZGVDYWNoZUtleSYpOworCiBzdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUVudHJ5IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTE5MSw4ICsxOTQsMjkgQEAgcHVibGlj
OgogICAgIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBmb250czsKIH07CiAKLS8vIEZJWE1FOiBTaG91
bGQgbWFrZSBoYXNoIHRyYWl0cyBmb3IgRm9udENhc2NhZGVDYWNoZUtleSBpbnN0ZWFkIG9mIHVz
aW5nIGEgaGFzaCBhcyB0aGUga2V5IChzbyB3ZSBoYXNoIGEgaGFzaCkuCi10eXBlZGVmIEhhc2hN
YXA8dW5zaWduZWQsIHN0ZDo6dW5pcXVlX3B0cjxGb250Q2FzY2FkZUNhY2hlRW50cnk+LCBBbHJl
YWR5SGFzaGVkPiBGb250Q2FzY2FkZUNhY2hlOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZS4KKwor
bmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaCB7CisgICAg
c3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleSYp
OworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVL
ZXkmIGEsIGNvbnN0IFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXkmIGIpIHsgcmV0dXJuIGEg
PT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxl
dGVkID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6
OkZvbnRDYXNjYWRlQ2FjaGVLZXk+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udENh
c2NhZGVDYWNoZUtleT4geworICAgIHN0YXRpYyBXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5
IGVtcHR5VmFsdWUoKSB7IHJldHVybiB7IH07IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3RE
ZWxldGVkVmFsdWUoV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleSYgc2xvdCkgeyBzbG90LmZv
bnRTZWxlY3RvcklkID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Cisg
ICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6Rm9udENhc2NhZGVD
YWNoZUtleSYgc2xvdCkgeyByZXR1cm4gc2xvdC5mb250U2VsZWN0b3JJZCA9PSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCk7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXk+IDogRm9udENhc2NhZGVDYWNo
ZUtleUhhc2ggeyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit0eXBlZGVmIEhhc2hNYXA8Rm9udENhc2NhZGVDYWNoZUtleSwgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4+IEZvbnRDYXNjYWRlQ2FjaGU7CiAKIGNsYXNzIEZvbnRD
YWNoZSB7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8Rm9udENhY2hlPjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424593</attachid>
            <date>2021-03-29 15:23:59 -0700</date>
            <delta_ts>2021-03-29 15:27:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223880-20210329152358.patch</filename>
            <type>text/plain</type>
            <size>6134</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjhhMDUwNmQ1Mzc2YWJk
MjQ0Mzc0ZjA5NmRhYzFlM2RmMDRkMTM3OS4uNjE0ZTZmZTBlMmIzMmY2NGNhODVlODQ2ZTc4ZGJm
YmI0MzIyY2VmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAzLTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBhIGhhc2gg
YXMga2V5IGluIHRoZSBGb250Q2FzY2FkZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBTdG9wIHVzaW5nIGEgaGFzaCBhcyBrZXkgaW4gdGhlIEZvbnRD
YXNjYWRlQ2FjaGUuIEluc3RlYWQsIHVzZSBIYXNoVHJhaXRzIGFuZCB1c2UKKyAgICAgICAgRm9u
dENhc2NhZGVDYWNoZUtleSBhcyBrZXkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpyZXRyaWV2ZU9yQWRk
Q2FjaGVkRm9udHMpOgorICAgICAgICAoV1RGOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6aGFz
aCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAg
KFdURjo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFz
aFRyYWl0czxXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5Pjo6ZW1wdHlWYWx1ZSk6CisgICAg
ICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleT46OmNvbnN0
cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9u
dENhc2NhZGVDYWNoZUtleT46OmlzRGVsZXRlZFZhbHVlKToKKwogMjAyMS0wMy0yNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2UgV29ya2VyIHNjcmlw
dHMgdXNlIHRvbyBtdWNoIG1lbW9yeSBpbiB0aGUgbmV0d29yayBwcm9jZXNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCBmYjBmODhkYTc5
MWEzYTYxYzU3YmFjYzFhZjcyYjQ2ZjBjYzkwOTZkLi4wOGJiMTczNzg5MTc5NzYwODZlNTA0NjVj
N2I0ZTMzYjU1NWFjYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIEZvbnRDYWNoZTo6cHVyZ2VJ
bmFjdGl2ZUZvbnREYXRhKHVuc2lnbmVkIHB1cmdlQ291bnQpCiAgICAgcGxhdGZvcm1QdXJnZUlu
YWN0aXZlRm9udERhdGEoKTsKIH0KIAotc3RhdGljIGJvb2wga2V5c01hdGNoKGNvbnN0IEZvbnRD
YXNjYWRlQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGIpCitib29sIG9w
ZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYSwgY29uc3QgRm9udENhc2NhZGVD
YWNoZUtleSYgYikKIHsKICAgICBpZiAoYS5mb250RGVzY3JpcHRpb25LZXkgIT0gYi5mb250RGVz
Y3JpcHRpb25LZXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQxOSw2ICs0MTksMTggQEAg
c3RhdGljIGJvb2wga2V5c01hdGNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGEsIGNvbnN0
IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordW5zaWduZWQg
Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6Omhhc2goY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYg
a2V5KQoreworICAgIC8vIEZJWE1FOiBTaG91bGQgaGFzaCB0aGUga2V5IGFuZCB0aGUgZmFtaWx5
IG5hbWUgY2hhcmFjdGVycyByYXRoZXIgdGhhbiBtYWtpbmcgYSBoYXNoIG91dCBvZiBvdGhlciBo
YXNoZXMuCisgICAgSGFzaGVyIGhhc2hlcjsKKyAgICBhZGQoaGFzaGVyLCBrZXkuZm9udERlc2Ny
aXB0aW9uS2V5LmNvbXB1dGVIYXNoKCkpOworICAgIGFkZChoYXNoZXIsIGtleS5mb250U2VsZWN0
b3JJZCk7CisgICAgYWRkKGhhc2hlciwga2V5LmZvbnRTZWxlY3RvclZlcnNpb24pOworICAgIGZv
ciAoYXV0byYgZmFtaWx5IDoga2V5LmZhbWlsaWVzKQorICAgICAgICBhZGQoaGFzaGVyLCBmYW1p
bHkuaXNOdWxsKCkgPyAwIDogV2ViQ29yZTo6Rm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZmFtaWx5
TmFtZUhhc2goZmFtaWx5KSk7CisgICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Cit9CisKIHZvaWQg
Rm9udENhY2hlOjppbnZhbGlkYXRlRm9udENhc2NhZGVDYWNoZSgpCiB7CiAgICAgbV9mb250Q2Fz
Y2FkZUNhY2hlLmNsZWFyKCk7CkBAIC00NDMsMjAgKzQ1NSw2IEBAIHN0YXRpYyBGb250Q2FzY2Fk
ZUNhY2hlS2V5IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24mCiAgICAgcmV0dXJuIGtleTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVGb250
Q2FzY2FkZUNhY2hlSGFzaChjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBrZXkpCi17Ci0gICAg
Ly8gRklYTUU6IFNob3VsZCBoYXNoIHRoZSBrZXkgYW5kIHRoZSBmYW1pbHkgbmFtZSBjaGFyYWN0
ZXJzIHJhdGhlciB0aGFuIG1ha2luZyBhIGhhc2ggb3V0IG9mIG90aGVyIGhhc2hlcy4KLSAgICBJ
bnRlZ2VySGFzaGVyIGhhc2hlcjsKLSAgICBoYXNoZXIuYWRkKGtleS5mb250RGVzY3JpcHRpb25L
ZXkuY29tcHV0ZUhhc2goKSk7Ci0gICAgaGFzaGVyLmFkZChrZXkuZm9udFNlbGVjdG9ySWQpOwot
ICAgIGhhc2hlci5hZGQoa2V5LmZvbnRTZWxlY3RvclZlcnNpb24pOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBrZXkuZmFtaWxpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYg
ZmFtaWx5ID0ga2V5LmZhbWlsaWVzW2ldOwotICAgICAgICBoYXNoZXIuYWRkKGZhbWlseS5pc051
bGwoKSA/IDAgOiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1lSGFzaChmYW1pbHkp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7Ci19Ci0KIHZvaWQgRm9udENhY2hl
OjpwcnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9tRm9udENhc2NhZGVDYWNoZSgpCiB7CiAgICAg
bV9mb250Q2FzY2FkZUNhY2hlLnJlbW92ZUlmKFtdKGF1dG8mIGVudHJ5KSB7CkBAIC00NzMsMTAg
KzQ3MSw4IEBAIHZvaWQgRm9udENhY2hlOjpwcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKQogUmVm
PEZvbnRDYXNjYWRlRm9udHM+IEZvbnRDYWNoZTo6cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNv
bnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgUmVmUHRyPEZvbnRT
ZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCiB7CiAgICAgYXV0byBrZXkgPSBtYWtlRm9udENhc2Nh
ZGVDYWNoZUtleShmb250RGVzY3JpcHRpb24sIGZvbnRTZWxlY3Rvci5nZXQoKSk7Ci0KLSAgICB1
bnNpZ25lZCBoYXNoID0gY29tcHV0ZUZvbnRDYXNjYWRlQ2FjaGVIYXNoKGtleSk7Ci0gICAgYXV0
byBhZGRSZXN1bHQgPSBtX2ZvbnRDYXNjYWRlQ2FjaGUuYWRkKGhhc2gsIG51bGxwdHIpOwotICAg
IGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkgJiYga2V5c01hdGNoKGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUtPmtleSwga2V5KSkKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udENhc2NhZGVD
YWNoZS5hZGQoa2V5LCBudWxscHRyKTsKKyAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQog
ICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+Zm9udHMuZ2V0KCk7CiAK
ICAgICBhdXRvJiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IGQxOThmMTBhZjlh
YTVkMjczNDZmODU0ZTlmYzkxZjQ2NzNlMDg0Y2YuLjU1MTI0N2VlNDliODJlYTI5NGI4NmQ3NWEz
ODExZDJlZTk5MDQ3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8
bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xODAsNiArMTgxLDggQEAgc3RydWN0
IEZvbnRDYXNjYWRlQ2FjaGVLZXkgewogICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvclZlcnNpb247
CiB9OwogCitib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYsIGNvbnN0
IEZvbnRDYXNjYWRlQ2FjaGVLZXkmKTsKKwogc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVFbnRyeSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xOTEsOCArMTk0LDE5
IEBAIHB1YmxpYzoKICAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gZm9udHM7CiB9OwogCi0vLyBG
SVhNRTogU2hvdWxkIG1ha2UgaGFzaCB0cmFpdHMgZm9yIEZvbnRDYXNjYWRlQ2FjaGVLZXkgaW5z
dGVhZCBvZiB1c2luZyBhIGhhc2ggYXMgdGhlIGtleSAoc28gd2UgaGFzaCBhIGhhc2gpLgotdHlw
ZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udENhc2NhZGVDYWNoZUVu
dHJ5PiwgQWxyZWFkeUhhc2hlZD4gRm9udENhc2NhZGVDYWNoZTsKK3N0cnVjdCBGb250Q2FzY2Fk
ZUNhY2hlS2V5SGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6
Rm9udENhc2NhZGVDYWNoZUtleSYpOworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNv
cmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXkmIGEsIGNvbnN0IFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2Fj
aGVLZXkmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgRm9udENhc2Nh
ZGVDYWNoZUtleUhhc2hUcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OkZv
bnRDYXNjYWRlQ2FjaGVLZXk+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNo
ZUtleSBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisgICAgc3RhdGljIHZvaWQgY29uc3Ry
dWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGVLZXkmIHNsb3QpIHsgc2xv
dC5mb250U2VsZWN0b3JJZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsg
fQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkZvbnRDYXNj
YWRlQ2FjaGVLZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3QuZm9udFNlbGVjdG9ySWQgPT0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Cit9OworCit1c2luZyBGb250Q2FzY2Fk
ZUNhY2hlID0gSGFzaE1hcDxGb250Q2FzY2FkZUNhY2hlS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dENhc2NhZGVDYWNoZUVudHJ5PiwgRm9udENhc2NhZGVDYWNoZUtleUhhc2gsIEZvbnRDYXNjYWRl
Q2FjaGVLZXlIYXNoVHJhaXRzPjsKIAogY2xhc3MgRm9udENhY2hlIHsKICAgICBmcmllbmQgY2xh
c3MgV1RGOjpOZXZlckRlc3Ryb3llZDxGb250Q2FjaGU+Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>