<?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>211527</bug_id>
          
          <creation_ts>2020-05-06 12:46:34 -0700</creation_ts>
          <short_desc>Use CocoaColor in more places instead of platform defines</short_desc>
          <delta_ts>2020-05-06 16:50:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1649753</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-06 12:46:34 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649821</commentid>
    <comment_count>1</comment_count>
      <attachid>398664</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-06 14:54:10 -0700</bug_when>
    <thetext>Created attachment 398664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649824</commentid>
    <comment_count>2</comment_count>
      <attachid>398665</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-06 14:56:42 -0700</bug_when>
    <thetext>Created attachment 398665
Fix bug title</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649834</commentid>
    <comment_count>3</comment_count>
      <attachid>398665</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 15:05:48 -0700</bug_when>
    <thetext>Comment on attachment 398665
Fix bug title

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

Nice clean up. This is the kind of abstraction I really like.

Not sure each of these (CocoaColor, CocoaFont/Descriptor, CocoaImage) should have its own header. Seems like they could share.

&gt; Source/WebKit/Platform/cocoa/CocoaFont.h:29
&gt; +@class NSFont, NSFontDescriptor;

Didn’t even know you could use commas in these! Not sure I would have.

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:103
&gt; +    if ([object isKindOfClass:[CocoaColor class]])

I’m tempted in new code to write &quot;.class&quot; instead.

&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:434
&gt; +        encodeColorInternal(encoder, static_cast&lt;CocoaColor *&gt;(object));

Seems like for the future we need a Objective-C pointer cast that, at least in debug builds, checks the class.

&gt; Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.h:48
&gt;  using ViewType = NSView;
&gt;  using RectType = NSRect;

Other candidates.

&gt; Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.mm:57
&gt;  using TextViewType = NSTextView;
&gt;  using ButtonType = NSButton;
&gt;  using AlignmentType = NSLayoutAttribute;
&gt;  using SizeType = NSSize;

Other candidates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649837</commentid>
    <comment_count>4</comment_count>
      <attachid>398665</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-05-06 15:06:13 -0700</bug_when>
    <thetext>Comment on attachment 398665
Fix bug title

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

&gt; Source/WebKit/Platform/cocoa/CocoaFont.h:29
&gt; +@class NSFont, NSFontDescriptor;

1) I know these aren&apos;t variable declarations but the multi-line thing still looks surprising.
2) Why not OBJC_CLASS in case these get included in C++ code? (which seems ... likely)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649846</commentid>
    <comment_count>5</comment_count>
      <attachid>398665</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-06 15:15:15 -0700</bug_when>
    <thetext>Comment on attachment 398665
Fix bug title

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

&gt;&gt;&gt; Source/WebKit/Platform/cocoa/CocoaFont.h:29
&gt;&gt;&gt; +@class NSFont, NSFontDescriptor;
&gt;&gt; 
&gt;&gt; Didn’t even know you could use commas in these! Not sure I would have.
&gt; 
&gt; 1) I know these aren&apos;t variable declarations but the multi-line thing still looks surprising.
&gt; 2) Why not OBJC_CLASS in case these get included in C++ code? (which seems ... likely)

(1) We use it in a few public headers! (JSContext.h, WKDOMRange.h)
(2) Good point! I’ll change these to be OBJC_CLASS instead.

&gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:103
&gt;&gt; +    if ([object isKindOfClass:[CocoaColor class]])
&gt; 
&gt; I’m tempted in new code to write &quot;.class&quot; instead.

👍🏻 Will make that change here, and below (CocoaFont.class).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649853</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-06 15:22:02 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #5)
&gt; Comment on attachment 398665 [details]
&gt; Fix bug title
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398665&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/Platform/cocoa/CocoaFont.h:29
&gt; &gt;&gt;&gt; +@class NSFont, NSFontDescriptor;
&gt; &gt;&gt; 
&gt; &gt;&gt; Didn’t even know you could use commas in these! Not sure I would have.
&gt; &gt; 
&gt; &gt; 1) I know these aren&apos;t variable declarations but the multi-line thing still looks surprising.
&gt; &gt; 2) Why not OBJC_CLASS in case these get included in C++ code? (which seems ... likely)
&gt; 
&gt; (1) We use it in a few public headers! (JSContext.h, WKDOMRange.h)
&gt; (2) Good point! I’ll change these to be OBJC_CLASS instead.

I’m also going to change existing `@class`s in CocoaImage.h to be OBJC_CLASS as well, for consistency.

&gt; 
&gt; &gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:103
&gt; &gt;&gt; +    if ([object isKindOfClass:[CocoaColor class]])
&gt; &gt; 
&gt; &gt; I’m tempted in new code to write &quot;.class&quot; instead.
&gt; 
&gt; 👍🏻 Will make that change here, and below (CocoaFont.class).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649862</commentid>
    <comment_count>7</comment_count>
      <attachid>398665</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-06 15:46:12 -0700</bug_when>
    <thetext>Comment on attachment 398665
Fix bug title

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

&gt;&gt;&gt;&gt; Source/WebKit/Shared/Cocoa/ArgumentCodersCocoa.mm:103
&gt;&gt;&gt;&gt; +    if ([object isKindOfClass:[CocoaColor class]])
&gt;&gt;&gt; 
&gt;&gt;&gt; I’m tempted in new code to write &quot;.class&quot; instead.
&gt;&gt; 
&gt;&gt; 👍🏻 Will make that change here, and below (CocoaFont.class).
&gt; 
&gt; 

Unfortunately, I can’t make this change since CocoaColor is a “using&quot; declaration :(

I put together this simple snippet in a standalone test case:

@class NSString;
using MyString = NSString;

static Class foo()
{
    return MyString.class;
}

…attempting to compile this results in:

/Volumes/…/foo.mm:16:12: error: expected identifier or &apos;(&apos;
    return MyString.class;
           ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649864</commentid>
    <comment_count>8</comment_count>
      <attachid>398677</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-06 15:48:19 -0700</bug_when>
    <thetext>Created attachment 398677
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649885</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-06 16:25:50 -0700</bug_when>
    <thetext>Patch 398677 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649887</commentid>
    <comment_count>10</comment_count>
      <attachid>398681</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-05-06 16:26:56 -0700</bug_when>
    <thetext>Created attachment 398681
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649897</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-06 16:50:23 -0700</bug_when>
    <thetext>Committed r261259: &lt;https://trac.webkit.org/changeset/261259&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398681.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398664</attachid>
            <date>2020-05-06 14:54:10 -0700</date>
            <delta_ts>2020-05-06 14:56:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211527-20200506145408.patch</filename>
            <type>text/plain</type>
            <size>17631</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA5NGQxODBlMTJiODM2N2Y2
Y2MxYTI3ZTIyY2E1Y2UwNzNlN2M1ZDguLjRkOWZhNTJmYzk3MmQwNjY3OWQ5MTQwYWM4MmRjNzlj
OTYzNjE5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDUtMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvbG9yQ29jb2Eg
aW4gbW9yZSBwbGFjZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkZWZpbmVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE1MjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgQ29jb2FDb2xvciAoYWRkZWQg
aW4gcjI2MTI0NykgaW4gbW9yZSBwbGFjZXMsIGFuZCBhbHNvIGludHJvZHVjZSBgQ29jb2FGb250
LmhgIGFuZCB1c2UgaXQgdG8gc2ltcGxpZnkgc29tZQorICAgICAgICBleGlzdGluZyBjb2RlIHRo
YXQgdXNlcyBwbGF0Zm9ybSBpZmRlZnMgZm9yIFVJRm9udCwgTlNGb250LCBVSUZvbnREZXNjcmlw
dG9yIGFuZCBOU0ZvbnREZXNjcmlwdG9yLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlv
ci4KKworICAgICAgICAqIFBsYXRmb3JtL2NvY29hL0NvY29hRm9udC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6
dHlwZUZyb21PYmplY3QpOgorICAgICAgICAoSVBDOjppc1NlcmlhbGl6YWJsZVZhbHVlKToKKyAg
ICAgICAgKElQQzo6ZW5jb2RlRm9udEludGVybmFsKToKKyAgICAgICAgKElQQzo6ZW5jb2RlT2Jq
ZWN0KToKKyAgICAgICAgKElQQzo6cGxhdGZvcm1Db2xvckNsYXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKElQQzo6cGxhdGZvcm1Gb250Q2xhc3MpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9D
b2NvYS9Db3JlVGV4dEhlbHBlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQ29yZVRleHRI
ZWxwZXJzLm1tOgorICAgICAgICAoV2ViS2l0Ojpmb250V2l0aEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbToKKyAgICAgICAgKGZvbnRPZlNp
emUpOgorICAgICAgICAoY29sb3JGb3JJdGVtKToKKyAgICAgICAgKC1bV0tTYWZlQnJvd3NpbmdC
b3ggc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOl0pOgorICAgICAgICAoLVtXS1NhZmVC
cm93c2luZ1dhcm5pbmcgc2hvd0RldGFpbHNDbGlja2VkXSk6CisgICAgICAgICgtW1dLU2FmZUJy
b3dzaW5nVGV4dFZpZXcgaW5pdFdpdGhBdHRyaWJ1dGVkU3RyaW5nOmZvcldhcm5pbmc6XSk6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDUtMDYg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQ3V0IGFu
ZCBwYXN0ZSBmcm9tIEdvb2dsZSBEb2MgdG8gTm90ZXMgaW4gc2V2ZXJhbCAobm9uLUxhdGluKSBs
YW5ndWFnZXMgZG9lc24ndCB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL0NvY29hRm9udC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUZv
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNjQ5MDU5MDc4YmI3MzQwNGE1NjQwMTkxNDEyZWFlMzZhMmQzMDY1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUZv
bnQuaApAQCAtMCwwICsxLDM2IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFy
ZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUEtJVCkKK0BjbGFzcyBOU0Zv
bnQsIE5TRm9udERlc2NyaXB0b3I7Cit1c2luZyBDb2NvYUZvbnQgPSBOU0ZvbnQ7Cit1c2luZyBD
b2NvYUZvbnREZXNjcmlwdG9yID0gTlNGb250RGVzY3JpcHRvcjsKKyNlbHNlCitAY2xhc3MgVUlG
b250LCBVSUZvbnREZXNjcmlwdG9yOwordXNpbmcgQ29jb2FGb250ID0gVUlGb250OwordXNpbmcg
Q29jb2FGb250RGVzY3JpcHRvciA9IFVJRm9udERlc2NyaXB0b3I7CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDJi
MDhkZmQzNWVhZGU3OTg1ZDg4NjVhYzQwNmFiMzhjYWRkNWJkMTUuLjBkY2I5N2UwMzg0OWQ1N2Fl
NzY1N2NjNmJmNTBiMWJiYjE3MTlhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMjksNiArMjksOCBAQAogI2lmIFBMQVRG
T1JNKENPQ09BKQogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1wb3J0ICJDb2Nv
YUNvbG9yLmgiCisjaW1wb3J0ICJDb2NvYUZvbnQuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVy
cy5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZv
bnREZXNjcmlwdG9yLmg+CkBAIC00NywxNCArNDksNiBAQAogI2ltcG9ydCA8VUlLaXQvVUlGb250
RGVzY3JpcHRvci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQS0lUKQotdXNpbmcgUGxhdGZvcm1D
b2xvciA9IE5TQ29sb3I7Ci11c2luZyBQbGF0Zm9ybUZvbnQgPSBOU0ZvbnQ7Ci0jZWxzZQotdXNp
bmcgUGxhdGZvcm1Db2xvciA9IFVJQ29sb3I7Ci11c2luZyBQbGF0Zm9ybUZvbnQgPSBVSUZvbnQ7
Ci0jZW5kaWYKLQogI2lmIEhBVkUoTlNGT05UX1dJVEhfT1BUSUNBTF9TSVpJTkdfQlVHKQogCiBA
aW50ZXJmYWNlIFdLU2VjdXJlQ29kaW5nRm9udEF0dHJpYnV0ZU5vcm1hbGl6ZXIgOiBOU09iamVj
dCA8TlNLZXllZEFyY2hpdmVyRGVsZWdhdGU+CkBAIC05OSwzNCArOTMsNiBAQCBlbnVtIGNsYXNz
IE5TVHlwZSB7CiAKICNwcmFnbWEgbWFyayAtIEhlbHBlcnMKIAotc3RhdGljIENsYXNzIHBsYXRm
b3JtQ29sb3JDbGFzcygpCi17Ci0gICAgc3RhdGljIENsYXNzIGNvbG9yQ2xhc3M7Ci0gICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10gewot
I2lmIFVTRShBUFBLSVQpCi0gICAgICAgIGNvbG9yQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhA
Ik5TQ29sb3IiKTsKLSNlbHNlCi0gICAgICAgIGNvbG9yQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmlu
ZyhAIlVJQ29sb3IiKTsKLSNlbmRpZgotICAgIH0pOwotICAgIHJldHVybiBjb2xvckNsYXNzOwot
fQotCi1zdGF0aWMgQ2xhc3MgcGxhdGZvcm1Gb250Q2xhc3MoKQotewotICAgIHN0YXRpYyBDbGFz
cyBmb250Q2xhc3M7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Ci0gICAgc3RkOjpj
YWxsX29uY2UoZmxhZywgW10gewotI2lmIFVTRShBUFBLSVQpCi0gICAgICAgIGZvbnRDbGFzcyA9
IE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250Iik7Ci0jZWxzZQotICAgICAgICBmb250Q2xhc3Mg
PSBOU0NsYXNzRnJvbVN0cmluZyhAIlVJRm9udCIpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0
dXJuIGZvbnRDbGFzczsKLX0KLQogc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmpl
Y3QpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CkBAIC0xMzQsNyArMTAwLDcgQEAgc3RhdGljIE5T
VHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgLy8gU3BlY2lmaWMgY2xhc3NlcyBo
YW5kbGVkLgogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkK
ICAgICAgICAgcmV0dXJuIE5TVHlwZTo6QXJyYXk7Ci0gICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpwbGF0Zm9ybUNvbG9yQ2xhc3MoKV0pCisgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbQ29jb2FDb2xvciBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNUeXBlOjpDb2xvcjsKICAg
ICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKICAgICAgICAgcmV0
dXJuIE5TVHlwZTo6RGF0YTsKQEAgLTE0Miw3ICsxMDgsNyBAQCBzdGF0aWMgTlNUeXBlIHR5cGVG
cm9tT2JqZWN0KGlkIG9iamVjdCkKICAgICAgICAgcmV0dXJuIE5TVHlwZTo6RGF0ZTsKICAgICBp
ZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIE5TVHlwZTo6RGljdGlvbmFyeTsKLSAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNz
OnBsYXRmb3JtRm9udENsYXNzKCldKQorICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W0Nv
Y29hRm9udCBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNUeXBlOjpGb250OwogICAgIGlmIChb
b2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBO
U1R5cGU6Ok51bWJlcjsKQEAgLTE2OCw3ICsxMzQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNT
ZXJpYWxpemFibGVGb250KENURm9udFJlZiBmb250KQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNT
ZXJpYWxpemFibGVWYWx1ZShpZCB2YWx1ZSkKIHsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W1BsYXRmb3JtRm9udCBjbGFzc11dKQorICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
Q29jb2FGb250IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBpc1NlcmlhbGl6YWJsZUZvbnQoKF9f
YnJpZGdlIENURm9udFJlZil2YWx1ZSk7CiAgICAgcmV0dXJuIHR5cGVGcm9tT2JqZWN0KHZhbHVl
KSAhPSBOU1R5cGU6OlVua25vd247CiB9CkBAIC0zMzksNyArMzA1LDcgQEAgc3RhdGljIE9wdGlv
bmFsPFJldGFpblB0cjxpZD4+IGRlY29kZURpY3Rpb25hcnlJbnRlcm5hbChEZWNvZGVyJiBkZWNv
ZGVyLCBOU0FycmEKIAogI3ByYWdtYSBtYXJrIC0gTlNGb250IC8gVUlGb250CiAKLXN0YXRpYyBp
bmxpbmUgdm9pZCBlbmNvZGVGb250SW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgUGxhdGZvcm1G
b250ICpmb250KQorc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUZvbnRJbnRlcm5hbChFbmNvZGVy
JiBlbmNvZGVyLCBDb2NvYUZvbnQgKmZvbnQpCiB7CiAgICAgZW5jb2RlKGVuY29kZXIsIGZvbnQu
Zm9udERlc2NyaXB0b3IuZm9udEF0dHJpYnV0ZXMpOwogfQpAQCAtNDY1LDEzICs0MzEsMTMgQEAg
dm9pZCBlbmNvZGVPYmplY3QoRW5jb2RlciYgZW5jb2RlciwgaWQgb2JqZWN0KQogICAgICAgICBl
bmNvZGVBcnJheUludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5TQXJyYXkgKj4ob2JqZWN0
KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE5TVHlwZTo6Q29sb3I6Ci0gICAgICAgIGVu
Y29kZUNvbG9ySW50ZXJuYWwoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1Db2xvciAqPihv
YmplY3QpKTsKKyAgICAgICAgZW5jb2RlQ29sb3JJbnRlcm5hbChlbmNvZGVyLCBzdGF0aWNfY2Fz
dDxDb2NvYUNvbG9yICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBOU1R5
cGU6OkRpY3Rpb25hcnk6CiAgICAgICAgIGVuY29kZURpY3Rpb25hcnlJbnRlcm5hbChlbmNvZGVy
LCBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkgKj4ob2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsK
ICAgICBjYXNlIE5TVHlwZTo6Rm9udDoKLSAgICAgICAgZW5jb2RlRm9udEludGVybmFsKGVuY29k
ZXIsIHN0YXRpY19jYXN0PFBsYXRmb3JtRm9udCAqPihvYmplY3QpKTsKKyAgICAgICAgZW5jb2Rl
Rm9udEludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PENvY29hRm9udCAqPihvYmplY3QpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTlNUeXBlOjpOdW1iZXI6CiAgICAgICAgIGVuY29k
ZU51bWJlckludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5TTnVtYmVyICo+KG9iamVjdCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaAppbmRleCAz
ZjZmNzk0MmFjMWNiYTY4MDMwYjJjYmU4ODk2YWIzNzdhMzYyMWU1Li41NzY0ODNjMmYxY2FjMDll
ZTg2MmQxYTljNjRhM2VhOGFmZWUzZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9Db3JlVGV4dEhlbHBlcnMuaApAQCAtMjUsMjIgKzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW1wb3J0ICJDb2NvYUZvbnQuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwogI2lm
IFVTRShBUFBLSVQpCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjZWxzZQogI2ltcG9ydCA8
VUlLaXQvVUlLaXQuaD4KICNlbmRpZgogCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KIG5h
bWVzcGFjZSBXZWJLaXQgewogCi0jaWYgVVNFKEFQUEtJVCkKLXVzaW5nIFBsYXRmb3JtRm9udCA9
IE5TRm9udDsKLSNlbHNlCi11c2luZyBQbGF0Zm9ybUZvbnQgPSBVSUZvbnQ7Ci0jZW5kaWYKLQot
UGxhdGZvcm1Gb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVz
LCBDR0Zsb2F0IHNpemUpOworQ29jb2FGb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9u
YXJ5ICphdHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW0KaW5kZXggYTFlZWJiMzI3NGRjYTA3ZGVlYzY4
Zjk3Nzc1YzViMTVmNTIzMGUxOS4uYWFmNWU1YzliOWM2YjNmMTQ4YTI1MjhlN2ZiNGUyMTMwY2Jm
OTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxw
ZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5t
bQpAQCAtMjksMTUgKzI5LDkgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEku
aD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKLSNpZiBVU0UoQVBQS0lU
KQotdXNpbmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IE5TRm9udERlc2NyaXB0b3I7Ci0jZWxz
ZQotdXNpbmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IFVJRm9udERlc2NyaXB0b3I7Ci0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBsYXRmb3JtRm9udCAqZm9udFdpdGhBdHRyaWJ1
dGVzKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcywgQ0dGbG9hdCBzaXplKQorQ29jb2FGb250ICpm
b250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC01MSwxMiArNDUsMTIg
QEAgUGxhdGZvcm1Gb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGVzLCBDR0Zsb2F0IHNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGRlc2NyaXB0
b3IgPSBbUGxhdGZvcm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmli
dXRlczptdXRhYmxlRGljdGlvbmFyeS5nZXQoKV07CisgICAgYXV0byBkZXNjcmlwdG9yID0gW0Nv
Y29hRm9udERlc2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6bXV0YWJs
ZURpY3Rpb25hcnkuZ2V0KCldOwogI2Vsc2UKLSAgICBhdXRvIGRlc2NyaXB0b3IgPSBbUGxhdGZv
cm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczphdHRyaWJ1
dGVzXTsKKyAgICBhdXRvIGRlc2NyaXB0b3IgPSBbQ29jb2FGb250RGVzY3JpcHRvciBmb250RGVz
Y3JpcHRvcldpdGhGb250QXR0cmlidXRlczphdHRyaWJ1dGVzXTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIFtQbGF0Zm9ybUZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3Igc2l6ZTpzaXpl
XTsKKyAgICByZXR1cm4gW0NvY29hRm9udCBmb250V2l0aERlc2NyaXB0b3I6ZGVzY3JpcHRvciBz
aXplOnNpemVdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCmluZGV4IGEwNWRmMGE5NDRmOTI4NjkwYjIzNDU4ZGYxNDFjYzhmMzA2YmI2ZjkuLjA4M2U2
NmRiMDNjNzE5YmVjODdiOGM5ODM0NTBiYTQzZTE4ZGI3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAogI2lt
cG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgorI2ltcG9ydCAiQ29jb2FGb250LmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlv
bmFyeVBvcHVwSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Lmg+CkBAIC01MjUsMTIgKzUy
Niw2IEBAIE9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZv
bnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1ECiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9
CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2RlZmluZSBDb2NvYUZvbnQgVUlGb250Ci0j
ZWxzZQotI2RlZmluZSBDb2NvYUZvbnQgTlNGb250Ci0jZW5kaWYKLQogdm9pZCBBcmd1bWVudENv
ZGVyPEZvbnRIYW5kbGU+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgRm9udEhhbmRsZSYgaGFuZGxlKQogewogICAgIGF1dG8gY3RGb250ID0gaGFuZGxlLmZvbnQg
JiYgIWhhbmRsZS5mb250LT5mb250RmFjZURhdGEoKSA/IGhhbmRsZS5mb250LT5nZXRDVEZvbnQo
KSA6IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2Fm
ZUJyb3dzaW5nV2FybmluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZl
QnJvd3NpbmdXYXJuaW5nLmgKaW5kZXggYjI1MWM2ZWYyMjQyYTBjYmRkZjY3YjNlMWE4YmQ4NTJm
ZDMzZjNkYS4uNmU5NDllYjk3OTEwMTg0ZTYyOTNjNDdmMTlmYWJhYzIzMDRlOTEzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5n
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJu
aW5nLmgKQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24u
aCIKICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgpAQCAtNDUsMjAgKzQ2LDE4IEBAIE9CSkNfQ0xBU1MgV0tTYWZlQnJvd3NpbmdUZXh0Vmll
dzsKICNpZiBQTEFURk9STShNQUMpCiB1c2luZyBWaWV3VHlwZSA9IE5TVmlldzsKIHVzaW5nIFJl
Y3RUeXBlID0gTlNSZWN0OwotdXNpbmcgQ29sb3JUeXBlID0gTlNDb2xvcjsKICNlbHNlCiB1c2lu
ZyBWaWV3VHlwZSA9IFVJVmlldzsKIHVzaW5nIFJlY3RUeXBlID0gQ0dSZWN0OwotdXNpbmcgQ29s
b3JUeXBlID0gVUlDb2xvcjsKICNlbmRpZgogCiBAaW50ZXJmYWNlIFdLU2FmZUJyb3dzaW5nQm94
IDogVmlld1R5cGUgewogQHBhY2thZ2UKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRy
PENvbG9yVHlwZT4gX2JhY2tncm91bmRDb2xvcjsKKyAgICBSZXRhaW5QdHI8Q29jb2FDb2xvcj4g
X2JhY2tncm91bmRDb2xvcjsKICNlbmRpZgogfQotLSAodm9pZClzZXRTYWZlQnJvd3NpbmdCYWNr
Z3JvdW5kQ29sb3I6KENvbG9yVHlwZSAqKWNvbG9yOworLSAodm9pZClzZXRTYWZlQnJvd3NpbmdC
YWNrZ3JvdW5kQ29sb3I6KENvY29hQ29sb3IgKiljb2xvcjsKIEBlbmQKIAogI2lmIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJy
b3dzaW5nV2FybmluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJy
b3dzaW5nV2FybmluZy5tbQppbmRleCBjMWU1N2VhOTE4ZTI1NDM0N2I2ZDA4ZmYyYmUxZWQxZDQw
OWViM2VjLi44YTZjMzQ1YjM1ZjMxNzA5YWY3YjU0OWM3MmZhNjRlN2U1NjFmNWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJu
aW5nLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldL
U2FmZUJyb3dzaW5nV2FybmluZy5oIgogCisjaW1wb3J0ICJDb2NvYUZvbnQuaCIKICNpbXBvcnQg
IlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbXBvcnQg
PFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgpAQCAtNTAsMTMgKzUxLDExIEBAIGNvbnN0ZXhw
ciBDR0Zsb2F0IG1heFdpZHRoID0gNjc1OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi11
c2luZyBGb250VHlwZSA9IE5TRm9udDsKIHVzaW5nIFRleHRWaWV3VHlwZSA9IE5TVGV4dFZpZXc7
CiB1c2luZyBCdXR0b25UeXBlID0gTlNCdXR0b247CiB1c2luZyBBbGlnbm1lbnRUeXBlID0gTlNM
YXlvdXRBdHRyaWJ1dGU7CiB1c2luZyBTaXplVHlwZSA9IE5TU2l6ZTsKICNlbHNlCi11c2luZyBG
b250VHlwZSA9IFVJRm9udDsKIHVzaW5nIFRleHRWaWV3VHlwZSA9IFVJVGV4dFZpZXc7CiB1c2lu
ZyBCdXR0b25UeXBlID0gVUlCdXR0b247CiB1c2luZyBBbGlnbm1lbnRUeXBlID0gVUlTdGFja1Zp
ZXdBbGlnbm1lbnQ7CkBAIC03OCw3ICs3Nyw3IEBAIGVudW0gY2xhc3MgV2FybmluZ1RleHRTaXpl
IDogdWludDhfdCB7CiAgICAgQm9keQogfTsKIAotc3RhdGljIEZvbnRUeXBlICpmb250T2ZTaXpl
KFdhcm5pbmdUZXh0U2l6ZSBzaXplKQorc3RhdGljIENvY29hRm9udCAqZm9udE9mU2l6ZShXYXJu
aW5nVGV4dFNpemUgc2l6ZSkKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3dpdGNoIChzaXpl
KSB7CkBAIC0xMDMsMTIgKzEwMiwxMiBAQCBzdGF0aWMgRm9udFR5cGUgKmZvbnRPZlNpemUoV2Fy
bmluZ1RleHRTaXplIHNpemUpCiAjZW5kaWYKIH0KIAotc3RhdGljIENvbG9yVHlwZSAqY29sb3JG
b3JJdGVtKFdhcm5pbmdJdGVtIGl0ZW0sIFZpZXdUeXBlICp3YXJuaW5nKQorc3RhdGljIENvY29h
Q29sb3IgKmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbSBpdGVtLCBWaWV3VHlwZSAqd2FybmluZykK
IHsKICAgICBBU1NFUlQoW3dhcm5pbmcgaXNLaW5kT2ZDbGFzczpbV0tTYWZlQnJvd3NpbmdXYXJu
aW5nIGNsYXNzXV0pOwogI2lmIFBMQVRGT1JNKE1BQykKIAotICAgIGF1dG8gY29sb3JOYW1lZCA9
IFtdIChOU1N0cmluZyAqbmFtZSkgLT4gQ29sb3JUeXBlKiB7CisgICAgYXV0byBjb2xvck5hbWVk
ID0gW10gKE5TU3RyaW5nICpuYW1lKSAtPiBDb2NvYUNvbG9yICogewogI2lmIEhBVkUoU0FGRV9C
Uk9XU0lORykKICAgICAgICAgcmV0dXJuIFtOU0NvbG9yIGNvbG9yTmFtZWQ6bmFtZSBidW5kbGU6
W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJdXTsKICNl
bHNlCkBAIC0yNjEsNyArMjYwLDcgQEAgc3RhdGljIFZpZXdUeXBlICptYWtlTGFiZWwoTlNBdHRy
aWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogCiBAaW1wbGVtZW50YXRpb24gV0tTYWZl
QnJvd3NpbmdCb3gKIAotLSAodm9pZClzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6KENv
bG9yVHlwZSAqKWNvbG9yCistICh2b2lkKXNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjoo
Q29jb2FDb2xvciAqKWNvbG9yCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIF9iYWNrZ3JvdW5k
Q29sb3IgPSBjb2xvcjsKQEAgLTQzNSw3ICs0MzQsNyBAQCAtICh2b2lkKXNob3dEZXRhaWxzQ2xp
Y2tlZAogI2VuZGlmCiAKICAgICBXS1NhZmVCcm93c2luZ0JveCAqbGluZSA9IFtbV0tTYWZlQnJv
d3NpbmdCb3ggbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2xpbmUgc2V0U2FmZUJyb3dzaW5nQmFj
a2dyb3VuZENvbG9yOltDb2xvclR5cGUgbGlnaHRHcmF5Q29sb3JdXTsKKyAgICBbbGluZSBzZXRT
YWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgbGlnaHRHcmF5Q29sb3JdXTsK
ICAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBbZGV0YWlscywgYm90dG9tLCBsaW5lXSkKICAg
ICAgICAgdmlldy50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5P
OwogCkBAIC01NzAsNyArNTY5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQXR0cmlidXRl
ZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZwogICAgIHNlbGYt
Pl93YXJuaW5nID0gd2FybmluZzsKICAgICBzZWxmLmRlbGVnYXRlID0gd2FybmluZzsKIAotICAg
IENvbG9yVHlwZSAqZm9yZWdyb3VuZENvbG9yID0gY29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpN
ZXNzYWdlVGV4dCwgd2FybmluZyk7CisgICAgQ29jb2FDb2xvciAqZm9yZWdyb3VuZENvbG9yID0g
Y29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2FybmluZyk7CiAgICAgTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1thdHRyaWJ1dGVkU3RyaW5nIG11dGFi
bGVDb3B5XSBhdXRvcmVsZWFzZV07CiAgICAgW3N0cmluZyBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9y
ZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSA6IGZvcmVncm91bmRDb2xvciB9IHJhbmdlOk5TTWFr
ZVJhbmdlKDAsIHN0cmluZy5sZW5ndGgpXTsKICAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6
Y29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpCb3hCYWNrZ3JvdW5kLCB3YXJuaW5nKV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDBjZTMzNzQ1
ZWVhMDExY2Q5ZjE4YmZhYTYyZWZkMTBhODIyMzM2ZjcuLmY5OGY0MTM4MTg0NDUxNjhkOWQwZTJi
NmM5Y2JjZjVmODk1ZjA2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCkBAIC0yODg5LDcgKzI4ODksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRh
dGVGb250TWFuYWdlcklmTmVlZGVkKCkKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVEaWN0aW9uYXJ5
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFBsYXRmb3JtRm9udCAqZm9udCA9IGZv
bnRXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVEaWN0aW9uYXJ5LCBmb250U2l6ZSk7CisgICAgICAg
IGF1dG8gZm9udCA9IGZvbnRXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVEaWN0aW9uYXJ5LCBmb250
U2l6ZSk7CiAgICAgICAgIGlmICghZm9udCkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ1MTE2
NjY0MmU0NTcyMjFjZDNkMWZhODMzNmQ2ZTE5ZmY0ZmNiMi4uZDNjOGFlYzMyMDJmZWQ5MDM0Y2U3
NTQxMGI3ODc3MDYzZDA2ZmUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzcyLDYgKzUzNzIsNyBAQAogCQlGNEY1OUFEMzIwNjVB
NUM5MDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTZWxlY3RNZW51TGlzdFZpZXdDb250
cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGNTlBRDQyMDY1QTVDQTAwNkNB
QTQ2IC8qIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaDsgcGF0aCA9
IGlvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjRGRTBBM0EyNDYzMkIxMDAwMjYzMUUxIC8qIENvY29hQ29sb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29jb2FDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGNEZFMEEzQzI0NjM1NjY3MDAyNjMxRTEgLyogQ29jb2FGb250LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvY29hRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNDEy
NkNFMTgyMDA1N0QwQTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNjEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2Vy
Q29udGVudFVSTFBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNjExM0UyNzEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyQ29udGVudFVSTFBhdHRl
cm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2ODMsNiArNzY4NCw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0RkUwQTNBMjQ2MzJCMTAw
MDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggKi8sCisJCQkJRjRGRTBBM0MyNDYzNTY2NzAwMjYzMUUx
IC8qIENvY29hRm9udC5oICovLAogCQkJCTQ0ODI3MzQ2MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2Nv
YUltYWdlLmggKi8sCiAJCQkJQkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGlu
Z0NvbnRleHQuaCAqLywKIAkJCQlCQ0UwOTM3NTE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0
aW5nQ29udGV4dC5tbSAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398665</attachid>
            <date>2020-05-06 14:56:42 -0700</date>
            <delta_ts>2020-05-06 15:05:48 -0700</delta_ts>
            <desc>Fix bug title</desc>
            <filename>bug-211527-20200506145640.patch</filename>
            <type>text/plain</type>
            <size>17631</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA5NGQxODBlMTJiODM2N2Y2
Y2MxYTI3ZTIyY2E1Y2UwNzNlN2M1ZDguLmM0YjRiMWRmYzczNzYzNzhjOTdhZmFkOTdmNzQyNjRi
ODRhMzQyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDUtMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvY29hQ29sb3Ig
aW4gbW9yZSBwbGFjZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkZWZpbmVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE1MjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgQ29jb2FDb2xvciAoYWRkZWQg
aW4gcjI2MTI0NykgaW4gbW9yZSBwbGFjZXMsIGFuZCBhbHNvIGludHJvZHVjZSBgQ29jb2FGb250
LmhgIGFuZCB1c2UgaXQgdG8gc2ltcGxpZnkgc29tZQorICAgICAgICBleGlzdGluZyBjb2RlIHRo
YXQgdXNlcyBwbGF0Zm9ybSBpZmRlZnMgZm9yIFVJRm9udCwgTlNGb250LCBVSUZvbnREZXNjcmlw
dG9yIGFuZCBOU0ZvbnREZXNjcmlwdG9yLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlv
ci4KKworICAgICAgICAqIFBsYXRmb3JtL2NvY29hL0NvY29hRm9udC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6
dHlwZUZyb21PYmplY3QpOgorICAgICAgICAoSVBDOjppc1NlcmlhbGl6YWJsZVZhbHVlKToKKyAg
ICAgICAgKElQQzo6ZW5jb2RlRm9udEludGVybmFsKToKKyAgICAgICAgKElQQzo6ZW5jb2RlT2Jq
ZWN0KToKKyAgICAgICAgKElQQzo6cGxhdGZvcm1Db2xvckNsYXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKElQQzo6cGxhdGZvcm1Gb250Q2xhc3MpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9D
b2NvYS9Db3JlVGV4dEhlbHBlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQ29yZVRleHRI
ZWxwZXJzLm1tOgorICAgICAgICAoV2ViS2l0Ojpmb250V2l0aEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbToKKyAgICAgICAgKGZvbnRPZlNp
emUpOgorICAgICAgICAoY29sb3JGb3JJdGVtKToKKyAgICAgICAgKC1bV0tTYWZlQnJvd3NpbmdC
b3ggc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOl0pOgorICAgICAgICAoLVtXS1NhZmVC
cm93c2luZ1dhcm5pbmcgc2hvd0RldGFpbHNDbGlja2VkXSk6CisgICAgICAgICgtW1dLU2FmZUJy
b3dzaW5nVGV4dFZpZXcgaW5pdFdpdGhBdHRyaWJ1dGVkU3RyaW5nOmZvcldhcm5pbmc6XSk6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDUtMDYg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQ3V0IGFu
ZCBwYXN0ZSBmcm9tIEdvb2dsZSBEb2MgdG8gTm90ZXMgaW4gc2V2ZXJhbCAobm9uLUxhdGluKSBs
YW5ndWFnZXMgZG9lc24ndCB3b3JrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL0NvY29hRm9udC5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUZv
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iNjQ5MDU5MDc4YmI3MzQwNGE1NjQwMTkxNDEyZWFlMzZhMmQzMDY1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUZv
bnQuaApAQCAtMCwwICsxLDM2IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFy
ZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUEtJVCkKK0BjbGFzcyBOU0Zv
bnQsIE5TRm9udERlc2NyaXB0b3I7Cit1c2luZyBDb2NvYUZvbnQgPSBOU0ZvbnQ7Cit1c2luZyBD
b2NvYUZvbnREZXNjcmlwdG9yID0gTlNGb250RGVzY3JpcHRvcjsKKyNlbHNlCitAY2xhc3MgVUlG
b250LCBVSUZvbnREZXNjcmlwdG9yOwordXNpbmcgQ29jb2FGb250ID0gVUlGb250OwordXNpbmcg
Q29jb2FGb250RGVzY3JpcHRvciA9IFVJRm9udERlc2NyaXB0b3I7CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDJi
MDhkZmQzNWVhZGU3OTg1ZDg4NjVhYzQwNmFiMzhjYWRkNWJkMTUuLjBkY2I5N2UwMzg0OWQ1N2Fl
NzY1N2NjNmJmNTBiMWJiYjE3MTlhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMjksNiArMjksOCBAQAogI2lmIFBMQVRG
T1JNKENPQ09BKQogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1wb3J0ICJDb2Nv
YUNvbG9yLmgiCisjaW1wb3J0ICJDb2NvYUZvbnQuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVy
cy5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZv
bnREZXNjcmlwdG9yLmg+CkBAIC00NywxNCArNDksNiBAQAogI2ltcG9ydCA8VUlLaXQvVUlGb250
RGVzY3JpcHRvci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQS0lUKQotdXNpbmcgUGxhdGZvcm1D
b2xvciA9IE5TQ29sb3I7Ci11c2luZyBQbGF0Zm9ybUZvbnQgPSBOU0ZvbnQ7Ci0jZWxzZQotdXNp
bmcgUGxhdGZvcm1Db2xvciA9IFVJQ29sb3I7Ci11c2luZyBQbGF0Zm9ybUZvbnQgPSBVSUZvbnQ7
Ci0jZW5kaWYKLQogI2lmIEhBVkUoTlNGT05UX1dJVEhfT1BUSUNBTF9TSVpJTkdfQlVHKQogCiBA
aW50ZXJmYWNlIFdLU2VjdXJlQ29kaW5nRm9udEF0dHJpYnV0ZU5vcm1hbGl6ZXIgOiBOU09iamVj
dCA8TlNLZXllZEFyY2hpdmVyRGVsZWdhdGU+CkBAIC05OSwzNCArOTMsNiBAQCBlbnVtIGNsYXNz
IE5TVHlwZSB7CiAKICNwcmFnbWEgbWFyayAtIEhlbHBlcnMKIAotc3RhdGljIENsYXNzIHBsYXRm
b3JtQ29sb3JDbGFzcygpCi17Ci0gICAgc3RhdGljIENsYXNzIGNvbG9yQ2xhc3M7Ci0gICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10gewot
I2lmIFVTRShBUFBLSVQpCi0gICAgICAgIGNvbG9yQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhA
Ik5TQ29sb3IiKTsKLSNlbHNlCi0gICAgICAgIGNvbG9yQ2xhc3MgPSBOU0NsYXNzRnJvbVN0cmlu
ZyhAIlVJQ29sb3IiKTsKLSNlbmRpZgotICAgIH0pOwotICAgIHJldHVybiBjb2xvckNsYXNzOwot
fQotCi1zdGF0aWMgQ2xhc3MgcGxhdGZvcm1Gb250Q2xhc3MoKQotewotICAgIHN0YXRpYyBDbGFz
cyBmb250Q2xhc3M7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Ci0gICAgc3RkOjpj
YWxsX29uY2UoZmxhZywgW10gewotI2lmIFVTRShBUFBLSVQpCi0gICAgICAgIGZvbnRDbGFzcyA9
IE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250Iik7Ci0jZWxzZQotICAgICAgICBmb250Q2xhc3Mg
PSBOU0NsYXNzRnJvbVN0cmluZyhAIlVJRm9udCIpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0
dXJuIGZvbnRDbGFzczsKLX0KLQogc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmpl
Y3QpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CkBAIC0xMzQsNyArMTAwLDcgQEAgc3RhdGljIE5T
VHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgLy8gU3BlY2lmaWMgY2xhc3NlcyBo
YW5kbGVkLgogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkK
ICAgICAgICAgcmV0dXJuIE5TVHlwZTo6QXJyYXk7Ci0gICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpwbGF0Zm9ybUNvbG9yQ2xhc3MoKV0pCisgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbQ29jb2FDb2xvciBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNUeXBlOjpDb2xvcjsKICAg
ICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKICAgICAgICAgcmV0
dXJuIE5TVHlwZTo6RGF0YTsKQEAgLTE0Miw3ICsxMDgsNyBAQCBzdGF0aWMgTlNUeXBlIHR5cGVG
cm9tT2JqZWN0KGlkIG9iamVjdCkKICAgICAgICAgcmV0dXJuIE5TVHlwZTo6RGF0ZTsKICAgICBp
ZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIE5TVHlwZTo6RGljdGlvbmFyeTsKLSAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNz
OnBsYXRmb3JtRm9udENsYXNzKCldKQorICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W0Nv
Y29hRm9udCBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNUeXBlOjpGb250OwogICAgIGlmIChb
b2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBO
U1R5cGU6Ok51bWJlcjsKQEAgLTE2OCw3ICsxMzQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNT
ZXJpYWxpemFibGVGb250KENURm9udFJlZiBmb250KQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNT
ZXJpYWxpemFibGVWYWx1ZShpZCB2YWx1ZSkKIHsKLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W1BsYXRmb3JtRm9udCBjbGFzc11dKQorICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
Q29jb2FGb250IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBpc1NlcmlhbGl6YWJsZUZvbnQoKF9f
YnJpZGdlIENURm9udFJlZil2YWx1ZSk7CiAgICAgcmV0dXJuIHR5cGVGcm9tT2JqZWN0KHZhbHVl
KSAhPSBOU1R5cGU6OlVua25vd247CiB9CkBAIC0zMzksNyArMzA1LDcgQEAgc3RhdGljIE9wdGlv
bmFsPFJldGFpblB0cjxpZD4+IGRlY29kZURpY3Rpb25hcnlJbnRlcm5hbChEZWNvZGVyJiBkZWNv
ZGVyLCBOU0FycmEKIAogI3ByYWdtYSBtYXJrIC0gTlNGb250IC8gVUlGb250CiAKLXN0YXRpYyBp
bmxpbmUgdm9pZCBlbmNvZGVGb250SW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgUGxhdGZvcm1G
b250ICpmb250KQorc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUZvbnRJbnRlcm5hbChFbmNvZGVy
JiBlbmNvZGVyLCBDb2NvYUZvbnQgKmZvbnQpCiB7CiAgICAgZW5jb2RlKGVuY29kZXIsIGZvbnQu
Zm9udERlc2NyaXB0b3IuZm9udEF0dHJpYnV0ZXMpOwogfQpAQCAtNDY1LDEzICs0MzEsMTMgQEAg
dm9pZCBlbmNvZGVPYmplY3QoRW5jb2RlciYgZW5jb2RlciwgaWQgb2JqZWN0KQogICAgICAgICBl
bmNvZGVBcnJheUludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5TQXJyYXkgKj4ob2JqZWN0
KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE5TVHlwZTo6Q29sb3I6Ci0gICAgICAgIGVu
Y29kZUNvbG9ySW50ZXJuYWwoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1Db2xvciAqPihv
YmplY3QpKTsKKyAgICAgICAgZW5jb2RlQ29sb3JJbnRlcm5hbChlbmNvZGVyLCBzdGF0aWNfY2Fz
dDxDb2NvYUNvbG9yICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBOU1R5
cGU6OkRpY3Rpb25hcnk6CiAgICAgICAgIGVuY29kZURpY3Rpb25hcnlJbnRlcm5hbChlbmNvZGVy
LCBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkgKj4ob2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsK
ICAgICBjYXNlIE5TVHlwZTo6Rm9udDoKLSAgICAgICAgZW5jb2RlRm9udEludGVybmFsKGVuY29k
ZXIsIHN0YXRpY19jYXN0PFBsYXRmb3JtRm9udCAqPihvYmplY3QpKTsKKyAgICAgICAgZW5jb2Rl
Rm9udEludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PENvY29hRm9udCAqPihvYmplY3QpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTlNUeXBlOjpOdW1iZXI6CiAgICAgICAgIGVuY29k
ZU51bWJlckludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5TTnVtYmVyICo+KG9iamVjdCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaAppbmRleCAz
ZjZmNzk0MmFjMWNiYTY4MDMwYjJjYmU4ODk2YWIzNzdhMzYyMWU1Li41NzY0ODNjMmYxY2FjMDll
ZTg2MmQxYTljNjRhM2VhOGFmZWUzZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9Db3JlVGV4dEhlbHBlcnMuaApAQCAtMjUsMjIgKzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW1wb3J0ICJDb2NvYUZvbnQuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwogI2lm
IFVTRShBUFBLSVQpCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjZWxzZQogI2ltcG9ydCA8
VUlLaXQvVUlLaXQuaD4KICNlbmRpZgogCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KIG5h
bWVzcGFjZSBXZWJLaXQgewogCi0jaWYgVVNFKEFQUEtJVCkKLXVzaW5nIFBsYXRmb3JtRm9udCA9
IE5TRm9udDsKLSNlbHNlCi11c2luZyBQbGF0Zm9ybUZvbnQgPSBVSUZvbnQ7Ci0jZW5kaWYKLQot
UGxhdGZvcm1Gb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVz
LCBDR0Zsb2F0IHNpemUpOworQ29jb2FGb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9u
YXJ5ICphdHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW0KaW5kZXggYTFlZWJiMzI3NGRjYTA3ZGVlYzY4
Zjk3Nzc1YzViMTVmNTIzMGUxOS4uYWFmNWU1YzliOWM2YjNmMTQ4YTI1MjhlN2ZiNGUyMTMwY2Jm
OTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxw
ZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5t
bQpAQCAtMjksMTUgKzI5LDkgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVRleHRTUEku
aD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKLSNpZiBVU0UoQVBQS0lU
KQotdXNpbmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IE5TRm9udERlc2NyaXB0b3I7Ci0jZWxz
ZQotdXNpbmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IFVJRm9udERlc2NyaXB0b3I7Ci0jZW5k
aWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBsYXRmb3JtRm9udCAqZm9udFdpdGhBdHRyaWJ1
dGVzKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcywgQ0dGbG9hdCBzaXplKQorQ29jb2FGb250ICpm
b250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC01MSwxMiArNDUsMTIg
QEAgUGxhdGZvcm1Gb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGVzLCBDR0Zsb2F0IHNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRvIGRlc2NyaXB0
b3IgPSBbUGxhdGZvcm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmli
dXRlczptdXRhYmxlRGljdGlvbmFyeS5nZXQoKV07CisgICAgYXV0byBkZXNjcmlwdG9yID0gW0Nv
Y29hRm9udERlc2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6bXV0YWJs
ZURpY3Rpb25hcnkuZ2V0KCldOwogI2Vsc2UKLSAgICBhdXRvIGRlc2NyaXB0b3IgPSBbUGxhdGZv
cm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczphdHRyaWJ1
dGVzXTsKKyAgICBhdXRvIGRlc2NyaXB0b3IgPSBbQ29jb2FGb250RGVzY3JpcHRvciBmb250RGVz
Y3JpcHRvcldpdGhGb250QXR0cmlidXRlczphdHRyaWJ1dGVzXTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIFtQbGF0Zm9ybUZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3Igc2l6ZTpzaXpl
XTsKKyAgICByZXR1cm4gW0NvY29hRm9udCBmb250V2l0aERlc2NyaXB0b3I6ZGVzY3JpcHRvciBz
aXplOnNpemVdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCmluZGV4IGEwNWRmMGE5NDRmOTI4NjkwYjIzNDU4ZGYxNDFjYzhmMzA2YmI2ZjkuLjA4M2U2
NmRiMDNjNzE5YmVjODdiOGM5ODM0NTBiYTQzZTE4ZGI3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAogI2lt
cG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgorI2ltcG9ydCAiQ29jb2FGb250LmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlv
bmFyeVBvcHVwSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Lmg+CkBAIC01MjUsMTIgKzUy
Niw2IEBAIE9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZv
bnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1ECiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9
CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2RlZmluZSBDb2NvYUZvbnQgVUlGb250Ci0j
ZWxzZQotI2RlZmluZSBDb2NvYUZvbnQgTlNGb250Ci0jZW5kaWYKLQogdm9pZCBBcmd1bWVudENv
ZGVyPEZvbnRIYW5kbGU+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgRm9udEhhbmRsZSYgaGFuZGxlKQogewogICAgIGF1dG8gY3RGb250ID0gaGFuZGxlLmZvbnQg
JiYgIWhhbmRsZS5mb250LT5mb250RmFjZURhdGEoKSA/IGhhbmRsZS5mb250LT5nZXRDVEZvbnQo
KSA6IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2Fm
ZUJyb3dzaW5nV2FybmluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZl
QnJvd3NpbmdXYXJuaW5nLmgKaW5kZXggYjI1MWM2ZWYyMjQyYTBjYmRkZjY3YjNlMWE4YmQ4NTJm
ZDMzZjNkYS4uNmU5NDllYjk3OTEwMTg0ZTYyOTNjNDdmMTlmYWJhYzIzMDRlOTEzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5n
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJu
aW5nLmgKQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24u
aCIKICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgpAQCAtNDUsMjAgKzQ2LDE4IEBAIE9CSkNfQ0xBU1MgV0tTYWZlQnJvd3NpbmdUZXh0Vmll
dzsKICNpZiBQTEFURk9STShNQUMpCiB1c2luZyBWaWV3VHlwZSA9IE5TVmlldzsKIHVzaW5nIFJl
Y3RUeXBlID0gTlNSZWN0OwotdXNpbmcgQ29sb3JUeXBlID0gTlNDb2xvcjsKICNlbHNlCiB1c2lu
ZyBWaWV3VHlwZSA9IFVJVmlldzsKIHVzaW5nIFJlY3RUeXBlID0gQ0dSZWN0OwotdXNpbmcgQ29s
b3JUeXBlID0gVUlDb2xvcjsKICNlbmRpZgogCiBAaW50ZXJmYWNlIFdLU2FmZUJyb3dzaW5nQm94
IDogVmlld1R5cGUgewogQHBhY2thZ2UKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRy
PENvbG9yVHlwZT4gX2JhY2tncm91bmRDb2xvcjsKKyAgICBSZXRhaW5QdHI8Q29jb2FDb2xvcj4g
X2JhY2tncm91bmRDb2xvcjsKICNlbmRpZgogfQotLSAodm9pZClzZXRTYWZlQnJvd3NpbmdCYWNr
Z3JvdW5kQ29sb3I6KENvbG9yVHlwZSAqKWNvbG9yOworLSAodm9pZClzZXRTYWZlQnJvd3NpbmdC
YWNrZ3JvdW5kQ29sb3I6KENvY29hQ29sb3IgKiljb2xvcjsKIEBlbmQKIAogI2lmIFBMQVRGT1JN
KE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJy
b3dzaW5nV2FybmluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJy
b3dzaW5nV2FybmluZy5tbQppbmRleCBjMWU1N2VhOTE4ZTI1NDM0N2I2ZDA4ZmYyYmUxZWQxZDQw
OWViM2VjLi44YTZjMzQ1YjM1ZjMxNzA5YWY3YjU0OWM3MmZhNjRlN2U1NjFmNWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJu
aW5nLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldL
U2FmZUJyb3dzaW5nV2FybmluZy5oIgogCisjaW1wb3J0ICJDb2NvYUZvbnQuaCIKICNpbXBvcnQg
IlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIKICNpbXBvcnQg
PFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgpAQCAtNTAsMTMgKzUxLDExIEBAIGNvbnN0ZXhw
ciBDR0Zsb2F0IG1heFdpZHRoID0gNjc1OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi11
c2luZyBGb250VHlwZSA9IE5TRm9udDsKIHVzaW5nIFRleHRWaWV3VHlwZSA9IE5TVGV4dFZpZXc7
CiB1c2luZyBCdXR0b25UeXBlID0gTlNCdXR0b247CiB1c2luZyBBbGlnbm1lbnRUeXBlID0gTlNM
YXlvdXRBdHRyaWJ1dGU7CiB1c2luZyBTaXplVHlwZSA9IE5TU2l6ZTsKICNlbHNlCi11c2luZyBG
b250VHlwZSA9IFVJRm9udDsKIHVzaW5nIFRleHRWaWV3VHlwZSA9IFVJVGV4dFZpZXc7CiB1c2lu
ZyBCdXR0b25UeXBlID0gVUlCdXR0b247CiB1c2luZyBBbGlnbm1lbnRUeXBlID0gVUlTdGFja1Zp
ZXdBbGlnbm1lbnQ7CkBAIC03OCw3ICs3Nyw3IEBAIGVudW0gY2xhc3MgV2FybmluZ1RleHRTaXpl
IDogdWludDhfdCB7CiAgICAgQm9keQogfTsKIAotc3RhdGljIEZvbnRUeXBlICpmb250T2ZTaXpl
KFdhcm5pbmdUZXh0U2l6ZSBzaXplKQorc3RhdGljIENvY29hRm9udCAqZm9udE9mU2l6ZShXYXJu
aW5nVGV4dFNpemUgc2l6ZSkKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3dpdGNoIChzaXpl
KSB7CkBAIC0xMDMsMTIgKzEwMiwxMiBAQCBzdGF0aWMgRm9udFR5cGUgKmZvbnRPZlNpemUoV2Fy
bmluZ1RleHRTaXplIHNpemUpCiAjZW5kaWYKIH0KIAotc3RhdGljIENvbG9yVHlwZSAqY29sb3JG
b3JJdGVtKFdhcm5pbmdJdGVtIGl0ZW0sIFZpZXdUeXBlICp3YXJuaW5nKQorc3RhdGljIENvY29h
Q29sb3IgKmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbSBpdGVtLCBWaWV3VHlwZSAqd2FybmluZykK
IHsKICAgICBBU1NFUlQoW3dhcm5pbmcgaXNLaW5kT2ZDbGFzczpbV0tTYWZlQnJvd3NpbmdXYXJu
aW5nIGNsYXNzXV0pOwogI2lmIFBMQVRGT1JNKE1BQykKIAotICAgIGF1dG8gY29sb3JOYW1lZCA9
IFtdIChOU1N0cmluZyAqbmFtZSkgLT4gQ29sb3JUeXBlKiB7CisgICAgYXV0byBjb2xvck5hbWVk
ID0gW10gKE5TU3RyaW5nICpuYW1lKSAtPiBDb2NvYUNvbG9yICogewogI2lmIEhBVkUoU0FGRV9C
Uk9XU0lORykKICAgICAgICAgcmV0dXJuIFtOU0NvbG9yIGNvbG9yTmFtZWQ6bmFtZSBidW5kbGU6
W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJdXTsKICNl
bHNlCkBAIC0yNjEsNyArMjYwLDcgQEAgc3RhdGljIFZpZXdUeXBlICptYWtlTGFiZWwoTlNBdHRy
aWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogCiBAaW1wbGVtZW50YXRpb24gV0tTYWZl
QnJvd3NpbmdCb3gKIAotLSAodm9pZClzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6KENv
bG9yVHlwZSAqKWNvbG9yCistICh2b2lkKXNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjoo
Q29jb2FDb2xvciAqKWNvbG9yCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIF9iYWNrZ3JvdW5k
Q29sb3IgPSBjb2xvcjsKQEAgLTQzNSw3ICs0MzQsNyBAQCAtICh2b2lkKXNob3dEZXRhaWxzQ2xp
Y2tlZAogI2VuZGlmCiAKICAgICBXS1NhZmVCcm93c2luZ0JveCAqbGluZSA9IFtbV0tTYWZlQnJv
d3NpbmdCb3ggbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2xpbmUgc2V0U2FmZUJyb3dzaW5nQmFj
a2dyb3VuZENvbG9yOltDb2xvclR5cGUgbGlnaHRHcmF5Q29sb3JdXTsKKyAgICBbbGluZSBzZXRT
YWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgbGlnaHRHcmF5Q29sb3JdXTsK
ICAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBbZGV0YWlscywgYm90dG9tLCBsaW5lXSkKICAg
ICAgICAgdmlldy50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5P
OwogCkBAIC01NzAsNyArNTY5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQXR0cmlidXRl
ZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZwogICAgIHNlbGYt
Pl93YXJuaW5nID0gd2FybmluZzsKICAgICBzZWxmLmRlbGVnYXRlID0gd2FybmluZzsKIAotICAg
IENvbG9yVHlwZSAqZm9yZWdyb3VuZENvbG9yID0gY29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpN
ZXNzYWdlVGV4dCwgd2FybmluZyk7CisgICAgQ29jb2FDb2xvciAqZm9yZWdyb3VuZENvbG9yID0g
Y29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2FybmluZyk7CiAgICAgTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1thdHRyaWJ1dGVkU3RyaW5nIG11dGFi
bGVDb3B5XSBhdXRvcmVsZWFzZV07CiAgICAgW3N0cmluZyBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9y
ZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSA6IGZvcmVncm91bmRDb2xvciB9IHJhbmdlOk5TTWFr
ZVJhbmdlKDAsIHN0cmluZy5sZW5ndGgpXTsKICAgICBbc2VsZiBzZXRCYWNrZ3JvdW5kQ29sb3I6
Y29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpCb3hCYWNrZ3JvdW5kLCB3YXJuaW5nKV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDBjZTMzNzQ1
ZWVhMDExY2Q5ZjE4YmZhYTYyZWZkMTBhODIyMzM2ZjcuLmY5OGY0MTM4MTg0NDUxNjhkOWQwZTJi
NmM5Y2JjZjVmODk1ZjA2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCkBAIC0yODg5LDcgKzI4ODksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRh
dGVGb250TWFuYWdlcklmTmVlZGVkKCkKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVEaWN0aW9uYXJ5
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFBsYXRmb3JtRm9udCAqZm9udCA9IGZv
bnRXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVEaWN0aW9uYXJ5LCBmb250U2l6ZSk7CisgICAgICAg
IGF1dG8gZm9udCA9IGZvbnRXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVEaWN0aW9uYXJ5LCBmb250
U2l6ZSk7CiAgICAgICAgIGlmICghZm9udCkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ1MTE2
NjY0MmU0NTcyMjFjZDNkMWZhODMzNmQ2ZTE5ZmY0ZmNiMi4uZDNjOGFlYzMyMDJmZWQ5MDM0Y2U3
NTQxMGI3ODc3MDYzZDA2ZmUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MzcyLDYgKzUzNzIsNyBAQAogCQlGNEY1OUFEMzIwNjVB
NUM5MDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTZWxlY3RNZW51TGlzdFZpZXdDb250
cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxl
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGNTlBRDQyMDY1QTVDQTAwNkNB
QTQ2IC8qIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaDsgcGF0aCA9
IGlvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjRGRTBBM0EyNDYzMkIxMDAwMjYzMUUxIC8qIENvY29hQ29sb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29jb2FDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGNEZFMEEzQzI0NjM1NjY3MDAyNjMxRTEgLyogQ29jb2FGb250LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvY29hRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNDEy
NkNFMTgyMDA1N0QwQTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNjEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2Vy
Q29udGVudFVSTFBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNjExM0UyNzEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyQ29udGVudFVSTFBhdHRl
cm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2ODMsNiArNzY4NCw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0RkUwQTNBMjQ2MzJCMTAw
MDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggKi8sCisJCQkJRjRGRTBBM0MyNDYzNTY2NzAwMjYzMUUx
IC8qIENvY29hRm9udC5oICovLAogCQkJCTQ0ODI3MzQ2MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2Nv
YUltYWdlLmggKi8sCiAJCQkJQkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGlu
Z0NvbnRleHQuaCAqLywKIAkJCQlCQ0UwOTM3NTE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0
aW5nQ29udGV4dC5tbSAqLywK
</data>
<flag name="review"
          id="414075"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398677</attachid>
            <date>2020-05-06 15:48:19 -0700</date>
            <delta_ts>2020-05-06 16:25:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211527-20200506154818.patch</filename>
            <type>text/plain</type>
            <size>19121</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1MzBlODE5OWViYjYzMTg5
Y2I0MzkxODRhMTU0NGM1ZTY3NTgxODcuLjEwNmNiZmVhMTA3MzczOGZkMzQyNzA1ODcwNzFiOWZl
YWNiMTZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjAtMDUtMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvY29hQ29sb3Ig
aW4gbW9yZSBwbGFjZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkZWZpbmVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE1MjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgVGltIEhvcnRvbi4KKworICAgICAgICBVc2UgQ29jb2FD
b2xvciAoYWRkZWQgaW4gcjI2MTI0NykgaW4gbW9yZSBwbGFjZXMsIGFuZCBhbHNvIGludHJvZHVj
ZSBgQ29jb2FGb250LmhgIGFuZCB1c2UgaXQgdG8gc2ltcGxpZnkgc29tZQorICAgICAgICBleGlz
dGluZyBjb2RlIHRoYXQgdXNlcyBwbGF0Zm9ybSBpZmRlZnMgZm9yIFVJRm9udCwgTlNGb250LCBV
SUZvbnREZXNjcmlwdG9yIGFuZCBOU0ZvbnREZXNjcmlwdG9yLgorCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFBsYXRmb3JtL2NvY29hL0NvY29hQ29sb3IuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9Db2NvYUZvbnQuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUNvbG9yLmguCisgICAgICAgICogUGxhdGZvcm0v
Y29jb2EvQ29jb2FJbWFnZS5oOgorCisgICAgICAgIENoYW5nZSBgQGNsYXNzYGVzIHRvIGBPQkpD
X0NMQVNTYCwgc28gdGhhdCB0aGlzIGhlYWRlciBjYW4gYmUgc2FmZWx5IGltcG9ydGVkIGluIEMr
KyBjb2RlLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW06
CisgICAgICAgIChJUEM6OnR5cGVGcm9tT2JqZWN0KToKKyAgICAgICAgKElQQzo6aXNTZXJpYWxp
emFibGVWYWx1ZSk6CisgICAgICAgIChJUEM6OmVuY29kZUZvbnRJbnRlcm5hbCk6CisgICAgICAg
IChJUEM6OmVuY29kZU9iamVjdCk6CisgICAgICAgIChJUEM6OnBsYXRmb3JtQ29sb3JDbGFzcyk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OnBsYXRmb3JtRm9udENsYXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJzLmg6CisgICAgICAgICogU2hhcmVk
L0NvY29hL0NvcmVUZXh0SGVscGVycy5tbToKKyAgICAgICAgKFdlYktpdDo6Zm9udFdpdGhBdHRy
aWJ1dGVzKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW06Cisg
ICAgICAgIChmb250T2ZTaXplKToKKyAgICAgICAgKGNvbG9yRm9ySXRlbSk6CisgICAgICAgICgt
W1dLU2FmZUJyb3dzaW5nQm94IHNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjpdKToKKyAg
ICAgICAgKC1bV0tTYWZlQnJvd3NpbmdXYXJuaW5nIHNob3dEZXRhaWxzQ2xpY2tlZF0pOgorICAg
ICAgICAoLVtXS1NhZmVCcm93c2luZ1RleHRWaWV3IGluaXRXaXRoQXR0cmlidXRlZFN0cmluZzpm
b3JXYXJuaW5nOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVkZWQp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTA1
LTA2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZGF0YSBzdW1tYXJ5IGNhbGwgc2hvdWxkIGNyZWF0ZSBh
IHdlYiBwcm9jZXNzIHBvb2wgaWYgb25lIGRvZXNuJ3QgZXhpc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvQ29jb2FDb2xvci5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jb2NvYS9Db2NvYUNvbG9yLmgKaW5kZXggODk3MTZiOWFmOTAzNzM5MjY2Yjg1YTY1YWVl
ZWRlZGQ4NTdlZTkwZi4uNzQ4MWU5YmRiMDZmNDQ4YmQ0NmI3NWJjMmFlZWRlOTg3ZDUzNTIyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUNvbG9yLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUNvbG9yLmgKQEAgLTI1LDEwICsy
NSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorCiAj
aWYgVVNFKEFQUEtJVCkKLUBjbGFzcyBOU0NvbG9yOworT0JKQ19DTEFTUyBOU0NvbG9yOwogdXNp
bmcgQ29jb2FDb2xvciA9IE5TQ29sb3I7CiAjZWxzZQotQGNsYXNzIFVJQ29sb3I7CitPQkpDX0NM
QVNTIFVJQ29sb3I7CiB1c2luZyBDb2NvYUNvbG9yID0gVUlDb2xvcjsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUZvbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvQ29jb2FGb250LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc3YzVlMTVhZmQy
N2NkYzQ5ODcyNWIwMTRhNmZjNzhhY2Y1ZWJkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvQ29jb2FGb250LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorCisjaWYgVVNFKEFQUEtJVCkKK09CSkNfQ0xBU1Mg
TlNGb250CitPQkpDX0NMQVNTIE5TRm9udERlc2NyaXB0b3I7Cit1c2luZyBDb2NvYUZvbnQgPSBO
U0ZvbnQ7Cit1c2luZyBDb2NvYUZvbnREZXNjcmlwdG9yID0gTlNGb250RGVzY3JpcHRvcjsKKyNl
bHNlCitPQkpDX0NMQVNTIFVJRm9udDsKK09CSkNfQ0xBU1MgVUlGb250RGVzY3JpcHRvcjsKK3Vz
aW5nIENvY29hRm9udCA9IFVJRm9udDsKK3VzaW5nIENvY29hRm9udERlc2NyaXB0b3IgPSBVSUZv
bnREZXNjcmlwdG9yOworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL0NvY29hSW1hZ2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvQ29jb2FJ
bWFnZS5oCmluZGV4IDJjYWI3NWNhZGVhNDdkYzc1NTAzMTAyZTJhMmEyOGM1YmIyYzgxNzEuLmM0
MWQ3ZjQ4OWQ4MDQwOTA0YzE1MmExODI2MzhkMDczYjhhMTNjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvQ29jb2FJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vY29jb2EvQ29jb2FJbWFnZS5oCkBAIC0yMywxMCArMjMsMTIgQEAKICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogKi8KIAorI2luY2x1ZGUgPHd0Zi9Db21waWxlci5o
PgorCiAjaWYgVVNFKEFQUEtJVCkKLUBjbGFzcyBOU0ltYWdlOworT0JKQ19DTEFTUyBOU0ltYWdl
OwogdXNpbmcgQ29jb2FJbWFnZSA9IE5TSW1hZ2U7CiAjZWxzZQotQGNsYXNzIFVJSW1hZ2U7CitP
QkpDX0NMQVNTIFVJSW1hZ2U7CiB1c2luZyBDb2NvYUltYWdlID0gVUlJbWFnZTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0K
aW5kZXggMmIwOGRmZDM1ZWFkZTc5ODVkODg2NWFjNDA2YWIzOGNhZGQ1YmQxNS4uMGRjYjk3ZTAz
ODQ5ZDU3YWU3NjU3Y2M2YmY1MGIxYmJiMTcxOWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0yOSw2ICsyOSw4IEBACiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNpbXBv
cnQgIkNvY29hQ29sb3IuaCIKKyNpbXBvcnQgIkNvY29hRm9udC5oIgogI2ltcG9ydCAiQ29yZVRl
eHRIZWxwZXJzLmgiCiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZvbnQuaD4KICNpbXBvcnQgPENvcmVU
ZXh0L0NURm9udERlc2NyaXB0b3IuaD4KQEAgLTQ3LDE0ICs0OSw2IEBACiAjaW1wb3J0IDxVSUtp
dC9VSUZvbnREZXNjcmlwdG9yLmg+CiAjZW5kaWYKIAotI2lmIFVTRShBUFBLSVQpCi11c2luZyBQ
bGF0Zm9ybUNvbG9yID0gTlNDb2xvcjsKLXVzaW5nIFBsYXRmb3JtRm9udCA9IE5TRm9udDsKLSNl
bHNlCi11c2luZyBQbGF0Zm9ybUNvbG9yID0gVUlDb2xvcjsKLXVzaW5nIFBsYXRmb3JtRm9udCA9
IFVJRm9udDsKLSNlbmRpZgotCiAjaWYgSEFWRShOU0ZPTlRfV0lUSF9PUFRJQ0FMX1NJWklOR19C
VUcpCiAKIEBpbnRlcmZhY2UgV0tTZWN1cmVDb2RpbmdGb250QXR0cmlidXRlTm9ybWFsaXplciA6
IE5TT2JqZWN0IDxOU0tleWVkQXJjaGl2ZXJEZWxlZ2F0ZT4KQEAgLTk5LDM0ICs5Myw2IEBAIGVu
dW0gY2xhc3MgTlNUeXBlIHsKIAogI3ByYWdtYSBtYXJrIC0gSGVscGVycwogCi1zdGF0aWMgQ2xh
c3MgcGxhdGZvcm1Db2xvckNsYXNzKCkKLXsKLSAgICBzdGF0aWMgQ2xhc3MgY29sb3JDbGFzczsK
LSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShmbGFn
LCBbXSB7Ci0jaWYgVVNFKEFQUEtJVCkKLSAgICAgICAgY29sb3JDbGFzcyA9IE5TQ2xhc3NGcm9t
U3RyaW5nKEAiTlNDb2xvciIpOwotI2Vsc2UKLSAgICAgICAgY29sb3JDbGFzcyA9IE5TQ2xhc3NG
cm9tU3RyaW5nKEAiVUlDb2xvciIpOwotI2VuZGlmCi0gICAgfSk7Ci0gICAgcmV0dXJuIGNvbG9y
Q2xhc3M7Ci19Ci0KLXN0YXRpYyBDbGFzcyBwbGF0Zm9ybUZvbnRDbGFzcygpCi17Ci0gICAgc3Rh
dGljIENsYXNzIGZvbnRDbGFzczsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsKLSAg
ICBzdGQ6OmNhbGxfb25jZShmbGFnLCBbXSB7Ci0jaWYgVVNFKEFQUEtJVCkKLSAgICAgICAgZm9u
dENsYXNzID0gTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnQiKTsKLSNlbHNlCi0gICAgICAgIGZv
bnRDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiVUlGb250Iik7Ci0jZW5kaWYKLSAgICB9KTsK
LSAgICByZXR1cm4gZm9udENsYXNzOwotfQotCiBzdGF0aWMgTlNUeXBlIHR5cGVGcm9tT2JqZWN0
KGlkIG9iamVjdCkKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKQEAgLTEzNCw3ICsxMDAsNyBAQCBz
dGF0aWMgTlNUeXBlIHR5cGVGcm9tT2JqZWN0KGlkIG9iamVjdCkKICAgICAvLyBTcGVjaWZpYyBj
bGFzc2VzIGhhbmRsZWQuCiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBj
bGFzc11dKQogICAgICAgICByZXR1cm4gTlNUeXBlOjpBcnJheTsKLSAgICBpZiAoW29iamVjdCBp
c0tpbmRPZkNsYXNzOnBsYXRmb3JtQ29sb3JDbGFzcygpXSkKKyAgICBpZiAoW29iamVjdCBpc0tp
bmRPZkNsYXNzOltDb2NvYUNvbG9yIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBOU1R5cGU6OkNv
bG9yOwogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQogICAg
ICAgICByZXR1cm4gTlNUeXBlOjpEYXRhOwpAQCAtMTQyLDcgKzEwOCw3IEBAIHN0YXRpYyBOU1R5
cGUgdHlwZUZyb21PYmplY3QoaWQgb2JqZWN0KQogICAgICAgICByZXR1cm4gTlNUeXBlOjpEYXRl
OwogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQog
ICAgICAgICByZXR1cm4gTlNUeXBlOjpEaWN0aW9uYXJ5OwotICAgIGlmIChbb2JqZWN0IGlzS2lu
ZE9mQ2xhc3M6cGxhdGZvcm1Gb250Q2xhc3MoKV0pCisgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpbQ29jb2FGb250IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBOU1R5cGU6OkZvbnQ7CiAg
ICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIE5TVHlwZTo6TnVtYmVyOwpAQCAtMTY4LDcgKzEzNCw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1NlcmlhbGl6YWJsZUZvbnQoQ1RGb250UmVmIGZvbnQpCiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1NlcmlhbGl6YWJsZVZhbHVlKGlkIHZhbHVlKQogewotICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbUGxhdGZvcm1Gb250IGNsYXNzXV0pCisgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltDb2NvYUZvbnQgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGlzU2VyaWFsaXphYmxl
Rm9udCgoX19icmlkZ2UgQ1RGb250UmVmKXZhbHVlKTsKICAgICByZXR1cm4gdHlwZUZyb21PYmpl
Y3QodmFsdWUpICE9IE5TVHlwZTo6VW5rbm93bjsKIH0KQEAgLTMzOSw3ICszMDUsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRGljdGlvbmFyeUludGVybmFsKERlY29k
ZXImIGRlY29kZXIsIE5TQXJyYQogCiAjcHJhZ21hIG1hcmsgLSBOU0ZvbnQgLyBVSUZvbnQKIAot
c3RhdGljIGlubGluZSB2b2lkIGVuY29kZUZvbnRJbnRlcm5hbChFbmNvZGVyJiBlbmNvZGVyLCBQ
bGF0Zm9ybUZvbnQgKmZvbnQpCitzdGF0aWMgaW5saW5lIHZvaWQgZW5jb2RlRm9udEludGVybmFs
KEVuY29kZXImIGVuY29kZXIsIENvY29hRm9udCAqZm9udCkKIHsKICAgICBlbmNvZGUoZW5jb2Rl
ciwgZm9udC5mb250RGVzY3JpcHRvci5mb250QXR0cmlidXRlcyk7CiB9CkBAIC00NjUsMTMgKzQz
MSwxMyBAQCB2b2lkIGVuY29kZU9iamVjdChFbmNvZGVyJiBlbmNvZGVyLCBpZCBvYmplY3QpCiAg
ICAgICAgIGVuY29kZUFycmF5SW50ZXJuYWwoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8TlNBcnJheSAq
PihvYmplY3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTlNUeXBlOjpDb2xvcjoKLSAg
ICAgICAgZW5jb2RlQ29sb3JJbnRlcm5hbChlbmNvZGVyLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybUNv
bG9yICo+KG9iamVjdCkpOworICAgICAgICBlbmNvZGVDb2xvckludGVybmFsKGVuY29kZXIsIHN0
YXRpY19jYXN0PENvY29hQ29sb3IgKj4ob2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIE5TVHlwZTo6RGljdGlvbmFyeToKICAgICAgICAgZW5jb2RlRGljdGlvbmFyeUludGVybmFs
KGVuY29kZXIsIHN0YXRpY19jYXN0PE5TRGljdGlvbmFyeSAqPihvYmplY3QpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgTlNUeXBlOjpGb250OgotICAgICAgICBlbmNvZGVGb250SW50ZXJu
YWwoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1Gb250ICo+KG9iamVjdCkpOworICAgICAg
ICBlbmNvZGVGb250SW50ZXJuYWwoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Q29jb2FGb250ICo+KG9i
amVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBOU1R5cGU6Ok51bWJlcjoKICAgICAg
ICAgZW5jb2RlTnVtYmVySW50ZXJuYWwoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8TlNOdW1iZXIgKj4o
b2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4
dEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5o
CmluZGV4IDNmNmY3OTQyYWMxY2JhNjgwMzBiMmNiZTg4OTZhYjM3N2EzNjIxZTUuLjU3NjQ4M2My
ZjFjYWMwOWVlODYyZDFhOWM2NGEzZWE4YWZlZTNkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5oCkBAIC0yNSwyMiArMjUsMTcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbXBvcnQgIkNvY29hRm9udC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorCiAjaWYgVVNFKEFQUEtJVCkKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KICNlbHNlCiAj
aW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogI2VuZGlmCiAKLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNpZiBVU0UoQVBQS0lUKQotdXNpbmcgUGxhdGZv
cm1Gb250ID0gTlNGb250OwotI2Vsc2UKLXVzaW5nIFBsYXRmb3JtRm9udCA9IFVJRm9udDsKLSNl
bmRpZgotCi1QbGF0Zm9ybUZvbnQgKmZvbnRXaXRoQXR0cmlidXRlcyhOU0RpY3Rpb25hcnkgKmF0
dHJpYnV0ZXMsIENHRmxvYXQgc2l6ZSk7CitDb2NvYUZvbnQgKmZvbnRXaXRoQXR0cmlidXRlcyhO
U0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMsIENHRmxvYXQgc2l6ZSk7CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5tbQppbmRleCBhMWVlYmIzMjc0ZGNh
MDdkZWVjNjhmOTc3NzVjNWIxNWY1MjMwZTE5Li5hYWY1ZTVjOWI5YzZiM2YxNDhhMjUyOGU3ZmI0
ZTIxMzBjYmY5MDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3Jl
VGV4dEhlbHBlcnMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRleHRI
ZWxwZXJzLm1tCkBAIC0yOSwxNSArMjksOSBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3Jl
VGV4dFNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KIAotI2lmIFVT
RShBUFBLSVQpCi11c2luZyBQbGF0Zm9ybUZvbnREZXNjcmlwdG9yID0gTlNGb250RGVzY3JpcHRv
cjsKLSNlbHNlCi11c2luZyBQbGF0Zm9ybUZvbnREZXNjcmlwdG9yID0gVUlGb250RGVzY3JpcHRv
cjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGxhdGZvcm1Gb250ICpmb250V2l0
aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUpCitDb2Nv
YUZvbnQgKmZvbnRXaXRoQXR0cmlidXRlcyhOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMsIENHRmxv
YXQgc2l6ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTUxLDEy
ICs0NSwxMiBAQCBQbGF0Zm9ybUZvbnQgKmZvbnRXaXRoQXR0cmlidXRlcyhOU0RpY3Rpb25hcnkg
KmF0dHJpYnV0ZXMsIENHRmxvYXQgc2l6ZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8g
ZGVzY3JpcHRvciA9IFtQbGF0Zm9ybUZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZv
bnRBdHRyaWJ1dGVzOm11dGFibGVEaWN0aW9uYXJ5LmdldCgpXTsKKyAgICBhdXRvIGRlc2NyaXB0
b3IgPSBbQ29jb2FGb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRl
czptdXRhYmxlRGljdGlvbmFyeS5nZXQoKV07CiAjZWxzZQotICAgIGF1dG8gZGVzY3JpcHRvciA9
IFtQbGF0Zm9ybUZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVz
OmF0dHJpYnV0ZXNdOworICAgIGF1dG8gZGVzY3JpcHRvciA9IFtDb2NvYUZvbnREZXNjcmlwdG9y
IGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOmF0dHJpYnV0ZXNdOwogI2VuZGlmCiAK
LSAgICByZXR1cm4gW1BsYXRmb3JtRm9udCBmb250V2l0aERlc2NyaXB0b3I6ZGVzY3JpcHRvciBz
aXplOnNpemVdOworICAgIHJldHVybiBbQ29jb2FGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpkZXNj
cmlwdG9yIHNpemU6c2l6ZV07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KaW5kZXggYTA1ZGYwYTk0NGY5Mjg2OTBiMjM0NThkZjE0MWNjOGYzMDZiYjZm
OS4uMDgzZTY2ZGIwM2M3MTliZWM4N2I4Yzk4MzQ1MGJhNDNlMThkYjc1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NvY29hLmgiCisjaW1wb3J0ICJDb2NvYUZvbnQu
aCIKICNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnQuaD4KQEAgLTUy
NSwxMiArNTI2LDYgQEAgT3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6Rm9udEF0dHJpYnV0ZXM+OjpkZWNvZGVQbGF0Zm9ybUQKICAgICByZXR1cm4gYXR0cmli
dXRlczsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jZGVmaW5lIENvY29hRm9udCBV
SUZvbnQKLSNlbHNlCi0jZGVmaW5lIENvY29hRm9udCBOU0ZvbnQKLSNlbmRpZgotCiB2b2lkIEFy
Z3VtZW50Q29kZXI8Rm9udEhhbmRsZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBGb250SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgYXV0byBjdEZvbnQgPSBoYW5k
bGUuZm9udCAmJiAhaGFuZGxlLmZvbnQtPmZvbnRGYWNlRGF0YSgpID8gaGFuZGxlLmZvbnQtPmdl
dENURm9udCgpIDogbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAppbmRleCBiMjUxYzZlZjIyNDJhMGNiZGRmNjdiM2Ux
YThiZDg1MmZkMzNmM2RhLi42ZTk0OWViOTc5MTAxODRlNjI5M2M0N2YxOWZhYmFjMjMwNGU5MTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2lu
Z1dhcm5pbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93
c2luZ1dhcm5pbmcuaApAQCAtMjMsNiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgIkNvY29hQ29sb3IuaCIKICNpbXBvcnQgIldLRm91
bmRhdGlvbi5oIgogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW1wb3J0IDx3
dGYvUmVmUHRyLmg+CkBAIC00NSwyMCArNDYsMTggQEAgT0JKQ19DTEFTUyBXS1NhZmVCcm93c2lu
Z1RleHRWaWV3OwogI2lmIFBMQVRGT1JNKE1BQykKIHVzaW5nIFZpZXdUeXBlID0gTlNWaWV3Owog
dXNpbmcgUmVjdFR5cGUgPSBOU1JlY3Q7Ci11c2luZyBDb2xvclR5cGUgPSBOU0NvbG9yOwogI2Vs
c2UKIHVzaW5nIFZpZXdUeXBlID0gVUlWaWV3OwogdXNpbmcgUmVjdFR5cGUgPSBDR1JlY3Q7Ci11
c2luZyBDb2xvclR5cGUgPSBVSUNvbG9yOwogI2VuZGlmCiAKIEBpbnRlcmZhY2UgV0tTYWZlQnJv
d3NpbmdCb3ggOiBWaWV3VHlwZSB7CiBAcGFja2FnZQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBS
ZXRhaW5QdHI8Q29sb3JUeXBlPiBfYmFja2dyb3VuZENvbG9yOworICAgIFJldGFpblB0cjxDb2Nv
YUNvbG9yPiBfYmFja2dyb3VuZENvbG9yOwogI2VuZGlmCiB9Ci0tICh2b2lkKXNldFNhZmVCcm93
c2luZ0JhY2tncm91bmRDb2xvcjooQ29sb3JUeXBlICopY29sb3I7CistICh2b2lkKXNldFNhZmVC
cm93c2luZ0JhY2tncm91bmRDb2xvcjooQ29jb2FDb2xvciAqKWNvbG9yOwogQGVuZAogCiAjaWYg
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tCmluZGV4IGMxZTU3ZWE5MThlMjU0MzQ3YjZkMDhmZjJi
ZTFlZDFkNDA5ZWIzZWMuLjhhNmMzNDViMzVmMzE3MDlhZjdiNTQ5YzcyZmE2NGU3ZTU2MWY1ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5n
V2FybmluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93
c2luZ1dhcm5pbmcubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgiCiAKKyNpbXBvcnQgIkNvY29hRm9udC5oIgog
I2ltcG9ydCAiUGFnZUNsaWVudC5oIgogI2ltcG9ydCAiU2FmZUJyb3dzaW5nV2FybmluZy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CkBAIC01MCwxMyArNTEsMTEgQEAg
Y29uc3RleHByIENHRmxvYXQgbWF4V2lkdGggPSA2NzU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KE1BQykKLXVzaW5nIEZvbnRUeXBlID0gTlNGb250OwogdXNpbmcgVGV4dFZpZXdUeXBlID0gTlNU
ZXh0VmlldzsKIHVzaW5nIEJ1dHRvblR5cGUgPSBOU0J1dHRvbjsKIHVzaW5nIEFsaWdubWVudFR5
cGUgPSBOU0xheW91dEF0dHJpYnV0ZTsKIHVzaW5nIFNpemVUeXBlID0gTlNTaXplOwogI2Vsc2UK
LXVzaW5nIEZvbnRUeXBlID0gVUlGb250OwogdXNpbmcgVGV4dFZpZXdUeXBlID0gVUlUZXh0Vmll
dzsKIHVzaW5nIEJ1dHRvblR5cGUgPSBVSUJ1dHRvbjsKIHVzaW5nIEFsaWdubWVudFR5cGUgPSBV
SVN0YWNrVmlld0FsaWdubWVudDsKQEAgLTc4LDcgKzc3LDcgQEAgZW51bSBjbGFzcyBXYXJuaW5n
VGV4dFNpemUgOiB1aW50OF90IHsKICAgICBCb2R5CiB9OwogCi1zdGF0aWMgRm9udFR5cGUgKmZv
bnRPZlNpemUoV2FybmluZ1RleHRTaXplIHNpemUpCitzdGF0aWMgQ29jb2FGb250ICpmb250T2ZT
aXplKFdhcm5pbmdUZXh0U2l6ZSBzaXplKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBzd2l0
Y2ggKHNpemUpIHsKQEAgLTEwMywxMiArMTAyLDEyIEBAIHN0YXRpYyBGb250VHlwZSAqZm9udE9m
U2l6ZShXYXJuaW5nVGV4dFNpemUgc2l6ZSkKICNlbmRpZgogfQogCi1zdGF0aWMgQ29sb3JUeXBl
ICpjb2xvckZvckl0ZW0oV2FybmluZ0l0ZW0gaXRlbSwgVmlld1R5cGUgKndhcm5pbmcpCitzdGF0
aWMgQ29jb2FDb2xvciAqY29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtIGl0ZW0sIFZpZXdUeXBlICp3
YXJuaW5nKQogewogICAgIEFTU0VSVChbd2FybmluZyBpc0tpbmRPZkNsYXNzOltXS1NhZmVCcm93
c2luZ1dhcm5pbmcgY2xhc3NdXSk7CiAjaWYgUExBVEZPUk0oTUFDKQogCi0gICAgYXV0byBjb2xv
ck5hbWVkID0gW10gKE5TU3RyaW5nICpuYW1lKSAtPiBDb2xvclR5cGUqIHsKKyAgICBhdXRvIGNv
bG9yTmFtZWQgPSBbXSAoTlNTdHJpbmcgKm5hbWUpIC0+IENvY29hQ29sb3IgKiB7CiAjaWYgSEFW
RShTQUZFX0JST1dTSU5HKQogICAgICAgICByZXR1cm4gW05TQ29sb3IgY29sb3JOYW1lZDpuYW1l
IGJ1bmRsZTpbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0
Il1dOwogI2Vsc2UKQEAgLTI2MSw3ICsyNjAsNyBAQCBzdGF0aWMgVmlld1R5cGUgKm1ha2VMYWJl
bChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiAKIEBpbXBsZW1lbnRhdGlv
biBXS1NhZmVCcm93c2luZ0JveAogCi0tICh2b2lkKXNldFNhZmVCcm93c2luZ0JhY2tncm91bmRD
b2xvcjooQ29sb3JUeXBlICopY29sb3IKKy0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dyb3Vu
ZENvbG9yOihDb2NvYUNvbG9yICopY29sb3IKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgX2Jh
Y2tncm91bmRDb2xvciA9IGNvbG9yOwpAQCAtNDM1LDcgKzQzNCw3IEBAIC0gKHZvaWQpc2hvd0Rl
dGFpbHNDbGlja2VkCiAjZW5kaWYKIAogICAgIFdLU2FmZUJyb3dzaW5nQm94ICpsaW5lID0gW1tX
S1NhZmVCcm93c2luZ0JveCBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBbbGluZSBzZXRTYWZlQnJv
d3NpbmdCYWNrZ3JvdW5kQ29sb3I6W0NvbG9yVHlwZSBsaWdodEdyYXlDb2xvcl1dOworICAgIFts
aW5lIHNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBsaWdodEdyYXlD
b2xvcl1dOwogICAgIGZvciAoVmlld1R5cGUgKnZpZXcgaW4gQFtkZXRhaWxzLCBib3R0b20sIGxp
bmVdKQogICAgICAgICB2aWV3LnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFp
bnRzID0gTk87CiAKQEAgLTU3MCw3ICs1NjksNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhB
dHRyaWJ1dGVkU3RyaW5nOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilhdHRyaWJ1dGVkU3RyaW5nCiAg
ICAgc2VsZi0+X3dhcm5pbmcgPSB3YXJuaW5nOwogICAgIHNlbGYuZGVsZWdhdGUgPSB3YXJuaW5n
OwogCi0gICAgQ29sb3JUeXBlICpmb3JlZ3JvdW5kQ29sb3IgPSBjb2xvckZvckl0ZW0oV2Fybmlu
Z0l0ZW06Ok1lc3NhZ2VUZXh0LCB3YXJuaW5nKTsKKyAgICBDb2NvYUNvbG9yICpmb3JlZ3JvdW5k
Q29sb3IgPSBjb2xvckZvckl0ZW0oV2FybmluZ0l0ZW06Ok1lc3NhZ2VUZXh0LCB3YXJuaW5nKTsK
ICAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcgPSBbW2F0dHJpYnV0ZWRTdHJp
bmcgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKICAgICBbc3RyaW5nIGFkZEF0dHJpYnV0ZXM6
QHsgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIDogZm9yZWdyb3VuZENvbG9yIH0gcmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgc3RyaW5nLmxlbmd0aCldOwogICAgIFtzZWxmIHNldEJhY2tncm91
bmRDb2xvcjpjb2xvckZvckl0ZW0oV2FybmluZ0l0ZW06OkJveEJhY2tncm91bmQsIHdhcm5pbmcp
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
OTA1OGNhZWZhOWNlOGY1MGE0YTNhZDM0OWI4MzQwM2Q3Yjg5Y2QyZi4uNTgwMTA4MWI1ZDBmNzk1
Mjg0MmYyMWVlNTFkNGUzY2JiM2UzZmNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI4ODksNyArMjg4OSw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVkZWQoKQogICAgICAgICBpZiAoIWF0dHJpYnV0ZURp
Y3Rpb25hcnkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUGxhdGZvcm1Gb250ICpm
b250ID0gZm9udFdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZURpY3Rpb25hcnksIGZvbnRTaXplKTsK
KyAgICAgICAgYXV0byBmb250ID0gZm9udFdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZURpY3Rpb25h
cnksIGZvbnRTaXplKTsKICAgICAgICAgaWYgKCFmb250KQogICAgICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzMzM0OTBhMGRmZTZhZGU0MjhhZmU0ZDVkYjAxYjZmNGY3MzllMWRjLi43MTdlOGRmNTVkMjY2
MmFjZWNhYWFhZDgyMzczNGU4OWFhNWU5MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNzQsNiArNTM3NCw3IEBACiAJCUY0RjU5
QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY1OUFENDIwNjVB
NUNBMDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5o
OyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29j
b2FDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2NvYUNvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0RkUwQTNDMjQ2MzU2NjcwMDI2MzFFMSAvKiBDb2NvYUZvbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29jb2FGb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2
MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAv
KiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY2MTEzRTI3MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJM
UGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VzZXJDb250ZW50
VVJMUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY4Nyw2ICs3Njg4
LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRjRGRTBBM0Ey
NDYzMkIxMDAwMjYzMUUxIC8qIENvY29hQ29sb3IuaCAqLywKKwkJCQlGNEZFMEEzQzI0NjM1NjY3
MDAyNjMxRTEgLyogQ29jb2FGb250LmggKi8sCiAJCQkJNDQ4MjczNDYyNDUyOEY2MDAwQTk1NDkz
IC8qIENvY29hSW1hZ2UuaCAqLywKIAkJCQlCQ0UwOTM3NjE0RkIxMjhCMDAxMTM4RDkgLyogTGF5
ZXJIb3N0aW5nQ29udGV4dC5oICovLAogCQkJCUJDRTA5Mzc1MTRGQjEyOEIwMDExMzhEOSAvKiBM
YXllckhvc3RpbmdDb250ZXh0Lm1tICovLAo=
</data>
<flag name="commit-queue"
          id="414082"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398681</attachid>
            <date>2020-05-06 16:26:56 -0700</date>
            <delta_ts>2020-05-06 16:50:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211527-20200506162656.patch</filename>
            <type>text/plain</type>
            <size>19122</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1MzBlODE5OWViYjYzMTg5
Y2I0MzkxODRhMTU0NGM1ZTY3NTgxODcuLjEwNmNiZmVhMTA3MzczOGZkMzQyNzA1ODcwNzFiOWZl
YWNiMTZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjAtMDUtMDYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENvY29hQ29sb3Ig
aW4gbW9yZSBwbGFjZXMgaW5zdGVhZCBvZiBwbGF0Zm9ybSBkZWZpbmVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE1MjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgVGltIEhvcnRvbi4KKworICAgICAgICBVc2UgQ29jb2FD
b2xvciAoYWRkZWQgaW4gcjI2MTI0NykgaW4gbW9yZSBwbGFjZXMsIGFuZCBhbHNvIGludHJvZHVj
ZSBgQ29jb2FGb250LmhgIGFuZCB1c2UgaXQgdG8gc2ltcGxpZnkgc29tZQorICAgICAgICBleGlz
dGluZyBjb2RlIHRoYXQgdXNlcyBwbGF0Zm9ybSBpZmRlZnMgZm9yIFVJRm9udCwgTlNGb250LCBV
SUZvbnREZXNjcmlwdG9yIGFuZCBOU0ZvbnREZXNjcmlwdG9yLgorCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFBsYXRmb3JtL2NvY29hL0NvY29hQ29sb3IuaDoK
KyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9Db2NvYUZvbnQuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUNvbG9yLmguCisgICAgICAgICogUGxhdGZvcm0v
Y29jb2EvQ29jb2FJbWFnZS5oOgorCisgICAgICAgIENoYW5nZSBgQGNsYXNzYGVzIHRvIGBPQkpD
X0NMQVNTYCwgc28gdGhhdCB0aGlzIGhlYWRlciBjYW4gYmUgc2FmZWx5IGltcG9ydGVkIGluIEMr
KyBjb2RlLgorCisgICAgICAgICogU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW06
CisgICAgICAgIChJUEM6OnR5cGVGcm9tT2JqZWN0KToKKyAgICAgICAgKElQQzo6aXNTZXJpYWxp
emFibGVWYWx1ZSk6CisgICAgICAgIChJUEM6OmVuY29kZUZvbnRJbnRlcm5hbCk6CisgICAgICAg
IChJUEM6OmVuY29kZU9iamVjdCk6CisgICAgICAgIChJUEM6OnBsYXRmb3JtQ29sb3JDbGFzcyk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OnBsYXRmb3JtRm9udENsYXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJzLmg6CisgICAgICAgICogU2hhcmVk
L0NvY29hL0NvcmVUZXh0SGVscGVycy5tbToKKyAgICAgICAgKFdlYktpdDo6Zm9udFdpdGhBdHRy
aWJ1dGVzKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW06Cisg
ICAgICAgIChmb250T2ZTaXplKToKKyAgICAgICAgKGNvbG9yRm9ySXRlbSk6CisgICAgICAgICgt
W1dLU2FmZUJyb3dzaW5nQm94IHNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjpdKToKKyAg
ICAgICAgKC1bV0tTYWZlQnJvd3NpbmdXYXJuaW5nIHNob3dEZXRhaWxzQ2xpY2tlZF0pOgorICAg
ICAgICAoLVtXS1NhZmVCcm93c2luZ1RleHRWaWV3IGluaXRXaXRoQXR0cmlidXRlZFN0cmluZzpm
b3JXYXJuaW5nOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnVwZGF0ZUZvbnRNYW5hZ2VySWZOZWVkZWQp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTA1
LTA2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgZGF0YSBzdW1tYXJ5IGNhbGwgc2hvdWxkIGNyZWF0ZSBh
IHdlYiBwcm9jZXNzIHBvb2wgaWYgb25lIGRvZXNuJ3QgZXhpc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvQ29jb2FDb2xvci5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jb2NvYS9Db2NvYUNvbG9yLmgKaW5kZXggODk3MTZiOWFmOTAzNzM5MjY2Yjg1YTY1YWVl
ZWRlZGQ4NTdlZTkwZi4uNzQ4MWU5YmRiMDZmNDQ4YmQ0NmI3NWJjMmFlZWRlOTg3ZDUzNTIyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUNvbG9yLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUNvbG9yLmgKQEAgLTI1LDEwICsy
NSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorCiAj
aWYgVVNFKEFQUEtJVCkKLUBjbGFzcyBOU0NvbG9yOworT0JKQ19DTEFTUyBOU0NvbG9yOwogdXNp
bmcgQ29jb2FDb2xvciA9IE5TQ29sb3I7CiAjZWxzZQotQGNsYXNzIFVJQ29sb3I7CitPQkpDX0NM
QVNTIFVJQ29sb3I7CiB1c2luZyBDb2NvYUNvbG9yID0gVUlDb2xvcjsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Db2NvYUZvbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvQ29jb2FGb250LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMxNzZmOWM5Zjc0
NDUyYjUxM2E4MDkwNGQ4ZTgyNjY0ODc4YWEwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvQ29jb2FGb250LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorCisjaWYgVVNFKEFQUEtJVCkKK09CSkNfQ0xBU1Mg
TlNGb250OworT0JKQ19DTEFTUyBOU0ZvbnREZXNjcmlwdG9yOwordXNpbmcgQ29jb2FGb250ID0g
TlNGb250OwordXNpbmcgQ29jb2FGb250RGVzY3JpcHRvciA9IE5TRm9udERlc2NyaXB0b3I7Cisj
ZWxzZQorT0JKQ19DTEFTUyBVSUZvbnQ7CitPQkpDX0NMQVNTIFVJRm9udERlc2NyaXB0b3I7Cit1
c2luZyBDb2NvYUZvbnQgPSBVSUZvbnQ7Cit1c2luZyBDb2NvYUZvbnREZXNjcmlwdG9yID0gVUlG
b250RGVzY3JpcHRvcjsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9Db2NvYUltYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL0NvY29h
SW1hZ2UuaAppbmRleCAyY2FiNzVjYWRlYTQ3ZGM3NTUwMzEwMmUyYTJhMjhjNWJiMmM4MTcxLi5j
NDFkN2Y0ODlkODA0MDkwNGMxNTJhMTgyNjM4ZDA3M2I4YTEzYzQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL0NvY29hSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NvY29hL0NvY29hSW1hZ2UuaApAQCAtMjMsMTAgKzIzLDEyIEBACiAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCiAKKyNpbmNsdWRlIDx3dGYvQ29tcGlsZXIu
aD4KKwogI2lmIFVTRShBUFBLSVQpCi1AY2xhc3MgTlNJbWFnZTsKK09CSkNfQ0xBU1MgTlNJbWFn
ZTsKIHVzaW5nIENvY29hSW1hZ2UgPSBOU0ltYWdlOwogI2Vsc2UKLUBjbGFzcyBVSUltYWdlOwor
T0JKQ19DTEFTUyBVSUltYWdlOwogdXNpbmcgQ29jb2FJbWFnZSA9IFVJSW1hZ2U7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1t
CmluZGV4IDJiMDhkZmQzNWVhZGU3OTg1ZDg4NjVhYzQwNmFiMzhjYWRkNWJkMTUuLjBkY2I5N2Uw
Mzg0OWQ1N2FlNzY1N2NjNmJmNTBiMWJiYjE3MTlhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMjksNiArMjksOCBAQAog
I2lmIFBMQVRGT1JNKENPQ09BKQogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCisjaW1w
b3J0ICJDb2NvYUNvbG9yLmgiCisjaW1wb3J0ICJDb2NvYUZvbnQuaCIKICNpbXBvcnQgIkNvcmVU
ZXh0SGVscGVycy5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CiAjaW1wb3J0IDxDb3Jl
VGV4dC9DVEZvbnREZXNjcmlwdG9yLmg+CkBAIC00NywxNCArNDksNiBAQAogI2ltcG9ydCA8VUlL
aXQvVUlGb250RGVzY3JpcHRvci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQS0lUKQotdXNpbmcg
UGxhdGZvcm1Db2xvciA9IE5TQ29sb3I7Ci11c2luZyBQbGF0Zm9ybUZvbnQgPSBOU0ZvbnQ7Ci0j
ZWxzZQotdXNpbmcgUGxhdGZvcm1Db2xvciA9IFVJQ29sb3I7Ci11c2luZyBQbGF0Zm9ybUZvbnQg
PSBVSUZvbnQ7Ci0jZW5kaWYKLQogI2lmIEhBVkUoTlNGT05UX1dJVEhfT1BUSUNBTF9TSVpJTkdf
QlVHKQogCiBAaW50ZXJmYWNlIFdLU2VjdXJlQ29kaW5nRm9udEF0dHJpYnV0ZU5vcm1hbGl6ZXIg
OiBOU09iamVjdCA8TlNLZXllZEFyY2hpdmVyRGVsZWdhdGU+CkBAIC05OSwzNCArOTMsNiBAQCBl
bnVtIGNsYXNzIE5TVHlwZSB7CiAKICNwcmFnbWEgbWFyayAtIEhlbHBlcnMKIAotc3RhdGljIENs
YXNzIHBsYXRmb3JtQ29sb3JDbGFzcygpCi17Ci0gICAgc3RhdGljIENsYXNzIGNvbG9yQ2xhc3M7
Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2UoZmxh
ZywgW10gewotI2lmIFVTRShBUFBLSVQpCi0gICAgICAgIGNvbG9yQ2xhc3MgPSBOU0NsYXNzRnJv
bVN0cmluZyhAIk5TQ29sb3IiKTsKLSNlbHNlCi0gICAgICAgIGNvbG9yQ2xhc3MgPSBOU0NsYXNz
RnJvbVN0cmluZyhAIlVJQ29sb3IiKTsKLSNlbmRpZgotICAgIH0pOwotICAgIHJldHVybiBjb2xv
ckNsYXNzOwotfQotCi1zdGF0aWMgQ2xhc3MgcGxhdGZvcm1Gb250Q2xhc3MoKQotewotICAgIHN0
YXRpYyBDbGFzcyBmb250Q2xhc3M7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7Ci0g
ICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10gewotI2lmIFVTRShBUFBLSVQpCi0gICAgICAgIGZv
bnRDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250Iik7Ci0jZWxzZQotICAgICAgICBm
b250Q2xhc3MgPSBOU0NsYXNzRnJvbVN0cmluZyhAIlVJRm9udCIpOwotI2VuZGlmCi0gICAgfSk7
Ci0gICAgcmV0dXJuIGZvbnRDbGFzczsKLX0KLQogc3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVj
dChpZCBvYmplY3QpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CkBAIC0xMzQsNyArMTAwLDcgQEAg
c3RhdGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgLy8gU3BlY2lmaWMg
Y2xhc3NlcyBoYW5kbGVkLgogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkg
Y2xhc3NdXSkKICAgICAgICAgcmV0dXJuIE5TVHlwZTo6QXJyYXk7Ci0gICAgaWYgKFtvYmplY3Qg
aXNLaW5kT2ZDbGFzczpwbGF0Zm9ybUNvbG9yQ2xhc3MoKV0pCisgICAgaWYgKFtvYmplY3QgaXNL
aW5kT2ZDbGFzczpbQ29jb2FDb2xvciBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNUeXBlOjpD
b2xvcjsKICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKICAg
ICAgICAgcmV0dXJuIE5TVHlwZTo6RGF0YTsKQEAgLTE0Miw3ICsxMDgsNyBAQCBzdGF0aWMgTlNU
eXBlIHR5cGVGcm9tT2JqZWN0KGlkIG9iamVjdCkKICAgICAgICAgcmV0dXJuIE5TVHlwZTo6RGF0
ZTsKICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkK
ICAgICAgICAgcmV0dXJuIE5TVHlwZTo6RGljdGlvbmFyeTsKLSAgICBpZiAoW29iamVjdCBpc0tp
bmRPZkNsYXNzOnBsYXRmb3JtRm9udENsYXNzKCldKQorICAgIGlmIChbb2JqZWN0IGlzS2luZE9m
Q2xhc3M6W0NvY29hRm9udCBjbGFzc11dKQogICAgICAgICByZXR1cm4gTlNUeXBlOjpGb250Owog
ICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAg
IHJldHVybiBOU1R5cGU6Ok51bWJlcjsKQEAgLTE2OCw3ICsxMzQsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaXNTZXJpYWxpemFibGVGb250KENURm9udFJlZiBmb250KQogCiBzdGF0aWMgaW5saW5l
IGJvb2wgaXNTZXJpYWxpemFibGVWYWx1ZShpZCB2YWx1ZSkKIHsKLSAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W1BsYXRmb3JtRm9udCBjbGFzc11dKQorICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbQ29jb2FGb250IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBpc1NlcmlhbGl6YWJs
ZUZvbnQoKF9fYnJpZGdlIENURm9udFJlZil2YWx1ZSk7CiAgICAgcmV0dXJuIHR5cGVGcm9tT2Jq
ZWN0KHZhbHVlKSAhPSBOU1R5cGU6OlVua25vd247CiB9CkBAIC0zMzksNyArMzA1LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZURpY3Rpb25hcnlJbnRlcm5hbChEZWNv
ZGVyJiBkZWNvZGVyLCBOU0FycmEKIAogI3ByYWdtYSBtYXJrIC0gTlNGb250IC8gVUlGb250CiAK
LXN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVGb250SW50ZXJuYWwoRW5jb2RlciYgZW5jb2Rlciwg
UGxhdGZvcm1Gb250ICpmb250KQorc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUZvbnRJbnRlcm5h
bChFbmNvZGVyJiBlbmNvZGVyLCBDb2NvYUZvbnQgKmZvbnQpCiB7CiAgICAgZW5jb2RlKGVuY29k
ZXIsIGZvbnQuZm9udERlc2NyaXB0b3IuZm9udEF0dHJpYnV0ZXMpOwogfQpAQCAtNDY1LDEzICs0
MzEsMTMgQEAgdm9pZCBlbmNvZGVPYmplY3QoRW5jb2RlciYgZW5jb2RlciwgaWQgb2JqZWN0KQog
ICAgICAgICBlbmNvZGVBcnJheUludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5TQXJyYXkg
Kj4ob2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE5TVHlwZTo6Q29sb3I6Ci0g
ICAgICAgIGVuY29kZUNvbG9ySW50ZXJuYWwoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1D
b2xvciAqPihvYmplY3QpKTsKKyAgICAgICAgZW5jb2RlQ29sb3JJbnRlcm5hbChlbmNvZGVyLCBz
dGF0aWNfY2FzdDxDb2NvYUNvbG9yICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBOU1R5cGU6OkRpY3Rpb25hcnk6CiAgICAgICAgIGVuY29kZURpY3Rpb25hcnlJbnRlcm5h
bChlbmNvZGVyLCBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkgKj4ob2JqZWN0KSk7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIE5TVHlwZTo6Rm9udDoKLSAgICAgICAgZW5jb2RlRm9udEludGVy
bmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PFBsYXRmb3JtRm9udCAqPihvYmplY3QpKTsKKyAgICAg
ICAgZW5jb2RlRm9udEludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PENvY29hRm9udCAqPihv
YmplY3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTlNUeXBlOjpOdW1iZXI6CiAgICAg
ICAgIGVuY29kZU51bWJlckludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5TTnVtYmVyICo+
KG9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29yZVRl
eHRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMu
aAppbmRleCAzZjZmNzk0MmFjMWNiYTY4MDMwYjJjYmU4ODk2YWIzNzdhMzYyMWU1Li41NzY0ODNj
MmYxY2FjMDllZTg2MmQxYTljNjRhM2VhOGFmZWUzZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMuaApAQCAtMjUsMjIgKzI1LDE3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW1wb3J0ICJDb2NvYUZvbnQuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKwogI2lmIFVTRShBUFBLSVQpCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAjZWxzZQog
I2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4KICNlbmRpZgogCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYgVVNFKEFQUEtJVCkKLXVzaW5nIFBsYXRm
b3JtRm9udCA9IE5TRm9udDsKLSNlbHNlCi11c2luZyBQbGF0Zm9ybUZvbnQgPSBVSUZvbnQ7Ci0j
ZW5kaWYKLQotUGxhdGZvcm1Gb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICph
dHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUpOworQ29jb2FGb250ICpmb250V2l0aEF0dHJpYnV0ZXMo
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUpOwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9Db3JlVGV4dEhlbHBlcnMubW0KaW5kZXggYTFlZWJiMzI3NGRj
YTA3ZGVlYzY4Zjk3Nzc1YzViMTVmNTIzMGUxOS4uYWFmNWU1YzliOWM2YjNmMTQ4YTI1MjhlN2Zi
NGUyMTMwY2JmOTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29y
ZVRleHRIZWxwZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvcmVUZXh0
SGVscGVycy5tbQpAQCAtMjksMTUgKzI5LDkgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29y
ZVRleHRTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAKLSNpZiBV
U0UoQVBQS0lUKQotdXNpbmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IE5TRm9udERlc2NyaXB0
b3I7Ci0jZWxzZQotdXNpbmcgUGxhdGZvcm1Gb250RGVzY3JpcHRvciA9IFVJRm9udERlc2NyaXB0
b3I7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBsYXRmb3JtRm9udCAqZm9udFdp
dGhBdHRyaWJ1dGVzKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcywgQ0dGbG9hdCBzaXplKQorQ29j
b2FGb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzLCBDR0Zs
b2F0IHNpemUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC01MSwx
MiArNDUsMTIgQEAgUGxhdGZvcm1Gb250ICpmb250V2l0aEF0dHJpYnV0ZXMoTlNEaWN0aW9uYXJ5
ICphdHRyaWJ1dGVzLCBDR0Zsb2F0IHNpemUpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhdXRv
IGRlc2NyaXB0b3IgPSBbUGxhdGZvcm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhG
b250QXR0cmlidXRlczptdXRhYmxlRGljdGlvbmFyeS5nZXQoKV07CisgICAgYXV0byBkZXNjcmlw
dG9yID0gW0NvY29hRm9udERlc2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0
ZXM6bXV0YWJsZURpY3Rpb25hcnkuZ2V0KCldOwogI2Vsc2UKLSAgICBhdXRvIGRlc2NyaXB0b3Ig
PSBbUGxhdGZvcm1Gb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRl
czphdHRyaWJ1dGVzXTsKKyAgICBhdXRvIGRlc2NyaXB0b3IgPSBbQ29jb2FGb250RGVzY3JpcHRv
ciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczphdHRyaWJ1dGVzXTsKICNlbmRpZgog
Ci0gICAgcmV0dXJuIFtQbGF0Zm9ybUZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmRlc2NyaXB0b3Ig
c2l6ZTpzaXplXTsKKyAgICByZXR1cm4gW0NvY29hRm9udCBmb250V2l0aERlc2NyaXB0b3I6ZGVz
Y3JpcHRvciBzaXplOnNpemVdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCmluZGV4IGEwNWRmMGE5NDRmOTI4NjkwYjIzNDU4ZGYxNDFjYzhmMzA2YmI2
ZjkuLjA4M2U2NmRiMDNjNzE5YmVjODdiOGM5ODM0NTBiYTQzZTE4ZGI3NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKIAogI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgorI2ltcG9ydCAiQ29jb2FGb250
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGljdGlvbmFyeVBvcHVwSW5mby5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Lmg+CkBAIC01
MjUsMTIgKzUyNiw2IEBAIE9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1ECiAgICAgcmV0dXJuIGF0dHJp
YnV0ZXM7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2RlZmluZSBDb2NvYUZvbnQg
VUlGb250Ci0jZWxzZQotI2RlZmluZSBDb2NvYUZvbnQgTlNGb250Ci0jZW5kaWYKLQogdm9pZCBB
cmd1bWVudENvZGVyPEZvbnRIYW5kbGU+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgRm9udEhhbmRsZSYgaGFuZGxlKQogewogICAgIGF1dG8gY3RGb250ID0gaGFu
ZGxlLmZvbnQgJiYgIWhhbmRsZS5mb250LT5mb250RmFjZURhdGEoKSA/IGhhbmRsZS5mb250LT5n
ZXRDVEZvbnQoKSA6IG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgKaW5kZXggYjI1MWM2ZWYyMjQyYTBjYmRkZjY3YjNl
MWE4YmQ4NTJmZDMzZjNkYS4uNmU5NDllYjk3OTEwMTg0ZTYyOTNjNDdmMTlmYWJhYzIzMDRlOTEz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3Np
bmdXYXJuaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJv
d3NpbmdXYXJuaW5nLmgKQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJXS0Zv
dW5kYXRpb24uaCIKICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgpAQCAtNDUsMjAgKzQ2LDE4IEBAIE9CSkNfQ0xBU1MgV0tTYWZlQnJvd3Np
bmdUZXh0VmlldzsKICNpZiBQTEFURk9STShNQUMpCiB1c2luZyBWaWV3VHlwZSA9IE5TVmlldzsK
IHVzaW5nIFJlY3RUeXBlID0gTlNSZWN0OwotdXNpbmcgQ29sb3JUeXBlID0gTlNDb2xvcjsKICNl
bHNlCiB1c2luZyBWaWV3VHlwZSA9IFVJVmlldzsKIHVzaW5nIFJlY3RUeXBlID0gQ0dSZWN0Owot
dXNpbmcgQ29sb3JUeXBlID0gVUlDb2xvcjsKICNlbmRpZgogCiBAaW50ZXJmYWNlIFdLU2FmZUJy
b3dzaW5nQm94IDogVmlld1R5cGUgewogQHBhY2thZ2UKICNpZiBQTEFURk9STShNQUMpCi0gICAg
UmV0YWluUHRyPENvbG9yVHlwZT4gX2JhY2tncm91bmRDb2xvcjsKKyAgICBSZXRhaW5QdHI8Q29j
b2FDb2xvcj4gX2JhY2tncm91bmRDb2xvcjsKICNlbmRpZgogfQotLSAodm9pZClzZXRTYWZlQnJv
d3NpbmdCYWNrZ3JvdW5kQ29sb3I6KENvbG9yVHlwZSAqKWNvbG9yOworLSAodm9pZClzZXRTYWZl
QnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6KENvY29hQ29sb3IgKiljb2xvcjsKIEBlbmQKIAogI2lm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQppbmRleCBjMWU1N2VhOTE4ZTI1NDM0N2I2ZDA4ZmYy
YmUxZWQxZDQwOWViM2VjLi44YTZjMzQ1YjM1ZjMxNzA5YWY3YjU0OWM3MmZhNjRlN2U1NjFmNWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2lu
Z1dhcm5pbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJv
d3NpbmdXYXJuaW5nLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIldLU2FmZUJyb3dzaW5nV2FybmluZy5oIgogCisjaW1wb3J0ICJDb2NvYUZvbnQuaCIK
ICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKICNpbXBvcnQgIlNhZmVCcm93c2luZ1dhcm5pbmcuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgpAQCAtNTAsMTMgKzUxLDExIEBA
IGNvbnN0ZXhwciBDR0Zsb2F0IG1heFdpZHRoID0gNjc1OwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShNQUMpCi11c2luZyBGb250VHlwZSA9IE5TRm9udDsKIHVzaW5nIFRleHRWaWV3VHlwZSA9IE5T
VGV4dFZpZXc7CiB1c2luZyBCdXR0b25UeXBlID0gTlNCdXR0b247CiB1c2luZyBBbGlnbm1lbnRU
eXBlID0gTlNMYXlvdXRBdHRyaWJ1dGU7CiB1c2luZyBTaXplVHlwZSA9IE5TU2l6ZTsKICNlbHNl
Ci11c2luZyBGb250VHlwZSA9IFVJRm9udDsKIHVzaW5nIFRleHRWaWV3VHlwZSA9IFVJVGV4dFZp
ZXc7CiB1c2luZyBCdXR0b25UeXBlID0gVUlCdXR0b247CiB1c2luZyBBbGlnbm1lbnRUeXBlID0g
VUlTdGFja1ZpZXdBbGlnbm1lbnQ7CkBAIC03OCw3ICs3Nyw3IEBAIGVudW0gY2xhc3MgV2Fybmlu
Z1RleHRTaXplIDogdWludDhfdCB7CiAgICAgQm9keQogfTsKIAotc3RhdGljIEZvbnRUeXBlICpm
b250T2ZTaXplKFdhcm5pbmdUZXh0U2l6ZSBzaXplKQorc3RhdGljIENvY29hRm9udCAqZm9udE9m
U2l6ZShXYXJuaW5nVGV4dFNpemUgc2l6ZSkKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgc3dp
dGNoIChzaXplKSB7CkBAIC0xMDMsMTIgKzEwMiwxMiBAQCBzdGF0aWMgRm9udFR5cGUgKmZvbnRP
ZlNpemUoV2FybmluZ1RleHRTaXplIHNpemUpCiAjZW5kaWYKIH0KIAotc3RhdGljIENvbG9yVHlw
ZSAqY29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtIGl0ZW0sIFZpZXdUeXBlICp3YXJuaW5nKQorc3Rh
dGljIENvY29hQ29sb3IgKmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbSBpdGVtLCBWaWV3VHlwZSAq
d2FybmluZykKIHsKICAgICBBU1NFUlQoW3dhcm5pbmcgaXNLaW5kT2ZDbGFzczpbV0tTYWZlQnJv
d3NpbmdXYXJuaW5nIGNsYXNzXV0pOwogI2lmIFBMQVRGT1JNKE1BQykKIAotICAgIGF1dG8gY29s
b3JOYW1lZCA9IFtdIChOU1N0cmluZyAqbmFtZSkgLT4gQ29sb3JUeXBlKiB7CisgICAgYXV0byBj
b2xvck5hbWVkID0gW10gKE5TU3RyaW5nICpuYW1lKSAtPiBDb2NvYUNvbG9yICogewogI2lmIEhB
VkUoU0FGRV9CUk9XU0lORykKICAgICAgICAgcmV0dXJuIFtOU0NvbG9yIGNvbG9yTmFtZWQ6bmFt
ZSBidW5kbGU6W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktp
dCJdXTsKICNlbHNlCkBAIC0yNjEsNyArMjYwLDcgQEAgc3RhdGljIFZpZXdUeXBlICptYWtlTGFi
ZWwoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogCiBAaW1wbGVtZW50YXRp
b24gV0tTYWZlQnJvd3NpbmdCb3gKIAotLSAodm9pZClzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5k
Q29sb3I6KENvbG9yVHlwZSAqKWNvbG9yCistICh2b2lkKXNldFNhZmVCcm93c2luZ0JhY2tncm91
bmRDb2xvcjooQ29jb2FDb2xvciAqKWNvbG9yCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIF9i
YWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKQEAgLTQzNSw3ICs0MzQsNyBAQCAtICh2b2lkKXNob3dE
ZXRhaWxzQ2xpY2tlZAogI2VuZGlmCiAKICAgICBXS1NhZmVCcm93c2luZ0JveCAqbGluZSA9IFtb
V0tTYWZlQnJvd3NpbmdCb3ggbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2xpbmUgc2V0U2FmZUJy
b3dzaW5nQmFja2dyb3VuZENvbG9yOltDb2xvclR5cGUgbGlnaHRHcmF5Q29sb3JdXTsKKyAgICBb
bGluZSBzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgbGlnaHRHcmF5
Q29sb3JdXTsKICAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBbZGV0YWlscywgYm90dG9tLCBs
aW5lXSkKICAgICAgICAgdmlldy50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJh
aW50cyA9IE5POwogCkBAIC01NzAsNyArNTY5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
QXR0cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZwog
ICAgIHNlbGYtPl93YXJuaW5nID0gd2FybmluZzsKICAgICBzZWxmLmRlbGVnYXRlID0gd2Fybmlu
ZzsKIAotICAgIENvbG9yVHlwZSAqZm9yZWdyb3VuZENvbG9yID0gY29sb3JGb3JJdGVtKFdhcm5p
bmdJdGVtOjpNZXNzYWdlVGV4dCwgd2FybmluZyk7CisgICAgQ29jb2FDb2xvciAqZm9yZWdyb3Vu
ZENvbG9yID0gY29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2FybmluZyk7
CiAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1thdHRyaWJ1dGVkU3Ry
aW5nIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CiAgICAgW3N0cmluZyBhZGRBdHRyaWJ1dGVz
OkB7IE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSA6IGZvcmVncm91bmRDb2xvciB9IHJh
bmdlOk5TTWFrZVJhbmdlKDAsIHN0cmluZy5sZW5ndGgpXTsKICAgICBbc2VsZiBzZXRCYWNrZ3Jv
dW5kQ29sb3I6Y29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpCb3hCYWNrZ3JvdW5kLCB3YXJuaW5n
KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4
IDkwNThjYWVmYTljZThmNTBhNGEzYWQzNDliODM0MDNkN2I4OWNkMmYuLjU4MDEwODFiNWQwZjc5
NTI4NDJmMjFlZTUxZDRlM2NiYjNlM2ZjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yODg5LDcgKzI4ODksNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjp1cGRhdGVGb250TWFuYWdlcklmTmVlZGVkKCkKICAgICAgICAgaWYgKCFhdHRyaWJ1dGVE
aWN0aW9uYXJ5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFBsYXRmb3JtRm9udCAq
Zm9udCA9IGZvbnRXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVEaWN0aW9uYXJ5LCBmb250U2l6ZSk7
CisgICAgICAgIGF1dG8gZm9udCA9IGZvbnRXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVEaWN0aW9u
YXJ5LCBmb250U2l6ZSk7CiAgICAgICAgIGlmICghZm9udCkKICAgICAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMzMzNDkwYTBkZmU2YWRlNDI4YWZlNGQ1ZGIwMWI2ZjRmNzM5ZTFkYy4uNzE3ZThkZjU1ZDI2
NjJhY2VjYWFhYWQ4MjM3MzRlODlhYTVlOTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Mzc0LDYgKzUzNzQsNyBAQAogCQlGNEY1
OUFEMzIwNjVBNUM5MDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTZWxlY3RNZW51TGlz
dFZpZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3
Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGNTlBRDQyMDY1
QTVDQTAwNkNBQTQ2IC8qIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIu
aDsgcGF0aCA9IGlvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGRTBBM0EyNDYzMkIxMDAwMjYzMUUxIC8qIENv
Y29hQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29jb2FDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNEZFMEEzQzI0NjM1NjY3MDAyNjMxRTEgLyogQ29jb2FGb250LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvY29hRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NjExM0UyNDEyNkNFMTgyMDA1N0QwQTcgLyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNjEyNkNFMTlCMDA1N0QwQTcg
LyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNjExM0UyNzEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVS
TFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2ODcsNiArNzY4
OCw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0RkUwQTNB
MjQ2MzJCMTAwMDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggKi8sCisJCQkJRjRGRTBBM0MyNDYzNTY2
NzAwMjYzMUUxIC8qIENvY29hRm9udC5oICovLAogCQkJCTQ0ODI3MzQ2MjQ1MjhGNjAwMEE5NTQ5
MyAvKiBDb2NvYUltYWdlLmggKi8sCiAJCQkJQkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExh
eWVySG9zdGluZ0NvbnRleHQuaCAqLywKIAkJCQlCQ0UwOTM3NTE0RkIxMjhCMDAxMTM4RDkgLyog
TGF5ZXJIb3N0aW5nQ29udGV4dC5tbSAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>