<?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>141726</bug_id>
          
          <creation_ts>2015-02-17 14:40:51 -0800</creation_ts>
          <short_desc>Access FontCache global instance via singleton() static member function</short_desc>
          <delta_ts>2015-02-18 12:05:34 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1069953</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-17 14:40:51 -0800</bug_when>
    <thetext>Access FontCache global instance via singleton() static member function, as per coding style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069969</commentid>
    <comment_count>1</comment_count>
      <attachid>246773</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-17 15:54:21 -0800</bug_when>
    <thetext>Created attachment 246773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069985</commentid>
    <comment_count>2</comment_count>
      <attachid>246780</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-17 16:44:45 -0800</bug_when>
    <thetext>Created attachment 246780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069986</commentid>
    <comment_count>3</comment_count>
      <attachid>246781</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-17 16:53:36 -0800</bug_when>
    <thetext>Created attachment 246781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070036</commentid>
    <comment_count>4</comment_count>
      <attachid>246781</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-02-17 21:15:27 -0800</bug_when>
    <thetext>Comment on attachment 246781
Patch

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

We also need to update the Symbol Ordering Flags file Source/WebCore/WebCore.order. Did you intend to omit the list of changed functions from each ChangeLog entry?

&gt; Source/WebCore/platform/graphics/FontGlyphs.cpp:40
&gt; +    : m_cachedPrimaryFont(nullptr)

Would it make sense to use in-class initialization for this instance variable?

&gt; Source/WebCore/platform/graphics/FontGlyphs.cpp:48
&gt; +    : m_cachedPrimaryFont(nullptr)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070037</commentid>
    <comment_count>5</comment_count>
      <attachid>246781</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-17 21:18:06 -0800</bug_when>
    <thetext>Comment on attachment 246781
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/FontGlyphs.cpp:40
&gt;&gt; +    : m_cachedPrimaryFont(nullptr)
&gt; 
&gt; Would it make sense to use in-class initialization for this instance variable?

I don&apos;t know what&apos;s the policy for this. I like in-class initialization when this means we can get rid of the explicit constructor. However, if we need an explicit constructor, using also in-class initialization means we initialize members in 2 places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070038</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-17 21:20:31 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 246781 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=246781&amp;action=review
&gt; 
&gt; We also need to update the Symbol Ordering Flags file
&gt; Source/WebCore/WebCore.order.

Is this some very recent policy change? I was told not long ago that I should not update that file.

&gt; Did you intend to omit the list of changed
&gt; functions from each ChangeLog entry?

Yes, I was told keeping them makes little sense unless you add per method changelogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070178</commentid>
    <comment_count>7</comment_count>
      <attachid>246781</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-18 12:05:24 -0800</bug_when>
    <thetext>Comment on attachment 246781
Patch

Clearing flags on attachment: 246781

Committed r180281: &lt;http://trac.webkit.org/changeset/180281&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070180</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-18 12:05:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246773</attachid>
            <date>2015-02-17 15:54:21 -0800</date>
            <delta_ts>2015-02-17 16:44:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141726-20150217155414.patch</filename>
            <type>text/plain</type>
            <size>26252</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWViZjNjYzVmZDVlMWUw
OTY0NjQ4NTQ4ZGE2ZDU2YzhhOWNjZGQ1OS4uMmZiNGY0NDJkMGEwM2YyOTE0MWJiODVjYjNkZDUw
YTZjODI0YWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDE1LTAyLTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQWNjZXNzIEZvbnRDYWNoZSBn
bG9iYWwgaW5zdGFuY2UgdmlhIHNpbmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTcyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2VzcyBGb250
Q2FjaGUgZ2xvYmFsIGluc3RhbmNlIHZpYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0
aW9uLAorICAgICAgICBhcyBwZXIgY29kaW5nIHN0eWxlLgorCisyMDE1LTAyLTE3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgQWNjZXNzIE1lbW9yeVByZXNzdXJl
SGFuZGxlciBnbG9iYWwgaW5zdGFuY2UgdmlhIGEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBm
dW5jdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxNjkxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlMGQwZWUwYWQzOGI3ZDliOGJhOGY5YTQzMzll
NzdjNWVkYzBkNjY3Li5kOTg2OGIxYmRiY2Q3YmJiMWJiOGJjNWU1YmMwNDE4ODIyMTcxZTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTUtMDItMTcgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBBY2Nlc3MgRm9udENhY2hlIGdsb2JhbCBp
bnN0YW5jZSB2aWEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNzI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXNzIEZvbnRDYWNoZSBn
bG9iYWwgaW5zdGFuY2UgdmlhIHNpbmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24sCisg
ICAgICAgIGFzIHBlciBjb2Rpbmcgc3R5bGUuCisKKzIwMTUtMDItMTcgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBBY2Nlc3MgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
IGdsb2JhbCBpbnN0YW5jZSB2aWEgYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9u
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE2OTEK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IDViYWY4OWY4MTk4ZmUyZjUwZDc3ZTU4Y2RjNDRlMWRiY2Vl
Yzc0Y2IuLjkzNjUwYWRjZjEyNGI0OTBmYmY2OTJlOTNkY2NlZGRmYmJiOWRkOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFjY2VzcyBGb250Q2FjaGUgZ2xvYmFsIGluc3RhbmNl
IHZpYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3MgRm9udENhY2hlIGdsb2JhbCBp
bnN0YW5jZSB2aWEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAg
YXMgcGVyIGNvZGluZyBzdHlsZS4KKwogMjAxNS0wMi0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdA
Y3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHNvbWUg
dW5uZWNlc3NhcnkgSW5zcGVjdG9yIHByZWZpeGVzIGZyb20gY2xhc3MgbmFtZXMgaW4gSW5zcGVj
dG9yIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYwNGMxYTljYWRlYmIxMmI4Yzk0OGFjNTc3N2Vl
NGNlNTlmY2JjYzQuLjBhYzZhYzc3Y2JhYWZjMDM5MDFkNWIyMGZjMmNlZDg2MzlhMzBhMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAogMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCisgICAgICAgIEFjY2VzcyBGb250Q2FjaGUgZ2xvYmFsIGluc3RhbmNl
IHZpYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3MgRm9udENhY2hlIGdsb2JhbCBp
bnN0YW5jZSB2aWEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAg
YXMgcGVyIGNvZGluZyBzdHlsZS4KKworMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCiAgICAgICAgIEFjY2VzcyBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgZ2xvYmFs
IGluc3RhbmNlIHZpYSBhIHNpbmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTY5MQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCA0M2YwNTlkMGY3NTMzNTky
MjAzNjA0ZDgxZjQ1NDBlNmNkODkyODE0Li43NWJmZDgxZDk5ZGViYWNjNTc1ZGNmNjc2YjIyN2Jm
MzViNTY2ZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAg
LTEwNSw3ICsxMDUsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwogewogICAgIC8vIElmIHRo
ZSBmb250IGhhc24ndCBsb2FkZWQgb3IgYW4gZXJyb3Igb2NjdXJyZWQsIHRoZW4gd2UndmUgZ290
IG5vdGhpbmcuCiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9mb250CiAjaWYgRU5BQkxFKFNWR19GT05U
UykKQEAgLTExNCw3ICsxMTQsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwogICAgICkgewog
ICAgICAgICAvLyBXZSdyZSBsb2NhbC4gSnVzdCByZXR1cm4gYSBGb250IGZyb20gdGhlIG5vcm1h
bCBjYWNoZS4KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjaGVjayBhbHRlcm5hdGUgZm9u
dCBmYW1pbHkgbmFtZXMgaGVyZSwgc28gcGFzcyB0cnVlIGFzIHRoZSBjaGVja2luZ0FsdGVybmF0
ZU5hbWUgcGFyYW1ldGVyLgotICAgICAgICByZXR1cm4gZm9udENhY2hlKCkuZm9udEZvckZhbWls
eShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5nLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5n
LCB0cnVlKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBoYXNoS2V5ID0gKGZvbnREZXNjcmlwdGlv
bi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkgPDwgNSB8IGZvbnREZXNjcmlwdGlvbi53aWR0aFZh
cmlhbnQoKSA8PCAzCkBAIC0xNjMsNyArMTYzLDcgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNl
U291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28K
ICAgICAgICAgLy8gYW5kIHRoZSBsb2FkZXIgbWF5IGludm9rZSBhcmJpdHJhcnkgZGVsZWdhdGUg
b3IgZXZlbnQgaGFuZGxlciBjb2RlLgogICAgICAgICBmb250U2VsZWN0b3ItPmJlZ2luTG9hZGlu
Z0ZvbnRTb29uKG1fZm9udC5nZXQoKSk7CiAKLSAgICAgICAgUmVmPEZvbnQ+IHBsYWNlaG9sZGVy
Rm9udCA9IGZvbnRDYWNoZSgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udERlc2NyaXB0aW9u
KTsKKyAgICAgICAgUmVmPEZvbnQ+IHBsYWNlaG9sZGVyRm9udCA9IEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkubGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pOwogICAgICAgICBS
ZWY8Rm9udD4gcGxhY2Vob2xkZXJGb250Q29weUluTG9hZGluZ1N0YXRlID0gRm9udDo6Y3JlYXRl
KHBsYWNlaG9sZGVyRm9udC0+cGxhdGZvcm1EYXRhKCksIHRydWUsIHRydWUpOwogICAgICAgICBy
ZXR1cm4gV1RGOjptb3ZlKHBsYWNlaG9sZGVyRm9udENvcHlJbkxvYWRpbmdTdGF0ZSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA4MmMwZWI1OGVmODNi
NmI3NjEwNjAyNzBlNjMwNDFlNTliZGQ1ZTlhLi4xMDRhZTcwNjdiMmZjZGQ5YTlmZDg2ZDVmZmIx
NjU5Y2Y0MGE4Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAt
NzAsMTMgKzcwLDEzIEBAIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKERvY3VtZW50
JiBkb2N1bWVudCkKICAgICAvLyBzZWVtIHRvIGJlIGFueSBzdWNoIGd1YXJhbnRlZS4KIAogICAg
IEFTU0VSVChtX2RvY3VtZW50KTsKLSAgICBmb250Q2FjaGUoKS5hZGRDbGllbnQodGhpcyk7Cisg
ICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5hZGRDbGllbnQodGhpcyk7CiB9CiAKIENTU0ZvbnRT
ZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiB7CiAgICAgY2xlYXJEb2N1bWVudCgpOwotICAg
IGZvbnRDYWNoZSgpLnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBGb250Q2FjaGU6OnNpbmdsZXRv
bigpLnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAogYm9vbCBDU1NGb250U2VsZWN0b3I6OmlzRW1w
dHkoKSBjb25zdApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRG
b250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAg
ICAgICAgIEFTU0VSVCghbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmNvbnRhaW5zKGZhbWls
eU5hbWUpKTsKIAogICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBsb2NhbGx5SW5zdGFsbGVk
Rm9udHNUcmFpdHNNYXNrczsKLSAgICAgICAgICAgIGZvbnRDYWNoZSgpLmdldFRyYWl0c0luRmFt
aWx5KGZhbWlseU5hbWUsIGxvY2FsbHlJbnN0YWxsZWRGb250c1RyYWl0c01hc2tzKTsKKyAgICAg
ICAgICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2V0VHJhaXRzSW5GYW1pbHkoZmFtaWx5TmFt
ZSwgbG9jYWxseUluc3RhbGxlZEZvbnRzVHJhaXRzTWFza3MpOwogICAgICAgICAgICAgaWYgKHVu
c2lnbmVkIG51bUxvY2FsbHlJbnN0YWxsZWRGYWNlcyA9IGxvY2FsbHlJbnN0YWxsZWRGb250c1Ry
YWl0c01hc2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZmFtaWx5TG9jYWxseUlu
c3RhbGxlZEZhY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNl
Pj4+KCk7CiAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6
Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgogICAg
IGlmICghZmFjZSkgewogICAgICAgICBpZiAoIXJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QpCiAg
ICAgICAgICAgICBmYW1pbHlGb3JMb29rdXAgPSByZXNvbHZlR2VuZXJpY0ZhbWlseShtX2RvY3Vt
ZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOwotICAgICAgICByZXR1cm4gRm9udFJh
bmdlcyhmb250Q2FjaGUoKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5Rm9y
TG9va3VwKSk7CisgICAgICAgIHJldHVybiBGb250UmFuZ2VzKEZvbnRDYWNoZTo6c2luZ2xldG9u
KCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbWlseUZvckxvb2t1cCkpOwogICAg
IH0KIAogICAgIHJldHVybiBmYWNlLT5mb250UmFuZ2VzKGZvbnREZXNjcmlwdGlvbik7CkBAIC02
MTcsMTMgKzYxNywxMyBAQCBQYXNzUmVmUHRyPEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJh
Y2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzYwogICAgIEFTU0VSVF9VTlVT
RUQoaW5kZXgsICFpbmRleCk7CiAKICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IG1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CiAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3Mt
PmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocygpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZm9udENhY2hlKCkuZm9udEZvckZh
bWlseShmb250RGVzY3JpcHRpb24sIHNldHRpbmdzLT5waWN0b2dyYXBoRm9udEZhbWlseSgpKTsK
KyAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNj
cmlwdGlvbiwgc2V0dGluZ3MtPnBpY3RvZ3JhcGhGb250RmFtaWx5KCkpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRl
eCBkNzNhZTk3MjQ0NzMyNDU1NDZmNzZhYTUwNGRhMTRhYmVhMDYwMWJmLi43YzkzMjkzZGIwYWUz
NzdhMjhlNGQ4NjAzNjE2MjAxZDBjYzI5YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VOb25jcml0aWNhbE1lbW9yeSgpCiB7CiAgICAg
ewogICAgICAgICBSZWxpZWZMb2dnZXIgbG9nKCJQdXJnZSBpbmFjdGl2ZSBGb250RGF0YSIpOwot
ICAgICAgICBmb250Q2FjaGUoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICAgICAgRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKICAgICB9CiAKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGUyN2Zl
OTVlYWI2NzJkYjFhODY3NWRlYTQ2NjFlMThiZDNiNzQ2MTEuLjhlMjEzOGEyNDM5OTkyNzhlZjA0
NDE1MGU1ZDlhNWMxMzRjYzliM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3RlbUZh
bGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udEQKICAg
ICAgICAgICAgIGNvZGVVbml0c0xlbmd0aCA9IDI7CiAgICAgICAgIH0KIAotICAgICAgICBmYWxs
YmFja0ZvbnQgPSBmb250Q2FjaGUoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3Jp
cHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBjb2RlVW5pdHMsIGNvZGVVbml0c0xlbmd0
aCkuZ2V0KCk7CisgICAgICAgIGZhbGxiYWNrRm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCku
c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCB0aGlzLCBpc0ZvclBsYXRm
b3JtRm9udCwgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpLmdldCgpOwogICAgICAgICBpZiAo
ZmFsbGJhY2tGb250KQogICAgICAgICAgICAgZmFsbGJhY2tGb250LT5tX2lzVXNlZEluU3lzdGVt
RmFsbGJhY2tDYWNoZSA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMDJkM2RkYWRmNGYwNmIzMzlmYmViOTdhZWYz
MGI5MzNkY2ZiZTY1Ny4uZDRmYmIyMWM3ZDVjODc3NDNiODg1Mzg1Y2FkYTBiMjAwNDYyOWI5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRm9udENhY2hlJiBmb250Q2FjaGUoKQorRm9udENhY2hlJiBGb250Q2FjaGU6OnNpbmds
ZXRvbigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYWNoZT4gZ2xvYmFsRm9u
dENhY2hlOwogICAgIHJldHVybiBnbG9iYWxGb250Q2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDJkZmM5ZmJkN2VhMTI4YWQyMThlYzQx
YWQwN2U1ZTk3ZjZlZTc2MmMuLjcyYzAwYzVmYjI5OTE4ODRlOWI4YTQyYThlMWYxYjEzNzczNjlh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBA
IC0xMDcsNyArMTA3LDcgQEAgY2xhc3MgRm9udENhY2hlIHsKIAogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZvbnRDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IGZyaWVuZCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBGb250Q2FjaGUmIHNpbmdsZXRvbigpOwogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgaW1wbGVt
ZW50ZWQgYnkgdGhlIHBsYXRmb3JtLgogICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0Zv
ckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgRm9udCogb3JpZ2luYWxG
b250RGF0YSwgYm9vbCBpc1BsYXRmb3JtRm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGlu
dCBsZW5ndGgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBG
b250Q2FjaGUoKTsKLSAgICB+Rm9udENhY2hlKCk7CisgICAgfkZvbnRDYWNoZSgpID0gZGVsZXRl
OwogCiAgICAgdm9pZCBwdXJnZVRpbWVyRmlyZWQoKTsKIApAQCAtMTg0LDkgKzE4NCw2IEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZvbnQ7CiB9OwogCi0vLyBHZXQgdGhlIGdsb2JhbCBm
b250Q2FjaGUuCi1XRUJDT1JFX0VYUE9SVCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOwotCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEdseXBocy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhz
LmNwcAppbmRleCA4MzljYWM1N2NmMmM1NWRlNThmMzMzYmRjNjU3NDU5MjQ3MmJlMmViLi5iMjBk
MGVkNWNkZGQyZDY0ZjFiMTZjNWRiYjI3NTJhYzBkNTRiYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcApAQCAtMzcsMjEgKzM3LDIwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCiBGb250R2x5cGhzOjpGb250R2x5cGhzKFBhc3NSZWZQ
dHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpCi0gICAgOiBtX2NhY2hlZFByaW1hcnlGb250
KDApCisgICAgOiBtX2NhY2hlZFByaW1hcnlGb250KG51bGxwdHIpCiAgICAgLCBtX2ZvbnRTZWxl
Y3Rvcihmb250U2VsZWN0b3IpCiAgICAgLCBtX2ZvbnRTZWxlY3RvclZlcnNpb24obV9mb250U2Vs
ZWN0b3IgPyBtX2ZvbnRTZWxlY3Rvci0+dmVyc2lvbigpIDogMCkKLSAgICAsIG1fZ2VuZXJhdGlv
bihmb250Q2FjaGUoKS5nZW5lcmF0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRpb24oRm9udENhY2hl
OjpzaW5nbGV0b24oKS5nZW5lcmF0aW9uKCkpCiB7CiB9CiAKIEZvbnRHbHlwaHM6OkZvbnRHbHlw
aHMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQotICAgIDogbV9jYWNoZWRQ
cmltYXJ5Rm9udCgwKQotICAgICwgbV9mb250U2VsZWN0b3IoMCkKKyAgICA6IG1fY2FjaGVkUHJp
bWFyeUZvbnQobnVsbHB0cikKICAgICAsIG1fZm9udFNlbGVjdG9yVmVyc2lvbigwKQotICAgICwg
bV9nZW5lcmF0aW9uKGZvbnRDYWNoZSgpLmdlbmVyYXRpb24oKSkKKyAgICAsIG1fZ2VuZXJhdGlv
bihGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKSkKICAgICAsIG1faXNGb3JQbGF0
Zm9ybUZvbnQodHJ1ZSkKIHsKLSAgICBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXMuYXBwZW5kKEZv
bnRSYW5nZXMoZm9udENhY2hlKCkuZm9udEZvclBsYXRmb3JtRGF0YShwbGF0Zm9ybURhdGEpKSk7
CisgICAgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmFwcGVuZChGb250UmFuZ2VzKEZvbnRDYWNo
ZTo6c2luZ2xldG9uKCkuZm9udEZvclBsYXRmb3JtRGF0YShwbGF0Zm9ybURhdGEpKSk7CiB9CiAK
IEZvbnRHbHlwaHM6On5Gb250R2x5cGhzKCkKQEAgLTgxLDYgKzgwLDcgQEAgc3RhdGljIEZvbnRS
YW5nZXMgcmVhbGl6ZU5leHRGYWxsYmFjayhjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCB1bnNpZ24KIHsKICAgICBBU1NFUlQoaW5kZXggPCBkZXNjcmlwdGlvbi5mYW1pbHlDb3Vu
dCgpKTsKIAorICAgIGF1dG8mIGZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7CiAg
ICAgd2hpbGUgKGluZGV4IDwgZGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKSkgewogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSA9IGRlc2NyaXB0aW9uLmZhbWlseUF0KGluZGV4Kysp
OwogICAgICAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKQEAgLTkwLDEzICs5MCwxMyBAQCBzdGF0
aWMgRm9udFJhbmdlcyByZWFsaXplTmV4dEZhbGxiYWNrKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIHVuc2lnbgogICAgICAgICAgICAgaWYgKCFyYW5nZXMuaXNOdWxsKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJhbmdlczsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0
byBmb250ID0gZm9udENhY2hlKCkuZm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwgZmFtaWx5KSkK
KyAgICAgICAgaWYgKGF1dG8gZm9udCA9IGZvbnRDYWNoZS5mb250Rm9yRmFtaWx5KGRlc2NyaXB0
aW9uLCBmYW1pbHkpKQogICAgICAgICAgICAgcmV0dXJuIEZvbnRSYW5nZXMoV1RGOjptb3ZlKGZv
bnQpKTsKICAgICB9CiAgICAgLy8gV2UgZGlkbid0IGZpbmQgYSBmb250LiBUcnkgdG8gZmluZCBh
IHNpbWlsYXIgZm9udCB1c2luZyBvdXIgb3duIHNwZWNpZmljIGtub3dsZWRnZSBhYm91dCBvdXIg
cGxhdGZvcm0uCiAgICAgLy8gRm9yIGV4YW1wbGUgb24gT1MgWCwgd2Uga25vdyB0byBtYXAgYW55
IGZhbWlsaWVzIGNvbnRhaW5pbmcgdGhlIHdvcmRzIEFyYWJpYywgUGFzaHRvLCBvciBVcmR1IHRv
IHRoZQogICAgIC8vIEdlZXphIFBybyBmb250LgotICAgIHJldHVybiBGb250UmFuZ2VzKGZvbnRD
YWNoZSgpLnNpbWlsYXJGb250KGRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIEZvbnRSYW5nZXMo
Zm9udENhY2hlLnNpbWlsYXJGb250KGRlc2NyaXB0aW9uKSk7CiB9CiAKIGNvbnN0IEZvbnRSYW5n
ZXMmIEZvbnRHbHlwaHM6OnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIHVuc2lnbmVkIGluZGV4KQpAQCAtMTA1LDcgKzEwNSw3IEBAIGNv
bnN0IEZvbnRSYW5nZXMmIEZvbnRHbHlwaHM6OnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZGVzCiAgICAgICAgIHJldHVybiBtX3JlYWxpemVkRmFsbGJhY2tS
YW5nZXNbaW5kZXhdOwogCiAgICAgQVNTRVJUKGluZGV4ID09IG1fcmVhbGl6ZWRGYWxsYmFja1Jh
bmdlcy5zaXplKCkpOwotICAgIEFTU0VSVChmb250Q2FjaGUoKS5nZW5lcmF0aW9uKCkgPT0gbV9n
ZW5lcmF0aW9uKTsKKyAgICBBU1NFUlQoRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZW5lcmF0aW9u
KCkgPT0gbV9nZW5lcmF0aW9uKTsKIAogICAgIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5hcHBl
bmQoRm9udFJhbmdlcygpKTsKICAgICBhdXRvJiBmb250UmFuZ2VzID0gbV9yZWFsaXplZEZhbGxi
YWNrUmFuZ2VzLmxhc3QoKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBjb25zdCBGb250UmFuZ2VzJiBG
b250R2x5cGhzOjpyZWFsaXplRmFsbGJhY2tSYW5nZXNBdChjb25zdCBGb250RGVzY3JpcHRpb24m
IGRlcwogICAgICAgICBpZiAoZm9udFJhbmdlcy5pc051bGwoKSAmJiBtX2ZvbnRTZWxlY3RvcikK
ICAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBtX2ZvbnRTZWxlY3Rvci0+Zm9udFJhbmdlc0ZvckZh
bWlseShkZXNjcmlwdGlvbiwgc3RhbmRhcmRGYW1pbHkpOwogICAgICAgICBpZiAoZm9udFJhbmdl
cy5pc051bGwoKSkKLSAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBGb250UmFuZ2VzKGZvbnRDYWNo
ZSgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgIGZv
bnRSYW5nZXMgPSBGb250UmFuZ2VzKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkubGFzdFJlc29ydEZh
bGxiYWNrRm9udChkZXNjcmlwdGlvbikpOwogICAgICAgICByZXR1cm4gZm9udFJhbmdlczsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDb2NvYS5tbQppbmRleCA4Y2Q4NDgxNDJlMjU0NGEwMGJlZTU5M2RlYTE1ZjI0YjE1MTNiNDlm
Li5iMjI3MzVjY2JiMTAxNmI1NDEwZjZlYmM3Y2I0ODhjZGJmN2I1OTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCkBAIC0z
MzksMTEgKzMzOSwxMSBAQCBQYXNzUmVmUHRyPEZvbnQ+IEZvbnQ6OnBsYXRmb3JtQ3JlYXRlU2Nh
bGVkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBzYwogICAgICAgICBzY2FsZWRG
b250RGF0YS5tX3N5bnRoZXRpY0JvbGQgPSAoZm9udFRyYWl0cyAmIE5TQm9sZEZvbnRNYXNrKSAm
JiAhKHNjYWxlZEZvbnRUcmFpdHMgJiBOU0JvbGRGb250TWFzayk7CiAgICAgICAgIHNjYWxlZEZv
bnREYXRhLm1fc3ludGhldGljT2JsaXF1ZSA9IChmb250VHJhaXRzICYgTlNJdGFsaWNGb250TWFz
aykgJiYgIShzY2FsZWRGb250VHJhaXRzICYgTlNJdGFsaWNGb250TWFzayk7CiAKLSAgICAgICAg
cmV0dXJuIGZvbnRDYWNoZSgpLmZvbnRGb3JQbGF0Zm9ybURhdGEoc2NhbGVkRm9udERhdGEpOwor
ICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yUGxhdGZvcm1EYXRh
KHNjYWxlZEZvbnREYXRhKTsKICAgICB9CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2Vsc2UKICAgICBDVEZvbnRT
eW1ib2xpY1RyYWl0cyBmb250VHJhaXRzID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMobV9wbGF0
Zm9ybURhdGEuZm9udCgpKTsKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihtX3BsYXRmb3Jt
RGF0YS5mb250KCkpKTsKQEAgLTM2MCw3ICszNjAsNyBAQCBQYXNzUmVmUHRyPEZvbnQ+IEZvbnQ6
OnBsYXRmb3JtQ3JlYXRlU2NhbGVkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBz
YwogICAgICAgICBzY2FsZWRGb250RGF0YS5tX3N5bnRoZXRpY0JvbGQgPSAoZm9udFRyYWl0cyAm
IGtDVEZvbnRCb2xkVHJhaXQpICYmICEoc2NhbGVkRm9udFRyYWl0cyAmIGtDVEZvbnRUcmFpdEJv
bGQpOwogICAgICAgICBzY2FsZWRGb250RGF0YS5tX3N5bnRoZXRpY09ibGlxdWUgPSAoZm9udFRy
YWl0cyAmIGtDVEZvbnRJdGFsaWNUcmFpdCkgJiYgIShzY2FsZWRGb250VHJhaXRzICYga0NURm9u
dFRyYWl0SXRhbGljKTsKIAotICAgICAgICByZXR1cm4gZm9udENhY2hlKCkuZm9udEZvclBsYXRm
b3JtRGF0YShzY2FsZWRGb250RGF0YSk7CisgICAgICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLmZvbnRGb3JQbGF0Zm9ybURhdGEoc2NhbGVkRm9udERhdGEpOwogICAgIH0KIAogICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKaW5kZXggZGExZjJmOThjNzE3NWUyZWY1MWRmYzU3Y2YyZjcxNmViMGY0MzRkMy4uM2Y0NzJh
NGJlODczMWNmMmMwOWYzY2U1YjUxYzY1OTBlMWZhODc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0zNDYsMjkgKzM0NiwyOSBAQCBib29sIEZvbnRQ
bGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkKIFBhc3NSZWZQdHI8T3BlblR5cGVW
ZXJ0aWNhbERhdGE+IEZvbnRQbGF0Zm9ybURhdGE6OnZlcnRpY2FsRGF0YSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGhhc2goKSk7Ci0gICAgcmV0dXJuIGZvbnRDYWNoZSgpLmdldFZlcnRpY2FsRGF0
YShTdHJpbmc6Om51bWJlcihoYXNoKCkpLCAqdGhpcyk7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkuZ2V0VmVydGljYWxEYXRhKFN0cmluZzo6bnVtYmVyKGhhc2goKSksICp0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZh
Y2UgPSBjYWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKICAgICBp
ZiAoIWZyZWVUeXBlRmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgRlRfVUxvbmcgdGFibGVTaXplID0gMDsKICAgICAvLyBUYWcgYnl0ZXMgbmVl
ZCB0byBiZSByZXZlcnNlZCBiZWNhdXNlIE9UX01BS0VfVEFHIHVzZXMgYmlnLWVuZGlhbiBvcmRl
ci4KICAgICB1aW50MzJfdCB0YWcgPSBGVF9NQUtFX1RBRygodGFibGUgJiAweGZmKSwgKHRhYmxl
ICYgMHhmZjAwKSA+PiA4LCAodGFibGUgJiAweGZmMDAwMCkgPj4gMTYsIHRhYmxlID4+IDI0KTsK
ICAgICBpZiAoRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCAwLCAmdGFi
bGVTaXplKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGFi
bGVTaXplKTsKICAgICBGVF9VTG9uZyBleHBlY3RlZFRhYmxlU2l6ZSA9IHRhYmxlU2l6ZTsKICAg
ICBpZiAoYnVmZmVyLT5zaXplKCkgIT0gdGFibGVTaXplKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGVF9FcnJvciBlcnJvciA9IEZUX0xvYWRfU2Zu
dF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgcmVpbnRlcnByZXRfY2FzdDxGVF9CeXRlKj4o
Y29uc3RfY2FzdDxjaGFyKj4oYnVmZmVyLT5kYXRhKCkpKSwgJnRhYmxlU2l6ZSk7CiAgICAgaWYg
KGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY2Fpcm9fZnRfc2NhbGVkX2ZvbnRf
dW5sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0Lm1tCmluZGV4IGQ2ZWMzYTZiYTI4NzRmNTIzYWZjOGQyOWFmYzJkMDdmNzIxODMy
MDkuLjc5ZGZjZDE5YjFmNWJhYzE5NzkzM2RkYTA3ZjBiYTYxOGZkMmNjYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTI3NSwxMyArMjc1LDE0IEBAIHZv
aWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbXBsZXhU
ZXh0UnVucy5hcHBlbmQoQ29tcGxleFRleHRSdW46OmNyZWF0ZShtX2ZvbnQucHJpbWFyeUZvbnQo
KSwgY3AsIHN0cmluZ0xvY2F0aW9uICsgcnVuUmFuZ2UubG9jYXRpb24sIHJ1blJhbmdlLmxlbmd0
aCwgbV9ydW4ubHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJ1bkZvbnQgPSBmb250Q2Fj
aGUoKS5mb250Rm9yRmFtaWx5KG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgZm9udE5hbWUuZ2V0
KCksIGZhbHNlKS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgZm9udENhY2hlID0g
Rm9udENhY2hlOjpzaW5nbGV0b24oKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9IGZv
bnRDYWNoZS5mb250Rm9yRmFtaWx5KG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgZm9udE5hbWUu
Z2V0KCksIGZhbHNlKS5nZXQoKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICAgICAgICAg
ICAgICAvLyBDb3JlIFRleHQgbWF5IGhhdmUgdXNlZCBhIGZvbnQgdGhhdCBpcyBub3Qga25vd24g
dG8gTlNGb250TWFuYWdlci4gSW4gdGhhdCBjYXNlLCBmYWxsIGJhY2sgb24KICAgICAgICAgICAg
ICAgICAgICAgLy8gdXNpbmcgdGhlIGZvbnQgYXMgcmV0dXJuZWQsIGV2ZW4gdGhvdWdoIGl0IG1h
eSBub3QgaGF2ZSB0aGUgYmVzdCBOU0ZvbnRSZW5kZXJpbmdNb2RlLgogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXJ1bkZvbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRQbGF0Zm9y
bURhdGEgcnVuRm9udFBsYXRmb3JtRGF0YSgoTlNGb250ICopcnVuQ1RGb250LCBDVEZvbnRHZXRT
aXplKHJ1bkNURm9udCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9ICZmb250
Q2FjaGUoKS5mb250Rm9yUGxhdGZvcm1EYXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLmdldCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9IGZvbnRDYWNoZS5mb250Rm9yUGxhdGZv
cm1EYXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLnB0cigpOwogICAgICAgICAgICAgICAgICAgICB9
CiAjZWxzZQogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSnVzdCBhc3NlcnQgZm9yIG5v
dywgdW50aWwgd2UgY2FuIGRldmlzZSBhIGJldHRlciBmaXggdGhhdCB3b3JrcyB3aXRoIGlPUy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2Fj
aGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hl
TWFjLm1tCmluZGV4IDhkOTEyMjk2OTVmMmQ1MjNlOGE3ODgyZDI4MWZhYzc0ZTRmOGNhYTkuLmQw
YWY0ZGIzY2E0YjBkMDMwYmMzYzM5ZjM2MzQ0ZWJkNzgxMWU5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQpAQCAtMjc1
LDE2ICsyNzUsMTYgQEAgc3RhdGljIE5TRm9udCAqZm9udFdpdGhGYW1pbHkoTlNTdHJpbmcgKmRl
c2lyZWRGYW1pbHksIE5TRm9udFRyYWl0TWFzayBkZXNpcmVkVHIKIHN0YXRpYyB2b2lkIGludmFs
aWRhdGVGb250Q2FjaGUodm9pZCopCiB7CiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKCZpbnZhbGlkYXRlRm9udENhY2hlLCAwKTsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZCgmaW52YWxpZGF0ZUZvbnRDYWNoZSwgbnVsbHB0cik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgZm9udENhY2hlKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZSgpOwogICAgIFtkZXNpcmVkRmFtaWx5VG9BdmFp
bGFibGVGYW1pbHlEaWN0aW9uYXJ5KCkgcmVtb3ZlQWxsT2JqZWN0c107CiB9CiAKIHN0YXRpYyB2
b2lkIGZvbnRDYWNoZVJlZ2lzdGVyZWRGb250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayhD
Rk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmIG5hbWUs
IGNvbnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQogewotICAgIEFTU0VSVF9VTlVTRUQob2Jz
ZXJ2ZXIsIG9ic2VydmVyID09ICZmb250Q2FjaGUoKSk7CisgICAgQVNTRVJUX1VOVVNFRChvYnNl
cnZlciwgb2JzZXJ2ZXIgPT0gJkZvbnRDYWNoZTo6c2luZ2xldG9uKCkpOwogICAgIEFTU0VSVF9V
TlVTRUQobmFtZSwgQ0ZFcXVhbChuYW1lLCBrQ1RGb250TWFuYWdlclJlZ2lzdGVyZWRGb250c0No
YW5nZWROb3RpZmljYXRpb24pKTsKICAgICBpbnZhbGlkYXRlRm9udENhY2hlKDApOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcAppbmRleCBjNTJjZjEzNzNiNTJiZmM5MTU3NTIzM2EyMjZlN2ViN2Q4ZTg0NDc0Li4zMzUw
ZjE1MTY4OThjZTg1M2E5MzYxNTBkOTRlOTJjYTIzNDI4NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtMTQ5
LDcgKzE0OSw3IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFn
ZU1hc2tzKCkKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKICAgICBpZiAoIWluaXRpYWxp
emVkKSB7CiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgSU1MYW5nRm9udExp
bmtUeXBlKiBsYW5nRm9udExpbmsgPSBmb250Q2FjaGUoKS5nZXRGb250TGlua0ludGVyZmFjZSgp
OworICAgICAgICBJTUxhbmdGb250TGlua1R5cGUqIGxhbmdGb250TGluayA9IEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkuZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKICAgICAgICAgaWYgKCFsYW5nRm9u
dExpbmspCiAgICAgICAgICAgICByZXR1cm4gY29kZVBhZ2VNYXNrczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDEwYmEzY2RhNjYyZTMwZTdlMWQxNzVkZGI5Yjk3Yzg0
Yjk5YzI5YmUuLjlkMjQxNTNmYTQzZWNmZWNmY2E2MzhjNGIxZjdmMTkxYTc1ZWY1YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIElu
dGVybmFsczo6c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChib29sIGZsYWcsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIEludGVybmFsczo6aW52YWxpZGF0ZUZvbnRDYWNoZSgp
CiB7Ci0gICAgZm9udENhY2hlKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkuaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0U2Nyb2xsVmlld1Bv
c2l0aW9uKGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCmluZGV4IGU4ZGNiMjQ0MjJkZWRiYjg0YWNi
OWU4MTRlYzNhYTZlZDdhNGRkZmUuLjY2NDRjYzQ0NzY3MDRmN2Q0ZDQyNjk2Zjk5MjY3NmI2OWFh
OWU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQpA
QCAtMTQ3LDE3ICsxNDcsMTcgQEAgKyAoc2l6ZV90KWljb25zV2l0aERhdGFDb3VudAogCiArIChz
aXplX3QpY2FjaGVkRm9udERhdGFDb3VudAogewotICAgIHJldHVybiBmb250Q2FjaGUoKS5mb250
Q291bnQoKTsKKyAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Q291bnQoKTsK
IH0KIAogKyAoc2l6ZV90KWNhY2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudAogewotICAgIHJldHVy
biBmb250Q2FjaGUoKS5pbmFjdGl2ZUZvbnRDb3VudCgpOworICAgIHJldHVybiBGb250Q2FjaGU6
OnNpbmdsZXRvbigpLmluYWN0aXZlRm9udENvdW50KCk7CiB9CiAKICsgKHZvaWQpcHVyZ2VJbmFj
dGl2ZUZvbnREYXRhCiB7Ci0gICAgZm9udENhY2hlKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7
CisgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKIH0K
IAogKyAoc2l6ZV90KWdseXBoUGFnZUNvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCAxMTIwNjc0ZDQ5OWY1N2VmNDg0ZDY1MDkxMjEzYzIwMTNiYjAyN2Fi
Li5lMjNkNmJkNmM5ZTU1MWM4MTFiN2EzYTZkNTRkOGYyNzM1Zjc3NGE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTQ4NzUsNyArNDg3NSw3IEBAIHN0YXRp
YyBOU1N0cmluZyAqZm9udE5hbWVGb3JEZXNjcmlwdGlvbihOU1N0cmluZyAqZmFtaWx5TmFtZSwg
Qk9PTCBpdGFsaWMsIEJPT0wKICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNJdGFsaWMoaXRhbGlj
KTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KGJvbGQgPyBGb250V2VpZ2h0OTAwIDog
Rm9udFdlaWdodDUwMCk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUocG9p
bnRTaXplKTsKLSAgICBSZWZQdHI8Rm9udD4gZm9udCA9IGZvbnRDYWNoZSgpLmZvbnRGb3JGYW1p
bHkoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKKyAgICBSZWZQdHI8Rm9udD4gZm9udCA9
IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZh
bWlseU5hbWUpOwogICAgIHJldHVybiBbZm9udC0+cGxhdGZvcm1EYXRhKCkubnNGb250KCkgZm9u
dE5hbWVdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZWIyYzZh
ZTFjNjE5NGNiNmIxNWY3ZDI4OWZjN2Q3YmU4MjMwYzQyNy4uNjVlZTE0ODZjYmRmM2IzY2NmNjZi
MDVlNTdmNjgwYWY5MTE4YTViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMTM0Niw3ICsxMzQ2LDcgQEAgKyAodm9pZClwdXJnZUluYWN0aXZlRm9udERhdGEKIHsKICAg
ICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogICAgIFdlYktpdDo6TWVtb3J5TWVhc3Vy
ZSBtZWFzdXJlcigiTWVtb3J5IHdhcm5pbmc6IFB1cmdpbmcgaW5hY3RpdmUgZm9udCBkYXRhLiIp
OwotICAgIGZvbnRDYWNoZSgpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOworICAgIEZvbnRDYWNo
ZTo6c2luZ2xldG9uKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKICsgKHZvaWQpZHJh
aW5MYXllclBvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0
aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRleCAx
NjgwMjY1YWQ4MmY4ZmJiMjY0MjQzZjYxMmFjZTA2YWI2MjZlZjRhLi4xMGY5MWZmZGU0MDRhMjcx
Nzk5ODU3MDUyNmQzOTIzODFmYjA0MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0YXRp
c3RpY3MuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVkRm9udERhdGFDb3VudCgKIHsKICAgICBpZiAoIWNvdW50
KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwotICAgICpjb3VudCA9IChVSU5UKSBmb250Q2Fj
aGUoKS5mb250Q291bnQoKTsKKyAgICAqY291bnQgPSAoVUlOVCkgRm9udENhY2hlOjpzaW5nbGV0
b24oKS5mb250Q291bnQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjI0LDEzICsyMjQs
MTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdGljczo6Y2FjaGVk
Rm9udERhdGFJbmFjdGl2ZUNvdW50KAogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQpIGZvbnRDYWNoZSgpLmluYWN0aXZlRm9u
dENvdW50KCk7CisgICAgKmNvdW50ID0gKFVJTlQpIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW5h
Y3RpdmVGb250Q291bnQoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJDb3JlU3RhdGlzdGljczo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKHZvaWQp
CiB7Ci0gICAgZm9udENhY2hlKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisgICAgRm9udENh
Y2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNTcz
MGFmNmI3YTJlMTRjMGM3OTMzNzUzMTJlMTVjMjM5ZTUzMzJiMi4uMDFiNzFiMzA5OTEyMjBhZDc2
MDdhZGE3NWMxYTM5NDdiN2M4YTg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp0ZXJtaW5hdGUo
KQogewogI2lmbmRlZiBOREVCVUcKICAgICBnY0NvbnRyb2xsZXIoKS5nYXJiYWdlQ29sbGVjdE5v
dygpOwotICAgIGZvbnRDYWNoZSgpLmludmFsaWRhdGUoKTsKKyAgICBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLmludmFsaWRhdGUoKTsKICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuc2V0RGlz
YWJsZWQodHJ1ZSk7CiAjZW5kaWYKIApAQCAtNjM5LDEyICs2MzksMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIC8vIENsb3NlIGFsbCB0aGUgbGl2
ZSBwYWdlcy4KICAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2U+PiBwYWdlczsKICAgICBjb3B5VmFs
dWVzVG9WZWN0b3IobV9wYWdlTWFwLCBwYWdlcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwYWdlcy5zaXplKCk7ICsraSkKLSAgICAgICAgcGFnZXNbaV0tPmNsb3NlKCk7CisgICAgZm9y
IChhdXRvJiBwYWdlIDogcGFnZXMpCisgICAgICAgIHBhZ2UtPmNsb3NlKCk7CiAgICAgcGFnZXMu
Y2xlYXIoKTsKIAogICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0U29vbigpOwotICAg
IGZvbnRDYWNoZSgpLmludmFsaWRhdGUoKTsKKyAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmlu
dmFsaWRhdGUoKTsKICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkuc2V0RGlzYWJsZWQodHJ1
ZSk7CiAjZW5kaWYgICAgCiAKQEAgLTkzOSw4ICs5MzksOSBAQCB2b2lkIFdlYlByb2Nlc3M6Omdl
dFdlYkNvcmVTdGF0aXN0aWNzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgZGF0YS5zdGF0aXN0
aWNzTnVtYmVycy5zZXQoQVNDSUlMaXRlcmFsKCJJY29uc1dpdGhEYXRhQ291bnQiKSwgaWNvbkRh
dGFiYXNlKCkuaWNvblJlY29yZENvdW50V2l0aERhdGEoKSk7CiAgICAgCiAgICAgLy8gR2F0aGVy
IGZvbnQgc3RhdGlzdGljcy4KLSAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJSUxp
dGVyYWwoIkNhY2hlZEZvbnREYXRhQ291bnQiKSwgZm9udENhY2hlKCkuZm9udENvdW50KCkpOwot
ICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiQ2FjaGVkRm9udERh
dGFJbmFjdGl2ZUNvdW50IiksIGZvbnRDYWNoZSgpLmluYWN0aXZlRm9udENvdW50KCkpOworICAg
IGF1dG8mIGZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7CisgICAgZGF0YS5zdGF0
aXN0aWNzTnVtYmVycy5zZXQoQVNDSUlMaXRlcmFsKCJDYWNoZWRGb250RGF0YUNvdW50IiksIGZv
bnRDYWNoZS5mb250Q291bnQoKSk7CisgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoQVND
SUlMaXRlcmFsKCJDYWNoZWRGb250RGF0YUluYWN0aXZlQ291bnQiKSwgZm9udENhY2hlLmluYWN0
aXZlRm9udENvdW50KCkpOwogICAgIAogICAgIC8vIEdhdGhlciBnbHlwaCBwYWdlIHN0YXRpc3Rp
Y3MuCiAgICAgZGF0YS5zdGF0aXN0aWNzTnVtYmVycy5zZXQoQVNDSUlMaXRlcmFsKCJHbHlwaFBh
Z2VDb3VudCIpLCBHbHlwaFBhZ2U6OmNvdW50KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246780</attachid>
            <date>2015-02-17 16:44:45 -0800</date>
            <delta_ts>2015-02-17 16:53:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141726-20150217164439.patch</filename>
            <type>text/plain</type>
            <size>28006</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWViZjNjYzVmZDVlMWUw
OTY0NjQ4NTQ4ZGE2ZDU2YzhhOWNjZGQ1OS4uMmZiNGY0NDJkMGEwM2YyOTE0MWJiODVjYjNkZDUw
YTZjODI0YWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDE1LTAyLTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQWNjZXNzIEZvbnRDYWNoZSBn
bG9iYWwgaW5zdGFuY2UgdmlhIHNpbmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTcyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2VzcyBGb250
Q2FjaGUgZ2xvYmFsIGluc3RhbmNlIHZpYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0
aW9uLAorICAgICAgICBhcyBwZXIgY29kaW5nIHN0eWxlLgorCisyMDE1LTAyLTE3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgQWNjZXNzIE1lbW9yeVByZXNzdXJl
SGFuZGxlciBnbG9iYWwgaW5zdGFuY2UgdmlhIGEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBm
dW5jdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxNjkxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlMGQwZWUwYWQzOGI3ZDliOGJhOGY5YTQzMzll
NzdjNWVkYzBkNjY3Li5kOTg2OGIxYmRiY2Q3YmJiMWJiOGJjNWU1YmMwNDE4ODIyMTcxZTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTUtMDItMTcgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBBY2Nlc3MgRm9udENhY2hlIGdsb2JhbCBp
bnN0YW5jZSB2aWEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNzI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXNzIEZvbnRDYWNoZSBn
bG9iYWwgaW5zdGFuY2UgdmlhIHNpbmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24sCisg
ICAgICAgIGFzIHBlciBjb2Rpbmcgc3R5bGUuCisKKzIwMTUtMDItMTcgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBBY2Nlc3MgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
IGdsb2JhbCBpbnN0YW5jZSB2aWEgYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9u
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE2OTEK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IDViYWY4OWY4MTk4ZmUyZjUwZDc3ZTU4Y2RjNDRlMWRiY2Vl
Yzc0Y2IuLjkzNjUwYWRjZjEyNGI0OTBmYmY2OTJlOTNkY2NlZGRmYmJiOWRkOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFjY2VzcyBGb250Q2FjaGUgZ2xvYmFsIGluc3RhbmNl
IHZpYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3MgRm9udENhY2hlIGdsb2JhbCBp
bnN0YW5jZSB2aWEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAg
YXMgcGVyIGNvZGluZyBzdHlsZS4KKwogMjAxNS0wMi0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdA
Y3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHNvbWUg
dW5uZWNlc3NhcnkgSW5zcGVjdG9yIHByZWZpeGVzIGZyb20gY2xhc3MgbmFtZXMgaW4gSW5zcGVj
dG9yIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYwNGMxYTljYWRlYmIxMmI4Yzk0OGFjNTc3N2Vl
NGNlNTlmY2JjYzQuLjBhYzZhYzc3Y2JhYWZjMDM5MDFkNWIyMGZjMmNlZDg2MzlhMzBhMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAogMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCisgICAgICAgIEFjY2VzcyBGb250Q2FjaGUgZ2xvYmFsIGluc3RhbmNl
IHZpYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3MgRm9udENhY2hlIGdsb2JhbCBp
bnN0YW5jZSB2aWEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAg
YXMgcGVyIGNvZGluZyBzdHlsZS4KKworMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCiAgICAgICAgIEFjY2VzcyBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgZ2xvYmFs
IGluc3RhbmNlIHZpYSBhIHNpbmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTY5MQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCA0M2YwNTlkMGY3NTMzNTky
MjAzNjA0ZDgxZjQ1NDBlNmNkODkyODE0Li43NWJmZDgxZDk5ZGViYWNjNTc1ZGNmNjc2YjIyN2Jm
MzViNTY2ZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAg
LTEwNSw3ICsxMDUsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwogewogICAgIC8vIElmIHRo
ZSBmb250IGhhc24ndCBsb2FkZWQgb3IgYW4gZXJyb3Igb2NjdXJyZWQsIHRoZW4gd2UndmUgZ290
IG5vdGhpbmcuCiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9mb250CiAjaWYgRU5BQkxFKFNWR19GT05U
UykKQEAgLTExNCw3ICsxMTQsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwogICAgICkgewog
ICAgICAgICAvLyBXZSdyZSBsb2NhbC4gSnVzdCByZXR1cm4gYSBGb250IGZyb20gdGhlIG5vcm1h
bCBjYWNoZS4KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjaGVjayBhbHRlcm5hdGUgZm9u
dCBmYW1pbHkgbmFtZXMgaGVyZSwgc28gcGFzcyB0cnVlIGFzIHRoZSBjaGVja2luZ0FsdGVybmF0
ZU5hbWUgcGFyYW1ldGVyLgotICAgICAgICByZXR1cm4gZm9udENhY2hlKCkuZm9udEZvckZhbWls
eShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5nLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5n
LCB0cnVlKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBoYXNoS2V5ID0gKGZvbnREZXNjcmlwdGlv
bi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkgPDwgNSB8IGZvbnREZXNjcmlwdGlvbi53aWR0aFZh
cmlhbnQoKSA8PCAzCkBAIC0xNjMsNyArMTYzLDcgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNl
U291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28K
ICAgICAgICAgLy8gYW5kIHRoZSBsb2FkZXIgbWF5IGludm9rZSBhcmJpdHJhcnkgZGVsZWdhdGUg
b3IgZXZlbnQgaGFuZGxlciBjb2RlLgogICAgICAgICBmb250U2VsZWN0b3ItPmJlZ2luTG9hZGlu
Z0ZvbnRTb29uKG1fZm9udC5nZXQoKSk7CiAKLSAgICAgICAgUmVmPEZvbnQ+IHBsYWNlaG9sZGVy
Rm9udCA9IGZvbnRDYWNoZSgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udERlc2NyaXB0aW9u
KTsKKyAgICAgICAgUmVmPEZvbnQ+IHBsYWNlaG9sZGVyRm9udCA9IEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkubGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pOwogICAgICAgICBS
ZWY8Rm9udD4gcGxhY2Vob2xkZXJGb250Q29weUluTG9hZGluZ1N0YXRlID0gRm9udDo6Y3JlYXRl
KHBsYWNlaG9sZGVyRm9udC0+cGxhdGZvcm1EYXRhKCksIHRydWUsIHRydWUpOwogICAgICAgICBy
ZXR1cm4gV1RGOjptb3ZlKHBsYWNlaG9sZGVyRm9udENvcHlJbkxvYWRpbmdTdGF0ZSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA4MmMwZWI1OGVmODNi
NmI3NjEwNjAyNzBlNjMwNDFlNTliZGQ1ZTlhLi4xMDRhZTcwNjdiMmZjZGQ5YTlmZDg2ZDVmZmIx
NjU5Y2Y0MGE4Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAt
NzAsMTMgKzcwLDEzIEBAIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKERvY3VtZW50
JiBkb2N1bWVudCkKICAgICAvLyBzZWVtIHRvIGJlIGFueSBzdWNoIGd1YXJhbnRlZS4KIAogICAg
IEFTU0VSVChtX2RvY3VtZW50KTsKLSAgICBmb250Q2FjaGUoKS5hZGRDbGllbnQodGhpcyk7Cisg
ICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5hZGRDbGllbnQodGhpcyk7CiB9CiAKIENTU0ZvbnRT
ZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiB7CiAgICAgY2xlYXJEb2N1bWVudCgpOwotICAg
IGZvbnRDYWNoZSgpLnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBGb250Q2FjaGU6OnNpbmdsZXRv
bigpLnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAogYm9vbCBDU1NGb250U2VsZWN0b3I6OmlzRW1w
dHkoKSBjb25zdApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRG
b250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAg
ICAgICAgIEFTU0VSVCghbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmNvbnRhaW5zKGZhbWls
eU5hbWUpKTsKIAogICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBsb2NhbGx5SW5zdGFsbGVk
Rm9udHNUcmFpdHNNYXNrczsKLSAgICAgICAgICAgIGZvbnRDYWNoZSgpLmdldFRyYWl0c0luRmFt
aWx5KGZhbWlseU5hbWUsIGxvY2FsbHlJbnN0YWxsZWRGb250c1RyYWl0c01hc2tzKTsKKyAgICAg
ICAgICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2V0VHJhaXRzSW5GYW1pbHkoZmFtaWx5TmFt
ZSwgbG9jYWxseUluc3RhbGxlZEZvbnRzVHJhaXRzTWFza3MpOwogICAgICAgICAgICAgaWYgKHVu
c2lnbmVkIG51bUxvY2FsbHlJbnN0YWxsZWRGYWNlcyA9IGxvY2FsbHlJbnN0YWxsZWRGb250c1Ry
YWl0c01hc2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZmFtaWx5TG9jYWxseUlu
c3RhbGxlZEZhY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNl
Pj4+KCk7CiAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6
Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgogICAg
IGlmICghZmFjZSkgewogICAgICAgICBpZiAoIXJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QpCiAg
ICAgICAgICAgICBmYW1pbHlGb3JMb29rdXAgPSByZXNvbHZlR2VuZXJpY0ZhbWlseShtX2RvY3Vt
ZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOwotICAgICAgICByZXR1cm4gRm9udFJh
bmdlcyhmb250Q2FjaGUoKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5Rm9y
TG9va3VwKSk7CisgICAgICAgIHJldHVybiBGb250UmFuZ2VzKEZvbnRDYWNoZTo6c2luZ2xldG9u
KCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbWlseUZvckxvb2t1cCkpOwogICAg
IH0KIAogICAgIHJldHVybiBmYWNlLT5mb250UmFuZ2VzKGZvbnREZXNjcmlwdGlvbik7CkBAIC02
MTcsMTMgKzYxNywxMyBAQCBQYXNzUmVmUHRyPEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJh
Y2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzYwogICAgIEFTU0VSVF9VTlVT
RUQoaW5kZXgsICFpbmRleCk7CiAKICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IG1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CiAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3Mt
PmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocygpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZm9udENhY2hlKCkuZm9udEZvckZh
bWlseShmb250RGVzY3JpcHRpb24sIHNldHRpbmdzLT5waWN0b2dyYXBoRm9udEZhbWlseSgpKTsK
KyAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNj
cmlwdGlvbiwgc2V0dGluZ3MtPnBpY3RvZ3JhcGhGb250RmFtaWx5KCkpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRl
eCBkNzNhZTk3MjQ0NzMyNDU1NDZmNzZhYTUwNGRhMTRhYmVhMDYwMWJmLi43YzkzMjkzZGIwYWUz
NzdhMjhlNGQ4NjAzNjE2MjAxZDBjYzI5YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VOb25jcml0aWNhbE1lbW9yeSgpCiB7CiAgICAg
ewogICAgICAgICBSZWxpZWZMb2dnZXIgbG9nKCJQdXJnZSBpbmFjdGl2ZSBGb250RGF0YSIpOwot
ICAgICAgICBmb250Q2FjaGUoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICAgICAgRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKICAgICB9CiAKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGUyN2Zl
OTVlYWI2NzJkYjFhODY3NWRlYTQ2NjFlMThiZDNiNzQ2MTEuLjhlMjEzOGEyNDM5OTkyNzhlZjA0
NDE1MGU1ZDlhNWMxMzRjYzliM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3RlbUZh
bGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udEQKICAg
ICAgICAgICAgIGNvZGVVbml0c0xlbmd0aCA9IDI7CiAgICAgICAgIH0KIAotICAgICAgICBmYWxs
YmFja0ZvbnQgPSBmb250Q2FjaGUoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3Jp
cHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBjb2RlVW5pdHMsIGNvZGVVbml0c0xlbmd0
aCkuZ2V0KCk7CisgICAgICAgIGZhbGxiYWNrRm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCku
c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCB0aGlzLCBpc0ZvclBsYXRm
b3JtRm9udCwgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpLmdldCgpOwogICAgICAgICBpZiAo
ZmFsbGJhY2tGb250KQogICAgICAgICAgICAgZmFsbGJhY2tGb250LT5tX2lzVXNlZEluU3lzdGVt
RmFsbGJhY2tDYWNoZSA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMDJkM2RkYWRmNGYwNmIzMzlmYmViOTdhZWYz
MGI5MzNkY2ZiZTY1Ny4uZDRmYmIyMWM3ZDVjODc3NDNiODg1Mzg1Y2FkYTBiMjAwNDYyOWI5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRm9udENhY2hlJiBmb250Q2FjaGUoKQorRm9udENhY2hlJiBGb250Q2FjaGU6OnNpbmds
ZXRvbigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYWNoZT4gZ2xvYmFsRm9u
dENhY2hlOwogICAgIHJldHVybiBnbG9iYWxGb250Q2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDJkZmM5ZmJkN2VhMTI4YWQyMThlYzQx
YWQwN2U1ZTk3ZjZlZTc2MmMuLjcyYzAwYzVmYjI5OTE4ODRlOWI4YTQyYThlMWYxYjEzNzczNjlh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBA
IC0xMDcsNyArMTA3LDcgQEAgY2xhc3MgRm9udENhY2hlIHsKIAogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZvbnRDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IGZyaWVuZCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBGb250Q2FjaGUmIHNpbmdsZXRvbigpOwogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgaW1wbGVt
ZW50ZWQgYnkgdGhlIHBsYXRmb3JtLgogICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0Zv
ckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgRm9udCogb3JpZ2luYWxG
b250RGF0YSwgYm9vbCBpc1BsYXRmb3JtRm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGlu
dCBsZW5ndGgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBG
b250Q2FjaGUoKTsKLSAgICB+Rm9udENhY2hlKCk7CisgICAgfkZvbnRDYWNoZSgpID0gZGVsZXRl
OwogCiAgICAgdm9pZCBwdXJnZVRpbWVyRmlyZWQoKTsKIApAQCAtMTg0LDkgKzE4NCw2IEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZvbnQ7CiB9OwogCi0vLyBHZXQgdGhlIGdsb2JhbCBm
b250Q2FjaGUuCi1XRUJDT1JFX0VYUE9SVCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOwotCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEdseXBocy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhz
LmNwcAppbmRleCA4MzljYWM1N2NmMmM1NWRlNThmMzMzYmRjNjU3NDU5MjQ3MmJlMmViLi5iMjBk
MGVkNWNkZGQyZDY0ZjFiMTZjNWRiYjI3NTJhYzBkNTRiYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcApAQCAtMzcsMjEgKzM3LDIwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCiBGb250R2x5cGhzOjpGb250R2x5cGhzKFBhc3NSZWZQ
dHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpCi0gICAgOiBtX2NhY2hlZFByaW1hcnlGb250
KDApCisgICAgOiBtX2NhY2hlZFByaW1hcnlGb250KG51bGxwdHIpCiAgICAgLCBtX2ZvbnRTZWxl
Y3Rvcihmb250U2VsZWN0b3IpCiAgICAgLCBtX2ZvbnRTZWxlY3RvclZlcnNpb24obV9mb250U2Vs
ZWN0b3IgPyBtX2ZvbnRTZWxlY3Rvci0+dmVyc2lvbigpIDogMCkKLSAgICAsIG1fZ2VuZXJhdGlv
bihmb250Q2FjaGUoKS5nZW5lcmF0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRpb24oRm9udENhY2hl
OjpzaW5nbGV0b24oKS5nZW5lcmF0aW9uKCkpCiB7CiB9CiAKIEZvbnRHbHlwaHM6OkZvbnRHbHlw
aHMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQotICAgIDogbV9jYWNoZWRQ
cmltYXJ5Rm9udCgwKQotICAgICwgbV9mb250U2VsZWN0b3IoMCkKKyAgICA6IG1fY2FjaGVkUHJp
bWFyeUZvbnQobnVsbHB0cikKICAgICAsIG1fZm9udFNlbGVjdG9yVmVyc2lvbigwKQotICAgICwg
bV9nZW5lcmF0aW9uKGZvbnRDYWNoZSgpLmdlbmVyYXRpb24oKSkKKyAgICAsIG1fZ2VuZXJhdGlv
bihGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKSkKICAgICAsIG1faXNGb3JQbGF0
Zm9ybUZvbnQodHJ1ZSkKIHsKLSAgICBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXMuYXBwZW5kKEZv
bnRSYW5nZXMoZm9udENhY2hlKCkuZm9udEZvclBsYXRmb3JtRGF0YShwbGF0Zm9ybURhdGEpKSk7
CisgICAgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmFwcGVuZChGb250UmFuZ2VzKEZvbnRDYWNo
ZTo6c2luZ2xldG9uKCkuZm9udEZvclBsYXRmb3JtRGF0YShwbGF0Zm9ybURhdGEpKSk7CiB9CiAK
IEZvbnRHbHlwaHM6On5Gb250R2x5cGhzKCkKQEAgLTgxLDYgKzgwLDcgQEAgc3RhdGljIEZvbnRS
YW5nZXMgcmVhbGl6ZU5leHRGYWxsYmFjayhjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCB1bnNpZ24KIHsKICAgICBBU1NFUlQoaW5kZXggPCBkZXNjcmlwdGlvbi5mYW1pbHlDb3Vu
dCgpKTsKIAorICAgIGF1dG8mIGZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7CiAg
ICAgd2hpbGUgKGluZGV4IDwgZGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKSkgewogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSA9IGRlc2NyaXB0aW9uLmZhbWlseUF0KGluZGV4Kysp
OwogICAgICAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKQEAgLTkwLDEzICs5MCwxMyBAQCBzdGF0
aWMgRm9udFJhbmdlcyByZWFsaXplTmV4dEZhbGxiYWNrKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIHVuc2lnbgogICAgICAgICAgICAgaWYgKCFyYW5nZXMuaXNOdWxsKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJhbmdlczsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0
byBmb250ID0gZm9udENhY2hlKCkuZm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwgZmFtaWx5KSkK
KyAgICAgICAgaWYgKGF1dG8gZm9udCA9IGZvbnRDYWNoZS5mb250Rm9yRmFtaWx5KGRlc2NyaXB0
aW9uLCBmYW1pbHkpKQogICAgICAgICAgICAgcmV0dXJuIEZvbnRSYW5nZXMoV1RGOjptb3ZlKGZv
bnQpKTsKICAgICB9CiAgICAgLy8gV2UgZGlkbid0IGZpbmQgYSBmb250LiBUcnkgdG8gZmluZCBh
IHNpbWlsYXIgZm9udCB1c2luZyBvdXIgb3duIHNwZWNpZmljIGtub3dsZWRnZSBhYm91dCBvdXIg
cGxhdGZvcm0uCiAgICAgLy8gRm9yIGV4YW1wbGUgb24gT1MgWCwgd2Uga25vdyB0byBtYXAgYW55
IGZhbWlsaWVzIGNvbnRhaW5pbmcgdGhlIHdvcmRzIEFyYWJpYywgUGFzaHRvLCBvciBVcmR1IHRv
IHRoZQogICAgIC8vIEdlZXphIFBybyBmb250LgotICAgIHJldHVybiBGb250UmFuZ2VzKGZvbnRD
YWNoZSgpLnNpbWlsYXJGb250KGRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIEZvbnRSYW5nZXMo
Zm9udENhY2hlLnNpbWlsYXJGb250KGRlc2NyaXB0aW9uKSk7CiB9CiAKIGNvbnN0IEZvbnRSYW5n
ZXMmIEZvbnRHbHlwaHM6OnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIHVuc2lnbmVkIGluZGV4KQpAQCAtMTA1LDcgKzEwNSw3IEBAIGNv
bnN0IEZvbnRSYW5nZXMmIEZvbnRHbHlwaHM6OnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZGVzCiAgICAgICAgIHJldHVybiBtX3JlYWxpemVkRmFsbGJhY2tS
YW5nZXNbaW5kZXhdOwogCiAgICAgQVNTRVJUKGluZGV4ID09IG1fcmVhbGl6ZWRGYWxsYmFja1Jh
bmdlcy5zaXplKCkpOwotICAgIEFTU0VSVChmb250Q2FjaGUoKS5nZW5lcmF0aW9uKCkgPT0gbV9n
ZW5lcmF0aW9uKTsKKyAgICBBU1NFUlQoRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZW5lcmF0aW9u
KCkgPT0gbV9nZW5lcmF0aW9uKTsKIAogICAgIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5hcHBl
bmQoRm9udFJhbmdlcygpKTsKICAgICBhdXRvJiBmb250UmFuZ2VzID0gbV9yZWFsaXplZEZhbGxi
YWNrUmFuZ2VzLmxhc3QoKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBjb25zdCBGb250UmFuZ2VzJiBG
b250R2x5cGhzOjpyZWFsaXplRmFsbGJhY2tSYW5nZXNBdChjb25zdCBGb250RGVzY3JpcHRpb24m
IGRlcwogICAgICAgICBpZiAoZm9udFJhbmdlcy5pc051bGwoKSAmJiBtX2ZvbnRTZWxlY3RvcikK
ICAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBtX2ZvbnRTZWxlY3Rvci0+Zm9udFJhbmdlc0ZvckZh
bWlseShkZXNjcmlwdGlvbiwgc3RhbmRhcmRGYW1pbHkpOwogICAgICAgICBpZiAoZm9udFJhbmdl
cy5pc051bGwoKSkKLSAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBGb250UmFuZ2VzKGZvbnRDYWNo
ZSgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgIGZv
bnRSYW5nZXMgPSBGb250UmFuZ2VzKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkubGFzdFJlc29ydEZh
bGxiYWNrRm9udChkZXNjcmlwdGlvbikpOwogICAgICAgICByZXR1cm4gZm9udFJhbmdlczsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDb2NvYS5tbQppbmRleCA4Y2Q4NDgxNDJlMjU0NGEwMGJlZTU5M2RlYTE1ZjI0YjE1MTNiNDlm
Li5iMjI3MzVjY2JiMTAxNmI1NDEwZjZlYmM3Y2I0ODhjZGJmN2I1OTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCkBAIC0z
MzksMTEgKzMzOSwxMSBAQCBQYXNzUmVmUHRyPEZvbnQ+IEZvbnQ6OnBsYXRmb3JtQ3JlYXRlU2Nh
bGVkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBzYwogICAgICAgICBzY2FsZWRG
b250RGF0YS5tX3N5bnRoZXRpY0JvbGQgPSAoZm9udFRyYWl0cyAmIE5TQm9sZEZvbnRNYXNrKSAm
JiAhKHNjYWxlZEZvbnRUcmFpdHMgJiBOU0JvbGRGb250TWFzayk7CiAgICAgICAgIHNjYWxlZEZv
bnREYXRhLm1fc3ludGhldGljT2JsaXF1ZSA9IChmb250VHJhaXRzICYgTlNJdGFsaWNGb250TWFz
aykgJiYgIShzY2FsZWRGb250VHJhaXRzICYgTlNJdGFsaWNGb250TWFzayk7CiAKLSAgICAgICAg
cmV0dXJuIGZvbnRDYWNoZSgpLmZvbnRGb3JQbGF0Zm9ybURhdGEoc2NhbGVkRm9udERhdGEpOwor
ICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yUGxhdGZvcm1EYXRh
KHNjYWxlZEZvbnREYXRhKTsKICAgICB9CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2Vsc2UKICAgICBDVEZvbnRT
eW1ib2xpY1RyYWl0cyBmb250VHJhaXRzID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMobV9wbGF0
Zm9ybURhdGEuZm9udCgpKTsKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihtX3BsYXRmb3Jt
RGF0YS5mb250KCkpKTsKQEAgLTM2MCw3ICszNjAsNyBAQCBQYXNzUmVmUHRyPEZvbnQ+IEZvbnQ6
OnBsYXRmb3JtQ3JlYXRlU2NhbGVkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBz
YwogICAgICAgICBzY2FsZWRGb250RGF0YS5tX3N5bnRoZXRpY0JvbGQgPSAoZm9udFRyYWl0cyAm
IGtDVEZvbnRCb2xkVHJhaXQpICYmICEoc2NhbGVkRm9udFRyYWl0cyAmIGtDVEZvbnRUcmFpdEJv
bGQpOwogICAgICAgICBzY2FsZWRGb250RGF0YS5tX3N5bnRoZXRpY09ibGlxdWUgPSAoZm9udFRy
YWl0cyAmIGtDVEZvbnRJdGFsaWNUcmFpdCkgJiYgIShzY2FsZWRGb250VHJhaXRzICYga0NURm9u
dFRyYWl0SXRhbGljKTsKIAotICAgICAgICByZXR1cm4gZm9udENhY2hlKCkuZm9udEZvclBsYXRm
b3JtRGF0YShzY2FsZWRGb250RGF0YSk7CisgICAgICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLmZvbnRGb3JQbGF0Zm9ybURhdGEoc2NhbGVkRm9udERhdGEpOwogICAgIH0KIAogICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKaW5kZXggZGExZjJmOThjNzE3NWUyZWY1MWRmYzU3Y2YyZjcxNmViMGY0MzRkMy4uM2Y0NzJh
NGJlODczMWNmMmMwOWYzY2U1YjUxYzY1OTBlMWZhODc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0zNDYsMjkgKzM0NiwyOSBAQCBib29sIEZvbnRQ
bGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkKIFBhc3NSZWZQdHI8T3BlblR5cGVW
ZXJ0aWNhbERhdGE+IEZvbnRQbGF0Zm9ybURhdGE6OnZlcnRpY2FsRGF0YSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGhhc2goKSk7Ci0gICAgcmV0dXJuIGZvbnRDYWNoZSgpLmdldFZlcnRpY2FsRGF0
YShTdHJpbmc6Om51bWJlcihoYXNoKCkpLCAqdGhpcyk7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkuZ2V0VmVydGljYWxEYXRhKFN0cmluZzo6bnVtYmVyKGhhc2goKSksICp0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZh
Y2UgPSBjYWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKICAgICBp
ZiAoIWZyZWVUeXBlRmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgRlRfVUxvbmcgdGFibGVTaXplID0gMDsKICAgICAvLyBUYWcgYnl0ZXMgbmVl
ZCB0byBiZSByZXZlcnNlZCBiZWNhdXNlIE9UX01BS0VfVEFHIHVzZXMgYmlnLWVuZGlhbiBvcmRl
ci4KICAgICB1aW50MzJfdCB0YWcgPSBGVF9NQUtFX1RBRygodGFibGUgJiAweGZmKSwgKHRhYmxl
ICYgMHhmZjAwKSA+PiA4LCAodGFibGUgJiAweGZmMDAwMCkgPj4gMTYsIHRhYmxlID4+IDI0KTsK
ICAgICBpZiAoRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCAwLCAmdGFi
bGVTaXplKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGFi
bGVTaXplKTsKICAgICBGVF9VTG9uZyBleHBlY3RlZFRhYmxlU2l6ZSA9IHRhYmxlU2l6ZTsKICAg
ICBpZiAoYnVmZmVyLT5zaXplKCkgIT0gdGFibGVTaXplKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGVF9FcnJvciBlcnJvciA9IEZUX0xvYWRfU2Zu
dF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgcmVpbnRlcnByZXRfY2FzdDxGVF9CeXRlKj4o
Y29uc3RfY2FzdDxjaGFyKj4oYnVmZmVyLT5kYXRhKCkpKSwgJnRhYmxlU2l6ZSk7CiAgICAgaWYg
KGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY2Fpcm9fZnRfc2NhbGVkX2ZvbnRf
dW5sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0Lm1tCmluZGV4IGQ2ZWMzYTZiYTI4NzRmNTIzYWZjOGQyOWFmYzJkMDdmNzIxODMy
MDkuLjc5ZGZjZDE5YjFmNWJhYzE5NzkzM2RkYTA3ZjBiYTYxOGZkMmNjYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTI3NSwxMyArMjc1LDE0IEBAIHZv
aWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbXBsZXhU
ZXh0UnVucy5hcHBlbmQoQ29tcGxleFRleHRSdW46OmNyZWF0ZShtX2ZvbnQucHJpbWFyeUZvbnQo
KSwgY3AsIHN0cmluZ0xvY2F0aW9uICsgcnVuUmFuZ2UubG9jYXRpb24sIHJ1blJhbmdlLmxlbmd0
aCwgbV9ydW4ubHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJ1bkZvbnQgPSBmb250Q2Fj
aGUoKS5mb250Rm9yRmFtaWx5KG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgZm9udE5hbWUuZ2V0
KCksIGZhbHNlKS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgZm9udENhY2hlID0g
Rm9udENhY2hlOjpzaW5nbGV0b24oKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9IGZv
bnRDYWNoZS5mb250Rm9yRmFtaWx5KG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgZm9udE5hbWUu
Z2V0KCksIGZhbHNlKS5nZXQoKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICAgICAgICAg
ICAgICAvLyBDb3JlIFRleHQgbWF5IGhhdmUgdXNlZCBhIGZvbnQgdGhhdCBpcyBub3Qga25vd24g
dG8gTlNGb250TWFuYWdlci4gSW4gdGhhdCBjYXNlLCBmYWxsIGJhY2sgb24KICAgICAgICAgICAg
ICAgICAgICAgLy8gdXNpbmcgdGhlIGZvbnQgYXMgcmV0dXJuZWQsIGV2ZW4gdGhvdWdoIGl0IG1h
eSBub3QgaGF2ZSB0aGUgYmVzdCBOU0ZvbnRSZW5kZXJpbmdNb2RlLgogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXJ1bkZvbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRQbGF0Zm9y
bURhdGEgcnVuRm9udFBsYXRmb3JtRGF0YSgoTlNGb250ICopcnVuQ1RGb250LCBDVEZvbnRHZXRT
aXplKHJ1bkNURm9udCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9ICZmb250
Q2FjaGUoKS5mb250Rm9yUGxhdGZvcm1EYXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLmdldCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9IGZvbnRDYWNoZS5mb250Rm9yUGxhdGZv
cm1EYXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLnB0cigpOwogICAgICAgICAgICAgICAgICAgICB9
CiAjZWxzZQogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSnVzdCBhc3NlcnQgZm9yIG5v
dywgdW50aWwgd2UgY2FuIGRldmlzZSBhIGJldHRlciBmaXggdGhhdCB3b3JrcyB3aXRoIGlPUy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2Fj
aGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hl
TWFjLm1tCmluZGV4IDhkOTEyMjk2OTVmMmQ1MjNlOGE3ODgyZDI4MWZhYzc0ZTRmOGNhYTkuLmQw
YWY0ZGIzY2E0YjBkMDMwYmMzYzM5ZjM2MzQ0ZWJkNzgxMWU5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQpAQCAtMjc1
LDE2ICsyNzUsMTYgQEAgc3RhdGljIE5TRm9udCAqZm9udFdpdGhGYW1pbHkoTlNTdHJpbmcgKmRl
c2lyZWRGYW1pbHksIE5TRm9udFRyYWl0TWFzayBkZXNpcmVkVHIKIHN0YXRpYyB2b2lkIGludmFs
aWRhdGVGb250Q2FjaGUodm9pZCopCiB7CiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKCZpbnZhbGlkYXRlRm9udENhY2hlLCAwKTsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZCgmaW52YWxpZGF0ZUZvbnRDYWNoZSwgbnVsbHB0cik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgZm9udENhY2hlKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZSgpOwogICAgIFtkZXNpcmVkRmFtaWx5VG9BdmFp
bGFibGVGYW1pbHlEaWN0aW9uYXJ5KCkgcmVtb3ZlQWxsT2JqZWN0c107CiB9CiAKIHN0YXRpYyB2
b2lkIGZvbnRDYWNoZVJlZ2lzdGVyZWRGb250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayhD
Rk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmIG5hbWUs
IGNvbnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQogewotICAgIEFTU0VSVF9VTlVTRUQob2Jz
ZXJ2ZXIsIG9ic2VydmVyID09ICZmb250Q2FjaGUoKSk7CisgICAgQVNTRVJUX1VOVVNFRChvYnNl
cnZlciwgb2JzZXJ2ZXIgPT0gJkZvbnRDYWNoZTo6c2luZ2xldG9uKCkpOwogICAgIEFTU0VSVF9V
TlVTRUQobmFtZSwgQ0ZFcXVhbChuYW1lLCBrQ1RGb250TWFuYWdlclJlZ2lzdGVyZWRGb250c0No
YW5nZWROb3RpZmljYXRpb24pKTsKICAgICBpbnZhbGlkYXRlRm9udENhY2hlKDApOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcAppbmRleCBjNTJjZjEzNzNiNTJiZmM5MTU3NTIzM2EyMjZlN2ViN2Q4ZTg0NDc0Li4zMzUw
ZjE1MTY4OThjZTg1M2E5MzYxNTBkOTRlOTJjYTIzNDI4NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtMTQ5
LDcgKzE0OSw3IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFn
ZU1hc2tzKCkKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKICAgICBpZiAoIWluaXRpYWxp
emVkKSB7CiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgSU1MYW5nRm9udExp
bmtUeXBlKiBsYW5nRm9udExpbmsgPSBmb250Q2FjaGUoKS5nZXRGb250TGlua0ludGVyZmFjZSgp
OworICAgICAgICBJTUxhbmdGb250TGlua1R5cGUqIGxhbmdGb250TGluayA9IEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkuZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKICAgICAgICAgaWYgKCFsYW5nRm9u
dExpbmspCiAgICAgICAgICAgICByZXR1cm4gY29kZVBhZ2VNYXNrczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDEwYmEzY2RhNjYyZTMwZTdlMWQxNzVkZGI5Yjk3Yzg0
Yjk5YzI5YmUuLjlkMjQxNTNmYTQzZWNmZWNmY2E2MzhjNGIxZjdmMTkxYTc1ZWY1YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIElu
dGVybmFsczo6c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChib29sIGZsYWcsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIEludGVybmFsczo6aW52YWxpZGF0ZUZvbnRDYWNoZSgp
CiB7Ci0gICAgZm9udENhY2hlKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkuaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0U2Nyb2xsVmlld1Bv
c2l0aW9uKGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4
cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRH
ZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggZDMxMjRjMDdhMzc1NTRhMTFkYjY5
NGMxODI0YzRiNTQ5OGVmMzBjNy4uYzg2ZmQzNzZiYjY3ZmRjMjEwNjRmYTY2MGYyMmViNDJjNDQ5
ZGNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBv
cnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAg
LTM5MCw3ICszOTAsNiBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jcmVh
dGVAQml0bWFwSW5mb0BXZWJDb3JlQEBTQT9BVTEyQEFCVkludFNpemVAMkBXNEJpdENvdW50QDEy
QEBaLCA/Y3JlYXRlQEJpdG1hcEluZm9AV2ViQ29yZUBAU0E/QVUxMkBBRUJWSW50U2l6ZUAyQFc0
Qml0Q291bnRAMTJAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9kcmF3UGF0dGVybkBJ
bWFnZUBXZWJDb3JlQEBVQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJAQUJWRmxvYXRSZWN0QDJAQUJW
QWZmaW5lVHJhbnNmb3JtQDJAQUJWRmxvYXRQb2ludEAyQFc0Q29sb3JTcGFjZUAyQFc0Q29tcG9z
aXRlT3BlcmF0b3JAMkAxVzRCbGVuZE1vZGVAMkBAWiwgP2RyYXdQYXR0ZXJuQEltYWdlQFdlYkNv
cmVAQFVFQUFYUEVBVkdyYXBoaWNzQ29udGV4dEAyQEFFQlZGbG9hdFJlY3RAMkBBRUJWQWZmaW5l
VHJhbnNmb3JtQDJAQUVCVkZsb2F0UG9pbnRAMkBXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9w
ZXJhdG9yQDJAMVc0QmxlbmRNb2RlQDJAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9k
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemVAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdy
YXBoaWNzQ29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQEFCVkludFNpemVAMkBXNENvbG9yU3BhY2VA
MkBXNENvbXBvc2l0ZU9wZXJhdG9yQDJAQFosID9kcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemVA
Qml0bWFwSW1hZ2VAV2ViQ29yZUBATUVBQVhQRUFWR3JhcGhpY3NDb250ZXh0QDJAQUVCVkZsb2F0
UmVjdEAyQEFFQlZJbnRTaXplQDJAVzRDb2xvclNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAy
QEBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Zm9udENhY2hlQFdlYkNvcmVAQFlBQUFW
Rm9udENhY2hlQDFAWFosID9mb250Q2FjaGVAV2ViQ29yZUBAWUFBRUFWRm9udENhY2hlQDFAWFop
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnZhbGlkYXRlQEZvbnRDYWNoZUBXZWJDb3Jl
QEBRQUVYWFosID9pbnZhbGlkYXRlQEZvbnRDYWNoZUBXZWJDb3JlQEBRRUFBWFhaKQogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/bWF5RmlsbFdpdGhTb2xpZENvbG9yQEJpdG1hcEltYWdlQFdl
YkNvcmVAQE1BRV9OWFosID9tYXlGaWxsV2l0aFNvbGlkQ29sb3JAQml0bWFwSW1hZ2VAV2ViQ29y
ZUBATUVBQV9OWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zb2xpZENvbG9yQEJpdG1h
cEltYWdlQFdlYkNvcmVAQE1CRT9BVkNvbG9yQDJAWFosID9zb2xpZENvbG9yQEJpdG1hcEltYWdl
QFdlYkNvcmVAQE1FQkE/QVZDb2xvckAyQFhaKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
Q29yZVN0YXRpc3RpY3MubW0KaW5kZXggZThkY2IyNDQyMmRlZGJiODRhY2I5ZTgxNGVjM2FhNmVk
N2E0ZGRmZS4uNjY0NGNjNDQ3NjcwNGY3ZDRkNDI2OTZmOTkyNjc2YjY5YWE5ZTY0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0xNDcsMTcgKzE0
NywxNyBAQCArIChzaXplX3QpaWNvbnNXaXRoRGF0YUNvdW50CiAKICsgKHNpemVfdCljYWNoZWRG
b250RGF0YUNvdW50CiB7Ci0gICAgcmV0dXJuIGZvbnRDYWNoZSgpLmZvbnRDb3VudCgpOworICAg
IHJldHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRDb3VudCgpOwogfQogCiArIChzaXpl
X3QpY2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50CiB7Ci0gICAgcmV0dXJuIGZvbnRDYWNoZSgp
LmluYWN0aXZlRm9udENvdW50KCk7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCku
aW5hY3RpdmVGb250Q291bnQoKTsKIH0KIAogKyAodm9pZClwdXJnZUluYWN0aXZlRm9udERhdGEK
IHsKLSAgICBmb250Q2FjaGUoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBGb250Q2Fj
aGU6OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogfQogCiArIChzaXplX3Qp
Z2x5cGhQYWdlQ291bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IDExMjA2NzRkNDk5ZjU3ZWY0ODRkNjUwOTEyMTNjMjAxM2JiMDI3YWIuLmUyM2Q2YmQ2Yzll
NTUxYzgxMWI3YTNhNmQ1NGQ4ZjI3MzVmNzc0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtNDg3NSw3ICs0ODc1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpm
b250TmFtZUZvckRlc2NyaXB0aW9uKE5TU3RyaW5nICpmYW1pbHlOYW1lLCBCT09MIGl0YWxpYywg
Qk9PTAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhpdGFsaWMpOwogICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRXZWlnaHQoYm9sZCA/IEZvbnRXZWlnaHQ5MDAgOiBGb250V2VpZ2h0NTAw
KTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShwb2ludFNpemUpOwotICAg
IFJlZlB0cjxGb250PiBmb250ID0gZm9udENhY2hlKCkuZm9udEZvckZhbWlseShmb250RGVzY3Jp
cHRpb24sIGZhbWlseU5hbWUpOworICAgIFJlZlB0cjxGb250PiBmb250ID0gRm9udENhY2hlOjpz
aW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CiAg
ICAgcmV0dXJuIFtmb250LT5wbGF0Zm9ybURhdGEoKS5uc0ZvbnQoKSBmb250TmFtZV07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBlYjJjNmFlMWM2MTk0Y2I2YjE1
ZjdkMjg5ZmM3ZDdiZTgyMzBjNDI3Li42NWVlMTQ4NmNiZGYzYjNjY2Y2NmIwNWU1N2Y2ODBhZjkx
MThhNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMzQ2LDcgKzEz
NDYsNyBAQCArICh2b2lkKXB1cmdlSW5hY3RpdmVGb250RGF0YQogewogICAgIEFTU0VSVChXZWJU
aHJlYWRJc0N1cnJlbnQoKSk7CiAgICAgV2ViS2l0OjpNZW1vcnlNZWFzdXJlIG1lYXN1cmVyKCJN
ZW1vcnkgd2FybmluZzogUHVyZ2luZyBpbmFjdGl2ZSBmb250IGRhdGEuIik7Ci0gICAgZm9udENh
Y2hlKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisgICAgRm9udENhY2hlOjpzaW5nbGV0b24o
KS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKIH0KIAogKyAodm9pZClkcmFpbkxheWVyUG9vbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDE2ODAyNjVhZDgyZjhm
YmIyNjQyNDNmNjEyYWNlMDZhYjYyNmVmNGEuLjEwZjkxZmZkZTQwNGEyNzE3OTk4NTcwNTI2ZDM5
MjM4MWZiMDQwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0
aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAg
LTIxNSw3ICsyMTUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0
aWNzOjpjYWNoZWRGb250RGF0YUNvdW50KAogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQpIGZvbnRDYWNoZSgpLmZvbnRDb3Vu
dCgpOworICAgICpjb3VudCA9IChVSU5UKSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRDb3Vu
dCgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0yMjQsMTMgKzIyNCwxMyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGb250RGF0YUluYWN0
aXZlQ291bnQoCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
LSAgICAqY291bnQgPSAoVUlOVCkgZm9udENhY2hlKCkuaW5hY3RpdmVGb250Q291bnQoKTsKKyAg
ICAqY291bnQgPSAoVUlOVCkgRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbmFjdGl2ZUZvbnRDb3Vu
dCgpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkNvcmVTdGF0aXN0aWNzOjpwdXJnZUluYWN0aXZlRm9udERhdGEodm9pZCkKIHsKLSAgICBmb250
Q2FjaGUoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBGb250Q2FjaGU6OnNpbmdsZXRv
bigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA1NzMwYWY2YjdhMmUxNGMw
Yzc5MzM3NTMxMmUxNWMyMzllNTMzMmIyLi4wMWI3MWIzMDk5MTIyMGFkNzYwN2FkYTc1YzFhMzk0
N2I3YzhhODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTU4Niw3ICs1ODYsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnRlcm1pbmF0ZSgpCiB7CiAjaWZuZGVm
IE5ERUJVRwogICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0Tm93KCk7Ci0gICAgZm9u
dENhY2hlKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW52YWxp
ZGF0ZSgpOwogICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5zZXREaXNhYmxlZCh0cnVlKTsK
ICNlbmRpZgogCkBAIC02MzksMTIgKzYzOSwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gQ2xvc2UgYWxsIHRoZSBsaXZlIHBhZ2VzLgogICAg
IFZlY3RvcjxSZWZQdHI8V2ViUGFnZT4+IHBhZ2VzOwogICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvciht
X3BhZ2VNYXAsIHBhZ2VzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhZ2VzLnNpemUo
KTsgKytpKQotICAgICAgICBwYWdlc1tpXS0+Y2xvc2UoKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2Ug
OiBwYWdlcykKKyAgICAgICAgcGFnZS0+Y2xvc2UoKTsKICAgICBwYWdlcy5jbGVhcigpOwogCiAg
ICAgZ2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7Ci0gICAgZm9udENhY2hlKCku
aW52YWxpZGF0ZSgpOworICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZSgpOwog
ICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5zZXREaXNhYmxlZCh0cnVlKTsKICNlbmRpZiAg
ICAKIApAQCAtOTM5LDggKzkzOSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z2V0V2ViQ29yZVN0YXRp
c3RpY3ModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNl
dChBU0NJSUxpdGVyYWwoIkljb25zV2l0aERhdGFDb3VudCIpLCBpY29uRGF0YWJhc2UoKS5pY29u
UmVjb3JkQ291bnRXaXRoRGF0YSgpKTsKICAgICAKICAgICAvLyBHYXRoZXIgZm9udCBzdGF0aXN0
aWNzLgotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiQ2FjaGVk
Rm9udERhdGFDb3VudCIpLCBmb250Q2FjaGUoKS5mb250Q291bnQoKSk7Ci0gICAgZGF0YS5zdGF0
aXN0aWNzTnVtYmVycy5zZXQoQVNDSUlMaXRlcmFsKCJDYWNoZWRGb250RGF0YUluYWN0aXZlQ291
bnQiKSwgZm9udENhY2hlKCkuaW5hY3RpdmVGb250Q291bnQoKSk7CisgICAgYXV0byYgZm9udENh
Y2hlID0gRm9udENhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJz
LnNldChBU0NJSUxpdGVyYWwoIkNhY2hlZEZvbnREYXRhQ291bnQiKSwgZm9udENhY2hlLmZvbnRD
b3VudCgpKTsKKyAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJSUxpdGVyYWwoIkNh
Y2hlZEZvbnREYXRhSW5hY3RpdmVDb3VudCIpLCBmb250Q2FjaGUuaW5hY3RpdmVGb250Q291bnQo
KSk7CiAgICAgCiAgICAgLy8gR2F0aGVyIGdseXBoIHBhZ2Ugc3RhdGlzdGljcy4KICAgICBkYXRh
LnN0YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJSUxpdGVyYWwoIkdseXBoUGFnZUNvdW50IiksIEds
eXBoUGFnZTo6Y291bnQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246781</attachid>
            <date>2015-02-17 16:53:36 -0800</date>
            <delta_ts>2015-02-18 12:05:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141726-20150217165329.patch</filename>
            <type>text/plain</type>
            <size>28117</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWViZjNjYzVmZDVlMWUw
OTY0NjQ4NTQ4ZGE2ZDU2YzhhOWNjZGQ1OS4uMmZiNGY0NDJkMGEwM2YyOTE0MWJiODVjYjNkZDUw
YTZjODI0YWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDE1LTAyLTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQWNjZXNzIEZvbnRDYWNoZSBn
bG9iYWwgaW5zdGFuY2UgdmlhIHNpbmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTcyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2VzcyBGb250
Q2FjaGUgZ2xvYmFsIGluc3RhbmNlIHZpYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0
aW9uLAorICAgICAgICBhcyBwZXIgY29kaW5nIHN0eWxlLgorCisyMDE1LTAyLTE3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgQWNjZXNzIE1lbW9yeVByZXNzdXJl
SGFuZGxlciBnbG9iYWwgaW5zdGFuY2UgdmlhIGEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBm
dW5jdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxNjkxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlMGQwZWUwYWQzOGI3ZDliOGJhOGY5YTQzMzll
NzdjNWVkYzBkNjY3Li5kOTg2OGIxYmRiY2Q3YmJiMWJiOGJjNWU1YmMwNDE4ODIyMTcxZTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTUtMDItMTcgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBBY2Nlc3MgRm9udENhY2hlIGdsb2JhbCBp
bnN0YW5jZSB2aWEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNzI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXNzIEZvbnRDYWNoZSBn
bG9iYWwgaW5zdGFuY2UgdmlhIHNpbmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24sCisg
ICAgICAgIGFzIHBlciBjb2Rpbmcgc3R5bGUuCisKKzIwMTUtMDItMTcgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBBY2Nlc3MgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
IGdsb2JhbCBpbnN0YW5jZSB2aWEgYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9u
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE2OTEK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IDViYWY4OWY4MTk4ZmUyZjUwZDc3ZTU4Y2RjNDRlMWRiY2Vl
Yzc0Y2IuLjkzNjUwYWRjZjEyNGI0OTBmYmY2OTJlOTNkY2NlZGRmYmJiOWRkOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFjY2VzcyBGb250Q2FjaGUgZ2xvYmFsIGluc3RhbmNl
IHZpYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3MgRm9udENhY2hlIGdsb2JhbCBp
bnN0YW5jZSB2aWEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAg
YXMgcGVyIGNvZGluZyBzdHlsZS4KKwogMjAxNS0wMi0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdA
Y3Mud2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHNvbWUg
dW5uZWNlc3NhcnkgSW5zcGVjdG9yIHByZWZpeGVzIGZyb20gY2xhc3MgbmFtZXMgaW4gSW5zcGVj
dG9yIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYwNGMxYTljYWRlYmIxMmI4Yzk0OGFjNTc3N2Vl
NGNlNTlmY2JjYzQuLjBhYzZhYzc3Y2JhYWZjMDM5MDFkNWIyMGZjMmNlZDg2MzlhMzBhMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAogMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCisgICAgICAgIEFjY2VzcyBGb250Q2FjaGUgZ2xvYmFsIGluc3RhbmNl
IHZpYSBzaW5nbGV0b24oKSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3MgRm9udENhY2hlIGdsb2JhbCBp
bnN0YW5jZSB2aWEgc2luZ2xldG9uKCkgc3RhdGljIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAg
YXMgcGVyIGNvZGluZyBzdHlsZS4KKworMjAxNS0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCiAgICAgICAgIEFjY2VzcyBNZW1vcnlQcmVzc3VyZUhhbmRsZXIgZ2xvYmFs
IGluc3RhbmNlIHZpYSBhIHNpbmdsZXRvbigpIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24KICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTY5MQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCA0M2YwNTlkMGY3NTMzNTky
MjAzNjA0ZDgxZjQ1NDBlNmNkODkyODE0Li43NWJmZDgxZDk5ZGViYWNjNTc1ZGNmNjc2YjIyN2Jm
MzViNTY2ZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAg
LTEwNSw3ICsxMDUsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwogewogICAgIC8vIElmIHRo
ZSBmb250IGhhc24ndCBsb2FkZWQgb3IgYW4gZXJyb3Igb2NjdXJyZWQsIHRoZW4gd2UndmUgZ290
IG5vdGhpbmcuCiAgICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbV9mb250CiAjaWYgRU5BQkxFKFNWR19GT05U
UykKQEAgLTExNCw3ICsxMTQsNyBAQCBSZWZQdHI8Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGJvbwogICAgICkgewog
ICAgICAgICAvLyBXZSdyZSBsb2NhbC4gSnVzdCByZXR1cm4gYSBGb250IGZyb20gdGhlIG5vcm1h
bCBjYWNoZS4KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjaGVjayBhbHRlcm5hdGUgZm9u
dCBmYW1pbHkgbmFtZXMgaGVyZSwgc28gcGFzcyB0cnVlIGFzIHRoZSBjaGVja2luZ0FsdGVybmF0
ZU5hbWUgcGFyYW1ldGVyLgotICAgICAgICByZXR1cm4gZm9udENhY2hlKCkuZm9udEZvckZhbWls
eShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5nLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIG1fc3RyaW5n
LCB0cnVlKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBoYXNoS2V5ID0gKGZvbnREZXNjcmlwdGlv
bi5jb21wdXRlZFBpeGVsU2l6ZSgpICsgMSkgPDwgNSB8IGZvbnREZXNjcmlwdGlvbi53aWR0aFZh
cmlhbnQoKSA8PCAzCkBAIC0xNjMsNyArMTYzLDcgQEAgUmVmUHRyPEZvbnQ+IENTU0ZvbnRGYWNl
U291cmNlOjpmb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBib28K
ICAgICAgICAgLy8gYW5kIHRoZSBsb2FkZXIgbWF5IGludm9rZSBhcmJpdHJhcnkgZGVsZWdhdGUg
b3IgZXZlbnQgaGFuZGxlciBjb2RlLgogICAgICAgICBmb250U2VsZWN0b3ItPmJlZ2luTG9hZGlu
Z0ZvbnRTb29uKG1fZm9udC5nZXQoKSk7CiAKLSAgICAgICAgUmVmPEZvbnQ+IHBsYWNlaG9sZGVy
Rm9udCA9IGZvbnRDYWNoZSgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udERlc2NyaXB0aW9u
KTsKKyAgICAgICAgUmVmPEZvbnQ+IHBsYWNlaG9sZGVyRm9udCA9IEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkubGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pOwogICAgICAgICBS
ZWY8Rm9udD4gcGxhY2Vob2xkZXJGb250Q29weUluTG9hZGluZ1N0YXRlID0gRm9udDo6Y3JlYXRl
KHBsYWNlaG9sZGVyRm9udC0+cGxhdGZvcm1EYXRhKCksIHRydWUsIHRydWUpOwogICAgICAgICBy
ZXR1cm4gV1RGOjptb3ZlKHBsYWNlaG9sZGVyRm9udENvcHlJbkxvYWRpbmdTdGF0ZSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA4MmMwZWI1OGVmODNi
NmI3NjEwNjAyNzBlNjMwNDFlNTliZGQ1ZTlhLi4xMDRhZTcwNjdiMmZjZGQ5YTlmZDg2ZDVmZmIx
NjU5Y2Y0MGE4Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAt
NzAsMTMgKzcwLDEzIEBAIENTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKERvY3VtZW50
JiBkb2N1bWVudCkKICAgICAvLyBzZWVtIHRvIGJlIGFueSBzdWNoIGd1YXJhbnRlZS4KIAogICAg
IEFTU0VSVChtX2RvY3VtZW50KTsKLSAgICBmb250Q2FjaGUoKS5hZGRDbGllbnQodGhpcyk7Cisg
ICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5hZGRDbGllbnQodGhpcyk7CiB9CiAKIENTU0ZvbnRT
ZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCiB7CiAgICAgY2xlYXJEb2N1bWVudCgpOwotICAg
IGZvbnRDYWNoZSgpLnJlbW92ZUNsaWVudCh0aGlzKTsKKyAgICBGb250Q2FjaGU6OnNpbmdsZXRv
bigpLnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAogYm9vbCBDU1NGb250U2VsZWN0b3I6OmlzRW1w
dHkoKSBjb25zdApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRG
b250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAg
ICAgICAgIEFTU0VSVCghbV9sb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzLmNvbnRhaW5zKGZhbWls
eU5hbWUpKTsKIAogICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBsb2NhbGx5SW5zdGFsbGVk
Rm9udHNUcmFpdHNNYXNrczsKLSAgICAgICAgICAgIGZvbnRDYWNoZSgpLmdldFRyYWl0c0luRmFt
aWx5KGZhbWlseU5hbWUsIGxvY2FsbHlJbnN0YWxsZWRGb250c1RyYWl0c01hc2tzKTsKKyAgICAg
ICAgICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2V0VHJhaXRzSW5GYW1pbHkoZmFtaWx5TmFt
ZSwgbG9jYWxseUluc3RhbGxlZEZvbnRzVHJhaXRzTWFza3MpOwogICAgICAgICAgICAgaWYgKHVu
c2lnbmVkIG51bUxvY2FsbHlJbnN0YWxsZWRGYWNlcyA9IGxvY2FsbHlJbnN0YWxsZWRGb250c1Ry
YWl0c01hc2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gZmFtaWx5TG9jYWxseUlu
c3RhbGxlZEZhY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNl
Pj4+KCk7CiAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6
Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgogICAg
IGlmICghZmFjZSkgewogICAgICAgICBpZiAoIXJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QpCiAg
ICAgICAgICAgICBmYW1pbHlGb3JMb29rdXAgPSByZXNvbHZlR2VuZXJpY0ZhbWlseShtX2RvY3Vt
ZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOwotICAgICAgICByZXR1cm4gRm9udFJh
bmdlcyhmb250Q2FjaGUoKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5Rm9y
TG9va3VwKSk7CisgICAgICAgIHJldHVybiBGb250UmFuZ2VzKEZvbnRDYWNoZTo6c2luZ2xldG9u
KCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbWlseUZvckxvb2t1cCkpOwogICAg
IH0KIAogICAgIHJldHVybiBmYWNlLT5mb250UmFuZ2VzKGZvbnREZXNjcmlwdGlvbik7CkBAIC02
MTcsMTMgKzYxNywxMyBAQCBQYXNzUmVmUHRyPEZvbnQ+IENTU0ZvbnRTZWxlY3Rvcjo6ZmFsbGJh
Y2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzYwogICAgIEFTU0VSVF9VTlVT
RUQoaW5kZXgsICFpbmRleCk7CiAKICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IG1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CiAgICAgaWYgKCFzZXR0aW5ncyB8fCAhc2V0dGluZ3Mt
PmZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocygpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZm9udENhY2hlKCkuZm9udEZvckZh
bWlseShmb250RGVzY3JpcHRpb24sIHNldHRpbmdzLT5waWN0b2dyYXBoRm9udEZhbWlseSgpKTsK
KyAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNj
cmlwdGlvbiwgc2V0dGluZ3MtPnBpY3RvZ3JhcGhGb250RmFtaWx5KCkpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRl
eCBkNzNhZTk3MjQ0NzMyNDU1NDZmNzZhYTUwNGRhMTRhYmVhMDYwMWJmLi43YzkzMjkzZGIwYWUz
NzdhMjhlNGQ4NjAzNjE2MjAxZDBjYzI5YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VOb25jcml0aWNhbE1lbW9yeSgpCiB7CiAgICAg
ewogICAgICAgICBSZWxpZWZMb2dnZXIgbG9nKCJQdXJnZSBpbmFjdGl2ZSBGb250RGF0YSIpOwot
ICAgICAgICBmb250Q2FjaGUoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICAgICAgRm9u
dENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKICAgICB9CiAKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGUyN2Zl
OTVlYWI2NzJkYjFhODY3NWRlYTQ2NjFlMThiZDNiNzQ2MTEuLjhlMjEzOGEyNDM5OTkyNzhlZjA0
NDE1MGU1ZDlhNWMxMzRjYzliM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3RlbUZh
bGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udEQKICAg
ICAgICAgICAgIGNvZGVVbml0c0xlbmd0aCA9IDI7CiAgICAgICAgIH0KIAotICAgICAgICBmYWxs
YmFja0ZvbnQgPSBmb250Q2FjaGUoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3Jp
cHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBjb2RlVW5pdHMsIGNvZGVVbml0c0xlbmd0
aCkuZ2V0KCk7CisgICAgICAgIGZhbGxiYWNrRm9udCA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCku
c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCB0aGlzLCBpc0ZvclBsYXRm
b3JtRm9udCwgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpLmdldCgpOwogICAgICAgICBpZiAo
ZmFsbGJhY2tGb250KQogICAgICAgICAgICAgZmFsbGJhY2tGb250LT5tX2lzVXNlZEluU3lzdGVt
RmFsbGJhY2tDYWNoZSA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMDJkM2RkYWRmNGYwNmIzMzlmYmViOTdhZWYz
MGI5MzNkY2ZiZTY1Ny4uZDRmYmIyMWM3ZDVjODc3NDNiODg1Mzg1Y2FkYTBiMjAwNDYyOWI5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRm9udENhY2hlJiBmb250Q2FjaGUoKQorRm9udENhY2hlJiBGb250Q2FjaGU6OnNpbmds
ZXRvbigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYWNoZT4gZ2xvYmFsRm9u
dENhY2hlOwogICAgIHJldHVybiBnbG9iYWxGb250Q2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDJkZmM5ZmJkN2VhMTI4YWQyMThlYzQx
YWQwN2U1ZTk3ZjZlZTc2MmMuLjcyYzAwYzVmYjI5OTE4ODRlOWI4YTQyYThlMWYxYjEzNzczNjlh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBA
IC0xMDcsNyArMTA3LDcgQEAgY2xhc3MgRm9udENhY2hlIHsKIAogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZvbnRDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IGZyaWVuZCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBGb250Q2FjaGUmIHNpbmdsZXRvbigpOwogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgaW1wbGVt
ZW50ZWQgYnkgdGhlIHBsYXRmb3JtLgogICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0Zv
ckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgRm9udCogb3JpZ2luYWxG
b250RGF0YSwgYm9vbCBpc1BsYXRmb3JtRm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGlu
dCBsZW5ndGgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBG
b250Q2FjaGUoKTsKLSAgICB+Rm9udENhY2hlKCk7CisgICAgfkZvbnRDYWNoZSgpID0gZGVsZXRl
OwogCiAgICAgdm9pZCBwdXJnZVRpbWVyRmlyZWQoKTsKIApAQCAtMTg0LDkgKzE4NCw2IEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZvbnQ7CiB9OwogCi0vLyBHZXQgdGhlIGdsb2JhbCBm
b250Q2FjaGUuCi1XRUJDT1JFX0VYUE9SVCBGb250Q2FjaGUmIGZvbnRDYWNoZSgpOwotCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEdseXBocy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhz
LmNwcAppbmRleCA4MzljYWM1N2NmMmM1NWRlNThmMzMzYmRjNjU3NDU5MjQ3MmJlMmViLi5iMjBk
MGVkNWNkZGQyZDY0ZjFiMTZjNWRiYjI3NTJhYzBkNTRiYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250R2x5cGhzLmNwcApAQCAtMzcsMjEgKzM3LDIwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCiBGb250R2x5cGhzOjpGb250R2x5cGhzKFBhc3NSZWZQ
dHI8Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpCi0gICAgOiBtX2NhY2hlZFByaW1hcnlGb250
KDApCisgICAgOiBtX2NhY2hlZFByaW1hcnlGb250KG51bGxwdHIpCiAgICAgLCBtX2ZvbnRTZWxl
Y3Rvcihmb250U2VsZWN0b3IpCiAgICAgLCBtX2ZvbnRTZWxlY3RvclZlcnNpb24obV9mb250U2Vs
ZWN0b3IgPyBtX2ZvbnRTZWxlY3Rvci0+dmVyc2lvbigpIDogMCkKLSAgICAsIG1fZ2VuZXJhdGlv
bihmb250Q2FjaGUoKS5nZW5lcmF0aW9uKCkpCisgICAgLCBtX2dlbmVyYXRpb24oRm9udENhY2hl
OjpzaW5nbGV0b24oKS5nZW5lcmF0aW9uKCkpCiB7CiB9CiAKIEZvbnRHbHlwaHM6OkZvbnRHbHlw
aHMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQotICAgIDogbV9jYWNoZWRQ
cmltYXJ5Rm9udCgwKQotICAgICwgbV9mb250U2VsZWN0b3IoMCkKKyAgICA6IG1fY2FjaGVkUHJp
bWFyeUZvbnQobnVsbHB0cikKICAgICAsIG1fZm9udFNlbGVjdG9yVmVyc2lvbigwKQotICAgICwg
bV9nZW5lcmF0aW9uKGZvbnRDYWNoZSgpLmdlbmVyYXRpb24oKSkKKyAgICAsIG1fZ2VuZXJhdGlv
bihGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdlbmVyYXRpb24oKSkKICAgICAsIG1faXNGb3JQbGF0
Zm9ybUZvbnQodHJ1ZSkKIHsKLSAgICBtX3JlYWxpemVkRmFsbGJhY2tSYW5nZXMuYXBwZW5kKEZv
bnRSYW5nZXMoZm9udENhY2hlKCkuZm9udEZvclBsYXRmb3JtRGF0YShwbGF0Zm9ybURhdGEpKSk7
CisgICAgbV9yZWFsaXplZEZhbGxiYWNrUmFuZ2VzLmFwcGVuZChGb250UmFuZ2VzKEZvbnRDYWNo
ZTo6c2luZ2xldG9uKCkuZm9udEZvclBsYXRmb3JtRGF0YShwbGF0Zm9ybURhdGEpKSk7CiB9CiAK
IEZvbnRHbHlwaHM6On5Gb250R2x5cGhzKCkKQEAgLTgxLDYgKzgwLDcgQEAgc3RhdGljIEZvbnRS
YW5nZXMgcmVhbGl6ZU5leHRGYWxsYmFjayhjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCB1bnNpZ24KIHsKICAgICBBU1NFUlQoaW5kZXggPCBkZXNjcmlwdGlvbi5mYW1pbHlDb3Vu
dCgpKTsKIAorICAgIGF1dG8mIGZvbnRDYWNoZSA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCk7CiAg
ICAgd2hpbGUgKGluZGV4IDwgZGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKSkgewogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSA9IGRlc2NyaXB0aW9uLmZhbWlseUF0KGluZGV4Kysp
OwogICAgICAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKQEAgLTkwLDEzICs5MCwxMyBAQCBzdGF0
aWMgRm9udFJhbmdlcyByZWFsaXplTmV4dEZhbGxiYWNrKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIHVuc2lnbgogICAgICAgICAgICAgaWYgKCFyYW5nZXMuaXNOdWxsKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJhbmdlczsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0
byBmb250ID0gZm9udENhY2hlKCkuZm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwgZmFtaWx5KSkK
KyAgICAgICAgaWYgKGF1dG8gZm9udCA9IGZvbnRDYWNoZS5mb250Rm9yRmFtaWx5KGRlc2NyaXB0
aW9uLCBmYW1pbHkpKQogICAgICAgICAgICAgcmV0dXJuIEZvbnRSYW5nZXMoV1RGOjptb3ZlKGZv
bnQpKTsKICAgICB9CiAgICAgLy8gV2UgZGlkbid0IGZpbmQgYSBmb250LiBUcnkgdG8gZmluZCBh
IHNpbWlsYXIgZm9udCB1c2luZyBvdXIgb3duIHNwZWNpZmljIGtub3dsZWRnZSBhYm91dCBvdXIg
cGxhdGZvcm0uCiAgICAgLy8gRm9yIGV4YW1wbGUgb24gT1MgWCwgd2Uga25vdyB0byBtYXAgYW55
IGZhbWlsaWVzIGNvbnRhaW5pbmcgdGhlIHdvcmRzIEFyYWJpYywgUGFzaHRvLCBvciBVcmR1IHRv
IHRoZQogICAgIC8vIEdlZXphIFBybyBmb250LgotICAgIHJldHVybiBGb250UmFuZ2VzKGZvbnRD
YWNoZSgpLnNpbWlsYXJGb250KGRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIEZvbnRSYW5nZXMo
Zm9udENhY2hlLnNpbWlsYXJGb250KGRlc2NyaXB0aW9uKSk7CiB9CiAKIGNvbnN0IEZvbnRSYW5n
ZXMmIEZvbnRHbHlwaHM6OnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24sIHVuc2lnbmVkIGluZGV4KQpAQCAtMTA1LDcgKzEwNSw3IEBAIGNv
bnN0IEZvbnRSYW5nZXMmIEZvbnRHbHlwaHM6OnJlYWxpemVGYWxsYmFja1Jhbmdlc0F0KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZGVzCiAgICAgICAgIHJldHVybiBtX3JlYWxpemVkRmFsbGJhY2tS
YW5nZXNbaW5kZXhdOwogCiAgICAgQVNTRVJUKGluZGV4ID09IG1fcmVhbGl6ZWRGYWxsYmFja1Jh
bmdlcy5zaXplKCkpOwotICAgIEFTU0VSVChmb250Q2FjaGUoKS5nZW5lcmF0aW9uKCkgPT0gbV9n
ZW5lcmF0aW9uKTsKKyAgICBBU1NFUlQoRm9udENhY2hlOjpzaW5nbGV0b24oKS5nZW5lcmF0aW9u
KCkgPT0gbV9nZW5lcmF0aW9uKTsKIAogICAgIG1fcmVhbGl6ZWRGYWxsYmFja1Jhbmdlcy5hcHBl
bmQoRm9udFJhbmdlcygpKTsKICAgICBhdXRvJiBmb250UmFuZ2VzID0gbV9yZWFsaXplZEZhbGxi
YWNrUmFuZ2VzLmxhc3QoKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBjb25zdCBGb250UmFuZ2VzJiBG
b250R2x5cGhzOjpyZWFsaXplRmFsbGJhY2tSYW5nZXNBdChjb25zdCBGb250RGVzY3JpcHRpb24m
IGRlcwogICAgICAgICBpZiAoZm9udFJhbmdlcy5pc051bGwoKSAmJiBtX2ZvbnRTZWxlY3RvcikK
ICAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBtX2ZvbnRTZWxlY3Rvci0+Zm9udFJhbmdlc0ZvckZh
bWlseShkZXNjcmlwdGlvbiwgc3RhbmRhcmRGYW1pbHkpOwogICAgICAgICBpZiAoZm9udFJhbmdl
cy5pc051bGwoKSkKLSAgICAgICAgICAgIGZvbnRSYW5nZXMgPSBGb250UmFuZ2VzKGZvbnRDYWNo
ZSgpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgIGZv
bnRSYW5nZXMgPSBGb250UmFuZ2VzKEZvbnRDYWNoZTo6c2luZ2xldG9uKCkubGFzdFJlc29ydEZh
bGxiYWNrRm9udChkZXNjcmlwdGlvbikpOwogICAgICAgICByZXR1cm4gZm9udFJhbmdlczsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDb2NvYS5tbQppbmRleCA4Y2Q4NDgxNDJlMjU0NGEwMGJlZTU5M2RlYTE1ZjI0YjE1MTNiNDlm
Li5iMjI3MzVjY2JiMTAxNmI1NDEwZjZlYmM3Y2I0ODhjZGJmN2I1OTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCkBAIC0z
MzksMTEgKzMzOSwxMSBAQCBQYXNzUmVmUHRyPEZvbnQ+IEZvbnQ6OnBsYXRmb3JtQ3JlYXRlU2Nh
bGVkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBzYwogICAgICAgICBzY2FsZWRG
b250RGF0YS5tX3N5bnRoZXRpY0JvbGQgPSAoZm9udFRyYWl0cyAmIE5TQm9sZEZvbnRNYXNrKSAm
JiAhKHNjYWxlZEZvbnRUcmFpdHMgJiBOU0JvbGRGb250TWFzayk7CiAgICAgICAgIHNjYWxlZEZv
bnREYXRhLm1fc3ludGhldGljT2JsaXF1ZSA9IChmb250VHJhaXRzICYgTlNJdGFsaWNGb250TWFz
aykgJiYgIShzY2FsZWRGb250VHJhaXRzICYgTlNJdGFsaWNGb250TWFzayk7CiAKLSAgICAgICAg
cmV0dXJuIGZvbnRDYWNoZSgpLmZvbnRGb3JQbGF0Zm9ybURhdGEoc2NhbGVkRm9udERhdGEpOwor
ICAgICAgICByZXR1cm4gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yUGxhdGZvcm1EYXRh
KHNjYWxlZEZvbnREYXRhKTsKICAgICB9CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2Vsc2UKICAgICBDVEZvbnRT
eW1ib2xpY1RyYWl0cyBmb250VHJhaXRzID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMobV9wbGF0
Zm9ybURhdGEuZm9udCgpKTsKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihtX3BsYXRmb3Jt
RGF0YS5mb250KCkpKTsKQEAgLTM2MCw3ICszNjAsNyBAQCBQYXNzUmVmUHRyPEZvbnQ+IEZvbnQ6
OnBsYXRmb3JtQ3JlYXRlU2NhbGVkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBz
YwogICAgICAgICBzY2FsZWRGb250RGF0YS5tX3N5bnRoZXRpY0JvbGQgPSAoZm9udFRyYWl0cyAm
IGtDVEZvbnRCb2xkVHJhaXQpICYmICEoc2NhbGVkRm9udFRyYWl0cyAmIGtDVEZvbnRUcmFpdEJv
bGQpOwogICAgICAgICBzY2FsZWRGb250RGF0YS5tX3N5bnRoZXRpY09ibGlxdWUgPSAoZm9udFRy
YWl0cyAmIGtDVEZvbnRJdGFsaWNUcmFpdCkgJiYgIShzY2FsZWRGb250VHJhaXRzICYga0NURm9u
dFRyYWl0SXRhbGljKTsKIAotICAgICAgICByZXR1cm4gZm9udENhY2hlKCkuZm9udEZvclBsYXRm
b3JtRGF0YShzY2FsZWRGb250RGF0YSk7CisgICAgICAgIHJldHVybiBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLmZvbnRGb3JQbGF0Zm9ybURhdGEoc2NhbGVkRm9udERhdGEpOwogICAgIH0KIAogICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKaW5kZXggZGExZjJmOThjNzE3NWUyZWY1MWRmYzU3Y2YyZjcxNmViMGY0MzRkMy4uM2Y0NzJh
NGJlODczMWNmMmMwOWYzY2U1YjUxYzY1OTBlMWZhODc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0zNDYsMjkgKzM0NiwyOSBAQCBib29sIEZvbnRQ
bGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFybWFwKCkKIFBhc3NSZWZQdHI8T3BlblR5cGVW
ZXJ0aWNhbERhdGE+IEZvbnRQbGF0Zm9ybURhdGE6OnZlcnRpY2FsRGF0YSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGhhc2goKSk7Ci0gICAgcmV0dXJuIGZvbnRDYWNoZSgpLmdldFZlcnRpY2FsRGF0
YShTdHJpbmc6Om51bWJlcihoYXNoKCkpLCAqdGhpcyk7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkuZ2V0VmVydGljYWxEYXRhKFN0cmluZzo6bnVtYmVyKGhhc2goKSksICp0aGlz
KTsKIH0KIAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZh
Y2UgPSBjYWlyb19mdF9zY2FsZWRfZm9udF9sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKICAgICBp
ZiAoIWZyZWVUeXBlRmFjZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgRlRfVUxvbmcgdGFibGVTaXplID0gMDsKICAgICAvLyBUYWcgYnl0ZXMgbmVl
ZCB0byBiZSByZXZlcnNlZCBiZWNhdXNlIE9UX01BS0VfVEFHIHVzZXMgYmlnLWVuZGlhbiBvcmRl
ci4KICAgICB1aW50MzJfdCB0YWcgPSBGVF9NQUtFX1RBRygodGFibGUgJiAweGZmKSwgKHRhYmxl
ICYgMHhmZjAwKSA+PiA4LCAodGFibGUgJiAweGZmMDAwMCkgPj4gMTYsIHRhYmxlID4+IDI0KTsK
ICAgICBpZiAoRlRfTG9hZF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgdGFnLCAwLCAwLCAmdGFi
bGVTaXplKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGFi
bGVTaXplKTsKICAgICBGVF9VTG9uZyBleHBlY3RlZFRhYmxlU2l6ZSA9IHRhYmxlU2l6ZTsKICAg
ICBpZiAoYnVmZmVyLT5zaXplKCkgIT0gdGFibGVTaXplKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGVF9FcnJvciBlcnJvciA9IEZUX0xvYWRfU2Zu
dF9UYWJsZShmcmVlVHlwZUZhY2UsIHRhZywgMCwgcmVpbnRlcnByZXRfY2FzdDxGVF9CeXRlKj4o
Y29uc3RfY2FzdDxjaGFyKj4oYnVmZmVyLT5kYXRhKCkpKSwgJnRhYmxlU2l6ZSk7CiAgICAgaWYg
KGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRhYmxlU2l6ZSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgY2Fpcm9fZnRfc2NhbGVkX2ZvbnRf
dW5sb2NrX2ZhY2UobV9zY2FsZWRGb250KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0Lm1tCmluZGV4IGQ2ZWMzYTZiYTI4NzRmNTIzYWZjOGQyOWFmYzJkMDdmNzIxODMy
MDkuLjc5ZGZjZDE5YjFmNWJhYzE5NzkzM2RkYTA3ZjBiYTYxOGZkMmNjYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTI3NSwxMyArMjc1LDE0IEBAIHZv
aWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFj
dGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbXBsZXhU
ZXh0UnVucy5hcHBlbmQoQ29tcGxleFRleHRSdW46OmNyZWF0ZShtX2ZvbnQucHJpbWFyeUZvbnQo
KSwgY3AsIHN0cmluZ0xvY2F0aW9uICsgcnVuUmFuZ2UubG9jYXRpb24sIHJ1blJhbmdlLmxlbmd0
aCwgbV9ydW4ubHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJ1bkZvbnQgPSBmb250Q2Fj
aGUoKS5mb250Rm9yRmFtaWx5KG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgZm9udE5hbWUuZ2V0
KCksIGZhbHNlKS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgZm9udENhY2hlID0g
Rm9udENhY2hlOjpzaW5nbGV0b24oKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9IGZv
bnRDYWNoZS5mb250Rm9yRmFtaWx5KG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgZm9udE5hbWUu
Z2V0KCksIGZhbHNlKS5nZXQoKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICAgICAgICAg
ICAgICAvLyBDb3JlIFRleHQgbWF5IGhhdmUgdXNlZCBhIGZvbnQgdGhhdCBpcyBub3Qga25vd24g
dG8gTlNGb250TWFuYWdlci4gSW4gdGhhdCBjYXNlLCBmYWxsIGJhY2sgb24KICAgICAgICAgICAg
ICAgICAgICAgLy8gdXNpbmcgdGhlIGZvbnQgYXMgcmV0dXJuZWQsIGV2ZW4gdGhvdWdoIGl0IG1h
eSBub3QgaGF2ZSB0aGUgYmVzdCBOU0ZvbnRSZW5kZXJpbmdNb2RlLgogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXJ1bkZvbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRQbGF0Zm9y
bURhdGEgcnVuRm9udFBsYXRmb3JtRGF0YSgoTlNGb250ICopcnVuQ1RGb250LCBDVEZvbnRHZXRT
aXplKHJ1bkNURm9udCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9ICZmb250
Q2FjaGUoKS5mb250Rm9yUGxhdGZvcm1EYXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLmdldCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcnVuRm9udCA9IGZvbnRDYWNoZS5mb250Rm9yUGxhdGZv
cm1EYXRhKHJ1bkZvbnRQbGF0Zm9ybURhdGEpLnB0cigpOwogICAgICAgICAgICAgICAgICAgICB9
CiAjZWxzZQogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSnVzdCBhc3NlcnQgZm9yIG5v
dywgdW50aWwgd2UgY2FuIGRldmlzZSBhIGJldHRlciBmaXggdGhhdCB3b3JrcyB3aXRoIGlPUy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2Fj
aGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hl
TWFjLm1tCmluZGV4IDhkOTEyMjk2OTVmMmQ1MjNlOGE3ODgyZDI4MWZhYzc0ZTRmOGNhYTkuLmQw
YWY0ZGIzY2E0YjBkMDMwYmMzYzM5ZjM2MzQ0ZWJkNzgxMWU5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQpAQCAtMjc1
LDE2ICsyNzUsMTYgQEAgc3RhdGljIE5TRm9udCAqZm9udFdpdGhGYW1pbHkoTlNTdHJpbmcgKmRl
c2lyZWRGYW1pbHksIE5TRm9udFRyYWl0TWFzayBkZXNpcmVkVHIKIHN0YXRpYyB2b2lkIGludmFs
aWRhdGVGb250Q2FjaGUodm9pZCopCiB7CiAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKCZpbnZhbGlkYXRlRm9udENhY2hlLCAwKTsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZCgmaW52YWxpZGF0ZUZvbnRDYWNoZSwgbnVsbHB0cik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgZm9udENhY2hlKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZSgpOwogICAgIFtkZXNpcmVkRmFtaWx5VG9BdmFp
bGFibGVGYW1pbHlEaWN0aW9uYXJ5KCkgcmVtb3ZlQWxsT2JqZWN0c107CiB9CiAKIHN0YXRpYyB2
b2lkIGZvbnRDYWNoZVJlZ2lzdGVyZWRGb250c0NoYW5nZWROb3RpZmljYXRpb25DYWxsYmFjayhD
Rk5vdGlmaWNhdGlvbkNlbnRlclJlZiwgdm9pZCogb2JzZXJ2ZXIsIENGU3RyaW5nUmVmIG5hbWUs
IGNvbnN0IHZvaWQgKiwgQ0ZEaWN0aW9uYXJ5UmVmKQogewotICAgIEFTU0VSVF9VTlVTRUQob2Jz
ZXJ2ZXIsIG9ic2VydmVyID09ICZmb250Q2FjaGUoKSk7CisgICAgQVNTRVJUX1VOVVNFRChvYnNl
cnZlciwgb2JzZXJ2ZXIgPT0gJkZvbnRDYWNoZTo6c2luZ2xldG9uKCkpOwogICAgIEFTU0VSVF9V
TlVTRUQobmFtZSwgQ0ZFcXVhbChuYW1lLCBrQ1RGb250TWFuYWdlclJlZ2lzdGVyZWRGb250c0No
YW5nZWROb3RpZmljYXRpb24pKTsKICAgICBpbnZhbGlkYXRlRm9udENhY2hlKDApOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcAppbmRleCBjNTJjZjEzNzNiNTJiZmM5MTU3NTIzM2EyMjZlN2ViN2Q4ZTg0NDc0Li4zMzUw
ZjE1MTY4OThjZTg1M2E5MzYxNTBkOTRlOTJjYTIzNDI4NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtMTQ5
LDcgKzE0OSw3IEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8RFdPUkQsIDQ+JiBnZXRDSktDb2RlUGFn
ZU1hc2tzKCkKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKICAgICBpZiAoIWluaXRpYWxp
emVkKSB7CiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgSU1MYW5nRm9udExp
bmtUeXBlKiBsYW5nRm9udExpbmsgPSBmb250Q2FjaGUoKS5nZXRGb250TGlua0ludGVyZmFjZSgp
OworICAgICAgICBJTUxhbmdGb250TGlua1R5cGUqIGxhbmdGb250TGluayA9IEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkuZ2V0Rm9udExpbmtJbnRlcmZhY2UoKTsKICAgICAgICAgaWYgKCFsYW5nRm9u
dExpbmspCiAgICAgICAgICAgICByZXR1cm4gY29kZVBhZ2VNYXNrczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDEwYmEzY2RhNjYyZTMwZTdlMWQxNzVkZGI5Yjk3Yzg0
Yjk5YzI5YmUuLjlkMjQxNTNmYTQzZWNmZWNmY2E2MzhjNGIxZjdmMTkxYTc1ZWY1YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIElu
dGVybmFsczo6c2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChib29sIGZsYWcsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIEludGVybmFsczo6aW52YWxpZGF0ZUZvbnRDYWNoZSgp
CiB7Ci0gICAgZm9udENhY2hlKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRDYWNoZTo6c2luZ2xl
dG9uKCkuaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0U2Nyb2xsVmlld1Bv
c2l0aW9uKGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4
cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRH
ZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggZDMxMjRjMDdhMzc1NTRhMTFkYjY5
NGMxODI0YzRiNTQ5OGVmMzBjNy4uYWM2NzVlNTZmODMxNzFhODBmYmEzYjRiMTM1ODA0YzBkZjZk
YWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBv
cnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAg
LTM5MCw3ICszOTAsNyBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jcmVh
dGVAQml0bWFwSW5mb0BXZWJDb3JlQEBTQT9BVTEyQEFCVkludFNpemVAMkBXNEJpdENvdW50QDEy
QEBaLCA/Y3JlYXRlQEJpdG1hcEluZm9AV2ViQ29yZUBAU0E/QVUxMkBBRUJWSW50U2l6ZUAyQFc0
Qml0Q291bnRAMTJAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9kcmF3UGF0dGVybkBJ
bWFnZUBXZWJDb3JlQEBVQUVYUEFWR3JhcGhpY3NDb250ZXh0QDJAQUJWRmxvYXRSZWN0QDJAQUJW
QWZmaW5lVHJhbnNmb3JtQDJAQUJWRmxvYXRQb2ludEAyQFc0Q29sb3JTcGFjZUAyQFc0Q29tcG9z
aXRlT3BlcmF0b3JAMkAxVzRCbGVuZE1vZGVAMkBAWiwgP2RyYXdQYXR0ZXJuQEltYWdlQFdlYkNv
cmVAQFVFQUFYUEVBVkdyYXBoaWNzQ29udGV4dEAyQEFFQlZGbG9hdFJlY3RAMkBBRUJWQWZmaW5l
VHJhbnNmb3JtQDJAQUVCVkZsb2F0UG9pbnRAMkBXNENvbG9yU3BhY2VAMkBXNENvbXBvc2l0ZU9w
ZXJhdG9yQDJAMVc0QmxlbmRNb2RlQDJAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9k
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemVAQml0bWFwSW1hZ2VAV2ViQ29yZUBATUFFWFBBVkdy
YXBoaWNzQ29udGV4dEAyQEFCVkZsb2F0UmVjdEAyQEFCVkludFNpemVAMkBXNENvbG9yU3BhY2VA
MkBXNENvbXBvc2l0ZU9wZXJhdG9yQDJAQFosID9kcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemVA
Qml0bWFwSW1hZ2VAV2ViQ29yZUBATUVBQVhQRUFWR3JhcGhpY3NDb250ZXh0QDJAQUVCVkZsb2F0
UmVjdEAyQEFFQlZJbnRTaXplQDJAVzRDb2xvclNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAy
QEBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Zm9udENhY2hlQFdlYkNvcmVAQFlBQUFW
Rm9udENhY2hlQDFAWFosID9mb250Q2FjaGVAV2ViQ29yZUBAWUFBRUFWRm9udENhY2hlQDFAWFop
CisgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zaW5nbGV0b25ARm9udENhY2hlQFdlYkNvcmVA
QFNBQUFWMTJAWFosID9zaW5nbGV0b25ARm9udENhY2hlQFdlYkNvcmVAQFNBQUFWMTJAWFopCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnZhbGlkYXRlQEZvbnRDYWNoZUBXZWJDb3JlQEBR
QUVYWFosID9pbnZhbGlkYXRlQEZvbnRDYWNoZUBXZWJDb3JlQEBRRUFBWFhaKQogICAgICAgICBz
eW1ib2xXaXRoUG9pbnRlcig/bWF5RmlsbFdpdGhTb2xpZENvbG9yQEJpdG1hcEltYWdlQFdlYkNv
cmVAQE1BRV9OWFosID9tYXlGaWxsV2l0aFNvbGlkQ29sb3JAQml0bWFwSW1hZ2VAV2ViQ29yZUBA
TUVBQV9OWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zb2xpZENvbG9yQEJpdG1hcElt
YWdlQFdlYkNvcmVAQE1CRT9BVkNvbG9yQDJAWFosID9zb2xpZENvbG9yQEJpdG1hcEltYWdlQFdl
YkNvcmVAQE1FQkE/QVZDb2xvckAyQFhaKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29y
ZVN0YXRpc3RpY3MubW0KaW5kZXggZThkY2IyNDQyMmRlZGJiODRhY2I5ZTgxNGVjM2FhNmVkN2E0
ZGRmZS4uNjY0NGNjNDQ3NjcwNGY3ZDRkNDI2OTZmOTkyNjc2YjY5YWE5ZTY0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0xNDcsMTcgKzE0Nywx
NyBAQCArIChzaXplX3QpaWNvbnNXaXRoRGF0YUNvdW50CiAKICsgKHNpemVfdCljYWNoZWRGb250
RGF0YUNvdW50CiB7Ci0gICAgcmV0dXJuIGZvbnRDYWNoZSgpLmZvbnRDb3VudCgpOworICAgIHJl
dHVybiBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRDb3VudCgpOwogfQogCiArIChzaXplX3Qp
Y2FjaGVkRm9udERhdGFJbmFjdGl2ZUNvdW50CiB7Ci0gICAgcmV0dXJuIGZvbnRDYWNoZSgpLmlu
YWN0aXZlRm9udENvdW50KCk7CisgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW5h
Y3RpdmVGb250Q291bnQoKTsKIH0KIAogKyAodm9pZClwdXJnZUluYWN0aXZlRm9udERhdGEKIHsK
LSAgICBmb250Q2FjaGUoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBGb250Q2FjaGU6
OnNpbmdsZXRvbigpLnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogfQogCiArIChzaXplX3QpZ2x5
cGhQYWdlQ291bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDExMjA2NzRkNDk5ZjU3ZWY0ODRkNjUwOTEyMTNjMjAxM2JiMDI3YWIuLmUyM2Q2YmQ2YzllNTUx
YzgxMWI3YTNhNmQ1NGQ4ZjI3MzVmNzc0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtNDg3NSw3ICs0ODc1LDcgQEAgc3RhdGljIE5TU3RyaW5nICpmb250
TmFtZUZvckRlc2NyaXB0aW9uKE5TU3RyaW5nICpmYW1pbHlOYW1lLCBCT09MIGl0YWxpYywgQk9P
TAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhpdGFsaWMpOwogICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRXZWlnaHQoYm9sZCA/IEZvbnRXZWlnaHQ5MDAgOiBGb250V2VpZ2h0NTAwKTsK
ICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShwb2ludFNpemUpOwotICAgIFJl
ZlB0cjxGb250PiBmb250ID0gZm9udENhY2hlKCkuZm9udEZvckZhbWlseShmb250RGVzY3JpcHRp
b24sIGZhbWlseU5hbWUpOworICAgIFJlZlB0cjxGb250PiBmb250ID0gRm9udENhY2hlOjpzaW5n
bGV0b24oKS5mb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CiAgICAg
cmV0dXJuIFtmb250LT5wbGF0Zm9ybURhdGEoKS5uc0ZvbnQoKSBmb250TmFtZV07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBlYjJjNmFlMWM2MTk0Y2I2YjE1Zjdk
Mjg5ZmM3ZDdiZTgyMzBjNDI3Li42NWVlMTQ4NmNiZGYzYjNjY2Y2NmIwNWU1N2Y2ODBhZjkxMThh
NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xMzQ2LDcgKzEzNDYs
NyBAQCArICh2b2lkKXB1cmdlSW5hY3RpdmVGb250RGF0YQogewogICAgIEFTU0VSVChXZWJUaHJl
YWRJc0N1cnJlbnQoKSk7CiAgICAgV2ViS2l0OjpNZW1vcnlNZWFzdXJlIG1lYXN1cmVyKCJNZW1v
cnkgd2FybmluZzogUHVyZ2luZyBpbmFjdGl2ZSBmb250IGRhdGEuIik7Ci0gICAgZm9udENhY2hl
KCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CisgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5w
dXJnZUluYWN0aXZlRm9udERhdGEoKTsKIH0KIAogKyAodm9pZClkcmFpbkxheWVyUG9vbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDE2ODAyNjVhZDgyZjhmYmIy
NjQyNDNmNjEyYWNlMDZhYjYyNmVmNGEuLjEwZjkxZmZkZTQwNGEyNzE3OTk4NTcwNTI2ZDM5MjM4
MWZiMDQwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdGF0aXN0aWNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTIx
NSw3ICsyMTUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0aWNz
OjpjYWNoZWRGb250RGF0YUNvdW50KAogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7Ci0gICAgKmNvdW50ID0gKFVJTlQpIGZvbnRDYWNoZSgpLmZvbnRDb3VudCgp
OworICAgICpjb3VudCA9IChVSU5UKSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmZvbnRDb3VudCgp
OwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0yMjQsMTMgKzIyNCwxMyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkNvcmVTdGF0aXN0aWNzOjpjYWNoZWRGb250RGF0YUluYWN0aXZl
Q291bnQoCiB7CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLSAg
ICAqY291bnQgPSAoVUlOVCkgZm9udENhY2hlKCkuaW5hY3RpdmVGb250Q291bnQoKTsKKyAgICAq
Y291bnQgPSAoVUlOVCkgRm9udENhY2hlOjpzaW5nbGV0b24oKS5pbmFjdGl2ZUZvbnRDb3VudCgp
OwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNv
cmVTdGF0aXN0aWNzOjpwdXJnZUluYWN0aXZlRm9udERhdGEodm9pZCkKIHsKLSAgICBmb250Q2Fj
aGUoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKKyAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigp
LnB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA1NzMwYWY2YjdhMmUxNGMwYzc5
MzM3NTMxMmUxNWMyMzllNTMzMmIyLi4wMWI3MWIzMDk5MTIyMGFkNzYwN2FkYTc1YzFhMzk0N2I3
YzhhODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTU4
Niw3ICs1ODYsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnRlcm1pbmF0ZSgpCiB7CiAjaWZuZGVmIE5E
RUJVRwogICAgIGdjQ29udHJvbGxlcigpLmdhcmJhZ2VDb2xsZWN0Tm93KCk7Ci0gICAgZm9udENh
Y2hlKCkuaW52YWxpZGF0ZSgpOworICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0
ZSgpOwogICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5zZXREaXNhYmxlZCh0cnVlKTsKICNl
bmRpZgogCkBAIC02MzksMTIgKzYzOSwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpCiAgICAgLy8gQ2xvc2UgYWxsIHRoZSBsaXZlIHBhZ2VzLgogICAgIFZl
Y3RvcjxSZWZQdHI8V2ViUGFnZT4+IHBhZ2VzOwogICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3Bh
Z2VNYXAsIHBhZ2VzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhZ2VzLnNpemUoKTsg
KytpKQotICAgICAgICBwYWdlc1tpXS0+Y2xvc2UoKTsKKyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBw
YWdlcykKKyAgICAgICAgcGFnZS0+Y2xvc2UoKTsKICAgICBwYWdlcy5jbGVhcigpOwogCiAgICAg
Z2NDb250cm9sbGVyKCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7Ci0gICAgZm9udENhY2hlKCkuaW52
YWxpZGF0ZSgpOworICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuaW52YWxpZGF0ZSgpOwogICAg
IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5zZXREaXNhYmxlZCh0cnVlKTsKICNlbmRpZiAgICAK
IApAQCAtOTM5LDggKzkzOSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z2V0V2ViQ29yZVN0YXRpc3Rp
Y3ModWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldChB
U0NJSUxpdGVyYWwoIkljb25zV2l0aERhdGFDb3VudCIpLCBpY29uRGF0YWJhc2UoKS5pY29uUmVj
b3JkQ291bnRXaXRoRGF0YSgpKTsKICAgICAKICAgICAvLyBHYXRoZXIgZm9udCBzdGF0aXN0aWNz
LgotICAgIGRhdGEuc3RhdGlzdGljc051bWJlcnMuc2V0KEFTQ0lJTGl0ZXJhbCgiQ2FjaGVkRm9u
dERhdGFDb3VudCIpLCBmb250Q2FjaGUoKS5mb250Q291bnQoKSk7Ci0gICAgZGF0YS5zdGF0aXN0
aWNzTnVtYmVycy5zZXQoQVNDSUlMaXRlcmFsKCJDYWNoZWRGb250RGF0YUluYWN0aXZlQ291bnQi
KSwgZm9udENhY2hlKCkuaW5hY3RpdmVGb250Q291bnQoKSk7CisgICAgYXV0byYgZm9udENhY2hl
ID0gRm9udENhY2hlOjpzaW5nbGV0b24oKTsKKyAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNl
dChBU0NJSUxpdGVyYWwoIkNhY2hlZEZvbnREYXRhQ291bnQiKSwgZm9udENhY2hlLmZvbnRDb3Vu
dCgpKTsKKyAgICBkYXRhLnN0YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJSUxpdGVyYWwoIkNhY2hl
ZEZvbnREYXRhSW5hY3RpdmVDb3VudCIpLCBmb250Q2FjaGUuaW5hY3RpdmVGb250Q291bnQoKSk7
CiAgICAgCiAgICAgLy8gR2F0aGVyIGdseXBoIHBhZ2Ugc3RhdGlzdGljcy4KICAgICBkYXRhLnN0
YXRpc3RpY3NOdW1iZXJzLnNldChBU0NJSUxpdGVyYWwoIkdseXBoUGFnZUNvdW50IiksIEdseXBo
UGFnZTo6Y291bnQoKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>