<?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>161809</bug_id>
          
          <creation_ts>2016-09-09 12:01:09 -0700</creation_ts>
          <short_desc>[Cocoa] Reduce uses of CGFonts in favor of CTFonts</short_desc>
          <delta_ts>2016-09-12 14:46:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1228280</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-09 12:01:09 -0700</bug_when>
    <thetext>[Cocoa] Improve performance of populating glyph caches in the fast text codepath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228283</commentid>
    <comment_count>1</comment_count>
      <attachid>288424</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-09 12:02:14 -0700</bug_when>
    <thetext>Created attachment 288424
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228299</commentid>
    <comment_count>2</comment_count>
      <attachid>288430</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-09 12:46:23 -0700</bug_when>
    <thetext>Created attachment 288430
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228361</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-09 15:16:30 -0700</bug_when>
    <thetext>Attachment 288430 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/GlyphPageMac.cpp:80:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228364</commentid>
    <comment_count>4</comment_count>
      <attachid>288445</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-09 15:41:09 -0700</bug_when>
    <thetext>Created attachment 288445
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228365</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-09 15:43:46 -0700</bug_when>
    <thetext>Attachment 288445 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/GlyphPageMac.cpp:109:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228368</commentid>
    <comment_count>6</comment_count>
      <attachid>288446</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-09 15:47:46 -0700</bug_when>
    <thetext>Created attachment 288446
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228369</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-09 15:50:35 -0700</bug_when>
    <thetext>Attachment 288446 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/mac/GlyphPageMac.cpp:110:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228433</commentid>
    <comment_count>8</comment_count>
      <attachid>288470</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-09 18:40:42 -0700</bug_when>
    <thetext>Created attachment 288470
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228512</commentid>
    <comment_count>9</comment_count>
      <attachid>288489</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-10 12:14:50 -0700</bug_when>
    <thetext>Created attachment 288489
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228533</commentid>
    <comment_count>10</comment_count>
      <attachid>288496</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-10 14:12:21 -0700</bug_when>
    <thetext>Created attachment 288496
ASSERTs testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228535</commentid>
    <comment_count>11</comment_count>
      <attachid>288497</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-10 14:19:32 -0700</bug_when>
    <thetext>Created attachment 288497
Measuring perf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228694</commentid>
    <comment_count>12</comment_count>
      <attachid>288555</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-11 23:51:41 -0700</bug_when>
    <thetext>Created attachment 288555
No regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228781</commentid>
    <comment_count>13</comment_count>
      <attachid>288577</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-12 10:25:24 -0700</bug_when>
    <thetext>Created attachment 288577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228844</commentid>
    <comment_count>14</comment_count>
      <attachid>288577</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-09-12 12:17:03 -0700</bug_when>
    <thetext>Comment on attachment 288577
Patch

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

&gt; Source/WTF/wtf/unicode/CharacterNames.h:73
&gt; +const UChar narrowNoBreakSpace = 0x202F;

Please add this definitions such that it appears in this list of definitions in sorted order according to the UNIX sort command.

&gt; Source/WTF/wtf/unicode/CharacterNames.h:136
&gt; +using WTF::Unicode::narrowNoBreakSpace;

Ditto.

&gt; Source/WebCore/platform/graphics/GlyphPage.h:45
&gt; +    GlyphData(Glyph glyph = 0, const Font* font = 0)

We should take this opportunity to change 0 to nullptr for the default value of the second argument.

&gt; Source/WebCore/platform/graphics/mac/GlyphPageMac.cpp:43
&gt; +static bool shouldFillWithVerticalGlyphs(const UChar* buffer, unsigned bufferLength, const Font&amp; font)

We may want to consider having this function take a WTF::StringView (or maybe introduce a WTF::ArrayView) instead of passing a buffer and length. Among other benefits, using a WTF::StringView helps ensure that we always have the correct buffer length for the buffer. I know that currently the caller GlyphPage::fill() is passed a raw pointer to a buffer and a length. We may want to look to change these signatures as well.

&gt; Source/WebCore/platform/graphics/mac/GlyphPageMac.cpp:49
&gt; +    if (!font.hasVerticalGlyphs())
&gt; +        return false;
&gt; +    for (unsigned i = 0; i &lt; bufferLength; ++i) {
&gt; +        if (!FontCascade::isCJKIdeograph(buffer[i]))
&gt; +            return true;

I am assuming that we no longer need to consider whether the font is a system font or the font is for text combine as part of knowing whether a font has vertical glyphs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228903</commentid>
    <comment_count>15</comment_count>
      <attachid>288577</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-12 14:44:15 -0700</bug_when>
    <thetext>Comment on attachment 288577
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/mac/GlyphPageMac.cpp:43
&gt;&gt; +static bool shouldFillWithVerticalGlyphs(const UChar* buffer, unsigned bufferLength, const Font&amp; font)
&gt; 
&gt; We may want to consider having this function take a WTF::StringView (or maybe introduce a WTF::ArrayView) instead of passing a buffer and length. Among other benefits, using a WTF::StringView helps ensure that we always have the correct buffer length for the buffer. I know that currently the caller GlyphPage::fill() is passed a raw pointer to a buffer and a length. We may want to look to change these signatures as well.

StringView is not a good candidate because it can hold both 8-bit characters and 16-bit characters, but this function only accepts 16-bit characters. Something like an ArrayView would be a better fit, but I think implementing that is out of scope for this patch.

&gt;&gt; Source/WebCore/platform/graphics/mac/GlyphPageMac.cpp:49
&gt;&gt; +            return true;
&gt; 
&gt; I am assuming that we no longer need to consider whether the font is a system font or the font is for text combine as part of knowing whether a font has vertical glyphs.

In the (deleted) code below, we only call CTFontGetVerticalGlyphsForCharacters() if the font is not a system font and the font is not for text combine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228910</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-09-12 14:46:43 -0700</bug_when>
    <thetext>Committed r205826: &lt;http://trac.webkit.org/changeset/205826&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288424</attachid>
            <date>2016-09-09 12:02:14 -0700</date>
            <delta_ts>2016-09-09 12:46:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-161809-20160909115946.patch</filename>
            <type>text/plain</type>
            <size>4538</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjVmYWU2ZTQ1OWVjMjBkZmQ2MTdiM2VhZjAyZTYxZmYyZDNkYjE3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFu
Y2Ugb2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OWE1MzkwZTVjYjIzNDIwZjlkNGI0ZjIxNzA3YTM5N2I4
MzBmMDhjLi5mZjA3NjBkNzQ5MGJmMmZjNTgzNDUwMGUxM2U0NjQ3ZTgzN2Q5YjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQ
YWdlOjpmaWxsKToKKwogMjAxNi0wOS0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgVGV4dFRyYWNrTG9hZGVyIHNob3VsZCB1c2UgRmV0Y2hPcHRpb25zOjpt
b2RlIGFjY29yZGluZyBpdHMgY3Jvc3NPcmlnaW4gYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmggYi9Tb3VyY2UvV1RGL3d0Zi91bmlj
b2RlL0NoYXJhY3Rlck5hbWVzLmgKaW5kZXggMWRjMjc5NGYwMjEzODBmMWE0NDMxOTNlZDc1Njli
YzM4YmRiNTZkOC4uOWRiZGFhOGI4Y2FhZDlhY2QzMGMzYTYxNWM0NzM0NDdhZGNkNzBiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaApAQCAtNzAsNiArNzAsNyBAQCBj
b25zdCBVQ2hhciBtaW51c1NpZ24gPSAweDIyMTI7CiBjb25zdCBVQ2hhciBuYXJyb3dOb25CcmVh
a2luZ1NwYWNlID0gMHgyMDJGOwogY29uc3QgVUNoYXIgbmV3bGluZUNoYXJhY3RlciA9IDB4MDAw
QTsKIGNvbnN0IFVDaGFyIG5vQnJlYWtTcGFjZSA9IDB4MDBBMDsKK2NvbnN0IFVDaGFyIG5hcnJv
d05vQnJlYWtTcGFjZSA9IDB4MjAyRjsKIGNvbnN0IFVDaGFyIG9iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVyID0gMHhGRkZDOwogY29uc3QgVUNoYXIgcG9wRGlyZWN0aW9uYWxGb3JtYXR0aW5nID0g
MHgyMDJDOwogY29uc3QgVUNoYXIgcG9wRGlyZWN0aW9uYWxJc29sYXRlID0gMHgyMDY5OwpAQCAt
MTMyLDYgKzEzMyw3IEBAIHVzaW5nIFdURjo6VW5pY29kZTo6bWludXNTaWduOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpuYXJyb3dOb25CcmVha2luZ1NwYWNlOwogdXNpbmcgV1RGOjpVbmljb2RlOjpu
ZXdsaW5lQ2hhcmFjdGVyOwogdXNpbmcgV1RGOjpVbmljb2RlOjpub0JyZWFrU3BhY2U7Cit1c2lu
ZyBXVEY6OlVuaWNvZGU6Om5hcnJvd05vQnJlYWtTcGFjZTsKIHVzaW5nIFdURjo6VW5pY29kZTo6
b2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXI7CiB1c2luZyBXVEY6OlVuaWNvZGU6OnBvcERpcmVj
dGlvbmFsRm9ybWF0dGluZzsKIHVzaW5nIFdURjo6VW5pY29kZTo6cG9wRGlyZWN0aW9uYWxJc29s
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCA0ODM0
MDk1MjM5ZTIyMDM3M2VhNDEwOGFjYTMzMWQzMWE0NDQwMzQ2Li5lNTczNDY2ZmJmYjY5YTFlNTlj
MjZhOWEzMzIzMjVmNmQxNjFiODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcApAQCAtMTg3LDYgKzE4Nyw3IEBAIHN0YXRpYyBSZWZQdHI8R2x5cGhQYWdlPiBj
cmVhdGVBbmRGaWxsR2x5cGhQYWdlKHVuc2lnbmVkIHBhZ2VOdW1iZXIsIGNvbnN0IEZvbnQmCiAg
ICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludCgnXG4nLCBzcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0
ZUNvZGVQb2ludCgnXHQnLCBzcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludChub0Jy
ZWFrU3BhY2UsIHNwYWNlKTsKKyAgICAgICAgb3ZlcndyaXRlQ29kZVBvaW50KG5hcnJvd05vQnJl
YWtTcGFjZSwgc3BhY2UpOwogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQobGVmdFRvUmlnaHRN
YXJrLCB6ZXJvV2lkdGhTcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludChyaWdodFRv
TGVmdE1hcmssIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3ZlcndyaXRlQ29kZVBvaW50KGxl
ZnRUb1JpZ2h0RW1iZWQsIHplcm9XaWR0aFNwYWNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKaW5kZXggZjM5YzhkYzA1
OWY1Mjg2NmEyNjY5OWM3NDRjMDc0ZjE0NzFjMzhjMS4uZTBlZWM0ZmMzY2VjYTFhYTI0NTMxMGVh
ZTgzNzA3OGNiYTNmYjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKQEAgLTcxLDYgKzcxLDE0IEBAIGJvb2wgR2x5
cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKICAgICAg
ICAgLy8gd2UgcGFzcyBpbiBtdXN0IGJlIDUxMi4gSWYgd2UgZ2V0IGJhY2sgbW9yZSB0aGFuIDI1
NiBnbHlwaHMgdGhvdWdoIHdlJ2xsIGlnbm9yZSBhbGwgdGhlIG9uZXMgYWZ0ZXIgMjU2LAogICAg
ICAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuIGFzIHRoZSBvbmx5IHRpbWUgd2UgcGFzcyBp
biA1MTIgY2hhcmFjdGVycyBpcyB3aGVuIHRoZXkgYXJlIHN1cnJvZ2F0ZXMuCiAgICAgICAgIENH
Rm9udEdldEdseXBoc0ZvclVuaWNoYXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY2dGb250KCksIGJ1
ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgeworICAgICAgICAg
ICAgVmVjdG9yPENHR2x5cGgsIDUxMj4gZ2x5cGhzMihidWZmZXJMZW5ndGgpOworICAgICAgICAg
ICAgQ1RGb250R2V0R2x5cGhzRm9yQ2hhcmFjdGVycyhmb250LnBsYXRmb3JtRGF0YSgpLmN0Rm9u
dCgpLCBidWZmZXIsIGdseXBoczIuZGF0YSgpLCBidWZmZXJMZW5ndGgpOworICAgICAgICAgICAg
dW5zaWduZWQgZ2x5cGhTdGVwMiA9IGJ1ZmZlckxlbmd0aCAvIEdseXBoUGFnZTo6c2l6ZTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNpemU7ICsraSkg
eworICAgICAgICAgICAgICAgIEFTU0VSVChnbHlwaHNbaV0gPT0gZ2x5cGhzMltpICogZ2x5cGhT
dGVwMl0pOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGdseXBoU3RlcCA9IDE7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQmVjYXVzZSB3ZSBrbm93IHRoZSBpbXBsZW1lbnRh
dGlvbiBvZiBzaG91bGRVc2VDb3JlVGV4dCgpLCBpZiB0aGUgZm9udCBpc24ndCBmb3IgdGV4dCBj
b21iaW5lIGFuZCBpdCBpc24ndCBhIHN5c3RlbSBmb250LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288430</attachid>
            <date>2016-09-09 12:46:23 -0700</date>
            <delta_ts>2016-09-09 15:41:06 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-161809-20160909124355.patch</filename>
            <type>text/plain</type>
            <size>4547</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjVmYWU2ZTQ1OWVjMjBkZmQ2MTdiM2VhZjAyZTYxZmYyZDNkYjE3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFu
Y2Ugb2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OWE1MzkwZTVjYjIzNDIwZjlkNGI0ZjIxNzA3YTM5N2I4
MzBmMDhjLi5mZjA3NjBkNzQ5MGJmMmZjNTgzNDUwMGUxM2U0NjQ3ZTgzN2Q5YjI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQ
YWdlOjpmaWxsKToKKwogMjAxNi0wOS0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgVGV4dFRyYWNrTG9hZGVyIHNob3VsZCB1c2UgRmV0Y2hPcHRpb25zOjpt
b2RlIGFjY29yZGluZyBpdHMgY3Jvc3NPcmlnaW4gYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmggYi9Tb3VyY2UvV1RGL3d0Zi91bmlj
b2RlL0NoYXJhY3Rlck5hbWVzLmgKaW5kZXggMWRjMjc5NGYwMjEzODBmMWE0NDMxOTNlZDc1Njli
YzM4YmRiNTZkOC4uOWRiZGFhOGI4Y2FhZDlhY2QzMGMzYTYxNWM0NzM0NDdhZGNkNzBiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaApAQCAtNzAsNiArNzAsNyBAQCBj
b25zdCBVQ2hhciBtaW51c1NpZ24gPSAweDIyMTI7CiBjb25zdCBVQ2hhciBuYXJyb3dOb25CcmVh
a2luZ1NwYWNlID0gMHgyMDJGOwogY29uc3QgVUNoYXIgbmV3bGluZUNoYXJhY3RlciA9IDB4MDAw
QTsKIGNvbnN0IFVDaGFyIG5vQnJlYWtTcGFjZSA9IDB4MDBBMDsKK2NvbnN0IFVDaGFyIG5hcnJv
d05vQnJlYWtTcGFjZSA9IDB4MjAyRjsKIGNvbnN0IFVDaGFyIG9iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVyID0gMHhGRkZDOwogY29uc3QgVUNoYXIgcG9wRGlyZWN0aW9uYWxGb3JtYXR0aW5nID0g
MHgyMDJDOwogY29uc3QgVUNoYXIgcG9wRGlyZWN0aW9uYWxJc29sYXRlID0gMHgyMDY5OwpAQCAt
MTMyLDYgKzEzMyw3IEBAIHVzaW5nIFdURjo6VW5pY29kZTo6bWludXNTaWduOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpuYXJyb3dOb25CcmVha2luZ1NwYWNlOwogdXNpbmcgV1RGOjpVbmljb2RlOjpu
ZXdsaW5lQ2hhcmFjdGVyOwogdXNpbmcgV1RGOjpVbmljb2RlOjpub0JyZWFrU3BhY2U7Cit1c2lu
ZyBXVEY6OlVuaWNvZGU6Om5hcnJvd05vQnJlYWtTcGFjZTsKIHVzaW5nIFdURjo6VW5pY29kZTo6
b2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXI7CiB1c2luZyBXVEY6OlVuaWNvZGU6OnBvcERpcmVj
dGlvbmFsRm9ybWF0dGluZzsKIHVzaW5nIFdURjo6VW5pY29kZTo6cG9wRGlyZWN0aW9uYWxJc29s
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCA0ODM0
MDk1MjM5ZTIyMDM3M2VhNDEwOGFjYTMzMWQzMWE0NDQwMzQ2Li42ZDI0ZDIwZTVhNjdiZDc5Mjdk
YjNiODhmMjUxOWUyMTA0NTFmM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcApAQCAtMTg3LDYgKzE4Nyw3IEBAIHN0YXRpYyBSZWZQdHI8R2x5cGhQYWdlPiBj
cmVhdGVBbmRGaWxsR2x5cGhQYWdlKHVuc2lnbmVkIHBhZ2VOdW1iZXIsIGNvbnN0IEZvbnQmCiAg
ICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludCgnXG4nLCBzcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0
ZUNvZGVQb2ludCgnXHQnLCBzcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludChub0Jy
ZWFrU3BhY2UsIHNwYWNlKTsKKyAgICAgICAgb3ZlcndyaXRlQ29kZVBvaW50KG5hcnJvd05vQnJl
YWtTcGFjZSwgemVyb1dpZHRoU3BhY2UpOwogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQobGVm
dFRvUmlnaHRNYXJrLCB6ZXJvV2lkdGhTcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0ZUNvZGVQb2lu
dChyaWdodFRvTGVmdE1hcmssIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3ZlcndyaXRlQ29k
ZVBvaW50KGxlZnRUb1JpZ2h0RW1iZWQsIHplcm9XaWR0aFNwYWNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKaW5kZXgg
ZjM5YzhkYzA1OWY1Mjg2NmEyNjY5OWM3NDRjMDc0ZjE0NzFjMzhjMS4uZTBlZWM0ZmMzY2VjYTFh
YTI0NTMxMGVhZTgzNzA3OGNiYTNmYjU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKQEAgLTcxLDYgKzcxLDE0IEBA
IGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0
aCkKICAgICAgICAgLy8gd2UgcGFzcyBpbiBtdXN0IGJlIDUxMi4gSWYgd2UgZ2V0IGJhY2sgbW9y
ZSB0aGFuIDI1NiBnbHlwaHMgdGhvdWdoIHdlJ2xsIGlnbm9yZSBhbGwgdGhlIG9uZXMgYWZ0ZXIg
MjU2LAogICAgICAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuIGFzIHRoZSBvbmx5IHRpbWUg
d2UgcGFzcyBpbiA1MTIgY2hhcmFjdGVycyBpcyB3aGVuIHRoZXkgYXJlIHN1cnJvZ2F0ZXMuCiAg
ICAgICAgIENHRm9udEdldEdseXBoc0ZvclVuaWNoYXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY2dG
b250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgewor
ICAgICAgICAgICAgVmVjdG9yPENHR2x5cGgsIDUxMj4gZ2x5cGhzMihidWZmZXJMZW5ndGgpOwor
ICAgICAgICAgICAgQ1RGb250R2V0R2x5cGhzRm9yQ2hhcmFjdGVycyhmb250LnBsYXRmb3JtRGF0
YSgpLmN0Rm9udCgpLCBidWZmZXIsIGdseXBoczIuZGF0YSgpLCBidWZmZXJMZW5ndGgpOworICAg
ICAgICAgICAgdW5zaWduZWQgZ2x5cGhTdGVwMiA9IGJ1ZmZlckxlbmd0aCAvIEdseXBoUGFnZTo6
c2l6ZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNp
emU7ICsraSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChnbHlwaHNbaV0gPT0gZ2x5cGhzMltp
ICogZ2x5cGhTdGVwMl0pOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGdseXBo
U3RlcCA9IDE7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQmVjYXVzZSB3ZSBrbm93IHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBzaG91bGRVc2VDb3JlVGV4dCgpLCBpZiB0aGUgZm9udCBpc24ndCBm
b3IgdGV4dCBjb21iaW5lIGFuZCBpdCBpc24ndCBhIHN5c3RlbSBmb250LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288445</attachid>
            <date>2016-09-09 15:41:09 -0700</date>
            <delta_ts>2016-09-09 15:47:42 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-161809-20160909153840.patch</filename>
            <type>text/plain</type>
            <size>10865</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjVmYWU2ZTQ1OWVjMjBkZmQ2MTdiM2VhZjAyZTYxZmYyZDNkYjE3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFu
Y2Ugb2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Yjk5NmZjYTgxZGNjYjYxZmE5YjRmYThmOWYzNDcwZDgx
OTI0NTM4Li4zNDk5MzVhNzhjNjQ5MDQ1ODFiNTRiNGZiMTIxZjY5MGU0YjQ0ZWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQ
YWdlOjpmaWxsKToKKwogMjAxNi0wOS0wOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgU29mdC1saW5rIEdhbWVDb250cm9sbGVyLmZyYW1ld29yay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaCBiL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaAppbmRleCAxZGMyNzk0ZjAyMTM4MGYxYTQ0
MzE5M2VkNzU2OWJjMzhiZGI1NmQ4Li45ZGJkYWE4YjhjYWFkOWFjZDMwYzNhNjE1YzQ3MzQ0N2Fk
Y2Q3MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVz
LmgKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCkBAIC03MCw2
ICs3MCw3IEBAIGNvbnN0IFVDaGFyIG1pbnVzU2lnbiA9IDB4MjIxMjsKIGNvbnN0IFVDaGFyIG5h
cnJvd05vbkJyZWFraW5nU3BhY2UgPSAweDIwMkY7CiBjb25zdCBVQ2hhciBuZXdsaW5lQ2hhcmFj
dGVyID0gMHgwMDBBOwogY29uc3QgVUNoYXIgbm9CcmVha1NwYWNlID0gMHgwMEEwOworY29uc3Qg
VUNoYXIgbmFycm93Tm9CcmVha1NwYWNlID0gMHgyMDJGOwogY29uc3QgVUNoYXIgb2JqZWN0UmVw
bGFjZW1lbnRDaGFyYWN0ZXIgPSAweEZGRkM7CiBjb25zdCBVQ2hhciBwb3BEaXJlY3Rpb25hbEZv
cm1hdHRpbmcgPSAweDIwMkM7CiBjb25zdCBVQ2hhciBwb3BEaXJlY3Rpb25hbElzb2xhdGUgPSAw
eDIwNjk7CkBAIC0xMzIsNiArMTMzLDcgQEAgdXNpbmcgV1RGOjpVbmljb2RlOjptaW51c1NpZ247
CiB1c2luZyBXVEY6OlVuaWNvZGU6Om5hcnJvd05vbkJyZWFraW5nU3BhY2U7CiB1c2luZyBXVEY6
OlVuaWNvZGU6Om5ld2xpbmVDaGFyYWN0ZXI7CiB1c2luZyBXVEY6OlVuaWNvZGU6Om5vQnJlYWtT
cGFjZTsKK3VzaW5nIFdURjo6VW5pY29kZTo6bmFycm93Tm9CcmVha1NwYWNlOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcjsKIHVzaW5nIFdURjo6VW5pY29k
ZTo6cG9wRGlyZWN0aW9uYWxGb3JtYXR0aW5nOwogdXNpbmcgV1RGOjpVbmljb2RlOjpwb3BEaXJl
Y3Rpb25hbElzb2xhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CmluZGV4IDQ4MzQwOTUyMzllMjIwMzczZWE0MTA4YWNhMzMxZDMxYTQ0NDAzNDYuLjZkMjRkMjBl
NWE2N2JkNzkyN2RiM2I4OGYyNTE5ZTIxMDQ1MWYzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xODcsNiArMTg3LDcgQEAgc3RhdGljIFJlZlB0cjxH
bHlwaFBhZ2U+IGNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UodW5zaWduZWQgcGFnZU51bWJlciwgY29u
c3QgRm9udCYKICAgICAgICAgb3ZlcndyaXRlQ29kZVBvaW50KCdcbicsIHNwYWNlKTsKICAgICAg
ICAgb3ZlcndyaXRlQ29kZVBvaW50KCdcdCcsIHNwYWNlKTsKICAgICAgICAgb3ZlcndyaXRlQ29k
ZVBvaW50KG5vQnJlYWtTcGFjZSwgc3BhY2UpOworICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQo
bmFycm93Tm9CcmVha1NwYWNlLCB6ZXJvV2lkdGhTcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0ZUNv
ZGVQb2ludChsZWZ0VG9SaWdodE1hcmssIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3Zlcndy
aXRlQ29kZVBvaW50KHJpZ2h0VG9MZWZ0TWFyaywgemVyb1dpZHRoU3BhY2UpOwogICAgICAgICBv
dmVyd3JpdGVDb2RlUG9pbnQobGVmdFRvUmlnaHRFbWJlZCwgemVyb1dpZHRoU3BhY2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDkxOGRjOTkwODdmOGIzNTBh
ZjJkMWI4ZDc3OWE0MDYzNGY5NTQyNTMuLmVlNGVlZGZjOTIxYTI0ZTk5ZDExNjI2ZWJlMmEwZjNj
YzcxNDc5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTEz
NCw2ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgd2lkdGhGb3JHbHlwaChHbHlwaCkgY29u
c3Q7CiAgICAgRmxvYXRSZWN0IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGgpIGNvbnN0Owog
ICAgIGZsb2F0IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7CisgICAgdm9pZCBw
bGF0Zm9ybVdpZHRoc0ZvckdseXBocyhDR0dseXBoKiwgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCog
cmVzdWx0KSBjb25zdDsKIAogICAgIGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBt
X3NwYWNlV2lkdGg7IH0KICAgICBmbG9hdCBhZGp1c3RlZFNwYWNlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX2FkanVzdGVkU3BhY2VXaWR0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCmluZGV4IGMwZGI0Y2M5ZGY1MjQ5Yzk5
MzFlMTIxMjA2NDE1YzNmNTZiNzM1ZjEuLjJiYTFiM2RiMzFkYWMzMmFkNjA2YTg1NmFhYjY4MDhh
OGJmMzI1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q29jb2EubW0KQEAgLTU5Niw3ICs1OTYsMjggQEAgRmxvYXRSZWN0IEZvbnQ6OnBs
YXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5k
aW5nQm94OwogfQogCi0jaWYgISgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKSkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKQordm9pZCBG
b250OjpwbGF0Zm9ybVdpZHRoc0ZvckdseXBocyhDR0dseXBoKiBnbHlwaHMsIHVuc2lnbmVkIGxl
bmd0aCwgZmxvYXQqIHJlc3VsdCkgY29uc3QKK3sKKyAgICBWZWN0b3I8Q0dTaXplPiBhZHZhbmNl
cyhsZW5ndGgsIENHU2l6ZVplcm8pOworICAgIGJvb2wgaG9yaXpvbnRhbCA9IHBsYXRmb3JtRGF0
YSgpLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbDsKKyAgICBDR0ZvbnRSZW5kZXJpbmdTdHls
ZSBzdHlsZSA9IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFudGlhbGlhc2luZyB8IGtDR0ZvbnRSZW5k
ZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJw
aXhlbFF1YW50aXphdGlvbiB8IGtDR0ZvbnRBbnRpYWxpYXNpbmdTdHlsZVVuZmlsdGVyZWQ7CisK
KyAgICBpZiAocGxhdGZvcm1EYXRhKCkuc2l6ZSgpKSB7CisgICAgICAgIENURm9udE9yaWVudGF0
aW9uIG9yaWVudGF0aW9uID0gaG9yaXpvbnRhbCB8fCBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJh
Y2sgPyBrQ1RGb250T3JpZW50YXRpb25Ib3Jpem9udGFsIDoga0NURm9udE9yaWVudGF0aW9uVmVy
dGljYWw7CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzcGVjaWFsLWNhc2luZyB3aGVu
IDxyZGFyOi8vcHJvYmxlbS8yODE5NzI5MT4gaXMgZml4ZWQuCisgICAgICAgIGlmIChDVEZvbnRJ
c0FwcGxlQ29sb3JFbW9qaShtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSkpCisgICAgICAgICAgICBD
VEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwgb3JpZW50
YXRpb24sIGdseXBocywgYWR2YW5jZXMuZGF0YSgpLCBsZW5ndGgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBDVEZvbnRHZXRVbnN1bW1lZEFkdmFuY2VzRm9yR2x5cGhzQW5kU3R5bGUobV9w
bGF0Zm9ybURhdGEuY3RGb250KCksIG9yaWVudGF0aW9uLCBzdHlsZSwgZ2x5cGhzLCBhZHZhbmNl
cy5kYXRhKCksIGxlbmd0aCk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHRbaV0gPSBhZHZhbmNlc1tpXS53aWR0aCArIG1f
c3ludGhldGljQm9sZE9mZnNldDsKK30KKworI2Vsc2UKKwogc3RhdGljIGlubGluZSBPcHRpb25h
bDxDR1NpemU+IGFkdmFuY2VGb3JDb2xvckJpdG1hcEZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgcGxhdGZvcm1EYXRhLCBHbHlwaCBnbHlwaCkKIHsKICAgICBDVEZvbnRSZWYgZm9udCA9IHBs
YXRmb3JtRGF0YS5mb250KCk7CkBAIC02MjIsMjIgKzY0MywxNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgY2FuVXNlRmFzdEdseXBoQWR2YW5jZUdldHRlcihjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybQogCiBmbG9hdCBGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgp
IGNvbnN0CiB7Ci0gICAgQ0dTaXplIGFkdmFuY2UgPSBDR1NpemVaZXJvOwotICAgIGJvb2wgaG9y
aXpvbnRhbCA9IHBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbDsKLSAg
ICBDR0ZvbnRSZW5kZXJpbmdTdHlsZSBzdHlsZSA9IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFudGlh
bGlhc2luZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgfCBrQ0dG
b250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbiB8IGtDR0ZvbnRBbnRpYWxpYXNp
bmdTdHlsZVVuZmlsdGVyZWQ7Ci0KICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKQotICAgIGlmIChwbGF0Zm9ybURh
dGEoKS5zaXplKCkpIHsKLSAgICAgICAgQ1RGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBo
b3Jpem9udGFsIHx8IG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjayA/IGtDVEZvbnRPcmllbnRh
dGlvbkhvcml6b250YWwgOiBrQ1RGb250T3JpZW50YXRpb25WZXJ0aWNhbDsKLSAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpYWwtY2FzaW5nIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzI4
MTk3MjkxPiBpcyBmaXhlZC4KLSAgICAgICAgaWYgKENURm9udElzQXBwbGVDb2xvckVtb2ppKG1f
cGxhdGZvcm1EYXRhLmN0Rm9udCgpKSkKLSAgICAgICAgICAgIENURm9udEdldEFkdmFuY2VzRm9y
R2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBvcmllbnRhdGlvbiwgJmdseXBoLCAmYWR2
YW5jZSwgMSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIENURm9udEdldFVuc3VtbWVkQWR2
YW5jZXNGb3JHbHlwaHNBbmRTdHlsZShtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwgb3JpZW50YXRp
b24sIHN0eWxlLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKLSAgICB9CisgICAgZmxvYXQgcmVzdWx0
OworICAgIHBsYXRmb3JtV2lkdGhzRm9yR2x5cGhzKCZnbHlwaCwgMSwgJnJlc3VsdCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKIAogI2Vsc2UKIAorICAgIENHU2l6ZSBhZHZhbmNlID0gQ0dTaXplWmVy
bzsKKyAgICBib29sIGhvcml6b250YWwgPSBwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWw7CisgICAgQ0dGb250UmVuZGVyaW5nU3R5bGUgc3R5bGUgPSBrQ0dGb250UmVu
ZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFBv
c2l0aW9uaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxRdWFudGl6YXRpb24gfCBr
Q0dGb250QW50aWFsaWFzaW5nU3R5bGVVbmZpbHRlcmVkOworCiAgICAgYm9vbCBwb3B1bGF0ZWRB
ZHZhbmNlID0gZmFsc2U7CiAgICAgaWYgKChob3Jpem9udGFsIHx8IG1faXNCcm9rZW5JZGVvZ3Jh
cGhGYWxsYmFjaykgJiYgY2FuVXNlRmFzdEdseXBoQWR2YW5jZUdldHRlcih0aGlzLT5wbGF0Zm9y
bURhdGEoKSwgZ2x5cGgsIGFkdmFuY2UsIHBvcHVsYXRlZEFkdmFuY2UpKSB7CiAgICAgICAgIGZs
b2F0IHBvaW50U2l6ZSA9IHBsYXRmb3JtRGF0YSgpLnNpemUoKTsKQEAgLTY0OSw5ICs2NjUsOSBA
QCBmbG9hdCBGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFwb3B1bGF0ZWRBZHZhbmNlICYmIHBsYXRmb3JtRGF0
YSgpLnNpemUoKSkKICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMobV9wbGF0Zm9y
bURhdGEuY3RGb250KCksIGhvcml6b250YWwgPyBrQ1RGb250T3JpZW50YXRpb25Ib3Jpem9udGFs
IDoga0NURm9udE9yaWVudGF0aW9uVmVydGljYWwsICZnbHlwaCwgJmFkdmFuY2UsIDEpOwotI2Vu
ZGlmCiAKICAgICByZXR1cm4gYWR2YW5jZS53aWR0aCArIG1fc3ludGhldGljQm9sZE9mZnNldDsK
KyNlbmRpZgogfQogCiBzdHJ1Y3QgUHJvdmlkZXJJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKaW5kZXggZjM5Yzhk
YzA1OWY1Mjg2NmEyNjY5OWM3NDRjMDc0ZjE0NzFjMzhjMS4uZTQ3MDA0NzQ5ZTlmYzRjNTg5N2Yz
ZDMwYTY1MDhlMzZkMGIxY2FiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAKQEAgLTU4LDYgKzU4LDE3IEBAIHN0YXRp
YyBib29sIHNob3VsZFVzZUNvcmVUZXh0KGNvbnN0IFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1
ZmZlckxlbmd0aCwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBib29sIHNo
b3VsZEZpbGxXaXRoVmVydGljYWxHbHlwaHMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
YnVmZmVyTGVuZ3RoLCBjb25zdCBGb250JiBmb250KQoreworICAgIGlmICghZm9udC5oYXNWZXJ0
aWNhbEdseXBocygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGJ1ZmZlckxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghRm9udENhc2NhZGU6
OmlzQ0pLSWRlb2dyYXBoKGJ1ZmZlcltpXSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEdseXBoUGFnZTo6ZmlsbChVQ2hhciog
YnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpCiB7CiAgICAgQVNTRVJUKGJ1ZmZlckxlbmd0
aCA9PSBHbHlwaFBhZ2U6OnNpemUgfHwgYnVmZmVyTGVuZ3RoID09IDIgKiBHbHlwaFBhZ2U6OnNp
emUpOwpAQCAtNjUsNiArNzYsMTQgQEAgYm9vbCBHbHlwaFBhZ2U6OmZpbGwoVUNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKQogICAgIGNvbnN0IEZvbnQmIGZvbnQgPSB0aGlzLT5m
b250KCk7CiAgICAgVmVjdG9yPENHR2x5cGgsIDUxMj4gZ2x5cGhzKGJ1ZmZlckxlbmd0aCk7CiAg
ICAgdW5zaWduZWQgZ2x5cGhTdGVwOworCisgICAgVmVjdG9yPENHR2x5cGgsIDUxMj4gZ2x5cGhz
MihidWZmZXJMZW5ndGgpOworICAgIGlmIChzaG91bGRGaWxsV2l0aFZlcnRpY2FsR2x5cGhzKGJ1
ZmZlciwgYnVmZmVyTGVuZ3RoLCBmb250KSkKKyAgICAgICAgQ1RGb250R2V0VmVydGljYWxHbHlw
aHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RGb250KCksIGJ1ZmZlciwgZ2x5
cGhzMi5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAgZWxzZQorICAgICAgICBDVEZvbnRHZXRH
bHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RGb250KCksIGJ1ZmZlciwg
Z2x5cGhzMi5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAgdW5zaWduZWQgZ2x5cGhTdGVwMiA9
IGJ1ZmZlckxlbmd0aCAvIEdseXBoUGFnZTo6c2l6ZTsKKwogICAgIGlmICghc2hvdWxkVXNlQ29y
ZVRleHQoYnVmZmVyLCBidWZmZXJMZW5ndGgsIGZvbnQpKSB7CiAgICAgICAgIC8vIFdlIHBhc3Mg
aW4gZWl0aGVyIDI1NiBvciA1MTIgVVRGLTE2IGNoYXJhY3RlcnM6IDI1NiBmb3IgVStGRkZGIGFu
ZCBsZXNzLCA1MTIgKGRvdWJsZSBjaGFyYWN0ZXIgc3Vycm9nYXRlcykKICAgICAgICAgLy8gZm9y
IFUrMTAwMDAgYW5kIGFib3ZlLiBJdCBpcyBpbmRlZWQgcG9zc2libGUgdG8gZ2V0IGJhY2sgNTEy
IGdseXBocyBiYWNrIGZyb20gdGhlIEFQSSwgc28gdGhlIGdseXBoIGJ1ZmZlcgpAQCAtODUsNiAr
MTA0LDIyIEBAIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1
ZmZlckxlbmd0aCkKICAgICAgICAgZ2x5cGhTdGVwID0gYnVmZmVyTGVuZ3RoIC8gR2x5cGhQYWdl
OjpzaXplOwogICAgIH0KIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6
OnNpemU7ICsraSkgeworICAgICAgICBBU1NFUlQoZ2x5cGhzW2kgKiBnbHlwaFN0ZXBdID09IGds
eXBoczJbaSAqIGdseXBoU3RlcDJdKTsKKyAgICB9CisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKQorICAgIFZl
Y3RvcjxDR0dseXBoPiBjb21wcmVzc2VkR2x5cGhzOworICAgIGNvbXByZXNzZWRHbHlwaHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShHbHlwaFBhZ2U6OnNpemUpOworICAgIGlmIChnbHlwaFN0ZXAy
ID09IDIpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdseXBoUGFnZTo6c2l6
ZTsgKytpKQorICAgICAgICAgICAgY29tcHJlc3NlZEdseXBocy5hcHBlbmQoZ2x5cGhzW2kgKiBn
bHlwaFN0ZXBdKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUKGdseXBoU3RlcDIgPT0gMSk7
CisgICAgVmVjdG9yPGZsb2F0PiBhZHZhbmNlcyhHbHlwaFBhZ2U6OnNpemUsIDAuZik7CisgICAg
Zm9udC5wbGF0Zm9ybVdpZHRoc0ZvckdseXBocyhjb21wcmVzc2VkR2x5cGhzLnNpemUoKSA/IGNv
bXByZXNzZWRHbHlwaHMuZGF0YSgpIDogZ2x5cGhzLmRhdGEoKSwgR2x5cGhQYWdlOjpzaXplLCBh
ZHZhbmNlcy5kYXRhKCkpOworI2VuZGlmCisKICAgICBib29sIGhhdmVHbHlwaHMgPSBmYWxzZTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR2x5cGhQYWdlOjpzaXplOyArK2kpIHsKICAg
ICAgICAgaWYgKGdseXBoc1tpICogZ2x5cGhTdGVwXSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288446</attachid>
            <date>2016-09-09 15:47:46 -0700</date>
            <delta_ts>2016-09-09 18:40:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-161809-20160909154518.patch</filename>
            <type>text/plain</type>
            <size>10892</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjVmYWU2ZTQ1OWVjMjBkZmQ2MTdiM2VhZjAyZTYxZmYyZDNkYjE3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFu
Y2Ugb2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Yjk5NmZjYTgxZGNjYjYxZmE5YjRmYThmOWYzNDcwZDgx
OTI0NTM4Li4zNDk5MzVhNzhjNjQ5MDQ1ODFiNTRiNGZiMTIxZjY5MGU0YjQ0ZWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQ
YWdlOjpmaWxsKToKKwogMjAxNi0wOS0wOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgU29mdC1saW5rIEdhbWVDb250cm9sbGVyLmZyYW1ld29yay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaCBiL1NvdXJjZS9X
VEYvd3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaAppbmRleCAxZGMyNzk0ZjAyMTM4MGYxYTQ0
MzE5M2VkNzU2OWJjMzhiZGI1NmQ4Li45ZGJkYWE4YjhjYWFkOWFjZDMwYzNhNjE1YzQ3MzQ0N2Fk
Y2Q3MGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVz
LmgKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCkBAIC03MCw2
ICs3MCw3IEBAIGNvbnN0IFVDaGFyIG1pbnVzU2lnbiA9IDB4MjIxMjsKIGNvbnN0IFVDaGFyIG5h
cnJvd05vbkJyZWFraW5nU3BhY2UgPSAweDIwMkY7CiBjb25zdCBVQ2hhciBuZXdsaW5lQ2hhcmFj
dGVyID0gMHgwMDBBOwogY29uc3QgVUNoYXIgbm9CcmVha1NwYWNlID0gMHgwMEEwOworY29uc3Qg
VUNoYXIgbmFycm93Tm9CcmVha1NwYWNlID0gMHgyMDJGOwogY29uc3QgVUNoYXIgb2JqZWN0UmVw
bGFjZW1lbnRDaGFyYWN0ZXIgPSAweEZGRkM7CiBjb25zdCBVQ2hhciBwb3BEaXJlY3Rpb25hbEZv
cm1hdHRpbmcgPSAweDIwMkM7CiBjb25zdCBVQ2hhciBwb3BEaXJlY3Rpb25hbElzb2xhdGUgPSAw
eDIwNjk7CkBAIC0xMzIsNiArMTMzLDcgQEAgdXNpbmcgV1RGOjpVbmljb2RlOjptaW51c1NpZ247
CiB1c2luZyBXVEY6OlVuaWNvZGU6Om5hcnJvd05vbkJyZWFraW5nU3BhY2U7CiB1c2luZyBXVEY6
OlVuaWNvZGU6Om5ld2xpbmVDaGFyYWN0ZXI7CiB1c2luZyBXVEY6OlVuaWNvZGU6Om5vQnJlYWtT
cGFjZTsKK3VzaW5nIFdURjo6VW5pY29kZTo6bmFycm93Tm9CcmVha1NwYWNlOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlcjsKIHVzaW5nIFdURjo6VW5pY29k
ZTo6cG9wRGlyZWN0aW9uYWxGb3JtYXR0aW5nOwogdXNpbmcgV1RGOjpVbmljb2RlOjpwb3BEaXJl
Y3Rpb25hbElzb2xhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CmluZGV4IDQ4MzQwOTUyMzllMjIwMzczZWE0MTA4YWNhMzMxZDMxYTQ0NDAzNDYuLjZkMjRkMjBl
NWE2N2JkNzkyN2RiM2I4OGYyNTE5ZTIxMDQ1MWYzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xODcsNiArMTg3LDcgQEAgc3RhdGljIFJlZlB0cjxH
bHlwaFBhZ2U+IGNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UodW5zaWduZWQgcGFnZU51bWJlciwgY29u
c3QgRm9udCYKICAgICAgICAgb3ZlcndyaXRlQ29kZVBvaW50KCdcbicsIHNwYWNlKTsKICAgICAg
ICAgb3ZlcndyaXRlQ29kZVBvaW50KCdcdCcsIHNwYWNlKTsKICAgICAgICAgb3ZlcndyaXRlQ29k
ZVBvaW50KG5vQnJlYWtTcGFjZSwgc3BhY2UpOworICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQo
bmFycm93Tm9CcmVha1NwYWNlLCB6ZXJvV2lkdGhTcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0ZUNv
ZGVQb2ludChsZWZ0VG9SaWdodE1hcmssIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3Zlcndy
aXRlQ29kZVBvaW50KHJpZ2h0VG9MZWZ0TWFyaywgemVyb1dpZHRoU3BhY2UpOwogICAgICAgICBv
dmVyd3JpdGVDb2RlUG9pbnQobGVmdFRvUmlnaHRFbWJlZCwgemVyb1dpZHRoU3BhY2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDkxOGRjOTkwODdmOGIzNTBh
ZjJkMWI4ZDc3OWE0MDYzNGY5NTQyNTMuLjg0NDk4MWE3YzdjODQxODgzY2U0OGY1YmJjMDZhMGNh
NjhkYWIzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTEz
NCw2ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgd2lkdGhGb3JHbHlwaChHbHlwaCkgY29u
c3Q7CiAgICAgRmxvYXRSZWN0IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGgpIGNvbnN0Owog
ICAgIGZsb2F0IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7CisgICAgdm9pZCBw
bGF0Zm9ybVdpZHRoc0ZvckdseXBocyhHbHlwaCosIHVuc2lnbmVkIGxlbmd0aCwgZmxvYXQqIHJl
c3VsdCkgY29uc3Q7CiAKICAgICBmbG9hdCBzcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9z
cGFjZVdpZHRoOyB9CiAgICAgZmxvYXQgYWRqdXN0ZWRTcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV9hZGp1c3RlZFNwYWNlV2lkdGg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQppbmRleCBjMGRiNGNjOWRmNTI0OWM5OTMx
ZTEyMTIwNjQxNWMzZjU2YjczNWYxLi4zMTM2MGIxOWYxM2Q2MzMzODc1NThmOGEzZWUwMTEyZTVm
NTJhNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tCkBAIC01OTYsNyArNTk2LDI4IEBAIEZsb2F0UmVjdCBGb250OjpwbGF0
Zm9ybUJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIHJldHVybiBib3VuZGlu
Z0JveDsKIH0KIAotI2lmICEoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkKK3ZvaWQgRm9u
dDo6cGxhdGZvcm1XaWR0aHNGb3JHbHlwaHMoR2x5cGgqIGdseXBocywgdW5zaWduZWQgbGVuZ3Ro
LCBmbG9hdCogcmVzdWx0KSBjb25zdAoreworICAgIFZlY3RvcjxDR1NpemU+IGFkdmFuY2VzKGxl
bmd0aCwgQ0dTaXplWmVybyk7CisgICAgYm9vbCBob3Jpem9udGFsID0gcGxhdGZvcm1EYXRhKCku
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsOworICAgIENHRm9udFJlbmRlcmluZ1N0eWxlIHN0
eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRlcmlu
Z1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVs
UXVhbnRpemF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsKKworICAg
IGlmIChwbGF0Zm9ybURhdGEoKS5zaXplKCkpIHsKKyAgICAgICAgQ1RGb250T3JpZW50YXRpb24g
b3JpZW50YXRpb24gPSBob3Jpem9udGFsIHx8IG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjayA/
IGtDVEZvbnRPcmllbnRhdGlvbkhvcml6b250YWwgOiBrQ1RGb250T3JpZW50YXRpb25WZXJ0aWNh
bDsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpYWwtY2FzaW5nIHdoZW4gPHJk
YXI6Ly9wcm9ibGVtLzI4MTk3MjkxPiBpcyBmaXhlZC4KKyAgICAgICAgaWYgKENURm9udElzQXBw
bGVDb2xvckVtb2ppKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpKSkKKyAgICAgICAgICAgIENURm9u
dEdldEFkdmFuY2VzRm9yR2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBvcmllbnRhdGlv
biwgZ2x5cGhzLCBhZHZhbmNlcy5kYXRhKCksIGxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIENURm9udEdldFVuc3VtbWVkQWR2YW5jZXNGb3JHbHlwaHNBbmRTdHlsZShtX3BsYXRm
b3JtRGF0YS5jdEZvbnQoKSwgb3JpZW50YXRpb24sIHN0eWxlLCBnbHlwaHMsIGFkdmFuY2VzLmRh
dGEoKSwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpCisgICAgICAgIHJlc3VsdFtpXSA9IGFkdmFuY2VzW2ldLndpZHRoICsgbV9zeW50
aGV0aWNCb2xkT2Zmc2V0OworfQorCisjZWxzZQorCiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPENH
U2l6ZT4gYWR2YW5jZUZvckNvbG9yQml0bWFwRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEsIEdseXBoIGdseXBoKQogewogICAgIENURm9udFJlZiBmb250ID0gcGxhdGZv
cm1EYXRhLmZvbnQoKTsKQEAgLTYyMiwyMiArNjQzLDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBj
YW5Vc2VGYXN0R2x5cGhBZHZhbmNlR2V0dGVyKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtCiAKIGZsb2F0IEZvbnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29u
c3QKIHsKLSAgICBDR1NpemUgYWR2YW5jZSA9IENHU2l6ZVplcm87Ci0gICAgYm9vbCBob3Jpem9u
dGFsID0gcGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsOwotICAgIENH
Rm9udFJlbmRlcmluZ1N0eWxlIHN0eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFz
aW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRS
ZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVhbnRpemF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0
eWxlVW5maWx0ZXJlZDsKLQogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDAwMDApCi0gICAgaWYgKHBsYXRmb3JtRGF0YSgp
LnNpemUoKSkgewotICAgICAgICBDVEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGhvcml6
b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNrID8ga0NURm9udE9yaWVudGF0aW9u
SG9yaXpvbnRhbCA6IGtDVEZvbnRPcmllbnRhdGlvblZlcnRpY2FsOwotICAgICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgc3BlY2lhbC1jYXNpbmcgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjgxOTcy
OTE+IGlzIGZpeGVkLgotICAgICAgICBpZiAoQ1RGb250SXNBcHBsZUNvbG9yRW1vamkobV9wbGF0
Zm9ybURhdGEuY3RGb250KCkpKQotICAgICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlw
aHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIG9yaWVudGF0aW9uLCAmZ2x5cGgsICZhZHZhbmNl
LCAxKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQ1RGb250R2V0VW5zdW1tZWRBZHZhbmNl
c0ZvckdseXBoc0FuZFN0eWxlKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBvcmllbnRhdGlvbiwg
c3R5bGUsICZnbHlwaCwgJmFkdmFuY2UsIDEpOwotICAgIH0KKyAgICBmbG9hdCByZXN1bHQ7Cisg
ICAgcGxhdGZvcm1XaWR0aHNGb3JHbHlwaHMoJmdseXBoLCAxLCAmcmVzdWx0KTsKKyAgICByZXR1
cm4gcmVzdWx0OwogCiAjZWxzZQogCisgICAgQ0dTaXplIGFkdmFuY2UgPSBDR1NpemVaZXJvOwor
ICAgIGJvb2wgaG9yaXpvbnRhbCA9IHBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbDsKKyAgICBDR0ZvbnRSZW5kZXJpbmdTdHlsZSBzdHlsZSA9IGtDR0ZvbnRSZW5kZXJp
bmdTdHlsZUFudGlhbGlhc2luZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRp
b25pbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbiB8IGtDR0Zv
bnRBbnRpYWxpYXNpbmdTdHlsZVVuZmlsdGVyZWQ7CisKICAgICBib29sIHBvcHVsYXRlZEFkdmFu
Y2UgPSBmYWxzZTsKICAgICBpZiAoKGhvcml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZh
bGxiYWNrKSAmJiBjYW5Vc2VGYXN0R2x5cGhBZHZhbmNlR2V0dGVyKHRoaXMtPnBsYXRmb3JtRGF0
YSgpLCBnbHlwaCwgYWR2YW5jZSwgcG9wdWxhdGVkQWR2YW5jZSkpIHsKICAgICAgICAgZmxvYXQg
cG9pbnRTaXplID0gcGxhdGZvcm1EYXRhKCkuc2l6ZSgpOwpAQCAtNjQ5LDkgKzY2NSw5IEBAIGZs
b2F0IEZvbnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAoIXBvcHVsYXRlZEFkdmFuY2UgJiYgcGxhdGZvcm1EYXRhKCku
c2l6ZSgpKQogICAgICAgICBDVEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0
YS5jdEZvbnQoKSwgaG9yaXpvbnRhbCA/IGtDVEZvbnRPcmllbnRhdGlvbkhvcml6b250YWwgOiBr
Q1RGb250T3JpZW50YXRpb25WZXJ0aWNhbCwgJmdseXBoLCAmYWR2YW5jZSwgMSk7Ci0jZW5kaWYK
IAogICAgIHJldHVybiBhZHZhbmNlLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworI2Vu
ZGlmCiB9CiAKIHN0cnVjdCBQcm92aWRlckluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQYWdlTWFjLmNwcAppbmRleCBmMzljOGRjMDU5
ZjUyODY2YTI2Njk5Yzc0NGMwNzRmMTQ3MWMzOGMxLi43NWFkYmIxN2YzMTk0MWJjNmRmNjYwNzZm
NDEzYTEyMTlhMmM0ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR2x5cGhQYWdlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR2x5cGhQYWdlTWFjLmNwcApAQCAtNTgsNiArNTgsMTcgQEAgc3RhdGljIGJv
b2wgc2hvdWxkVXNlQ29yZVRleHQoY29uc3QgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVy
TGVuZ3RoLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxk
RmlsbFdpdGhWZXJ0aWNhbEdseXBocyhjb25zdCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZm
ZXJMZW5ndGgsIGNvbnN0IEZvbnQmIGZvbnQpCit7CisgICAgaWYgKCFmb250Lmhhc1ZlcnRpY2Fs
R2x5cGhzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYnVmZmVyTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFGb250Q2FzY2FkZTo6aXND
SktJZGVvZ3JhcGgoYnVmZmVyW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZm
ZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKIHsKICAgICBBU1NFUlQoYnVmZmVyTGVuZ3RoID09
IEdseXBoUGFnZTo6c2l6ZSB8fCBidWZmZXJMZW5ndGggPT0gMiAqIEdseXBoUGFnZTo6c2l6ZSk7
CkBAIC02NSw2ICs3NiwxNSBAQCBib29sIEdseXBoUGFnZTo6ZmlsbChVQ2hhciogYnVmZmVyLCB1
bnNpZ25lZCBidWZmZXJMZW5ndGgpCiAgICAgY29uc3QgRm9udCYgZm9udCA9IHRoaXMtPmZvbnQo
KTsKICAgICBWZWN0b3I8Q0dHbHlwaCwgNTEyPiBnbHlwaHMoYnVmZmVyTGVuZ3RoKTsKICAgICB1
bnNpZ25lZCBnbHlwaFN0ZXA7CisKKyAgICBWZWN0b3I8Q0dHbHlwaCwgNTEyPiBnbHlwaHMyKGJ1
ZmZlckxlbmd0aCk7CisgICAgaWYgKHNob3VsZEZpbGxXaXRoVmVydGljYWxHbHlwaHMoYnVmZmVy
LCBidWZmZXJMZW5ndGgsIGZvbnQpKQorICAgICAgICBDVEZvbnRHZXRWZXJ0aWNhbEdseXBoc0Zv
ckNoYXJhY3RlcnMoZm9udC5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgYnVmZmVyLCBnbHlwaHMy
LmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIENURm9udEdldEdseXBo
c0ZvckNoYXJhY3RlcnMoZm9udC5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgYnVmZmVyLCBnbHlw
aHMyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBnbHlwaFN0ZXAyID0gYnVm
ZmVyTGVuZ3RoIC8gR2x5cGhQYWdlOjpzaXplOworICAgIFVOVVNFRF9QQVJBTShnbHlwaFN0ZXAy
KTsKKwogICAgIGlmICghc2hvdWxkVXNlQ29yZVRleHQoYnVmZmVyLCBidWZmZXJMZW5ndGgsIGZv
bnQpKSB7CiAgICAgICAgIC8vIFdlIHBhc3MgaW4gZWl0aGVyIDI1NiBvciA1MTIgVVRGLTE2IGNo
YXJhY3RlcnM6IDI1NiBmb3IgVStGRkZGIGFuZCBsZXNzLCA1MTIgKGRvdWJsZSBjaGFyYWN0ZXIg
c3Vycm9nYXRlcykKICAgICAgICAgLy8gZm9yIFUrMTAwMDAgYW5kIGFib3ZlLiBJdCBpcyBpbmRl
ZWQgcG9zc2libGUgdG8gZ2V0IGJhY2sgNTEyIGdseXBocyBiYWNrIGZyb20gdGhlIEFQSSwgc28g
dGhlIGdseXBoIGJ1ZmZlcgpAQCAtODUsNiArMTA1LDIyIEBAIGJvb2wgR2x5cGhQYWdlOjpmaWxs
KFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKICAgICAgICAgZ2x5cGhTdGVw
ID0gYnVmZmVyTGVuZ3RoIC8gR2x5cGhQYWdlOjpzaXplOwogICAgIH0KIAorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNpemU7ICsraSkgeworICAgICAgICBBU1NFUlQo
Z2x5cGhzW2kgKiBnbHlwaFN0ZXBdID09IGdseXBoczJbaSAqIGdseXBoU3RlcDJdKTsKKyAgICB9
CisKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAwMDAwKQorICAgIFZlY3RvcjxDR0dseXBoPiBjb21wcmVzc2VkR2x5cGhz
OworICAgIGNvbXByZXNzZWRHbHlwaHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShHbHlwaFBhZ2U6
OnNpemUpOworICAgIGlmIChnbHlwaFN0ZXAyID09IDIpIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IEdseXBoUGFnZTo6c2l6ZTsgKytpKQorICAgICAgICAgICAgY29tcHJlc3Nl
ZEdseXBocy5hcHBlbmQoZ2x5cGhzW2kgKiBnbHlwaFN0ZXBdKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgQVNTRVJUKGdseXBoU3RlcDIgPT0gMSk7CisgICAgVmVjdG9yPGZsb2F0PiBhZHZhbmNlcyhH
bHlwaFBhZ2U6OnNpemUsIDAuZik7CisgICAgZm9udC5wbGF0Zm9ybVdpZHRoc0ZvckdseXBocyhj
b21wcmVzc2VkR2x5cGhzLnNpemUoKSA/IGNvbXByZXNzZWRHbHlwaHMuZGF0YSgpIDogZ2x5cGhz
LmRhdGEoKSwgR2x5cGhQYWdlOjpzaXplLCBhZHZhbmNlcy5kYXRhKCkpOworI2VuZGlmCisKICAg
ICBib29sIGhhdmVHbHlwaHMgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
R2x5cGhQYWdlOjpzaXplOyArK2kpIHsKICAgICAgICAgaWYgKGdseXBoc1tpICogZ2x5cGhTdGVw
XSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288470</attachid>
            <date>2016-09-09 18:40:42 -0700</date>
            <delta_ts>2016-09-10 12:14:45 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-161809-20160909183820.patch</filename>
            <type>text/plain</type>
            <size>16376</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjVmYWU2ZTQ1OWVjMjBkZmQ2MTdiM2VhZjAyZTYxZmYyZDNkYjE3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFu
Y2Ugb2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2Y0NjliYTk4YTFjYjU2YmJhZTA4NmFkNTI1NWNmYzMw
NzE5NTUwLi4wMDUwZmUzZDI2MzNmZGVhMmM3NzA3MjI2YjM1NDlhMDFjZDNiYzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQ
YWdlOjpmaWxsKToKKworMjAxNi0wOS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgorCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbWVtYmVyIG9mIEdseXBoQnVmZmVy
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4MTQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oIGIv
U291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCmluZGV4IDFkYzI3OTRmMDIx
MzgwZjFhNDQzMTkzZWQ3NTY5YmMzOGJkYjU2ZDguLjlkYmRhYThiOGNhYWQ5YWNkMzBjM2E2MTVj
NDczNDQ3YWRjZDcwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgK
QEAgLTcwLDYgKzcwLDcgQEAgY29uc3QgVUNoYXIgbWludXNTaWduID0gMHgyMjEyOwogY29uc3Qg
VUNoYXIgbmFycm93Tm9uQnJlYWtpbmdTcGFjZSA9IDB4MjAyRjsKIGNvbnN0IFVDaGFyIG5ld2xp
bmVDaGFyYWN0ZXIgPSAweDAwMEE7CiBjb25zdCBVQ2hhciBub0JyZWFrU3BhY2UgPSAweDAwQTA7
Citjb25zdCBVQ2hhciBuYXJyb3dOb0JyZWFrU3BhY2UgPSAweDIwMkY7CiBjb25zdCBVQ2hhciBv
YmplY3RSZXBsYWNlbWVudENoYXJhY3RlciA9IDB4RkZGQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVj
dGlvbmFsRm9ybWF0dGluZyA9IDB4MjAyQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVjdGlvbmFsSXNv
bGF0ZSA9IDB4MjA2OTsKQEAgLTEzMiw2ICsxMzMsNyBAQCB1c2luZyBXVEY6OlVuaWNvZGU6Om1p
bnVzU2lnbjsKIHVzaW5nIFdURjo6VW5pY29kZTo6bmFycm93Tm9uQnJlYWtpbmdTcGFjZTsKIHVz
aW5nIFdURjo6VW5pY29kZTo6bmV3bGluZUNoYXJhY3RlcjsKIHVzaW5nIFdURjo6VW5pY29kZTo6
bm9CcmVha1NwYWNlOwordXNpbmcgV1RGOjpVbmljb2RlOjpuYXJyb3dOb0JyZWFrU3BhY2U7CiB1
c2luZyBXVEY6OlVuaWNvZGU6Om9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpwb3BEaXJlY3Rpb25hbEZvcm1hdHRpbmc7CiB1c2luZyBXVEY6OlVuaWNvZGU6
OnBvcERpcmVjdGlvbmFsSXNvbGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKaW5kZXggNDgzNDA5NTIzOWUyMjAzNzNlYTQxMDhhY2EzMzFkMzFhNDQ0MDM0Ni4u
NmQyNGQyMGU1YTY3YmQ3OTI3ZGIzYjg4ZjI1MTllMjEwNDUxZjNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTE4Nyw2ICsxODcsNyBAQCBzdGF0aWMg
UmVmUHRyPEdseXBoUGFnZT4gY3JlYXRlQW5kRmlsbEdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVt
YmVyLCBjb25zdCBGb250JgogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1xuJywgc3BhY2Up
OwogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1x0Jywgc3BhY2UpOwogICAgICAgICBvdmVy
d3JpdGVDb2RlUG9pbnQobm9CcmVha1NwYWNlLCBzcGFjZSk7CisgICAgICAgIG92ZXJ3cml0ZUNv
ZGVQb2ludChuYXJyb3dOb0JyZWFrU3BhY2UsIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3Zl
cndyaXRlQ29kZVBvaW50KGxlZnRUb1JpZ2h0TWFyaywgemVyb1dpZHRoU3BhY2UpOwogICAgICAg
ICBvdmVyd3JpdGVDb2RlUG9pbnQocmlnaHRUb0xlZnRNYXJrLCB6ZXJvV2lkdGhTcGFjZSk7CiAg
ICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludChsZWZ0VG9SaWdodEVtYmVkLCB6ZXJvV2lkdGhTcGFj
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOTE4ZGM5OTA4
N2Y4YjM1MGFmMmQxYjhkNzc5YTQwNjM0Zjk1NDI1My4uODQ0OTgxYTdjN2M4NDE4ODNjZTQ4ZjVi
YmMwNmEwY2E2OGRhYjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCB3aWR0aEZvckdseXBoKEds
eXBoKSBjb25zdDsKICAgICBGbG9hdFJlY3QgcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlwaCkg
Y29uc3Q7CiAgICAgZmxvYXQgcGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoKSBjb25zdDsKKyAg
ICB2b2lkIHBsYXRmb3JtV2lkdGhzRm9yR2x5cGhzKEdseXBoKiwgdW5zaWduZWQgbGVuZ3RoLCBm
bG9hdCogcmVzdWx0KSBjb25zdDsKIAogICAgIGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3NwYWNlV2lkdGg7IH0KICAgICBmbG9hdCBhZGp1c3RlZFNwYWNlV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX2FkanVzdGVkU3BhY2VXaWR0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaAppbmRleCBhMWE1OTQ0ZmQ2MmY4ZTg0ZTBmNDBlNzdh
N2Y2YzM1NWM2NDA0ZGU0Li42ODcyODRkYWQ4OTQ1ZTNjZmRjMzkxYzEyYjcyOTJlZjkyODQ0OWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaApAQCAt
MzEsMTAgKzMxLDEyIEBACiAjZGVmaW5lIEdseXBoUGFnZV9oCiAKICNpbmNsdWRlICJHbHlwaC5o
IgotI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHVuaWNv
ZGUvdXR5cGVzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDkgKzQ1LDEwIEBAIGNsYXNzIEZvbnQ7
CiAvLyBIb2xkcyB0aGUgZ2x5cGggaW5kZXggYW5kIHRoZSBjb3JyZXNwb25kaW5nIEZvbnQgaW5m
b3JtYXRpb24gZm9yIGEgZ2l2ZW4KIC8vIGNoYXJhY3Rlci4KIHN0cnVjdCBHbHlwaERhdGEgewot
ICAgIEdseXBoRGF0YShHbHlwaCBnID0gMCwgY29uc3QgRm9udCogZiA9IDApCi0gICAgICAgIDog
Z2x5cGgoZykKLSAgICAgICAgLCBmb250KGYpCisgICAgR2x5cGhEYXRhKEdseXBoIGdseXBoID0g
MCwgY29uc3QgRm9udCogZm9udCA9IDAsIE9wdGlvbmFsPGZsb2F0PiBhZHZhbmNlID0gTnVsbG9w
dCkKKyAgICAgICAgOiBnbHlwaChnbHlwaCkKKyAgICAgICAgLCBmb250KGZvbnQpCisgICAgICAg
ICwgYWR2YW5jZShhZHZhbmNlKQogICAgIHsKICAgICB9CiAKQEAgLTUzLDYgKzU2LDcgQEAgc3Ry
dWN0IEdseXBoRGF0YSB7CiAKICAgICBHbHlwaCBnbHlwaDsKICAgICBjb25zdCBGb250KiBmb250
OworICAgIE9wdGlvbmFsPGZsb2F0PiBhZHZhbmNlOwogfTsKIAogLy8gQSBHbHlwaFBhZ2UgY29u
dGFpbnMgYSBmaXhlZC1zaXplIHNldCBvZiBHbHlwaERhdGEgbWFwcGluZ3MgZm9yIGEgY29udGln
dW91cwpAQCAtOTAsMTAgKzk0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdseXBoRm9y
SW5kZXgoaW5kZXhGb3JDb2RlUG9pbnQoYykpOwogICAgIH0KIAorICAgIE9wdGlvbmFsPGZsb2F0
PiBhZHZhbmNlRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYykgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZHZhbmNlRm9ySW5kZXgoaW5kZXhGb3JDb2RlUG9pbnQoYykpOworICAgIH0KKwogICAg
IEdseXBoRGF0YSBnbHlwaERhdGFGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7
CiAgICAgICAgIEdseXBoIGdseXBoID0gZ2x5cGhGb3JJbmRleChpbmRleCk7Ci0gICAgICAgIHJl
dHVybiBHbHlwaERhdGEoZ2x5cGgsIGdseXBoID8gJm1fZm9udCA6IG51bGxwdHIpOworICAgICAg
ICByZXR1cm4gR2x5cGhEYXRhKGdseXBoLCBnbHlwaCA/ICZtX2ZvbnQgOiBudWxscHRyLCBhZHZh
bmNlRm9ySW5kZXgoaW5kZXgpKTsKICAgICB9CiAKICAgICBHbHlwaCBnbHlwaEZvckluZGV4KHVu
c2lnbmVkIGluZGV4KSBjb25zdApAQCAtMTAyLDYgKzExMSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2dseXBoc1tpbmRleF07CiAgICAgfQogCisgICAgT3B0aW9uYWw8ZmxvYXQ+IGFk
dmFuY2VGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgc2l6ZSk7CisgICAgICAgIGlmICht
X2FkdmFuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07CisgICAgfQorCiAgICAgLy8gRklYTUU6IFBhZ2Vz
IGFyZSBpbW11dGFibGUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uIFRoaXMgc2hvdWxkIGJlIHByaXZh
dGUuCiAgICAgdm9pZCBzZXRHbHlwaEZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBHbHlwaCBnbHlw
aCkKICAgICB7CkBAIC0xMDksNiArMTI2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9nbHlwaHNb
aW5kZXhdID0gZ2x5cGg7CiAgICAgfQogCisgICAgdm9pZCBzZXRBZHZhbmNlRm9ySW5kZXgodW5z
aWduZWQgaW5kZXgsIGZsb2F0IGFkdmFuY2UpCisgICAgeworICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHNpemUpOworICAgICAgICBpZiAobV9hZHZhbmNl
cy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2FkdmFuY2VzLmdyb3coc2l6ZSk7CisgICAgICAg
IG1fYWR2YW5jZXNbaW5kZXhdID0gYWR2YW5jZTsKKyAgICB9CisKICAgICBjb25zdCBGb250JiBm
b250KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2ZvbnQ7CkBAIC0xMjUsNyArMTUw
LDggQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBjb25zdCBGb250JiBtX2ZvbnQ7Ci0gICAgR2x5
cGggbV9nbHlwaHNbc2l6ZV0geyB9OworICAgIHN0ZDo6YXJyYXk8R2x5cGgsIHNpemU+IG1fZ2x5
cGhzOworICAgIFZlY3RvcjxmbG9hdD4gbV9hZHZhbmNlczsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB1bnNpZ25lZCBzX2NvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggMzZmYmEwZjlkMDZmODc5NzZl
NWFlZDBiYTA5YWE2NmE1OWE1MDdjZC4uM2JhZTc3MTJkN2I3Y2E5MjExMzc1ZTE1ZDdjNTQyOGNm
MzMxY2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lk
dGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lk
dGhJdGVyYXRvci5jcHAKQEAgLTIwNyw3ICsyMDcsOSBAQCBpbmxpbmUgdW5zaWduZWQgV2lkdGhJ
dGVyYXRvcjo6YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlw
aAogICAgICAgICBpZiAoY2hhcmFjdGVyID09ICdcdCcgJiYgbV9ydW4uYWxsb3dUYWJzKCkpCiAg
ICAgICAgICAgICB3aWR0aCA9IG1fZm9udC0+dGFiV2lkdGgoKmZvbnQsIG1fcnVuLnRhYlNpemUo
KSwgbV9ydW4ueFBvcygpICsgbV9ydW5XaWR0aFNvRmFyICsgd2lkdGhTaW5jZUxhc3RSb3VuZGlu
Zyk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgd2lkdGggPSBmb250LT53aWR0aEZvckds
eXBoKGdseXBoKTsKKyAgICAgICAgICAgIHdpZHRoID0gZ2x5cGhEYXRhLmFkdmFuY2UudmFsdWVP
ckNvbXB1dGUoWyZdIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9udC0+d2lkdGhGb3JHbHlw
aChnbHlwaCk7CisgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgLy8gU1ZHIHVzZXMgaG9y
aXpvbnRhbEdseXBoU3RyZXRjaCgpLCB3aGVuIHRleHRMZW5ndGggaXMgdXNlZCB0byBzdHJldGNo
L3NxdWVlemUgdGV4dC4KICAgICAgICAgICAgIHdpZHRoICo9IG1fcnVuLmhvcml6b250YWxHbHlw
aFN0cmV0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDb2NvYS5tbQppbmRleCBjMGRiNGNjOWRmNTI0OWM5OTMxZTEyMTIwNjQxNWMzZjU2
YjczNWYxLi4zMTM2MGIxOWYxM2Q2MzMzODc1NThmOGEzZWUwMTEyZTVmNTJhNTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1t
CkBAIC01OTYsNyArNTk2LDI4IEBAIEZsb2F0UmVjdCBGb250OjpwbGF0Zm9ybUJvdW5kc0Zvckds
eXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIHJldHVybiBib3VuZGluZ0JveDsKIH0KIAotI2lm
ICEoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMDAwMCkpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkKK3ZvaWQgRm9udDo6cGxhdGZvcm1XaWR0
aHNGb3JHbHlwaHMoR2x5cGgqIGdseXBocywgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCogcmVzdWx0
KSBjb25zdAoreworICAgIFZlY3RvcjxDR1NpemU+IGFkdmFuY2VzKGxlbmd0aCwgQ0dTaXplWmVy
byk7CisgICAgYm9vbCBob3Jpem9udGFsID0gcGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsOworICAgIENHRm9udFJlbmRlcmluZ1N0eWxlIHN0eWxlID0ga0NHRm9udFJl
bmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQ
b3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVhbnRpemF0aW9uIHwg
a0NHRm9udEFudGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsKKworICAgIGlmIChwbGF0Zm9ybURh
dGEoKS5zaXplKCkpIHsKKyAgICAgICAgQ1RGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBo
b3Jpem9udGFsIHx8IG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjayA/IGtDVEZvbnRPcmllbnRh
dGlvbkhvcml6b250YWwgOiBrQ1RGb250T3JpZW50YXRpb25WZXJ0aWNhbDsKKyAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpYWwtY2FzaW5nIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzI4
MTk3MjkxPiBpcyBmaXhlZC4KKyAgICAgICAgaWYgKENURm9udElzQXBwbGVDb2xvckVtb2ppKG1f
cGxhdGZvcm1EYXRhLmN0Rm9udCgpKSkKKyAgICAgICAgICAgIENURm9udEdldEFkdmFuY2VzRm9y
R2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBvcmllbnRhdGlvbiwgZ2x5cGhzLCBhZHZh
bmNlcy5kYXRhKCksIGxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIENURm9udEdl
dFVuc3VtbWVkQWR2YW5jZXNGb3JHbHlwaHNBbmRTdHlsZShtX3BsYXRmb3JtRGF0YS5jdEZvbnQo
KSwgb3JpZW50YXRpb24sIHN0eWxlLCBnbHlwaHMsIGFkdmFuY2VzLmRhdGEoKSwgbGVuZ3RoKTsK
KyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAg
ICAgIHJlc3VsdFtpXSA9IGFkdmFuY2VzW2ldLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0
OworfQorCisjZWxzZQorCiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPENHU2l6ZT4gYWR2YW5jZUZv
ckNvbG9yQml0bWFwRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIEds
eXBoIGdseXBoKQogewogICAgIENURm9udFJlZiBmb250ID0gcGxhdGZvcm1EYXRhLmZvbnQoKTsK
QEAgLTYyMiwyMiArNjQzLDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5Vc2VGYXN0R2x5cGhB
ZHZhbmNlR2V0dGVyKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtCiAKIGZsb2F0IEZv
bnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIHsKLSAgICBDR1Np
emUgYWR2YW5jZSA9IENHU2l6ZVplcm87Ci0gICAgYm9vbCBob3Jpem9udGFsID0gcGxhdGZvcm1E
YXRhKCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsOwotICAgIENHRm9udFJlbmRlcmluZ1N0
eWxlIHN0eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJl
bmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1
YnBpeGVsUXVhbnRpemF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsK
LQogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMjAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDAwMDApCi0gICAgaWYgKHBsYXRmb3JtRGF0YSgpLnNpemUoKSkgewotICAg
ICAgICBDVEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGhvcml6b250YWwgfHwgbV9pc0Jy
b2tlbklkZW9ncmFwaEZhbGxiYWNrID8ga0NURm9udE9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IGtD
VEZvbnRPcmllbnRhdGlvblZlcnRpY2FsOwotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
c3BlY2lhbC1jYXNpbmcgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjgxOTcyOTE+IGlzIGZpeGVkLgot
ICAgICAgICBpZiAoQ1RGb250SXNBcHBsZUNvbG9yRW1vamkobV9wbGF0Zm9ybURhdGEuY3RGb250
KCkpKQotICAgICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMobV9wbGF0Zm9ybURh
dGEuY3RGb250KCksIG9yaWVudGF0aW9uLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgQ1RGb250R2V0VW5zdW1tZWRBZHZhbmNlc0ZvckdseXBoc0FuZFN0
eWxlKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBvcmllbnRhdGlvbiwgc3R5bGUsICZnbHlwaCwg
JmFkdmFuY2UsIDEpOwotICAgIH0KKyAgICBmbG9hdCByZXN1bHQ7CisgICAgcGxhdGZvcm1XaWR0
aHNGb3JHbHlwaHMoJmdseXBoLCAxLCAmcmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogCiAj
ZWxzZQogCisgICAgQ0dTaXplIGFkdmFuY2UgPSBDR1NpemVaZXJvOworICAgIGJvb2wgaG9yaXpv
bnRhbCA9IHBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbDsKKyAgICBD
R0ZvbnRSZW5kZXJpbmdTdHlsZSBzdHlsZSA9IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFudGlhbGlh
c2luZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgfCBrQ0dGb250
UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbiB8IGtDR0ZvbnRBbnRpYWxpYXNpbmdT
dHlsZVVuZmlsdGVyZWQ7CisKICAgICBib29sIHBvcHVsYXRlZEFkdmFuY2UgPSBmYWxzZTsKICAg
ICBpZiAoKGhvcml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNrKSAmJiBjYW5V
c2VGYXN0R2x5cGhBZHZhbmNlR2V0dGVyKHRoaXMtPnBsYXRmb3JtRGF0YSgpLCBnbHlwaCwgYWR2
YW5jZSwgcG9wdWxhdGVkQWR2YW5jZSkpIHsKICAgICAgICAgZmxvYXQgcG9pbnRTaXplID0gcGxh
dGZvcm1EYXRhKCkuc2l6ZSgpOwpAQCAtNjQ5LDkgKzY2NSw5IEBAIGZsb2F0IEZvbnQ6OnBsYXRm
b3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoIXBvcHVsYXRlZEFkdmFuY2UgJiYgcGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQogICAgICAg
ICBDVEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwgaG9y
aXpvbnRhbCA/IGtDVEZvbnRPcmllbnRhdGlvbkhvcml6b250YWwgOiBrQ1RGb250T3JpZW50YXRp
b25WZXJ0aWNhbCwgJmdseXBoLCAmYWR2YW5jZSwgMSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBh
ZHZhbmNlLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworI2VuZGlmCiB9CiAKIHN0cnVj
dCBQcm92aWRlckluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0dseXBoUGFnZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR2x5cGhQYWdlTWFjLmNwcAppbmRleCBmMzljOGRjMDU5ZjUyODY2YTI2Njk5Yzc0
NGMwNzRmMTQ3MWMzOGMxLi5kZWVkOGZjZWFhZjNlNDEwYjVlNzM3Yzk1YzBjODcwZDI0NzYxY2Jl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQ
YWdlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5
cGhQYWdlTWFjLmNwcApAQCAtNDAsNTUgKzQwLDUyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIGJvb2wgc2hvdWxkVXNlQ29yZVRleHQoY29uc3QgVUNoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBGb250JiBmb250RGF0YSkKK3N0YXRpYyBib29sIHNo
b3VsZEZpbGxXaXRoVmVydGljYWxHbHlwaHMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
YnVmZmVyTGVuZ3RoLCBjb25zdCBGb250JiBmb250KQogewotICAgIC8vIFRoaXMgbmVlZHMgdG8g
YmUga2VwdCBpbiBzeW5jIHdpdGggR2x5cGhQYWdlOjpmaWxsKCkuIEN1cnJlbnRseSwgdGhlIENv
cmVUZXh0IHBhdGhzIGFyZSBub3QgYWJsZSB0byBoYW5kbGUKLSAgICAvLyBldmVyeSBzaXR1dGF0
aW9uLiBSZXR1cm5pbmcgdHJ1ZSBmcm9tIHRoaXMgZnVuY3Rpb24gaW4gYSBuZXcgc2l0dWF0aW9u
IHdpbGwgcmVxdWlyZSB5b3UgdG8gZXhwbGljaXRseSBhZGQKLSAgICAvLyBoYW5kbGluZyBmb3Ig
dGhhdCBzaXR1YXRpb24gaW4gdGhlIENvcmVUZXh0IHBhdGhzIG9mIEdseXBoUGFnZTo6ZmlsbCgp
LgotICAgIGlmIChmb250RGF0YS5wbGF0Zm9ybURhdGEoKS5pc1N5c3RlbUZvbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGZvbnREYXRhLnBsYXRmb3JtRGF0YSgpLmlzRm9yVGV4
dENvbWJpbmUoKSB8fCBmb250RGF0YS5oYXNWZXJ0aWNhbEdseXBocygpKSB7Ci0gICAgICAgIC8v
IElkZW9ncmFwaHMgZG9uJ3QgaGF2ZSBhIHZlcnRpY2FsIHZhcmlhbnQgb3Igd2lkdGggdmFyaWFu
dHMuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZmZXJMZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgaWYgKCFGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGgoYnVmZmVyW2ld
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgIGlmICghZm9u
dC5oYXNWZXJ0aWNhbEdseXBocygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlckxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghRm9u
dENhc2NhZGU6OmlzQ0pLSWRlb2dyYXBoKGJ1ZmZlcltpXSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNkZWZpbmUgR0xZUEhfUEFH
RVNfSU5DTFVERV9BRFZBTkNFUyAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkpCisKIGJvb2wgR2x5cGhQYWdlOjpmaWxs
KFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKIHsKICAgICBBU1NFUlQoYnVm
ZmVyTGVuZ3RoID09IEdseXBoUGFnZTo6c2l6ZSB8fCBidWZmZXJMZW5ndGggPT0gMiAqIEdseXBo
UGFnZTo6c2l6ZSk7CiAKICAgICBjb25zdCBGb250JiBmb250ID0gdGhpcy0+Zm9udCgpOwogICAg
IFZlY3RvcjxDR0dseXBoLCA1MTI+IGdseXBocyhidWZmZXJMZW5ndGgpOwotICAgIHVuc2lnbmVk
IGdseXBoU3RlcDsKLSAgICBpZiAoIXNob3VsZFVzZUNvcmVUZXh0KGJ1ZmZlciwgYnVmZmVyTGVu
Z3RoLCBmb250KSkgewotICAgICAgICAvLyBXZSBwYXNzIGluIGVpdGhlciAyNTYgb3IgNTEyIFVU
Ri0xNiBjaGFyYWN0ZXJzOiAyNTYgZm9yIFUrRkZGRiBhbmQgbGVzcywgNTEyIChkb3VibGUgY2hh
cmFjdGVyIHN1cnJvZ2F0ZXMpCi0gICAgICAgIC8vIGZvciBVKzEwMDAwIGFuZCBhYm92ZS4gSXQg
aXMgaW5kZWVkIHBvc3NpYmxlIHRvIGdldCBiYWNrIDUxMiBnbHlwaHMgYmFjayBmcm9tIHRoZSBB
UEksIHNvIHRoZSBnbHlwaCBidWZmZXIKLSAgICAgICAgLy8gd2UgcGFzcyBpbiBtdXN0IGJlIDUx
Mi4gSWYgd2UgZ2V0IGJhY2sgbW9yZSB0aGFuIDI1NiBnbHlwaHMgdGhvdWdoIHdlJ2xsIGlnbm9y
ZSBhbGwgdGhlIG9uZXMgYWZ0ZXIgMjU2LAotICAgICAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFw
cGVuIGFzIHRoZSBvbmx5IHRpbWUgd2UgcGFzcyBpbiA1MTIgY2hhcmFjdGVycyBpcyB3aGVuIHRo
ZXkgYXJlIHN1cnJvZ2F0ZXMuCi0gICAgICAgIENHRm9udEdldEdseXBoc0ZvclVuaWNoYXJzKGZv
bnQucGxhdGZvcm1EYXRhKCkuY2dGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVy
TGVuZ3RoKTsKLSAgICAgICAgZ2x5cGhTdGVwID0gMTsKLSAgICB9IGVsc2UgewotICAgICAgICAv
LyBCZWNhdXNlIHdlIGtub3cgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNob3VsZFVzZUNvcmVUZXh0
KCksIGlmIHRoZSBmb250IGlzbid0IGZvciB0ZXh0IGNvbWJpbmUgYW5kIGl0IGlzbid0IGEgc3lz
dGVtIGZvbnQsCi0gICAgICAgIC8vIHdlIGtub3cgaXQgbXVzdCBoYXZlIHZlcnRpY2FsIGdseXBo
cy4KLSAgICAgICAgaWYgKGZvbnQucGxhdGZvcm1EYXRhKCkuaXNGb3JUZXh0Q29tYmluZSgpIHx8
IGZvbnQucGxhdGZvcm1EYXRhKCkuaXNTeXN0ZW1Gb250KCkpCi0gICAgICAgICAgICBDVEZvbnRH
ZXRHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RGb250KCksIGJ1ZmZl
ciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgQ1RGb250R2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRh
KCkuY3RGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKIAotICAg
ICAgICAvLyBXaGVuIGJ1ZmZlciBjb25zaXN0cyBvZiBzdXJyb2dhdGUgcGFpcnMsIENURm9udEdl
dFZlcnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycyBhbmQgQ1RGb250R2V0R2x5cGhzRm9yQ2hhcmFj
dGVycwotICAgICAgICAvLyBwbGFjZSB0aGUgZ2x5cGhzIGF0IGluZGljZXMgY29ycmVzcG9uZGlu
ZyB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGVhY2ggcGFpci4KLSAgICAgICAgZ2x5cGhTdGVw
ID0gYnVmZmVyTGVuZ3RoIC8gR2x5cGhQYWdlOjpzaXplOwotICAgIH0KKyAgICBpZiAoc2hvdWxk
RmlsbFdpdGhWZXJ0aWNhbEdseXBocyhidWZmZXIsIGJ1ZmZlckxlbmd0aCwgZm9udCkpCisgICAg
ICAgIENURm9udEdldFZlcnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycyhmb250LnBsYXRmb3JtRGF0
YSgpLmN0Rm9udCgpLCBidWZmZXIsIGdseXBocy5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAg
ZWxzZQorICAgICAgICBDVEZvbnRHZXRHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1E
YXRhKCkuY3RGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAg
ICB1bnNpZ25lZCBnbHlwaFN0ZXAgPSBidWZmZXJMZW5ndGggLyBHbHlwaFBhZ2U6OnNpemU7Cisg
ICAgVU5VU0VEX1BBUkFNKGdseXBoU3RlcCk7CisKKyNpZiBHTFlQSF9QQUdFU19JTkNMVURFX0FE
VkFOQ0VTCisgICAgVmVjdG9yPENHR2x5cGg+IGNvbXByZXNzZWRHbHlwaHM7CisgICAgY29tcHJl
c3NlZEdseXBocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KEdseXBoUGFnZTo6c2l6ZSk7CisgICAg
aWYgKGdseXBoU3RlcCA9PSAyKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBH
bHlwaFBhZ2U6OnNpemU7ICsraSkKKyAgICAgICAgICAgIGNvbXByZXNzZWRHbHlwaHMuYXBwZW5k
KGdseXBoc1tpICogZ2x5cGhTdGVwXSk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVChnbHlw
aFN0ZXAgPT0gMSk7CisgICAgVmVjdG9yPGZsb2F0PiBhZHZhbmNlcyhHbHlwaFBhZ2U6OnNpemUs
IDAuZik7CisgICAgZm9udC5wbGF0Zm9ybVdpZHRoc0ZvckdseXBocyhjb21wcmVzc2VkR2x5cGhz
LnNpemUoKSA/IGNvbXByZXNzZWRHbHlwaHMuZGF0YSgpIDogZ2x5cGhzLmRhdGEoKSwgR2x5cGhQ
YWdlOjpzaXplLCBhZHZhbmNlcy5kYXRhKCkpOworI2VuZGlmCiAKICAgICBib29sIGhhdmVHbHlw
aHMgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR2x5cGhQYWdlOjpzaXpl
OyArK2kpIHsKICAgICAgICAgaWYgKGdseXBoc1tpICogZ2x5cGhTdGVwXSkgewogICAgICAgICAg
ICAgc2V0R2x5cGhGb3JJbmRleChpLCBnbHlwaHNbaSAqIGdseXBoU3RlcF0pOworI2lmIEdMWVBI
X1BBR0VTX0lOQ0xVREVfQURWQU5DRVMKKyAgICAgICAgICAgIHNldEFkdmFuY2VGb3JJbmRleChp
LCBhZHZhbmNlc1tpXSk7CisjZW5kaWYKICAgICAgICAgICAgIGhhdmVHbHlwaHMgPSB0cnVlOwog
ICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288489</attachid>
            <date>2016-09-10 12:14:50 -0700</date>
            <delta_ts>2016-09-10 14:12:16 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-161809-20160910121230.patch</filename>
            <type>text/plain</type>
            <size>16738</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjVmYWU2ZTQ1OWVjMjBkZmQ2MTdiM2VhZjAyZTYxZmYyZDNkYjE3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFu
Y2Ugb2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2Y0NjliYTk4YTFjYjU2YmJhZTA4NmFkNTI1NWNmYzMw
NzE5NTUwLi4wMDUwZmUzZDI2MzNmZGVhMmM3NzA3MjI2YjM1NDlhMDFjZDNiYzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQ
YWdlOjpmaWxsKToKKworMjAxNi0wOS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgorCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbWVtYmVyIG9mIEdseXBoQnVmZmVy
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4MTQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oIGIv
U291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCmluZGV4IDFkYzI3OTRmMDIx
MzgwZjFhNDQzMTkzZWQ3NTY5YmMzOGJkYjU2ZDguLjlkYmRhYThiOGNhYWQ5YWNkMzBjM2E2MTVj
NDczNDQ3YWRjZDcwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgK
QEAgLTcwLDYgKzcwLDcgQEAgY29uc3QgVUNoYXIgbWludXNTaWduID0gMHgyMjEyOwogY29uc3Qg
VUNoYXIgbmFycm93Tm9uQnJlYWtpbmdTcGFjZSA9IDB4MjAyRjsKIGNvbnN0IFVDaGFyIG5ld2xp
bmVDaGFyYWN0ZXIgPSAweDAwMEE7CiBjb25zdCBVQ2hhciBub0JyZWFrU3BhY2UgPSAweDAwQTA7
Citjb25zdCBVQ2hhciBuYXJyb3dOb0JyZWFrU3BhY2UgPSAweDIwMkY7CiBjb25zdCBVQ2hhciBv
YmplY3RSZXBsYWNlbWVudENoYXJhY3RlciA9IDB4RkZGQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVj
dGlvbmFsRm9ybWF0dGluZyA9IDB4MjAyQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVjdGlvbmFsSXNv
bGF0ZSA9IDB4MjA2OTsKQEAgLTEzMiw2ICsxMzMsNyBAQCB1c2luZyBXVEY6OlVuaWNvZGU6Om1p
bnVzU2lnbjsKIHVzaW5nIFdURjo6VW5pY29kZTo6bmFycm93Tm9uQnJlYWtpbmdTcGFjZTsKIHVz
aW5nIFdURjo6VW5pY29kZTo6bmV3bGluZUNoYXJhY3RlcjsKIHVzaW5nIFdURjo6VW5pY29kZTo6
bm9CcmVha1NwYWNlOwordXNpbmcgV1RGOjpVbmljb2RlOjpuYXJyb3dOb0JyZWFrU3BhY2U7CiB1
c2luZyBXVEY6OlVuaWNvZGU6Om9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpwb3BEaXJlY3Rpb25hbEZvcm1hdHRpbmc7CiB1c2luZyBXVEY6OlVuaWNvZGU6
OnBvcERpcmVjdGlvbmFsSXNvbGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKaW5kZXggNDgzNDA5NTIzOWUyMjAzNzNlYTQxMDhhY2EzMzFkMzFhNDQ0MDM0Ni4u
NmQyNGQyMGU1YTY3YmQ3OTI3ZGIzYjg4ZjI1MTllMjEwNDUxZjNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTE4Nyw2ICsxODcsNyBAQCBzdGF0aWMg
UmVmUHRyPEdseXBoUGFnZT4gY3JlYXRlQW5kRmlsbEdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVt
YmVyLCBjb25zdCBGb250JgogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1xuJywgc3BhY2Up
OwogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1x0Jywgc3BhY2UpOwogICAgICAgICBvdmVy
d3JpdGVDb2RlUG9pbnQobm9CcmVha1NwYWNlLCBzcGFjZSk7CisgICAgICAgIG92ZXJ3cml0ZUNv
ZGVQb2ludChuYXJyb3dOb0JyZWFrU3BhY2UsIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3Zl
cndyaXRlQ29kZVBvaW50KGxlZnRUb1JpZ2h0TWFyaywgemVyb1dpZHRoU3BhY2UpOwogICAgICAg
ICBvdmVyd3JpdGVDb2RlUG9pbnQocmlnaHRUb0xlZnRNYXJrLCB6ZXJvV2lkdGhTcGFjZSk7CiAg
ICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludChsZWZ0VG9SaWdodEVtYmVkLCB6ZXJvV2lkdGhTcGFj
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOTE4ZGM5OTA4
N2Y4YjM1MGFmMmQxYjhkNzc5YTQwNjM0Zjk1NDI1My4uODQ0OTgxYTdjN2M4NDE4ODNjZTQ4ZjVi
YmMwNmEwY2E2OGRhYjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCB3aWR0aEZvckdseXBoKEds
eXBoKSBjb25zdDsKICAgICBGbG9hdFJlY3QgcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlwaCkg
Y29uc3Q7CiAgICAgZmxvYXQgcGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoKSBjb25zdDsKKyAg
ICB2b2lkIHBsYXRmb3JtV2lkdGhzRm9yR2x5cGhzKEdseXBoKiwgdW5zaWduZWQgbGVuZ3RoLCBm
bG9hdCogcmVzdWx0KSBjb25zdDsKIAogICAgIGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3NwYWNlV2lkdGg7IH0KICAgICBmbG9hdCBhZGp1c3RlZFNwYWNlV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX2FkanVzdGVkU3BhY2VXaWR0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaAppbmRleCBhMWE1OTQ0ZmQ2MmY4ZTg0ZTBmNDBlNzdh
N2Y2YzM1NWM2NDA0ZGU0Li5iYzZmNDE4ZTM2ODRhZGMyODM3NjhlYjNkNGM4NDM5OWQwOTgxYTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaApAQCAt
MzEsMTAgKzMxLDEyIEBACiAjZGVmaW5lIEdseXBoUGFnZV9oCiAKICNpbmNsdWRlICJHbHlwaC5o
IgotI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHVuaWNv
ZGUvdXR5cGVzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDkgKzQ1LDEwIEBAIGNsYXNzIEZvbnQ7
CiAvLyBIb2xkcyB0aGUgZ2x5cGggaW5kZXggYW5kIHRoZSBjb3JyZXNwb25kaW5nIEZvbnQgaW5m
b3JtYXRpb24gZm9yIGEgZ2l2ZW4KIC8vIGNoYXJhY3Rlci4KIHN0cnVjdCBHbHlwaERhdGEgewot
ICAgIEdseXBoRGF0YShHbHlwaCBnID0gMCwgY29uc3QgRm9udCogZiA9IDApCi0gICAgICAgIDog
Z2x5cGgoZykKLSAgICAgICAgLCBmb250KGYpCisgICAgR2x5cGhEYXRhKEdseXBoIGdseXBoID0g
MCwgY29uc3QgRm9udCogZm9udCA9IDAsIE9wdGlvbmFsPGZsb2F0PiBhZHZhbmNlID0gTnVsbG9w
dCkKKyAgICAgICAgOiBnbHlwaChnbHlwaCkKKyAgICAgICAgLCBmb250KGZvbnQpCisgICAgICAg
ICwgYWR2YW5jZShhZHZhbmNlKQogICAgIHsKICAgICB9CiAKQEAgLTUzLDYgKzU2LDcgQEAgc3Ry
dWN0IEdseXBoRGF0YSB7CiAKICAgICBHbHlwaCBnbHlwaDsKICAgICBjb25zdCBGb250KiBmb250
OworICAgIE9wdGlvbmFsPGZsb2F0PiBhZHZhbmNlOwogfTsKIAogLy8gQSBHbHlwaFBhZ2UgY29u
dGFpbnMgYSBmaXhlZC1zaXplIHNldCBvZiBHbHlwaERhdGEgbWFwcGluZ3MgZm9yIGEgY29udGln
dW91cwpAQCAtOTAsMTAgKzk0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdseXBoRm9y
SW5kZXgoaW5kZXhGb3JDb2RlUG9pbnQoYykpOwogICAgIH0KIAorICAgIE9wdGlvbmFsPGZsb2F0
PiBhZHZhbmNlRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYykgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZHZhbmNlRm9ySW5kZXgoaW5kZXhGb3JDb2RlUG9pbnQoYykpOworICAgIH0KKwogICAg
IEdseXBoRGF0YSBnbHlwaERhdGFGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7
CiAgICAgICAgIEdseXBoIGdseXBoID0gZ2x5cGhGb3JJbmRleChpbmRleCk7Ci0gICAgICAgIHJl
dHVybiBHbHlwaERhdGEoZ2x5cGgsIGdseXBoID8gJm1fZm9udCA6IG51bGxwdHIpOworICAgICAg
ICByZXR1cm4gR2x5cGhEYXRhKGdseXBoLCBnbHlwaCA/ICZtX2ZvbnQgOiBudWxscHRyLCBhZHZh
bmNlRm9ySW5kZXgoaW5kZXgpKTsKICAgICB9CiAKICAgICBHbHlwaCBnbHlwaEZvckluZGV4KHVu
c2lnbmVkIGluZGV4KSBjb25zdApAQCAtMTAyLDYgKzExMSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2dseXBoc1tpbmRleF07CiAgICAgfQogCisgICAgT3B0aW9uYWw8ZmxvYXQ+IGFk
dmFuY2VGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgc2l6ZSk7CisgICAgICAgIGlmICht
X2FkdmFuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07CisgICAgfQorCiAgICAgLy8gRklYTUU6IFBhZ2Vz
IGFyZSBpbW11dGFibGUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uIFRoaXMgc2hvdWxkIGJlIHByaXZh
dGUuCiAgICAgdm9pZCBzZXRHbHlwaEZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBHbHlwaCBnbHlw
aCkKICAgICB7CkBAIC0xMDksNiArMTI2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9nbHlwaHNb
aW5kZXhdID0gZ2x5cGg7CiAgICAgfQogCisgICAgdm9pZCBzZXRBZHZhbmNlRm9ySW5kZXgodW5z
aWduZWQgaW5kZXgsIGZsb2F0IGFkdmFuY2UpCisgICAgeworICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHNpemUpOworICAgICAgICBpZiAobV9hZHZhbmNl
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fYWR2YW5jZXMuZ3JvdyhzaXplKTsKKyAgICAg
ICAgICAgIG1fYWR2YW5jZXMuZmlsbCgwKTsKKyAgICAgICAgfQorICAgICAgICBtX2FkdmFuY2Vz
W2luZGV4XSA9IGFkdmFuY2U7CisgICAgfQorCiAgICAgY29uc3QgRm9udCYgZm9udCgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb250OwpAQCAtMTIxLDExICsxNDgsMTMgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBHbHlwaFBhZ2UoY29uc3QgRm9udCYgZm9udCkKICAgICAgICAg
OiBtX2ZvbnQoZm9udCkKICAgICB7CisgICAgICAgIG1fZ2x5cGhzLmZpbGwoMCk7CiAgICAgICAg
ICsrc19jb3VudDsKICAgICB9CiAKICAgICBjb25zdCBGb250JiBtX2ZvbnQ7Ci0gICAgR2x5cGgg
bV9nbHlwaHNbc2l6ZV0geyB9OworICAgIHN0ZDo6YXJyYXk8R2x5cGgsIHNpemU+IG1fZ2x5cGhz
OworICAgIFZlY3RvcjxmbG9hdD4gbV9hZHZhbmNlczsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB1bnNpZ25lZCBzX2NvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggMzZmYmEwZjlkMDZmODc5NzZlNWFl
ZDBiYTA5YWE2NmE1OWE1MDdjZC4uOWYzNWY0OTYzYTNiMGM1MDhkY2E2MzhiYzQzOWYzODA5Mjkw
MzM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKQEAgLTIwNyw3ICsyMDcsMTAgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRl
cmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwgR2x5cGgK
ICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnXHQnICYmIG1fcnVuLmFsbG93VGFicygpKQogICAg
ICAgICAgICAgd2lkdGggPSBtX2ZvbnQtPnRhYldpZHRoKCpmb250LCBtX3J1bi50YWJTaXplKCks
IG1fcnVuLnhQb3MoKSArIG1fcnVuV2lkdGhTb0ZhciArIHdpZHRoU2luY2VMYXN0Um91bmRpbmcp
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHdpZHRoID0gZm9udC0+d2lkdGhGb3JHbHlw
aChnbHlwaCk7CisgICAgICAgICAgICB3aWR0aCA9IGdseXBoRGF0YS5hZHZhbmNlLnZhbHVlT3JD
b21wdXRlKFsmXSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvbnQtPndpZHRoRm9yR2x5cGgo
Z2x5cGgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBBU1NFUlQod2lkdGggPT0gZm9u
dC0+d2lkdGhGb3JHbHlwaChnbHlwaCkpOwogCiAgICAgICAgICAgICAvLyBTVkcgdXNlcyBob3Jp
em9udGFsR2x5cGhTdHJldGNoKCksIHdoZW4gdGV4dExlbmd0aCBpcyB1c2VkIHRvIHN0cmV0Y2gv
c3F1ZWV6ZSB0ZXh0LgogICAgICAgICAgICAgd2lkdGggKj0gbV9ydW4uaG9yaXpvbnRhbEdseXBo
U3RyZXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tCmluZGV4IGMwZGI0Y2M5ZGY1MjQ5Yzk5MzFlMTIxMjA2NDE1YzNmNTZi
NzM1ZjEuLjMxMzYwYjE5ZjEzZDYzMzM4NzU1OGY4YTNlZTAxMTJlNWY1MmE1NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0K
QEAgLTU5Niw3ICs1OTYsMjggQEAgRmxvYXRSZWN0IEZvbnQ6OnBsYXRmb3JtQm91bmRzRm9yR2x5
cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kaW5nQm94OwogfQogCi0jaWYg
ISgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAwMDAwKSkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKQordm9pZCBGb250OjpwbGF0Zm9ybVdpZHRo
c0ZvckdseXBocyhHbHlwaCogZ2x5cGhzLCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0KiByZXN1bHQp
IGNvbnN0Cit7CisgICAgVmVjdG9yPENHU2l6ZT4gYWR2YW5jZXMobGVuZ3RoLCBDR1NpemVaZXJv
KTsKKyAgICBib29sIGhvcml6b250YWwgPSBwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWw7CisgICAgQ0dGb250UmVuZGVyaW5nU3R5bGUgc3R5bGUgPSBrQ0dGb250UmVu
ZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFBv
c2l0aW9uaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxRdWFudGl6YXRpb24gfCBr
Q0dGb250QW50aWFsaWFzaW5nU3R5bGVVbmZpbHRlcmVkOworCisgICAgaWYgKHBsYXRmb3JtRGF0
YSgpLnNpemUoKSkgeworICAgICAgICBDVEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGhv
cml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNrID8ga0NURm9udE9yaWVudGF0
aW9uSG9yaXpvbnRhbCA6IGtDVEZvbnRPcmllbnRhdGlvblZlcnRpY2FsOworICAgICAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgc3BlY2lhbC1jYXNpbmcgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjgx
OTcyOTE+IGlzIGZpeGVkLgorICAgICAgICBpZiAoQ1RGb250SXNBcHBsZUNvbG9yRW1vamkobV9w
bGF0Zm9ybURhdGEuY3RGb250KCkpKQorICAgICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JH
bHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIG9yaWVudGF0aW9uLCBnbHlwaHMsIGFkdmFu
Y2VzLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQ1RGb250R2V0
VW5zdW1tZWRBZHZhbmNlc0ZvckdseXBoc0FuZFN0eWxlKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgp
LCBvcmllbnRhdGlvbiwgc3R5bGUsIGdseXBocywgYWR2YW5jZXMuZGF0YSgpLCBsZW5ndGgpOwor
ICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAg
ICAgcmVzdWx0W2ldID0gYWR2YW5jZXNbaV0ud2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7
Cit9CisKKyNlbHNlCisKIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Q0dTaXplPiBhZHZhbmNlRm9y
Q29sb3JCaXRtYXBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgR2x5
cGggZ2x5cGgpCiB7CiAgICAgQ1RGb250UmVmIGZvbnQgPSBwbGF0Zm9ybURhdGEuZm9udCgpOwpA
QCAtNjIyLDIyICs2NDMsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGNhblVzZUZhc3RHbHlwaEFk
dmFuY2VHZXR0ZXIoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm0KIAogZmxvYXQgRm9u
dDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogewotICAgIENHU2l6
ZSBhZHZhbmNlID0gQ0dTaXplWmVybzsKLSAgICBib29sIGhvcml6b250YWwgPSBwbGF0Zm9ybURh
dGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWw7Ci0gICAgQ0dGb250UmVuZGVyaW5nU3R5
bGUgc3R5bGUgPSBrQ0dGb250UmVuZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmcgfCBrQ0dGb250UmVu
ZGVyaW5nU3R5bGVTdWJwaXhlbFBvc2l0aW9uaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3Vi
cGl4ZWxRdWFudGl6YXRpb24gfCBrQ0dGb250QW50aWFsaWFzaW5nU3R5bGVVbmZpbHRlcmVkOwot
CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMDAwMCkKLSAgICBpZiAocGxhdGZvcm1EYXRhKCkuc2l6ZSgpKSB7Ci0gICAg
ICAgIENURm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gaG9yaXpvbnRhbCB8fCBtX2lzQnJv
a2VuSWRlb2dyYXBoRmFsbGJhY2sgPyBrQ1RGb250T3JpZW50YXRpb25Ib3Jpem9udGFsIDoga0NU
Rm9udE9yaWVudGF0aW9uVmVydGljYWw7Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBz
cGVjaWFsLWNhc2luZyB3aGVuIDxyZGFyOi8vcHJvYmxlbS8yODE5NzI5MT4gaXMgZml4ZWQuCi0g
ICAgICAgIGlmIChDVEZvbnRJc0FwcGxlQ29sb3JFbW9qaShtX3BsYXRmb3JtRGF0YS5jdEZvbnQo
KSkpCi0gICAgICAgICAgICBDVEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0
YS5jdEZvbnQoKSwgb3JpZW50YXRpb24sICZnbHlwaCwgJmFkdmFuY2UsIDEpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBDVEZvbnRHZXRVbnN1bW1lZEFkdmFuY2VzRm9yR2x5cGhzQW5kU3R5
bGUobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIG9yaWVudGF0aW9uLCBzdHlsZSwgJmdseXBoLCAm
YWR2YW5jZSwgMSk7Ci0gICAgfQorICAgIGZsb2F0IHJlc3VsdDsKKyAgICBwbGF0Zm9ybVdpZHRo
c0ZvckdseXBocygmZ2x5cGgsIDEsICZyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiAKICNl
bHNlCiAKKyAgICBDR1NpemUgYWR2YW5jZSA9IENHU2l6ZVplcm87CisgICAgYm9vbCBob3Jpem9u
dGFsID0gcGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsOworICAgIENH
Rm9udFJlbmRlcmluZ1N0eWxlIHN0eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFz
aW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRS
ZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVhbnRpemF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0
eWxlVW5maWx0ZXJlZDsKKwogICAgIGJvb2wgcG9wdWxhdGVkQWR2YW5jZSA9IGZhbHNlOwogICAg
IGlmICgoaG9yaXpvbnRhbCB8fCBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJhY2spICYmIGNhblVz
ZUZhc3RHbHlwaEFkdmFuY2VHZXR0ZXIodGhpcy0+cGxhdGZvcm1EYXRhKCksIGdseXBoLCBhZHZh
bmNlLCBwb3B1bGF0ZWRBZHZhbmNlKSkgewogICAgICAgICBmbG9hdCBwb2ludFNpemUgPSBwbGF0
Zm9ybURhdGEoKS5zaXplKCk7CkBAIC02NDksOSArNjY1LDkgQEAgZmxvYXQgRm9udDo6cGxhdGZv
cm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmICghcG9wdWxhdGVkQWR2YW5jZSAmJiBwbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAg
IENURm9udEdldEFkdmFuY2VzRm9yR2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBob3Jp
em9udGFsID8ga0NURm9udE9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IGtDVEZvbnRPcmllbnRhdGlv
blZlcnRpY2FsLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIGFk
dmFuY2Uud2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7CisjZW5kaWYKIH0KIAogc3RydWN0
IFByb3ZpZGVySW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR2x5cGhQYWdlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwCmluZGV4IGYzOWM4ZGMwNTlmNTI4NjZhMjY2OTljNzQ0
YzA3NGYxNDcxYzM4YzEuLmNmNGNiNmM1YzAwYzkzMjdkNGU5ZDBkNTYzNzBhYTFmODExNGY1OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBh
Z2VNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlw
aFBhZ2VNYWMuY3BwCkBAIC00MCw1NSArNDAsNTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgYm9vbCBzaG91bGRVc2VDb3JlVGV4dChjb25zdCBVQ2hhciogYnVmZmVyLCB1bnNp
Z25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZvbnQmIGZvbnREYXRhKQorc3RhdGljIGJvb2wgc2hv
dWxkRmlsbFdpdGhWZXJ0aWNhbEdseXBocyhjb25zdCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBi
dWZmZXJMZW5ndGgsIGNvbnN0IEZvbnQmIGZvbnQpCiB7Ci0gICAgLy8gVGhpcyBuZWVkcyB0byBi
ZSBrZXB0IGluIHN5bmMgd2l0aCBHbHlwaFBhZ2U6OmZpbGwoKS4gQ3VycmVudGx5LCB0aGUgQ29y
ZVRleHQgcGF0aHMgYXJlIG5vdCBhYmxlIHRvIGhhbmRsZQotICAgIC8vIGV2ZXJ5IHNpdHV0YXRp
b24uIFJldHVybmluZyB0cnVlIGZyb20gdGhpcyBmdW5jdGlvbiBpbiBhIG5ldyBzaXR1YXRpb24g
d2lsbCByZXF1aXJlIHlvdSB0byBleHBsaWNpdGx5IGFkZAotICAgIC8vIGhhbmRsaW5nIGZvciB0
aGF0IHNpdHVhdGlvbiBpbiB0aGUgQ29yZVRleHQgcGF0aHMgb2YgR2x5cGhQYWdlOjpmaWxsKCku
Ci0gICAgaWYgKGZvbnREYXRhLnBsYXRmb3JtRGF0YSgpLmlzU3lzdGVtRm9udCgpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZm9udERhdGEucGxhdGZvcm1EYXRhKCkuaXNGb3JUZXh0
Q29tYmluZSgpIHx8IGZvbnREYXRhLmhhc1ZlcnRpY2FsR2x5cGhzKCkpIHsKLSAgICAgICAgLy8g
SWRlb2dyYXBocyBkb24ndCBoYXZlIGEgdmVydGljYWwgdmFyaWFudCBvciB3aWR0aCB2YXJpYW50
cy4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlckxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoIUZvbnRDYXNjYWRlOjppc0NKS0lkZW9ncmFwaChidWZmZXJbaV0p
KQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKCFmb250
Lmhhc1ZlcnRpY2FsR2x5cGhzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFGb250
Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGgoYnVmZmVyW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2RlZmluZSBHTFlQSF9QQUdF
U19JTkNMVURFX0FEVkFOQ0VTICgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKSkKKwogYm9vbCBHbHlwaFBhZ2U6OmZpbGwo
VUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKQogewogICAgIEFTU0VSVChidWZm
ZXJMZW5ndGggPT0gR2x5cGhQYWdlOjpzaXplIHx8IGJ1ZmZlckxlbmd0aCA9PSAyICogR2x5cGhQ
YWdlOjpzaXplKTsKIAogICAgIGNvbnN0IEZvbnQmIGZvbnQgPSB0aGlzLT5mb250KCk7CiAgICAg
VmVjdG9yPENHR2x5cGgsIDUxMj4gZ2x5cGhzKGJ1ZmZlckxlbmd0aCk7Ci0gICAgdW5zaWduZWQg
Z2x5cGhTdGVwOwotICAgIGlmICghc2hvdWxkVXNlQ29yZVRleHQoYnVmZmVyLCBidWZmZXJMZW5n
dGgsIGZvbnQpKSB7Ci0gICAgICAgIC8vIFdlIHBhc3MgaW4gZWl0aGVyIDI1NiBvciA1MTIgVVRG
LTE2IGNoYXJhY3RlcnM6IDI1NiBmb3IgVStGRkZGIGFuZCBsZXNzLCA1MTIgKGRvdWJsZSBjaGFy
YWN0ZXIgc3Vycm9nYXRlcykKLSAgICAgICAgLy8gZm9yIFUrMTAwMDAgYW5kIGFib3ZlLiBJdCBp
cyBpbmRlZWQgcG9zc2libGUgdG8gZ2V0IGJhY2sgNTEyIGdseXBocyBiYWNrIGZyb20gdGhlIEFQ
SSwgc28gdGhlIGdseXBoIGJ1ZmZlcgotICAgICAgICAvLyB3ZSBwYXNzIGluIG11c3QgYmUgNTEy
LiBJZiB3ZSBnZXQgYmFjayBtb3JlIHRoYW4gMjU2IGdseXBocyB0aG91Z2ggd2UnbGwgaWdub3Jl
IGFsbCB0aGUgb25lcyBhZnRlciAyNTYsCi0gICAgICAgIC8vIHRoaXMgc2hvdWxkIG5vdCBoYXBw
ZW4gYXMgdGhlIG9ubHkgdGltZSB3ZSBwYXNzIGluIDUxMiBjaGFyYWN0ZXJzIGlzIHdoZW4gdGhl
eSBhcmUgc3Vycm9nYXRlcy4KLSAgICAgICAgQ0dGb250R2V0R2x5cGhzRm9yVW5pY2hhcnMoZm9u
dC5wbGF0Zm9ybURhdGEoKS5jZ0ZvbnQoKSwgYnVmZmVyLCBnbHlwaHMuZGF0YSgpLCBidWZmZXJM
ZW5ndGgpOwotICAgICAgICBnbHlwaFN0ZXAgPSAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8v
IEJlY2F1c2Ugd2Uga25vdyB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2hvdWxkVXNlQ29yZVRleHQo
KSwgaWYgdGhlIGZvbnQgaXNuJ3QgZm9yIHRleHQgY29tYmluZSBhbmQgaXQgaXNuJ3QgYSBzeXN0
ZW0gZm9udCwKLSAgICAgICAgLy8gd2Uga25vdyBpdCBtdXN0IGhhdmUgdmVydGljYWwgZ2x5cGhz
LgotICAgICAgICBpZiAoZm9udC5wbGF0Zm9ybURhdGEoKS5pc0ZvclRleHRDb21iaW5lKCkgfHwg
Zm9udC5wbGF0Zm9ybURhdGEoKS5pc1N5c3RlbUZvbnQoKSkKLSAgICAgICAgICAgIENURm9udEdl
dEdseXBoc0ZvckNoYXJhY3RlcnMoZm9udC5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgYnVmZmVy
LCBnbHlwaHMuZGF0YSgpLCBidWZmZXJMZW5ndGgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBDVEZvbnRHZXRWZXJ0aWNhbEdseXBoc0ZvckNoYXJhY3RlcnMoZm9udC5wbGF0Zm9ybURhdGEo
KS5jdEZvbnQoKSwgYnVmZmVyLCBnbHlwaHMuZGF0YSgpLCBidWZmZXJMZW5ndGgpOwogCi0gICAg
ICAgIC8vIFdoZW4gYnVmZmVyIGNvbnNpc3RzIG9mIHN1cnJvZ2F0ZSBwYWlycywgQ1RGb250R2V0
VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzIGFuZCBDVEZvbnRHZXRHbHlwaHNGb3JDaGFyYWN0
ZXJzCi0gICAgICAgIC8vIHBsYWNlIHRoZSBnbHlwaHMgYXQgaW5kaWNlcyBjb3JyZXNwb25kaW5n
IHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgZWFjaCBwYWlyLgotICAgICAgICBnbHlwaFN0ZXAg
PSBidWZmZXJMZW5ndGggLyBHbHlwaFBhZ2U6OnNpemU7Ci0gICAgfQorICAgIGlmIChzaG91bGRG
aWxsV2l0aFZlcnRpY2FsR2x5cGhzKGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCBmb250KSkKKyAgICAg
ICAgQ1RGb250R2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRh
KCkuY3RGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICBl
bHNlCisgICAgICAgIENURm9udEdldEdseXBoc0ZvckNoYXJhY3RlcnMoZm9udC5wbGF0Zm9ybURh
dGEoKS5jdEZvbnQoKSwgYnVmZmVyLCBnbHlwaHMuZGF0YSgpLCBidWZmZXJMZW5ndGgpOworICAg
IHVuc2lnbmVkIGdseXBoU3RlcCA9IGJ1ZmZlckxlbmd0aCAvIEdseXBoUGFnZTo6c2l6ZTsKKyAg
ICBVTlVTRURfUEFSQU0oZ2x5cGhTdGVwKTsKKworI2lmIEdMWVBIX1BBR0VTX0lOQ0xVREVfQURW
QU5DRVMKKyAgICBWZWN0b3I8Q0dHbHlwaD4gY29tcHJlc3NlZEdseXBoczsKKyAgICBjb21wcmVz
c2VkR2x5cGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoR2x5cGhQYWdlOjpzaXplKTsKKyAgICBp
ZiAoZ2x5cGhTdGVwID09IDIpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEds
eXBoUGFnZTo6c2l6ZTsgKytpKQorICAgICAgICAgICAgY29tcHJlc3NlZEdseXBocy5hcHBlbmQo
Z2x5cGhzW2kgKiBnbHlwaFN0ZXBdKTsKKyAgICB9IGVsc2UKKyAgICAgICAgQVNTRVJUKGdseXBo
U3RlcCA9PSAxKTsKKyAgICBWZWN0b3I8ZmxvYXQ+IGFkdmFuY2VzKEdseXBoUGFnZTo6c2l6ZSwg
MC5mKTsKKyAgICBmb250LnBsYXRmb3JtV2lkdGhzRm9yR2x5cGhzKGNvbXByZXNzZWRHbHlwaHMu
c2l6ZSgpID8gY29tcHJlc3NlZEdseXBocy5kYXRhKCkgOiBnbHlwaHMuZGF0YSgpLCBHbHlwaFBh
Z2U6OnNpemUsIGFkdmFuY2VzLmRhdGEoKSk7CisjZW5kaWYKIAogICAgIGJvb2wgaGF2ZUdseXBo
cyA9IGZhbHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNpemU7
ICsraSkgewogICAgICAgICBpZiAoZ2x5cGhzW2kgKiBnbHlwaFN0ZXBdKSB7Ci0gICAgICAgICAg
ICBzZXRHbHlwaEZvckluZGV4KGksIGdseXBoc1tpICogZ2x5cGhTdGVwXSk7CisgICAgICAgICAg
ICBDR0dseXBoIGdseXBoID0gZ2x5cGhzW2kgKiBnbHlwaFN0ZXBdOworICAgICAgICAgICAgc2V0
R2x5cGhGb3JJbmRleChpLCBnbHlwaCk7CisjaWYgR0xZUEhfUEFHRVNfSU5DTFVERV9BRFZBTkNF
UworICAgICAgICAgICAgc2V0QWR2YW5jZUZvckluZGV4KGksIGdseXBoID09IGZvbnQuemVyb1dp
ZHRoU3BhY2VHbHlwaCgpID8gMCA6IGFkdmFuY2VzW2ldKTsKKyNlbmRpZgogICAgICAgICAgICAg
aGF2ZUdseXBocyA9IHRydWU7CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288496</attachid>
            <date>2016-09-10 14:12:21 -0700</date>
            <delta_ts>2016-09-10 14:19:27 -0700</delta_ts>
            <desc>ASSERTs testing</desc>
            <filename>bug-161809-20160910140952.patch</filename>
            <type>text/plain</type>
            <size>16820</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjVmYWU2ZTQ1OWVjMjBkZmQ2MTdiM2VhZjAyZTYxZmYyZDNkYjE3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFu
Y2Ugb2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2Y0NjliYTk4YTFjYjU2YmJhZTA4NmFkNTI1NWNmYzMw
NzE5NTUwLi4wMDUwZmUzZDI2MzNmZGVhMmM3NzA3MjI2YjM1NDlhMDFjZDNiYzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQ
YWdlOjpmaWxsKToKKworMjAxNi0wOS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgorCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbWVtYmVyIG9mIEdseXBoQnVmZmVy
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4MTQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oIGIv
U291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCmluZGV4IDFkYzI3OTRmMDIx
MzgwZjFhNDQzMTkzZWQ3NTY5YmMzOGJkYjU2ZDguLjlkYmRhYThiOGNhYWQ5YWNkMzBjM2E2MTVj
NDczNDQ3YWRjZDcwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgK
QEAgLTcwLDYgKzcwLDcgQEAgY29uc3QgVUNoYXIgbWludXNTaWduID0gMHgyMjEyOwogY29uc3Qg
VUNoYXIgbmFycm93Tm9uQnJlYWtpbmdTcGFjZSA9IDB4MjAyRjsKIGNvbnN0IFVDaGFyIG5ld2xp
bmVDaGFyYWN0ZXIgPSAweDAwMEE7CiBjb25zdCBVQ2hhciBub0JyZWFrU3BhY2UgPSAweDAwQTA7
Citjb25zdCBVQ2hhciBuYXJyb3dOb0JyZWFrU3BhY2UgPSAweDIwMkY7CiBjb25zdCBVQ2hhciBv
YmplY3RSZXBsYWNlbWVudENoYXJhY3RlciA9IDB4RkZGQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVj
dGlvbmFsRm9ybWF0dGluZyA9IDB4MjAyQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVjdGlvbmFsSXNv
bGF0ZSA9IDB4MjA2OTsKQEAgLTEzMiw2ICsxMzMsNyBAQCB1c2luZyBXVEY6OlVuaWNvZGU6Om1p
bnVzU2lnbjsKIHVzaW5nIFdURjo6VW5pY29kZTo6bmFycm93Tm9uQnJlYWtpbmdTcGFjZTsKIHVz
aW5nIFdURjo6VW5pY29kZTo6bmV3bGluZUNoYXJhY3RlcjsKIHVzaW5nIFdURjo6VW5pY29kZTo6
bm9CcmVha1NwYWNlOwordXNpbmcgV1RGOjpVbmljb2RlOjpuYXJyb3dOb0JyZWFrU3BhY2U7CiB1
c2luZyBXVEY6OlVuaWNvZGU6Om9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpwb3BEaXJlY3Rpb25hbEZvcm1hdHRpbmc7CiB1c2luZyBXVEY6OlVuaWNvZGU6
OnBvcERpcmVjdGlvbmFsSXNvbGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKaW5kZXggNDgzNDA5NTIzOWUyMjAzNzNlYTQxMDhhY2EzMzFkMzFhNDQ0MDM0Ni4u
NmQyNGQyMGU1YTY3YmQ3OTI3ZGIzYjg4ZjI1MTllMjEwNDUxZjNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTE4Nyw2ICsxODcsNyBAQCBzdGF0aWMg
UmVmUHRyPEdseXBoUGFnZT4gY3JlYXRlQW5kRmlsbEdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVt
YmVyLCBjb25zdCBGb250JgogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1xuJywgc3BhY2Up
OwogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1x0Jywgc3BhY2UpOwogICAgICAgICBvdmVy
d3JpdGVDb2RlUG9pbnQobm9CcmVha1NwYWNlLCBzcGFjZSk7CisgICAgICAgIG92ZXJ3cml0ZUNv
ZGVQb2ludChuYXJyb3dOb0JyZWFrU3BhY2UsIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3Zl
cndyaXRlQ29kZVBvaW50KGxlZnRUb1JpZ2h0TWFyaywgemVyb1dpZHRoU3BhY2UpOwogICAgICAg
ICBvdmVyd3JpdGVDb2RlUG9pbnQocmlnaHRUb0xlZnRNYXJrLCB6ZXJvV2lkdGhTcGFjZSk7CiAg
ICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludChsZWZ0VG9SaWdodEVtYmVkLCB6ZXJvV2lkdGhTcGFj
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOTE4ZGM5OTA4
N2Y4YjM1MGFmMmQxYjhkNzc5YTQwNjM0Zjk1NDI1My4uODQ0OTgxYTdjN2M4NDE4ODNjZTQ4ZjVi
YmMwNmEwY2E2OGRhYjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCB3aWR0aEZvckdseXBoKEds
eXBoKSBjb25zdDsKICAgICBGbG9hdFJlY3QgcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlwaCkg
Y29uc3Q7CiAgICAgZmxvYXQgcGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoKSBjb25zdDsKKyAg
ICB2b2lkIHBsYXRmb3JtV2lkdGhzRm9yR2x5cGhzKEdseXBoKiwgdW5zaWduZWQgbGVuZ3RoLCBm
bG9hdCogcmVzdWx0KSBjb25zdDsKIAogICAgIGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3NwYWNlV2lkdGg7IH0KICAgICBmbG9hdCBhZGp1c3RlZFNwYWNlV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX2FkanVzdGVkU3BhY2VXaWR0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaAppbmRleCBhMWE1OTQ0ZmQ2MmY4ZTg0ZTBmNDBlNzdh
N2Y2YzM1NWM2NDA0ZGU0Li5iYzZmNDE4ZTM2ODRhZGMyODM3NjhlYjNkNGM4NDM5OWQwOTgxYTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaApAQCAt
MzEsMTAgKzMxLDEyIEBACiAjZGVmaW5lIEdseXBoUGFnZV9oCiAKICNpbmNsdWRlICJHbHlwaC5o
IgotI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHVuaWNv
ZGUvdXR5cGVzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDkgKzQ1LDEwIEBAIGNsYXNzIEZvbnQ7
CiAvLyBIb2xkcyB0aGUgZ2x5cGggaW5kZXggYW5kIHRoZSBjb3JyZXNwb25kaW5nIEZvbnQgaW5m
b3JtYXRpb24gZm9yIGEgZ2l2ZW4KIC8vIGNoYXJhY3Rlci4KIHN0cnVjdCBHbHlwaERhdGEgewot
ICAgIEdseXBoRGF0YShHbHlwaCBnID0gMCwgY29uc3QgRm9udCogZiA9IDApCi0gICAgICAgIDog
Z2x5cGgoZykKLSAgICAgICAgLCBmb250KGYpCisgICAgR2x5cGhEYXRhKEdseXBoIGdseXBoID0g
MCwgY29uc3QgRm9udCogZm9udCA9IDAsIE9wdGlvbmFsPGZsb2F0PiBhZHZhbmNlID0gTnVsbG9w
dCkKKyAgICAgICAgOiBnbHlwaChnbHlwaCkKKyAgICAgICAgLCBmb250KGZvbnQpCisgICAgICAg
ICwgYWR2YW5jZShhZHZhbmNlKQogICAgIHsKICAgICB9CiAKQEAgLTUzLDYgKzU2LDcgQEAgc3Ry
dWN0IEdseXBoRGF0YSB7CiAKICAgICBHbHlwaCBnbHlwaDsKICAgICBjb25zdCBGb250KiBmb250
OworICAgIE9wdGlvbmFsPGZsb2F0PiBhZHZhbmNlOwogfTsKIAogLy8gQSBHbHlwaFBhZ2UgY29u
dGFpbnMgYSBmaXhlZC1zaXplIHNldCBvZiBHbHlwaERhdGEgbWFwcGluZ3MgZm9yIGEgY29udGln
dW91cwpAQCAtOTAsMTAgKzk0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdseXBoRm9y
SW5kZXgoaW5kZXhGb3JDb2RlUG9pbnQoYykpOwogICAgIH0KIAorICAgIE9wdGlvbmFsPGZsb2F0
PiBhZHZhbmNlRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYykgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZHZhbmNlRm9ySW5kZXgoaW5kZXhGb3JDb2RlUG9pbnQoYykpOworICAgIH0KKwogICAg
IEdseXBoRGF0YSBnbHlwaERhdGFGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7
CiAgICAgICAgIEdseXBoIGdseXBoID0gZ2x5cGhGb3JJbmRleChpbmRleCk7Ci0gICAgICAgIHJl
dHVybiBHbHlwaERhdGEoZ2x5cGgsIGdseXBoID8gJm1fZm9udCA6IG51bGxwdHIpOworICAgICAg
ICByZXR1cm4gR2x5cGhEYXRhKGdseXBoLCBnbHlwaCA/ICZtX2ZvbnQgOiBudWxscHRyLCBhZHZh
bmNlRm9ySW5kZXgoaW5kZXgpKTsKICAgICB9CiAKICAgICBHbHlwaCBnbHlwaEZvckluZGV4KHVu
c2lnbmVkIGluZGV4KSBjb25zdApAQCAtMTAyLDYgKzExMSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2dseXBoc1tpbmRleF07CiAgICAgfQogCisgICAgT3B0aW9uYWw8ZmxvYXQ+IGFk
dmFuY2VGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgc2l6ZSk7CisgICAgICAgIGlmICht
X2FkdmFuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07CisgICAgfQorCiAgICAgLy8gRklYTUU6IFBhZ2Vz
IGFyZSBpbW11dGFibGUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uIFRoaXMgc2hvdWxkIGJlIHByaXZh
dGUuCiAgICAgdm9pZCBzZXRHbHlwaEZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBHbHlwaCBnbHlw
aCkKICAgICB7CkBAIC0xMDksNiArMTI2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9nbHlwaHNb
aW5kZXhdID0gZ2x5cGg7CiAgICAgfQogCisgICAgdm9pZCBzZXRBZHZhbmNlRm9ySW5kZXgodW5z
aWduZWQgaW5kZXgsIGZsb2F0IGFkdmFuY2UpCisgICAgeworICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHNpemUpOworICAgICAgICBpZiAobV9hZHZhbmNl
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fYWR2YW5jZXMuZ3JvdyhzaXplKTsKKyAgICAg
ICAgICAgIG1fYWR2YW5jZXMuZmlsbCgwKTsKKyAgICAgICAgfQorICAgICAgICBtX2FkdmFuY2Vz
W2luZGV4XSA9IGFkdmFuY2U7CisgICAgfQorCiAgICAgY29uc3QgRm9udCYgZm9udCgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb250OwpAQCAtMTIxLDExICsxNDgsMTMgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBHbHlwaFBhZ2UoY29uc3QgRm9udCYgZm9udCkKICAgICAgICAg
OiBtX2ZvbnQoZm9udCkKICAgICB7CisgICAgICAgIG1fZ2x5cGhzLmZpbGwoMCk7CiAgICAgICAg
ICsrc19jb3VudDsKICAgICB9CiAKICAgICBjb25zdCBGb250JiBtX2ZvbnQ7Ci0gICAgR2x5cGgg
bV9nbHlwaHNbc2l6ZV0geyB9OworICAgIHN0ZDo6YXJyYXk8R2x5cGgsIHNpemU+IG1fZ2x5cGhz
OworICAgIFZlY3RvcjxmbG9hdD4gbV9hZHZhbmNlczsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB1bnNpZ25lZCBzX2NvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggMzZmYmEwZjlkMDZmODc5NzZlNWFl
ZDBiYTA5YWE2NmE1OWE1MDdjZC4uOWYzNWY0OTYzYTNiMGM1MDhkY2E2MzhiYzQzOWYzODA5Mjkw
MzM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKQEAgLTIwNyw3ICsyMDcsMTAgQEAgaW5saW5lIHVuc2lnbmVkIFdpZHRoSXRl
cmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwgR2x5cGgK
ICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnXHQnICYmIG1fcnVuLmFsbG93VGFicygpKQogICAg
ICAgICAgICAgd2lkdGggPSBtX2ZvbnQtPnRhYldpZHRoKCpmb250LCBtX3J1bi50YWJTaXplKCks
IG1fcnVuLnhQb3MoKSArIG1fcnVuV2lkdGhTb0ZhciArIHdpZHRoU2luY2VMYXN0Um91bmRpbmcp
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHdpZHRoID0gZm9udC0+d2lkdGhGb3JHbHlw
aChnbHlwaCk7CisgICAgICAgICAgICB3aWR0aCA9IGdseXBoRGF0YS5hZHZhbmNlLnZhbHVlT3JD
b21wdXRlKFsmXSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvbnQtPndpZHRoRm9yR2x5cGgo
Z2x5cGgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBBU1NFUlQod2lkdGggPT0gZm9u
dC0+d2lkdGhGb3JHbHlwaChnbHlwaCkpOwogCiAgICAgICAgICAgICAvLyBTVkcgdXNlcyBob3Jp
em9udGFsR2x5cGhTdHJldGNoKCksIHdoZW4gdGV4dExlbmd0aCBpcyB1c2VkIHRvIHN0cmV0Y2gv
c3F1ZWV6ZSB0ZXh0LgogICAgICAgICAgICAgd2lkdGggKj0gbV9ydW4uaG9yaXpvbnRhbEdseXBo
U3RyZXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tCmluZGV4IGMwZGI0Y2M5ZGY1MjQ5Yzk5MzFlMTIxMjA2NDE1YzNmNTZi
NzM1ZjEuLjMxMzYwYjE5ZjEzZDYzMzM4NzU1OGY4YTNlZTAxMTJlNWY1MmE1NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0K
QEAgLTU5Niw3ICs1OTYsMjggQEAgRmxvYXRSZWN0IEZvbnQ6OnBsYXRmb3JtQm91bmRzRm9yR2x5
cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kaW5nQm94OwogfQogCi0jaWYg
ISgoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAwMDAwKSkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKQordm9pZCBGb250OjpwbGF0Zm9ybVdpZHRo
c0ZvckdseXBocyhHbHlwaCogZ2x5cGhzLCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0KiByZXN1bHQp
IGNvbnN0Cit7CisgICAgVmVjdG9yPENHU2l6ZT4gYWR2YW5jZXMobGVuZ3RoLCBDR1NpemVaZXJv
KTsKKyAgICBib29sIGhvcml6b250YWwgPSBwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWw7CisgICAgQ0dGb250UmVuZGVyaW5nU3R5bGUgc3R5bGUgPSBrQ0dGb250UmVu
ZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFBv
c2l0aW9uaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxRdWFudGl6YXRpb24gfCBr
Q0dGb250QW50aWFsaWFzaW5nU3R5bGVVbmZpbHRlcmVkOworCisgICAgaWYgKHBsYXRmb3JtRGF0
YSgpLnNpemUoKSkgeworICAgICAgICBDVEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGhv
cml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNrID8ga0NURm9udE9yaWVudGF0
aW9uSG9yaXpvbnRhbCA6IGtDVEZvbnRPcmllbnRhdGlvblZlcnRpY2FsOworICAgICAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgc3BlY2lhbC1jYXNpbmcgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjgx
OTcyOTE+IGlzIGZpeGVkLgorICAgICAgICBpZiAoQ1RGb250SXNBcHBsZUNvbG9yRW1vamkobV9w
bGF0Zm9ybURhdGEuY3RGb250KCkpKQorICAgICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JH
bHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIG9yaWVudGF0aW9uLCBnbHlwaHMsIGFkdmFu
Y2VzLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQ1RGb250R2V0
VW5zdW1tZWRBZHZhbmNlc0ZvckdseXBoc0FuZFN0eWxlKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgp
LCBvcmllbnRhdGlvbiwgc3R5bGUsIGdseXBocywgYWR2YW5jZXMuZGF0YSgpLCBsZW5ndGgpOwor
ICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAg
ICAgcmVzdWx0W2ldID0gYWR2YW5jZXNbaV0ud2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7
Cit9CisKKyNlbHNlCisKIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Q0dTaXplPiBhZHZhbmNlRm9y
Q29sb3JCaXRtYXBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgR2x5
cGggZ2x5cGgpCiB7CiAgICAgQ1RGb250UmVmIGZvbnQgPSBwbGF0Zm9ybURhdGEuZm9udCgpOwpA
QCAtNjIyLDIyICs2NDMsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGNhblVzZUZhc3RHbHlwaEFk
dmFuY2VHZXR0ZXIoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm0KIAogZmxvYXQgRm9u
dDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogewotICAgIENHU2l6
ZSBhZHZhbmNlID0gQ0dTaXplWmVybzsKLSAgICBib29sIGhvcml6b250YWwgPSBwbGF0Zm9ybURh
dGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWw7Ci0gICAgQ0dGb250UmVuZGVyaW5nU3R5
bGUgc3R5bGUgPSBrQ0dGb250UmVuZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmcgfCBrQ0dGb250UmVu
ZGVyaW5nU3R5bGVTdWJwaXhlbFBvc2l0aW9uaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3Vi
cGl4ZWxRdWFudGl6YXRpb24gfCBrQ0dGb250QW50aWFsaWFzaW5nU3R5bGVVbmZpbHRlcmVkOwot
CiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMDAwMCkKLSAgICBpZiAocGxhdGZvcm1EYXRhKCkuc2l6ZSgpKSB7Ci0gICAg
ICAgIENURm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gaG9yaXpvbnRhbCB8fCBtX2lzQnJv
a2VuSWRlb2dyYXBoRmFsbGJhY2sgPyBrQ1RGb250T3JpZW50YXRpb25Ib3Jpem9udGFsIDoga0NU
Rm9udE9yaWVudGF0aW9uVmVydGljYWw7Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBz
cGVjaWFsLWNhc2luZyB3aGVuIDxyZGFyOi8vcHJvYmxlbS8yODE5NzI5MT4gaXMgZml4ZWQuCi0g
ICAgICAgIGlmIChDVEZvbnRJc0FwcGxlQ29sb3JFbW9qaShtX3BsYXRmb3JtRGF0YS5jdEZvbnQo
KSkpCi0gICAgICAgICAgICBDVEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0
YS5jdEZvbnQoKSwgb3JpZW50YXRpb24sICZnbHlwaCwgJmFkdmFuY2UsIDEpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBDVEZvbnRHZXRVbnN1bW1lZEFkdmFuY2VzRm9yR2x5cGhzQW5kU3R5
bGUobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIG9yaWVudGF0aW9uLCBzdHlsZSwgJmdseXBoLCAm
YWR2YW5jZSwgMSk7Ci0gICAgfQorICAgIGZsb2F0IHJlc3VsdDsKKyAgICBwbGF0Zm9ybVdpZHRo
c0ZvckdseXBocygmZ2x5cGgsIDEsICZyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiAKICNl
bHNlCiAKKyAgICBDR1NpemUgYWR2YW5jZSA9IENHU2l6ZVplcm87CisgICAgYm9vbCBob3Jpem9u
dGFsID0gcGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsOworICAgIENH
Rm9udFJlbmRlcmluZ1N0eWxlIHN0eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFz
aW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRS
ZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVhbnRpemF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0
eWxlVW5maWx0ZXJlZDsKKwogICAgIGJvb2wgcG9wdWxhdGVkQWR2YW5jZSA9IGZhbHNlOwogICAg
IGlmICgoaG9yaXpvbnRhbCB8fCBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJhY2spICYmIGNhblVz
ZUZhc3RHbHlwaEFkdmFuY2VHZXR0ZXIodGhpcy0+cGxhdGZvcm1EYXRhKCksIGdseXBoLCBhZHZh
bmNlLCBwb3B1bGF0ZWRBZHZhbmNlKSkgewogICAgICAgICBmbG9hdCBwb2ludFNpemUgPSBwbGF0
Zm9ybURhdGEoKS5zaXplKCk7CkBAIC02NDksOSArNjY1LDkgQEAgZmxvYXQgRm9udDo6cGxhdGZv
cm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmICghcG9wdWxhdGVkQWR2YW5jZSAmJiBwbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAg
IENURm9udEdldEFkdmFuY2VzRm9yR2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBob3Jp
em9udGFsID8ga0NURm9udE9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IGtDVEZvbnRPcmllbnRhdGlv
blZlcnRpY2FsLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIGFk
dmFuY2Uud2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7CisjZW5kaWYKIH0KIAogc3RydWN0
IFByb3ZpZGVySW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR2x5cGhQYWdlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwCmluZGV4IGYzOWM4ZGMwNTlmNTI4NjZhMjY2OTljNzQ0
YzA3NGYxNDcxYzM4YzEuLjJiNGVjOGFlOWM4OWE1ZjJjNzNiNjI3YzY1NGM1NzlhYTNlOWI0MjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBh
Z2VNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlw
aFBhZ2VNYWMuY3BwCkBAIC01NCw0MSArNTQsODIgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlQ29y
ZVRleHQoY29uc3QgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdAog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KIAorc3RhdGljIGJvb2wgc2hvdWxkRmlsbFdpdGhWZXJ0aWNhbEdseXBocyhj
b25zdCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZvbnQmIGZv
bnQpCit7CisgICAgaWYgKCFmb250Lmhhc1ZlcnRpY2FsR2x5cGhzKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVmZmVyTGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgaWYgKCFGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGgoYnVmZmVyW2ldKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
KyNkZWZpbmUgR0xZUEhfUEFHRVNfSU5DTFVERV9BRFZBTkNFUyAoKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IChQTEFURk9STShJ
T1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkpCisKIGJv
b2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkK
IHsKICAgICBBU1NFUlQoYnVmZmVyTGVuZ3RoID09IEdseXBoUGFnZTo6c2l6ZSB8fCBidWZmZXJM
ZW5ndGggPT0gMiAqIEdseXBoUGFnZTo6c2l6ZSk7CiAKICAgICBjb25zdCBGb250JiBmb250ID0g
dGhpcy0+Zm9udCgpOwogICAgIFZlY3RvcjxDR0dseXBoLCA1MTI+IGdseXBocyhidWZmZXJMZW5n
dGgpOwotICAgIHVuc2lnbmVkIGdseXBoU3RlcDsKKworICAgIFZlY3RvcjxDR0dseXBoLCA1MTI+
IGdseXBoczIoYnVmZmVyTGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBnbHlwaFN0ZXAyOwogICAgIGlm
ICghc2hvdWxkVXNlQ29yZVRleHQoYnVmZmVyLCBidWZmZXJMZW5ndGgsIGZvbnQpKSB7CiAgICAg
ICAgIC8vIFdlIHBhc3MgaW4gZWl0aGVyIDI1NiBvciA1MTIgVVRGLTE2IGNoYXJhY3RlcnM6IDI1
NiBmb3IgVStGRkZGIGFuZCBsZXNzLCA1MTIgKGRvdWJsZSBjaGFyYWN0ZXIgc3Vycm9nYXRlcykK
ICAgICAgICAgLy8gZm9yIFUrMTAwMDAgYW5kIGFib3ZlLiBJdCBpcyBpbmRlZWQgcG9zc2libGUg
dG8gZ2V0IGJhY2sgNTEyIGdseXBocyBiYWNrIGZyb20gdGhlIEFQSSwgc28gdGhlIGdseXBoIGJ1
ZmZlcgogICAgICAgICAvLyB3ZSBwYXNzIGluIG11c3QgYmUgNTEyLiBJZiB3ZSBnZXQgYmFjayBt
b3JlIHRoYW4gMjU2IGdseXBocyB0aG91Z2ggd2UnbGwgaWdub3JlIGFsbCB0aGUgb25lcyBhZnRl
ciAyNTYsCiAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gYXMgdGhlIG9ubHkgdGlt
ZSB3ZSBwYXNzIGluIDUxMiBjaGFyYWN0ZXJzIGlzIHdoZW4gdGhleSBhcmUgc3Vycm9nYXRlcy4K
LSAgICAgICAgQ0dGb250R2V0R2x5cGhzRm9yVW5pY2hhcnMoZm9udC5wbGF0Zm9ybURhdGEoKS5j
Z0ZvbnQoKSwgYnVmZmVyLCBnbHlwaHMuZGF0YSgpLCBidWZmZXJMZW5ndGgpOwotICAgICAgICBn
bHlwaFN0ZXAgPSAxOworICAgICAgICBDR0ZvbnRHZXRHbHlwaHNGb3JVbmljaGFycyhmb250LnBs
YXRmb3JtRGF0YSgpLmNnRm9udCgpLCBidWZmZXIsIGdseXBoczIuZGF0YSgpLCBidWZmZXJMZW5n
dGgpOworICAgICAgICBnbHlwaFN0ZXAyID0gMTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBC
ZWNhdXNlIHdlIGtub3cgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNob3VsZFVzZUNvcmVUZXh0KCks
IGlmIHRoZSBmb250IGlzbid0IGZvciB0ZXh0IGNvbWJpbmUgYW5kIGl0IGlzbid0IGEgc3lzdGVt
IGZvbnQsCiAgICAgICAgIC8vIHdlIGtub3cgaXQgbXVzdCBoYXZlIHZlcnRpY2FsIGdseXBocy4K
ICAgICAgICAgaWYgKGZvbnQucGxhdGZvcm1EYXRhKCkuaXNGb3JUZXh0Q29tYmluZSgpIHx8IGZv
bnQucGxhdGZvcm1EYXRhKCkuaXNTeXN0ZW1Gb250KCkpCi0gICAgICAgICAgICBDVEZvbnRHZXRH
bHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RGb250KCksIGJ1ZmZlciwg
Z2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgICAgIENURm9udEdldEdseXBo
c0ZvckNoYXJhY3RlcnMoZm9udC5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgYnVmZmVyLCBnbHlw
aHMyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgQ1RG
b250R2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RG
b250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgICAg
IENURm9udEdldFZlcnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycyhmb250LnBsYXRmb3JtRGF0YSgp
LmN0Rm9udCgpLCBidWZmZXIsIGdseXBoczIuZGF0YSgpLCBidWZmZXJMZW5ndGgpOwogCi0gICAg
ICAgIC8vIFdoZW4gYnVmZmVyIGNvbnNpc3RzIG9mIHN1cnJvZ2F0ZSBwYWlycywgQ1RGb250R2V0
VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzIGFuZCBDVEZvbnRHZXRHbHlwaHNGb3JDaGFyYWN0
ZXJzCisgICAgICAgICAvLyBXaGVuIGJ1ZmZlciBjb25zaXN0cyBvZiBzdXJyb2dhdGUgcGFpcnMs
IENURm9udEdldFZlcnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycyBhbmQgQ1RGb250R2V0R2x5cGhz
Rm9yQ2hhcmFjdGVycwogICAgICAgICAvLyBwbGFjZSB0aGUgZ2x5cGhzIGF0IGluZGljZXMgY29y
cmVzcG9uZGluZyB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGVhY2ggcGFpci4KLSAgICAgICAg
Z2x5cGhTdGVwID0gYnVmZmVyTGVuZ3RoIC8gR2x5cGhQYWdlOjpzaXplOworICAgICAgICBnbHlw
aFN0ZXAyID0gYnVmZmVyTGVuZ3RoIC8gR2x5cGhQYWdlOjpzaXplOwogICAgIH0KIAorICAgIGlm
IChzaG91bGRGaWxsV2l0aFZlcnRpY2FsR2x5cGhzKGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCBmb250
KSkKKyAgICAgICAgQ1RGb250R2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxh
dGZvcm1EYXRhKCkuY3RGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3Ro
KTsKKyAgICBlbHNlCisgICAgICAgIENURm9udEdldEdseXBoc0ZvckNoYXJhY3RlcnMoZm9udC5w
bGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgYnVmZmVyLCBnbHlwaHMuZGF0YSgpLCBidWZmZXJMZW5n
dGgpOworICAgIHVuc2lnbmVkIGdseXBoU3RlcCA9IGJ1ZmZlckxlbmd0aCAvIEdseXBoUGFnZTo6
c2l6ZTsKKyAgICBVTlVTRURfUEFSQU0oZ2x5cGhTdGVwKTsKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNpemU7ICsraSkgeworICAgICAgICBBU1NFUlQoZ2x5cGhz
W2kgKiBnbHlwaFN0ZXBdID09IGdseXBoczJbaSAqIGdseXBoU3RlcDJdKTsKKyAgICB9CisKKyNp
ZiBHTFlQSF9QQUdFU19JTkNMVURFX0FEVkFOQ0VTCisgICAgVmVjdG9yPENHR2x5cGg+IGNvbXBy
ZXNzZWRHbHlwaHM7CisgICAgY29tcHJlc3NlZEdseXBocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KEdseXBoUGFnZTo6c2l6ZSk7CisgICAgaWYgKGdseXBoU3RlcCA9PSAyKSB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNpemU7ICsraSkKKyAgICAgICAgICAg
IGNvbXByZXNzZWRHbHlwaHMuYXBwZW5kKGdseXBoc1tpICogZ2x5cGhTdGVwXSk7CisgICAgfSBl
bHNlCisgICAgICAgIEFTU0VSVChnbHlwaFN0ZXAgPT0gMSk7CisgICAgVmVjdG9yPGZsb2F0PiBh
ZHZhbmNlcyhHbHlwaFBhZ2U6OnNpemUsIDAuZik7CisgICAgZm9udC5wbGF0Zm9ybVdpZHRoc0Zv
ckdseXBocyhjb21wcmVzc2VkR2x5cGhzLnNpemUoKSA/IGNvbXByZXNzZWRHbHlwaHMuZGF0YSgp
IDogZ2x5cGhzLmRhdGEoKSwgR2x5cGhQYWdlOjpzaXplLCBhZHZhbmNlcy5kYXRhKCkpOworI2Vu
ZGlmCisKICAgICBib29sIGhhdmVHbHlwaHMgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgR2x5cGhQYWdlOjpzaXplOyArK2kpIHsKICAgICAgICAgaWYgKGdseXBoc1tpICog
Z2x5cGhTdGVwXSkgewotICAgICAgICAgICAgc2V0R2x5cGhGb3JJbmRleChpLCBnbHlwaHNbaSAq
IGdseXBoU3RlcF0pOworICAgICAgICAgICAgQ0dHbHlwaCBnbHlwaCA9IGdseXBoc1tpICogZ2x5
cGhTdGVwXTsKKyAgICAgICAgICAgIHNldEdseXBoRm9ySW5kZXgoaSwgZ2x5cGgpOworI2lmIEdM
WVBIX1BBR0VTX0lOQ0xVREVfQURWQU5DRVMKKyAgICAgICAgICAgIHNldEFkdmFuY2VGb3JJbmRl
eChpLCBnbHlwaCA9PSBmb250Lnplcm9XaWR0aFNwYWNlR2x5cGgoKSA/IDAgOiBhZHZhbmNlc1tp
XSk7CisjZW5kaWYKICAgICAgICAgICAgIGhhdmVHbHlwaHMgPSB0cnVlOwogICAgICAgICB9CiAg
ICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288497</attachid>
            <date>2016-09-10 14:19:32 -0700</date>
            <delta_ts>2016-09-11 23:51:35 -0700</delta_ts>
            <desc>Measuring perf</desc>
            <filename>bug-161809-20160910141702.patch</filename>
            <type>text/plain</type>
            <size>16679</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjVmYWU2ZTQ1OWVjMjBkZmQ2MTdiM2VhZjAyZTYxZmYyZDNkYjE3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFu
Y2Ugb2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2Y0NjliYTk4YTFjYjU2YmJhZTA4NmFkNTI1NWNmYzMw
NzE5NTUwLi4wMDUwZmUzZDI2MzNmZGVhMmM3NzA3MjI2YjM1NDlhMDFjZDNiYzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQ
YWdlOjpmaWxsKToKKworMjAxNi0wOS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgorCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbWVtYmVyIG9mIEdseXBoQnVmZmVy
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4MTQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oIGIv
U291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCmluZGV4IDFkYzI3OTRmMDIx
MzgwZjFhNDQzMTkzZWQ3NTY5YmMzOGJkYjU2ZDguLjlkYmRhYThiOGNhYWQ5YWNkMzBjM2E2MTVj
NDczNDQ3YWRjZDcwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgK
QEAgLTcwLDYgKzcwLDcgQEAgY29uc3QgVUNoYXIgbWludXNTaWduID0gMHgyMjEyOwogY29uc3Qg
VUNoYXIgbmFycm93Tm9uQnJlYWtpbmdTcGFjZSA9IDB4MjAyRjsKIGNvbnN0IFVDaGFyIG5ld2xp
bmVDaGFyYWN0ZXIgPSAweDAwMEE7CiBjb25zdCBVQ2hhciBub0JyZWFrU3BhY2UgPSAweDAwQTA7
Citjb25zdCBVQ2hhciBuYXJyb3dOb0JyZWFrU3BhY2UgPSAweDIwMkY7CiBjb25zdCBVQ2hhciBv
YmplY3RSZXBsYWNlbWVudENoYXJhY3RlciA9IDB4RkZGQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVj
dGlvbmFsRm9ybWF0dGluZyA9IDB4MjAyQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVjdGlvbmFsSXNv
bGF0ZSA9IDB4MjA2OTsKQEAgLTEzMiw2ICsxMzMsNyBAQCB1c2luZyBXVEY6OlVuaWNvZGU6Om1p
bnVzU2lnbjsKIHVzaW5nIFdURjo6VW5pY29kZTo6bmFycm93Tm9uQnJlYWtpbmdTcGFjZTsKIHVz
aW5nIFdURjo6VW5pY29kZTo6bmV3bGluZUNoYXJhY3RlcjsKIHVzaW5nIFdURjo6VW5pY29kZTo6
bm9CcmVha1NwYWNlOwordXNpbmcgV1RGOjpVbmljb2RlOjpuYXJyb3dOb0JyZWFrU3BhY2U7CiB1
c2luZyBXVEY6OlVuaWNvZGU6Om9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpwb3BEaXJlY3Rpb25hbEZvcm1hdHRpbmc7CiB1c2luZyBXVEY6OlVuaWNvZGU6
OnBvcERpcmVjdGlvbmFsSXNvbGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKaW5kZXggNDgzNDA5NTIzOWUyMjAzNzNlYTQxMDhhY2EzMzFkMzFhNDQ0MDM0Ni4u
NmQyNGQyMGU1YTY3YmQ3OTI3ZGIzYjg4ZjI1MTllMjEwNDUxZjNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTE4Nyw2ICsxODcsNyBAQCBzdGF0aWMg
UmVmUHRyPEdseXBoUGFnZT4gY3JlYXRlQW5kRmlsbEdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVt
YmVyLCBjb25zdCBGb250JgogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1xuJywgc3BhY2Up
OwogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1x0Jywgc3BhY2UpOwogICAgICAgICBvdmVy
d3JpdGVDb2RlUG9pbnQobm9CcmVha1NwYWNlLCBzcGFjZSk7CisgICAgICAgIG92ZXJ3cml0ZUNv
ZGVQb2ludChuYXJyb3dOb0JyZWFrU3BhY2UsIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3Zl
cndyaXRlQ29kZVBvaW50KGxlZnRUb1JpZ2h0TWFyaywgemVyb1dpZHRoU3BhY2UpOwogICAgICAg
ICBvdmVyd3JpdGVDb2RlUG9pbnQocmlnaHRUb0xlZnRNYXJrLCB6ZXJvV2lkdGhTcGFjZSk7CiAg
ICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludChsZWZ0VG9SaWdodEVtYmVkLCB6ZXJvV2lkdGhTcGFj
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOTE4ZGM5OTA4
N2Y4YjM1MGFmMmQxYjhkNzc5YTQwNjM0Zjk1NDI1My4uODQ0OTgxYTdjN2M4NDE4ODNjZTQ4ZjVi
YmMwNmEwY2E2OGRhYjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCB3aWR0aEZvckdseXBoKEds
eXBoKSBjb25zdDsKICAgICBGbG9hdFJlY3QgcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlwaCkg
Y29uc3Q7CiAgICAgZmxvYXQgcGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoKSBjb25zdDsKKyAg
ICB2b2lkIHBsYXRmb3JtV2lkdGhzRm9yR2x5cGhzKEdseXBoKiwgdW5zaWduZWQgbGVuZ3RoLCBm
bG9hdCogcmVzdWx0KSBjb25zdDsKIAogICAgIGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3NwYWNlV2lkdGg7IH0KICAgICBmbG9hdCBhZGp1c3RlZFNwYWNlV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX2FkanVzdGVkU3BhY2VXaWR0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaAppbmRleCBhMWE1OTQ0ZmQ2MmY4ZTg0ZTBmNDBlNzdh
N2Y2YzM1NWM2NDA0ZGU0Li5iYzZmNDE4ZTM2ODRhZGMyODM3NjhlYjNkNGM4NDM5OWQwOTgxYTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaApAQCAt
MzEsMTAgKzMxLDEyIEBACiAjZGVmaW5lIEdseXBoUGFnZV9oCiAKICNpbmNsdWRlICJHbHlwaC5o
IgotI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHVuaWNv
ZGUvdXR5cGVzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDkgKzQ1LDEwIEBAIGNsYXNzIEZvbnQ7
CiAvLyBIb2xkcyB0aGUgZ2x5cGggaW5kZXggYW5kIHRoZSBjb3JyZXNwb25kaW5nIEZvbnQgaW5m
b3JtYXRpb24gZm9yIGEgZ2l2ZW4KIC8vIGNoYXJhY3Rlci4KIHN0cnVjdCBHbHlwaERhdGEgewot
ICAgIEdseXBoRGF0YShHbHlwaCBnID0gMCwgY29uc3QgRm9udCogZiA9IDApCi0gICAgICAgIDog
Z2x5cGgoZykKLSAgICAgICAgLCBmb250KGYpCisgICAgR2x5cGhEYXRhKEdseXBoIGdseXBoID0g
MCwgY29uc3QgRm9udCogZm9udCA9IDAsIE9wdGlvbmFsPGZsb2F0PiBhZHZhbmNlID0gTnVsbG9w
dCkKKyAgICAgICAgOiBnbHlwaChnbHlwaCkKKyAgICAgICAgLCBmb250KGZvbnQpCisgICAgICAg
ICwgYWR2YW5jZShhZHZhbmNlKQogICAgIHsKICAgICB9CiAKQEAgLTUzLDYgKzU2LDcgQEAgc3Ry
dWN0IEdseXBoRGF0YSB7CiAKICAgICBHbHlwaCBnbHlwaDsKICAgICBjb25zdCBGb250KiBmb250
OworICAgIE9wdGlvbmFsPGZsb2F0PiBhZHZhbmNlOwogfTsKIAogLy8gQSBHbHlwaFBhZ2UgY29u
dGFpbnMgYSBmaXhlZC1zaXplIHNldCBvZiBHbHlwaERhdGEgbWFwcGluZ3MgZm9yIGEgY29udGln
dW91cwpAQCAtOTAsMTAgKzk0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdseXBoRm9y
SW5kZXgoaW5kZXhGb3JDb2RlUG9pbnQoYykpOwogICAgIH0KIAorICAgIE9wdGlvbmFsPGZsb2F0
PiBhZHZhbmNlRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYykgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZHZhbmNlRm9ySW5kZXgoaW5kZXhGb3JDb2RlUG9pbnQoYykpOworICAgIH0KKwogICAg
IEdseXBoRGF0YSBnbHlwaERhdGFGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICB7
CiAgICAgICAgIEdseXBoIGdseXBoID0gZ2x5cGhGb3JJbmRleChpbmRleCk7Ci0gICAgICAgIHJl
dHVybiBHbHlwaERhdGEoZ2x5cGgsIGdseXBoID8gJm1fZm9udCA6IG51bGxwdHIpOworICAgICAg
ICByZXR1cm4gR2x5cGhEYXRhKGdseXBoLCBnbHlwaCA/ICZtX2ZvbnQgOiBudWxscHRyLCBhZHZh
bmNlRm9ySW5kZXgoaW5kZXgpKTsKICAgICB9CiAKICAgICBHbHlwaCBnbHlwaEZvckluZGV4KHVu
c2lnbmVkIGluZGV4KSBjb25zdApAQCAtMTAyLDYgKzExMSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2dseXBoc1tpbmRleF07CiAgICAgfQogCisgICAgT3B0aW9uYWw8ZmxvYXQ+IGFk
dmFuY2VGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgc2l6ZSk7CisgICAgICAgIGlmICht
X2FkdmFuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07CisgICAgfQorCiAgICAgLy8gRklYTUU6IFBhZ2Vz
IGFyZSBpbW11dGFibGUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uIFRoaXMgc2hvdWxkIGJlIHByaXZh
dGUuCiAgICAgdm9pZCBzZXRHbHlwaEZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBHbHlwaCBnbHlw
aCkKICAgICB7CkBAIC0xMDksNiArMTI2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9nbHlwaHNb
aW5kZXhdID0gZ2x5cGg7CiAgICAgfQogCisgICAgdm9pZCBzZXRBZHZhbmNlRm9ySW5kZXgodW5z
aWduZWQgaW5kZXgsIGZsb2F0IGFkdmFuY2UpCisgICAgeworICAgICAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IHNpemUpOworICAgICAgICBpZiAobV9hZHZhbmNl
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fYWR2YW5jZXMuZ3JvdyhzaXplKTsKKyAgICAg
ICAgICAgIG1fYWR2YW5jZXMuZmlsbCgwKTsKKyAgICAgICAgfQorICAgICAgICBtX2FkdmFuY2Vz
W2luZGV4XSA9IGFkdmFuY2U7CisgICAgfQorCiAgICAgY29uc3QgRm9udCYgZm9udCgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb250OwpAQCAtMTIxLDExICsxNDgsMTMgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBHbHlwaFBhZ2UoY29uc3QgRm9udCYgZm9udCkKICAgICAgICAg
OiBtX2ZvbnQoZm9udCkKICAgICB7CisgICAgICAgIG1fZ2x5cGhzLmZpbGwoMCk7CiAgICAgICAg
ICsrc19jb3VudDsKICAgICB9CiAKICAgICBjb25zdCBGb250JiBtX2ZvbnQ7Ci0gICAgR2x5cGgg
bV9nbHlwaHNbc2l6ZV0geyB9OworICAgIHN0ZDo6YXJyYXk8R2x5cGgsIHNpemU+IG1fZ2x5cGhz
OworICAgIFZlY3RvcjxmbG9hdD4gbV9hZHZhbmNlczsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB1bnNpZ25lZCBzX2NvdW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggMzZmYmEwZjlkMDZmODc5NzZlNWFl
ZDBiYTA5YWE2NmE1OWE1MDdjZC4uM2JhZTc3MTJkN2I3Y2E5MjExMzc1ZTE1ZDdjNTQyOGNmMzMx
Y2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKQEAgLTIwNyw3ICsyMDcsOSBAQCBpbmxpbmUgdW5zaWduZWQgV2lkdGhJdGVy
YXRvcjo6YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaAog
ICAgICAgICBpZiAoY2hhcmFjdGVyID09ICdcdCcgJiYgbV9ydW4uYWxsb3dUYWJzKCkpCiAgICAg
ICAgICAgICB3aWR0aCA9IG1fZm9udC0+dGFiV2lkdGgoKmZvbnQsIG1fcnVuLnRhYlNpemUoKSwg
bV9ydW4ueFBvcygpICsgbV9ydW5XaWR0aFNvRmFyICsgd2lkdGhTaW5jZUxhc3RSb3VuZGluZyk7
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgd2lkdGggPSBmb250LT53aWR0aEZvckdseXBo
KGdseXBoKTsKKyAgICAgICAgICAgIHdpZHRoID0gZ2x5cGhEYXRhLmFkdmFuY2UudmFsdWVPckNv
bXB1dGUoWyZdIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9udC0+d2lkdGhGb3JHbHlwaChn
bHlwaCk7CisgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgLy8gU1ZHIHVzZXMgaG9yaXpv
bnRhbEdseXBoU3RyZXRjaCgpLCB3aGVuIHRleHRMZW5ndGggaXMgdXNlZCB0byBzdHJldGNoL3Nx
dWVlemUgdGV4dC4KICAgICAgICAgICAgIHdpZHRoICo9IG1fcnVuLmhvcml6b250YWxHbHlwaFN0
cmV0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDb2NvYS5tbQppbmRleCBjMGRiNGNjOWRmNTI0OWM5OTMxZTEyMTIwNjQxNWMzZjU2Yjcz
NWYxLi4zMTM2MGIxOWYxM2Q2MzMzODc1NThmOGEzZWUwMTEyZTVmNTJhNTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCkBA
IC01OTYsNyArNTk2LDI4IEBAIEZsb2F0UmVjdCBGb250OjpwbGF0Zm9ybUJvdW5kc0ZvckdseXBo
KEdseXBoIGdseXBoKSBjb25zdAogICAgIHJldHVybiBib3VuZGluZ0JveDsKIH0KIAotI2lmICEo
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEy
MDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMDAwMCkpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkKK3ZvaWQgRm9udDo6cGxhdGZvcm1XaWR0aHNG
b3JHbHlwaHMoR2x5cGgqIGdseXBocywgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCogcmVzdWx0KSBj
b25zdAoreworICAgIFZlY3RvcjxDR1NpemU+IGFkdmFuY2VzKGxlbmd0aCwgQ0dTaXplWmVybyk7
CisgICAgYm9vbCBob3Jpem9udGFsID0gcGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsOworICAgIENHRm9udFJlbmRlcmluZ1N0eWxlIHN0eWxlID0ga0NHRm9udFJlbmRl
cmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3Np
dGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUXVhbnRpemF0aW9uIHwga0NH
Rm9udEFudGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsKKworICAgIGlmIChwbGF0Zm9ybURhdGEo
KS5zaXplKCkpIHsKKyAgICAgICAgQ1RGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBob3Jp
em9udGFsIHx8IG1faXNCcm9rZW5JZGVvZ3JhcGhGYWxsYmFjayA/IGtDVEZvbnRPcmllbnRhdGlv
bkhvcml6b250YWwgOiBrQ1RGb250T3JpZW50YXRpb25WZXJ0aWNhbDsKKyAgICAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIHNwZWNpYWwtY2FzaW5nIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzI4MTk3
MjkxPiBpcyBmaXhlZC4KKyAgICAgICAgaWYgKENURm9udElzQXBwbGVDb2xvckVtb2ppKG1fcGxh
dGZvcm1EYXRhLmN0Rm9udCgpKSkKKyAgICAgICAgICAgIENURm9udEdldEFkdmFuY2VzRm9yR2x5
cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBvcmllbnRhdGlvbiwgZ2x5cGhzLCBhZHZhbmNl
cy5kYXRhKCksIGxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIENURm9udEdldFVu
c3VtbWVkQWR2YW5jZXNGb3JHbHlwaHNBbmRTdHlsZShtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwg
b3JpZW50YXRpb24sIHN0eWxlLCBnbHlwaHMsIGFkdmFuY2VzLmRhdGEoKSwgbGVuZ3RoKTsKKyAg
ICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAg
IHJlc3VsdFtpXSA9IGFkdmFuY2VzW2ldLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0Owor
fQorCisjZWxzZQorCiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPENHU2l6ZT4gYWR2YW5jZUZvckNv
bG9yQml0bWFwRm9udChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIEdseXBo
IGdseXBoKQogewogICAgIENURm9udFJlZiBmb250ID0gcGxhdGZvcm1EYXRhLmZvbnQoKTsKQEAg
LTYyMiwyMiArNjQzLDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5Vc2VGYXN0R2x5cGhBZHZh
bmNlR2V0dGVyKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtCiAKIGZsb2F0IEZvbnQ6
OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIHsKLSAgICBDR1NpemUg
YWR2YW5jZSA9IENHU2l6ZVplcm87Ci0gICAgYm9vbCBob3Jpem9udGFsID0gcGxhdGZvcm1EYXRh
KCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsOwotICAgIENHRm9udFJlbmRlcmluZ1N0eWxl
IHN0eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJlbmRl
cmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBp
eGVsUXVhbnRpemF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsKLQog
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMjAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDAwMDApCi0gICAgaWYgKHBsYXRmb3JtRGF0YSgpLnNpemUoKSkgewotICAgICAg
ICBDVEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGhvcml6b250YWwgfHwgbV9pc0Jyb2tl
bklkZW9ncmFwaEZhbGxiYWNrID8ga0NURm9udE9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IGtDVEZv
bnRPcmllbnRhdGlvblZlcnRpY2FsOwotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgc3Bl
Y2lhbC1jYXNpbmcgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjgxOTcyOTE+IGlzIGZpeGVkLgotICAg
ICAgICBpZiAoQ1RGb250SXNBcHBsZUNvbG9yRW1vamkobV9wbGF0Zm9ybURhdGEuY3RGb250KCkp
KQotICAgICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMobV9wbGF0Zm9ybURhdGEu
Y3RGb250KCksIG9yaWVudGF0aW9uLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgQ1RGb250R2V0VW5zdW1tZWRBZHZhbmNlc0ZvckdseXBoc0FuZFN0eWxl
KG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBvcmllbnRhdGlvbiwgc3R5bGUsICZnbHlwaCwgJmFk
dmFuY2UsIDEpOwotICAgIH0KKyAgICBmbG9hdCByZXN1bHQ7CisgICAgcGxhdGZvcm1XaWR0aHNG
b3JHbHlwaHMoJmdseXBoLCAxLCAmcmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogCiAjZWxz
ZQogCisgICAgQ0dTaXplIGFkdmFuY2UgPSBDR1NpemVaZXJvOworICAgIGJvb2wgaG9yaXpvbnRh
bCA9IHBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbDsKKyAgICBDR0Zv
bnRSZW5kZXJpbmdTdHlsZSBzdHlsZSA9IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZUFudGlhbGlhc2lu
ZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcgfCBrQ0dGb250UmVu
ZGVyaW5nU3R5bGVTdWJwaXhlbFF1YW50aXphdGlvbiB8IGtDR0ZvbnRBbnRpYWxpYXNpbmdTdHls
ZVVuZmlsdGVyZWQ7CisKICAgICBib29sIHBvcHVsYXRlZEFkdmFuY2UgPSBmYWxzZTsKICAgICBp
ZiAoKGhvcml6b250YWwgfHwgbV9pc0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNrKSAmJiBjYW5Vc2VG
YXN0R2x5cGhBZHZhbmNlR2V0dGVyKHRoaXMtPnBsYXRmb3JtRGF0YSgpLCBnbHlwaCwgYWR2YW5j
ZSwgcG9wdWxhdGVkQWR2YW5jZSkpIHsKICAgICAgICAgZmxvYXQgcG9pbnRTaXplID0gcGxhdGZv
cm1EYXRhKCkuc2l6ZSgpOwpAQCAtNjQ5LDkgKzY2NSw5IEBAIGZsb2F0IEZvbnQ6OnBsYXRmb3Jt
V2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAoIXBvcHVsYXRlZEFkdmFuY2UgJiYgcGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQogICAgICAgICBD
VEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwgaG9yaXpv
bnRhbCA/IGtDVEZvbnRPcmllbnRhdGlvbkhvcml6b250YWwgOiBrQ1RGb250T3JpZW50YXRpb25W
ZXJ0aWNhbCwgJmdseXBoLCAmYWR2YW5jZSwgMSk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBhZHZh
bmNlLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworI2VuZGlmCiB9CiAKIHN0cnVjdCBQ
cm92aWRlckluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dseXBoUGFnZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR2x5cGhQYWdlTWFjLmNwcAppbmRleCBmMzljOGRjMDU5ZjUyODY2YTI2Njk5Yzc0NGMw
NzRmMTQ3MWMzOGMxLi5jZjRjYjZjNWMwMGM5MzI3ZDRlOWQwZDU2MzcwYWExZjgxMTRmNTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQYWdl
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQ
YWdlTWFjLmNwcApAQCAtNDAsNTUgKzQwLDUzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIGJvb2wgc2hvdWxkVXNlQ29yZVRleHQoY29uc3QgVUNoYXIqIGJ1ZmZlciwgdW5zaWdu
ZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBGb250JiBmb250RGF0YSkKK3N0YXRpYyBib29sIHNob3Vs
ZEZpbGxXaXRoVmVydGljYWxHbHlwaHMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVm
ZmVyTGVuZ3RoLCBjb25zdCBGb250JiBmb250KQogewotICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUg
a2VwdCBpbiBzeW5jIHdpdGggR2x5cGhQYWdlOjpmaWxsKCkuIEN1cnJlbnRseSwgdGhlIENvcmVU
ZXh0IHBhdGhzIGFyZSBub3QgYWJsZSB0byBoYW5kbGUKLSAgICAvLyBldmVyeSBzaXR1dGF0aW9u
LiBSZXR1cm5pbmcgdHJ1ZSBmcm9tIHRoaXMgZnVuY3Rpb24gaW4gYSBuZXcgc2l0dWF0aW9uIHdp
bGwgcmVxdWlyZSB5b3UgdG8gZXhwbGljaXRseSBhZGQKLSAgICAvLyBoYW5kbGluZyBmb3IgdGhh
dCBzaXR1YXRpb24gaW4gdGhlIENvcmVUZXh0IHBhdGhzIG9mIEdseXBoUGFnZTo6ZmlsbCgpLgot
ICAgIGlmIChmb250RGF0YS5wbGF0Zm9ybURhdGEoKS5pc1N5c3RlbUZvbnQoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKGZvbnREYXRhLnBsYXRmb3JtRGF0YSgpLmlzRm9yVGV4dENv
bWJpbmUoKSB8fCBmb250RGF0YS5oYXNWZXJ0aWNhbEdseXBocygpKSB7Ci0gICAgICAgIC8vIElk
ZW9ncmFwaHMgZG9uJ3QgaGF2ZSBhIHZlcnRpY2FsIHZhcmlhbnQgb3Igd2lkdGggdmFyaWFudHMu
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZmZXJMZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgaWYgKCFGb250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGgoYnVmZmVyW2ldKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgIGlmICghZm9udC5o
YXNWZXJ0aWNhbEdseXBocygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGJ1ZmZlckxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghRm9udENh
c2NhZGU6OmlzQ0pLSWRlb2dyYXBoKGJ1ZmZlcltpXSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNkZWZpbmUgR0xZUEhfUEFHRVNf
SU5DTFVERV9BRFZBTkNFUyAoKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMCkpCisKIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVD
aGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKIHsKICAgICBBU1NFUlQoYnVmZmVy
TGVuZ3RoID09IEdseXBoUGFnZTo6c2l6ZSB8fCBidWZmZXJMZW5ndGggPT0gMiAqIEdseXBoUGFn
ZTo6c2l6ZSk7CiAKICAgICBjb25zdCBGb250JiBmb250ID0gdGhpcy0+Zm9udCgpOwogICAgIFZl
Y3RvcjxDR0dseXBoLCA1MTI+IGdseXBocyhidWZmZXJMZW5ndGgpOwotICAgIHVuc2lnbmVkIGds
eXBoU3RlcDsKLSAgICBpZiAoIXNob3VsZFVzZUNvcmVUZXh0KGJ1ZmZlciwgYnVmZmVyTGVuZ3Ro
LCBmb250KSkgewotICAgICAgICAvLyBXZSBwYXNzIGluIGVpdGhlciAyNTYgb3IgNTEyIFVURi0x
NiBjaGFyYWN0ZXJzOiAyNTYgZm9yIFUrRkZGRiBhbmQgbGVzcywgNTEyIChkb3VibGUgY2hhcmFj
dGVyIHN1cnJvZ2F0ZXMpCi0gICAgICAgIC8vIGZvciBVKzEwMDAwIGFuZCBhYm92ZS4gSXQgaXMg
aW5kZWVkIHBvc3NpYmxlIHRvIGdldCBiYWNrIDUxMiBnbHlwaHMgYmFjayBmcm9tIHRoZSBBUEks
IHNvIHRoZSBnbHlwaCBidWZmZXIKLSAgICAgICAgLy8gd2UgcGFzcyBpbiBtdXN0IGJlIDUxMi4g
SWYgd2UgZ2V0IGJhY2sgbW9yZSB0aGFuIDI1NiBnbHlwaHMgdGhvdWdoIHdlJ2xsIGlnbm9yZSBh
bGwgdGhlIG9uZXMgYWZ0ZXIgMjU2LAotICAgICAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVu
IGFzIHRoZSBvbmx5IHRpbWUgd2UgcGFzcyBpbiA1MTIgY2hhcmFjdGVycyBpcyB3aGVuIHRoZXkg
YXJlIHN1cnJvZ2F0ZXMuCi0gICAgICAgIENHRm9udEdldEdseXBoc0ZvclVuaWNoYXJzKGZvbnQu
cGxhdGZvcm1EYXRhKCkuY2dGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVu
Z3RoKTsKLSAgICAgICAgZ2x5cGhTdGVwID0gMTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBC
ZWNhdXNlIHdlIGtub3cgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNob3VsZFVzZUNvcmVUZXh0KCks
IGlmIHRoZSBmb250IGlzbid0IGZvciB0ZXh0IGNvbWJpbmUgYW5kIGl0IGlzbid0IGEgc3lzdGVt
IGZvbnQsCi0gICAgICAgIC8vIHdlIGtub3cgaXQgbXVzdCBoYXZlIHZlcnRpY2FsIGdseXBocy4K
LSAgICAgICAgaWYgKGZvbnQucGxhdGZvcm1EYXRhKCkuaXNGb3JUZXh0Q29tYmluZSgpIHx8IGZv
bnQucGxhdGZvcm1EYXRhKCkuaXNTeXN0ZW1Gb250KCkpCi0gICAgICAgICAgICBDVEZvbnRHZXRH
bHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RGb250KCksIGJ1ZmZlciwg
Z2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Q1RGb250R2V0VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCku
Y3RGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKIAotICAgICAg
ICAvLyBXaGVuIGJ1ZmZlciBjb25zaXN0cyBvZiBzdXJyb2dhdGUgcGFpcnMsIENURm9udEdldFZl
cnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycyBhbmQgQ1RGb250R2V0R2x5cGhzRm9yQ2hhcmFjdGVy
cwotICAgICAgICAvLyBwbGFjZSB0aGUgZ2x5cGhzIGF0IGluZGljZXMgY29ycmVzcG9uZGluZyB0
byB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGVhY2ggcGFpci4KLSAgICAgICAgZ2x5cGhTdGVwID0g
YnVmZmVyTGVuZ3RoIC8gR2x5cGhQYWdlOjpzaXplOwotICAgIH0KKyAgICBpZiAoc2hvdWxkRmls
bFdpdGhWZXJ0aWNhbEdseXBocyhidWZmZXIsIGJ1ZmZlckxlbmd0aCwgZm9udCkpCisgICAgICAg
IENURm9udEdldFZlcnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycyhmb250LnBsYXRmb3JtRGF0YSgp
LmN0Rm9udCgpLCBidWZmZXIsIGdseXBocy5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAgZWxz
ZQorICAgICAgICBDVEZvbnRHZXRHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRh
KCkuY3RGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICB1
bnNpZ25lZCBnbHlwaFN0ZXAgPSBidWZmZXJMZW5ndGggLyBHbHlwaFBhZ2U6OnNpemU7CisgICAg
VU5VU0VEX1BBUkFNKGdseXBoU3RlcCk7CisKKyNpZiBHTFlQSF9QQUdFU19JTkNMVURFX0FEVkFO
Q0VTCisgICAgVmVjdG9yPENHR2x5cGg+IGNvbXByZXNzZWRHbHlwaHM7CisgICAgY29tcHJlc3Nl
ZEdseXBocy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KEdseXBoUGFnZTo6c2l6ZSk7CisgICAgaWYg
KGdseXBoU3RlcCA9PSAyKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlw
aFBhZ2U6OnNpemU7ICsraSkKKyAgICAgICAgICAgIGNvbXByZXNzZWRHbHlwaHMuYXBwZW5kKGds
eXBoc1tpICogZ2x5cGhTdGVwXSk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVChnbHlwaFN0
ZXAgPT0gMSk7CisgICAgVmVjdG9yPGZsb2F0PiBhZHZhbmNlcyhHbHlwaFBhZ2U6OnNpemUsIDAu
Zik7CisgICAgZm9udC5wbGF0Zm9ybVdpZHRoc0ZvckdseXBocyhjb21wcmVzc2VkR2x5cGhzLnNp
emUoKSA/IGNvbXByZXNzZWRHbHlwaHMuZGF0YSgpIDogZ2x5cGhzLmRhdGEoKSwgR2x5cGhQYWdl
OjpzaXplLCBhZHZhbmNlcy5kYXRhKCkpOworI2VuZGlmCiAKICAgICBib29sIGhhdmVHbHlwaHMg
PSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR2x5cGhQYWdlOjpzaXplOyAr
K2kpIHsKICAgICAgICAgaWYgKGdseXBoc1tpICogZ2x5cGhTdGVwXSkgewotICAgICAgICAgICAg
c2V0R2x5cGhGb3JJbmRleChpLCBnbHlwaHNbaSAqIGdseXBoU3RlcF0pOworICAgICAgICAgICAg
Q0dHbHlwaCBnbHlwaCA9IGdseXBoc1tpICogZ2x5cGhTdGVwXTsKKyAgICAgICAgICAgIHNldEds
eXBoRm9ySW5kZXgoaSwgZ2x5cGgpOworI2lmIEdMWVBIX1BBR0VTX0lOQ0xVREVfQURWQU5DRVMK
KyAgICAgICAgICAgIHNldEFkdmFuY2VGb3JJbmRleChpLCBnbHlwaCA9PSBmb250Lnplcm9XaWR0
aFNwYWNlR2x5cGgoKSA/IDAgOiBhZHZhbmNlc1tpXSk7CisjZW5kaWYKICAgICAgICAgICAgIGhh
dmVHbHlwaHMgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288555</attachid>
            <date>2016-09-11 23:51:41 -0700</date>
            <delta_ts>2016-09-12 10:25:19 -0700</delta_ts>
            <desc>No regression</desc>
            <filename>bug-161809-20160911234912.patch</filename>
            <type>text/plain</type>
            <size>15758</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0Y2U2NzliN2EzYTA3NGU3MjVlNzQ3
YTNkMWEwYjNjZWZkNDZmZDQuLjVmYWU2ZTQ1OWVjMjBkZmQ2MTdiM2VhZjAyZTYxZmYyZDNkYjE3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFu
Y2Ugb2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2LTA5LTA5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGZpeGluZyBhIGZldyBKU0MgdGVzdCBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2Y0NjliYTk4YTFjYjU2YmJhZTA4NmFkNTI1NWNmYzMw
NzE5NTUwLi4wMDUwZmUzZDI2MzNmZGVhMmM3NzA3MjI2YjM1NDlhMDFjZDNiYzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTYtMDktMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBbQ29jb2FdIEltcHJvdmUgcGVyZm9ybWFuY2Ug
b2YgcG9wdWxhdGluZyBnbHlwaCBjYWNoZXMgaW4gdGhlIGZhc3QgdGV4dCBjb2RlcGF0aAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUFuZEZpbGxHbHlwaFBhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQ
YWdlOjpmaWxsKToKKworMjAxNi0wOS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgorCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgbWVtYmVyIG9mIEdseXBoQnVmZmVy
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4MTQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oIGIv
U291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCmluZGV4IDFkYzI3OTRmMDIx
MzgwZjFhNDQzMTkzZWQ3NTY5YmMzOGJkYjU2ZDguLjlkYmRhYThiOGNhYWQ5YWNkMzBjM2E2MTVj
NDczNDQ3YWRjZDcwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFj
dGVyTmFtZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmgK
QEAgLTcwLDYgKzcwLDcgQEAgY29uc3QgVUNoYXIgbWludXNTaWduID0gMHgyMjEyOwogY29uc3Qg
VUNoYXIgbmFycm93Tm9uQnJlYWtpbmdTcGFjZSA9IDB4MjAyRjsKIGNvbnN0IFVDaGFyIG5ld2xp
bmVDaGFyYWN0ZXIgPSAweDAwMEE7CiBjb25zdCBVQ2hhciBub0JyZWFrU3BhY2UgPSAweDAwQTA7
Citjb25zdCBVQ2hhciBuYXJyb3dOb0JyZWFrU3BhY2UgPSAweDIwMkY7CiBjb25zdCBVQ2hhciBv
YmplY3RSZXBsYWNlbWVudENoYXJhY3RlciA9IDB4RkZGQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVj
dGlvbmFsRm9ybWF0dGluZyA9IDB4MjAyQzsKIGNvbnN0IFVDaGFyIHBvcERpcmVjdGlvbmFsSXNv
bGF0ZSA9IDB4MjA2OTsKQEAgLTEzMiw2ICsxMzMsNyBAQCB1c2luZyBXVEY6OlVuaWNvZGU6Om1p
bnVzU2lnbjsKIHVzaW5nIFdURjo6VW5pY29kZTo6bmFycm93Tm9uQnJlYWtpbmdTcGFjZTsKIHVz
aW5nIFdURjo6VW5pY29kZTo6bmV3bGluZUNoYXJhY3RlcjsKIHVzaW5nIFdURjo6VW5pY29kZTo6
bm9CcmVha1NwYWNlOwordXNpbmcgV1RGOjpVbmljb2RlOjpuYXJyb3dOb0JyZWFrU3BhY2U7CiB1
c2luZyBXVEY6OlVuaWNvZGU6Om9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpwb3BEaXJlY3Rpb25hbEZvcm1hdHRpbmc7CiB1c2luZyBXVEY6OlVuaWNvZGU6
OnBvcERpcmVjdGlvbmFsSXNvbGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKaW5kZXggNDgzNDA5NTIzOWUyMjAzNzNlYTQxMDhhY2EzMzFkMzFhNDQ0MDM0Ni4u
NmQyNGQyMGU1YTY3YmQ3OTI3ZGIzYjg4ZjI1MTllMjEwNDUxZjNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTE4Nyw2ICsxODcsNyBAQCBzdGF0aWMg
UmVmUHRyPEdseXBoUGFnZT4gY3JlYXRlQW5kRmlsbEdseXBoUGFnZSh1bnNpZ25lZCBwYWdlTnVt
YmVyLCBjb25zdCBGb250JgogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1xuJywgc3BhY2Up
OwogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoJ1x0Jywgc3BhY2UpOwogICAgICAgICBvdmVy
d3JpdGVDb2RlUG9pbnQobm9CcmVha1NwYWNlLCBzcGFjZSk7CisgICAgICAgIG92ZXJ3cml0ZUNv
ZGVQb2ludChuYXJyb3dOb0JyZWFrU3BhY2UsIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3Zl
cndyaXRlQ29kZVBvaW50KGxlZnRUb1JpZ2h0TWFyaywgemVyb1dpZHRoU3BhY2UpOwogICAgICAg
ICBvdmVyd3JpdGVDb2RlUG9pbnQocmlnaHRUb0xlZnRNYXJrLCB6ZXJvV2lkdGhTcGFjZSk7CiAg
ICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludChsZWZ0VG9SaWdodEVtYmVkLCB6ZXJvV2lkdGhTcGFj
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOTE4ZGM5OTA4
N2Y4YjM1MGFmMmQxYjhkNzc5YTQwNjM0Zjk1NDI1My4uODQ0OTgxYTdjN2M4NDE4ODNjZTQ4ZjVi
YmMwNmEwY2E2OGRhYjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCB3aWR0aEZvckdseXBoKEds
eXBoKSBjb25zdDsKICAgICBGbG9hdFJlY3QgcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlwaCkg
Y29uc3Q7CiAgICAgZmxvYXQgcGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoKSBjb25zdDsKKyAg
ICB2b2lkIHBsYXRmb3JtV2lkdGhzRm9yR2x5cGhzKEdseXBoKiwgdW5zaWduZWQgbGVuZ3RoLCBm
bG9hdCogcmVzdWx0KSBjb25zdDsKIAogICAgIGZsb2F0IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3NwYWNlV2lkdGg7IH0KICAgICBmbG9hdCBhZGp1c3RlZFNwYWNlV2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX2FkanVzdGVkU3BhY2VXaWR0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaAppbmRleCBhMWE1OTQ0ZmQ2MmY4ZTg0ZTBmNDBlNzdh
N2Y2YzM1NWM2NDA0ZGU0Li45OGUwNWIyNzRjYTBmODRlNWUxZjY0MTU0Y2NhNGRkM2RjZWY1ZGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2UuaApAQCAt
MzEsMTAgKzMxLDEyIEBACiAjZGVmaW5lIEdseXBoUGFnZV9oCiAKICNpbmNsdWRlICJHbHlwaC5o
IgotI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHVuaWNv
ZGUvdXR5cGVzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDkgKzQ1LDEwIEBAIGNsYXNzIEZvbnQ7
CiAvLyBIb2xkcyB0aGUgZ2x5cGggaW5kZXggYW5kIHRoZSBjb3JyZXNwb25kaW5nIEZvbnQgaW5m
b3JtYXRpb24gZm9yIGEgZ2l2ZW4KIC8vIGNoYXJhY3Rlci4KIHN0cnVjdCBHbHlwaERhdGEgewot
ICAgIEdseXBoRGF0YShHbHlwaCBnID0gMCwgY29uc3QgRm9udCogZiA9IDApCi0gICAgICAgIDog
Z2x5cGgoZykKLSAgICAgICAgLCBmb250KGYpCisgICAgR2x5cGhEYXRhKEdseXBoIGdseXBoID0g
MCwgY29uc3QgRm9udCogZm9udCA9IDAvKiwgT3B0aW9uYWw8ZmxvYXQ+IGFkdmFuY2UgPSBOdWxs
b3B0Ki8pCisgICAgICAgIDogZ2x5cGgoZ2x5cGgpCisgICAgICAgICwgZm9udChmb250KQorICAg
ICAgICAvLywgYWR2YW5jZShhZHZhbmNlKQogICAgIHsKICAgICB9CiAKQEAgLTUzLDYgKzU2LDcg
QEAgc3RydWN0IEdseXBoRGF0YSB7CiAKICAgICBHbHlwaCBnbHlwaDsKICAgICBjb25zdCBGb250
KiBmb250OworICAgIC8vT3B0aW9uYWw8ZmxvYXQ+IGFkdmFuY2U7CiB9OwogCiAvLyBBIEdseXBo
UGFnZSBjb250YWlucyBhIGZpeGVkLXNpemUgc2V0IG9mIEdseXBoRGF0YSBtYXBwaW5ncyBmb3Ig
YSBjb250aWd1b3VzCkBAIC05MCwxMCArOTQsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
Z2x5cGhGb3JJbmRleChpbmRleEZvckNvZGVQb2ludChjKSk7CiAgICAgfQogCisgICAgLypPcHRp
b25hbDxmbG9hdD4gYWR2YW5jZUZvckNoYXJhY3RlcihVQ2hhcjMyIGMpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gYWR2YW5jZUZvckluZGV4KGluZGV4Rm9yQ29kZVBvaW50KGMpKTsKKyAg
ICB9Ki8KKwogICAgIEdseXBoRGF0YSBnbHlwaERhdGFGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKICAgICB7CiAgICAgICAgIEdseXBoIGdseXBoID0gZ2x5cGhGb3JJbmRleChpbmRleCk7
Ci0gICAgICAgIHJldHVybiBHbHlwaERhdGEoZ2x5cGgsIGdseXBoID8gJm1fZm9udCA6IG51bGxw
dHIpOworICAgICAgICByZXR1cm4gR2x5cGhEYXRhKGdseXBoLCBnbHlwaCA/ICZtX2ZvbnQgOiBu
dWxscHRyLyosIGFkdmFuY2VGb3JJbmRleChpbmRleCkqLyk7CiAgICAgfQogCiAgICAgR2x5cGgg
Z2x5cGhGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKQEAgLTEwMiw2ICsxMTEsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9nbHlwaHNbaW5kZXhdOwogICAgIH0KIAorICAgIC8q
T3B0aW9uYWw8ZmxvYXQ+IGFkdmFuY2VGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgc2l6
ZSk7CisgICAgICAgIGlmIChtX2FkdmFuY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07CisgICAgfSovCisK
ICAgICAvLyBGSVhNRTogUGFnZXMgYXJlIGltbXV0YWJsZSBhZnRlciBpbml0aWFsaXphdGlvbi4g
VGhpcyBzaG91bGQgYmUgcHJpdmF0ZS4KICAgICB2b2lkIHNldEdseXBoRm9ySW5kZXgodW5zaWdu
ZWQgaW5kZXgsIEdseXBoIGdseXBoKQogICAgIHsKQEAgLTEwOSw2ICsxMjYsMTYgQEAgcHVibGlj
OgogICAgICAgICBtX2dseXBoc1tpbmRleF0gPSBnbHlwaDsKICAgICB9CiAKKyAgICAvKnZvaWQg
c2V0QWR2YW5jZUZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBmbG9hdCBhZHZhbmNlKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBzaXplKTsK
KyAgICAgICAgaWYgKG1fYWR2YW5jZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2FkdmFu
Y2VzLmdyb3coc2l6ZSk7CisgICAgICAgICAgICBtX2FkdmFuY2VzLmZpbGwoMCk7CisgICAgICAg
IH0KKyAgICAgICAgbV9hZHZhbmNlc1tpbmRleF0gPSBhZHZhbmNlOworICAgIH0qLworCiAgICAg
Y29uc3QgRm9udCYgZm9udCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9mb250OwpA
QCAtMTIxLDExICsxNDgsMTMgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBHbHlwaFBhZ2UoY29u
c3QgRm9udCYgZm9udCkKICAgICAgICAgOiBtX2ZvbnQoZm9udCkKICAgICB7CisgICAgICAgIG1f
Z2x5cGhzLmZpbGwoMCk7CiAgICAgICAgICsrc19jb3VudDsKICAgICB9CiAKICAgICBjb25zdCBG
b250JiBtX2ZvbnQ7Ci0gICAgR2x5cGggbV9nbHlwaHNbc2l6ZV0geyB9OworICAgIHN0ZDo6YXJy
YXk8R2x5cGgsIHNpemU+IG1fZ2x5cGhzOworICAgIC8vVmVjdG9yPGZsb2F0PiBtX2FkdmFuY2Vz
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHVuc2lnbmVkIHNfY291bnQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1t
CmluZGV4IGMwZGI0Y2M5ZGY1MjQ5Yzk5MzFlMTIxMjA2NDE1YzNmNTZiNzM1ZjEuLjMxMzYwYjE5
ZjEzZDYzMzM4NzU1OGY4YTNlZTAxMTJlNWY1MmE1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KQEAgLTU5Niw3ICs1OTYs
MjggQEAgRmxvYXRSZWN0IEZvbnQ6OnBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgp
IGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kaW5nQm94OwogfQogCi0jaWYgISgoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkgfHwgKFBMQVRG
T1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAwMDAwKSkK
KyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTIwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAwMDAwKQordm9pZCBGb250OjpwbGF0Zm9ybVdpZHRoc0ZvckdseXBocyhHbHlw
aCogZ2x5cGhzLCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0KiByZXN1bHQpIGNvbnN0Cit7CisgICAg
VmVjdG9yPENHU2l6ZT4gYWR2YW5jZXMobGVuZ3RoLCBDR1NpemVaZXJvKTsKKyAgICBib29sIGhv
cml6b250YWwgPSBwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEhvcml6b250YWw7Cisg
ICAgQ0dGb250UmVuZGVyaW5nU3R5bGUgc3R5bGUgPSBrQ0dGb250UmVuZGVyaW5nU3R5bGVBbnRp
YWxpYXNpbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJwaXhlbFBvc2l0aW9uaW5nIHwga0NH
Rm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxRdWFudGl6YXRpb24gfCBrQ0dGb250QW50aWFsaWFz
aW5nU3R5bGVVbmZpbHRlcmVkOworCisgICAgaWYgKHBsYXRmb3JtRGF0YSgpLnNpemUoKSkgewor
ICAgICAgICBDVEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IGhvcml6b250YWwgfHwgbV9p
c0Jyb2tlbklkZW9ncmFwaEZhbGxiYWNrID8ga0NURm9udE9yaWVudGF0aW9uSG9yaXpvbnRhbCA6
IGtDVEZvbnRPcmllbnRhdGlvblZlcnRpY2FsOworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRo
aXMgc3BlY2lhbC1jYXNpbmcgd2hlbiA8cmRhcjovL3Byb2JsZW0vMjgxOTcyOTE+IGlzIGZpeGVk
LgorICAgICAgICBpZiAoQ1RGb250SXNBcHBsZUNvbG9yRW1vamkobV9wbGF0Zm9ybURhdGEuY3RG
b250KCkpKQorICAgICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMobV9wbGF0Zm9y
bURhdGEuY3RGb250KCksIG9yaWVudGF0aW9uLCBnbHlwaHMsIGFkdmFuY2VzLmRhdGEoKSwgbGVu
Z3RoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQ1RGb250R2V0VW5zdW1tZWRBZHZhbmNl
c0ZvckdseXBoc0FuZFN0eWxlKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBvcmllbnRhdGlvbiwg
c3R5bGUsIGdseXBocywgYWR2YW5jZXMuZGF0YSgpLCBsZW5ndGgpOworICAgIH0KKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgcmVzdWx0W2ldID0g
YWR2YW5jZXNbaV0ud2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7Cit9CisKKyNlbHNlCisK
IHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8Q0dTaXplPiBhZHZhbmNlRm9yQ29sb3JCaXRtYXBGb250
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgR2x5cGggZ2x5cGgpCiB7CiAg
ICAgQ1RGb250UmVmIGZvbnQgPSBwbGF0Zm9ybURhdGEuZm9udCgpOwpAQCAtNjIyLDIyICs2NDMs
MTcgQEAgc3RhdGljIGlubGluZSBib29sIGNhblVzZUZhc3RHbHlwaEFkdmFuY2VHZXR0ZXIoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm0KIAogZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0
aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogewotICAgIENHU2l6ZSBhZHZhbmNlID0gQ0dT
aXplWmVybzsKLSAgICBib29sIGhvcml6b250YWwgPSBwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWw7Ci0gICAgQ0dGb250UmVuZGVyaW5nU3R5bGUgc3R5bGUgPSBrQ0dG
b250UmVuZGVyaW5nU3R5bGVBbnRpYWxpYXNpbmcgfCBrQ0dGb250UmVuZGVyaW5nU3R5bGVTdWJw
aXhlbFBvc2l0aW9uaW5nIHwga0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxRdWFudGl6YXRp
b24gfCBrQ0dGb250QW50aWFsaWFzaW5nU3R5bGVVbmZpbHRlcmVkOwotCiAjaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApIHx8IChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAw
MCkKLSAgICBpZiAocGxhdGZvcm1EYXRhKCkuc2l6ZSgpKSB7Ci0gICAgICAgIENURm9udE9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uID0gaG9yaXpvbnRhbCB8fCBtX2lzQnJva2VuSWRlb2dyYXBoRmFs
bGJhY2sgPyBrQ1RGb250T3JpZW50YXRpb25Ib3Jpem9udGFsIDoga0NURm9udE9yaWVudGF0aW9u
VmVydGljYWw7Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzcGVjaWFsLWNhc2luZyB3
aGVuIDxyZGFyOi8vcHJvYmxlbS8yODE5NzI5MT4gaXMgZml4ZWQuCi0gICAgICAgIGlmIChDVEZv
bnRJc0FwcGxlQ29sb3JFbW9qaShtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSkpCi0gICAgICAgICAg
ICBDVEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKSwgb3Jp
ZW50YXRpb24sICZnbHlwaCwgJmFkdmFuY2UsIDEpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBDVEZvbnRHZXRVbnN1bW1lZEFkdmFuY2VzRm9yR2x5cGhzQW5kU3R5bGUobV9wbGF0Zm9ybURh
dGEuY3RGb250KCksIG9yaWVudGF0aW9uLCBzdHlsZSwgJmdseXBoLCAmYWR2YW5jZSwgMSk7Ci0g
ICAgfQorICAgIGZsb2F0IHJlc3VsdDsKKyAgICBwbGF0Zm9ybVdpZHRoc0ZvckdseXBocygmZ2x5
cGgsIDEsICZyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiAKICNlbHNlCiAKKyAgICBDR1Np
emUgYWR2YW5jZSA9IENHU2l6ZVplcm87CisgICAgYm9vbCBob3Jpem9udGFsID0gcGxhdGZvcm1E
YXRhKCkub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsOworICAgIENHRm9udFJlbmRlcmluZ1N0
eWxlIHN0eWxlID0ga0NHRm9udFJlbmRlcmluZ1N0eWxlQW50aWFsaWFzaW5nIHwga0NHRm9udFJl
bmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZyB8IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1
YnBpeGVsUXVhbnRpemF0aW9uIHwga0NHRm9udEFudGlhbGlhc2luZ1N0eWxlVW5maWx0ZXJlZDsK
KwogICAgIGJvb2wgcG9wdWxhdGVkQWR2YW5jZSA9IGZhbHNlOwogICAgIGlmICgoaG9yaXpvbnRh
bCB8fCBtX2lzQnJva2VuSWRlb2dyYXBoRmFsbGJhY2spICYmIGNhblVzZUZhc3RHbHlwaEFkdmFu
Y2VHZXR0ZXIodGhpcy0+cGxhdGZvcm1EYXRhKCksIGdseXBoLCBhZHZhbmNlLCBwb3B1bGF0ZWRB
ZHZhbmNlKSkgewogICAgICAgICBmbG9hdCBwb2ludFNpemUgPSBwbGF0Zm9ybURhdGEoKS5zaXpl
KCk7CkBAIC02NDksOSArNjY1LDkgQEAgZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBo
KEdseXBoIGdseXBoKSBjb25zdAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghcG9wdWxhdGVk
QWR2YW5jZSAmJiBwbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAgIENURm9udEdldEFkdmFu
Y2VzRm9yR2x5cGhzKG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLCBob3Jpem9udGFsID8ga0NURm9u
dE9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IGtDVEZvbnRPcmllbnRhdGlvblZlcnRpY2FsLCAmZ2x5
cGgsICZhZHZhbmNlLCAxKTsKLSNlbmRpZgogCiAgICAgcmV0dXJuIGFkdmFuY2Uud2lkdGggKyBt
X3N5bnRoZXRpY0JvbGRPZmZzZXQ7CisjZW5kaWYKIH0KIAogc3RydWN0IFByb3ZpZGVySW5mbyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQ
YWdlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBh
Z2VNYWMuY3BwCmluZGV4IGYzOWM4ZGMwNTlmNTI4NjZhMjY2OTljNzQ0YzA3NGYxNDcxYzM4YzEu
LmYwZTJmNjcxY2QyNzlmYjYyZDE2YTZmZjM2MjBlN2JmOTA2YzM1ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HbHlwaFBhZ2VNYWMuY3BwCkBA
IC00MCw1NSArNDAsNTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBz
aG91bGRVc2VDb3JlVGV4dChjb25zdCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5n
dGgsIGNvbnN0IEZvbnQmIGZvbnREYXRhKQorc3RhdGljIGJvb2wgc2hvdWxkRmlsbFdpdGhWZXJ0
aWNhbEdseXBocyhjb25zdCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNv
bnN0IEZvbnQmIGZvbnQpCiB7Ci0gICAgLy8gVGhpcyBuZWVkcyB0byBiZSBrZXB0IGluIHN5bmMg
d2l0aCBHbHlwaFBhZ2U6OmZpbGwoKS4gQ3VycmVudGx5LCB0aGUgQ29yZVRleHQgcGF0aHMgYXJl
IG5vdCBhYmxlIHRvIGhhbmRsZQotICAgIC8vIGV2ZXJ5IHNpdHV0YXRpb24uIFJldHVybmluZyB0
cnVlIGZyb20gdGhpcyBmdW5jdGlvbiBpbiBhIG5ldyBzaXR1YXRpb24gd2lsbCByZXF1aXJlIHlv
dSB0byBleHBsaWNpdGx5IGFkZAotICAgIC8vIGhhbmRsaW5nIGZvciB0aGF0IHNpdHVhdGlvbiBp
biB0aGUgQ29yZVRleHQgcGF0aHMgb2YgR2x5cGhQYWdlOjpmaWxsKCkuCi0gICAgaWYgKGZvbnRE
YXRhLnBsYXRmb3JtRGF0YSgpLmlzU3lzdGVtRm9udCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAoZm9udERhdGEucGxhdGZvcm1EYXRhKCkuaXNGb3JUZXh0Q29tYmluZSgpIHx8IGZv
bnREYXRhLmhhc1ZlcnRpY2FsR2x5cGhzKCkpIHsKLSAgICAgICAgLy8gSWRlb2dyYXBocyBkb24n
dCBoYXZlIGEgdmVydGljYWwgdmFyaWFudCBvciB3aWR0aCB2YXJpYW50cy4KLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlckxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAoIUZvbnRDYXNjYWRlOjppc0NKS0lkZW9ncmFwaChidWZmZXJbaV0pKQotICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgaWYgKCFmb250Lmhhc1ZlcnRpY2FsR2x5
cGhzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYnVmZmVyTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFGb250Q2FzY2FkZTo6aXNDSktJ
ZGVvZ3JhcGgoYnVmZmVyW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2RlZmluZSBHTFlQSF9QQUdFU19JTkNMVURFX0FEVkFO
Q0VTIDAgLy8oKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEyMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMDAwMCkpCisKIGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZm
ZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKIHsKICAgICBBU1NFUlQoYnVmZmVyTGVuZ3RoID09
IEdseXBoUGFnZTo6c2l6ZSB8fCBidWZmZXJMZW5ndGggPT0gMiAqIEdseXBoUGFnZTo6c2l6ZSk7
CiAKICAgICBjb25zdCBGb250JiBmb250ID0gdGhpcy0+Zm9udCgpOwogICAgIFZlY3RvcjxDR0ds
eXBoLCA1MTI+IGdseXBocyhidWZmZXJMZW5ndGgpOwotICAgIHVuc2lnbmVkIGdseXBoU3RlcDsK
LSAgICBpZiAoIXNob3VsZFVzZUNvcmVUZXh0KGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCBmb250KSkg
ewotICAgICAgICAvLyBXZSBwYXNzIGluIGVpdGhlciAyNTYgb3IgNTEyIFVURi0xNiBjaGFyYWN0
ZXJzOiAyNTYgZm9yIFUrRkZGRiBhbmQgbGVzcywgNTEyIChkb3VibGUgY2hhcmFjdGVyIHN1cnJv
Z2F0ZXMpCi0gICAgICAgIC8vIGZvciBVKzEwMDAwIGFuZCBhYm92ZS4gSXQgaXMgaW5kZWVkIHBv
c3NpYmxlIHRvIGdldCBiYWNrIDUxMiBnbHlwaHMgYmFjayBmcm9tIHRoZSBBUEksIHNvIHRoZSBn
bHlwaCBidWZmZXIKLSAgICAgICAgLy8gd2UgcGFzcyBpbiBtdXN0IGJlIDUxMi4gSWYgd2UgZ2V0
IGJhY2sgbW9yZSB0aGFuIDI1NiBnbHlwaHMgdGhvdWdoIHdlJ2xsIGlnbm9yZSBhbGwgdGhlIG9u
ZXMgYWZ0ZXIgMjU2LAotICAgICAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuIGFzIHRoZSBv
bmx5IHRpbWUgd2UgcGFzcyBpbiA1MTIgY2hhcmFjdGVycyBpcyB3aGVuIHRoZXkgYXJlIHN1cnJv
Z2F0ZXMuCi0gICAgICAgIENHRm9udEdldEdseXBoc0ZvclVuaWNoYXJzKGZvbnQucGxhdGZvcm1E
YXRhKCkuY2dGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKLSAg
ICAgICAgZ2x5cGhTdGVwID0gMTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBCZWNhdXNlIHdl
IGtub3cgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNob3VsZFVzZUNvcmVUZXh0KCksIGlmIHRoZSBm
b250IGlzbid0IGZvciB0ZXh0IGNvbWJpbmUgYW5kIGl0IGlzbid0IGEgc3lzdGVtIGZvbnQsCi0g
ICAgICAgIC8vIHdlIGtub3cgaXQgbXVzdCBoYXZlIHZlcnRpY2FsIGdseXBocy4KLSAgICAgICAg
aWYgKGZvbnQucGxhdGZvcm1EYXRhKCkuaXNGb3JUZXh0Q29tYmluZSgpIHx8IGZvbnQucGxhdGZv
cm1EYXRhKCkuaXNTeXN0ZW1Gb250KCkpCi0gICAgICAgICAgICBDVEZvbnRHZXRHbHlwaHNGb3JD
aGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRh
dGEoKSwgYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQ1RGb250R2V0
VmVydGljYWxHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RGb250KCks
IGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKIAotICAgICAgICAvLyBXaGVu
IGJ1ZmZlciBjb25zaXN0cyBvZiBzdXJyb2dhdGUgcGFpcnMsIENURm9udEdldFZlcnRpY2FsR2x5
cGhzRm9yQ2hhcmFjdGVycyBhbmQgQ1RGb250R2V0R2x5cGhzRm9yQ2hhcmFjdGVycwotICAgICAg
ICAvLyBwbGFjZSB0aGUgZ2x5cGhzIGF0IGluZGljZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZmly
c3QgY2hhcmFjdGVyIG9mIGVhY2ggcGFpci4KLSAgICAgICAgZ2x5cGhTdGVwID0gYnVmZmVyTGVu
Z3RoIC8gR2x5cGhQYWdlOjpzaXplOwotICAgIH0KKyAgICBpZiAoc2hvdWxkRmlsbFdpdGhWZXJ0
aWNhbEdseXBocyhidWZmZXIsIGJ1ZmZlckxlbmd0aCwgZm9udCkpCisgICAgICAgIENURm9udEdl
dFZlcnRpY2FsR2x5cGhzRm9yQ2hhcmFjdGVycyhmb250LnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgp
LCBidWZmZXIsIGdseXBocy5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAgZWxzZQorICAgICAg
ICBDVEZvbnRHZXRHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RGb250
KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBn
bHlwaFN0ZXAgPSBidWZmZXJMZW5ndGggLyBHbHlwaFBhZ2U6OnNpemU7CisgICAgVU5VU0VEX1BB
UkFNKGdseXBoU3RlcCk7CisKKyNpZiBHTFlQSF9QQUdFU19JTkNMVURFX0FEVkFOQ0VTCisgICAg
VmVjdG9yPENHR2x5cGg+IGNvbXByZXNzZWRHbHlwaHM7CisgICAgY29tcHJlc3NlZEdseXBocy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KEdseXBoUGFnZTo6c2l6ZSk7CisgICAgaWYgKGdseXBoU3Rl
cCA9PSAyKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNp
emU7ICsraSkKKyAgICAgICAgICAgIGNvbXByZXNzZWRHbHlwaHMuYXBwZW5kKGdseXBoc1tpICog
Z2x5cGhTdGVwXSk7CisgICAgfSBlbHNlCisgICAgICAgIEFTU0VSVChnbHlwaFN0ZXAgPT0gMSk7
CisgICAgVmVjdG9yPGZsb2F0PiBhZHZhbmNlcyhHbHlwaFBhZ2U6OnNpemUsIDAuZik7CisgICAg
Zm9udC5wbGF0Zm9ybVdpZHRoc0ZvckdseXBocyhjb21wcmVzc2VkR2x5cGhzLnNpemUoKSA/IGNv
bXByZXNzZWRHbHlwaHMuZGF0YSgpIDogZ2x5cGhzLmRhdGEoKSwgR2x5cGhQYWdlOjpzaXplLCBh
ZHZhbmNlcy5kYXRhKCkpOworI2VuZGlmCiAKICAgICBib29sIGhhdmVHbHlwaHMgPSBmYWxzZTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR2x5cGhQYWdlOjpzaXplOyArK2kpIHsKICAg
ICAgICAgaWYgKGdseXBoc1tpICogZ2x5cGhTdGVwXSkgewotICAgICAgICAgICAgc2V0R2x5cGhG
b3JJbmRleChpLCBnbHlwaHNbaSAqIGdseXBoU3RlcF0pOworICAgICAgICAgICAgQ0dHbHlwaCBn
bHlwaCA9IGdseXBoc1tpICogZ2x5cGhTdGVwXTsKKyAgICAgICAgICAgIHNldEdseXBoRm9ySW5k
ZXgoaSwgZ2x5cGgpOworI2lmIEdMWVBIX1BBR0VTX0lOQ0xVREVfQURWQU5DRVMKKyAgICAgICAg
ICAgIHNldEFkdmFuY2VGb3JJbmRleChpLCBnbHlwaCA9PSBmb250Lnplcm9XaWR0aFNwYWNlR2x5
cGgoKSA/IDAgOiBhZHZhbmNlc1tpXSk7CisjZW5kaWYKICAgICAgICAgICAgIGhhdmVHbHlwaHMg
PSB0cnVlOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288577</attachid>
            <date>2016-09-12 10:25:24 -0700</date>
            <delta_ts>2016-09-12 12:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161809-20160912102251.patch</filename>
            <type>text/plain</type>
            <size>8205</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhmZjVkNzg4OWJjYTY2MmNmMGU1ZTk1
MjNlMmFmMWMxY2RlODhhMjEuLjIxOGNkMTc2YzY3ODU5NTMxOTgzNmZkNWZmZjZiNmRhMmMxMjA0
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDktMTIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFJlZHVjZSB1c2VzIG9mIENH
Rm9udHMgaW4gZmF2b3Igb2YgQ1RGb250cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYxODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oOgorCiAyMDE2
LTA5LTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHOjpm
b3JBbGxLaWxsZWRPcGVyYW5kcygpIGNvdWxkIHVzZSBhIGZhc3RlciBiaXR2ZWN0b3Igc2NhbiBp
biB0aGUgc2FtZS1pbmxpbmUtc3RhY2sgZmFzdCBwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVkYTM3OTk4
N2ZjZDdlNmVhMjQ4ODIyZTY0NDE4NDNhNTAzOTcwYi4uY2Y5MWQwZmE0YTEzYWUyZGNjOTQzNjdl
YjBhMmE2NDgwMjBjN2FkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA5LTEy
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0Nv
Y29hXSBSZWR1Y2UgdXNlcyBvZiBDR0ZvbnRzIGluIGZhdm9yIG9mIENURm9udHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTgwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV2ZW50dWFsbHksIHdlIHdh
bnQgdG8gcmVtb3ZlIHRoZSBjZ0ZvbnQoKSBtZW1iZXIgb2YgUGxhdGZvcm1Gb250RGF0YSBmb3Ig
Ym90aCBtZW1vcnkKKyAgICAgICAgc2F2aW5ncyBhbmQgY29uY2VwdHVhbCBjbGFyaXR5LiBCZWNh
dXNlIHRoZXJlIGlzIG5vIHBlcmZvcm1hbmNlIGxvc3MgZnJvbSBtb3ZpbmcgZnJvbQorICAgICAg
ICBDR0ZvbnRHZXRHbHlwaHNGb3JVbmljaGFycygpIHRvIENURm9udEdldEdseXBoc0ZvckNoYXJh
Y3RlcnMoKSwgbWFraW5nIHRoaXMgc3dpdGNoCisgICAgICAgIGdldHMgdXMgY2xvc2VyIHRvIHJl
ZHVjaW5nIHRoZSB1c2VzIG9mIGNnRm9udCgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5kRmlsbEdseXBoUGFn
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHbHlwaERhdGE6OkdseXBoRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dseXBoUGFnZU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRGaWxsV2l0
aFZlcnRpY2FsR2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoUGFnZTo6ZmlsbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VDb3JlVGV4dCk6IERlbGV0ZWQuCisKIDIwMTYtMDkt
MTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSAtd2Via2l0LXRyYW5zaXRpb24tKiBhbmQgLXdlYmtpdC1hbmltYXRpb24tKiBwcm9wZXJ0aWVz
IGJlIHB1cmUgYWxpYXNlcyBvZiB0aGUgdW5wcmVmaXhlZCBvbmVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmggYi9Tb3VyY2UvV1RGL3d0Zi91bmlj
b2RlL0NoYXJhY3Rlck5hbWVzLmgKaW5kZXggMWRjMjc5NGYwMjEzODBmMWE0NDMxOTNlZDc1Njli
YzM4YmRiNTZkOC4uOWRiZGFhOGI4Y2FhZDlhY2QzMGMzYTYxNWM0NzM0NDdhZGNkNzBiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaApAQCAtNzAsNiArNzAsNyBAQCBj
b25zdCBVQ2hhciBtaW51c1NpZ24gPSAweDIyMTI7CiBjb25zdCBVQ2hhciBuYXJyb3dOb25CcmVh
a2luZ1NwYWNlID0gMHgyMDJGOwogY29uc3QgVUNoYXIgbmV3bGluZUNoYXJhY3RlciA9IDB4MDAw
QTsKIGNvbnN0IFVDaGFyIG5vQnJlYWtTcGFjZSA9IDB4MDBBMDsKK2NvbnN0IFVDaGFyIG5hcnJv
d05vQnJlYWtTcGFjZSA9IDB4MjAyRjsKIGNvbnN0IFVDaGFyIG9iamVjdFJlcGxhY2VtZW50Q2hh
cmFjdGVyID0gMHhGRkZDOwogY29uc3QgVUNoYXIgcG9wRGlyZWN0aW9uYWxGb3JtYXR0aW5nID0g
MHgyMDJDOwogY29uc3QgVUNoYXIgcG9wRGlyZWN0aW9uYWxJc29sYXRlID0gMHgyMDY5OwpAQCAt
MTMyLDYgKzEzMyw3IEBAIHVzaW5nIFdURjo6VW5pY29kZTo6bWludXNTaWduOwogdXNpbmcgV1RG
OjpVbmljb2RlOjpuYXJyb3dOb25CcmVha2luZ1NwYWNlOwogdXNpbmcgV1RGOjpVbmljb2RlOjpu
ZXdsaW5lQ2hhcmFjdGVyOwogdXNpbmcgV1RGOjpVbmljb2RlOjpub0JyZWFrU3BhY2U7Cit1c2lu
ZyBXVEY6OlVuaWNvZGU6Om5hcnJvd05vQnJlYWtTcGFjZTsKIHVzaW5nIFdURjo6VW5pY29kZTo6
b2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXI7CiB1c2luZyBXVEY6OlVuaWNvZGU6OnBvcERpcmVj
dGlvbmFsRm9ybWF0dGluZzsKIHVzaW5nIFdURjo6VW5pY29kZTo6cG9wRGlyZWN0aW9uYWxJc29s
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCA0ODM0
MDk1MjM5ZTIyMDM3M2VhNDEwOGFjYTMzMWQzMWE0NDQwMzQ2Li42ZDI0ZDIwZTVhNjdiZDc5Mjdk
YjNiODhmMjUxOWUyMTA0NTFmM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcApAQCAtMTg3LDYgKzE4Nyw3IEBAIHN0YXRpYyBSZWZQdHI8R2x5cGhQYWdlPiBj
cmVhdGVBbmRGaWxsR2x5cGhQYWdlKHVuc2lnbmVkIHBhZ2VOdW1iZXIsIGNvbnN0IEZvbnQmCiAg
ICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludCgnXG4nLCBzcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0
ZUNvZGVQb2ludCgnXHQnLCBzcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludChub0Jy
ZWFrU3BhY2UsIHNwYWNlKTsKKyAgICAgICAgb3ZlcndyaXRlQ29kZVBvaW50KG5hcnJvd05vQnJl
YWtTcGFjZSwgemVyb1dpZHRoU3BhY2UpOwogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQobGVm
dFRvUmlnaHRNYXJrLCB6ZXJvV2lkdGhTcGFjZSk7CiAgICAgICAgIG92ZXJ3cml0ZUNvZGVQb2lu
dChyaWdodFRvTGVmdE1hcmssIHplcm9XaWR0aFNwYWNlKTsKICAgICAgICAgb3ZlcndyaXRlQ29k
ZVBvaW50KGxlZnRUb1JpZ2h0RW1iZWQsIHplcm9XaWR0aFNwYWNlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlLmgKaW5kZXggYTFhNTk0NGZkNjJmOGU4NGUw
ZjQwZTc3YTdmNmMzNTVjNjQwNGRlNC4uNzQwYjEzZTg3Yjk2YTVlOThmMGRkNjdlZGQ1ZTUwNTk2
MGE1ZjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhQYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdl
LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNkZWZpbmUgR2x5cGhQYWdlX2gKIAogI2luY2x1ZGUgIkds
eXBoLmgiCi0jaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTQz
LDkgKzQyLDkgQEAgY2xhc3MgRm9udDsKIC8vIEhvbGRzIHRoZSBnbHlwaCBpbmRleCBhbmQgdGhl
IGNvcnJlc3BvbmRpbmcgRm9udCBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbgogLy8gY2hhcmFjdGVy
Lgogc3RydWN0IEdseXBoRGF0YSB7Ci0gICAgR2x5cGhEYXRhKEdseXBoIGcgPSAwLCBjb25zdCBG
b250KiBmID0gMCkKLSAgICAgICAgOiBnbHlwaChnKQotICAgICAgICAsIGZvbnQoZikKKyAgICBH
bHlwaERhdGEoR2x5cGggZ2x5cGggPSAwLCBjb25zdCBGb250KiBmb250ID0gMCkKKyAgICAgICAg
OiBnbHlwaChnbHlwaCkKKyAgICAgICAgLCBmb250KGZvbnQpCiAgICAgewogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZU1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQYWdlTWFj
LmNwcAppbmRleCBmMzljOGRjMDU5ZjUyODY2YTI2Njk5Yzc0NGMwNzRmMTQ3MWMzOGMxLi5iYmZm
MTFiNjk2ZjBhNmJmZWRjZDdjZWQwMzgzMmIzMGYxMTY1NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQYWdlTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQYWdlTWFjLmNwcApAQCAtNDAs
MjEgKzQwLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgc2hvdWxk
VXNlQ29yZVRleHQoY29uc3QgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBj
b25zdCBGb250JiBmb250RGF0YSkKK3N0YXRpYyBib29sIHNob3VsZEZpbGxXaXRoVmVydGljYWxH
bHlwaHMoY29uc3QgVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBG
b250JiBmb250KQogewotICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUga2VwdCBpbiBzeW5jIHdpdGgg
R2x5cGhQYWdlOjpmaWxsKCkuIEN1cnJlbnRseSwgdGhlIENvcmVUZXh0IHBhdGhzIGFyZSBub3Qg
YWJsZSB0byBoYW5kbGUKLSAgICAvLyBldmVyeSBzaXR1dGF0aW9uLiBSZXR1cm5pbmcgdHJ1ZSBm
cm9tIHRoaXMgZnVuY3Rpb24gaW4gYSBuZXcgc2l0dWF0aW9uIHdpbGwgcmVxdWlyZSB5b3UgdG8g
ZXhwbGljaXRseSBhZGQKLSAgICAvLyBoYW5kbGluZyBmb3IgdGhhdCBzaXR1YXRpb24gaW4gdGhl
IENvcmVUZXh0IHBhdGhzIG9mIEdseXBoUGFnZTo6ZmlsbCgpLgotICAgIGlmIChmb250RGF0YS5w
bGF0Zm9ybURhdGEoKS5pc1N5c3RlbUZvbnQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
aWYgKGZvbnREYXRhLnBsYXRmb3JtRGF0YSgpLmlzRm9yVGV4dENvbWJpbmUoKSB8fCBmb250RGF0
YS5oYXNWZXJ0aWNhbEdseXBocygpKSB7Ci0gICAgICAgIC8vIElkZW9ncmFwaHMgZG9uJ3QgaGF2
ZSBhIHZlcnRpY2FsIHZhcmlhbnQgb3Igd2lkdGggdmFyaWFudHMuCi0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBidWZmZXJMZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKCFG
b250Q2FzY2FkZTo6aXNDSktJZGVvZ3JhcGgoYnVmZmVyW2ldKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgIGlmICghZm9udC5oYXNWZXJ0aWNhbEdseXBocygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1
ZmZlckxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghRm9udENhc2NhZGU6OmlzQ0pLSWRlb2dy
YXBoKGJ1ZmZlcltpXSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTY0LDI2ICs1NywxMiBAQCBib29sIEdseXBoUGFnZTo6Zmls
bChVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgpCiAKICAgICBjb25zdCBGb250
JiBmb250ID0gdGhpcy0+Zm9udCgpOwogICAgIFZlY3RvcjxDR0dseXBoLCA1MTI+IGdseXBocyhi
dWZmZXJMZW5ndGgpOwotICAgIHVuc2lnbmVkIGdseXBoU3RlcDsKLSAgICBpZiAoIXNob3VsZFVz
ZUNvcmVUZXh0KGJ1ZmZlciwgYnVmZmVyTGVuZ3RoLCBmb250KSkgewotICAgICAgICAvLyBXZSBw
YXNzIGluIGVpdGhlciAyNTYgb3IgNTEyIFVURi0xNiBjaGFyYWN0ZXJzOiAyNTYgZm9yIFUrRkZG
RiBhbmQgbGVzcywgNTEyIChkb3VibGUgY2hhcmFjdGVyIHN1cnJvZ2F0ZXMpCi0gICAgICAgIC8v
IGZvciBVKzEwMDAwIGFuZCBhYm92ZS4gSXQgaXMgaW5kZWVkIHBvc3NpYmxlIHRvIGdldCBiYWNr
IDUxMiBnbHlwaHMgYmFjayBmcm9tIHRoZSBBUEksIHNvIHRoZSBnbHlwaCBidWZmZXIKLSAgICAg
ICAgLy8gd2UgcGFzcyBpbiBtdXN0IGJlIDUxMi4gSWYgd2UgZ2V0IGJhY2sgbW9yZSB0aGFuIDI1
NiBnbHlwaHMgdGhvdWdoIHdlJ2xsIGlnbm9yZSBhbGwgdGhlIG9uZXMgYWZ0ZXIgMjU2LAotICAg
ICAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuIGFzIHRoZSBvbmx5IHRpbWUgd2UgcGFzcyBp
biA1MTIgY2hhcmFjdGVycyBpcyB3aGVuIHRoZXkgYXJlIHN1cnJvZ2F0ZXMuCi0gICAgICAgIENH
Rm9udEdldEdseXBoc0ZvclVuaWNoYXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY2dGb250KCksIGJ1
ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgZ2x5cGhTdGVwID0g
MTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBCZWNhdXNlIHdlIGtub3cgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIHNob3VsZFVzZUNvcmVUZXh0KCksIGlmIHRoZSBmb250IGlzbid0IGZvciB0ZXh0
IGNvbWJpbmUgYW5kIGl0IGlzbid0IGEgc3lzdGVtIGZvbnQsCi0gICAgICAgIC8vIHdlIGtub3cg
aXQgbXVzdCBoYXZlIHZlcnRpY2FsIGdseXBocy4KLSAgICAgICAgaWYgKGZvbnQucGxhdGZvcm1E
YXRhKCkuaXNGb3JUZXh0Q29tYmluZSgpIHx8IGZvbnQucGxhdGZvcm1EYXRhKCkuaXNTeXN0ZW1G
b250KCkpCi0gICAgICAgICAgICBDVEZvbnRHZXRHbHlwaHNGb3JDaGFyYWN0ZXJzKGZvbnQucGxh
dGZvcm1EYXRhKCkuY3RGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRhdGEoKSwgYnVmZmVyTGVuZ3Ro
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQ1RGb250R2V0VmVydGljYWxHbHlwaHNGb3JD
aGFyYWN0ZXJzKGZvbnQucGxhdGZvcm1EYXRhKCkuY3RGb250KCksIGJ1ZmZlciwgZ2x5cGhzLmRh
dGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICB1bnNpZ25lZCBnbHlwaFN0ZXAgPSBidWZmZXJMZW5n
dGggLyBHbHlwaFBhZ2U6OnNpemU7CiAKLSAgICAgICAgLy8gV2hlbiBidWZmZXIgY29uc2lzdHMg
b2Ygc3Vycm9nYXRlIHBhaXJzLCBDVEZvbnRHZXRWZXJ0aWNhbEdseXBoc0ZvckNoYXJhY3RlcnMg
YW5kIENURm9udEdldEdseXBoc0ZvckNoYXJhY3RlcnMKLSAgICAgICAgLy8gcGxhY2UgdGhlIGds
eXBocyBhdCBpbmRpY2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBl
YWNoIHBhaXIuCi0gICAgICAgIGdseXBoU3RlcCA9IGJ1ZmZlckxlbmd0aCAvIEdseXBoUGFnZTo6
c2l6ZTsKLSAgICB9CisgICAgaWYgKHNob3VsZEZpbGxXaXRoVmVydGljYWxHbHlwaHMoYnVmZmVy
LCBidWZmZXJMZW5ndGgsIGZvbnQpKQorICAgICAgICBDVEZvbnRHZXRWZXJ0aWNhbEdseXBoc0Zv
ckNoYXJhY3RlcnMoZm9udC5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgYnVmZmVyLCBnbHlwaHMu
ZGF0YSgpLCBidWZmZXJMZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgQ1RGb250R2V0R2x5cGhz
Rm9yQ2hhcmFjdGVycyhmb250LnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpLCBidWZmZXIsIGdseXBo
cy5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CiAKICAgICBib29sIGhhdmVHbHlwaHMgPSBmYWxzZTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR2x5cGhQYWdlOjpzaXplOyArK2kpIHsK
</data>
<flag name="review"
          id="311887"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>