<?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>147751</bug_id>
          
          <creation_ts>2015-08-06 15:24:10 -0700</creation_ts>
          <short_desc>Make FontDescriptionKey sensitive to FontFeatureSettings</short_desc>
          <delta_ts>2015-08-10 21:27:26 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>147722</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1115479</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 15:24:10 -0700</bug_when>
    <thetext>Make FontDescriptionKey sensitive to FontFeatureSettings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115482</commentid>
    <comment_count>1</comment_count>
      <attachid>258407</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 15:26:01 -0700</bug_when>
    <thetext>Created attachment 258407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115484</commentid>
    <comment_count>2</comment_count>
      <attachid>258408</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 15:33:10 -0700</bug_when>
    <thetext>Created attachment 258408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115486</commentid>
    <comment_count>3</comment_count>
      <attachid>258408</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 15:34:40 -0700</bug_when>
    <thetext>Comment on attachment 258408
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +

I should probably also say that this patch is in preparation for implementing font-feature-settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115488</commentid>
    <comment_count>4</comment_count>
      <attachid>258407</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-06 15:34:55 -0700</bug_when>
    <thetext>Comment on attachment 258407
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.h:75
&gt; +        , m_featureSettings(0)

Is this needed? m_featureSettings will be default contracted to null.

&gt; Source/WebCore/platform/graphics/FontCache.h:132
&gt; +    unsigned m_size;
&gt; +    unsigned m_weight;
&gt; +    unsigned m_flags;

Can we default these to 0 here?

&gt; Source/WebCore/platform/graphics/FontFeatureSettings.cpp:72
&gt; +    unsigned result = 0x5E787623U; // Chosen randomly

Why do we need a random number?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115494</commentid>
    <comment_count>5</comment_count>
      <attachid>258408</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-08-06 15:39:21 -0700</bug_when>
    <thetext>Comment on attachment 258408
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.h:110
&gt; +        unsigned result = WTF::intHash(m_size);
&gt; +        result = WTF::pairIntHash(result, WTF::intHash(m_weight));
&gt; +        result = WTF::pairIntHash(result, WTF::intHash(m_flags));
&gt; +        result = WTF::pairIntHash(result, WTF::intHash(m_flags));
&gt; +        result = WTF::PairHash&lt;AtomicString, unsigned&gt;::hash(std::make_pair(m_locale, result));
&gt; +        result = WTF::pairIntHash(result, m_featureSettings ? m_featureSettings-&gt;hash() : 0);

The way we usually do this to create an array of unsigned and pass it to StringHasher::hashMemory.  See SecurityOriginHash.h for an example.  We really need to add a hash_combine like thing (http://www.boost.org/doc/libs/1_55_0/doc/html/hash/combine.html).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115496</commentid>
    <comment_count>6</comment_count>
      <attachid>258408</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-06 15:41:48 -0700</bug_when>
    <thetext>Comment on attachment 258408
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.h:72
&gt; +        : m_size(0)

What about

&gt; Source/WebCore/platform/graphics/FontCache.h:131
&gt; +    unsigned m_weight;

You could initialize these like so:

unsigned m_size {0};

and remove the default constructor entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115498</commentid>
    <comment_count>7</comment_count>
      <attachid>258408</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 15:42:19 -0700</bug_when>
    <thetext>Comment on attachment 258408
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/FontCache.h:110
&gt;&gt; +        result = WTF::pairIntHash(result, m_featureSettings ? m_featureSettings-&gt;hash() : 0);
&gt; 
&gt; The way we usually do this to create an array of unsigned and pass it to StringHasher::hashMemory.  See SecurityOriginHash.h for an example.  We really need to add a hash_combine like thing (http://www.boost.org/doc/libs/1_55_0/doc/html/hash/combine.html).

Ah, yes, I&apos;ve seen that pattern in PlatformFontData. I&apos;ll use that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115500</commentid>
    <comment_count>8</comment_count>
      <attachid>258407</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 15:44:47 -0700</bug_when>
    <thetext>Comment on attachment 258407
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/FontCache.h:75
&gt;&gt; +        , m_featureSettings(0)
&gt; 
&gt; Is this needed? m_featureSettings will be default contracted to null.

Nope!

&gt;&gt; Source/WebCore/platform/graphics/FontCache.h:132
&gt;&gt; +    unsigned m_flags;
&gt; 
&gt; Can we default these to 0 here?

Yep!

&gt;&gt; Source/WebCore/platform/graphics/FontFeatureSettings.cpp:72
&gt;&gt; +    unsigned result = 0x5E787623U; // Chosen randomly
&gt; 
&gt; Why do we need a random number?

Because this is the input to a hash function, it seems like a better idea than just 0 for increasing entropy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115502</commentid>
    <comment_count>9</comment_count>
      <attachid>258408</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 15:47:26 -0700</bug_when>
    <thetext>Comment on attachment 258408
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.h:109
&gt; +        result = WTF::pairIntHash(result, WTF::intHash(m_flags));
&gt; +        result = WTF::pairIntHash(result, WTF::intHash(m_flags));
&gt; +        result = WTF::PairHash&lt;AtomicString, unsigned&gt;::hash(std::make_pair(m_locale, result));

Wow, I completely messed this up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115506</commentid>
    <comment_count>10</comment_count>
      <attachid>258409</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 15:54:22 -0700</bug_when>
    <thetext>Created attachment 258409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115507</commentid>
    <comment_count>11</comment_count>
      <attachid>258410</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 15:57:31 -0700</bug_when>
    <thetext>Created attachment 258410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115511</commentid>
    <comment_count>12</comment_count>
      <attachid>258412</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 16:02:50 -0700</bug_when>
    <thetext>Created attachment 258412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115539</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-06 16:32:25 -0700</bug_when>
    <thetext>Committed r188088: &lt;http://trac.webkit.org/changeset/188088&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116049</commentid>
    <comment_count>14</comment_count>
      <attachid>258412</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-08 14:49:57 -0700</bug_when>
    <thetext>Comment on attachment 258412
Patch

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

&gt; Source/WebCore/platform/graphics/FontFeatureSettings.cpp:75
&gt; +    unsigned result = 0;
&gt; +    for (size_t i = 0; i &lt; size(); ++i)
&gt; +        result = WTF::pairIntHash(result, at(i).hash());
&gt; +    return result;

Is this really a good way to hash a vector? I think there’s a better approach where we accumulate with a single hash rather than hashing the old hash with a new hash value every time. Likely more efficient as well. There must be some good example elsewhere where we do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116050</commentid>
    <comment_count>15</comment_count>
      <attachid>258412</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-08-08 14:50:51 -0700</bug_when>
    <thetext>Comment on attachment 258412
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/FontFeatureSettings.cpp:75
&gt;&gt; +    return result;
&gt; 
&gt; Is this really a good way to hash a vector? I think there’s a better approach where we accumulate with a single hash rather than hashing the old hash with a new hash value every time. Likely more efficient as well. There must be some good example elsewhere where we do this.

Hmm, I see you discussing this with Sam earlier, but I am not really sure about where you ended up here. I’d like to understand so I can do it right in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116471</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-10 21:01:53 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 258412 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258412&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/FontFeatureSettings.cpp:75
&gt; &gt;&gt; +    return result;
&gt; &gt; 
&gt; &gt; Is this really a good way to hash a vector? I think there’s a better approach where we accumulate with a single hash rather than hashing the old hash with a new hash value every time. Likely more efficient as well. There must be some good example elsewhere where we do this.
&gt; 
&gt; Hmm, I see you discussing this with Sam earlier, but I am not really sure
&gt; about where you ended up here. I’d like to understand so I can do it right
&gt; in the future.

It looks like StringHasher has an interface where you can push data into it willy-nilly. I&apos;ll use that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116478</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-10 21:27:26 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Comment on attachment 258412 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=258412&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/FontFeatureSettings.cpp:75
&gt; &gt; &gt;&gt; +    return result;
&gt; &gt; &gt; 
&gt; &gt; &gt; Is this really a good way to hash a vector? I think there’s a better approach where we accumulate with a single hash rather than hashing the old hash with a new hash value every time. Likely more efficient as well. There must be some good example elsewhere where we do this.
&gt; &gt; 
&gt; &gt; Hmm, I see you discussing this with Sam earlier, but I am not really sure
&gt; &gt; about where you ended up here. I’d like to understand so I can do it right
&gt; &gt; in the future.
&gt; 
&gt; It looks like StringHasher has an interface where you can push data into it
&gt; willy-nilly. I&apos;ll use that.

https://bugs.webkit.org/show_bug.cgi?id=147866</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258407</attachid>
            <date>2015-08-06 15:26:01 -0700</date>
            <delta_ts>2015-08-06 15:54:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147751-20150806152552.patch</filename>
            <type>text/plain</type>
            <size>9124</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWExZGM0NTExMTIwNTg5
NDI3MmFhMjA1OWE0YTY4MDBhZDI2MjAyMi4uMTQzM2EwZjRhZmRiNzU1OWNmMDU5NjY0YWQxYzhj
YzQxNWU1MzQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACisyMDE1LTA4LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBGb250
RGVzY3JpcHRpb25LZXkgc2Vuc2l0aXZlIHRvIEZvbnRGZWF0dXJlU2V0dGluZ3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzc1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1c3QgbGlrZSBob3cgRm9u
dERlc2NyaXB0aW9uIGhhc2hlcyBzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIGxvY2FsZSwgdGhleSBz
aG91bGQKKyAgICAgICAgYWxzbyBiZSBzZW5zaXRpdmUgdG8gZm9udCBmZWF0dXJlcy4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgb3BlcmF0b3I9PSBmb3IgRm9udERlc2NyaXB0aW9u
S2V5LCB3aGljaCB3YXMgcHJldmlvdXNseQorICAgICAgICBjb21wYXJpbmcgaGFzaGVzIGZvciBl
cXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEuIENvbXBhcmluZyBoYXNoZXMK
KyAgICAgICAgZm9yIGVxdWFsaXR5IGlzIHVzZWxlc3MgaW5zaWRlIGhhc2htYXBzLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXk6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXk6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtl
eTo6aGFzaFRhYmxlRGVsZXRlZFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5
OjpGb250RGVzY3JpcHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9u
S2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eTo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJl
U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmU6Omhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVTZXR0aW5nczo6aGFzaCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5oOgorCiAyMDE1LTA4LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvbW1l
bnQgdG8gQ1NTUGFyc2VyU3RyaW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDc3MjQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggNjUyN2JjZTFiZTk1M2I0MWI0MWZhZDAxZGRmY2IxZjk2
ZGJjN2E1ZS4uYWZhOGU0YzZmN2QwMTQyNmFkYzkzNmNiMTUzM2ZhYWVkNjk0NmNlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0xMDUs
OCArMTA1LDExIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2ZhbWlseShmYW1pbHkpCiAgICAgeyB9
CiAKLSAgICBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkgOiBtX2ZvbnREZXNjcmlwdGlvbktleShoYXNoVGFibGVEZWxldGVkU2l6ZSgpKSB7IH0KLSAg
ICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVz
Y3JpcHRpb25LZXkuc2l6ZSA9PSBoYXNoVGFibGVEZWxldGVkU2l6ZSgpOyB9CisgICAgZXhwbGlj
aXQgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUgdCkK
KyAgICAgICAgOiBtX2ZvbnREZXNjcmlwdGlvbktleSh0KQorICAgIHsgfQorCisgICAgYm9vbCBp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9u
S2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTEx
NSw5ICsxMTgsNiBAQCBwdWJsaWM6CiAKICAgICBGb250RGVzY3JpcHRpb25LZXkgbV9mb250RGVz
Y3JpcHRpb25LZXk7CiAgICAgQXRvbWljU3RyaW5nIG1fZmFtaWx5OwotCi1wcml2YXRlOgotICAg
IHN0YXRpYyB1bnNpZ25lZCBoYXNoVGFibGVEZWxldGVkU2l6ZSgpIHsgcmV0dXJuIDB4RkZGRkZG
RkZVOyB9CiB9OwogCiBzdHJ1Y3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5SGFzaCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IGVhMmEzM2M3
M2I5NjgxNDcwYzlkNTYwYmJkZDI1MmFiM2JjODY5MmMuLmVhNTc4MDRiMmFlZTk5ZGNlZGJlOGRh
ZmFjNTNjYTM4ZGIyN2E3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTY3LDE4ICs2OCw1MCBAQCB0eXBl
ZGVmIElNTGFuZ0ZvbnRMaW5rIElNTGFuZ0ZvbnRMaW5rVHlwZTsKIAogLy8gVGhpcyBrZXkgY29u
dGFpbnMgdGhlIEZvbnREZXNjcmlwdGlvbiBmaWVsZHMgb3RoZXIgdGhhbiBmYW1pbHkgdGhhdCBt
YXR0ZXIgd2hlbiBmZXRjaGluZyBGb250RGF0YXMgKHBsYXRmb3JtIGZvbnRzKS4KIHN0cnVjdCBG
b250RGVzY3JpcHRpb25LZXkgewotICAgIGV4cGxpY2l0IEZvbnREZXNjcmlwdGlvbktleSh1bnNp
Z25lZCBzaXplID0gMCkKLSAgICAgICAgOiBzaXplKHNpemUpCi0gICAgICAgICwgd2VpZ2h0KDAp
Ci0gICAgICAgICwgZmxhZ3MoMCkKLSAgICAgICAgLCBsb2NhbGVIYXNoKDApCisgICAgRm9udERl
c2NyaXB0aW9uS2V5KCkKKyAgICAgICAgOiBtX3NpemUoMCkKKyAgICAgICAgLCBtX3dlaWdodCgw
KQorICAgICAgICAsIG1fZmxhZ3MoMCkKKyAgICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncygwKQog
ICAgIHsgfQorCiAgICAgRm9udERlc2NyaXB0aW9uS2V5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24pCi0gICAgICAgIDogc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6
ZSgpKQotICAgICAgICAsIHdlaWdodChkZXNjcmlwdGlvbi53ZWlnaHQoKSkKLSAgICAgICAgLCBm
bGFncyhtYWtlRmxhZ0tleShkZXNjcmlwdGlvbikpCi0gICAgICAgICwgbG9jYWxlSGFzaChkZXNj
cmlwdGlvbi5sb2NhbGUoKS5pc051bGwoKSA/IDAgOiBkZXNjcmlwdGlvbi5sb2NhbGUoKS5pbXBs
KCktPmV4aXN0aW5nSGFzaCgpKQorICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRl
ZFBpeGVsU2l6ZSgpKQorICAgICAgICAsIG1fd2VpZ2h0KGRlc2NyaXB0aW9uLndlaWdodCgpKQor
ICAgICAgICAsIG1fZmxhZ3MobWFrZUZsYWdLZXkoZGVzY3JpcHRpb24pKQorICAgICAgICAsIG1f
bG9jYWxlKGRlc2NyaXB0aW9uLmxvY2FsZSgpKQorICAgICAgICAsIG1fZmVhdHVyZVNldHRpbmdz
KGRlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpKQorICAgIHsgfQorCisgICAgZXhwbGljaXQg
Rm9udERlc2NyaXB0aW9uS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAg
ICAgOiBtX3NpemUoY0hhc2hUYWJsZURlbGV0ZWRTaXplKQogICAgIHsgfQorCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9zaXplID09IG90aGVyLm1fc2l6ZSAmJiBtX3dlaWdodCA9PSBvdGhl
ci5tX3dlaWdodCAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MgJiYgbV9sb2NhbGUgPT0gb3Ro
ZXIubV9sb2NhbGUKKyAgICAgICAgICAgICYmICgobV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIu
bV9mZWF0dXJlU2V0dGluZ3MpIHx8IChtX2ZlYXR1cmVTZXR0aW5ncyAmJiBvdGhlci5tX2ZlYXR1
cmVTZXR0aW5ncyAmJiBtX2ZlYXR1cmVTZXR0aW5ncy5nZXQoKSA9PSBvdGhlci5tX2ZlYXR1cmVT
ZXR0aW5ncy5nZXQoKSkpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250
RGVzY3JpcHRpb25LZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3NpemUgPT0gY0hhc2hUYWJsZURlbGV0ZWRTaXplOyB9CisKKyAg
ICBpbmxpbmUgdW5zaWduZWQgY29tcHV0ZUhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgcmVzdWx0ID0gV1RGOjppbnRIYXNoKG1fc2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IFdU
Rjo6cGFpckludEhhc2gocmVzdWx0LCBXVEY6OmludEhhc2gobV93ZWlnaHQpKTsKKyAgICAgICAg
cmVzdWx0ID0gV1RGOjpwYWlySW50SGFzaChyZXN1bHQsIFdURjo6aW50SGFzaChtX2ZsYWdzKSk7
CisgICAgICAgIHJlc3VsdCA9IFdURjo6cGFpckludEhhc2gocmVzdWx0LCBXVEY6OmludEhhc2go
bV9mbGFncykpOworICAgICAgICByZXN1bHQgPSBXVEY6OlBhaXJIYXNoPEF0b21pY1N0cmluZywg
dW5zaWduZWQ+OjpoYXNoKHN0ZDo6bWFrZV9wYWlyKG1fbG9jYWxlLCByZXN1bHQpKTsKKyAgICAg
ICAgcmVzdWx0ID0gV1RGOjpwYWlySW50SGFzaChyZXN1bHQsIG1fZmVhdHVyZVNldHRpbmdzID8g
bV9mZWF0dXJlU2V0dGluZ3MtPmhhc2goKSA6IDApOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworcHJpdmF0ZToKICAgICBzdGF0aWMgdW5zaWduZWQgbWFrZUZsYWdLZXkoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoVVNDUklQVF9DT0RFX0xJTUlUIDwgMHgxMDAwLCAiU2NyaXB0IGNvZGUgbXVzdCBmaXQgaW4g
YW4gdW5zaWduZWQgYWxvbmcgd2l0aCB0aGUgb3RoZXIgZmxhZ3MiKTsKQEAgLTkxLDIyICsxMjQs
MTQgQEAgc3RydWN0IEZvbnREZXNjcmlwdGlvbktleSB7CiAgICAgICAgICAgICB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5pdGFsaWMoKSkgPDwgMQogICAgICAgICAgICAgfCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgpKTsKICAgICB9
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc2l6ZSA9PSBvdGhlci5zaXplICYmIHdlaWdodCA9
PSBvdGhlci53ZWlnaHQgJiYgZmxhZ3MgPT0gb3RoZXIuZmxhZ3MgJiYgbG9jYWxlSGFzaCA9PSBv
dGhlci5sb2NhbGVIYXNoOwotICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udERl
c2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKLSAgICB9Ci0gICAgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVIYXNoKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9m
KEZvbnREZXNjcmlwdGlvbktleSk+KHRoaXMpOwotICAgIH0KLSAgICB1bnNpZ25lZCBzaXplOwot
ICAgIHVuc2lnbmVkIHdlaWdodDsKLSAgICB1bnNpZ25lZCBmbGFnczsKLSAgICB1bnNpZ25lZCBs
b2NhbGVIYXNoOyAvLyBGSVhNRTogSGVyZSwgYW5kIGV2ZXJ5IGNsaWVudCBvZiB1cywgbWFrZXMg
aGFzaGVzIG9mIGhhc2hlcy4KKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjSGFzaFRhYmxl
RGVsZXRlZFNpemUgPSAweEZGRkZGRkZGVTsKKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICB1
bnNpZ25lZCBtX3dlaWdodDsKKyAgICB1bnNpZ25lZCBtX2ZsYWdzOworICAgIEF0b21pY1N0cmlu
ZyBtX2xvY2FsZTsKKyAgICBSZWZQdHI8Rm9udEZlYXR1cmVTZXR0aW5ncz4gbV9mZWF0dXJlU2V0
dGluZ3M7CiB9OwogCiBjbGFzcyBGb250Q2FjaGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmNwcAppbmRleCA0YWE0
NWQwMGVkYzk1MjU3ODEyMThkNWFhM2NhMjI2ZDU3M2VlNWMyLi5hYmRkODUyMThlM2JlZjdjMjQx
NWVmZjJkYWQxMTE1MWQ3NDBhNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmNwcApAQCAtMjYsNiArMjYsOCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRGZWF0dXJlU2V0dGluZ3MuaCIK
IAorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBGb250RmVhdHVyZTo6Rm9udEZlYXR1cmUoY29uc3QgQXRvbWljU3RyaW5nJiB0
YWcsIGludCB2YWx1ZSkKQEAgLTQ0LDYgKzQ2LDExIEBAIGJvb2wgRm9udEZlYXR1cmU6Om9wZXJh
dG9yPChjb25zdCBGb250RmVhdHVyZSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIChtX3RhZy5p
bXBsKCkgPCBvdGhlci5tX3RhZy5pbXBsKCkpIHx8IChtX3RhZy5pbXBsKCkgPT0gb3RoZXIubV90
YWcuaW1wbCgpICYmIG1fdmFsdWUgPCBvdGhlci5tX3ZhbHVlKTsKIH0KIAordW5zaWduZWQgRm9u
dEZlYXR1cmU6Omhhc2goKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OlBhaXJIYXNoPEF0b21p
Y1N0cmluZywgdW5zaWduZWQ+OjpoYXNoKHN0ZDo6bWFrZV9wYWlyKG1fdGFnLCBtX3ZhbHVlKSk7
Cit9CisKIFJlZjxGb250RmVhdHVyZVNldHRpbmdzPiBGb250RmVhdHVyZVNldHRpbmdzOjpjcmVh
dGUoKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRGZWF0dXJlU2V0dGluZ3MpOwpA
QCAtNjAsNCArNjcsMTIgQEAgdm9pZCBGb250RmVhdHVyZVNldHRpbmdzOjppbnNlcnQoRm9udEZl
YXR1cmUmJiBmZWF0dXJlKQogICAgIG1fbGlzdC5pbnNlcnQoaSwgV1RGOjptb3ZlKGZlYXR1cmUp
KTsKIH0KIAordW5zaWduZWQgRm9udEZlYXR1cmVTZXR0aW5nczo6aGFzaCgpIGNvbnN0Cit7Cisg
ICAgdW5zaWduZWQgcmVzdWx0ID0gMHg1RTc4NzYyM1U7IC8vIENob3NlbiByYW5kb21seQorICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpCisgICAgICAgIHJlc3VsdCA9IFdU
Rjo6cGFpckludEhhc2gocmVzdWx0LCBhdChpKS5oYXNoKCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRGZWF0dXJlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRGZWF0dXJlU2V0dGluZ3MuaAppbmRleCAyN2ZkZjk4OGNkNGUwYjUxYWFjMGQ5NWY5ZTRlNWI4
NmFlMDk5YWFhLi41NDljZTQxZWY1MzdjZDVkZTEwMWU1YmNkMWU2ZTFjY2I4NDFjNDIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRp
bmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVT
ZXR0aW5ncy5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHRhZygpIGNvbnN0IHsgcmV0dXJuIG1fdGFnOyB9CiAgICAgaW50IHZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZTsgfQogCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIEF0b21pY1N0cmluZyBtX3RhZzsKICAgICBjb25zdCBpbnQgbV92YWx1ZSB7IDAg
fTsKQEAgLTU5LDYgKzYxLDggQEAgcHVibGljOgogICAgIGNvbnN0IEZvbnRGZWF0dXJlJiBvcGVy
YXRvcltdKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9saXN0W2luZGV4XTsgfQogICAgIGNv
bnN0IEZvbnRGZWF0dXJlJiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdC5h
dChpbmRleCk7IH0KIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBGb250RmVhdHVyZVNldHRpbmdzKCkgeyB9CiAgICAgVmVjdG9yPEZvbnRGZWF0dXJlPiBtX2xp
c3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258408</attachid>
            <date>2015-08-06 15:33:10 -0700</date>
            <delta_ts>2015-08-06 15:54:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147751-20150806153301.patch</filename>
            <type>text/plain</type>
            <size>9122</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJlM2QyMWVmZTA0MWNl
MzU0N2Y2NGZlNjNkMGRkNWU4ZDBkNWMzYS4uMDg0NDExYTlhODFhNjVkOTZjYmFkZTM1MTFiMDg3
OWMwMGIzNTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA4LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBGb250
RGVzY3JpcHRpb25LZXkgc2Vuc2l0aXZlIHRvIEZvbnRGZWF0dXJlU2V0dGluZ3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzc1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1c3QgbGlrZSBob3cgRm9u
dERlc2NyaXB0aW9uIGhhc2hlcyBzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIGxvY2FsZSwgdGhleSBz
aG91bGQKKyAgICAgICAgYWxzbyBiZSBzZW5zaXRpdmUgdG8gZm9udCBmZWF0dXJlcy4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgb3BlcmF0b3I9PSBmb3IgRm9udERlc2NyaXB0aW9u
S2V5LCB3aGljaCB3YXMgcHJldmlvdXNseQorICAgICAgICBjb21wYXJpbmcgaGFzaGVzIGZvciBl
cXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEuIENvbXBhcmluZyBoYXNoZXMK
KyAgICAgICAgZm9yIGVxdWFsaXR5IGlzIHVzZWxlc3MgaW5zaWRlIGhhc2htYXBzLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXk6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXk6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtl
eTo6aGFzaFRhYmxlRGVsZXRlZFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5
OjpGb250RGVzY3JpcHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9u
S2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eTo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJl
U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmU6Omhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVTZXR0aW5nczo6aGFzaCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5oOgorCiAyMDE1LTA4LTA2ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIERvIG5vdCBlbmZv
cmNlICJjb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50IiBzYW5kYm94IHJlc3RyaWN0aW9u
cyBvbiBhIE1lZGlhRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwCmluZGV4IDY1MjdiY2UxYmU5NTNiNDFiNDFmYWQwMWRkZmNiMWY5NmRi
YzdhNWUuLmFmYThlNGM2ZjdkMDE0MjZhZGM5MzZjYjE1MzNmYWFlZDY5NDZjZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMTA1LDgg
KzEwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9mYW1pbHkoZmFtaWx5KQogICAgIHsgfQog
Ci0gICAgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
IDogbV9mb250RGVzY3JpcHRpb25LZXkoaGFzaFRhYmxlRGVsZXRlZFNpemUoKSkgeyB9Ci0gICAg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2Ny
aXB0aW9uS2V5LnNpemUgPT0gaGFzaFRhYmxlRGVsZXRlZFNpemUoKTsgfQorICAgIGV4cGxpY2l0
IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleShIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHQpCisg
ICAgICAgIDogbV9mb250RGVzY3JpcHRpb25LZXkodCkKKyAgICB7IH0KKworICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbktl
eS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC0xMTUs
OSArMTE4LDYgQEAgcHVibGljOgogCiAgICAgRm9udERlc2NyaXB0aW9uS2V5IG1fZm9udERlc2Ny
aXB0aW9uS2V5OwogICAgIEF0b21pY1N0cmluZyBtX2ZhbWlseTsKLQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaFRhYmxlRGVsZXRlZFNpemUoKSB7IHJldHVybiAweEZGRkZGRkZG
VTsgfQogfTsKIAogc3RydWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleUhhc2ggewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCBlYTJhMzNjNzNi
OTY4MTQ3MGM5ZDU2MGJiZGQyNTJhYjNiYzg2OTJjLi5lYTU3ODA0YjJhZWU5OWRjZWRiZThkYWZh
YzUzY2EzOGRiMjdhNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02NywxOCArNjgsNTAgQEAgdHlwZWRl
ZiBJTUxhbmdGb250TGluayBJTUxhbmdGb250TGlua1R5cGU7CiAKIC8vIFRoaXMga2V5IGNvbnRh
aW5zIHRoZSBGb250RGVzY3JpcHRpb24gZmllbGRzIG90aGVyIHRoYW4gZmFtaWx5IHRoYXQgbWF0
dGVyIHdoZW4gZmV0Y2hpbmcgRm9udERhdGFzIChwbGF0Zm9ybSBmb250cykuCiBzdHJ1Y3QgRm9u
dERlc2NyaXB0aW9uS2V5IHsKLSAgICBleHBsaWNpdCBGb250RGVzY3JpcHRpb25LZXkodW5zaWdu
ZWQgc2l6ZSA9IDApCi0gICAgICAgIDogc2l6ZShzaXplKQotICAgICAgICAsIHdlaWdodCgwKQot
ICAgICAgICAsIGZsYWdzKDApCi0gICAgICAgICwgbG9jYWxlSGFzaCgwKQorICAgIEZvbnREZXNj
cmlwdGlvbktleSgpCisgICAgICAgIDogbV9zaXplKDApCisgICAgICAgICwgbV93ZWlnaHQoMCkK
KyAgICAgICAgLCBtX2ZsYWdzKDApCisgICAgICAgICwgbV9mZWF0dXJlU2V0dGluZ3MoMCkKICAg
ICB7IH0KKwogICAgIEZvbnREZXNjcmlwdGlvbktleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uKQotICAgICAgICA6IHNpemUoZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUo
KSkKLSAgICAgICAgLCB3ZWlnaHQoZGVzY3JpcHRpb24ud2VpZ2h0KCkpCi0gICAgICAgICwgZmxh
Z3MobWFrZUZsYWdLZXkoZGVzY3JpcHRpb24pKQotICAgICAgICAsIGxvY2FsZUhhc2goZGVzY3Jp
cHRpb24ubG9jYWxlKCkuaXNOdWxsKCkgPyAwIDogZGVzY3JpcHRpb24ubG9jYWxlKCkuaW1wbCgp
LT5leGlzdGluZ0hhc2goKSkKKyAgICAgICAgOiBtX3NpemUoZGVzY3JpcHRpb24uY29tcHV0ZWRQ
aXhlbFNpemUoKSkKKyAgICAgICAgLCBtX3dlaWdodChkZXNjcmlwdGlvbi53ZWlnaHQoKSkKKyAg
ICAgICAgLCBtX2ZsYWdzKG1ha2VGbGFnS2V5KGRlc2NyaXB0aW9uKSkKKyAgICAgICAgLCBtX2xv
Y2FsZShkZXNjcmlwdGlvbi5sb2NhbGUoKSkKKyAgICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncyhk
ZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKSkKKyAgICB7IH0KKworICAgIGV4cGxpY2l0IEZv
bnREZXNjcmlwdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAg
IDogbV9zaXplKGNIYXNoVGFibGVEZWxldGVkU2l6ZSkKICAgICB7IH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fc2l6ZSA9PSBvdGhlci5tX3NpemUgJiYgbV93ZWlnaHQgPT0gb3RoZXIu
bV93ZWlnaHQgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzICYmIG1fbG9jYWxlID09IG90aGVy
Lm1fbG9jYWxlCisgICAgICAgICAgICAmJiAoKG1fZmVhdHVyZVNldHRpbmdzID09IG90aGVyLm1f
ZmVhdHVyZVNldHRpbmdzKSB8fCAobV9mZWF0dXJlU2V0dGluZ3MgJiYgb3RoZXIubV9mZWF0dXJl
U2V0dGluZ3MgJiYgbV9mZWF0dXJlU2V0dGluZ3MuZ2V0KCkgPT0gb3RoZXIubV9mZWF0dXJlU2V0
dGluZ3MuZ2V0KCkpKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udERl
c2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplID09IGNIYXNoVGFibGVEZWxldGVkU2l6ZTsgfQorCisgICAg
aW5saW5lIHVuc2lnbmVkIGNvbXB1dGVIYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2ln
bmVkIHJlc3VsdCA9IFdURjo6aW50SGFzaChtX3NpemUpOworICAgICAgICByZXN1bHQgPSBXVEY6
OnBhaXJJbnRIYXNoKHJlc3VsdCwgV1RGOjppbnRIYXNoKG1fd2VpZ2h0KSk7CisgICAgICAgIHJl
c3VsdCA9IFdURjo6cGFpckludEhhc2gocmVzdWx0LCBXVEY6OmludEhhc2gobV9mbGFncykpOwor
ICAgICAgICByZXN1bHQgPSBXVEY6OnBhaXJJbnRIYXNoKHJlc3VsdCwgV1RGOjppbnRIYXNoKG1f
ZmxhZ3MpKTsKKyAgICAgICAgcmVzdWx0ID0gV1RGOjpQYWlySGFzaDxBdG9taWNTdHJpbmcsIHVu
c2lnbmVkPjo6aGFzaChzdGQ6Om1ha2VfcGFpcihtX2xvY2FsZSwgcmVzdWx0KSk7CisgICAgICAg
IHJlc3VsdCA9IFdURjo6cGFpckludEhhc2gocmVzdWx0LCBtX2ZlYXR1cmVTZXR0aW5ncyA/IG1f
ZmVhdHVyZVNldHRpbmdzLT5oYXNoKCkgOiAwKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKK3ByaXZhdGU6CiAgICAgc3RhdGljIHVuc2lnbmVkIG1ha2VGbGFnS2V5KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0
KFVTQ1JJUFRfQ09ERV9MSU1JVCA8IDB4MTAwMCwgIlNjcmlwdCBjb2RlIG11c3QgZml0IGluIGFu
IHVuc2lnbmVkIGFsb25nIHdpdGggdGhlIG90aGVyIGZsYWdzIik7CkBAIC05MSwyMiArMTI0LDE0
IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgICAgICAgICAgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGVzY3JpcHRpb24uaXRhbGljKCkpIDw8IDEKICAgICAgICAgICAgIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgfQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIHNpemUgPT0gb3RoZXIuc2l6ZSAmJiB3ZWlnaHQgPT0g
b3RoZXIud2VpZ2h0ICYmIGZsYWdzID09IG90aGVyLmZsYWdzICYmIGxvY2FsZUhhc2ggPT0gb3Ro
ZXIubG9jYWxlSGFzaDsKLSAgICB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnREZXNj
cmlwdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci0gICAgfQotICAgIGlubGluZSB1bnNpZ25lZCBjb21wdXRlSGFzaCgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihG
b250RGVzY3JpcHRpb25LZXkpPih0aGlzKTsKLSAgICB9Ci0gICAgdW5zaWduZWQgc2l6ZTsKLSAg
ICB1bnNpZ25lZCB3ZWlnaHQ7Ci0gICAgdW5zaWduZWQgZmxhZ3M7Ci0gICAgdW5zaWduZWQgbG9j
YWxlSGFzaDsgLy8gRklYTUU6IEhlcmUsIGFuZCBldmVyeSBjbGllbnQgb2YgdXMsIG1ha2VzIGhh
c2hlcyBvZiBoYXNoZXMuCisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY0hhc2hUYWJsZURl
bGV0ZWRTaXplID0gMHhGRkZGRkZGRlU7CisKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgdW5z
aWduZWQgbV93ZWlnaHQ7CisgICAgdW5zaWduZWQgbV9mbGFnczsKKyAgICBBdG9taWNTdHJpbmcg
bV9sb2NhbGU7CisgICAgUmVmUHRyPEZvbnRGZWF0dXJlU2V0dGluZ3M+IG1fZmVhdHVyZVNldHRp
bmdzOwogfTsKIAogY2xhc3MgRm9udENhY2hlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAKaW5kZXggNGFhNDVk
MDBlZGM5NTI1NzgxMjE4ZDVhYTNjYTIyNmQ1NzNlZTVjMi4uYWJkZDg1MjE4ZTNiZWY3YzI0MTVl
ZmYyZGFkMTExNTFkNzQwYTUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAKQEAgLTI2LDYgKzI2LDggQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250RmVhdHVyZVNldHRpbmdzLmgiCiAK
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogRm9udEZlYXR1cmU6OkZvbnRGZWF0dXJlKGNvbnN0IEF0b21pY1N0cmluZyYgdGFn
LCBpbnQgdmFsdWUpCkBAIC00NCw2ICs0NiwxMSBAQCBib29sIEZvbnRGZWF0dXJlOjpvcGVyYXRv
cjwoY29uc3QgRm9udEZlYXR1cmUmIG90aGVyKSBjb25zdAogICAgIHJldHVybiAobV90YWcuaW1w
bCgpIDwgb3RoZXIubV90YWcuaW1wbCgpKSB8fCAobV90YWcuaW1wbCgpID09IG90aGVyLm1fdGFn
LmltcGwoKSAmJiBtX3ZhbHVlIDwgb3RoZXIubV92YWx1ZSk7CiB9CiAKK3Vuc2lnbmVkIEZvbnRG
ZWF0dXJlOjpoYXNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpQYWlySGFzaDxBdG9taWNT
dHJpbmcsIHVuc2lnbmVkPjo6aGFzaChzdGQ6Om1ha2VfcGFpcihtX3RhZywgbV92YWx1ZSkpOwor
fQorCiBSZWY8Rm9udEZlYXR1cmVTZXR0aW5ncz4gRm9udEZlYXR1cmVTZXR0aW5nczo6Y3JlYXRl
KCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250RmVhdHVyZVNldHRpbmdzKTsKQEAg
LTYwLDQgKzY3LDEyIEBAIHZvaWQgRm9udEZlYXR1cmVTZXR0aW5nczo6aW5zZXJ0KEZvbnRGZWF0
dXJlJiYgZmVhdHVyZSkKICAgICBtX2xpc3QuaW5zZXJ0KGksIFdURjo6bW92ZShmZWF0dXJlKSk7
CiB9CiAKK3Vuc2lnbmVkIEZvbnRGZWF0dXJlU2V0dGluZ3M6Omhhc2goKSBjb25zdAoreworICAg
IHVuc2lnbmVkIHJlc3VsdCA9IDB4NUU3ODc2MjNVOyAvLyBDaG9zZW4gcmFuZG9tbHkKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQgPSBXVEY6
OnBhaXJJbnRIYXNoKHJlc3VsdCwgYXQoaSkuaGFzaCgpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RmVhdHVyZVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RmVhdHVyZVNldHRpbmdzLmgKaW5kZXggMjdmZGY5ODhjZDRlMGI1MWFhYzBkOTVmOWU0ZTViODZh
ZTA5OWFhYS4uNTQ5Y2U0MWVmNTM3Y2Q1ZGUxMDFlNWJjZDFlNmUxY2NiODQxYzQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5n
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0
dGluZ3MuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiB0YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsgfQogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKKwogcHJpdmF0
ZToKICAgICBBdG9taWNTdHJpbmcgbV90YWc7CiAgICAgY29uc3QgaW50IG1fdmFsdWUgeyAwIH07
CkBAIC01OSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBGb250RmVhdHVyZSYgb3BlcmF0
b3JbXShpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFtpbmRleF07IH0KICAgICBjb25z
dCBGb250RmVhdHVyZSYgYXQoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2xpc3QuYXQo
aW5kZXgpOyB9CiAKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
Rm9udEZlYXR1cmVTZXR0aW5ncygpIHsgfQogICAgIFZlY3RvcjxGb250RmVhdHVyZT4gbV9saXN0
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258409</attachid>
            <date>2015-08-06 15:54:22 -0700</date>
            <delta_ts>2015-08-06 15:57:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147751-20150806155412.patch</filename>
            <type>text/plain</type>
            <size>8750</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJlM2QyMWVmZTA0MWNl
MzU0N2Y2NGZlNjNkMGRkNWU4ZDBkNWMzYS4uMDg0NDExYTlhODFhNjVkOTZjYmFkZTM1MTFiMDg3
OWMwMGIzNTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA4LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBGb250
RGVzY3JpcHRpb25LZXkgc2Vuc2l0aXZlIHRvIEZvbnRGZWF0dXJlU2V0dGluZ3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzc1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1c3QgbGlrZSBob3cgRm9u
dERlc2NyaXB0aW9uIGhhc2hlcyBzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIGxvY2FsZSwgdGhleSBz
aG91bGQKKyAgICAgICAgYWxzbyBiZSBzZW5zaXRpdmUgdG8gZm9udCBmZWF0dXJlcy4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgb3BlcmF0b3I9PSBmb3IgRm9udERlc2NyaXB0aW9u
S2V5LCB3aGljaCB3YXMgcHJldmlvdXNseQorICAgICAgICBjb21wYXJpbmcgaGFzaGVzIGZvciBl
cXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEuIENvbXBhcmluZyBoYXNoZXMK
KyAgICAgICAgZm9yIGVxdWFsaXR5IGlzIHVzZWxlc3MgaW5zaWRlIGhhc2htYXBzLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXk6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXk6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtl
eTo6aGFzaFRhYmxlRGVsZXRlZFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5
OjpGb250RGVzY3JpcHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9u
S2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eTo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJl
U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmU6Omhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVTZXR0aW5nczo6aGFzaCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5oOgorCiAyMDE1LTA4LTA2ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIERvIG5vdCBlbmZv
cmNlICJjb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50IiBzYW5kYm94IHJlc3RyaWN0aW9u
cyBvbiBhIE1lZGlhRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwCmluZGV4IDY1MjdiY2UxYmU5NTNiNDFiNDFmYWQwMWRkZmNiMWY5NmRi
YzdhNWUuLmFmYThlNGM2ZjdkMDE0MjZhZGM5MzZjYjE1MzNmYWFlZDY5NDZjZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMTA1LDgg
KzEwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9mYW1pbHkoZmFtaWx5KQogICAgIHsgfQog
Ci0gICAgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
IDogbV9mb250RGVzY3JpcHRpb25LZXkoaGFzaFRhYmxlRGVsZXRlZFNpemUoKSkgeyB9Ci0gICAg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2Ny
aXB0aW9uS2V5LnNpemUgPT0gaGFzaFRhYmxlRGVsZXRlZFNpemUoKTsgfQorICAgIGV4cGxpY2l0
IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleShIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHQpCisg
ICAgICAgIDogbV9mb250RGVzY3JpcHRpb25LZXkodCkKKyAgICB7IH0KKworICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbktl
eS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC0xMTUs
OSArMTE4LDYgQEAgcHVibGljOgogCiAgICAgRm9udERlc2NyaXB0aW9uS2V5IG1fZm9udERlc2Ny
aXB0aW9uS2V5OwogICAgIEF0b21pY1N0cmluZyBtX2ZhbWlseTsKLQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaFRhYmxlRGVsZXRlZFNpemUoKSB7IHJldHVybiAweEZGRkZGRkZG
VTsgfQogfTsKIAogc3RydWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleUhhc2ggewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCBlYTJhMzNjNzNi
OTY4MTQ3MGM5ZDU2MGJiZGQyNTJhYjNiYzg2OTJjLi5lMThiOTUzNmVhNjNhMmE4NGEwODc5NzM3
N2E1MjI0MjJhMGEyZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02NywxOCArNjgsMzggQEAgdHlwZWRl
ZiBJTUxhbmdGb250TGluayBJTUxhbmdGb250TGlua1R5cGU7CiAKIC8vIFRoaXMga2V5IGNvbnRh
aW5zIHRoZSBGb250RGVzY3JpcHRpb24gZmllbGRzIG90aGVyIHRoYW4gZmFtaWx5IHRoYXQgbWF0
dGVyIHdoZW4gZmV0Y2hpbmcgRm9udERhdGFzIChwbGF0Zm9ybSBmb250cykuCiBzdHJ1Y3QgRm9u
dERlc2NyaXB0aW9uS2V5IHsKLSAgICBleHBsaWNpdCBGb250RGVzY3JpcHRpb25LZXkodW5zaWdu
ZWQgc2l6ZSA9IDApCi0gICAgICAgIDogc2l6ZShzaXplKQotICAgICAgICAsIHdlaWdodCgwKQot
ICAgICAgICAsIGZsYWdzKDApCi0gICAgICAgICwgbG9jYWxlSGFzaCgwKQotICAgIHsgfQogICAg
IEZvbnREZXNjcmlwdGlvbktleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQot
ICAgICAgICA6IHNpemUoZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkKLSAgICAgICAg
LCB3ZWlnaHQoZGVzY3JpcHRpb24ud2VpZ2h0KCkpCi0gICAgICAgICwgZmxhZ3MobWFrZUZsYWdL
ZXkoZGVzY3JpcHRpb24pKQotICAgICAgICAsIGxvY2FsZUhhc2goZGVzY3JpcHRpb24ubG9jYWxl
KCkuaXNOdWxsKCkgPyAwIDogZGVzY3JpcHRpb24ubG9jYWxlKCkuaW1wbCgpLT5leGlzdGluZ0hh
c2goKSkKKyAgICAgICAgOiBtX3NpemUoZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkK
KyAgICAgICAgLCBtX3dlaWdodChkZXNjcmlwdGlvbi53ZWlnaHQoKSkKKyAgICAgICAgLCBtX2Zs
YWdzKG1ha2VGbGFnS2V5KGRlc2NyaXB0aW9uKSkKKyAgICAgICAgLCBtX2xvY2FsZShkZXNjcmlw
dGlvbi5sb2NhbGUoKSkKKyAgICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncyhkZXNjcmlwdGlvbi5m
ZWF0dXJlU2V0dGluZ3MoKSkKKyAgICB7IH0KKworICAgIGV4cGxpY2l0IEZvbnREZXNjcmlwdGlv
bktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9zaXplKGNI
YXNoVGFibGVEZWxldGVkU2l6ZSkKICAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2l6ZSA9PSBvdGhlci5tX3NpemUgJiYgbV93ZWlnaHQgPT0gb3RoZXIubV93ZWlnaHQgJiYg
bV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzICYmIG1fbG9jYWxlID09IG90aGVyLm1fbG9jYWxlCisg
ICAgICAgICAgICAmJiAoKG1fZmVhdHVyZVNldHRpbmdzID09IG90aGVyLm1fZmVhdHVyZVNldHRp
bmdzKSB8fCAobV9mZWF0dXJlU2V0dGluZ3MgJiYgb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MgJiYg
bV9mZWF0dXJlU2V0dGluZ3MuZ2V0KCkgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MuZ2V0KCkp
KTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udERlc2NyaXB0aW9uS2V5
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
KyAgICB9CisKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplID09IGNIYXNoVGFibGVEZWxldGVkU2l6ZTsgfQorCisgICAgaW5saW5lIHVuc2ln
bmVkIGNvbXB1dGVIYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHRvSGFzaFtd
ID0ge21fc2l6ZSwgbV93ZWlnaHQsIG1fZmxhZ3MsIG1fbG9jYWxlLmlzTnVsbCgpID8gMCA6IG1f
bG9jYWxlLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCksIG1fZmVhdHVyZVNldHRpbmdzID8gbV9mZWF0
dXJlU2V0dGluZ3MtPmhhc2goKSA6IDB9OworICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpo
YXNoTWVtb3J5KHRvSGFzaCwgc2l6ZW9mKHRvSGFzaCkpOworICAgIH0KKworcHJpdmF0ZToKICAg
ICBzdGF0aWMgdW5zaWduZWQgbWFrZUZsYWdLZXkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbikKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoVVNDUklQVF9DT0RFX0xJTUlU
IDwgMHgxMDAwLCAiU2NyaXB0IGNvZGUgbXVzdCBmaXQgaW4gYW4gdW5zaWduZWQgYWxvbmcgd2l0
aCB0aGUgb3RoZXIgZmxhZ3MiKTsKQEAgLTkxLDIyICsxMTIsMTQgQEAgc3RydWN0IEZvbnREZXNj
cmlwdGlvbktleSB7CiAgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlw
dGlvbi5pdGFsaWMoKSkgPDwgMQogICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVzY3JpcHRpb24ucmVuZGVyaW5nTW9kZSgpKTsKICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gc2l6ZSA9PSBvdGhlci5zaXplICYmIHdlaWdodCA9PSBvdGhlci53ZWlnaHQgJiYgZmxh
Z3MgPT0gb3RoZXIuZmxhZ3MgJiYgbG9jYWxlSGFzaCA9PSBvdGhlci5sb2NhbGVIYXNoOwotICAg
IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udERlc2NyaXB0aW9uS2V5JiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0g
ICAgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVIYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKEZvbnREZXNjcmlwdGlvbktleSk+
KHRoaXMpOwotICAgIH0KLSAgICB1bnNpZ25lZCBzaXplOwotICAgIHVuc2lnbmVkIHdlaWdodDsK
LSAgICB1bnNpZ25lZCBmbGFnczsKLSAgICB1bnNpZ25lZCBsb2NhbGVIYXNoOyAvLyBGSVhNRTog
SGVyZSwgYW5kIGV2ZXJ5IGNsaWVudCBvZiB1cywgbWFrZXMgaGFzaGVzIG9mIGhhc2hlcy4KKwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjSGFzaFRhYmxlRGVsZXRlZFNpemUgPSAweEZGRkZG
RkZGVTsKKworICAgIHVuc2lnbmVkIG1fc2l6ZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3dlaWdo
dCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2ZsYWdzIHsgMCB9OworICAgIEF0b21pY1N0cmluZyBt
X2xvY2FsZTsKKyAgICBSZWZQdHI8Rm9udEZlYXR1cmVTZXR0aW5ncz4gbV9mZWF0dXJlU2V0dGlu
Z3M7CiB9OwogCiBjbGFzcyBGb250Q2FjaGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmNwcAppbmRleCA0YWE0NWQw
MGVkYzk1MjU3ODEyMThkNWFhM2NhMjI2ZDU3M2VlNWMyLi45ZTE5NDlmYzQ0YWM0NzQ5Njk4NGRi
N2MwOGE3ZjI0ZjQ5MDhjMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmNwcApAQCAtMjYsNiArMjYsOCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRGZWF0dXJlU2V0dGluZ3MuaCIKIAor
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBGb250RmVhdHVyZTo6Rm9udEZlYXR1cmUoY29uc3QgQXRvbWljU3RyaW5nJiB0YWcs
IGludCB2YWx1ZSkKQEAgLTQ0LDYgKzQ2LDExIEBAIGJvb2wgRm9udEZlYXR1cmU6Om9wZXJhdG9y
PChjb25zdCBGb250RmVhdHVyZSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIChtX3RhZy5pbXBs
KCkgPCBvdGhlci5tX3RhZy5pbXBsKCkpIHx8IChtX3RhZy5pbXBsKCkgPT0gb3RoZXIubV90YWcu
aW1wbCgpICYmIG1fdmFsdWUgPCBvdGhlci5tX3ZhbHVlKTsKIH0KIAordW5zaWduZWQgRm9udEZl
YXR1cmU6Omhhc2goKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OlBhaXJIYXNoPEF0b21pY1N0
cmluZywgdW5zaWduZWQ+OjpoYXNoKHN0ZDo6bWFrZV9wYWlyKG1fdGFnLCBtX3ZhbHVlKSk7Cit9
CisKIFJlZjxGb250RmVhdHVyZVNldHRpbmdzPiBGb250RmVhdHVyZVNldHRpbmdzOjpjcmVhdGUo
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnRGZWF0dXJlU2V0dGluZ3MpOwpAQCAt
NjAsNCArNjcsMTIgQEAgdm9pZCBGb250RmVhdHVyZVNldHRpbmdzOjppbnNlcnQoRm9udEZlYXR1
cmUmJiBmZWF0dXJlKQogICAgIG1fbGlzdC5pbnNlcnQoaSwgV1RGOjptb3ZlKGZlYXR1cmUpKTsK
IH0KIAordW5zaWduZWQgRm9udEZlYXR1cmVTZXR0aW5nczo6aGFzaCgpIGNvbnN0Cit7CisgICAg
dW5zaWduZWQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsg
KytpKQorICAgICAgICByZXN1bHQgPSBXVEY6OnBhaXJJbnRIYXNoKHJlc3VsdCwgYXQoaSkuaGFz
aCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmgKaW5kZXggMjdmZGY5
ODhjZDRlMGI1MWFhYzBkOTVmOWU0ZTViODZhZTA5OWFhYS4uNTQ5Y2U0MWVmNTM3Y2Q1ZGUxMDFl
NWJjZDFlNmUxY2NiODQxYzQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsg
fQogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAorICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV90YWc7CiAg
ICAgY29uc3QgaW50IG1fdmFsdWUgeyAwIH07CkBAIC01OSw2ICs2MSw4IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBGb250RmVhdHVyZSYgb3BlcmF0b3JbXShpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IG1fbGlzdFtpbmRleF07IH0KICAgICBjb25zdCBGb250RmVhdHVyZSYgYXQoc2l6ZV90IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX2xpc3QuYXQoaW5kZXgpOyB9CiAKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncygpIHsgfQogICAg
IFZlY3RvcjxGb250RmVhdHVyZT4gbV9saXN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258410</attachid>
            <date>2015-08-06 15:57:31 -0700</date>
            <delta_ts>2015-08-06 16:02:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147751-20150806155721.patch</filename>
            <type>text/plain</type>
            <size>8789</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJlM2QyMWVmZTA0MWNl
MzU0N2Y2NGZlNjNkMGRkNWU4ZDBkNWMzYS4uMDg0NDExYTlhODFhNjVkOTZjYmFkZTM1MTFiMDg3
OWMwMGIzNTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA4LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBGb250
RGVzY3JpcHRpb25LZXkgc2Vuc2l0aXZlIHRvIEZvbnRGZWF0dXJlU2V0dGluZ3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzc1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1c3QgbGlrZSBob3cgRm9u
dERlc2NyaXB0aW9uIGhhc2hlcyBzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIGxvY2FsZSwgdGhleSBz
aG91bGQKKyAgICAgICAgYWxzbyBiZSBzZW5zaXRpdmUgdG8gZm9udCBmZWF0dXJlcy4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgb3BlcmF0b3I9PSBmb3IgRm9udERlc2NyaXB0aW9u
S2V5LCB3aGljaCB3YXMgcHJldmlvdXNseQorICAgICAgICBjb21wYXJpbmcgaGFzaGVzIGZvciBl
cXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEuIENvbXBhcmluZyBoYXNoZXMK
KyAgICAgICAgZm9yIGVxdWFsaXR5IGlzIHVzZWxlc3MgaW5zaWRlIGhhc2htYXBzLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXk6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXk6OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtl
eTo6aGFzaFRhYmxlRGVsZXRlZFNpemUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5
OjpGb250RGVzY3JpcHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9u
S2V5OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6
b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eTo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJl
U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmU6Omhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVTZXR0aW5nczo6aGFzaCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5oOgorCiAyMDE1LTA4LTA2ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIERvIG5vdCBlbmZv
cmNlICJjb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50IiBzYW5kYm94IHJlc3RyaWN0aW9u
cyBvbiBhIE1lZGlhRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwCmluZGV4IDY1MjdiY2UxYmU5NTNiNDFiNDFmYWQwMWRkZmNiMWY5NmRi
YzdhNWUuLmFmYThlNGM2ZjdkMDE0MjZhZGM5MzZjYjE1MzNmYWFlZDY5NDZjZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMTA1LDgg
KzEwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9mYW1pbHkoZmFtaWx5KQogICAgIHsgfQog
Ci0gICAgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
IDogbV9mb250RGVzY3JpcHRpb25LZXkoaGFzaFRhYmxlRGVsZXRlZFNpemUoKSkgeyB9Ci0gICAg
Ym9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2Ny
aXB0aW9uS2V5LnNpemUgPT0gaGFzaFRhYmxlRGVsZXRlZFNpemUoKTsgfQorICAgIGV4cGxpY2l0
IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleShIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHQpCisg
ICAgICAgIDogbV9mb250RGVzY3JpcHRpb25LZXkodCkKKyAgICB7IH0KKworICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbktl
eS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5JiBvdGhlcikgY29uc3QKICAgICB7CkBAIC0xMTUs
OSArMTE4LDYgQEAgcHVibGljOgogCiAgICAgRm9udERlc2NyaXB0aW9uS2V5IG1fZm9udERlc2Ny
aXB0aW9uS2V5OwogICAgIEF0b21pY1N0cmluZyBtX2ZhbWlseTsKLQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaFRhYmxlRGVsZXRlZFNpemUoKSB7IHJldHVybiAweEZGRkZGRkZG
VTsgfQogfTsKIAogc3RydWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleUhhc2ggewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCBlYTJhMzNjNzNi
OTY4MTQ3MGM5ZDU2MGJiZGQyNTJhYjNiYzg2OTJjLi5iZDAzYjA3MDhjYTRkYWJmOTg2NTc1NjQ1
YWMwMmJkODI1NGMzNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC02NywxOCArNjgsNDAgQEAgdHlwZWRl
ZiBJTUxhbmdGb250TGluayBJTUxhbmdGb250TGlua1R5cGU7CiAKIC8vIFRoaXMga2V5IGNvbnRh
aW5zIHRoZSBGb250RGVzY3JpcHRpb24gZmllbGRzIG90aGVyIHRoYW4gZmFtaWx5IHRoYXQgbWF0
dGVyIHdoZW4gZmV0Y2hpbmcgRm9udERhdGFzIChwbGF0Zm9ybSBmb250cykuCiBzdHJ1Y3QgRm9u
dERlc2NyaXB0aW9uS2V5IHsKLSAgICBleHBsaWNpdCBGb250RGVzY3JpcHRpb25LZXkodW5zaWdu
ZWQgc2l6ZSA9IDApCi0gICAgICAgIDogc2l6ZShzaXplKQotICAgICAgICAsIHdlaWdodCgwKQot
ICAgICAgICAsIGZsYWdzKDApCi0gICAgICAgICwgbG9jYWxlSGFzaCgwKQotICAgIHsgfQorICAg
IEZvbnREZXNjcmlwdGlvbktleSgpID0gZGVmYXVsdDsKKwogICAgIEZvbnREZXNjcmlwdGlvbktl
eShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQotICAgICAgICA6IHNpemUoZGVz
Y3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkKLSAgICAgICAgLCB3ZWlnaHQoZGVzY3JpcHRp
b24ud2VpZ2h0KCkpCi0gICAgICAgICwgZmxhZ3MobWFrZUZsYWdLZXkoZGVzY3JpcHRpb24pKQot
ICAgICAgICAsIGxvY2FsZUhhc2goZGVzY3JpcHRpb24ubG9jYWxlKCkuaXNOdWxsKCkgPyAwIDog
ZGVzY3JpcHRpb24ubG9jYWxlKCkuaW1wbCgpLT5leGlzdGluZ0hhc2goKSkKKyAgICAgICAgOiBt
X3NpemUoZGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSkKKyAgICAgICAgLCBtX3dlaWdo
dChkZXNjcmlwdGlvbi53ZWlnaHQoKSkKKyAgICAgICAgLCBtX2ZsYWdzKG1ha2VGbGFnS2V5KGRl
c2NyaXB0aW9uKSkKKyAgICAgICAgLCBtX2xvY2FsZShkZXNjcmlwdGlvbi5sb2NhbGUoKSkKKyAg
ICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncyhkZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKSkK
KyAgICB7IH0KKworICAgIGV4cGxpY2l0IEZvbnREZXNjcmlwdGlvbktleShXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDogbV9zaXplKGNIYXNoVGFibGVEZWxldGVkU2l6
ZSkKICAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25L
ZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2l6ZSA9PSBvdGhlci5t
X3NpemUgJiYgbV93ZWlnaHQgPT0gb3RoZXIubV93ZWlnaHQgJiYgbV9mbGFncyA9PSBvdGhlci5t
X2ZsYWdzICYmIG1fbG9jYWxlID09IG90aGVyLm1fbG9jYWxlCisgICAgICAgICAgICAmJiAoKG1f
ZmVhdHVyZVNldHRpbmdzID09IG90aGVyLm1fZmVhdHVyZVNldHRpbmdzKSB8fCAobV9mZWF0dXJl
U2V0dGluZ3MgJiYgb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MgJiYgbV9mZWF0dXJlU2V0dGluZ3Mu
Z2V0KCkgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MuZ2V0KCkpKTsKKyAgICB9CisKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRm9udERlc2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKKyAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zaXplID09IGNIYXNo
VGFibGVEZWxldGVkU2l6ZTsgfQorCisgICAgaW5saW5lIHVuc2lnbmVkIGNvbXB1dGVIYXNoKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHRvSGFzaFtdID0ge21fc2l6ZSwgbV93ZWln
aHQsIG1fZmxhZ3MsIG1fbG9jYWxlLmlzTnVsbCgpID8gMCA6IG1fbG9jYWxlLmltcGwoKS0+ZXhp
c3RpbmdIYXNoKCksIG1fZmVhdHVyZVNldHRpbmdzID8gbV9mZWF0dXJlU2V0dGluZ3MtPmhhc2go
KSA6IDB9OworICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KHRvSGFzaCwg
c2l6ZW9mKHRvSGFzaCkpOworICAgIH0KKworcHJpdmF0ZToKICAgICBzdGF0aWMgdW5zaWduZWQg
bWFrZUZsYWdLZXkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKICAgICB7CiAg
ICAgICAgIHN0YXRpY19hc3NlcnQoVVNDUklQVF9DT0RFX0xJTUlUIDwgMHgxMDAwLCAiU2NyaXB0
IGNvZGUgbXVzdCBmaXQgaW4gYW4gdW5zaWduZWQgYWxvbmcgd2l0aCB0aGUgb3RoZXIgZmxhZ3Mi
KTsKQEAgLTkxLDIyICsxMTQsMTQgQEAgc3RydWN0IEZvbnREZXNjcmlwdGlvbktleSB7CiAgICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5pdGFsaWMoKSkgPDwg
MQogICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24ucmVuZGVy
aW5nTW9kZSgpKTsKICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnREZXNjcmlw
dGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc2l6ZSA9PSBvdGhl
ci5zaXplICYmIHdlaWdodCA9PSBvdGhlci53ZWlnaHQgJiYgZmxhZ3MgPT0gb3RoZXIuZmxhZ3Mg
JiYgbG9jYWxlSGFzaCA9PSBvdGhlci5sb2NhbGVIYXNoOwotICAgIH0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgRm9udERlc2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgaW5saW5lIHVuc2lnbmVk
IGNvbXB1dGVIYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6
Omhhc2hNZW1vcnk8c2l6ZW9mKEZvbnREZXNjcmlwdGlvbktleSk+KHRoaXMpOwotICAgIH0KLSAg
ICB1bnNpZ25lZCBzaXplOwotICAgIHVuc2lnbmVkIHdlaWdodDsKLSAgICB1bnNpZ25lZCBmbGFn
czsKLSAgICB1bnNpZ25lZCBsb2NhbGVIYXNoOyAvLyBGSVhNRTogSGVyZSwgYW5kIGV2ZXJ5IGNs
aWVudCBvZiB1cywgbWFrZXMgaGFzaGVzIG9mIGhhc2hlcy4KKworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjSGFzaFRhYmxlRGVsZXRlZFNpemUgPSAweEZGRkZGRkZGVTsKKworICAgIHVuc2ln
bmVkIG1fc2l6ZSB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX3dlaWdodCB7IDAgfTsKKyAgICB1bnNp
Z25lZCBtX2ZsYWdzIHsgMCB9OworICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKKyAgICBSZWZQ
dHI8Rm9udEZlYXR1cmVTZXR0aW5ncz4gbV9mZWF0dXJlU2V0dGluZ3M7CiB9OwogCiBjbGFzcyBG
b250Q2FjaGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250RmVhdHVyZVNldHRpbmdzLmNwcAppbmRleCA0YWE0NWQwMGVkYzk1MjU3ODEyMThkNWFh
M2NhMjI2ZDU3M2VlNWMyLi45ZTE5NDlmYzQ0YWM0NzQ5Njk4NGRiN2MwOGE3ZjI0ZjQ5MDhjMTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVy
ZVNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RmVhdHVyZVNldHRpbmdzLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkZvbnRGZWF0dXJlU2V0dGluZ3MuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21pY1N0cmluZ0hhc2guaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGb250RmVhdHVy
ZTo6Rm9udEZlYXR1cmUoY29uc3QgQXRvbWljU3RyaW5nJiB0YWcsIGludCB2YWx1ZSkKQEAgLTQ0
LDYgKzQ2LDExIEBAIGJvb2wgRm9udEZlYXR1cmU6Om9wZXJhdG9yPChjb25zdCBGb250RmVhdHVy
ZSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIChtX3RhZy5pbXBsKCkgPCBvdGhlci5tX3RhZy5p
bXBsKCkpIHx8IChtX3RhZy5pbXBsKCkgPT0gb3RoZXIubV90YWcuaW1wbCgpICYmIG1fdmFsdWUg
PCBvdGhlci5tX3ZhbHVlKTsKIH0KIAordW5zaWduZWQgRm9udEZlYXR1cmU6Omhhc2goKSBjb25z
dAoreworICAgIHJldHVybiBXVEY6OlBhaXJIYXNoPEF0b21pY1N0cmluZywgdW5zaWduZWQ+Ojpo
YXNoKHN0ZDo6bWFrZV9wYWlyKG1fdGFnLCBtX3ZhbHVlKSk7Cit9CisKIFJlZjxGb250RmVhdHVy
ZVNldHRpbmdzPiBGb250RmVhdHVyZVNldHRpbmdzOjpjcmVhdGUoKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZvbnRGZWF0dXJlU2V0dGluZ3MpOwpAQCAtNjAsNCArNjcsMTIgQEAgdm9p
ZCBGb250RmVhdHVyZVNldHRpbmdzOjppbnNlcnQoRm9udEZlYXR1cmUmJiBmZWF0dXJlKQogICAg
IG1fbGlzdC5pbnNlcnQoaSwgV1RGOjptb3ZlKGZlYXR1cmUpKTsKIH0KIAordW5zaWduZWQgRm9u
dEZlYXR1cmVTZXR0aW5nczo6aGFzaCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0g
MDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQorICAgICAgICByZXN1
bHQgPSBXVEY6OnBhaXJJbnRIYXNoKHJlc3VsdCwgYXQoaSkuaGFzaCgpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmgKaW5kZXggMjdmZGY5ODhjZDRlMGI1MWFhYzBkOTVm
OWU0ZTViODZhZTA5OWFhYS4uNTQ5Y2U0MWVmNTM3Y2Q1ZGUxMDFlNWJjZDFlNmUxY2NiODQxYzQy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZlYXR1
cmVTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRG
ZWF0dXJlU2V0dGluZ3MuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsgfQogICAgIGludCB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV90YWc7CiAgICAgY29uc3QgaW50IG1fdmFs
dWUgeyAwIH07CkBAIC01OSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBGb250RmVhdHVy
ZSYgb3BlcmF0b3JbXShpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFtpbmRleF07IH0K
ICAgICBjb25zdCBGb250RmVhdHVyZSYgYXQoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBt
X2xpc3QuYXQoaW5kZXgpOyB9CiAKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncygpIHsgfQogICAgIFZlY3RvcjxGb250RmVhdHVy
ZT4gbV9saXN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258412</attachid>
            <date>2015-08-06 16:02:50 -0700</date>
            <delta_ts>2015-08-06 16:12:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147751-20150806160240.patch</filename>
            <type>text/plain</type>
            <size>8863</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJlM2QyMWVmZTA0MWNl
MzU0N2Y2NGZlNjNkMGRkNWU4ZDBkNWMzYS4uNGEwNGNmYTNiYWMyYzY1NTkwNGRiZTllYzUxMTAw
MTQyMDA1Yzg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA4LTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBGb250
RGVzY3JpcHRpb25LZXkgc2Vuc2l0aXZlIHRvIEZvbnRGZWF0dXJlU2V0dGluZ3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzc1MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1c3QgbGlrZSBob3cgRm9u
dERlc2NyaXB0aW9uIGhhc2hlcyBzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIGxvY2FsZSwgdGhleSBz
aG91bGQKKyAgICAgICAgYWxzbyBiZSBzZW5zaXRpdmUgdG8gZm9udCBmZWF0dXJlcy4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgb3BlcmF0b3I9PSBmb3IgRm9udERlc2NyaXB0aW9u
S2V5LCB3aGljaCB3YXMgcHJldmlvdXNseQorICAgICAgICBjb21wYXJpbmcgaGFzaGVzIGZvciBl
cXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEuIENvbXBhcmluZyBoYXNoZXMK
KyAgICAgICAgZm9yIGVxdWFsaXR5IGlzIHVzZWxlc3MgaW5zaWRlIGhhc2htYXBzLgorCisgICAg
ICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGltcGxlbWVudGluZyBmb250LWZlYXR1cmUt
c2V0dGluZ3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleTo6Rm9udFBsYXRm
b3JtRGF0YUNhY2hlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGFDYWNo
ZUtleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YUNhY2hlS2V5OjpoYXNoVGFibGVEZWxldGVkU2l6ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpG
b250RGVzY3JpcHRpb25LZXk6OkZvbnREZXNjcmlwdGlvbktleSk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RGVzY3JpcHRpb25LZXk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dERlc2NyaXB0aW9uS2V5OjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbktleTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5Ojpjb21wdXRlSGFzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmVh
dHVyZTo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmVhdHVyZVNldHRpbmdzOjpoYXNo
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmg6CisK
IDIwMTUtMDgtMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRG8gbm90IGVuZm9yY2UgImNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQiIHNh
bmRib3ggcmVzdHJpY3Rpb25zIG9uIGEgTWVkaWFEb2N1bWVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggNjUyN2JjZTFiZTk1M2I0MWI0
MWZhZDAxZGRmY2IxZjk2ZGJjN2E1ZS4uYWZhOGU0YzZmN2QwMTQyNmFkYzkzNmNiMTUzM2ZhYWVk
Njk0NmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwCkBAIC0xMDUsOCArMTA1LDExIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2ZhbWlseShm
YW1pbHkpCiAgICAgeyB9CiAKLSAgICBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkoSGFzaFRhYmxl
RGVsZXRlZFZhbHVlVHlwZSkgOiBtX2ZvbnREZXNjcmlwdGlvbktleShoYXNoVGFibGVEZWxldGVk
U2l6ZSgpKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb250RGVzY3JpcHRpb25LZXkuc2l6ZSA9PSBoYXNoVGFibGVEZWxldGVkU2l6ZSgp
OyB9CisgICAgZXhwbGljaXQgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5KEhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVR5cGUgdCkKKyAgICAgICAgOiBtX2ZvbnREZXNjcmlwdGlvbktleSh0KQorICAgIHsg
fQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9udERlc2NyaXB0aW9uS2V5LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkmIG90aGVyKSBjb25z
dAogICAgIHsKQEAgLTExNSw5ICsxMTgsNiBAQCBwdWJsaWM6CiAKICAgICBGb250RGVzY3JpcHRp
b25LZXkgbV9mb250RGVzY3JpcHRpb25LZXk7CiAgICAgQXRvbWljU3RyaW5nIG1fZmFtaWx5Owot
Ci1wcml2YXRlOgotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoVGFibGVEZWxldGVkU2l6ZSgpIHsg
cmV0dXJuIDB4RkZGRkZGRkZVOyB9CiB9OwogCiBzdHJ1Y3QgRm9udFBsYXRmb3JtRGF0YUNhY2hl
S2V5SGFzaCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
CmluZGV4IGVhMmEzM2M3M2I5NjgxNDcwYzlkNTYwYmJkZDI1MmFiM2JjODY5MmMuLmJkMDNiMDcw
OGNhNGRhYmY5ODY1NzU2NDVhYzAyYmQ4MjU0YzM1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTY3LDE4
ICs2OCw0MCBAQCB0eXBlZGVmIElNTGFuZ0ZvbnRMaW5rIElNTGFuZ0ZvbnRMaW5rVHlwZTsKIAog
Ly8gVGhpcyBrZXkgY29udGFpbnMgdGhlIEZvbnREZXNjcmlwdGlvbiBmaWVsZHMgb3RoZXIgdGhh
biBmYW1pbHkgdGhhdCBtYXR0ZXIgd2hlbiBmZXRjaGluZyBGb250RGF0YXMgKHBsYXRmb3JtIGZv
bnRzKS4KIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewotICAgIGV4cGxpY2l0IEZvbnREZXNj
cmlwdGlvbktleSh1bnNpZ25lZCBzaXplID0gMCkKLSAgICAgICAgOiBzaXplKHNpemUpCi0gICAg
ICAgICwgd2VpZ2h0KDApCi0gICAgICAgICwgZmxhZ3MoMCkKLSAgICAgICAgLCBsb2NhbGVIYXNo
KDApCi0gICAgeyB9CisgICAgRm9udERlc2NyaXB0aW9uS2V5KCkgPSBkZWZhdWx0OworCiAgICAg
Rm9udERlc2NyaXB0aW9uS2V5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0g
ICAgICAgIDogc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKQotICAgICAgICAs
IHdlaWdodChkZXNjcmlwdGlvbi53ZWlnaHQoKSkKLSAgICAgICAgLCBmbGFncyhtYWtlRmxhZ0tl
eShkZXNjcmlwdGlvbikpCi0gICAgICAgICwgbG9jYWxlSGFzaChkZXNjcmlwdGlvbi5sb2NhbGUo
KS5pc051bGwoKSA/IDAgOiBkZXNjcmlwdGlvbi5sb2NhbGUoKS5pbXBsKCktPmV4aXN0aW5nSGFz
aCgpKQorICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKQor
ICAgICAgICAsIG1fd2VpZ2h0KGRlc2NyaXB0aW9uLndlaWdodCgpKQorICAgICAgICAsIG1fZmxh
Z3MobWFrZUZsYWdLZXkoZGVzY3JpcHRpb24pKQorICAgICAgICAsIG1fbG9jYWxlKGRlc2NyaXB0
aW9uLmxvY2FsZSgpKQorICAgICAgICAsIG1fZmVhdHVyZVNldHRpbmdzKGRlc2NyaXB0aW9uLmZl
YXR1cmVTZXR0aW5ncygpKQorICAgIHsgfQorCisgICAgZXhwbGljaXQgRm9udERlc2NyaXB0aW9u
S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX3NpemUoY0hh
c2hUYWJsZURlbGV0ZWRTaXplKQogICAgIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9zaXplID09IG90aGVyLm1fc2l6ZSAmJiBtX3dlaWdodCA9PSBvdGhlci5tX3dlaWdodCAmJiBt
X2ZsYWdzID09IG90aGVyLm1fZmxhZ3MgJiYgbV9sb2NhbGUgPT0gb3RoZXIubV9sb2NhbGUKKyAg
ICAgICAgICAgICYmICgobV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGlu
Z3MpIHx8IChtX2ZlYXR1cmVTZXR0aW5ncyAmJiBvdGhlci5tX2ZlYXR1cmVTZXR0aW5ncyAmJiBt
X2ZlYXR1cmVTZXR0aW5ncy5nZXQoKSA9PSBvdGhlci5tX2ZlYXR1cmVTZXR0aW5ncy5nZXQoKSkp
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RGVzY3JpcHRpb25LZXkm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwor
ICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3NpemUgPT0gY0hhc2hUYWJsZURlbGV0ZWRTaXplOyB9CisKKyAgICBpbmxpbmUgdW5zaWdu
ZWQgY29tcHV0ZUhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgdG9IYXNoW10g
PSB7bV9zaXplLCBtX3dlaWdodCwgbV9mbGFncywgbV9sb2NhbGUuaXNOdWxsKCkgPyAwIDogbV9s
b2NhbGUuaW1wbCgpLT5leGlzdGluZ0hhc2goKSwgbV9mZWF0dXJlU2V0dGluZ3MgPyBtX2ZlYXR1
cmVTZXR0aW5ncy0+aGFzaCgpIDogMH07CisgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhh
c2hNZW1vcnkodG9IYXNoLCBzaXplb2YodG9IYXNoKSk7CisgICAgfQorCitwcml2YXRlOgogICAg
IHN0YXRpYyB1bnNpZ25lZCBtYWtlRmxhZ0tleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydChVU0NSSVBUX0NPREVfTElNSVQg
PCAweDEwMDAsICJTY3JpcHQgY29kZSBtdXN0IGZpdCBpbiBhbiB1bnNpZ25lZCBhbG9uZyB3aXRo
IHRoZSBvdGhlciBmbGFncyIpOwpAQCAtOTEsMjIgKzExNCwxNCBAQCBzdHJ1Y3QgRm9udERlc2Ny
aXB0aW9uS2V5IHsKICAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0
aW9uLml0YWxpYygpKSA8PCAxCiAgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
ZXNjcmlwdGlvbi5yZW5kZXJpbmdNb2RlKCkpOwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRm9udERlc2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBzaXplID09IG90aGVyLnNpemUgJiYgd2VpZ2h0ID09IG90aGVyLndlaWdodCAmJiBmbGFn
cyA9PSBvdGhlci5mbGFncyAmJiBsb2NhbGVIYXNoID09IG90aGVyLmxvY2FsZUhhc2g7Ci0gICAg
fQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAg
ICBpbmxpbmUgdW5zaWduZWQgY29tcHV0ZUhhc2goKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoRm9udERlc2NyaXB0aW9uS2V5KT4o
dGhpcyk7Ci0gICAgfQotICAgIHVuc2lnbmVkIHNpemU7Ci0gICAgdW5zaWduZWQgd2VpZ2h0Owot
ICAgIHVuc2lnbmVkIGZsYWdzOwotICAgIHVuc2lnbmVkIGxvY2FsZUhhc2g7IC8vIEZJWE1FOiBI
ZXJlLCBhbmQgZXZlcnkgY2xpZW50IG9mIHVzLCBtYWtlcyBoYXNoZXMgb2YgaGFzaGVzLgorCisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNIYXNoVGFibGVEZWxldGVkU2l6ZSA9IDB4RkZGRkZG
RkZVOworCisgICAgdW5zaWduZWQgbV9zaXplIHsgMCB9OworICAgIHVuc2lnbmVkIG1fd2VpZ2h0
IHsgMCB9OworICAgIHVuc2lnbmVkIG1fZmxhZ3MgeyAwIH07CisgICAgQXRvbWljU3RyaW5nIG1f
bG9jYWxlOworICAgIFJlZlB0cjxGb250RmVhdHVyZVNldHRpbmdzPiBtX2ZlYXR1cmVTZXR0aW5n
czsKIH07CiAKIGNsYXNzIEZvbnRDYWNoZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwCmluZGV4IDRhYTQ1ZDAw
ZWRjOTUyNTc4MTIxOGQ1YWEzY2EyMjZkNTczZWU1YzIuLjllMTk0OWZjNDRhYzQ3NDk2OTg0ZGI3
YzA4YTdmMjRmNDkwOGMxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udEZlYXR1cmVTZXR0aW5ncy5oIgogCisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEZvbnRGZWF0dXJlOjpGb250RmVhdHVyZShjb25zdCBBdG9taWNTdHJpbmcmIHRhZywg
aW50IHZhbHVlKQpAQCAtNDQsNiArNDYsMTEgQEAgYm9vbCBGb250RmVhdHVyZTo6b3BlcmF0b3I8
KGNvbnN0IEZvbnRGZWF0dXJlJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gKG1fdGFnLmltcGwo
KSA8IG90aGVyLm1fdGFnLmltcGwoKSkgfHwgKG1fdGFnLmltcGwoKSA9PSBvdGhlci5tX3RhZy5p
bXBsKCkgJiYgbV92YWx1ZSA8IG90aGVyLm1fdmFsdWUpOwogfQogCit1bnNpZ25lZCBGb250RmVh
dHVyZTo6aGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6UGFpckhhc2g8QXRvbWljU3Ry
aW5nLCB1bnNpZ25lZD46Omhhc2goc3RkOjptYWtlX3BhaXIobV90YWcsIG1fdmFsdWUpKTsKK30K
KwogUmVmPEZvbnRGZWF0dXJlU2V0dGluZ3M+IEZvbnRGZWF0dXJlU2V0dGluZ3M6OmNyZWF0ZSgp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udEZlYXR1cmVTZXR0aW5ncyk7CkBAIC02
MCw0ICs2NywxMiBAQCB2b2lkIEZvbnRGZWF0dXJlU2V0dGluZ3M6Omluc2VydChGb250RmVhdHVy
ZSYmIGZlYXR1cmUpCiAgICAgbV9saXN0Lmluc2VydChpLCBXVEY6Om1vdmUoZmVhdHVyZSkpOwog
fQogCit1bnNpZ25lZCBGb250RmVhdHVyZVNldHRpbmdzOjpoYXNoKCkgY29uc3QKK3sKKyAgICB1
bnNpZ25lZCByZXN1bHQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyAr
K2kpCisgICAgICAgIHJlc3VsdCA9IFdURjo6cGFpckludEhhc2gocmVzdWx0LCBhdChpKS5oYXNo
KCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuaAppbmRleCAyN2ZkZjk4
OGNkNGUwYjUxYWFjMGQ5NWY5ZTRlNWI4NmFlMDk5YWFhLi41NDljZTQxZWY1MzdjZDVkZTEwMWU1
YmNkMWU2ZTFjY2I4NDFjNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250RmVhdHVyZVNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udEZlYXR1cmVTZXR0aW5ncy5oCkBAIC00NCw2ICs0NCw4IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRhZygpIGNvbnN0IHsgcmV0dXJuIG1fdGFnOyB9
CiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCisgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEF0b21pY1N0cmluZyBtX3RhZzsKICAg
ICBjb25zdCBpbnQgbV92YWx1ZSB7IDAgfTsKQEAgLTU5LDYgKzYxLDggQEAgcHVibGljOgogICAg
IGNvbnN0IEZvbnRGZWF0dXJlJiBvcGVyYXRvcltdKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9saXN0W2luZGV4XTsgfQogICAgIGNvbnN0IEZvbnRGZWF0dXJlJiBhdChzaXplX3QgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIG1fbGlzdC5hdChpbmRleCk7IH0KIAorICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBGb250RmVhdHVyZVNldHRpbmdzKCkgeyB9CiAgICAg
VmVjdG9yPEZvbnRGZWF0dXJlPiBtX2xpc3Q7Cg==
</data>
<flag name="review"
          id="283594"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>