<?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>149898</bug_id>
          
          <creation_ts>2015-10-07 14:44:05 -0700</creation_ts>
          <short_desc>Revert r187626 (and r188025) as it caused a PLT regression</short_desc>
          <delta_ts>2015-10-08 15:54:28 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>149937</dependson>
          <blocked>147457</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1131432</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-07 14:44:05 -0700</bug_when>
    <thetext>Roll out r187626 as it caused a PLT regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131433</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-07 14:44:23 -0700</bug_when>
    <thetext>rdar://problem/22657123</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131435</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-07 14:55:19 -0700</bug_when>
    <thetext>Looks like I may have to roll out &lt;http://trac.webkit.org/changeset/188025&gt; as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131454</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-07 15:59:56 -0700</bug_when>
    <thetext>You shouldn&apos;t need to roll out the stuff that depends on this. Instead, you can just mark the tests as expected to fail.

Instead, first try to revert only the changes in this file http://trac.webkit.org/changeset/187626/trunk/Source/WebCore/platform/graphics/FontCache.h

That will probably be effective, and is much smaller / simpler than trying to revert the patch and everything on top of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131464</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-07 16:25:20 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; You shouldn&apos;t need to roll out the stuff that depends on this. Instead, you
&gt; can just mark the tests as expected to fail.
&gt; 
&gt; Instead, first try to revert only the changes in this file
&gt; http://trac.webkit.org/changeset/187626/trunk/Source/WebCore/platform/
&gt; graphics/FontCache.h
&gt; 
&gt; That will probably be effective, and is much smaller / simpler than trying
&gt; to revert the patch and everything on top of it.

Ok, I have a full revert patch but I&apos;ll try the partial revert first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131498</commentid>
    <comment_count>5</comment_count>
      <attachid>262665</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-07 18:35:39 -0700</bug_when>
    <thetext>Created attachment 262665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131499</commentid>
    <comment_count>6</comment_count>
      <attachid>262665</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-07 18:36:38 -0700</bug_when>
    <thetext>Comment on attachment 262665
Patch

This will likely cause tests to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131501</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-07 18:48:00 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 262665 [details]
&gt; Patch
&gt; 
&gt; This will likely cause tests to fail.

I ran all the tests locally without problem but EWS will confirm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131503</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-07 19:05:53 -0700</bug_when>
    <thetext>It&apos;s a little concerning that they all pass...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131505</commentid>
    <comment_count>9</comment_count>
      <attachid>262665</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-07 19:07:07 -0700</bug_when>
    <thetext>Comment on attachment 262665
Patch

Clearing flags on attachment: 262665

Committed r190701: &lt;http://trac.webkit.org/changeset/190701&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131507</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-07 19:07:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131735</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-08 14:59:31 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 149937</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131742</commentid>
    <comment_count>12</comment_count>
      <attachid>262720</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-08 15:12:22 -0700</bug_when>
    <thetext>Created attachment 262720
[WIP] Full roll out

WIP patch in case Myles has initial feedback. I haven&apos;t run the layout tests yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131751</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-08 15:30:45 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created attachment 262720 [details]
&gt; [WIP] Full roll out
&gt; 
&gt; WIP patch in case Myles has initial feedback. I haven&apos;t run the layout tests
&gt; yet.

Which specific revisions does this roll out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131753</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-08 15:32:13 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Created attachment 262720 [details]
&gt; &gt; [WIP] Full roll out
&gt; &gt; 
&gt; &gt; WIP patch in case Myles has initial feedback. I haven&apos;t run the layout tests
&gt; &gt; yet.
&gt; 
&gt; Which specific revisions does this roll out?

The ones in the bug title :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131759</commentid>
    <comment_count>15</comment_count>
      <attachid>262723</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-08 15:49:19 -0700</bug_when>
    <thetext>Created attachment 262723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131762</commentid>
    <comment_count>16</comment_count>
      <attachid>262723</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-08 15:54:21 -0700</bug_when>
    <thetext>Comment on attachment 262723
Patch

Clearing flags on attachment: 262723

Committed r190754: &lt;http://trac.webkit.org/changeset/190754&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131763</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-08 15:54:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262665</attachid>
            <date>2015-10-07 18:35:39 -0700</date>
            <delta_ts>2015-10-08 15:12:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149898-20151007183508.patch</filename>
            <type>text/plain</type>
            <size>2412</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjMxZDUwMmUyNzliNmY4
Y2ZhOTFhMDkzZTYzOGQwOGZkZGY1ZjcwNi4uYzY4ZjVmZDVkODgwNDEwNDFhYmFiMzEzMWNhZmEy
MGIyYmU5NDU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTEwLTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUGFydGlhbCByZXZlcnQgb2Yg
cjE4NzYyNiBhcyBpdCBjYXVzZWQgYSBQTFQgcmVncmVzc2lvbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gYSBwYXJ0aWFsIHJldmVydCBvZiByMTg3
NjI2IGFzIGl0IGNhdXNlZCBhIHJlZ3Jlc3Npb24gb24gUExULgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRp
b25LZXk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5
OjpGb250RGVzY3JpcHRpb25LZXkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udERl
c2NyaXB0aW9uS2V5Ojpjb21wdXRlSGFzaCk6IERlbGV0ZWQuCisKIDIwMTUtMTAtMDcgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCA6aG9zdCBw
c2V1ZG8gY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmgKaW5kZXggOTQ3M2FiMWY1YzUxYzE2ZjBkYzU3ZGQ5MjYxYTJmZjQzMDhlYTA5My4uOTNhZDA4
OTJiMWQ4YmZmM2RlYjExZDkzYjlmNDM0Y2UwOGNkZGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTc1LDcgKzc1LDYgQEAgc3RydWN0IEZv
bnREZXNjcmlwdGlvbktleSB7CiAgICAgICAgIDogbV9zaXplKGRlc2NyaXB0aW9uLmNvbXB1dGVk
UGl4ZWxTaXplKCkpCiAgICAgICAgICwgbV93ZWlnaHQoZGVzY3JpcHRpb24ud2VpZ2h0KCkpCiAg
ICAgICAgICwgbV9mbGFncyhtYWtlRmxhZ3NLZXkoZGVzY3JpcHRpb24pKQotICAgICAgICAsIG1f
bG9jYWxlKGRlc2NyaXB0aW9uLmxvY2FsZSgpKQogICAgICAgICAsIG1fZmVhdHVyZVNldHRpbmdz
KGRlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpKQogICAgIHsgfQogCkBAIC04NSw3ICs4NCw3
IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gbV9zaXplID09IG90aGVyLm1fc2l6ZSAmJiBtX3dlaWdodCA9PSBvdGhlci5tX3dlaWdodCAm
JiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MgJiYgbV9sb2NhbGUgPT0gb3RoZXIubV9sb2NhbGUK
KyAgICAgICAgcmV0dXJuIG1fc2l6ZSA9PSBvdGhlci5tX3NpemUgJiYgbV93ZWlnaHQgPT0gb3Ro
ZXIubV93ZWlnaHQgJiYgbV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzCiAgICAgICAgICAgICAmJiBt
X2ZlYXR1cmVTZXR0aW5ncyA9PSBvdGhlci5tX2ZlYXR1cmVTZXR0aW5nczsKICAgICB9CiAKQEAg
LTEwMyw3ICsxMDIsNiBAQCBzdHJ1Y3QgRm9udERlc2NyaXB0aW9uS2V5IHsKICAgICAgICAgaGFz
aGVyLmFkZChtX3dlaWdodCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgZmxhZ0l0ZW0gOiBtX2Zs
YWdzKQogICAgICAgICAgICAgaGFzaGVyLmFkZChmbGFnSXRlbSk7Ci0gICAgICAgIGhhc2hlci5h
ZGQobV9sb2NhbGUuaXNOdWxsKCkgPyAwIDogbV9sb2NhbGUuaW1wbCgpLT5leGlzdGluZ0hhc2go
KSk7CiAgICAgICAgIGhhc2hlci5hZGQobV9mZWF0dXJlU2V0dGluZ3MuaGFzaCgpKTsKICAgICAg
ICAgcmV0dXJuIGhhc2hlci5oYXNoKCk7CiAgICAgfQpAQCAtMTQ0LDcgKzE0Miw2IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9zaXplIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fd2VpZ2h0IHsg
MCB9OwogICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDI+IG1fZmxhZ3Mge3sgMCwgMCB9fTsKLSAg
ICBBdG9taWNTdHJpbmcgbV9sb2NhbGU7CiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncyBtX2ZlYXR1
cmVTZXR0aW5nczsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262720</attachid>
            <date>2015-10-08 15:12:22 -0700</date>
            <delta_ts>2015-10-08 15:49:13 -0700</delta_ts>
            <desc>[WIP] Full roll out</desc>
            <filename>149898_full_rollout.patch</filename>
            <type>text/plain</type>
            <size>18113</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggNzM4MmRhNi4uNDM4MzM2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KQEAgLTExNCw3ICsxMTQs
NyBAQCBmb250LXZhcmlhbnQtY2FwcyBbSW5oZXJpdGVkLCBGb250UHJvcGVydHksIE5hbWVGb3JN
ZXRob2RzPVZhcmlhbnRDYXBzXQogZm9udC12YXJpYW50LW51bWVyaWMgW0luaGVyaXRlZCwgRm9u
dFByb3BlcnR5LCBOYW1lRm9yTWV0aG9kcz1WYXJpYW50TnVtZXJpYywgQ3VzdG9tPUFsbF0KIGZv
bnQtdmFyaWFudC1hbHRlcm5hdGVzIFtJbmhlcml0ZWQsIEZvbnRQcm9wZXJ0eSwgTmFtZUZvck1l
dGhvZHM9VmFyaWFudEFsdGVybmF0ZXNdCiBmb250LXZhcmlhbnQtZWFzdC1hc2lhbiBbSW5oZXJp
dGVkLCBGb250UHJvcGVydHksIE5hbWVGb3JNZXRob2RzPVZhcmlhbnRFYXN0QXNpYW4sIEN1c3Rv
bT1BbGxdCi0td2Via2l0LWxvY2FsZSBbSW5oZXJpdGVkLCBGb250UHJvcGVydHksIEN1c3RvbT1W
YWx1ZV0KKy13ZWJraXQtbG9jYWxlIFtJbmhlcml0ZWQsIEN1c3RvbT1WYWx1ZV0KIC13ZWJraXQt
dGV4dC1vcmllbnRhdGlvbiBbSW5oZXJpdGVkLCBDdXN0b209VmFsdWVdCiAtZXB1Yi10ZXh0LW9y
aWVudGF0aW9uID0gLXdlYmtpdC10ZXh0LW9yaWVudGF0aW9uCiAjaWYgZGVmaW5lZChFTkFCTEVf
SU9TX1RFWFRfQVVUT1NJWklORykgJiYgRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCA5NmIyZDJiLi4xN2Q0Zjc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiTG9jYWxlVG9TY3JpcHRNYXBw
aW5nLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtNjk0LDEyICs2OTUsMTMgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ2xpcChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1MKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtp
dExvY2FsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpOwotICAgIAotICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldExvY2Fs
ZShudWxsQXRvbSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0TG9jYWxlKG51
bGxBdG9tKTsKICAgICBlbHNlCi0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRMb2NhbGUocHJp
bWl0aXZlVmFsdWUuZ2V0U3RyaW5nVmFsdWUoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0TG9jYWxlKHByaW1pdGl2ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCkpOworCisgICAg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTY3JpcHQo
bG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PmxvY2FsZSgpKSk7CiAgICAgc3R5bGVSZXNvbHZlci5zZXRGb250RGVzY3JpcHRpb24oZm9udERl
c2NyaXB0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cAppbmRleCBkYjkyZmIwLi5iZjcyNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcApAQCAtMzkzLDkgKzM5Myw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
Ci0gICAgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUs
IFVDaGFyMzIgY2hhcmFjdGVyLCBib29sIGlzRm9yUGxhdGZvcm1Gb250KQotICAgICAgICA6IGxv
Y2FsZShsb2NhbGUpCi0gICAgICAgICwgY2hhcmFjdGVyKGNoYXJhY3RlcikKKyAgICBDaGFyYWN0
ZXJGYWxsYmFja01hcEtleShVQ2hhcjMyIGNoYXJhY3RlciwgYm9vbCBpc0ZvclBsYXRmb3JtRm9u
dCkKKyAgICAgICAgOiBjaGFyYWN0ZXIoY2hhcmFjdGVyKQogICAgICAgICAsIGlzRm9yUGxhdGZv
cm1Gb250KGlzRm9yUGxhdGZvcm1Gb250KQogICAgIHsKICAgICB9CkBAIC00MDksNyArNDA4LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoYXJhY3RlckZhbGxiYWNr
TWFwS2V5JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBsb2NhbGUgPT0gb3Ro
ZXIubG9jYWxlICYmIGNoYXJhY3RlciA9PSBvdGhlci5jaGFyYWN0ZXIgJiYgaXNGb3JQbGF0Zm9y
bUZvbnQgPT0gb3RoZXIuaXNGb3JQbGF0Zm9ybUZvbnQ7CisgICAgICAgIHJldHVybiBjaGFyYWN0
ZXIgPT0gb3RoZXIuY2hhcmFjdGVyICYmIGlzRm9yUGxhdGZvcm1Gb250ID09IG90aGVyLmlzRm9y
UGxhdGZvcm1Gb250OwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJ
c1plcm8gPSB0cnVlOwpAQCAtNDE3LDcgKzQxNiw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIHN0cnVjdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleUhhc2g7CiAKLSAgICBBdG9taWNT
dHJpbmcgbG9jYWxlOwogICAgIFVDaGFyMzIgY2hhcmFjdGVyIHsgMCB9OwogICAgIGJvb2wgaXNG
b3JQbGF0Zm9ybUZvbnQgeyBmYWxzZSB9OwogfTsKQEAgLTQyNSw3ICs0MjMsNyBAQCBwcml2YXRl
Ogogc3RydWN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaCB7CiAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkmIGtleSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBXVEY6OnBhaXJJbnRIYXNoKGtleS5sb2NhbGUuaXNOdWxsKCkgPyAwIDogV1RG
OjpBdG9taWNTdHJpbmdIYXNoOjpoYXNoKGtleS5sb2NhbGUpLCBXVEY6OnBhaXJJbnRIYXNoKGtl
eS5jaGFyYWN0ZXIsIGtleS5pc0ZvclBsYXRmb3JtRm9udCkpOworICAgICAgICByZXR1cm4gV1RG
OjpwYWlySW50SGFzaChrZXkuY2hhcmFjdGVyLCBrZXkuaXNGb3JQbGF0Zm9ybUZvbnQpOwogICAg
IH0KIAogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5
JiBhLCBjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSYgYikKQEAgLTQ1Niw3ICs0NTQsNyBA
QCBSZWZQdHI8Rm9udD4gRm9udDo6c3lzdGVtRmFsbGJhY2tGb250Rm9yQ2hhcmFjdGVyKFVDaGFy
MzIgY2hhcmFjdGVyLCBjb25zdCBGb250RAogICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5n
bGV0b24oKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3JpcHRpb24sIHRoaXMsIGlz
Rm9yUGxhdGZvcm1Gb250LCAmY29kZVVuaXQsIDEpOwogICAgIH0KIAotICAgIGF1dG8ga2V5ID0g
Q2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkoZGVzY3JpcHRpb24ubG9jYWxlKCksIGNoYXJhY3Rlciwg
aXNGb3JQbGF0Zm9ybUZvbnQpOworICAgIGF1dG8ga2V5ID0gQ2hhcmFjdGVyRmFsbGJhY2tNYXBL
ZXkoY2hhcmFjdGVyLCBpc0ZvclBsYXRmb3JtRm9udCk7CiAgICAgYXV0byBjaGFyYWN0ZXJBZGRS
ZXN1bHQgPSBmb250QWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hZGQoV1RGOjptb3ZlKGtleSks
IG51bGxwdHIpOwogCiAgICAgRm9udComIGZhbGxiYWNrRm9udCA9IGNoYXJhY3RlckFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5oCmluZGV4IDk0NzNhYjEuLjkzYWQwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC03NSw3ICs3NSw2IEBAIHN0cnVjdCBGb250
RGVzY3JpcHRpb25LZXkgewogICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBp
eGVsU2l6ZSgpKQogICAgICAgICAsIG1fd2VpZ2h0KGRlc2NyaXB0aW9uLndlaWdodCgpKQogICAg
ICAgICAsIG1fZmxhZ3MobWFrZUZsYWdzS2V5KGRlc2NyaXB0aW9uKSkKLSAgICAgICAgLCBtX2xv
Y2FsZShkZXNjcmlwdGlvbi5sb2NhbGUoKSkKICAgICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncyhk
ZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKSkKICAgICB7IH0KIApAQCAtODUsNyArODQsNyBA
QCBzdHJ1Y3QgRm9udERlc2NyaXB0aW9uS2V5IHsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fc2l6ZSA9PSBvdGhlci5tX3NpemUgJiYgbV93ZWlnaHQgPT0gb3RoZXIubV93ZWlnaHQgJiYg
bV9mbGFncyA9PSBvdGhlci5tX2ZsYWdzICYmIG1fbG9jYWxlID09IG90aGVyLm1fbG9jYWxlCisg
ICAgICAgIHJldHVybiBtX3NpemUgPT0gb3RoZXIubV9zaXplICYmIG1fd2VpZ2h0ID09IG90aGVy
Lm1fd2VpZ2h0ICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncwogICAgICAgICAgICAgJiYgbV9m
ZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGluZ3M7CiAgICAgfQogCkBAIC0x
MDMsNyArMTAyLDYgQEAgc3RydWN0IEZvbnREZXNjcmlwdGlvbktleSB7CiAgICAgICAgIGhhc2hl
ci5hZGQobV93ZWlnaHQpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGZsYWdJdGVtIDogbV9mbGFn
cykKICAgICAgICAgICAgIGhhc2hlci5hZGQoZmxhZ0l0ZW0pOwotICAgICAgICBoYXNoZXIuYWRk
KG1fbG9jYWxlLmlzTnVsbCgpID8gMCA6IG1fbG9jYWxlLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCkp
OwogICAgICAgICBoYXNoZXIuYWRkKG1fZmVhdHVyZVNldHRpbmdzLmhhc2goKSk7CiAgICAgICAg
IHJldHVybiBoYXNoZXIuaGFzaCgpOwogICAgIH0KQEAgLTE0NCw3ICsxNDIsNiBAQCBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1fc2l6ZSB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3dlaWdodCB7IDAg
fTsKICAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCAyPiBtX2ZsYWdzIHt7IDAsIDAgfX07Ci0gICAg
QXRvbWljU3RyaW5nIG1fbG9jYWxlOwogICAgIEZvbnRGZWF0dXJlU2V0dGluZ3MgbV9mZWF0dXJl
U2V0dGluZ3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250RGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERlc2NyaXB0aW9uLmNwcAppbmRleCA0NmE1ZGQ0Li5hZjM3NzBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAK
QEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTmljaG9sYXMgU2hh
bmtzIDxjb250YWN0QG5pY2tzaGFua3MuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTMwLDEzICsyOSwxMSBAQAogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCi0jaW5jbHVk
ZSAiTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IFNhbWVTaXplQXNGb250Q2FzY2FkZURlc2NyaXB0aW9uIHsKICAgICBWZWN0b3I8dm9pZCo+
IHZlY3RvcjsKLSAgICB2b2lkKiBzdHJpbmc7CiAgICAgZmxvYXQgc2l6ZTsKICAgICB1bnNpZ25l
ZCBiaXRmaWVsZHMxOwogICAgIHVuc2lnbmVkIGJpdGZpZWxkczIgOiAyMjsKQEAgLTU2LDcgKzUz
LDcgQEAgRm9udERlc2NyaXB0aW9uOjpGb250RGVzY3JpcHRpb24oKQogICAgICwgbV93ZWlnaHQo
Rm9udFdlaWdodE5vcm1hbCkKICAgICAsIG1fcmVuZGVyaW5nTW9kZShOb3JtYWxSZW5kZXJpbmdN
b2RlKQogICAgICwgbV90ZXh0UmVuZGVyaW5nKEF1dG9UZXh0UmVuZGVyaW5nKQotICAgICwgbV9z
Y3JpcHQobG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihtX2xvY2FsZSkpCisgICAg
LCBtX3NjcmlwdChVU0NSSVBUX0NPTU1PTikKICAgICAsIG1fZm9udFN5bnRoZXNpcyhGb250U3lu
dGhlc2lzV2VpZ2h0IHwgRm9udFN5bnRoZXNpc1N0eWxlKQogICAgICwgbV92YXJpYW50Q29tbW9u
TGlnYXR1cmVzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGb250VmFyaWFudExpZ2F0dXJlczo6Tm9y
bWFsKSkKICAgICAsIG1fdmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEZvbnRWYXJpYW50TGlnYXR1cmVzOjpOb3JtYWwpKQpAQCAtNzYsMTIgKzczLDYg
QEAgRm9udERlc2NyaXB0aW9uOjpGb250RGVzY3JpcHRpb24oKQogewogfQogCi12b2lkIEZvbnRE
ZXNjcmlwdGlvbjo6c2V0TG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQotewotICAg
IG1fbG9jYWxlID0gbG9jYWxlOwotICAgIG1fc2NyaXB0ID0gbG9jYWxlVG9TY3JpcHRDb2RlRm9y
Rm9udFNlbGVjdGlvbihtX2xvY2FsZSk7Ci19Ci0KIEZvbnRUcmFpdHNNYXNrIEZvbnREZXNjcmlw
dGlvbjo6dHJhaXRzTWFzaygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZvbnRU
cmFpdHNNYXNrPigobV9pdGFsaWMgPyBGb250U3R5bGVJdGFsaWNNYXNrIDogRm9udFN0eWxlTm9y
bWFsTWFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERl
c2NyaXB0aW9uLmgKaW5kZXggZTNjNGU5MC4uNDkwMmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTU1LDcgKzU1LDYg
QEAgcHVibGljOgogICAgIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxGb250UmVuZGVyaW5nTW9kZT4obV9yZW5kZXJpbmdNb2RlKTsg
fQogICAgIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dFJlbmRlcmluZ01vZGU+KG1fdGV4dFJlbmRlcmluZyk7IH0KICAg
ICBVU2NyaXB0Q29kZSBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxVU2NyaXB0
Q29kZT4obV9zY3JpcHQpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUoKSBjb25z
dCB7IHJldHVybiBtX2xvY2FsZTsgfQogCiAgICAgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udE9yaWVudGF0aW9uPihtX29yaWVudGF0
aW9uKTsgfQogICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gbm9uQ0pLR2x5cGhPcmllbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vbkNKS0dseXBoT3JpZW50YXRpb24+KG1f
bm9uQ0pLR2x5cGhPcmllbnRhdGlvbik7IH0KQEAgLTEwNyw3ICsxMDYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRPcmllbnRhdGlvbihGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9v
cmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAgICAgdm9pZCBzZXROb25DSktHbHlwaE9yaWVu
dGF0aW9uKE5vbkNKS0dseXBoT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9ub25DSktHbHlw
aE9yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICAgICB2b2lkIHNldFdpZHRoVmFyaWFudChG
b250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCkgeyBtX3dpZHRoVmFyaWFudCA9IHdpZHRoVmFy
aWFudDsgfSAvLyBNYWtlIHN1cmUgbmV3IGNhbGxlcnMgb2YgdGhpcyBzeW5jIHdpdGggRm9udFBs
YXRmb3JtRGF0YTo6aXNGb3JUZXh0Q29tYmluZSgpIQotICAgIHZvaWQgc2V0TG9jYWxlKGNvbnN0
IEF0b21pY1N0cmluZyYpOworICAgIHZvaWQgc2V0U2NyaXB0KFVTY3JpcHRDb2RlIHMpIHsgbV9z
Y3JpcHQgPSBzOyB9CiAgICAgdm9pZCBzZXRGZWF0dXJlU2V0dGluZ3MoRm9udEZlYXR1cmVTZXR0
aW5ncyYmIHNldHRpbmdzKSB7IG1fZmVhdHVyZVNldHRpbmdzID0gV1RGOjptb3ZlKHNldHRpbmdz
KTsgfQogICAgIHZvaWQgc2V0Rm9udFN5bnRoZXNpcyhGb250U3ludGhlc2lzIGZvbnRTeW50aGVz
aXMpIHsgbV9mb250U3ludGhlc2lzID0gZm9udFN5bnRoZXNpczsgfQogICAgIHZvaWQgc2V0VmFy
aWFudENvbW1vbkxpZ2F0dXJlcyhGb250VmFyaWFudExpZ2F0dXJlcyB2YXJpYW50KSB7IG1fdmFy
aWFudENvbW1vbkxpZ2F0dXJlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YXJpYW50KTsgfQpA
QCAtMTMwLDcgKzEyOSw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGb250RmVhdHVyZVNl
dHRpbmdzIG1fZmVhdHVyZVNldHRpbmdzOwotICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKIAog
ICAgIGZsb2F0IG1fY29tcHV0ZWRTaXplIHsgMCB9OyAvLyBDb21wdXRlZCBzaXplIGFkanVzdGVk
IGZvciB0aGUgbWluaW11bSBmb250IHNpemUgYW5kIHRoZSB6b29tIGZhY3Rvci4KICAgICB1bnNp
Z25lZCBtX29yaWVudGF0aW9uIDogMTsgLy8gRm9udE9yaWVudGF0aW9uIC0gV2hldGhlciB0aGUg
Zm9udCBpcyByZW5kZXJpbmcgb24gYSBob3Jpem9udGFsIGxpbmUgb3IgYSB2ZXJ0aWNhbCBsaW5l
LgpAQCAtMTcxLDcgKzE2OSw3IEBAIGlubGluZSBib29sIEZvbnREZXNjcmlwdGlvbjo6b3BlcmF0
b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX29y
aWVudGF0aW9uID09IG90aGVyLm1fb3JpZW50YXRpb24KICAgICAgICAgJiYgbV9ub25DSktHbHlw
aE9yaWVudGF0aW9uID09IG90aGVyLm1fbm9uQ0pLR2x5cGhPcmllbnRhdGlvbgogICAgICAgICAm
JiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5tX3dpZHRoVmFyaWFudAotICAgICAgICAmJiBtX2xv
Y2FsZSA9PSBvdGhlci5tX2xvY2FsZQorICAgICAgICAmJiBtX3NjcmlwdCA9PSBvdGhlci5tX3Nj
cmlwdAogICAgICAgICAmJiBtX2ZlYXR1cmVTZXR0aW5ncyA9PSBvdGhlci5tX2ZlYXR1cmVTZXR0
aW5ncwogICAgICAgICAmJiBtX2ZvbnRTeW50aGVzaXMgPT0gb3RoZXIubV9mb250U3ludGhlc2lz
CiAgICAgICAgICYmIG1fdmFyaWFudENvbW1vbkxpZ2F0dXJlcyA9PSBvdGhlci5tX3ZhcmlhbnRD
b21tb25MaWdhdHVyZXMKQEAgLTI2NSw3ICsyNjMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEZv
bnRTbW9vdGhpbmdNb2RlIGluaXRpYWxGb250U21vb3RoaW5nKCkgeyByZXR1cm4gQXV0b1Ntb290
aGluZzsgfQogICAgIHN0YXRpYyBUZXh0UmVuZGVyaW5nTW9kZSBpbml0aWFsVGV4dFJlbmRlcmlu
Z01vZGUoKSB7IHJldHVybiBBdXRvVGV4dFJlbmRlcmluZzsgfQogICAgIHN0YXRpYyBGb250U3lu
dGhlc2lzIGluaXRpYWxGb250U3ludGhlc2lzKCkgeyByZXR1cm4gRm9udFN5bnRoZXNpc1dlaWdo
dCB8IEZvbnRTeW50aGVzaXNTdHlsZTsgfQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGluaXRpYWxMb2NhbGUoKSB7IHJldHVybiBudWxsQXRvbTsgfQogICAgIHN0YXRpYyBGb250VmFy
aWFudFBvc2l0aW9uIGluaXRpYWxWYXJpYW50UG9zaXRpb24oKSB7IHJldHVybiBGb250VmFyaWFu
dFBvc2l0aW9uOjpOb3JtYWw7IH0KICAgICBzdGF0aWMgRm9udFZhcmlhbnRDYXBzIGluaXRpYWxW
YXJpYW50Q2FwcygpIHsgcmV0dXJuIEZvbnRWYXJpYW50Q2Fwczo6Tm9ybWFsOyB9CiAgICAgc3Rh
dGljIEZvbnRWYXJpYW50QWx0ZXJuYXRlcyBpbml0aWFsVmFyaWFudEFsdGVybmF0ZXMoKSB7IHJl
dHVybiBGb250VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCmluZGV4IGVmNzMyNTUuLmI3NmQ4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAg
LTcxMiw3ICs3MTIsOCBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0Zv
ckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcgogI2VuZGlmCiAKICAgICBj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBvcmlnaW5hbEZvbnREYXRhLT5w
bGF0Zm9ybURhdGEoKTsKLSAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiByZXN1bHQgPSBwbGF0Zm9y
bUxvb2t1cEZhbGxiYWNrRm9udChwbGF0Zm9ybURhdGEuZm9udCgpLCBkZXNjcmlwdGlvbi53ZWln
aHQoKSwgZGVzY3JpcHRpb24ubG9jYWxlKCksIGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgLy8g
RklYTUU6IFNob3VsZCBwYXNzIGluIHRoZSBsb2NhbGUgaW5zdGVhZCBvZiBudWxsQXRvbS4KKyAg
ICBSZXRhaW5QdHI8Q1RGb250UmVmPiByZXN1bHQgPSBwbGF0Zm9ybUxvb2t1cEZhbGxiYWNrRm9u
dChwbGF0Zm9ybURhdGEuZm9udCgpLCBkZXNjcmlwdGlvbi53ZWlnaHQoKSwgbnVsbEF0b20sIGNo
YXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgcmVzdWx0ID0gcHJlcGFyZVBsYXRmb3JtRm9udChyZXN1
bHQuZ2V0KCksIGRlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksIGRlc2NyaXB0aW9uLmZl
YXR1cmVTZXR0aW5ncygpLCBkZXNjcmlwdGlvbi52YXJpYW50U2V0dGluZ3MoKSk7CiAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBsYXN0UmVzb3J0RmFsbGJhY2tGb250KGRlc2NyaXB0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CmluZGV4IDFjYmIyMmEuLjJiZGViMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNTk0LDYgKzU5NCw3IEBAIGJvb2wgUmVuZGVyU3R5
bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlJiBvdGhlciwgdW5zaWdu
ZWQmIGNoYW5nCiAgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25M
aW1pdEJlZm9yZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEJl
Zm9yZQogICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRB
ZnRlciAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyCiAg
ICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmcgIT0gb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nCisgICAgICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YS0+bG9jYWxlICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT5sb2Nh
bGUKICAgICAgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5tX3J1YnlQb3NpdGlvbiAhPSBv
dGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24KICAgICAgICAgICAgIHx8IHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNNYXJrICE9IG90aGVyLnJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0RW1waGFzaXNNYXJrCiAgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dEVtcGhhc2lzUG9zaXRpb24gIT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBo
YXNpc1Bvc2l0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCmluZGV4IDAwZWE1YzIuLmQyMTZkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBwdWJsaWM6CiAgICAg
c2hvcnQgaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRl
ZERhdGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlcjsgfQogICAgIHNob3J0IGh5cGhlbmF0aW9uTGlt
aXRMaW5lcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxp
bWl0TGluZXM7IH0KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGh5cGhlbmF0aW9uU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nOyB9Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUoKSBjb25zdCB7IHJldHVybiBmb250RGVzY3Jp
cHRpb24oKS5sb2NhbGUoKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKCkgY29u
c3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmxvY2FsZTsgfQogICAgIEVCb3JkZXJGaXQg
Ym9yZGVyRml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlckZpdD4ocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fYm9yZGVyRml0KTsgfQogICAgIEVSZXNpemUgcmVzaXplKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVJlc2l6ZT4ocmFyZUluaGVyaXRlZERhdGEtPnJlc2l6
ZSk7IH0KICAgICBDb2x1bW5BeGlzIGNvbHVtbkF4aXMoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxDb2x1bW5BeGlzPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+bV9heGlz
KTsgfQpAQCAtMTU4Myw2ICsxNTgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SHlwaGVuYXRp
b25MaW1pdEFmdGVyKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5
cGhlbmF0aW9uTGltaXRBZnRlciwgbGltaXQpOyB9CiAgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkxp
bWl0TGluZXMoc2hvcnQgbGltaXQpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVu
YXRpb25MaW1pdExpbmVzLCBsaW1pdCk7IH0KICAgICB2b2lkIHNldEh5cGhlbmF0aW9uU3RyaW5n
KGNvbnN0IEF0b21pY1N0cmluZyYgaCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBo
ZW5hdGlvblN0cmluZywgaCk7IH0KKyAgICB2b2lkIHNldExvY2FsZShjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBsb2NhbGUsIGxvY2FsZSk7
IH0KICAgICB2b2lkIHNldEJvcmRlckZpdChFQm9yZGVyRml0IGIpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9ib3JkZXJGaXQsIGIpOyB9CiAgICAgdm9pZCBzZXRSZXNpemUoRVJl
c2l6ZSByKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHJlc2l6ZSwgcik7IH0KICAgICB2
b2lkIHNldENvbHVtbkF4aXMoQ29sdW1uQXhpcyBheGlzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fYXhpcywgYXhpcyk7IH0KQEAgLTE5ODYs
NiArMTk4Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbEh5cGhlbmF0aW9u
TGltaXRBZnRlcigpIHsgcmV0dXJuIC0xOyB9CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxIeXBo
ZW5hdGlvbkxpbWl0TGluZXMoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGluaXRpYWxIeXBoZW5hdGlvblN0cmluZygpIHsgcmV0dXJuIG51bGxBdG9tOyB9
CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbExvY2FsZSgpIHsgcmV0dXJu
IG51bGxBdG9tOyB9CiAgICAgc3RhdGljIEVCb3JkZXJGaXQgaW5pdGlhbEJvcmRlckZpdCgpIHsg
cmV0dXJuIEJvcmRlckZpdEJvcmRlcjsgfQogICAgIHN0YXRpYyBFUmVzaXplIGluaXRpYWxSZXNp
emUoKSB7IHJldHVybiBSRVNJWkVfTk9ORTsgfQogICAgIHN0YXRpYyBDb250cm9sUGFydCBpbml0
aWFsQXBwZWFyYW5jZSgpIHsgcmV0dXJuIE5vQ29udHJvbFBhcnQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNw
cAppbmRleCBjNWU4N2UwLi5kOWNhMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCkBAIC0yMTAsNiAr
MjEwLDcgQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRl
ZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGEKICAgICAsIGh5cGhlbmF0aW9uTGltaXRC
ZWZvcmUoby5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEFm
dGVyKG8uaHlwaGVuYXRpb25MaW1pdEFmdGVyKQogICAgICwgaHlwaGVuYXRpb25MaW1pdExpbmVz
KG8uaHlwaGVuYXRpb25MaW1pdExpbmVzKQorICAgICwgbG9jYWxlKG8ubG9jYWxlKQogICAgICwg
dGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhvLnRleHRFbXBoYXNpc0N1c3RvbU1hcmspCiAgICAgLCBt
X2xpbmVHcmlkKG8ubV9saW5lR3JpZCkKICAgICAsIG1fdGFiU2l6ZShvLm1fdGFiU2l6ZSkKQEAg
LTMwNCw2ICszMDUsNyBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKICAgICAgICAgJiYgdG91Y2hD
YWxsb3V0RW5hYmxlZCA9PSBvLnRvdWNoQ2FsbG91dEVuYWJsZWQKICNlbmRpZgogICAgICAgICAm
JiBoeXBoZW5hdGlvblN0cmluZyA9PSBvLmh5cGhlbmF0aW9uU3RyaW5nCisgICAgICAgICYmIGxv
Y2FsZSA9PSBvLmxvY2FsZQogICAgICAgICAmJiB0ZXh0RW1waGFzaXNDdXN0b21NYXJrID09IG8u
dGV4dEVtcGhhc2lzQ3VzdG9tTWFyawogICAgICAgICAmJiBxdW90ZXNEYXRhRXF1aXZhbGVudChx
dW90ZXMuZ2V0KCksIG8ucXVvdGVzLmdldCgpKQogICAgICAgICAmJiBtX3RhYlNpemUgPT0gby5t
X3RhYlNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5oCmluZGV4IDY2ZDU2YTQuLjI2NTE2MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuaApAQCAtMTQzLDYgKzE0Myw4IEBAIHB1YmxpYzoKICAgICBzaG9ydCBoeXBoZW5hdGlvbkxp
bWl0QWZ0ZXI7CiAgICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdExpbmVzOwogCisgICAgQXRvbWlj
U3RyaW5nIGxvY2FsZTsKKwogICAgIEF0b21pY1N0cmluZyB0ZXh0RW1waGFzaXNDdXN0b21NYXJr
OwogICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcAppbmRleCAyZDdkZmUxLi4xOThjZGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQu
Y3BwCkBAIC01OSw5ICs1OSw3IEBAIFJlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICBkb2N1bWVudFN0eWxlLmdldCgpLnNldFJU
TE9yZGVyaW5nKGRvY3VtZW50LnZpc3VhbGx5T3JkZXJlZCgpID8gVmlzdWFsT3JkZXIgOiBMb2dp
Y2FsT3JkZXIpOwogICAgIGRvY3VtZW50U3R5bGUuZ2V0KCkuc2V0Wm9vbSghZG9jdW1lbnQucHJp
bnRpbmcoKSA/IHJlbmRlclZpZXcuZnJhbWUoKS5wYWdlWm9vbUZhY3RvcigpIDogMSk7CiAgICAg
ZG9jdW1lbnRTdHlsZS5nZXQoKS5zZXRQYWdlU2NhbGVUcmFuc2Zvcm0ocmVuZGVyVmlldy5mcmFt
ZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSk7Ci0gICAgYXV0byBkb2N1bWVudEZvbnREZXNjcmlwdGlv
biA9IGRvY3VtZW50U3R5bGUuZ2V0KCkuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAgZG9jdW1lbnRG
b250RGVzY3JpcHRpb24uc2V0TG9jYWxlKGRvY3VtZW50LmNvbnRlbnRMYW5ndWFnZSgpKTsKLSAg
ICBkb2N1bWVudFN0eWxlLmdldCgpLnNldEZvbnREZXNjcmlwdGlvbihXVEY6Om1vdmUoZG9jdW1l
bnRGb250RGVzY3JpcHRpb24pKTsKKyAgICBkb2N1bWVudFN0eWxlLmdldCgpLnNldExvY2FsZShk
b2N1bWVudC5jb250ZW50TGFuZ3VhZ2UoKSk7CiAKICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhbnkg
LXdlYmtpdC11c2VyLW1vZGlmeSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IGlmcmFtZS4KICAg
ICBkb2N1bWVudFN0eWxlLmdldCgpLnNldFVzZXJNb2RpZnkoZG9jdW1lbnQuaW5EZXNpZ25Nb2Rl
KCkgPyBSRUFEX1dSSVRFIDogUkVBRF9PTkxZKTsKQEAgLTk5LDcgKzk3LDcgQEAgUmVmPFJlbmRl
clN0eWxlPiByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncyA9IHJlbmRlclZpZXcuZnJhbWUoKS5zZXR0aW5ncygp
OwogCiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgZm9u
dERlc2NyaXB0aW9uLnNldExvY2FsZShkb2N1bWVudC5jb250ZW50TGFuZ3VhZ2UoKSk7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNjcmlwdChsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0
aW9uKGRvY3VtZW50U3R5bGUuZ2V0KCkubG9jYWxlKCkpKTsKICAgICBmb250RGVzY3JpcHRpb24u
c2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy5mb250UmVuZGVyaW5nTW9kZSgpKTsKICAgICBmb250
RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KHN0YW5kYXJkRmFtaWx5KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262723</attachid>
            <date>2015-10-08 15:49:19 -0700</date>
            <delta_ts>2015-10-08 15:54:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149898-20151008154846.patch</filename>
            <type>text/plain</type>
            <size>21273</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVjOTQxOGI1YzgxNWUy
MDdjMzQ0M2UxZjUxZTUyMjk0NWRhNWE1Yi4uZmM5NTE1NDQyMzVmOTVhYzBlZGRhYmIwY2IwOWE3
OTU3MDNmZWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE1LTEwLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2ZXJ0IHIxODc2MjYgKGFu
ZCByMTg4MDI1KSBhcyBpdCBjYXVzZWQgYSBQTFQgcmVncmVzc2lvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5ODk4CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yMjY1NzEyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBNYXhmaWVsZC4K
KworICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9TdHls
ZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZVdlYmtpdExvY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJGYWxsYmFja01hcEtleTo6Q2hhcmFj
dGVyRmFsbGJhY2tNYXBLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRmFsbGJhY2tN
YXBLZXk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRmFsbGJhY2tN
YXBLZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnN5c3RlbUZhbGxiYWNr
Rm9udEZvckNoYXJhY3Rlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5OjpGb250RGVzY3JpcHRpb25LZXkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5Ojpjb21wdXRl
SGFzaCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6Rm9udERlc2NyaXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6dHJhaXRzTWFzayk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250RGVzY3JpcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6c2V0
U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OnNldEZlYXR1cmVTZXR0aW5ncyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjppbml0
aWFsVmFyaWFudEFsdGVybmF0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNo
YW5nZVJlcXVpcmVzTGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERhdGE6
Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisKIDIwMTUtMTAt
MDggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTA3MDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluCmluZGV4IDczODJkYTY0ODliYzg5ODRkMDljNTBlMjA0YmM2OTczODI3NmVlNGMu
LjQzODMzNmZlNjc3Njg3ZmYwMjAzNGFlMGJlMWVjZGMyNmE3Njg0MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC0xMTQsNyArMTE0LDcgQEAgZm9udC12YXJpYW50
LWNhcHMgW0luaGVyaXRlZCwgRm9udFByb3BlcnR5LCBOYW1lRm9yTWV0aG9kcz1WYXJpYW50Q2Fw
c10KIGZvbnQtdmFyaWFudC1udW1lcmljIFtJbmhlcml0ZWQsIEZvbnRQcm9wZXJ0eSwgTmFtZUZv
ck1ldGhvZHM9VmFyaWFudE51bWVyaWMsIEN1c3RvbT1BbGxdCiBmb250LXZhcmlhbnQtYWx0ZXJu
YXRlcyBbSW5oZXJpdGVkLCBGb250UHJvcGVydHksIE5hbWVGb3JNZXRob2RzPVZhcmlhbnRBbHRl
cm5hdGVzXQogZm9udC12YXJpYW50LWVhc3QtYXNpYW4gW0luaGVyaXRlZCwgRm9udFByb3BlcnR5
LCBOYW1lRm9yTWV0aG9kcz1WYXJpYW50RWFzdEFzaWFuLCBDdXN0b209QWxsXQotLXdlYmtpdC1s
b2NhbGUgW0luaGVyaXRlZCwgRm9udFByb3BlcnR5LCBDdXN0b209VmFsdWVdCistd2Via2l0LWxv
Y2FsZSBbSW5oZXJpdGVkLCBDdXN0b209VmFsdWVdCiAtd2Via2l0LXRleHQtb3JpZW50YXRpb24g
W0luaGVyaXRlZCwgQ3VzdG9tPVZhbHVlXQogLWVwdWItdGV4dC1vcmllbnRhdGlvbiA9IC13ZWJr
aXQtdGV4dC1vcmllbnRhdGlvbgogI2lmIGRlZmluZWQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJ
TkcpICYmIEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmgKaW5kZXggOTZiMmQyYjlkZjI5NGFmZmFjMGViMzhkOTA5NWUzNzdjZWZi
M2ZjZS4uMTdkNGY3ODhkNWJlMDhkNjM5NDNkYWM4NjMwYmFjNmYyODA5ZWRmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkxvY2FsZVRvU2NyaXB0TWFwcGluZy5oIgog
I2luY2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNW
R0VsZW1lbnQuaCIKQEAgLTY5NCwxMiArNjk1LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNsaXAoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NT
CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRMb2NhbGUo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
LSAgICAKLSAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRMb2NhbGUobnVsbEF0
b20pOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldExvY2FsZShudWxsQXRvbSk7
CiAgICAgZWxzZQotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0TG9jYWxlKHByaW1pdGl2ZVZh
bHVlLmdldFN0cmluZ1ZhbHVlKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dExvY2FsZShwcmltaXRpdmVWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgpKTsKKworICAgIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5m
b250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U2NyaXB0KGxvY2FsZVRv
U2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rpb24oc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5sb2NhbGUo
KSkpOwogICAgIHN0eWxlUmVzb2x2ZXIuc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlv
bik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXgg
ZGI5MmZiMDY3Y2M3MGM4ZjY3MWM1MmI3ZGE0NDY1YTI1NDdkN2Y3Mi4uYmY3MjZhMGJjMTYzNWM3
NGU2ZmM0MzdhNmI5Yjg0Yzg3YTEzODNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKQEAgLTM5Myw5ICszOTMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIENoYXJhY3RlckZhbGxiYWNrTWFwS2V5KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxl
LCBVQ2hhcjMyIGNoYXJhY3RlciwgYm9vbCBpc0ZvclBsYXRmb3JtRm9udCkKLSAgICAgICAgOiBs
b2NhbGUobG9jYWxlKQotICAgICAgICAsIGNoYXJhY3RlcihjaGFyYWN0ZXIpCisgICAgQ2hhcmFj
dGVyRmFsbGJhY2tNYXBLZXkoVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgaXNGb3JQbGF0Zm9ybUZv
bnQpCisgICAgICAgIDogY2hhcmFjdGVyKGNoYXJhY3RlcikKICAgICAgICAgLCBpc0ZvclBsYXRm
b3JtRm9udChpc0ZvclBsYXRmb3JtRm9udCkKICAgICB7CiAgICAgfQpAQCAtNDA5LDcgKzQwOCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaGFyYWN0ZXJGYWxsYmFj
a01hcEtleSYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbG9jYWxlID09IG90
aGVyLmxvY2FsZSAmJiBjaGFyYWN0ZXIgPT0gb3RoZXIuY2hhcmFjdGVyICYmIGlzRm9yUGxhdGZv
cm1Gb250ID09IG90aGVyLmlzRm9yUGxhdGZvcm1Gb250OworICAgICAgICByZXR1cm4gY2hhcmFj
dGVyID09IG90aGVyLmNoYXJhY3RlciAmJiBpc0ZvclBsYXRmb3JtRm9udCA9PSBvdGhlci5pc0Zv
clBsYXRmb3JtRm9udDsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVl
SXNaZXJvID0gdHJ1ZTsKQEAgLTQxNyw3ICs0MTYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGZyaWVuZCBzdHJ1Y3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoOwogCi0gICAgQXRvbWlj
U3RyaW5nIGxvY2FsZTsKICAgICBVQ2hhcjMyIGNoYXJhY3RlciB7IDAgfTsKICAgICBib29sIGlz
Rm9yUGxhdGZvcm1Gb250IHsgZmFsc2UgfTsKIH07CkBAIC00MjUsNyArNDIzLDcgQEAgcHJpdmF0
ZToKIHN0cnVjdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleUhhc2ggewogICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBrZXkpCiAgICAgewotICAg
ICAgICByZXR1cm4gV1RGOjpwYWlySW50SGFzaChrZXkubG9jYWxlLmlzTnVsbCgpID8gMCA6IFdU
Rjo6QXRvbWljU3RyaW5nSGFzaDo6aGFzaChrZXkubG9jYWxlKSwgV1RGOjpwYWlySW50SGFzaChr
ZXkuY2hhcmFjdGVyLCBrZXkuaXNGb3JQbGF0Zm9ybUZvbnQpKTsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6cGFpckludEhhc2goa2V5LmNoYXJhY3Rlciwga2V5LmlzRm9yUGxhdGZvcm1Gb250KTsKICAg
ICB9CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtl
eSYgYSwgY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkmIGIpCkBAIC00NTYsNyArNDU0LDcg
QEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hh
cjMyIGNoYXJhY3RlciwgY29uc3QgRm9udEQKICAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkuc3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCB0aGlzLCBp
c0ZvclBsYXRmb3JtRm9udCwgJmNvZGVVbml0LCAxKTsKICAgICB9CiAKLSAgICBhdXRvIGtleSA9
IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5KGRlc2NyaXB0aW9uLmxvY2FsZSgpLCBjaGFyYWN0ZXIs
IGlzRm9yUGxhdGZvcm1Gb250KTsKKyAgICBhdXRvIGtleSA9IENoYXJhY3RlckZhbGxiYWNrTWFw
S2V5KGNoYXJhY3RlciwgaXNGb3JQbGF0Zm9ybUZvbnQpOwogICAgIGF1dG8gY2hhcmFjdGVyQWRk
UmVzdWx0ID0gZm9udEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYWRkKFdURjo6bW92ZShrZXkp
LCBudWxscHRyKTsKIAogICAgIEZvbnQqJiBmYWxsYmFja0ZvbnQgPSBjaGFyYWN0ZXJBZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuaAppbmRleCA5NDczYWIxZjVjNTFjMTZmMGRjNTdkZDkyNjFhMmZmNDMwOGVhMDkz
Li45M2FkMDg5MmIxZDhiZmYzZGViMTFkOTNiOWY0MzRjZTA4Y2RkYmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtNzUsNyArNzUsNiBAQCBz
dHJ1Y3QgRm9udERlc2NyaXB0aW9uS2V5IHsKICAgICAgICAgOiBtX3NpemUoZGVzY3JpcHRpb24u
Y29tcHV0ZWRQaXhlbFNpemUoKSkKICAgICAgICAgLCBtX3dlaWdodChkZXNjcmlwdGlvbi53ZWln
aHQoKSkKICAgICAgICAgLCBtX2ZsYWdzKG1ha2VGbGFnc0tleShkZXNjcmlwdGlvbikpCi0gICAg
ICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24ubG9jYWxlKCkpCiAgICAgICAgICwgbV9mZWF0dXJl
U2V0dGluZ3MoZGVzY3JpcHRpb24uZmVhdHVyZVNldHRpbmdzKCkpCiAgICAgeyB9CiAKQEAgLTg1
LDcgKzg0LDcgQEAgc3RydWN0IEZvbnREZXNjcmlwdGlvbktleSB7CiAKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3NpemUgPT0gb3RoZXIubV9zaXplICYmIG1fd2VpZ2h0ID09IG90aGVyLm1f
d2VpZ2h0ICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncyAmJiBtX2xvY2FsZSA9PSBvdGhlci5t
X2xvY2FsZQorICAgICAgICByZXR1cm4gbV9zaXplID09IG90aGVyLm1fc2l6ZSAmJiBtX3dlaWdo
dCA9PSBvdGhlci5tX3dlaWdodCAmJiBtX2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKICAgICAgICAg
ICAgICYmIG1fZmVhdHVyZVNldHRpbmdzID09IG90aGVyLm1fZmVhdHVyZVNldHRpbmdzOwogICAg
IH0KIApAQCAtMTAzLDcgKzEwMiw2IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAg
ICAgICBoYXNoZXIuYWRkKG1fd2VpZ2h0KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBmbGFnSXRl
bSA6IG1fZmxhZ3MpCiAgICAgICAgICAgICBoYXNoZXIuYWRkKGZsYWdJdGVtKTsKLSAgICAgICAg
aGFzaGVyLmFkZChtX2xvY2FsZS5pc051bGwoKSA/IDAgOiBtX2xvY2FsZS5pbXBsKCktPmV4aXN0
aW5nSGFzaCgpKTsKICAgICAgICAgaGFzaGVyLmFkZChtX2ZlYXR1cmVTZXR0aW5ncy5oYXNoKCkp
OwogICAgICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKICAgICB9CkBAIC0xNDQsNyArMTQyLDYg
QEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07CiAgICAgdW5zaWduZWQgbV93
ZWlnaHQgeyAwIH07CiAgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgMj4gbV9mbGFncyB7eyAwLCAw
IH19OwotICAgIEF0b21pY1N0cmluZyBtX2xvY2FsZTsKICAgICBGb250RmVhdHVyZVNldHRpbmdz
IG1fZmVhdHVyZVNldHRpbmdzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAKaW5kZXggNDZhNWRkNDM5MTljMzRjMjQ3
ZjVlOWQwNjgxMGJmN2MwNjJiOGFmMS4uYWYzNzcwZDVkMzgzNTQ5YzUzMWYwNmY4ZTgxYjE1ZjU4
MWQyZTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dERlc2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250RGVzY3JpcHRpb24uY3BwCkBAIC0xLDQgKzEsMyBAQAotCiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA3IE5pY2hvbGFzIFNoYW5rcyA8Y29udGFjdEBuaWNrc2hhbmtzLmNvbT4KICAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0z
MCwxMyArMjksMTEgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnREZXNj
cmlwdGlvbi5oIgotI2luY2x1ZGUgIkxvY2FsZVRvU2NyaXB0TWFwcGluZy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzRm9udENhc2NhZGVEZXNjcmlwdGlvbiB7
CiAgICAgVmVjdG9yPHZvaWQqPiB2ZWN0b3I7Ci0gICAgdm9pZCogc3RyaW5nOwogICAgIGZsb2F0
IHNpemU7CiAgICAgdW5zaWduZWQgYml0ZmllbGRzMTsKICAgICB1bnNpZ25lZCBiaXRmaWVsZHMy
IDogMjI7CkBAIC01Niw3ICs1Myw3IEBAIEZvbnREZXNjcmlwdGlvbjo6Rm9udERlc2NyaXB0aW9u
KCkKICAgICAsIG1fd2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpCiAgICAgLCBtX3JlbmRlcmluZ01v
ZGUoTm9ybWFsUmVuZGVyaW5nTW9kZSkKICAgICAsIG1fdGV4dFJlbmRlcmluZyhBdXRvVGV4dFJl
bmRlcmluZykKLSAgICAsIG1fc2NyaXB0KGxvY2FsZVRvU2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rp
b24obV9sb2NhbGUpKQorICAgICwgbV9zY3JpcHQoVVNDUklQVF9DT01NT04pCiAgICAgLCBtX2Zv
bnRTeW50aGVzaXMoRm9udFN5bnRoZXNpc1dlaWdodCB8IEZvbnRTeW50aGVzaXNTdHlsZSkKICAg
ICAsIG1fdmFyaWFudENvbW1vbkxpZ2F0dXJlcyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRm9udFZh
cmlhbnRMaWdhdHVyZXM6Ok5vcm1hbCkpCiAgICAgLCBtX3ZhcmlhbnREaXNjcmV0aW9uYXJ5TGln
YXR1cmVzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGb250VmFyaWFudExpZ2F0dXJlczo6Tm9ybWFs
KSkKQEAgLTc2LDEyICs3Myw2IEBAIEZvbnREZXNjcmlwdGlvbjo6Rm9udERlc2NyaXB0aW9uKCkK
IHsKIH0KIAotdm9pZCBGb250RGVzY3JpcHRpb246OnNldExvY2FsZShjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZSkKLXsKLSAgICBtX2xvY2FsZSA9IGxvY2FsZTsKLSAgICBtX3NjcmlwdCA9IGxv
Y2FsZVRvU2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rpb24obV9sb2NhbGUpOwotfQotCiBGb250VHJh
aXRzTWFzayBGb250RGVzY3JpcHRpb246OnRyYWl0c01hc2soKSBjb25zdAogewogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxGb250VHJhaXRzTWFzaz4oKG1faXRhbGljID8gRm9udFN0eWxlSXRhbGlj
TWFzayA6IEZvbnRTdHlsZU5vcm1hbE1hc2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4IGUzYzRlOTAxZTMxYjRiZTZiMjIx
MmM2MWFkMGE2YjgxNzA3ZDhkNjEuLjQ5MDJiYmM4NDNkZTIxODAzODk1MWVmMTczODdlZDBiMmYy
YmRmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRE
ZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRE
ZXNjcmlwdGlvbi5oCkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKICAgICBGb250UmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFJlbmRl
cmluZ01vZGU+KG1fcmVuZGVyaW5nTW9kZSk7IH0KICAgICBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0
UmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRSZW5kZXJpbmdN
b2RlPihtX3RleHRSZW5kZXJpbmcpOyB9CiAgICAgVVNjcmlwdENvZGUgc2NyaXB0KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8VVNjcmlwdENvZGU+KG1fc2NyaXB0KTsgfQotICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbGU7IH0KIAogICAg
IEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEZvbnRPcmllbnRhdGlvbj4obV9vcmllbnRhdGlvbik7IH0KICAgICBOb25DSktHbHlwaE9yaWVu
dGF0aW9uIG5vbkNKS0dseXBoT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxOb25DSktHbHlwaE9yaWVudGF0aW9uPihtX25vbkNKS0dseXBoT3JpZW50YXRpb24pOyB9CkBA
IC0xMDcsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3JpZW50YXRpb24oRm9udE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQog
ICAgIHZvaWQgc2V0Tm9uQ0pLR2x5cGhPcmllbnRhdGlvbihOb25DSktHbHlwaE9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKSB7IG1fbm9uQ0pLR2x5cGhPcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
CiAgICAgdm9pZCBzZXRXaWR0aFZhcmlhbnQoRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQp
IHsgbV93aWR0aFZhcmlhbnQgPSB3aWR0aFZhcmlhbnQ7IH0gLy8gTWFrZSBzdXJlIG5ldyBjYWxs
ZXJzIG9mIHRoaXMgc3luYyB3aXRoIEZvbnRQbGF0Zm9ybURhdGE6OmlzRm9yVGV4dENvbWJpbmUo
KSEKLSAgICB2b2lkIHNldExvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyAgICB2b2lkIHNl
dFNjcmlwdChVU2NyaXB0Q29kZSBzKSB7IG1fc2NyaXB0ID0gczsgfQogICAgIHZvaWQgc2V0RmVh
dHVyZVNldHRpbmdzKEZvbnRGZWF0dXJlU2V0dGluZ3MmJiBzZXR0aW5ncykgeyBtX2ZlYXR1cmVT
ZXR0aW5ncyA9IFdURjo6bW92ZShzZXR0aW5ncyk7IH0KICAgICB2b2lkIHNldEZvbnRTeW50aGVz
aXMoRm9udFN5bnRoZXNpcyBmb250U3ludGhlc2lzKSB7IG1fZm9udFN5bnRoZXNpcyA9IGZvbnRT
eW50aGVzaXM7IH0KICAgICB2b2lkIHNldFZhcmlhbnRDb21tb25MaWdhdHVyZXMoRm9udFZhcmlh
bnRMaWdhdHVyZXMgdmFyaWFudCkgeyBtX3ZhcmlhbnRDb21tb25MaWdhdHVyZXMgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odmFyaWFudCk7IH0KQEAgLTEzMCw3ICsxMjksNiBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgRm9udEZlYXR1cmVTZXR0aW5ncyBtX2ZlYXR1cmVTZXR0aW5nczsKLSAg
ICBBdG9taWNTdHJpbmcgbV9sb2NhbGU7CiAKICAgICBmbG9hdCBtX2NvbXB1dGVkU2l6ZSB7IDAg
fTsgLy8gQ29tcHV0ZWQgc2l6ZSBhZGp1c3RlZCBmb3IgdGhlIG1pbmltdW0gZm9udCBzaXplIGFu
ZCB0aGUgem9vbSBmYWN0b3IuCiAgICAgdW5zaWduZWQgbV9vcmllbnRhdGlvbiA6IDE7IC8vIEZv
bnRPcmllbnRhdGlvbiAtIFdoZXRoZXIgdGhlIGZvbnQgaXMgcmVuZGVyaW5nIG9uIGEgaG9yaXpv
bnRhbCBsaW5lIG9yIGEgdmVydGljYWwgbGluZS4KQEAgLTE3MSw3ICsxNjksNyBAQCBpbmxpbmUg
Ym9vbCBGb250RGVzY3JpcHRpb246Om9wZXJhdG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uJiBv
dGhlcikgY29uc3QKICAgICAgICAgJiYgbV9vcmllbnRhdGlvbiA9PSBvdGhlci5tX29yaWVudGF0
aW9uCiAgICAgICAgICYmIG1fbm9uQ0pLR2x5cGhPcmllbnRhdGlvbiA9PSBvdGhlci5tX25vbkNK
S0dseXBoT3JpZW50YXRpb24KICAgICAgICAgJiYgbV93aWR0aFZhcmlhbnQgPT0gb3RoZXIubV93
aWR0aFZhcmlhbnQKLSAgICAgICAgJiYgbV9sb2NhbGUgPT0gb3RoZXIubV9sb2NhbGUKKyAgICAg
ICAgJiYgbV9zY3JpcHQgPT0gb3RoZXIubV9zY3JpcHQKICAgICAgICAgJiYgbV9mZWF0dXJlU2V0
dGluZ3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MKICAgICAgICAgJiYgbV9mb250U3ludGhl
c2lzID09IG90aGVyLm1fZm9udFN5bnRoZXNpcwogICAgICAgICAmJiBtX3ZhcmlhbnRDb21tb25M
aWdhdHVyZXMgPT0gb3RoZXIubV92YXJpYW50Q29tbW9uTGlnYXR1cmVzCkBAIC0yNjUsNyArMjYz
LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBGb250U21vb3RoaW5nTW9kZSBpbml0aWFsRm9udFNt
b290aGluZygpIHsgcmV0dXJuIEF1dG9TbW9vdGhpbmc7IH0KICAgICBzdGF0aWMgVGV4dFJlbmRl
cmluZ01vZGUgaW5pdGlhbFRleHRSZW5kZXJpbmdNb2RlKCkgeyByZXR1cm4gQXV0b1RleHRSZW5k
ZXJpbmc7IH0KICAgICBzdGF0aWMgRm9udFN5bnRoZXNpcyBpbml0aWFsRm9udFN5bnRoZXNpcygp
IHsgcmV0dXJuIEZvbnRTeW50aGVzaXNXZWlnaHQgfCBGb250U3ludGhlc2lzU3R5bGU7IH0KLSAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsTG9jYWxlKCkgeyByZXR1cm4gbnVs
bEF0b207IH0KICAgICBzdGF0aWMgRm9udFZhcmlhbnRQb3NpdGlvbiBpbml0aWFsVmFyaWFudFBv
c2l0aW9uKCkgeyByZXR1cm4gRm9udFZhcmlhbnRQb3NpdGlvbjo6Tm9ybWFsOyB9CiAgICAgc3Rh
dGljIEZvbnRWYXJpYW50Q2FwcyBpbml0aWFsVmFyaWFudENhcHMoKSB7IHJldHVybiBGb250VmFy
aWFudENhcHM6Ok5vcm1hbDsgfQogICAgIHN0YXRpYyBGb250VmFyaWFudEFsdGVybmF0ZXMgaW5p
dGlhbFZhcmlhbnRBbHRlcm5hdGVzKCkgeyByZXR1cm4gRm9udFZhcmlhbnRBbHRlcm5hdGVzOjpO
b3JtYWw7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBlZjczMjU1YmExMjQ5Njk0MDNm
YTlmZTc3MTQ0OTE0ZTgxZTU4NjdiLi5iNzZkOGRkY2NlZWE2ZDhkY2VjZDVkNGEyM2VhZTU5OWUw
YzhmMDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC03MTIsNyArNzEyLDggQEAgUmVm
UHRyPEZvbnQ+IEZvbnRDYWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZGVzY3IKICNlbmRpZgogCiAgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYgcGxhdGZvcm1EYXRhID0gb3JpZ2luYWxGb250RGF0YS0+cGxhdGZvcm1EYXRhKCk7Ci0gICAg
UmV0YWluUHRyPENURm9udFJlZj4gcmVzdWx0ID0gcGxhdGZvcm1Mb29rdXBGYWxsYmFja0ZvbnQo
cGxhdGZvcm1EYXRhLmZvbnQoKSwgZGVzY3JpcHRpb24ud2VpZ2h0KCksIGRlc2NyaXB0aW9uLmxv
Y2FsZSgpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIC8vIEZJWE1FOiBTaG91bGQgcGFzcyBp
biB0aGUgbG9jYWxlIGluc3RlYWQgb2YgbnVsbEF0b20uCisgICAgUmV0YWluUHRyPENURm9udFJl
Zj4gcmVzdWx0ID0gcGxhdGZvcm1Mb29rdXBGYWxsYmFja0ZvbnQocGxhdGZvcm1EYXRhLmZvbnQo
KSwgZGVzY3JpcHRpb24ud2VpZ2h0KCksIG51bGxBdG9tLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwog
ICAgIHJlc3VsdCA9IHByZXBhcmVQbGF0Zm9ybUZvbnQocmVzdWx0LmdldCgpLCBkZXNjcmlwdGlv
bi50ZXh0UmVuZGVyaW5nTW9kZSgpLCBkZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKSwgZGVz
Y3JpcHRpb24udmFyaWFudFNldHRpbmdzKCkpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICBy
ZXR1cm4gbGFzdFJlc29ydEZhbGxiYWNrRm9udChkZXNjcmlwdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAxY2JiMjJhMWQyMTRl
NDU1N2YzZWMwODU1YTY0NDY2OGUwYjQxYzA1Li4yYmRlYjE5N2IzM2FlODVlMGZiZGVlMzA2OWE3
YjkzZDk3NGY5YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKQEAgLTU5NCw2ICs1OTQsNyBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VS
ZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSYgb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwog
ICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUg
IT0gb3RoZXIucmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRCZWZvcmUKICAgICAg
ICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIgIT0gb3Ro
ZXIucmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRBZnRlcgogICAgICAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uU3RyaW5nICE9IG90aGVyLnJhcmVJbmhl
cml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZworICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRl
ZERhdGEtPmxvY2FsZSAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+bG9jYWxlCiAgICAgICAg
ICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9ydWJ5UG9zaXRpb24gIT0gb3RoZXIucmFyZUlu
aGVyaXRlZERhdGEtPm1fcnVieVBvc2l0aW9uCiAgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dEVtcGhhc2lzTWFyayAhPSBvdGhlci5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVt
cGhhc2lzTWFyawogICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNp
c1Bvc2l0aW9uICE9IG90aGVyLnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNQb3NpdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAw
MGVhNWMyM2VmZTMyY2Y1MTJjYmY1ODc0MTA1MDg1YmY5YTc5NTMxLi5kMjE2ZGVjYjQzZGIyMTc2
ZTdlMjZlM2I2OGY5ZmU4NGM3NzcxNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTAwOCw3ICsxMDA4LDcgQEAgcHVibGljOgogICAgIHNo
b3J0IGh5cGhlbmF0aW9uTGltaXRBZnRlcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXI7IH0KICAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0
TGluZXMoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1p
dExpbmVzOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBoeXBoZW5hdGlvblN0cmluZygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvblN0cmluZzsgfQotICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0
aW9uKCkubG9jYWxlKCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5sb2NhbGU7IH0KICAgICBFQm9yZGVyRml0IGJv
cmRlckZpdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJGaXQ+KHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2JvcmRlckZpdCk7IH0KICAgICBFUmVzaXplIHJlc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVSZXNpemU+KHJhcmVJbmhlcml0ZWREYXRhLT5yZXNpemUp
OyB9CiAgICAgQ29sdW1uQXhpcyBjb2x1bW5BeGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Q29sdW1uQXhpcz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPm1fYXhpcyk7
IH0KQEAgLTE1ODMsNiArMTU4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEh5cGhlbmF0aW9u
TGltaXRBZnRlcihzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBo
ZW5hdGlvbkxpbWl0QWZ0ZXIsIGxpbWl0KTsgfQogICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1p
dExpbmVzKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0
aW9uTGltaXRMaW5lcywgbGltaXQpOyB9CiAgICAgdm9pZCBzZXRIeXBoZW5hdGlvblN0cmluZyhj
b25zdCBBdG9taWNTdHJpbmcmIGgpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVu
YXRpb25TdHJpbmcsIGgpOyB9CisgICAgdm9pZCBzZXRMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGUpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbG9jYWxlLCBsb2NhbGUpOyB9
CiAgICAgdm9pZCBzZXRCb3JkZXJGaXQoRUJvcmRlckZpdCBiKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fYm9yZGVyRml0LCBiKTsgfQogICAgIHZvaWQgc2V0UmVzaXplKEVSZXNp
emUgcikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCByZXNpemUsIHIpOyB9CiAgICAgdm9p
ZCBzZXRDb2x1bW5BeGlzKENvbHVtbkF4aXMgYXhpcykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX2F4aXMsIGF4aXMpOyB9CkBAIC0xOTg2LDYg
KzE5ODcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNob3J0IGluaXRpYWxIeXBoZW5hdGlvbkxp
bWl0QWZ0ZXIoKSB7IHJldHVybiAtMTsgfQogICAgIHN0YXRpYyBzaG9ydCBpbml0aWFsSHlwaGVu
YXRpb25MaW1pdExpbmVzKCkgeyByZXR1cm4gLTE7IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBpbml0aWFsSHlwaGVuYXRpb25TdHJpbmcoKSB7IHJldHVybiBudWxsQXRvbTsgfQor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxMb2NhbGUoKSB7IHJldHVybiBu
dWxsQXRvbTsgfQogICAgIHN0YXRpYyBFQm9yZGVyRml0IGluaXRpYWxCb3JkZXJGaXQoKSB7IHJl
dHVybiBCb3JkZXJGaXRCb3JkZXI7IH0KICAgICBzdGF0aWMgRVJlc2l6ZSBpbml0aWFsUmVzaXpl
KCkgeyByZXR1cm4gUkVTSVpFX05PTkU7IH0KICAgICBzdGF0aWMgQ29udHJvbFBhcnQgaW5pdGlh
bEFwcGVhcmFuY2UoKSB7IHJldHVybiBOb0NvbnRyb2xQYXJ0OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAK
aW5kZXggYzVlODdlMGE3YThjZmRmNTE1YTRjOTU4YTg2ZWM0NjU3ODQyNDBmMS4uZDljYTM0OWU4
ODhhNGNlNTczNjc4YzViMDE4ZjFjMGViNTdhZjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAt
MjEwLDYgKzIxMCw3IEBAIGlubGluZSBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhCiAgICAgLCBoeXBoZW5hdGlv
bkxpbWl0QmVmb3JlKG8uaHlwaGVuYXRpb25MaW1pdEJlZm9yZSkKICAgICAsIGh5cGhlbmF0aW9u
TGltaXRBZnRlcihvLmh5cGhlbmF0aW9uTGltaXRBZnRlcikKICAgICAsIGh5cGhlbmF0aW9uTGlt
aXRMaW5lcyhvLmh5cGhlbmF0aW9uTGltaXRMaW5lcykKKyAgICAsIGxvY2FsZShvLmxvY2FsZSkK
ICAgICAsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoby50ZXh0RW1waGFzaXNDdXN0b21NYXJrKQog
ICAgICwgbV9saW5lR3JpZChvLm1fbGluZUdyaWQpCiAgICAgLCBtX3RhYlNpemUoby5tX3RhYlNp
emUpCkBAIC0zMDQsNiArMzA1LDcgQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVy
YXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAgICAgICAgICYm
IHRvdWNoQ2FsbG91dEVuYWJsZWQgPT0gby50b3VjaENhbGxvdXRFbmFibGVkCiAjZW5kaWYKICAg
ICAgICAgJiYgaHlwaGVuYXRpb25TdHJpbmcgPT0gby5oeXBoZW5hdGlvblN0cmluZworICAgICAg
ICAmJiBsb2NhbGUgPT0gby5sb2NhbGUKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzQ3VzdG9tTWFy
ayA9PSBvLnRleHRFbXBoYXNpc0N1c3RvbU1hcmsKICAgICAgICAgJiYgcXVvdGVzRGF0YUVxdWl2
YWxlbnQocXVvdGVzLmdldCgpLCBvLnF1b3Rlcy5nZXQoKSkKICAgICAgICAgJiYgbV90YWJTaXpl
ID09IG8ubV90YWJTaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRleCA2NmQ1NmE0YTEyYmU1Y2JjNWI5MGI1
YmE1OTBhMGRlY2RjNTBhMGEwLi4yNjUxNjFiMzY0NTI2NGE5MzI3OWU3ZGJhMzJkN2YwZDQ1MmI3
YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTE0Myw2ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgc2hv
cnQgaHlwaGVuYXRpb25MaW1pdEFmdGVyOwogICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRMaW5l
czsKIAorICAgIEF0b21pY1N0cmluZyBsb2NhbGU7CisKICAgICBBdG9taWNTdHJpbmcgdGV4dEVt
cGhhc2lzQ3VzdG9tTWFyazsKICAgICBSZWZQdHI8UXVvdGVzRGF0YT4gcXVvdGVzOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKaW5kZXgg
MmQ3ZGZlMWI4NWQ3MGJjMzcyN2ZlZjNmMDRiYmFkNWM4OGI5ODM0OC4uMTk4Y2RjOGIyOTA2ZDA5
NTEzM2MzOWI3NThiN2EwZTlmNTlhNTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcApAQCAtNTksOSArNTksNyBAQCBSZWY8UmVuZGVy
U3R5bGU+IHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
ZG9jdW1lbnRTdHlsZS5nZXQoKS5zZXRSVExPcmRlcmluZyhkb2N1bWVudC52aXN1YWxseU9yZGVy
ZWQoKSA/IFZpc3VhbE9yZGVyIDogTG9naWNhbE9yZGVyKTsKICAgICBkb2N1bWVudFN0eWxlLmdl
dCgpLnNldFpvb20oIWRvY3VtZW50LnByaW50aW5nKCkgPyByZW5kZXJWaWV3LmZyYW1lKCkucGFn
ZVpvb21GYWN0b3IoKSA6IDEpOwogICAgIGRvY3VtZW50U3R5bGUuZ2V0KCkuc2V0UGFnZVNjYWxl
VHJhbnNmb3JtKHJlbmRlclZpZXcuZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkpOwotICAgIGF1
dG8gZG9jdW1lbnRGb250RGVzY3JpcHRpb24gPSBkb2N1bWVudFN0eWxlLmdldCgpLmZvbnREZXNj
cmlwdGlvbigpOwotICAgIGRvY3VtZW50Rm9udERlc2NyaXB0aW9uLnNldExvY2FsZShkb2N1bWVu
dC5jb250ZW50TGFuZ3VhZ2UoKSk7Ci0gICAgZG9jdW1lbnRTdHlsZS5nZXQoKS5zZXRGb250RGVz
Y3JpcHRpb24oV1RGOjptb3ZlKGRvY3VtZW50Rm9udERlc2NyaXB0aW9uKSk7CisgICAgZG9jdW1l
bnRTdHlsZS5nZXQoKS5zZXRMb2NhbGUoZG9jdW1lbnQuY29udGVudExhbmd1YWdlKCkpOwogCiAg
ICAgLy8gVGhpcyBvdmVycmlkZXMgYW55IC13ZWJraXQtdXNlci1tb2RpZnkgaW5oZXJpdGVkIGZy
b20gdGhlIHBhcmVudCBpZnJhbWUuCiAgICAgZG9jdW1lbnRTdHlsZS5nZXQoKS5zZXRVc2VyTW9k
aWZ5KGRvY3VtZW50LmluRGVzaWduTW9kZSgpID8gUkVBRF9XUklURSA6IFJFQURfT05MWSk7CkBA
IC05OSw3ICs5Nyw3IEBAIFJlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKICAgICBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MgPSByZW5k
ZXJWaWV3LmZyYW1lKCkuc2V0dGluZ3MoKTsKIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRMb2NhbGUoZG9jdW1lbnQu
Y29udGVudExhbmd1YWdlKCkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTY3JpcHQobG9jYWxl
VG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlvbihkb2N1bWVudFN0eWxlLmdldCgpLmxvY2FsZSgp
KSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MuZm9udFJl
bmRlcmluZ01vZGUoKSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShzdGFuZGFy
ZEZhbWlseSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>