<?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>221019</bug_id>
          
          <creation_ts>2021-01-26 16:29:06 -0800</creation_ts>
          <short_desc>Minor cleanup in CSSFontFaceSetClient</short_desc>
          <delta_ts>2021-01-28 20:07:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1722770</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-26 16:29:06 -0800</bug_when>
    <thetext>Minor cleanup in CSSFontFaceSetClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722775</commentid>
    <comment_count>1</comment_count>
      <attachid>418487</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-26 16:38:55 -0800</bug_when>
    <thetext>Created attachment 418487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722776</commentid>
    <comment_count>2</comment_count>
      <attachid>418487</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-01-26 16:41:25 -0800</bug_when>
    <thetext>Comment on attachment 418487
Patch

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

&gt; Source/WebCore/css/CSSFontFaceSet.h:46
&gt; +    class Client {

Make this CanMakeWeakPtr.

&gt; Source/WebCore/css/CSSFontFaceSet.h:138
&gt; -    HashSet&lt;CSSFontFaceSetClient*&gt; m_clients;
&gt; +    HashSet&lt;Client*&gt; m_clients;

Use WeakHashSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722811</commentid>
    <comment_count>3</comment_count>
      <attachid>418499</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-26 20:13:32 -0800</bug_when>
    <thetext>Created attachment 418499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723023</commentid>
    <comment_count>4</comment_count>
      <attachid>418499</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-01-27 09:42:50 -0800</bug_when>
    <thetext>Comment on attachment 418499
Patch

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

&gt; Source/WebCore/css/FontFaceSet.h:41
&gt; -class FontFaceSet final : public RefCounted&lt;FontFaceSet&gt;, private CSSFontFaceSetClient, public EventTargetWithInlineData, public ActiveDOMObject {
&gt; +class FontFaceSet final : public RefCounted&lt;FontFaceSet&gt;, public EventTargetWithInlineData, public ActiveDOMObject {

Can you now remove the `#include &quot;CSSFontFaceSet.h&quot;` from FontFaceSet.h after this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723120</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-27 13:08:52 -0800</bug_when>
    <thetext>(In reply to Jer Noble from comment #4)
&gt; Comment on attachment 418499 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418499&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/FontFaceSet.h:41
&gt; &gt; -class FontFaceSet final : public RefCounted&lt;FontFaceSet&gt;, private CSSFontFaceSetClient, public EventTargetWithInlineData, public ActiveDOMObject {
&gt; &gt; +class FontFaceSet final : public RefCounted&lt;FontFaceSet&gt;, public EventTargetWithInlineData, public ActiveDOMObject {
&gt; 
&gt; Can you now remove the `#include &quot;CSSFontFaceSet.h&quot;` from FontFaceSet.h
&gt; after this change?

Nope. FontFaceSet.h mentions things like CSSFontFaceSet::FontEventTypes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723128</commentid>
    <comment_count>6</comment_count>
      <attachid>418579</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-27 14:01:04 -0800</bug_when>
    <thetext>Created attachment 418579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723138</commentid>
    <comment_count>7</comment_count>
      <attachid>418579</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-01-27 14:18:27 -0800</bug_when>
    <thetext>Comment on attachment 418579
Patch

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

&gt; Source/WebCore/css/CSSFontFaceSet.cpp:63
&gt; +    auto result = m_fontModifiedObservers.add(fontModifiedObserver);
&gt; +    ASSERT_UNUSED(result, result.isNewEntry);

Where are we deleting these?
WeakHashSet doesn&apos;t know how to shrink itself automatically so you&apos;d need to manually delete items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723139</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-27 14:21:30 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #7)
&gt; Comment on attachment 418579 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418579&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSFontFaceSet.cpp:63
&gt; &gt; +    auto result = m_fontModifiedObservers.add(fontModifiedObserver);
&gt; &gt; +    ASSERT_UNUSED(result, result.isNewEntry);
&gt; 
&gt; Where are we deleting these?
&gt; WeakHashSet doesn&apos;t know how to shrink itself automatically so you&apos;d need to
&gt; manually delete items.

I&apos;m confused. I thought the whole point of using weak pointers was that the derived class didn&apos;t have to run any code in its destructor. But now it seems like we would have to run code in its destructor any way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723140</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-27 14:22:19 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #7)
&gt; Comment on attachment 418579 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418579&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSFontFaceSet.cpp:63
&gt; &gt; +    auto result = m_fontModifiedObservers.add(fontModifiedObserver);
&gt; &gt; +    ASSERT_UNUSED(result, result.isNewEntry);
&gt; 
&gt; Where are we deleting these?
&gt; WeakHashSet doesn&apos;t know how to shrink itself automatically so you&apos;d need to
&gt; manually delete items.

Oh really? then I think we may need to review other uses of WeakHashSet. I think I have seen a few patches that were using WeakHashSet as a convenient mean to not have to remove objects from the set upon destruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723143</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-27 14:32:52 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #8)
&gt; (In reply to Ryosuke Niwa from comment #7)
&gt; &gt; Comment on attachment 418579 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=418579&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/CSSFontFaceSet.cpp:63
&gt; &gt; &gt; +    auto result = m_fontModifiedObservers.add(fontModifiedObserver);
&gt; &gt; &gt; +    ASSERT_UNUSED(result, result.isNewEntry);
&gt; &gt; 
&gt; &gt; Where are we deleting these?
&gt; &gt; WeakHashSet doesn&apos;t know how to shrink itself automatically so you&apos;d need to
&gt; &gt; manually delete items.
&gt; 
&gt; I&apos;m confused. I thought the whole point of using weak pointers was that the
&gt; derived class didn&apos;t have to run any code in its destructor. But now it
&gt; seems like we would have to run code in its destructor any way?

Rather than having the derived class run code in its destructor, another solution would be to give WeakHashSet a public rehash() function, and have users call that at strategic times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723149</commentid>
    <comment_count>11</comment_count>
      <attachid>418579</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-01-27 14:39:08 -0800</bug_when>
    <thetext>Comment on attachment 418579
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/css/CSSFontFaceSet.cpp:63
&gt;&gt;&gt;&gt;&gt; +    ASSERT_UNUSED(result, result.isNewEntry);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Where are we deleting these?
&gt;&gt;&gt;&gt; WeakHashSet doesn&apos;t know how to shrink itself automatically so you&apos;d need to manually delete items.
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m confused. I thought the whole point of using weak pointers was that the derived class didn&apos;t have to run any code in its destructor. But now it seems like we would have to run code in its destructor any way?
&gt;&gt; 
&gt;&gt; Oh really? then I think we may need to review other uses of WeakHashSet. I think I have seen a few patches that were using WeakHashSet as a convenient mean to not have to remove objects from the set upon destruction.
&gt; 
&gt; Rather than having the derived class run code in its destructor, another solution would be to give WeakHashSet a public rehash() function, and have users call that at strategic times.

My preferred suggestion is for WeakHashSet to rehash on its own, based on a counter. Increment the counter in add() (and in other functions if you like). When the counter reaches a certain percentage of set capacity, rehash. Reasons to prefer: It&apos;s automatic and still average case amortized O(1); no client will ever have a better notion of when to rehash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723150</commentid>
    <comment_count>12</comment_count>
      <attachid>418579</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-01-27 14:39:21 -0800</bug_when>
    <thetext>Comment on attachment 418579
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/css/CSSFontFaceSet.cpp:63
&gt;&gt;&gt;&gt;&gt; +    ASSERT_UNUSED(result, result.isNewEntry);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Where are we deleting these?
&gt;&gt;&gt;&gt; WeakHashSet doesn&apos;t know how to shrink itself automatically so you&apos;d need to manually delete items.
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m confused. I thought the whole point of using weak pointers was that the derived class didn&apos;t have to run any code in its destructor. But now it seems like we would have to run code in its destructor any way?
&gt;&gt; 
&gt;&gt; Oh really? then I think we may need to review other uses of WeakHashSet. I think I have seen a few patches that were using WeakHashSet as a convenient mean to not have to remove objects from the set upon destruction.
&gt; 
&gt; Rather than having the derived class run code in its destructor, another solution would be to give WeakHashSet a public rehash() function, and have users call that at strategic times.

WeakHashSet will delete empty WeakPtr&apos;s inside computeSizes(), which itself is called from map(), which itself is called from forEach().  So if you use forEach() to iterate rather than a for(item : set), it&apos;ll automatically shrink itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723184</commentid>
    <comment_count>13</comment_count>
      <attachid>418592</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-01-27 15:45:19 -0800</bug_when>
    <thetext>Created attachment 418592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723609</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-28 20:06:46 -0800</bug_when>
    <thetext>Committed r272047: &lt;https://trac.webkit.org/changeset/272047&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418592.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723610</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-28 20:07:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/73737280&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418487</attachid>
            <date>2021-01-26 16:38:55 -0800</date>
            <delta_ts>2021-01-26 20:13:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221019-20210126163854.patch</filename>
            <type>text/plain</type>
            <size>9339</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc2ZTRmMzRmYmQ0ZjEx
Y2U4ZjJjZWYxZWNkZjhmZmYxYTZjMTUwMC4uNDY5NTBmZTRhMzI5OTFhYmQ0ZWRmNDYwYTJkZWJi
YWZjMDA3N2M2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAxLTI2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlub3IgY2xl
YW51cCBpbiBDU1NGb250RmFjZVNldENsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQXMgcGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTY0MzcjYzcsIG1ha2UgdGhlIGxpZmV0aW1lIG1hbmFnZW1lbnQgb2YgdGhl
c2UKKyAgICAgICAgY2xpZW50IGNvbm5lY3Rpb25zIGRvbmUgaW4gYSBzaW5nbGUgY2VudHJhbGl6
ZWQgcGxhY2UuCisKKyAgICAgICAgSSB0cmllZCB0byBkbyB0aGlzIHdpdGggV2Vha1B0cnMgaW5z
dGVhZCwgYnV0IGl0IGRpZG4ndCB3b3JrIGJlY2F1c2U6CisgICAgICAgIDEuIE9wZXJhdGlvbnMg
b24gV2Vha1B0cnMgKGV2ZW4gaW5jbHVkaW5nIHRoZSBtb3ZlIGNvbnN0cnVjdG9yKSBjYW4gb25s
eSBiZSBkb25lIHdoZW4gdGhlIGlubmVyCisgICAgICAgICAgIHR5cGUgaXMgQ2FuTWFrZVdlYWtQ
dHI8PiAoYmVjYXVzZSB3ZWFrX3B0cl9pbXBsX2Nhc3QoKSBpbnNwZWN0cyB0aGluZ3MgbGlrZSA6
OldlYWtWYWx1ZVR5cGUpLgorICAgICAgICAyLiBGb250RmFjZVNldCAod2hpY2ggbmVlZHMgdG8g
aW5oZXJpdCBmcm9tIENsaWVudCkgYWxzbyBoYXMgdG8gaW5oZXJpdCBmcm9tCisgICAgICAgICAg
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHdoaWNoIGluaGVyaXRzIGZyb20gRXZlbnRUYXJn
ZXQsIHdoaWNoIGFscmVhZHkgaW5oZXJpdHMgZnJvbQorICAgICAgICAgICBDYW5NYWtlV2Vha1B0
cjxFdmVudFRhcmdldD4uCisgICAgICAgIDMuIEl0J3MgYmFkIGlmIHRoZXJlIGFyZSB0d28gZGlz
dGluY3QgcGF0aHMgdGhyb3VnaCB0aGUgaW5oZXJpdGFuY2UgZ3JhcGggZnJvbSBDYW5NYWtlV2Vh
a1B0ciB0bworICAgICAgICAgICBGb250RmFjZVNldC4KKworICAgICAgICBTbywgdGhpcyBwYXRj
aCB0YWtlcyB0aGUgb3RoZXIgYXBwcm9hY2ggb2YganVzdCBkb2luZyB0aGUgbGlmZXRpbWUgbWFu
YWdlbWVudCBpbnNpZGUgdGhlCisgICAgICAgIGRlc3RydWN0b3Igb2YgQ2xpZW50LgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZVNldDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0
OjpyZW1vdmVDbGllbnQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNldC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXRDbGllbnQ6OmZhY2VGaW5pc2hlZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldENsaWVudDo6Zm9udE1vZGlmaWVkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0Q2xpZW50OjpzdGFydGVk
TG9hZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldENsaWVu
dDo6Y29tcGxldGVkTG9hZGluZyk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6On5DU1NGb250U2VsZWN0
b3IpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvRm9u
dEZhY2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojp+Rm9udEZhY2VTZXQpOgorICAgICAg
ICAqIGNzcy9Gb250RmFjZVNldC5oOgorCiAyMDIxLTAxLTIyICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpbmlzaCBpbnRyb2R1Y3Rpb24g
b2YgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTogcmVtb3ZlIHJlbWFpbmluZyBnbHVlIGNvZGUg
ZnJvbSBSZW5kZXJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXgg
YjViY2QyMDY0NjNhYmViOTk2MmE5MGVlZWM2NWNhYjJjOTIwOGRmOC4uMDMyZTNkODkzZTEyM2Fj
ZGY0YTM4ZmJmMjcyODZmYzcxNTQyZTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
ZXQuY3BwCkBAIC01NywxMiArNTcsMTIgQEAgQ1NTRm9udEZhY2VTZXQ6On5DU1NGb250RmFjZVNl
dCgpCiAgICAgfQogfQogCi12b2lkIENTU0ZvbnRGYWNlU2V0OjphZGRDbGllbnQoQ1NTRm9udEZh
Y2VTZXRDbGllbnQmIGNsaWVudCkKK3ZvaWQgQ1NTRm9udEZhY2VTZXQ6OmFkZENsaWVudChDbGll
bnQmIGNsaWVudCkKIHsKICAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwogfQogCi12b2lkIENT
U0ZvbnRGYWNlU2V0OjpyZW1vdmVDbGllbnQoQ1NTRm9udEZhY2VTZXRDbGllbnQmIGNsaWVudCkK
K3ZvaWQgQ1NTRm9udEZhY2VTZXQ6OnJlbW92ZUNsaWVudChDbGllbnQmIGNsaWVudCkKIHsKICAg
ICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKICAgICBtX2NsaWVudHMucmVt
b3ZlKCZjbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaAppbmRleCA2OWMxODU2
OGEyOTA2ZDdlMzI1NGJjOTI1MDliYzcxYjZiNGVlYWE3Li5hZWRmOGQxMDhiYTMxY2Q2ZWU1MmI5
MmVmYjU0ODAyNWIyNzJmZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaApAQCAt
MzUsMTUgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJpbWl0aXZlVmFs
dWU7CiBjbGFzcyBGb250RmFjZVNldDsKIAotY2xhc3MgQ1NTRm9udEZhY2VTZXRDbGllbnQgewot
cHVibGljOgotICAgIHZpcnR1YWwgfkNTU0ZvbnRGYWNlU2V0Q2xpZW50KCkgPSBkZWZhdWx0Owot
ICAgIHZpcnR1YWwgdm9pZCBmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6
U3RhdHVzKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGZvbnRNb2RpZmllZCgpIHsgfTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRlZExvYWRpbmcoKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBs
ZXRlZExvYWRpbmcoKSB7IH07Ci19OwotCiBjbGFzcyBDU1NGb250RmFjZVNldCBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPENTU0ZvbnRGYWNlU2V0PiwgcHVibGljIENTU0ZvbnRGYWNlOjpDbGll
bnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2VTZXQ+IGNyZWF0ZShDU1NG
b250U2VsZWN0b3IqIG93bmluZ0ZvbnRTZWxlY3RvciA9IG51bGxwdHIpCkBAIC01Miw4ICs0Mywz
MCBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5DU1NGb250RmFjZVNldCgpOwogCi0gICAgdm9pZCBh
ZGRDbGllbnQoQ1NTRm9udEZhY2VTZXRDbGllbnQmKTsKLSAgICB2b2lkIHJlbW92ZUNsaWVudChD
U1NGb250RmFjZVNldENsaWVudCYpOworICAgIGNsYXNzIENsaWVudCB7CisgICAgcHVibGljOgor
ICAgICAgICBDbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworICAgICAgICAgICAg
Y29ubmVjdGlvbi0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgc2V0Q29ubmVjdGlvbihDU1NGb250RmFjZVNldCYgY29ubmVjdGlvbikKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKCF0aGlzLT5jb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHRoaXMt
PmNvbm5lY3Rpb24gPSAmY29ubmVjdGlvbjsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uYWRkQ2xp
ZW50KCp0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBmYWNlRmluaXNo
ZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzKSB7IH07CisgICAgICAgIHZpcnR1
YWwgdm9pZCBmb250TW9kaWZpZWQoKSB7IH07CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydGVk
TG9hZGluZygpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlZExvYWRpbmcoKSB7
IH07CisKKyAgICAgICAgQ1NTRm9udEZhY2VTZXQqIGNvbm5lY3Rpb24geyBudWxscHRyIH07Cisg
ICAgfTsKIAogICAgIGJvb2wgaGFzRmFjZShjb25zdCBDU1NGb250RmFjZSYpIGNvbnN0OwogICAg
IHNpemVfdCBmYWNlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2ZhY2VzLnNpemUoKTsgfQpAQCAt
OTAsNiArMTAzLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluY3JlbWVudEFjdGl2ZUNvdW50KCk7
CiAgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVDb3VudCgpOwogCisgICAgdm9pZCBhZGRDbGllbnQo
Q2xpZW50Jik7CisgICAgdm9pZCByZW1vdmVDbGllbnQoQ2xpZW50Jik7CisKICAgICB2b2lkIGZv
bnRTdGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzIG9sZFN0YXRl
LCBDU1NGb250RmFjZTo6U3RhdHVzIG5ld1N0YXRlKSBmaW5hbDsKICAgICB2b2lkIGZvbnRQcm9w
ZXJ0eUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NWYWx1ZUxpc3QqIG9sZEZhbWlsaWVzID0gbnVs
bHB0cikgZmluYWw7CiAKQEAgLTExOSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
U3R5bGVSdWxlRm9udEZhY2UqLCBDU1NGb250RmFjZSo+IG1fY29uc3RpdHVlbnRDU1NDb25uZWN0
aW9uczsKICAgICBzaXplX3QgbV9mYWNlc1BhcnRpdGlvbkluZGV4IHsgMCB9OyAvLyBBbGwgZW50
cmllcyBpbiBtX2ZhY2VzIGJlZm9yZSB0aGlzIGluZGV4IGFyZSBDU1MtY29ubmVjdGVkLgogICAg
IFN0YXR1cyBtX3N0YXR1cyB7IFN0YXR1czo6TG9hZGVkIH07Ci0gICAgSGFzaFNldDxDU1NGb250
RmFjZVNldENsaWVudCo+IG1fY2xpZW50czsKKyAgICBIYXNoU2V0PENsaWVudCo+IG1fY2xpZW50
czsKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9vd25pbmdGb250U2VsZWN0b3I7CiAg
ICAgdW5zaWduZWQgbV9hY3RpdmVDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuY3BwCmluZGV4IGMwYjliZGI2NDcxYjUxOWIyYzY4MzMwMzNiZTNhYWZhOGYz
YWQxNjEuLmQ4ZWNkNTMxNjlhZDk0MjhiM2QwNGNkNzE4Y2U0NDI5MDZhNzFiNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC02OSw5ICs2OSwxMCBAQCBDU1NGb250
U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3RvcihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgLCBtX3Vu
aXF1ZUlkKCsrZm9udFNlbGVjdG9ySWQpCiAgICAgLCBtX3ZlcnNpb24oMCkKIHsKKyAgICBzZXRD
b25uZWN0aW9uKG1fY3NzRm9udEZhY2VTZXQpOworCiAgICAgQVNTRVJUKG1fZG9jdW1lbnQpOwog
ICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuYWRkQ2xpZW50KCp0aGlzKTsKLSAgICBtX2Nzc0Zv
bnRGYWNlU2V0LT5hZGRDbGllbnQoKnRoaXMpOwogICAgIExPRyhGb250cywgIkNTU0ZvbnRTZWxl
Y3RvciAlcCBjdG9yIiwgdGhpcyk7CiAKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTgyLDcg
KzgzLDYgQEAgQ1NTRm9udFNlbGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKCkKICAgICBMT0coRm9u
dHMsICJDU1NGb250U2VsZWN0b3IgJXAgZHRvciIsIHRoaXMpOwogCiAgICAgY2xlYXJEb2N1bWVu
dCgpOwotICAgIG1fY3NzRm9udEZhY2VTZXQtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggZGQ1NzBjNjE4OGVjYTZiZDIxY2I5ODAwODQwNDkx
ZmVlYmQ4MGM2Ny4uY2E4ODEyZWM3YzkyN2Q1ODQyYjEyMWM3YzEwMGFkNWFjYmRiZmM2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBD
YWNoZWRGb250OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTdHlsZVJ1bGVGb250RmFjZTsKIAot
Y2xhc3MgQ1NTRm9udFNlbGVjdG9yIGZpbmFsIDogcHVibGljIEZvbnRTZWxlY3RvciwgcHVibGlj
IENTU0ZvbnRGYWNlU2V0Q2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q1NTRm9udFNlbGVj
dG9yPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBDU1NGb250U2VsZWN0b3IgZmlu
YWwgOiBwdWJsaWMgRm9udFNlbGVjdG9yLCBwdWJsaWMgQ1NTRm9udEZhY2VTZXQ6OkNsaWVudCwg
cHVibGljIENhbk1ha2VXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4sIHB1YmxpYyBBY3RpdmVET01P
YmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTRm9udFNlbGVjdG9yPiBjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCmlu
ZGV4IDVhYTU4NTI3ZTkxY2Q2YzU2NDdmOWZjOWU5NGI0MmIyYjUwMzQ0YjQuLjAzYjdkNzUxYjlh
ZTE5YjE1NWQ1ZTdhNjhhMDYxZjUzNTc0N2IwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBGb250RmFjZVNldDo6Rm9udEZhY2VTZXQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mIGluaQogICAgICwgbV9i
YWNraW5nKENTU0ZvbnRGYWNlU2V0OjpjcmVhdGUoKSkKICAgICAsIG1fcmVhZHlQcm9taXNlKG1h
a2VVbmlxdWVSZWY8UmVhZHlQcm9taXNlPigqdGhpcywgJkZvbnRGYWNlU2V0OjpyZWFkeVByb21p
c2VSZXNvbHZlKSkKIHsKLSAgICBtX2JhY2tpbmctPmFkZENsaWVudCgqdGhpcyk7CisgICAgc2V0
Q29ubmVjdGlvbihtX2JhY2tpbmcpOwogICAgIGZvciAoYXV0byYgZmFjZSA6IGluaXRpYWxGYWNl
cykKICAgICAgICAgYWRkKCpmYWNlKTsKIH0KQEAgLTc1LDEzICs3NSwxMCBAQCBGb250RmFjZVNl
dDo6Rm9udEZhY2VTZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBDU1NGb250RmFjZVNldCYgYmFja2lu
ZykKIAogICAgIGlmIChtX2lzRG9jdW1lbnRMb2FkZWQgJiYgIWJhY2tpbmcuaGFzQWN0aXZlRm9u
dEZhY2VzKCkpCiAgICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKCp0aGlzKTsKLQotICAg
IG1fYmFja2luZy0+YWRkQ2xpZW50KCp0aGlzKTsKIH0KIAogRm9udEZhY2VTZXQ6On5Gb250RmFj
ZVNldCgpCiB7Ci0gICAgbV9iYWNraW5nLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQogCiBGb250
RmFjZVNldDo6SXRlcmF0b3I6Okl0ZXJhdG9yKEZvbnRGYWNlU2V0JiBzZXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5oCmluZGV4IGU3ZWFlYjRhNTEyYmI2YmNmZDA3YTZhOWM3ZGUzMzFiY2QyMzEw
ZjYuLmRhZTJjNzA4Yzg4NWU1OGVmOGYzMmJlZjM0NzRlNjg3YzQxYjU5MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZVNldC5oCkBAIC0zOCw3ICszOCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5
cGU+IGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CiAKIGNsYXNzIERP
TUV4Y2VwdGlvbjsKIAotY2xhc3MgRm9udEZhY2VTZXQgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxGb250RmFjZVNldD4sIHByaXZhdGUgQ1NTRm9udEZhY2VTZXRDbGllbnQsIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIEZv
bnRGYWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwcml2YXRl
IENTU0ZvbnRGYWNlU2V0OjpDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZv
bnRGYWNlU2V0KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZvbnRGYWNlU2V0PiBjcmVhdGUo
RG9jdW1lbnQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mIGluaXRpYWxGYWNlcyk7
CkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgRm9udEZhY2VTZXQoRG9jdW1lbnQmLCBj
b25zdCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mKTsKICAgICBGb250RmFjZVNldChEb2N1bWVu
dCYsIENTU0ZvbnRGYWNlU2V0Jik7CiAKLSAgICAvLyBDU1NGb250RmFjZVNldENsaWVudAorICAg
IC8vIENTU0ZvbnRGYWNlU2V0OjpDbGllbnQKICAgICB2b2lkIHN0YXJ0ZWRMb2FkaW5nKCkgZmlu
YWw7CiAgICAgdm9pZCBjb21wbGV0ZWRMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBmYWNlRmlu
aXNoZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418499</attachid>
            <date>2021-01-26 20:13:32 -0800</date>
            <delta_ts>2021-01-27 14:01:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221019-20210126201331.patch</filename>
            <type>text/plain</type>
            <size>15627</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc2ZTRmMzRmYmQ0ZjEx
Y2U4ZjJjZWYxZWNkZjhmZmYxYTZjMTUwMC4uMzNhYTU0ZTlmZjQwOWU0YWJmMGY0ZDg1ZjFiMzli
ZWQ5MDMwZDU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTAxLTI2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlub3IgY2xl
YW51cCBpbiBDU1NGb250RmFjZVNldENsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQXMgcGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTY0MzcjYzcsIHVzZSBXZWFrUHRyIHRvIGhhbmRsZSB0aGUgbGlmZXRpbWUK
KyAgICAgICAgb2YgQ1NTRm9udEZhY2VTZXQ6OkNsaWVudC4KKworICAgICAgICBTb21lIG9mIHRo
ZSBpbXBsZW1lbnRhdGlvbnMgb2YgQ1NTRm9udEZhY2VTZXQ6OkNsaWVudCBhbHJlYWR5IGRlcml2
ZSBmcm9tIENhbk1ha2VXZWFrUHRyLAorICAgICAgICBzbyB3ZSBjYW4ndCBuYWl2ZWx5IGp1c3Qg
bWFrZSBDU1NGb250RmFjZVNldDo6Q2xpZW50IGRlcml2ZSBmcm9tIENhbk1ha2VXZWFrUHRyIGRp
cmVjdGx5LgorICAgICAgICBJbnN0ZWFkLCB3ZSB1c2UgV1RGOjpPYnNlcnZlci4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9u
dEZhY2VTZXQ6OmFkZEZvbnRNb2RpZmllZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZvbnRGYWNlU2V0OjphZGRGb250RXZlbnRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNldDo6aW5jcmVtZW50QWN0aXZlQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRm9udEZhY2VTZXQ6OmRlY3JlbWVudEFjdGl2ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlU2V0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6
OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6Zm9udFN0YXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6Zm9udFByb3BlcnR5Q2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6YWRkQ2xpZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjpyZW1vdmVDbGllbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNldC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTRm9udEZhY2VTZXRDbGllbnQ6OmZhY2VGaW5pc2hlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZVNldENsaWVudDo6Zm9udE1vZGlmaWVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0Q2xpZW50OjpzdGFydGVkTG9hZGluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldENsaWVudDo6Y29tcGxl
dGVkTG9hZGluZyk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjptX3ZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNl
bGVjdG9yOjp+Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9y
Lmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRGYWNlU2V0OjpGb250RmFjZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6
fkZvbnRGYWNlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpmb250RXZlbnRP
YnNlcnZlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6c3RhcnRlZExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmRvY3VtZW50RGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Y29tcGxldGVkTG9hZGluZyk6Cisg
ICAgICAgICogY3NzL0ZvbnRGYWNlU2V0Lmg6CisKIDIwMjEtMDEtMjIgIE5pa29sYXMgWmltbWVy
bWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+CiAKICAgICAgICAgRmluaXNoIGludHJvZHVj
dGlvbiBvZiBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOiByZW1vdmUgcmVtYWluaW5nIGdsdWUg
Y29kZSBmcm9tIFJlbmRlckxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApp
bmRleCBiNWJjZDIwNjQ2M2FiZWI5OTYyYTkwZWVlYzY1Y2FiMmM5MjA4ZGY4Li4zNzg0MDgzY2Iy
N2EwNmJlMjkxMTE5ZDRmZDcwNWUwN2FkMDViNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNldC5jcHAKQEAgLTU3LDE1ICs1NywxNiBAQCBDU1NGb250RmFjZVNldDo6fkNTU0ZvbnRG
YWNlU2V0KCkKICAgICB9CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTZXQ6OmFkZENsaWVudChDU1NG
b250RmFjZVNldENsaWVudCYgY2xpZW50KQordm9pZCBDU1NGb250RmFjZVNldDo6YWRkRm9udE1v
ZGlmaWVkT2JzZXJ2ZXIoY29uc3QgRm9udE1vZGlmaWVkT2JzZXJ2ZXImIGZvbnRNb2RpZmllZE9i
c2VydmVyKQogewotICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CisgICAgYXV0byByZXN1bHQg
PSBtX2ZvbnRNb2RpZmllZE9ic2VydmVycy5hZGQoZm9udE1vZGlmaWVkT2JzZXJ2ZXIpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgQ1NT
Rm9udEZhY2VTZXQ6OnJlbW92ZUNsaWVudChDU1NGb250RmFjZVNldENsaWVudCYgY2xpZW50KQor
dm9pZCBDU1NGb250RmFjZVNldDo6YWRkRm9udEV2ZW50T2JzZXJ2ZXIoY29uc3QgRm9udEV2ZW50
T2JzZXJ2ZXImIGZvbnRFdmVudE9ic2VydmVyKQogewotICAgIEFTU0VSVChtX2NsaWVudHMuY29u
dGFpbnMoJmNsaWVudCkpOwotICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7CisgICAgYXV0
byByZXN1bHQgPSBtX2ZvbnRFdmVudE9ic2VydmVycy5hZGQoZm9udEV2ZW50T2JzZXJ2ZXIpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKIHZvaWQg
Q1NTRm9udEZhY2VTZXQ6OmluY3JlbWVudEFjdGl2ZUNvdW50KCkKQEAgLTczLDggKzc0LDggQEAg
dm9pZCBDU1NGb250RmFjZVNldDo6aW5jcmVtZW50QWN0aXZlQ291bnQoKQogICAgICsrbV9hY3Rp
dmVDb3VudDsKICAgICBpZiAobV9hY3RpdmVDb3VudCA9PSAxKSB7CiAgICAgICAgIG1fc3RhdHVz
ID0gU3RhdHVzOjpMb2FkaW5nOwotICAgICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50
cykKLSAgICAgICAgICAgIGNsaWVudC0+c3RhcnRlZExvYWRpbmcoKTsKKyAgICAgICAgZm9yIChh
dXRvJiBvYnNlcnZlciA6IG1fZm9udEV2ZW50T2JzZXJ2ZXJzKQorICAgICAgICAgICAgb2JzZXJ2
ZXIoeyBTdGFydGVkTG9hZGluZyB7IH0gfSk7CiAgICAgfQogfQogCkBAIC04Myw4ICs4NCw4IEBA
IHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmRlY3JlbWVudEFjdGl2ZUNvdW50KCkKICAgICAtLW1fYWN0
aXZlQ291bnQ7CiAgICAgaWYgKCFtX2FjdGl2ZUNvdW50KSB7CiAgICAgICAgIG1fc3RhdHVzID0g
U3RhdHVzOjpMb2FkZWQ7Ci0gICAgICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQot
ICAgICAgICAgICAgY2xpZW50LT5jb21wbGV0ZWRMb2FkaW5nKCk7CisgICAgICAgIGZvciAoYXV0
byYgb2JzZXJ2ZXIgOiBtX2ZvbnRFdmVudE9ic2VydmVycykKKyAgICAgICAgICAgIG9ic2VydmVy
KHsgQ29tcGxldGVkTG9hZGluZyB7IH0gfSk7CiAgICAgfQogfQogCkBAIC0xODQsOCArMTg1LDgg
QEAgdm9pZCBDU1NGb250RmFjZVNldDo6YWRkKENTU0ZvbnRGYWNlJiBmYWNlKQogewogICAgIEFT
U0VSVCghaGFzRmFjZShmYWNlKSk7CiAKLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50
cykKLSAgICAgICAgY2xpZW50LT5mb250TW9kaWZpZWQoKTsKKyAgICBmb3IgKGF1dG8mIG9ic2Vy
dmVyIDogbV9mb250TW9kaWZpZWRPYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyKCk7CiAKICAg
ICBmYWNlLmFkZENsaWVudCgqdGhpcyk7CiAgICAgbV9jYWNoZS5jbGVhcigpOwpAQCAtMjM1LDgg
KzIzNiw4IEBAIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OnJlbW92ZShjb25zdCBDU1NGb250RmFjZSYg
ZmFjZSkKIAogICAgIG1fY2FjaGUuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byogY2xpZW50IDog
bV9jbGllbnRzKQotICAgICAgICBjbGllbnQtPmZvbnRNb2RpZmllZCgpOworICAgIGZvciAoYXV0
byYgb2JzZXJ2ZXIgOiBtX2ZvbnRNb2RpZmllZE9ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIo
KTsKICAgICAKICAgICBpZiAoZmFjZS5mYW1pbGllcygpICYmIGZhY2UuZmFtaWxpZXMoKS5oYXNW
YWx1ZSgpKQogICAgICAgICByZW1vdmVGcm9tRmFjZXNMb29rdXBUYWJsZShmYWNlLCAqZmFjZS5m
YW1pbGllcygpLnZhbHVlKCkpOwpAQCAtNTAyLDggKzUwMyw4IEBAIHZvaWQgQ1NTRm9udEZhY2VT
ZXQ6OmZvbnRTdGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0
dXMgb2xkCiAgICAgfQogICAgIGlmIChuZXdTdGF0ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpT
dWNjZXNzIHx8IG5ld1N0YXRlID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OkZhaWx1cmUpIHsKICAg
ICAgICAgQVNTRVJUKG9sZFN0YXRlID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OkxvYWRpbmcgfHwg
b2xkU3RhdGUgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6VGltZWRPdXQpOwotICAgICAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgICAgIGNsaWVudC0+ZmFjZUZpbmlz
aGVkKGZhY2UsIG5ld1N0YXRlKTsKKyAgICAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fZm9u
dEV2ZW50T2JzZXJ2ZXJzKQorICAgICAgICAgICAgb2JzZXJ2ZXIoeyBGYWNlRmluaXNoZWQgeyBm
YWNlLCBuZXdTdGF0ZSB9IH0pOwogICAgICAgICBkZWNyZW1lbnRBY3RpdmVDb3VudCgpOwogICAg
IH0KIH0KQEAgLTUxNyw4ICs1MTgsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0Ojpmb250UHJvcGVy
dHlDaGFuZ2VkKENTU0ZvbnRGYWNlJiBmYWNlLCBDU1NWYWx1ZUxpc3QqIG9sZEZhbQogICAgICAg
ICBhZGRUb0ZhY2VzTG9va3VwVGFibGUoZmFjZSk7CiAgICAgfQogCi0gICAgZm9yIChhdXRvKiBj
bGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIGNsaWVudC0+Zm9udE1vZGlmaWVkKCk7CisgICAg
Zm9yIChhdXRvJiBvYnNlcnZlciA6IG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXJzKQorICAgICAgICBv
YnNlcnZlcigpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCmluZGV4IDY5
YzE4NTY4YTI5MDZkN2UzMjU0YmM5MjUwOWJjNzFiNmI0ZWVhYTcuLmQ3OTZmYzYyNjIzNmY0ZWI2
YzBhYzY2NTYyMTNjMmI5MDczZGI5NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5o
CkBAIC0yNyw3ICsyNywxMCBAQAogCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2UuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzUsMTUgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q1NTUHJpbWl0aXZlVmFsdWU7CiBjbGFzcyBGb250RmFjZVNldDsKIAotY2xhc3MgQ1NTRm9udEZh
Y2VTZXRDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgfkNTU0ZvbnRGYWNlU2V0Q2xpZW50
KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2Um
LCBDU1NGb250RmFjZTo6U3RhdHVzKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGZvbnRNb2RpZmll
ZCgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRlZExvYWRpbmcoKSB7IH07Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXBsZXRlZExvYWRpbmcoKSB7IH07Ci19OwotCiBjbGFzcyBDU1NGb250RmFj
ZVNldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0ZvbnRGYWNlU2V0PiwgcHVibGljIENT
U0ZvbnRGYWNlOjpDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2VT
ZXQ+IGNyZWF0ZShDU1NGb250U2VsZWN0b3IqIG93bmluZ0ZvbnRTZWxlY3RvciA9IG51bGxwdHIp
CkBAIC01Miw4ICs0NiwyMCBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5DU1NGb250RmFjZVNldCgp
OwogCi0gICAgdm9pZCBhZGRDbGllbnQoQ1NTRm9udEZhY2VTZXRDbGllbnQmKTsKLSAgICB2b2lk
IHJlbW92ZUNsaWVudChDU1NGb250RmFjZVNldENsaWVudCYpOworICAgIHVzaW5nIEZvbnRNb2Rp
ZmllZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFkZEZvbnRNb2RpZmll
ZE9ic2VydmVyKGNvbnN0IEZvbnRNb2RpZmllZE9ic2VydmVyJik7CisKKyAgICBzdHJ1Y3QgRmFj
ZUZpbmlzaGVkIHsKKyAgICAgICAgQ1NTRm9udEZhY2UmIGZvbnRGYWNlOworICAgICAgICBDU1NG
b250RmFjZTo6U3RhdHVzIHN0YXR1czsKKyAgICB9OworICAgIHN0cnVjdCBTdGFydGVkTG9hZGlu
ZyB7CisgICAgfTsKKyAgICBzdHJ1Y3QgQ29tcGxldGVkTG9hZGluZyB7CisgICAgfTsKKyAgICB1
c2luZyBGb250RXZlbnRUeXBlcyA9IFZhcmlhbnQ8RmFjZUZpbmlzaGVkLCBTdGFydGVkTG9hZGlu
ZywgQ29tcGxldGVkTG9hZGluZz47CisgICAgdXNpbmcgRm9udEV2ZW50T2JzZXJ2ZXIgPSBPYnNl
cnZlcjx2b2lkKEZvbnRFdmVudFR5cGVzJiYpPjsKKyAgICB2b2lkIGFkZEZvbnRFdmVudE9ic2Vy
dmVyKGNvbnN0IEZvbnRFdmVudE9ic2VydmVyJik7CiAKICAgICBib29sIGhhc0ZhY2UoY29uc3Qg
Q1NTRm9udEZhY2UmKSBjb25zdDsKICAgICBzaXplX3QgZmFjZUNvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9mYWNlcy5zaXplKCk7IH0KQEAgLTExOSw3ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8U3R5bGVSdWxlRm9udEZhY2UqLCBDU1NGb250RmFjZSo+IG1fY29uc3RpdHVlbnRDU1ND
b25uZWN0aW9uczsKICAgICBzaXplX3QgbV9mYWNlc1BhcnRpdGlvbkluZGV4IHsgMCB9OyAvLyBB
bGwgZW50cmllcyBpbiBtX2ZhY2VzIGJlZm9yZSB0aGlzIGluZGV4IGFyZSBDU1MtY29ubmVjdGVk
LgogICAgIFN0YXR1cyBtX3N0YXR1cyB7IFN0YXR1czo6TG9hZGVkIH07Ci0gICAgSGFzaFNldDxD
U1NGb250RmFjZVNldENsaWVudCo+IG1fY2xpZW50czsKKyAgICBXZWFrSGFzaFNldDxGb250TW9k
aWZpZWRPYnNlcnZlcj4gbV9mb250TW9kaWZpZWRPYnNlcnZlcnM7CisgICAgV2Vha0hhc2hTZXQ8
Rm9udEV2ZW50T2JzZXJ2ZXI+IG1fZm9udEV2ZW50T2JzZXJ2ZXJzOwogICAgIFdlYWtQdHI8Q1NT
Rm9udFNlbGVjdG9yPiBtX293bmluZ0ZvbnRTZWxlY3RvcjsKICAgICB1bnNpZ25lZCBtX2FjdGl2
ZUNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5k
ZXggYzBiOWJkYjY0NzFiNTE5YjJjNjgzMzAzM2JlM2FhZmE4ZjNhZDE2MS4uNDM0ZTRjY2NhYTIx
MzdiMmVlZjY5OGUyMWI2M2I2YmFjNWQ2YWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAKQEAgLTY1LDEzICs2NSwxNCBAQCBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRT
ZWxlY3RvcihEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1l
bnQpCiAgICAgLCBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fY3Nz
Rm9udEZhY2VTZXQoQ1NTRm9udEZhY2VTZXQ6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZm9udE1v
ZGlmaWVkT2JzZXJ2ZXIoW3RoaXNdIHsgZm9udE1vZGlmaWVkKCk7IH0pCiAgICAgLCBtX2ZvbnRM
b2FkaW5nVGltZXIoKnRoaXMsICZDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJl
ZCkKICAgICAsIG1fdW5pcXVlSWQoKytmb250U2VsZWN0b3JJZCkKICAgICAsIG1fdmVyc2lvbigw
KQogewogICAgIEFTU0VSVChtX2RvY3VtZW50KTsKICAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigp
LmFkZENsaWVudCgqdGhpcyk7Ci0gICAgbV9jc3NGb250RmFjZVNldC0+YWRkQ2xpZW50KCp0aGlz
KTsKKyAgICBtX2Nzc0ZvbnRGYWNlU2V0LT5hZGRGb250TW9kaWZpZWRPYnNlcnZlcihtX2ZvbnRN
b2RpZmllZE9ic2VydmVyKTsKICAgICBMT0coRm9udHMsICJDU1NGb250U2VsZWN0b3IgJXAgY3Rv
ciIsIHRoaXMpOwogCiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CkBAIC04Miw3ICs4Myw2IEBAIENT
U0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiAgICAgTE9HKEZvbnRzLCAiQ1NTRm9u
dFNlbGVjdG9yICVwIGR0b3IiLCB0aGlzKTsKIAogICAgIGNsZWFyRG9jdW1lbnQoKTsKLSAgICBt
X2Nzc0ZvbnRGYWNlU2V0LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgIEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5oCmluZGV4IGRkNTcwYzYxODhlY2E2YmQyMWNiOTgwMDg0MDQ5MWZlZWJkODBjNjcu
Ljg4MGEwZGNlZDU0MjdlNGMzNTgzN2VhOWM0MjI5NTIzYTg5ZjdjOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQ2FjaGVkRm9udDsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgU3R5bGVSdWxlRm9udEZhY2U7CiAKLWNsYXNzIENTU0Zv
bnRTZWxlY3RvciBmaW5hbCA6IHB1YmxpYyBGb250U2VsZWN0b3IsIHB1YmxpYyBDU1NGb250RmFj
ZVNldENsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4sIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgQ1NTRm9udFNlbGVjdG9yIGZpbmFsIDogcHVibGlj
IEZvbnRTZWxlY3RvciwgcHVibGljIENhbk1ha2VXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4sIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTRm9udFNl
bGVjdG9yPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKQEAgLTk4LDcgKzk4LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJM
TG9hZGluZyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYg
ZmFtaWx5KSBmaW5hbDsKIAotICAgIHZvaWQgZm9udE1vZGlmaWVkKCkgZmluYWw7CisgICAgdm9p
ZCBmb250TW9kaWZpZWQoKTsKIAogICAgIHZvaWQgZm9udExvYWRpbmdUaW1lckZpcmVkKCk7CiAK
QEAgLTEyMyw2ICsxMjMsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UmVmUHRyPENTU0ZvbnRG
YWNlPj4gbV9jc3NDb25uZWN0aW9uc1Bvc3NpYmx5VG9SZW1vdmU7CiAgICAgSGFzaFNldDxSZWZQ
dHI8U3R5bGVSdWxlRm9udEZhY2U+PiBtX2Nzc0Nvbm5lY3Rpb25zRW5jb3VudGVyZWREdXJpbmdC
dWlsZDsKIAorICAgIENTU0ZvbnRGYWNlU2V0OjpGb250TW9kaWZpZWRPYnNlcnZlciBtX2ZvbnRN
b2RpZmllZE9ic2VydmVyOworCiAgICAgVGltZXIgbV9mb250TG9hZGluZ1RpbWVyOwogICAgIGJv
b2wgbV9pc0ZvbnRMb2FkaW5nU3VzcGVuZGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZVNldC5jcHAKaW5kZXggNWFhNTg1MjdlOTFjZDZjNTY0N2Y5ZmM5ZTk0YjQyYjJiNTAzNDRi
NC4uZTI1Mzk1NmQwNTdmNTBjMDJiNDM0MWEwMTMxMDA2OTg1YWE4YmI0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2VTZXQuY3BwCkBAIC01OSw4ICs1OSw5IEBAIEZvbnRGYWNlU2V0OjpGb250RmFj
ZVNldChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYg
aW5pCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCiAgICAgLCBtX2JhY2tpbmcoQ1NT
Rm9udEZhY2VTZXQ6OmNyZWF0ZSgpKQogICAgICwgbV9yZWFkeVByb21pc2UobWFrZVVuaXF1ZVJl
ZjxSZWFkeVByb21pc2U+KCp0aGlzLCAmRm9udEZhY2VTZXQ6OnJlYWR5UHJvbWlzZVJlc29sdmUp
KQorICAgICwgbV9mb250RXZlbnRPYnNlcnZlcihbdGhpc10gKENTU0ZvbnRGYWNlU2V0OjpGb250
RXZlbnRUeXBlcyYmIGZvbnRFdmVudFR5cGVzKSB7IGZvbnRFdmVudE9ic2VydmVkKFdURk1vdmUo
Zm9udEV2ZW50VHlwZXMpKTsgfSkKIHsKLSAgICBtX2JhY2tpbmctPmFkZENsaWVudCgqdGhpcyk7
CisgICAgbV9iYWNraW5nLT5hZGRGb250RXZlbnRPYnNlcnZlcihtX2ZvbnRFdmVudE9ic2VydmVy
KTsKICAgICBmb3IgKGF1dG8mIGZhY2UgOiBpbml0aWFsRmFjZXMpCiAgICAgICAgIGFkZCgqZmFj
ZSk7CiB9CkBAIC02OSw2ICs3MCw3IEBAIEZvbnRGYWNlU2V0OjpGb250RmFjZVNldChEb2N1bWVu
dCYgZG9jdW1lbnQsIENTU0ZvbnRGYWNlU2V0JiBiYWNraW5nKQogICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KGRvY3VtZW50KQogICAgICwgbV9iYWNraW5nKGJhY2tpbmcpCiAgICAgLCBtX3JlYWR5UHJv
bWlzZShtYWtlVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4oKnRoaXMsICZGb250RmFjZVNldDo6cmVh
ZHlQcm9taXNlUmVzb2x2ZSkpCisgICAgLCBtX2ZvbnRFdmVudE9ic2VydmVyKFt0aGlzXSAoQ1NT
Rm9udEZhY2VTZXQ6OkZvbnRFdmVudFR5cGVzJiYgZm9udEV2ZW50VHlwZXMpIHsgZm9udEV2ZW50
T2JzZXJ2ZWQoV1RGTW92ZShmb250RXZlbnRUeXBlcykpOyB9KQogewogICAgIGlmIChkb2N1bWVu
dC5mcmFtZSgpKQogICAgICAgICBtX2lzRG9jdW1lbnRMb2FkZWQgPSBkb2N1bWVudC5sb2FkRXZl
bnRGaW5pc2hlZCgpICYmICFkb2N1bWVudC5wcm9jZXNzaW5nTG9hZEV2ZW50KCk7CkBAIC03Niwx
MiArNzgsMTEgQEAgRm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0KERvY3VtZW50JiBkb2N1bWVudCwg
Q1NTRm9udEZhY2VTZXQmIGJhY2tpbmcpCiAgICAgaWYgKG1faXNEb2N1bWVudExvYWRlZCAmJiAh
YmFja2luZy5oYXNBY3RpdmVGb250RmFjZXMoKSkKICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJl
c29sdmUoKnRoaXMpOwogCi0gICAgbV9iYWNraW5nLT5hZGRDbGllbnQoKnRoaXMpOworICAgIG1f
YmFja2luZy0+YWRkRm9udEV2ZW50T2JzZXJ2ZXIobV9mb250RXZlbnRPYnNlcnZlcik7CiB9CiAK
IEZvbnRGYWNlU2V0Ojp+Rm9udEZhY2VTZXQoKQogewotICAgIG1fYmFja2luZy0+cmVtb3ZlQ2xp
ZW50KCp0aGlzKTsKIH0KIAogRm9udEZhY2VTZXQ6Okl0ZXJhdG9yOjpJdGVyYXRvcihGb250RmFj
ZVNldCYgc2V0KQpAQCAtMTkxLDIyICsxOTIsMTYgQEAgYXV0byBGb250RmFjZVNldDo6c3RhdHVz
KCkgY29uc3QgLT4gTG9hZFN0YXR1cwogICAgIHJldHVybiBMb2FkU3RhdHVzOjpMb2FkZWQ7CiB9
CiAKLXZvaWQgRm9udEZhY2VTZXQ6OnN0YXJ0ZWRMb2FkaW5nKCkKK3ZvaWQgRm9udEZhY2VTZXQ6
OmZvbnRFdmVudE9ic2VydmVkKENTU0ZvbnRGYWNlU2V0OjpGb250RXZlbnRUeXBlcyYmIGZvbnRF
dmVudFR5cGVzKQogewotICAgIC8vIEZJWE1FOiBGaXJlIGEgImxvYWRpbmciIGV2ZW50IGFzeW5j
aHJvbm91c2x5LgotfQotCi12b2lkIEZvbnRGYWNlU2V0Ojpkb2N1bWVudERpZEZpbmlzaExvYWRp
bmcoKQotewotICAgIG1faXNEb2N1bWVudExvYWRlZCA9IHRydWU7Ci0gICAgaWYgKCFtX2JhY2tp
bmctPmhhc0FjdGl2ZUZvbnRGYWNlcygpICYmICFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQo
KSkKLSAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwotfQotCi12b2lkIEZv
bnRGYWNlU2V0Ojpjb21wbGV0ZWRMb2FkaW5nKCkKLXsKLSAgICBpZiAobV9pc0RvY3VtZW50TG9h
ZGVkICYmICFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQoKSkKLSAgICAgICAgbV9yZWFkeVBy
b21pc2UtPnJlc29sdmUoKnRoaXMpOworICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0
b3IoW3RoaXNdKENTU0ZvbnRGYWNlU2V0OjpGYWNlRmluaXNoZWQmIGZhY2VGaW5pc2hlZCkgewor
ICAgICAgICB0aGlzLT5mYWNlRmluaXNoZWQoZmFjZUZpbmlzaGVkLmZvbnRGYWNlLCBmYWNlRmlu
aXNoZWQuc3RhdHVzKTsKKyAgICB9LCBbdGhpc10oQ1NTRm9udEZhY2VTZXQ6OlN0YXJ0ZWRMb2Fk
aW5nJikgeworICAgICAgICBzdGFydGVkTG9hZGluZygpOworICAgIH0sIFt0aGlzXShDU1NGb250
RmFjZVNldDo6Q29tcGxldGVkTG9hZGluZyYpIHsKKyAgICAgICAgY29tcGxldGVkTG9hZGluZygp
OworICAgIH0pOworICAgIFdURjo6dmlzaXQodmlzaXRvciwgZm9udEV2ZW50VHlwZXMpOwogfQog
CiB2b2lkIEZvbnRGYWNlU2V0OjpmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0Zv
bnRGYWNlOjpTdGF0dXMgbmV3U3RhdHVzKQpAQCAtMjM0LDYgKzIyOSwyNCBAQCB2b2lkIEZvbnRG
YWNlU2V0OjpmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0
dXMgbmV3U3RhdHVzKQogICAgIH0KIH0KIAordm9pZCBGb250RmFjZVNldDo6c3RhcnRlZExvYWRp
bmcoKQoreworICAgIC8vIEZJWE1FOiBGaXJlIGEgImxvYWRpbmciIGV2ZW50IGFzeW5jaHJvbm91
c2x5LgorfQorCit2b2lkIEZvbnRGYWNlU2V0Ojpkb2N1bWVudERpZEZpbmlzaExvYWRpbmcoKQor
eworICAgIG1faXNEb2N1bWVudExvYWRlZCA9IHRydWU7CisgICAgaWYgKCFtX2JhY2tpbmctPmhh
c0FjdGl2ZUZvbnRGYWNlcygpICYmICFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQoKSkKKyAg
ICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOworfQorCit2b2lkIEZvbnRGYWNl
U2V0Ojpjb21wbGV0ZWRMb2FkaW5nKCkKK3sKKyAgICBpZiAobV9pc0RvY3VtZW50TG9hZGVkICYm
ICFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQoKSkKKyAgICAgICAgbV9yZWFkeVByb21pc2Ut
PnJlc29sdmUoKnRoaXMpOworfQorCiBGb250RmFjZVNldCYgRm9udEZhY2VTZXQ6OnJlYWR5UHJv
bWlzZVJlc29sdmUoKQogewogICAgIHJldHVybiAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmgKaW5kZXggZTdlYWViNGE1MTJiYjZiY2ZkMDdhNmE5YzdkZTMzMWJjZDIzMTBmNi4uNTA3MjBk
ODkyMjY0NzI1M2Y2NzliZGM3YWEzMDJiYTA4MDg2NTFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
U2V0LmgKQEAgLTM4LDcgKzM4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3Mg
RE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazsKIAogY2xhc3MgRE9NRXhjZXB0aW9u
OwogCi1jbGFzcyBGb250RmFjZVNldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNl
U2V0PiwgcHJpdmF0ZSBDU1NGb250RmFjZVNldENsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgRm9udEZhY2VTZXQg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFjZVNldD4sIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEZvbnRGYWNlU2V0KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZvbnRG
YWNlU2V0PiBjcmVhdGUoRG9jdW1lbnQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4m
IGluaXRpYWxGYWNlcyk7CkBAIC05OCwxMCArOTgsMTAgQEAgcHJpdmF0ZToKICAgICBGb250RmFj
ZVNldChEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYpOwogICAgIEZv
bnRGYWNlU2V0KERvY3VtZW50JiwgQ1NTRm9udEZhY2VTZXQmKTsKIAotICAgIC8vIENTU0ZvbnRG
YWNlU2V0Q2xpZW50Ci0gICAgdm9pZCBzdGFydGVkTG9hZGluZygpIGZpbmFsOwotICAgIHZvaWQg
Y29tcGxldGVkTG9hZGluZygpIGZpbmFsOwotICAgIHZvaWQgZmFjZUZpbmlzaGVkKENTU0ZvbnRG
YWNlJiwgQ1NTRm9udEZhY2U6OlN0YXR1cykgZmluYWw7CisgICAgdm9pZCBmb250RXZlbnRPYnNl
cnZlZChDU1NGb250RmFjZVNldDo6Rm9udEV2ZW50VHlwZXMmJik7CisgICAgdm9pZCBmYWNlRmlu
aXNoZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzKTsKKyAgICB2b2lkIHN0YXJ0
ZWRMb2FkaW5nKCk7CisgICAgdm9pZCBjb21wbGV0ZWRMb2FkaW5nKCk7CiAKICAgICAvLyBBY3Rp
dmVET01PYmplY3QKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIkZvbnRGYWNlU2V0IjsgfQpAQCAtMTE5LDYgKzExOSw4IEBAIHByaXZh
dGU6CiAgICAgSGFzaE1hcDxSZWZQdHI8Rm9udEZhY2U+LCBWZWN0b3I8UmVmPFBlbmRpbmdQcm9t
aXNlPj4+IG1fcGVuZGluZ1Byb21pc2VzOwogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1f
cmVhZHlQcm9taXNlOwogCisgICAgQ1NTRm9udEZhY2VTZXQ6OkZvbnRFdmVudE9ic2VydmVyIG1f
Zm9udEV2ZW50T2JzZXJ2ZXI7CisKICAgICBib29sIG1faXNEb2N1bWVudExvYWRlZCB7IHRydWUg
fTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418579</attachid>
            <date>2021-01-27 14:01:04 -0800</date>
            <delta_ts>2021-01-27 15:45:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221019-20210127140103.patch</filename>
            <type>text/plain</type>
            <size>16862</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc2ZTRmMzRmYmQ0ZjEx
Y2U4ZjJjZWYxZWNkZjhmZmYxYTZjMTUwMC4uNTcxZmIxZmM5OWYwODNhZTlhOGIzMjhiMzZiM2Zm
Y2IwMTM2YTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTAxLTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlub3IgY2xl
YW51cCBpbiBDU1NGb250RmFjZVNldENsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3BsaXQgdXAgQ1NTRm9udEZhY2VTZXRDbGllbnQgaW50byB0
d28gcGllY2VzOgorICAgICAgICAtIENTU0ZvbnRGYWNlU2V0OjpGb250RXZlbnRDbGllbnQKKyAg
ICAgICAgLSBDU1NGb250RmFjZVNldDo6Rm9udE1vZGlmaWVkT2JzZXJ2ZXIKKworICAgICAgICBP
bmUgaXMgYSBDbGllbnQgYmVjYXVzZSBpdCdzIGEgc3RydWN0IHdpdGggMyBjYWxsYmFjayBtZXRo
b2RzIHRoYXQgdGFrZSBkaWZmZXJlbnQgYXJndW1lbnRzLgorICAgICAgICBUaGUgb3RoZXIgaXMg
YW4gb2JzZXJ2ZXIgYmVjYXVzZSBpdCdzIGp1c3QgYSBzaW5nbGUgY2FsbGJhY2sgbWV0aG9kIHRo
YXQgdGFrZXMgbm8gYXJndW1lbnRzCisgICAgICAgIGFuZCBoYXMgbm8gcmV0dXJuLgorCisgICAg
ICAgIEJvdGggb2YgdGhlc2UgdHlwZXMgYXJlIENhbk1ha2VXZWFrUHRyLCBzbyBsaWZldGltZSBp
cyBhdXRvbWF0aWNhbGx5IG1hbmFnZWQuCisKKyAgICAgICAgVGVzdDogV1RGX1dlYWtQdHIuTXVs
dGlwbGVJbmhlcml0YW5jZQorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjphZGRGb250TW9kaWZpZWRPYnNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6YWRkRm9udEV2ZW50Q2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjppbmNyZW1lbnRBY3RpdmVDb3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6ZGVjcmVtZW50QWN0aXZlQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZVNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU2V0Ojpmb250U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U2V0Ojpmb250UHJvcGVydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U2V0OjphZGRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VT
ZXQ6OnJlbW92ZUNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldENsaWVudDo6ZmFjZUZpbmlzaGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0Q2xpZW50Ojpmb250
TW9kaWZpZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXRDbGll
bnQ6OnN0YXJ0ZWRMb2FkaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU2V0Q2xpZW50Ojpjb21wbGV0ZWRMb2FkaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3Mv
Q1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6
Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Om1fdmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6On5DU1NGb250U2VsZWN0b3IpOgorICAgICAgICAq
IGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlU2V0Ojp+Rm9udEZhY2VTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2VTZXQ6OnN0YXJ0ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0
Ojpkb2N1bWVudERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VT
ZXQ6OmNvbXBsZXRlZExvYWRpbmcpOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5oOgorCiAy
MDIxLTAxLTIyICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEZpbmlzaCBpbnRyb2R1Y3Rpb24gb2YgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YTogcmVtb3ZlIHJlbWFpbmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggYjViY2QyMDY0NjNhYmViOTk2MmE5MGVlZWM2
NWNhYjJjOTIwOGRmOC4uNDhlOTRkMDY5NTBjNTFhZjhiZDBkMmYzMDZiZTlmMTFmM2VkMzhjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC01NywxNSArNTcsMTYgQEAg
Q1NTRm9udEZhY2VTZXQ6On5DU1NGb250RmFjZVNldCgpCiAgICAgfQogfQogCi12b2lkIENTU0Zv
bnRGYWNlU2V0OjphZGRDbGllbnQoQ1NTRm9udEZhY2VTZXRDbGllbnQmIGNsaWVudCkKK3ZvaWQg
Q1NTRm9udEZhY2VTZXQ6OmFkZEZvbnRNb2RpZmllZE9ic2VydmVyKGNvbnN0IEZvbnRNb2RpZmll
ZE9ic2VydmVyJiBmb250TW9kaWZpZWRPYnNlcnZlcikKIHsKLSAgICBtX2NsaWVudHMuYWRkKCZj
bGllbnQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9mb250TW9kaWZpZWRPYnNlcnZlcnMuYWRkKGZv
bnRNb2RpZmllZE9ic2VydmVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOwogfQogCi12b2lkIENTU0ZvbnRGYWNlU2V0OjpyZW1vdmVDbGllbnQoQ1NTRm9u
dEZhY2VTZXRDbGllbnQmIGNsaWVudCkKK3ZvaWQgQ1NTRm9udEZhY2VTZXQ6OmFkZEZvbnRFdmVu
dENsaWVudChjb25zdCBGb250RXZlbnRDbGllbnQmIGZvbnRFdmVudENsaWVudCkKIHsKLSAgICBB
U1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKLSAgICBtX2NsaWVudHMucmVtb3Zl
KCZjbGllbnQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9mb250RXZlbnRDbGllbnRzLmFkZChmb250
RXZlbnRDbGllbnQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmluY3JlbWVudEFjdGl2ZUNvdW50KCkKQEAg
LTczLDggKzc0LDggQEAgdm9pZCBDU1NGb250RmFjZVNldDo6aW5jcmVtZW50QWN0aXZlQ291bnQo
KQogICAgICsrbV9hY3RpdmVDb3VudDsKICAgICBpZiAobV9hY3RpdmVDb3VudCA9PSAxKSB7CiAg
ICAgICAgIG1fc3RhdHVzID0gU3RhdHVzOjpMb2FkaW5nOwotICAgICAgICBmb3IgKGF1dG8qIGNs
aWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgICAgIGNsaWVudC0+c3RhcnRlZExvYWRpbmcoKTsK
KyAgICAgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2ZvbnRFdmVudENsaWVudHMpCisgICAgICAg
ICAgICBjbGllbnQuc3RhcnRlZExvYWRpbmcoKTsKICAgICB9CiB9CiAKQEAgLTgzLDggKzg0LDgg
QEAgdm9pZCBDU1NGb250RmFjZVNldDo6ZGVjcmVtZW50QWN0aXZlQ291bnQoKQogICAgIC0tbV9h
Y3RpdmVDb3VudDsKICAgICBpZiAoIW1fYWN0aXZlQ291bnQpIHsKICAgICAgICAgbV9zdGF0dXMg
PSBTdGF0dXM6OkxvYWRlZDsKLSAgICAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMp
Ci0gICAgICAgICAgICBjbGllbnQtPmNvbXBsZXRlZExvYWRpbmcoKTsKKyAgICAgICAgZm9yIChh
dXRvJiBjbGllbnQgOiBtX2ZvbnRFdmVudENsaWVudHMpCisgICAgICAgICAgICBjbGllbnQuY29t
cGxldGVkTG9hZGluZygpOwogICAgIH0KIH0KIApAQCAtMTg0LDggKzE4NSw4IEBAIHZvaWQgQ1NT
Rm9udEZhY2VTZXQ6OmFkZChDU1NGb250RmFjZSYgZmFjZSkKIHsKICAgICBBU1NFUlQoIWhhc0Zh
Y2UoZmFjZSkpOwogCi0gICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAg
IGNsaWVudC0+Zm9udE1vZGlmaWVkKCk7CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fZm9u
dE1vZGlmaWVkT2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlcigpOwogCiAgICAgZmFjZS5hZGRD
bGllbnQoKnRoaXMpOwogICAgIG1fY2FjaGUuY2xlYXIoKTsKQEAgLTIzNSw4ICsyMzYsOCBAQCB2
b2lkIENTU0ZvbnRGYWNlU2V0OjpyZW1vdmUoY29uc3QgQ1NTRm9udEZhY2UmIGZhY2UpCiAKICAg
ICBtX2NhY2hlLmNsZWFyKCk7CiAKLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykK
LSAgICAgICAgY2xpZW50LT5mb250TW9kaWZpZWQoKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVy
IDogbV9mb250TW9kaWZpZWRPYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyKCk7CiAgICAgCiAg
ICAgaWYgKGZhY2UuZmFtaWxpZXMoKSAmJiBmYWNlLmZhbWlsaWVzKCkuaGFzVmFsdWUoKSkKICAg
ICAgICAgcmVtb3ZlRnJvbUZhY2VzTG9va3VwVGFibGUoZmFjZSwgKmZhY2UuZmFtaWxpZXMoKS52
YWx1ZSgpKTsKQEAgLTUwMiw4ICs1MDMsOCBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0Ojpmb250U3Rh
dGVDaGFuZ2VkKENTU0ZvbnRGYWNlJiBmYWNlLCBDU1NGb250RmFjZTo6U3RhdHVzIG9sZAogICAg
IH0KICAgICBpZiAobmV3U3RhdGUgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6U3VjY2VzcyB8fCBu
ZXdTdGF0ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpGYWlsdXJlKSB7CiAgICAgICAgIEFTU0VS
VChvbGRTdGF0ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpMb2FkaW5nIHx8IG9sZFN0YXRlID09
IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlRpbWVkT3V0KTsKLSAgICAgICAgZm9yIChhdXRvKiBjbGll
bnQgOiBtX2NsaWVudHMpCi0gICAgICAgICAgICBjbGllbnQtPmZhY2VGaW5pc2hlZChmYWNlLCBu
ZXdTdGF0ZSk7CisgICAgICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9mb250RXZlbnRDbGllbnRz
KQorICAgICAgICAgICAgY2xpZW50LmZhY2VGaW5pc2hlZChmYWNlLCBuZXdTdGF0ZSk7CiAgICAg
ICAgIGRlY3JlbWVudEFjdGl2ZUNvdW50KCk7CiAgICAgfQogfQpAQCAtNTE3LDggKzUxOCw4IEBA
IHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmZvbnRQcm9wZXJ0eUNoYW5nZWQoQ1NTRm9udEZhY2UmIGZh
Y2UsIENTU1ZhbHVlTGlzdCogb2xkRmFtCiAgICAgICAgIGFkZFRvRmFjZXNMb29rdXBUYWJsZShm
YWNlKTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAg
ICAgY2xpZW50LT5mb250TW9kaWZpZWQoKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9m
b250TW9kaWZpZWRPYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyKCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmgKaW5kZXggNjljMTg1NjhhMjkwNmQ3ZTMyNTRiYzkyNTA5
YmM3MWI2YjRlZWFhNy4uZjFkZjcwNjMyMTFiMTg4NWI2Y2I1OTZmNTdjNTczM2FmODUzNTcxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmgKQEAgLTI3LDcgKzI3LDEwIEBACiAKICNp
bmNsdWRlICJDU1NGb250RmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL09ic2VydmVyLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSwxNSArMzgs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNsYXNz
IEZvbnRGYWNlU2V0OwogCi1jbGFzcyBDU1NGb250RmFjZVNldENsaWVudCB7Ci1wdWJsaWM6Ci0g
ICAgdmlydHVhbCB+Q1NTRm9udEZhY2VTZXRDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVh
bCB2b2lkIGZhY2VGaW5pc2hlZChDU1NGb250RmFjZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMpIHsg
fTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9udE1vZGlmaWVkKCkgeyB9OwotICAgIHZpcnR1YWwgdm9p
ZCBzdGFydGVkTG9hZGluZygpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVkTG9hZGlu
ZygpIHsgfTsKLX07Ci0KIGNsYXNzIENTU0ZvbnRGYWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNv
dW50ZWQ8Q1NTRm9udEZhY2VTZXQ+LCBwdWJsaWMgQ1NTRm9udEZhY2U6OkNsaWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxDU1NGb250RmFjZVNldD4gY3JlYXRlKENTU0ZvbnRTZWxlY3Rv
ciogb3duaW5nRm9udFNlbGVjdG9yID0gbnVsbHB0cikKQEAgLTUyLDggKzQ2LDE2IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgfkNTU0ZvbnRGYWNlU2V0KCk7CiAKLSAgICB2b2lkIGFkZENsaWVudChD
U1NGb250RmFjZVNldENsaWVudCYpOwotICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENTU0ZvbnRGYWNl
U2V0Q2xpZW50Jik7CisgICAgdXNpbmcgRm9udE1vZGlmaWVkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2
b2lkKCk+OworICAgIHZvaWQgYWRkRm9udE1vZGlmaWVkT2JzZXJ2ZXIoY29uc3QgRm9udE1vZGlm
aWVkT2JzZXJ2ZXImKTsKKworICAgIHN0cnVjdCBGb250RXZlbnRDbGllbnQgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8Rm9udEV2ZW50Q2xpZW50PiB7CisgICAgICAgIHZpcnR1YWwgfkZvbnRFdmVu
dENsaWVudCgpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGZhY2VGaW5pc2hlZChD
U1NGb250RmFjZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0ZWRMb2FkaW5nKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVk
TG9hZGluZygpID0gMDsKKyAgICB9OworICAgIHZvaWQgYWRkRm9udEV2ZW50Q2xpZW50KGNvbnN0
IEZvbnRFdmVudENsaWVudCYpOwogCiAgICAgYm9vbCBoYXNGYWNlKGNvbnN0IENTU0ZvbnRGYWNl
JikgY29uc3Q7CiAgICAgc2l6ZV90IGZhY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjZXMu
c2l6ZSgpOyB9CkBAIC0xMTksNyArMTIxLDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0eWxl
UnVsZUZvbnRGYWNlKiwgQ1NTRm9udEZhY2UqPiBtX2NvbnN0aXR1ZW50Q1NTQ29ubmVjdGlvbnM7
CiAgICAgc2l6ZV90IG1fZmFjZXNQYXJ0aXRpb25JbmRleCB7IDAgfTsgLy8gQWxsIGVudHJpZXMg
aW4gbV9mYWNlcyBiZWZvcmUgdGhpcyBpbmRleCBhcmUgQ1NTLWNvbm5lY3RlZC4KICAgICBTdGF0
dXMgbV9zdGF0dXMgeyBTdGF0dXM6OkxvYWRlZCB9OwotICAgIEhhc2hTZXQ8Q1NTRm9udEZhY2VT
ZXRDbGllbnQqPiBtX2NsaWVudHM7CisgICAgV2Vha0hhc2hTZXQ8Rm9udE1vZGlmaWVkT2JzZXJ2
ZXI+IG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXJzOworICAgIFdlYWtIYXNoU2V0PEZvbnRFdmVudENs
aWVudD4gbV9mb250RXZlbnRDbGllbnRzOwogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBt
X293bmluZ0ZvbnRTZWxlY3RvcjsKICAgICB1bnNpZ25lZCBtX2FjdGl2ZUNvdW50IHsgMCB9Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggYzBiOWJkYjY0NzFi
NTE5YjJjNjgzMzAzM2JlM2FhZmE4ZjNhZDE2MS4uNDM0ZTRjY2NhYTIxMzdiMmVlZjY5OGUyMWI2
M2I2YmFjNWQ2YWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxl
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAg
LTY1LDEzICs2NSwxNCBAQCBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3RvcihEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCiAgICAgLCBtX2Rv
Y3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKICAgICAsIG1fY3NzRm9udEZhY2VTZXQoQ1NT
Rm9udEZhY2VTZXQ6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXIo
W3RoaXNdIHsgZm9udE1vZGlmaWVkKCk7IH0pCiAgICAgLCBtX2ZvbnRMb2FkaW5nVGltZXIoKnRo
aXMsICZDU1NGb250U2VsZWN0b3I6OmZvbnRMb2FkaW5nVGltZXJGaXJlZCkKICAgICAsIG1fdW5p
cXVlSWQoKytmb250U2VsZWN0b3JJZCkKICAgICAsIG1fdmVyc2lvbigwKQogewogICAgIEFTU0VS
VChtX2RvY3VtZW50KTsKICAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmFkZENsaWVudCgqdGhp
cyk7Ci0gICAgbV9jc3NGb250RmFjZVNldC0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2Nzc0Zv
bnRGYWNlU2V0LT5hZGRGb250TW9kaWZpZWRPYnNlcnZlcihtX2ZvbnRNb2RpZmllZE9ic2VydmVy
KTsKICAgICBMT0coRm9udHMsICJDU1NGb250U2VsZWN0b3IgJXAgY3RvciIsIHRoaXMpOwogCiAg
ICAgc3VzcGVuZElmTmVlZGVkKCk7CkBAIC04Miw3ICs4Myw2IEBAIENTU0ZvbnRTZWxlY3Rvcjo6
fkNTU0ZvbnRTZWxlY3RvcigpCiAgICAgTE9HKEZvbnRzLCAiQ1NTRm9udFNlbGVjdG9yICVwIGR0
b3IiLCB0aGlzKTsKIAogICAgIGNsZWFyRG9jdW1lbnQoKTsKLSAgICBtX2Nzc0ZvbnRGYWNlU2V0
LT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkucmVtb3Zl
Q2xpZW50KCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4
IGRkNTcwYzYxODhlY2E2YmQyMWNiOTgwMDg0MDQ5MWZlZWJkODBjNjcuLjg4MGEwZGNlZDU0Mjdl
NGMzNTgzN2VhOWM0MjI5NTIzYTg5ZjdjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250U2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQ2FjaGVkRm9udDsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgU3R5bGVSdWxlRm9udEZhY2U7CiAKLWNsYXNzIENTU0ZvbnRTZWxlY3RvciBmaW5h
bCA6IHB1YmxpYyBGb250U2VsZWN0b3IsIHB1YmxpYyBDU1NGb250RmFjZVNldENsaWVudCwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4sIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QgeworY2xhc3MgQ1NTRm9udFNlbGVjdG9yIGZpbmFsIDogcHVibGljIEZvbnRTZWxlY3Rvciwg
cHVibGljIENhbk1ha2VXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4sIHB1YmxpYyBBY3RpdmVET01P
YmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTRm9udFNlbGVjdG9yPiBjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgb3Bwb3J0dW5pc3RpY2FsbHlTdGFydEZvbnREYXRhVVJMTG9hZGluZyhjb25zdCBG
b250Q2FzY2FkZURlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KSBmaW5hbDsK
IAotICAgIHZvaWQgZm9udE1vZGlmaWVkKCkgZmluYWw7CisgICAgdm9pZCBmb250TW9kaWZpZWQo
KTsKIAogICAgIHZvaWQgZm9udExvYWRpbmdUaW1lckZpcmVkKCk7CiAKQEAgLTEyMyw2ICsxMjMs
OCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UmVmUHRyPENTU0ZvbnRGYWNlPj4gbV9jc3NDb25u
ZWN0aW9uc1Bvc3NpYmx5VG9SZW1vdmU7CiAgICAgSGFzaFNldDxSZWZQdHI8U3R5bGVSdWxlRm9u
dEZhY2U+PiBtX2Nzc0Nvbm5lY3Rpb25zRW5jb3VudGVyZWREdXJpbmdCdWlsZDsKIAorICAgIENT
U0ZvbnRGYWNlU2V0OjpGb250TW9kaWZpZWRPYnNlcnZlciBtX2ZvbnRNb2RpZmllZE9ic2VydmVy
OworCiAgICAgVGltZXIgbV9mb250TG9hZGluZ1RpbWVyOwogICAgIGJvb2wgbV9pc0ZvbnRMb2Fk
aW5nU3VzcGVuZGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5k
ZXggNWFhNTg1MjdlOTFjZDZjNTY0N2Y5ZmM5ZTk0YjQyYjJiNTAzNDRiNC4uMmFjOTU3NjE3ZGYw
MzYxNDRlMTdjMzJhMDM3MjRlNTQ0ZDA5ZmZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQu
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIEZvbnRGYWNlU2V0OjpGb250RmFjZVNldChEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYgaW5pCiAgICAgLCBtX2Jh
Y2tpbmcoQ1NTRm9udEZhY2VTZXQ6OmNyZWF0ZSgpKQogICAgICwgbV9yZWFkeVByb21pc2UobWFr
ZVVuaXF1ZVJlZjxSZWFkeVByb21pc2U+KCp0aGlzLCAmRm9udEZhY2VTZXQ6OnJlYWR5UHJvbWlz
ZVJlc29sdmUpKQogewotICAgIG1fYmFja2luZy0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2Jh
Y2tpbmctPmFkZEZvbnRFdmVudENsaWVudCgqdGhpcyk7CiAgICAgZm9yIChhdXRvJiBmYWNlIDog
aW5pdGlhbEZhY2VzKQogICAgICAgICBhZGQoKmZhY2UpOwogfQpAQCAtNzYsMTIgKzc2LDExIEBA
IEZvbnRGYWNlU2V0OjpGb250RmFjZVNldChEb2N1bWVudCYgZG9jdW1lbnQsIENTU0ZvbnRGYWNl
U2V0JiBiYWNraW5nKQogICAgIGlmIChtX2lzRG9jdW1lbnRMb2FkZWQgJiYgIWJhY2tpbmcuaGFz
QWN0aXZlRm9udEZhY2VzKCkpCiAgICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKCp0aGlz
KTsKIAotICAgIG1fYmFja2luZy0+YWRkQ2xpZW50KCp0aGlzKTsKKyAgICBtX2JhY2tpbmctPmFk
ZEZvbnRFdmVudENsaWVudCgqdGhpcyk7CiB9CiAKIEZvbnRGYWNlU2V0Ojp+Rm9udEZhY2VTZXQo
KQogewotICAgIG1fYmFja2luZy0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KIAogRm9udEZhY2VT
ZXQ6Okl0ZXJhdG9yOjpJdGVyYXRvcihGb250RmFjZVNldCYgc2V0KQpAQCAtMTkxLDI0ICsxOTAs
NiBAQCBhdXRvIEZvbnRGYWNlU2V0OjpzdGF0dXMoKSBjb25zdCAtPiBMb2FkU3RhdHVzCiAgICAg
cmV0dXJuIExvYWRTdGF0dXM6OkxvYWRlZDsKIH0KIAotdm9pZCBGb250RmFjZVNldDo6c3RhcnRl
ZExvYWRpbmcoKQotewotICAgIC8vIEZJWE1FOiBGaXJlIGEgImxvYWRpbmciIGV2ZW50IGFzeW5j
aHJvbm91c2x5LgotfQotCi12b2lkIEZvbnRGYWNlU2V0Ojpkb2N1bWVudERpZEZpbmlzaExvYWRp
bmcoKQotewotICAgIG1faXNEb2N1bWVudExvYWRlZCA9IHRydWU7Ci0gICAgaWYgKCFtX2JhY2tp
bmctPmhhc0FjdGl2ZUZvbnRGYWNlcygpICYmICFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQo
KSkKLSAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwotfQotCi12b2lkIEZv
bnRGYWNlU2V0Ojpjb21wbGV0ZWRMb2FkaW5nKCkKLXsKLSAgICBpZiAobV9pc0RvY3VtZW50TG9h
ZGVkICYmICFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQoKSkKLSAgICAgICAgbV9yZWFkeVBy
b21pc2UtPnJlc29sdmUoKnRoaXMpOwotfQotCiB2b2lkIEZvbnRGYWNlU2V0OjpmYWNlRmluaXNo
ZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0dXMgbmV3U3RhdHVzKQogewog
ICAgIGlmICghZmFjZS5leGlzdGluZ1dyYXBwZXIoKSkKQEAgLTIzNCw2ICsyMTUsMjQgQEAgdm9p
ZCBGb250RmFjZVNldDo6ZmFjZUZpbmlzaGVkKENTU0ZvbnRGYWNlJiBmYWNlLCBDU1NGb250RmFj
ZTo6U3RhdHVzIG5ld1N0YXR1cykKICAgICB9CiB9CiAKK3ZvaWQgRm9udEZhY2VTZXQ6OnN0YXJ0
ZWRMb2FkaW5nKCkKK3sKKyAgICAvLyBGSVhNRTogRmlyZSBhICJsb2FkaW5nIiBldmVudCBhc3lu
Y2hyb25vdXNseS4KK30KKwordm9pZCBGb250RmFjZVNldDo6ZG9jdW1lbnREaWRGaW5pc2hMb2Fk
aW5nKCkKK3sKKyAgICBtX2lzRG9jdW1lbnRMb2FkZWQgPSB0cnVlOworICAgIGlmICghbV9iYWNr
aW5nLT5oYXNBY3RpdmVGb250RmFjZXMoKSAmJiAhbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVk
KCkpCisgICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKCp0aGlzKTsKK30KKwordm9pZCBG
b250RmFjZVNldDo6Y29tcGxldGVkTG9hZGluZygpCit7CisgICAgaWYgKG1faXNEb2N1bWVudExv
YWRlZCAmJiAhbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpCisgICAgICAgIG1fcmVhZHlQ
cm9taXNlLT5yZXNvbHZlKCp0aGlzKTsKK30KKwogRm9udEZhY2VTZXQmIEZvbnRGYWNlU2V0Ojpy
ZWFkeVByb21pc2VSZXNvbHZlKCkKIHsKICAgICByZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZVNldC5oCmluZGV4IGU3ZWFlYjRhNTEyYmI2YmNmZDA3YTZhOWM3ZGUzMzFiY2QyMzEwZjYu
LjJmNjk2ODE0OWI4MDg0YjZlNjNjMWYyNTNmYzY2ZDQ4NWVlNmY3OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5oCkBAIC0zOCw3ICszOCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+
IGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CiAKIGNsYXNzIERPTUV4
Y2VwdGlvbjsKIAotY2xhc3MgRm9udEZhY2VTZXQgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxG
b250RmFjZVNldD4sIHByaXZhdGUgQ1NTRm9udEZhY2VTZXRDbGllbnQsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIEZvbnRG
YWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwcml2YXRlIENT
U0ZvbnRGYWNlU2V0OjpGb250RXZlbnRDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKEZvbnRGYWNlU2V0KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZvbnRGYWNlU2V0PiBj
cmVhdGUoRG9jdW1lbnQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mIGluaXRpYWxG
YWNlcyk7CkBAIC05OCwxMCArOTgsMTAgQEAgcHJpdmF0ZToKICAgICBGb250RmFjZVNldChEb2N1
bWVudCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYpOwogICAgIEZvbnRGYWNlU2V0
KERvY3VtZW50JiwgQ1NTRm9udEZhY2VTZXQmKTsKIAotICAgIC8vIENTU0ZvbnRGYWNlU2V0Q2xp
ZW50CisgICAgLy8gQ1NTRm9udEZhY2VTZXQ6OkZvbnRFdmVudENsaWVudAorICAgIHZvaWQgZmFj
ZUZpbmlzaGVkKENTU0ZvbnRGYWNlJiwgQ1NTRm9udEZhY2U6OlN0YXR1cykgZmluYWw7CiAgICAg
dm9pZCBzdGFydGVkTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgY29tcGxldGVkTG9hZGluZygp
IGZpbmFsOwotICAgIHZvaWQgZmFjZUZpbmlzaGVkKENTU0ZvbnRGYWNlJiwgQ1NTRm9udEZhY2U6
OlN0YXR1cykgZmluYWw7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICBjb25zdCBjaGFy
KiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZvbnRGYWNlU2V0
IjsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDE3MDVlN2NiODJmZjhiZGY2YzU4MTA0YmQxNDY2MTcyMWIxY2RhYzQuLmVmZjg1MTQ4YzUyMGQz
Y2U2NjU3NmI5NmFhNjcxMDViNWFmMGVlNjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMS0yNyAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pbm9yIGNsZWFu
dXAgaW4gQ1NTRm9udEZhY2VTZXRDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMTAxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNdWx0aXBsZUluaGVyaXRhbmNlRGVyaXZlZDo6bWVv
d0NhbGxlZCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpNdWx0aXBsZUluaGVyaXRh
bmNlRGVyaXZlZDo6d29vZkNhbGxlZCBjb25zdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKwogMjAyMS0wMS0yNSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW2V3c10gQ29tbWl0IFF1ZXVlIHNob3VsZCByZXRyeSB0aGUgYnVpbGQgd2hl
biB1cGRhdGUtd29ya2luZy1kaXJlY3Rvcnkgc3RlcCBmYWlscwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9XZWFrUHRyLmNwcAppbmRleCAyZmRkOTNhNGY4ODY2MjMyY2RkOWE3ZDVjNGE0
ZmU2MTJkNWU5NjdjLi45MWVmZjA2MGE5N2Q3MTQyYmIzMTlkZTZlYTFiYzYwMmQ4Zjc5NWRkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XZWFrUHRyLmNwcApAQCAtNzgwLDQgKzc4
MCw2MyBAQCBURVNUKFdURl9XZWFrUHRyLCBXZWFrSGFzaFNldENvbXB1dGVTaXplKQogICAgIH0K
IH0KIAorY2xhc3MgTXVsdGlwbGVJbmhlcml0YW5jZUJhc2UxIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPE11bHRpcGxlSW5oZXJpdGFuY2VCYXNlMT4geworcHVibGljOgorICAgIHZpcnR1YWwgdm9p
ZCBtZW93KCkgPSAwOworCisgICAgaW50IGR1bW15OyAvLyBQcmV2ZW50IGVtcHR5IGJhc2UgY2xh
c3Mgb3B0aW1pemF0aW9uLCB0byBtYWtlIHRlc3RpbmcgbW9yZSBpbnRlcmVzdGluZy4KK307CisK
K2NsYXNzIE11bHRpcGxlSW5oZXJpdGFuY2VCYXNlMiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxN
dWx0aXBsZUluaGVyaXRhbmNlQmFzZTI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgd29v
ZigpID0gMDsKKworICAgIGludCBkdW1teTsgLy8gUHJldmVudCBlbXB0eSBiYXNlIGNsYXNzIG9w
dGltaXphdGlvbiwgdG8gbWFrZSB0ZXN0aW5nIG1vcmUgaW50ZXJlc3RpbmcuCit9OworCitjbGFz
cyBNdWx0aXBsZUluaGVyaXRhbmNlRGVyaXZlZCA6IHB1YmxpYyBNdWx0aXBsZUluaGVyaXRhbmNl
QmFzZTEsIHB1YmxpYyBNdWx0aXBsZUluaGVyaXRhbmNlQmFzZTIgeworcHVibGljOgorICAgIGJv
b2wgbWVvd0NhbGxlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9tZW93Q2FsbGVk
OworICAgIH0KKyAgICBib29sIHdvb2ZDYWxsZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fd29vZkNhbGxlZDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBtZW93KCkgZmlu
YWwKKyAgICB7CisgICAgICAgIG1fbWVvd0NhbGxlZCA9IHRydWU7CisgICAgfQorCisgICAgdm9p
ZCB3b29mKCkgZmluYWwKKyAgICB7CisgICAgICAgIG1fd29vZkNhbGxlZCA9IHRydWU7CisgICAg
fQorCisgICAgYm9vbCBtX21lb3dDYWxsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV93b29mQ2Fs
bGVkIHsgZmFsc2UgfTsKK307CisKK1RFU1QoV1RGX1dlYWtQdHIsIE11bHRpcGxlSW5oZXJpdGFu
Y2UpCit7CisgICAgV2Vha0hhc2hTZXQ8TXVsdGlwbGVJbmhlcml0YW5jZUJhc2UxPiBiYXNlMVNl
dDsKKyAgICBXZWFrSGFzaFNldDxNdWx0aXBsZUluaGVyaXRhbmNlQmFzZTI+IGJhc2UyU2V0Owor
ICAgIHsKKyAgICAgICAgTXVsdGlwbGVJbmhlcml0YW5jZURlcml2ZWQgZGVyaXZlZDsKKyAgICAg
ICAgYmFzZTFTZXQuYWRkKGRlcml2ZWQpOworICAgICAgICBiYXNlMlNldC5hZGQoZGVyaXZlZCk7
CisgICAgICAgIGZvciAoTXVsdGlwbGVJbmhlcml0YW5jZUJhc2UxJiBiYXNlMSA6IGJhc2UxU2V0
KQorICAgICAgICAgICAgYmFzZTEubWVvdygpOworICAgICAgICBmb3IgKE11bHRpcGxlSW5oZXJp
dGFuY2VCYXNlMiYgYmFzZTIgOiBiYXNlMlNldCkKKyAgICAgICAgICAgIGJhc2UyLndvb2YoKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoZGVyaXZlZC5tZW93Q2FsbGVkKCkpOworICAgICAgICBFWFBF
Q1RfVFJVRShkZXJpdmVkLndvb2ZDYWxsZWQoKSk7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGJh
c2UxU2V0LmNvbXB1dGVzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUoYmFzZTJTZXQuY29tcHV0
ZXNFbXB0eSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418592</attachid>
            <date>2021-01-27 15:45:19 -0800</date>
            <delta_ts>2021-01-28 20:06:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221019-20210127154519.patch</filename>
            <type>text/plain</type>
            <size>16971</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc2ZTRmMzRmYmQ0ZjEx
Y2U4ZjJjZWYxZWNkZjhmZmYxYTZjMTUwMC4uNTcxZmIxZmM5OWYwODNhZTlhOGIzMjhiMzZiM2Zm
Y2IwMTM2YTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTAxLTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlub3IgY2xl
YW51cCBpbiBDU1NGb250RmFjZVNldENsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3BsaXQgdXAgQ1NTRm9udEZhY2VTZXRDbGllbnQgaW50byB0
d28gcGllY2VzOgorICAgICAgICAtIENTU0ZvbnRGYWNlU2V0OjpGb250RXZlbnRDbGllbnQKKyAg
ICAgICAgLSBDU1NGb250RmFjZVNldDo6Rm9udE1vZGlmaWVkT2JzZXJ2ZXIKKworICAgICAgICBP
bmUgaXMgYSBDbGllbnQgYmVjYXVzZSBpdCdzIGEgc3RydWN0IHdpdGggMyBjYWxsYmFjayBtZXRo
b2RzIHRoYXQgdGFrZSBkaWZmZXJlbnQgYXJndW1lbnRzLgorICAgICAgICBUaGUgb3RoZXIgaXMg
YW4gb2JzZXJ2ZXIgYmVjYXVzZSBpdCdzIGp1c3QgYSBzaW5nbGUgY2FsbGJhY2sgbWV0aG9kIHRo
YXQgdGFrZXMgbm8gYXJndW1lbnRzCisgICAgICAgIGFuZCBoYXMgbm8gcmV0dXJuLgorCisgICAg
ICAgIEJvdGggb2YgdGhlc2UgdHlwZXMgYXJlIENhbk1ha2VXZWFrUHRyLCBzbyBsaWZldGltZSBp
cyBhdXRvbWF0aWNhbGx5IG1hbmFnZWQuCisKKyAgICAgICAgVGVzdDogV1RGX1dlYWtQdHIuTXVs
dGlwbGVJbmhlcml0YW5jZQorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjphZGRGb250TW9kaWZpZWRPYnNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6YWRkRm9udEV2ZW50Q2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjppbmNyZW1lbnRBY3RpdmVDb3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6ZGVjcmVtZW50QWN0aXZlQ291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmFkZCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGb250RmFjZVNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU2V0Ojpmb250U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U2V0Ojpmb250UHJvcGVydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNl
U2V0OjphZGRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VT
ZXQ6OnJlbW92ZUNsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldENsaWVudDo6ZmFjZUZpbmlzaGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0Q2xpZW50Ojpmb250
TW9kaWZpZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXRDbGll
bnQ6OnN0YXJ0ZWRMb2FkaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRG
YWNlU2V0Q2xpZW50Ojpjb21wbGV0ZWRMb2FkaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3Mv
Q1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6
Q1NTRm9udFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Om1fdmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6On5DU1NGb250U2VsZWN0b3IpOgorICAgICAgICAq
IGNzcy9DU1NGb250U2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlU2V0Ojp+Rm9udEZhY2VTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2VTZXQ6OnN0YXJ0ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0
Ojpkb2N1bWVudERpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VT
ZXQ6OmNvbXBsZXRlZExvYWRpbmcpOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5oOgorCiAy
MDIxLTAxLTIyICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEZpbmlzaCBpbnRyb2R1Y3Rpb24gb2YgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YTogcmVtb3ZlIHJlbWFpbmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggYjViY2QyMDY0NjNhYmViOTk2MmE5MGVlZWM2
NWNhYjJjOTIwOGRmOC4uNzI5YmUwMzNmY2ZiODJiMDM4OTBhMmE4MjkyNDliNzU3ZTY5MjRmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC01NywxNSArNTcsMTYgQEAg
Q1NTRm9udEZhY2VTZXQ6On5DU1NGb250RmFjZVNldCgpCiAgICAgfQogfQogCi12b2lkIENTU0Zv
bnRGYWNlU2V0OjphZGRDbGllbnQoQ1NTRm9udEZhY2VTZXRDbGllbnQmIGNsaWVudCkKK3ZvaWQg
Q1NTRm9udEZhY2VTZXQ6OmFkZEZvbnRNb2RpZmllZE9ic2VydmVyKGNvbnN0IEZvbnRNb2RpZmll
ZE9ic2VydmVyJiBmb250TW9kaWZpZWRPYnNlcnZlcikKIHsKLSAgICBtX2NsaWVudHMuYWRkKCZj
bGllbnQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9mb250TW9kaWZpZWRPYnNlcnZlcnMuYWRkKGZv
bnRNb2RpZmllZE9ic2VydmVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOwogfQogCi12b2lkIENTU0ZvbnRGYWNlU2V0OjpyZW1vdmVDbGllbnQoQ1NTRm9u
dEZhY2VTZXRDbGllbnQmIGNsaWVudCkKK3ZvaWQgQ1NTRm9udEZhY2VTZXQ6OmFkZEZvbnRFdmVu
dENsaWVudChjb25zdCBGb250RXZlbnRDbGllbnQmIGZvbnRFdmVudENsaWVudCkKIHsKLSAgICBB
U1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKLSAgICBtX2NsaWVudHMucmVtb3Zl
KCZjbGllbnQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9mb250RXZlbnRDbGllbnRzLmFkZChmb250
RXZlbnRDbGllbnQpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRy
eSk7CiB9CiAKIHZvaWQgQ1NTRm9udEZhY2VTZXQ6OmluY3JlbWVudEFjdGl2ZUNvdW50KCkKQEAg
LTczLDggKzc0LDkgQEAgdm9pZCBDU1NGb250RmFjZVNldDo6aW5jcmVtZW50QWN0aXZlQ291bnQo
KQogICAgICsrbV9hY3RpdmVDb3VudDsKICAgICBpZiAobV9hY3RpdmVDb3VudCA9PSAxKSB7CiAg
ICAgICAgIG1fc3RhdHVzID0gU3RhdHVzOjpMb2FkaW5nOwotICAgICAgICBmb3IgKGF1dG8qIGNs
aWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgICAgIGNsaWVudC0+c3RhcnRlZExvYWRpbmcoKTsK
KyAgICAgICAgbV9mb250RXZlbnRDbGllbnRzLmZvckVhY2goW10gKGF1dG8mIGNsaWVudCkgewor
ICAgICAgICAgICAgY2xpZW50LnN0YXJ0ZWRMb2FkaW5nKCk7CisgICAgICAgIH0pOwogICAgIH0K
IH0KIApAQCAtODMsOCArODUsOSBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0OjpkZWNyZW1lbnRBY3Rp
dmVDb3VudCgpCiAgICAgLS1tX2FjdGl2ZUNvdW50OwogICAgIGlmICghbV9hY3RpdmVDb3VudCkg
ewogICAgICAgICBtX3N0YXR1cyA9IFN0YXR1czo6TG9hZGVkOwotICAgICAgICBmb3IgKGF1dG8q
IGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgICAgIGNsaWVudC0+Y29tcGxldGVkTG9hZGlu
ZygpOworICAgICAgICBtX2ZvbnRFdmVudENsaWVudHMuZm9yRWFjaChbXSAoYXV0byYgY2xpZW50
KSB7CisgICAgICAgICAgICBjbGllbnQuY29tcGxldGVkTG9hZGluZygpOworICAgICAgICB9KTsK
ICAgICB9CiB9CiAKQEAgLTE4NCw4ICsxODcsOSBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0OjphZGQo
Q1NTRm9udEZhY2UmIGZhY2UpCiB7CiAgICAgQVNTRVJUKCFoYXNGYWNlKGZhY2UpKTsKIAotICAg
IGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQotICAgICAgICBjbGllbnQtPmZvbnRNb2Rp
ZmllZCgpOworICAgIG1fZm9udE1vZGlmaWVkT2JzZXJ2ZXJzLmZvckVhY2goW10gKGF1dG8mIG9i
c2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyKCk7CisgICAgfSk7CiAKICAgICBmYWNlLmFkZENs
aWVudCgqdGhpcyk7CiAgICAgbV9jYWNoZS5jbGVhcigpOwpAQCAtMjM1LDggKzIzOSw5IEBAIHZv
aWQgQ1NTRm9udEZhY2VTZXQ6OnJlbW92ZShjb25zdCBDU1NGb250RmFjZSYgZmFjZSkKIAogICAg
IG1fY2FjaGUuY2xlYXIoKTsKIAotICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRzKQot
ICAgICAgICBjbGllbnQtPmZvbnRNb2RpZmllZCgpOworICAgIG1fZm9udE1vZGlmaWVkT2JzZXJ2
ZXJzLmZvckVhY2goW10gKGF1dG8mIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyKCk7Cisg
ICAgfSk7CiAgICAgCiAgICAgaWYgKGZhY2UuZmFtaWxpZXMoKSAmJiBmYWNlLmZhbWlsaWVzKCku
aGFzVmFsdWUoKSkKICAgICAgICAgcmVtb3ZlRnJvbUZhY2VzTG9va3VwVGFibGUoZmFjZSwgKmZh
Y2UuZmFtaWxpZXMoKS52YWx1ZSgpKTsKQEAgLTUwMiw4ICs1MDcsOSBAQCB2b2lkIENTU0ZvbnRG
YWNlU2V0Ojpmb250U3RhdGVDaGFuZ2VkKENTU0ZvbnRGYWNlJiBmYWNlLCBDU1NGb250RmFjZTo6
U3RhdHVzIG9sZAogICAgIH0KICAgICBpZiAobmV3U3RhdGUgPT0gQ1NTRm9udEZhY2U6OlN0YXR1
czo6U3VjY2VzcyB8fCBuZXdTdGF0ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpGYWlsdXJlKSB7
CiAgICAgICAgIEFTU0VSVChvbGRTdGF0ZSA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpMb2FkaW5n
IHx8IG9sZFN0YXRlID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlRpbWVkT3V0KTsKLSAgICAgICAg
Zm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgICAgICBjbGllbnQtPmZhY2VG
aW5pc2hlZChmYWNlLCBuZXdTdGF0ZSk7CisgICAgICAgIG1fZm9udEV2ZW50Q2xpZW50cy5mb3JF
YWNoKFsmXSAoYXV0byYgY2xpZW50KSB7CisgICAgICAgICAgICBjbGllbnQuZmFjZUZpbmlzaGVk
KGZhY2UsIG5ld1N0YXRlKTsKKyAgICAgICAgfSk7CiAgICAgICAgIGRlY3JlbWVudEFjdGl2ZUNv
dW50KCk7CiAgICAgfQogfQpAQCAtNTE3LDggKzUyMyw5IEBAIHZvaWQgQ1NTRm9udEZhY2VTZXQ6
OmZvbnRQcm9wZXJ0eUNoYW5nZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU1ZhbHVlTGlzdCogb2xk
RmFtCiAgICAgICAgIGFkZFRvRmFjZXNMb29rdXBUYWJsZShmYWNlKTsKICAgICB9CiAKLSAgICBm
b3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgY2xpZW50LT5mb250TW9kaWZp
ZWQoKTsKKyAgICBtX2ZvbnRNb2RpZmllZE9ic2VydmVycy5mb3JFYWNoKFtdIChhdXRvJiBvYnNl
cnZlcikgeworICAgICAgICBvYnNlcnZlcigpOworICAgIH0pOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNldC5oCmluZGV4IDY5YzE4NTY4YTI5MDZkN2UzMjU0YmM5MjUwOWJjNzFi
NmI0ZWVhYTcuLmYxZGY3MDYzMjExYjE4ODViNmNiNTk2ZjU3YzU3MzNhZjg1MzU3MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCkBAIC0yNyw3ICsyNywxMCBAQAogCiAjaW5jbHVk
ZSAiQ1NTRm9udEZhY2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMTUgKzM4LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiBjbGFzcyBGb250
RmFjZVNldDsKIAotY2xhc3MgQ1NTRm9udEZhY2VTZXRDbGllbnQgewotcHVibGljOgotICAgIHZp
cnR1YWwgfkNTU0ZvbnRGYWNlU2V0Q2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9p
ZCBmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzKSB7IH07Ci0g
ICAgdmlydHVhbCB2b2lkIGZvbnRNb2RpZmllZCgpIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRlZExvYWRpbmcoKSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlZExvYWRpbmcoKSB7
IH07Ci19OwotCiBjbGFzcyBDU1NGb250RmFjZVNldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PENTU0ZvbnRGYWNlU2V0PiwgcHVibGljIENTU0ZvbnRGYWNlOjpDbGllbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8Q1NTRm9udEZhY2VTZXQ+IGNyZWF0ZShDU1NGb250U2VsZWN0b3IqIG93
bmluZ0ZvbnRTZWxlY3RvciA9IG51bGxwdHIpCkBAIC01Miw4ICs0NiwxNiBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIH5DU1NGb250RmFjZVNldCgpOwogCi0gICAgdm9pZCBhZGRDbGllbnQoQ1NTRm9u
dEZhY2VTZXRDbGllbnQmKTsKLSAgICB2b2lkIHJlbW92ZUNsaWVudChDU1NGb250RmFjZVNldENs
aWVudCYpOworICAgIHVzaW5nIEZvbnRNb2RpZmllZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgp
PjsKKyAgICB2b2lkIGFkZEZvbnRNb2RpZmllZE9ic2VydmVyKGNvbnN0IEZvbnRNb2RpZmllZE9i
c2VydmVyJik7CisKKyAgICBzdHJ1Y3QgRm9udEV2ZW50Q2xpZW50IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPEZvbnRFdmVudENsaWVudD4geworICAgICAgICB2aXJ0dWFsIH5Gb250RXZlbnRDbGll
bnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBmYWNlRmluaXNoZWQoQ1NTRm9u
dEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
dGFydGVkTG9hZGluZygpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNvbXBsZXRlZExvYWRp
bmcoKSA9IDA7CisgICAgfTsKKyAgICB2b2lkIGFkZEZvbnRFdmVudENsaWVudChjb25zdCBGb250
RXZlbnRDbGllbnQmKTsKIAogICAgIGJvb2wgaGFzRmFjZShjb25zdCBDU1NGb250RmFjZSYpIGNv
bnN0OwogICAgIHNpemVfdCBmYWNlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2ZhY2VzLnNpemUo
KTsgfQpAQCAtMTE5LDcgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHlsZVJ1bGVG
b250RmFjZSosIENTU0ZvbnRGYWNlKj4gbV9jb25zdGl0dWVudENTU0Nvbm5lY3Rpb25zOwogICAg
IHNpemVfdCBtX2ZhY2VzUGFydGl0aW9uSW5kZXggeyAwIH07IC8vIEFsbCBlbnRyaWVzIGluIG1f
ZmFjZXMgYmVmb3JlIHRoaXMgaW5kZXggYXJlIENTUy1jb25uZWN0ZWQuCiAgICAgU3RhdHVzIG1f
c3RhdHVzIHsgU3RhdHVzOjpMb2FkZWQgfTsKLSAgICBIYXNoU2V0PENTU0ZvbnRGYWNlU2V0Q2xp
ZW50Kj4gbV9jbGllbnRzOworICAgIFdlYWtIYXNoU2V0PEZvbnRNb2RpZmllZE9ic2VydmVyPiBt
X2ZvbnRNb2RpZmllZE9ic2VydmVyczsKKyAgICBXZWFrSGFzaFNldDxGb250RXZlbnRDbGllbnQ+
IG1fZm9udEV2ZW50Q2xpZW50czsKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9vd25p
bmdGb250U2VsZWN0b3I7CiAgICAgdW5zaWduZWQgbV9hY3RpdmVDb3VudCB7IDAgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IGMwYjliZGI2NDcxYjUxOWIy
YzY4MzMwMzNiZTNhYWZhOGYzYWQxNjEuLjQzNGU0Y2NjYWEyMTM3YjJlZWY2OThlMjFiNjNiNmJh
YzVkNmFmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC02NSwx
MyArNjUsMTQgQEAgQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3IoRG9jdW1lbnQmIGRv
Y3VtZW50KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQogICAgICwgbV9kb2N1bWVu
dChtYWtlV2Vha1B0cihkb2N1bWVudCkpCiAgICAgLCBtX2Nzc0ZvbnRGYWNlU2V0KENTU0ZvbnRG
YWNlU2V0OjpjcmVhdGUodGhpcykpCisgICAgLCBtX2ZvbnRNb2RpZmllZE9ic2VydmVyKFt0aGlz
XSB7IGZvbnRNb2RpZmllZCgpOyB9KQogICAgICwgbV9mb250TG9hZGluZ1RpbWVyKCp0aGlzLCAm
Q1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGluZ1RpbWVyRmlyZWQpCiAgICAgLCBtX3VuaXF1ZUlk
KCsrZm9udFNlbGVjdG9ySWQpCiAgICAgLCBtX3ZlcnNpb24oMCkKIHsKICAgICBBU1NFUlQobV9k
b2N1bWVudCk7CiAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5hZGRDbGllbnQoKnRoaXMpOwot
ICAgIG1fY3NzRm9udEZhY2VTZXQtPmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9jc3NGb250RmFj
ZVNldC0+YWRkRm9udE1vZGlmaWVkT2JzZXJ2ZXIobV9mb250TW9kaWZpZWRPYnNlcnZlcik7CiAg
ICAgTE9HKEZvbnRzLCAiQ1NTRm9udFNlbGVjdG9yICVwIGN0b3IiLCB0aGlzKTsKIAogICAgIHN1
c3BlbmRJZk5lZWRlZCgpOwpAQCAtODIsNyArODMsNiBAQCBDU1NGb250U2VsZWN0b3I6On5DU1NG
b250U2VsZWN0b3IoKQogICAgIExPRyhGb250cywgIkNTU0ZvbnRTZWxlY3RvciAlcCBkdG9yIiwg
dGhpcyk7CiAKICAgICBjbGVhckRvY3VtZW50KCk7Ci0gICAgbV9jc3NGb250RmFjZVNldC0+cmVt
b3ZlQ2xpZW50KCp0aGlzKTsKICAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZUNsaWVu
dCgqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2Vs
ZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBkZDU3
MGM2MTg4ZWNhNmJkMjFjYjk4MDA4NDA0OTFmZWViZDgwYzY3Li44ODBhMGRjZWQ1NDI3ZTRjMzU4
MzdlYTljNDIyOTUyM2E4OWY3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5o
CkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIENhY2hlZEZvbnQ7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIFN0eWxlUnVsZUZvbnRGYWNlOwogCi1jbGFzcyBDU1NGb250U2VsZWN0b3IgZmluYWwgOiBw
dWJsaWMgRm9udFNlbGVjdG9yLCBwdWJsaWMgQ1NTRm9udEZhY2VTZXRDbGllbnQsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsK
K2NsYXNzIENTU0ZvbnRTZWxlY3RvciBmaW5hbCA6IHB1YmxpYyBGb250U2VsZWN0b3IsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gY3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCkKICAgICB7CkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIG9wcG9ydHVuaXN0aWNhbGx5U3RhcnRGb250RGF0YVVSTExvYWRpbmcoY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkgZmluYWw7CiAKLSAg
ICB2b2lkIGZvbnRNb2RpZmllZCgpIGZpbmFsOworICAgIHZvaWQgZm9udE1vZGlmaWVkKCk7CiAK
ICAgICB2b2lkIGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpOwogCkBAIC0xMjMsNiArMTIzLDggQEAg
cHJpdmF0ZToKICAgICBIYXNoU2V0PFJlZlB0cjxDU1NGb250RmFjZT4+IG1fY3NzQ29ubmVjdGlv
bnNQb3NzaWJseVRvUmVtb3ZlOwogICAgIEhhc2hTZXQ8UmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNl
Pj4gbV9jc3NDb25uZWN0aW9uc0VuY291bnRlcmVkRHVyaW5nQnVpbGQ7CiAKKyAgICBDU1NGb250
RmFjZVNldDo6Rm9udE1vZGlmaWVkT2JzZXJ2ZXIgbV9mb250TW9kaWZpZWRPYnNlcnZlcjsKKwog
ICAgIFRpbWVyIG1fZm9udExvYWRpbmdUaW1lcjsKICAgICBib29sIG1faXNGb250TG9hZGluZ1N1
c3BlbmRlZCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCmluZGV4IDVh
YTU4NTI3ZTkxY2Q2YzU2NDdmOWZjOWU5NGI0MmIyYjUwMzQ0YjQuLjJhYzk1NzYxN2RmMDM2MTQ0
ZTE3YzMyYTAzNzI0ZTU0NGQwOWZmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcApA
QCAtNjAsNyArNjAsNyBAQCBGb250RmFjZVNldDo6Rm9udEZhY2VTZXQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mIGluaQogICAgICwgbV9iYWNraW5n
KENTU0ZvbnRGYWNlU2V0OjpjcmVhdGUoKSkKICAgICAsIG1fcmVhZHlQcm9taXNlKG1ha2VVbmlx
dWVSZWY8UmVhZHlQcm9taXNlPigqdGhpcywgJkZvbnRGYWNlU2V0OjpyZWFkeVByb21pc2VSZXNv
bHZlKSkKIHsKLSAgICBtX2JhY2tpbmctPmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9iYWNraW5n
LT5hZGRGb250RXZlbnRDbGllbnQoKnRoaXMpOwogICAgIGZvciAoYXV0byYgZmFjZSA6IGluaXRp
YWxGYWNlcykKICAgICAgICAgYWRkKCpmYWNlKTsKIH0KQEAgLTc2LDEyICs3NiwxMSBAQCBGb250
RmFjZVNldDo6Rm9udEZhY2VTZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBDU1NGb250RmFjZVNldCYg
YmFja2luZykKICAgICBpZiAobV9pc0RvY3VtZW50TG9hZGVkICYmICFiYWNraW5nLmhhc0FjdGl2
ZUZvbnRGYWNlcygpKQogICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7CiAK
LSAgICBtX2JhY2tpbmctPmFkZENsaWVudCgqdGhpcyk7CisgICAgbV9iYWNraW5nLT5hZGRGb250
RXZlbnRDbGllbnQoKnRoaXMpOwogfQogCiBGb250RmFjZVNldDo6fkZvbnRGYWNlU2V0KCkKIHsK
LSAgICBtX2JhY2tpbmctPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKIEZvbnRGYWNlU2V0OjpJ
dGVyYXRvcjo6SXRlcmF0b3IoRm9udEZhY2VTZXQmIHNldCkKQEAgLTE5MSwyNCArMTkwLDYgQEAg
YXV0byBGb250RmFjZVNldDo6c3RhdHVzKCkgY29uc3QgLT4gTG9hZFN0YXR1cwogICAgIHJldHVy
biBMb2FkU3RhdHVzOjpMb2FkZWQ7CiB9CiAKLXZvaWQgRm9udEZhY2VTZXQ6OnN0YXJ0ZWRMb2Fk
aW5nKCkKLXsKLSAgICAvLyBGSVhNRTogRmlyZSBhICJsb2FkaW5nIiBldmVudCBhc3luY2hyb25v
dXNseS4KLX0KLQotdm9pZCBGb250RmFjZVNldDo6ZG9jdW1lbnREaWRGaW5pc2hMb2FkaW5nKCkK
LXsKLSAgICBtX2lzRG9jdW1lbnRMb2FkZWQgPSB0cnVlOwotICAgIGlmICghbV9iYWNraW5nLT5o
YXNBY3RpdmVGb250RmFjZXMoKSAmJiAhbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpCi0g
ICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKCp0aGlzKTsKLX0KLQotdm9pZCBGb250RmFj
ZVNldDo6Y29tcGxldGVkTG9hZGluZygpCi17Ci0gICAgaWYgKG1faXNEb2N1bWVudExvYWRlZCAm
JiAhbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpCi0gICAgICAgIG1fcmVhZHlQcm9taXNl
LT5yZXNvbHZlKCp0aGlzKTsKLX0KLQogdm9pZCBGb250RmFjZVNldDo6ZmFjZUZpbmlzaGVkKENT
U0ZvbnRGYWNlJiBmYWNlLCBDU1NGb250RmFjZTo6U3RhdHVzIG5ld1N0YXR1cykKIHsKICAgICBp
ZiAoIWZhY2UuZXhpc3RpbmdXcmFwcGVyKCkpCkBAIC0yMzQsNiArMjE1LDI0IEBAIHZvaWQgRm9u
dEZhY2VTZXQ6OmZhY2VGaW5pc2hlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0
YXR1cyBuZXdTdGF0dXMpCiAgICAgfQogfQogCit2b2lkIEZvbnRGYWNlU2V0OjpzdGFydGVkTG9h
ZGluZygpCit7CisgICAgLy8gRklYTUU6IEZpcmUgYSAibG9hZGluZyIgZXZlbnQgYXN5bmNocm9u
b3VzbHkuCit9CisKK3ZvaWQgRm9udEZhY2VTZXQ6OmRvY3VtZW50RGlkRmluaXNoTG9hZGluZygp
Cit7CisgICAgbV9pc0RvY3VtZW50TG9hZGVkID0gdHJ1ZTsKKyAgICBpZiAoIW1fYmFja2luZy0+
aGFzQWN0aXZlRm9udEZhY2VzKCkgJiYgIW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxlZCgpKQor
ICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7Cit9CisKK3ZvaWQgRm9udEZh
Y2VTZXQ6OmNvbXBsZXRlZExvYWRpbmcoKQoreworICAgIGlmIChtX2lzRG9jdW1lbnRMb2FkZWQg
JiYgIW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxlZCgpKQorICAgICAgICBtX3JlYWR5UHJvbWlz
ZS0+cmVzb2x2ZSgqdGhpcyk7Cit9CisKIEZvbnRGYWNlU2V0JiBGb250RmFjZVNldDo6cmVhZHlQ
cm9taXNlUmVzb2x2ZSgpCiB7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuaAppbmRleCBlN2VhZWI0YTUxMmJiNmJjZmQwN2E2YTljN2RlMzMxYmNkMjMxMGY2Li4yZjY5
NjgxNDliODA4NGI2ZTYzYzFmMjUzZmM2NmQ0ODVlZTZmNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuaApAQCAtMzgsNyArMzgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFz
cyBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrOwogCiBjbGFzcyBET01FeGNlcHRp
b247CiAKLWNsYXNzIEZvbnRGYWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZh
Y2VTZXQ+LCBwcml2YXRlIENTU0ZvbnRGYWNlU2V0Q2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBGb250RmFjZVNl
dCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNlU2V0PiwgcHJpdmF0ZSBDU1NGb250
RmFjZVNldDo6Rm9udEV2ZW50Q2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChG
b250RmFjZVNldCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGb250RmFjZVNldD4gY3JlYXRl
KERvY3VtZW50JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiBpbml0aWFsRmFjZXMp
OwpAQCAtOTgsMTAgKzk4LDEwIEBAIHByaXZhdGU6CiAgICAgRm9udEZhY2VTZXQoRG9jdW1lbnQm
LCBjb25zdCBWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4mKTsKICAgICBGb250RmFjZVNldChEb2N1
bWVudCYsIENTU0ZvbnRGYWNlU2V0Jik7CiAKLSAgICAvLyBDU1NGb250RmFjZVNldENsaWVudAor
ICAgIC8vIENTU0ZvbnRGYWNlU2V0OjpGb250RXZlbnRDbGllbnQKKyAgICB2b2lkIGZhY2VGaW5p
c2hlZChDU1NGb250RmFjZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMpIGZpbmFsOwogICAgIHZvaWQg
c3RhcnRlZExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIGNvbXBsZXRlZExvYWRpbmcoKSBmaW5h
bDsKLSAgICB2b2lkIGZhY2VGaW5pc2hlZChDU1NGb250RmFjZSYsIENTU0ZvbnRGYWNlOjpTdGF0
dXMpIGZpbmFsOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGb250RmFjZVNldCI7IH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNzA1
ZTdjYjgyZmY4YmRmNmM1ODEwNGJkMTQ2NjE3MjFiMWNkYWM0Li5lZmY4NTE0OGM1MjBkM2NlNjY1
NzZiOTZhYTY3MTA1YjVhZjBlZTY2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDEtMjcgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBNaW5vciBjbGVhbnVwIGlu
IENTU0ZvbnRGYWNlU2V0Q2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjEwMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6TXVsdGlwbGVJbmhlcml0YW5jZURlcml2ZWQ6Om1lb3dDYWxs
ZWQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6TXVsdGlwbGVJbmhlcml0YW5jZURl
cml2ZWQ6Ondvb2ZDYWxsZWQgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMjEtMDEtMjUgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtld3NdIENvbW1pdCBRdWV1ZSBzaG91bGQgcmV0cnkgdGhlIGJ1aWxkIHdoZW4gdXBk
YXRlLXdvcmtpbmctZGlyZWN0b3J5IHN0ZXAgZmFpbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1dlYWtQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvV2Vha1B0ci5jcHAKaW5kZXggMmZkZDkzYTRmODg2NjIzMmNkZDlhN2Q1YzRhNGZlNjEy
ZDVlOTY3Yy4uOTFlZmYwNjBhOTdkNzE0MmJiMzE5ZGU2ZWExYmM2MDJkOGY3OTVkZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKQEAgLTc4MCw0ICs3ODAsNjMg
QEAgVEVTVChXVEZfV2Vha1B0ciwgV2Vha0hhc2hTZXRDb21wdXRlU2l6ZSkKICAgICB9CiB9CiAK
K2NsYXNzIE11bHRpcGxlSW5oZXJpdGFuY2VCYXNlMSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxN
dWx0aXBsZUluaGVyaXRhbmNlQmFzZTE+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgbWVv
dygpID0gMDsKKworICAgIGludCBkdW1teTsgLy8gUHJldmVudCBlbXB0eSBiYXNlIGNsYXNzIG9w
dGltaXphdGlvbiwgdG8gbWFrZSB0ZXN0aW5nIG1vcmUgaW50ZXJlc3RpbmcuCit9OworCitjbGFz
cyBNdWx0aXBsZUluaGVyaXRhbmNlQmFzZTIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TXVsdGlw
bGVJbmhlcml0YW5jZUJhc2UyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHdvb2YoKSA9
IDA7CisKKyAgICBpbnQgZHVtbXk7IC8vIFByZXZlbnQgZW1wdHkgYmFzZSBjbGFzcyBvcHRpbWl6
YXRpb24sIHRvIG1ha2UgdGVzdGluZyBtb3JlIGludGVyZXN0aW5nLgorfTsKKworY2xhc3MgTXVs
dGlwbGVJbmhlcml0YW5jZURlcml2ZWQgOiBwdWJsaWMgTXVsdGlwbGVJbmhlcml0YW5jZUJhc2Ux
LCBwdWJsaWMgTXVsdGlwbGVJbmhlcml0YW5jZUJhc2UyIHsKK3B1YmxpYzoKKyAgICBib29sIG1l
b3dDYWxsZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWVvd0NhbGxlZDsKKyAg
ICB9CisgICAgYm9vbCB3b29mQ2FsbGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3dvb2ZDYWxsZWQ7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgbWVvdygpIGZpbmFsCisg
ICAgeworICAgICAgICBtX21lb3dDYWxsZWQgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgd29v
ZigpIGZpbmFsCisgICAgeworICAgICAgICBtX3dvb2ZDYWxsZWQgPSB0cnVlOworICAgIH0KKwor
ICAgIGJvb2wgbV9tZW93Q2FsbGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fd29vZkNhbGxlZCB7
IGZhbHNlIH07Cit9OworCitURVNUKFdURl9XZWFrUHRyLCBNdWx0aXBsZUluaGVyaXRhbmNlKQor
eworICAgIFdlYWtIYXNoU2V0PE11bHRpcGxlSW5oZXJpdGFuY2VCYXNlMT4gYmFzZTFTZXQ7Cisg
ICAgV2Vha0hhc2hTZXQ8TXVsdGlwbGVJbmhlcml0YW5jZUJhc2UyPiBiYXNlMlNldDsKKyAgICB7
CisgICAgICAgIE11bHRpcGxlSW5oZXJpdGFuY2VEZXJpdmVkIGRlcml2ZWQ7CisgICAgICAgIGJh
c2UxU2V0LmFkZChkZXJpdmVkKTsKKyAgICAgICAgYmFzZTJTZXQuYWRkKGRlcml2ZWQpOworICAg
ICAgICBmb3IgKE11bHRpcGxlSW5oZXJpdGFuY2VCYXNlMSYgYmFzZTEgOiBiYXNlMVNldCkKKyAg
ICAgICAgICAgIGJhc2UxLm1lb3coKTsKKyAgICAgICAgZm9yIChNdWx0aXBsZUluaGVyaXRhbmNl
QmFzZTImIGJhc2UyIDogYmFzZTJTZXQpCisgICAgICAgICAgICBiYXNlMi53b29mKCk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGRlcml2ZWQubWVvd0NhbGxlZCgpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoZGVyaXZlZC53b29mQ2FsbGVkKCkpOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShiYXNlMVNl
dC5jb21wdXRlc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKGJhc2UyU2V0LmNvbXB1dGVzRW1w
dHkoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>