<?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>70141</bug_id>
          
          <creation_ts>2011-10-14 14:06:23 -0700</creation_ts>
          <short_desc>[Qt][WK2] WebPreferences are impossible to use in QML.</short_desc>
          <delta_ts>2011-10-18 05:28:39 -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 Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>484269</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-10-14 14:06:23 -0700</bug_when>
    <thetext>[Qt][WK2] WebPreferences are impossible to use in QML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484272</commentid>
    <comment_count>1</comment_count>
      <attachid>111071</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-10-14 14:08:46 -0700</bug_when>
    <thetext>Created attachment 111071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484578</commentid>
    <comment_count>2</comment_count>
      <attachid>111071</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-10-15 06:53:24 -0700</bug_when>
    <thetext>Comment on attachment 111071
Patch

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

Some nits

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Make possible to use qwkpreferences in QML. I renamed it

Make *it*. Don&apos;t use I. Renamed it to follow our new style regarding class names.

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:301
&gt; +
&gt; +

Double newline

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h:60
&gt; +    Q_PROPERTY(QWebPreferences* preferences READ preferences CONSTANT FINAL)

is preferences the right word to use in QML or should it be settings?

&gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:29
&gt; +
&gt; +

im not sure we use double newlines here

&gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:62
&gt; +void QWebPreferencesPrivate::setAttribute(QWebPreferencesPrivate::WebAttribute attr, bool on)

I would have used &quot;enable&quot; and not &quot;on&quot;.

&gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:94
&gt; +
&gt; +

double newline

&gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:153
&gt; +
&gt; +

again!

&gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:171
&gt; +int QWebPreferencesPrivate::fontSize(QWebPreferencesPrivate::FontSize type) const

unsigned? Can we have negative sizes?

Wha? FontSize type? :-) s/FontSize/FontSizeType/ ? Kind?

&gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:251
&gt; +bool QWebPreferences::XSSAuditingEnabled() const

xssAuditing...

&gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:355
&gt; +void QWebPreferences::setMinimumFontSize(int size)

In the future we need someting like this per column width (-webkit-text-adjust)

&gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.h:21
&gt; +#ifndef QWEBREFERENCES_H
&gt; +#define QWEBPREFERENCES_H

Something is wrong here! Misses P!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485066</commentid>
    <comment_count>3</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-10-17 05:10:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 111071 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111071&amp;action=review
&gt; 
&gt; Some nits
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:8
&gt; &gt; +        Make possible to use qwkpreferences in QML. I renamed it
&gt; 
&gt; Make *it*. Don&apos;t use I. Renamed it to follow our new style regarding class names.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.cpp:301
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; Double newline
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h:60
&gt; &gt; +    Q_PROPERTY(QWebPreferences* preferences READ preferences CONSTANT FINAL)
&gt; 
&gt; is preferences the right word to use in QML or should it be settings?

I don&apos;t have a strong opinion here.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:29
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; im not sure we use double newlines here
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:62
&gt; &gt; +void QWebPreferencesPrivate::setAttribute(QWebPreferencesPrivate::WebAttribute attr, bool on)
&gt; 
&gt; I would have used &quot;enable&quot; and not &quot;on&quot;.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:94
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; double newline
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:153
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; again!
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:171
&gt; &gt; +int QWebPreferencesPrivate::fontSize(QWebPreferencesPrivate::FontSize type) const
&gt; 
&gt; unsigned? Can we have negative sizes?
&gt; 
&gt; Wha? FontSize type? :-) s/FontSize/FontSizeType/ ? Kind?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:251
&gt; &gt; +bool QWebPreferences::XSSAuditingEnabled() const
&gt; 
&gt; xssAuditing...
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp:355
&gt; &gt; +void QWebPreferences::setMinimumFontSize(int size)
&gt; 
&gt; In the future we need someting like this per column width (-webkit-text-adjust)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebpreferences.h:21
&gt; &gt; +#ifndef QWEBREFERENCES_H
&gt; &gt; +#define QWEBPREFERENCES_H
&gt; 
&gt; Something is wrong here! Misses P!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485069</commentid>
    <comment_count>4</comment_count>
      <attachid>111246</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-10-17 05:14:15 -0700</bug_when>
    <thetext>Created attachment 111246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485079</commentid>
    <comment_count>5</comment_count>
      <attachid>111246</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-10-17 05:39:52 -0700</bug_when>
    <thetext>Comment on attachment 111246
Patch

Don&apos;t we want the preferences in experimental so far?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485092</commentid>
    <comment_count>6</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-10-17 06:04:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 111246 [details])
&gt; Don&apos;t we want the preferences in experimental so far?

Well I cleaned the flags and let the one that I feel &quot;mandatory&quot;

Of course WebGL, DeveloperExtras, and whatever will go in the experimental.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485976</commentid>
    <comment_count>7</comment_count>
      <attachid>111246</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-18 05:28:34 -0700</bug_when>
    <thetext>Comment on attachment 111246
Patch

Clearing flags on attachment: 111246

Committed r97740: &lt;http://trac.webkit.org/changeset/97740&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485977</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-18 05:28:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111071</attachid>
            <date>2011-10-14 14:08:46 -0700</date>
            <delta_ts>2011-10-17 05:14:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70141-20111014180830.patch</filename>
            <type>text/plain</type>
            <size>48751</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NTAzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODIgQEAKKzIwMTEtMTAtMTQgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJd
IFdlYlByZWZlcmVuY2VzIGFyZSBpbXBvc3NpYmxlIHRvIHVzZSBpbiBRTUwuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDE0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgcG9zc2libGUgdG8gdXNl
IHF3a3ByZWZlcmVuY2VzIGluIFFNTC4gSSByZW5hbWVkIGl0CisgICAgICAgIHRvIGZvbGxvdyBv
dXIgbmV3IG5hbWVzLiBUaGlzIGNsYXNzIGlzIG5vdyBhIFFPYmplY3QgdGhhdAorICAgICAgICBp
cyBleHBvc2VkIGFzIGEgcHJvcGVydHkgb2YgdGhlIHZpZXcuIFRoZSBhdXRvLXRlc3QgZ2l2ZXMK
KyAgICAgICAgYW4gaWRlYWQgb2YgdGhlIHVzYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmll
dy5jcHA6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OnByZWZlcmVuY2VzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcW1scGx1Z2luL3BsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQyUW1sUGx1Z2lu
OjpyZWdpc3RlclR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBh
Z2UuY3BwOgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6cHJlZmVyZW5jZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcDogQWRkZWQuCisgICAgICAgIChRV2ViUHJlZmVyZW5j
ZXNQcml2YXRlOjpjcmVhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXNQ
cml2YXRlOjp0ZXN0QXR0cmlidXRlKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6
OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpzZXRGb250
RmFtaWx5KToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OmZvbnRGYW1pbHkpOgor
ICAgICAgICAoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6c2V0Rm9udFNpemUpOgorICAgICAgICAo
UVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6Zm9udFNpemUpOgorICAgICAgICAoUVdlYlByZWZlcmVu
Y2VzOjpRV2ViUHJlZmVyZW5jZXMpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjp+UVdlYlBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6YXV0b0xvYWRJbWFnZXMpOgor
ICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXRBdXRvTG9hZEltYWdlcyk6CisgICAgICAgIChR
V2ViUHJlZmVyZW5jZXM6OmphdmFzY3JpcHRFbmFibGVkKToKKyAgICAgICAgKFFXZWJQcmVmZXJl
bmNlczo6c2V0SmF2YXNjcmlwdEVuYWJsZWQpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpw
bHVnaW5zRW5hYmxlZCk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldFBsdWdpbnNFbmFi
bGVkKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6c2V0T2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6bG9jYWxTdG9y
YWdlRW5hYmxlZCk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldExvY2FsU3RvcmFnZUVu
YWJsZWQpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpYU1NBdWRpdGluZ0VuYWJsZWQpOgor
ICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXRYU1NBdWRpdGluZ0VuYWJsZWQpOgorICAgICAg
ICAoUVdlYlByZWZlcmVuY2VzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKFFX
ZWJQcmVmZXJlbmNlczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChRV2Vi
UHJlZmVyZW5jZXM6OmRuc1ByZWZldGNoRW5hYmxlZCk6CisgICAgICAgIChRV2ViUHJlZmVyZW5j
ZXM6OnNldERuc1ByZWZldGNoRW5hYmxlZCk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnN0
YW5kYXJkRm9udEZhbWlseSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldFN0YW5kYXJk
Rm9udEZhbWlseSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OmZpeGVkRm9udEZhbWlseSk6
CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldEZpeGVkRm9udEZhbWlseSk6CisgICAgICAg
IChRV2ViUHJlZmVyZW5jZXM6OnNlcmlmRm9udEZhbWlseSk6CisgICAgICAgIChRV2ViUHJlZmVy
ZW5jZXM6OnNldFNlcmlmRm9udEZhbWlseSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNh
bnNTZXJpZkZvbnRGYW1pbHkpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXRTYW5zU2Vy
aWZGb250RmFtaWx5KToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6Y3Vyc2l2ZUZvbnRGYW1p
bHkpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXRDdXJzaXZlRm9udEZhbWlseSk6Cisg
ICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OmZhbnRhc3lGb250RmFtaWx5KToKKyAgICAgICAgKFFX
ZWJQcmVmZXJlbmNlczo6c2V0RmFudGFzeUZvbnRGYW1pbHkpOgorICAgICAgICAoUVdlYlByZWZl
cmVuY2VzOjptaW5pbXVtRm9udFNpemUpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXRN
aW5pbXVtRm9udFNpemUpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpkZWZhdWx0Rm9udFNp
emUpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXREZWZhdWx0Rm9udFNpemUpOgorICAg
ICAgICAoUVdlYlByZWZlcmVuY2VzOjpkZWZhdWx0Rml4ZWRGb250U2l6ZSk6CisgICAgICAgIChR
V2ViUHJlZmVyZW5jZXM6OnNldERlZmF1bHRGaXhlZEZvbnRTaXplKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0X3ByZWZlcmVuY2VzLnFt
bDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vamF2YXNjcmlwdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL2NvbW1vbi9sb2NhbFN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5
OjpwcmVmZXJlbmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXNfcC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdl
YktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDJBUEkucHJpOgorCiAyMDExLTEwLTE0ICBOYXlh
biBLdW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgW1dlYktpdDJdW2d0
a10gQWRkIGRvY3VtZW50YXRpb24gZm9yIFdlYktpdFBsdWdpbkVycm9yIGFuZCBXZWJLaXRQb2xp
Y3lFcnJvci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA5NzQ4MykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksOCArMjU5LDYgQEAgSEVB
REVSUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJv
Y2Vzcy9xdC9xd2toaXN0b3J5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5X3AuaCBc
Ci0gICAgVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmggXAotICAgIFVJUHJvY2Vzcy9xdC9x
d2twcmVmZXJlbmNlc19wLmggXAogICAgIFVJUHJvY2Vzcy9xdC9TR1VwZGF0ZVF1ZXVlLmggXAog
ICAgIFVJUHJvY2Vzcy9xdC9TR1RpbGVOb2RlLmggXAogICAgIFVJUHJvY2Vzcy9xdC9WaWV3SW50
ZXJmYWNlLmggXApAQCAtNDk3LDcgKzQ5NSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vz
cy9xdC9xd2ViZXJyb3IuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3Bw
IFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAgXAotICAgIFVJUHJvY2Vzcy9xdC9x
d2twcmVmZXJlbmNlcy5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9TR1VwZGF0ZVF1ZXVlLmNwcCBc
CiAgICAgVUlQcm9jZXNzL3F0L1NHVGlsZU5vZGUuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvVGls
ZWREcmF3aW5nQXJlYVByb3h5UXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDJB
UEkucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpCShyZXZp
c2lvbiA5NzQ4MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw2ICs1Miw3IEBAIFdFQktJVDJfQVBJX1NPVVJDRVMgPSBcCiAgICAgJCRTT1VS
Q0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcCBcCiAgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcCBc
CiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VibmF2aWdhdGlv
bmNvbnRyb2xsZXIuY3BwIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJwcmVmZXJlbmNlcy5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIFwKICAgICAkJFNPVVJDRV9E
SVIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0Zv
cndhcmRMaXN0LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKQEAgLTEy
OSw2ICsxMzAsOCBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9IFwKICAgICAkJFNPVVJDRV9ESVIv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmggXAogICAgICQkU09VUkNFX0RJ
Ui9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmggXAogICAgICQkU09V
UkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBcCisg
ICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMu
aCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVy
ZW5jZXNfcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xdG91Y2h3ZWJwYWdlX3AuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmggXApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9XS1ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L1dLVmlldy5oCShyZXZpc2lvbiA5NzQ4MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvV0tWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDUgKzI1LDYgQEAKICNp
bmNsdWRlIDxXZWJLaXQyL3F0b3VjaHdlYnZpZXcuaD4KICNpbmNsdWRlIDxXZWJLaXQyL3F0b3Vj
aHdlYnBhZ2UuaD4KICNpbmNsdWRlIDxXZWJLaXQyL3F3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5o
PgorI2luY2x1ZGUgPFdlYktpdDIvcXdlYnByZWZlcmVuY2VzLmg+CiAKICNlbmRpZiAvKiBXS1Zp
ZXdfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3LmNwcAkocmV2aXNpb24gOTc0ODMpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
Myw2ICsyOTMsMTIgQEAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyKiBRRGVza3RvcFdlYlZpZQog
ICAgIHJldHVybiBkLT5uYXZpZ2F0aW9uQ29udHJvbGxlcjsKIH0KIAorUVdlYlByZWZlcmVuY2Vz
KiBRRGVza3RvcFdlYlZpZXc6OnByZWZlcmVuY2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+
cGFnZS5wcmVmZXJlbmNlcygpOworfQorCisKIHN0YXRpYyB2b2lkIHBhaW50Q3Jhc2hlZFBhZ2Uo
UVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0RiYgcmVjdCkKIHsKICAgICBwYWludGVyLT5m
aWxsUmVjdChyZWN0LCBRdDo6Z3JheSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgJKHJldmlzaW9uIDk3NDgzKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogCiBjbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlOwog
Y2xhc3MgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOworY2xhc3MgUVdlYlByZWZlcmVuY2VzOwog
CiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFGb2N1c0V2ZW50OwpAQCAtNTYsNiArNTcsNyBA
QCBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRRGVza3RvcFdlYlZpZXcgOiBwCiAgICAgUV9QUk9QRVJU
WShRVXJsIHVybCBSRUFEIHVybCBOT1RJRlkgdXJsQ2hhbmdlZCkKICAgICBRX1BST1BFUlRZKGlu
dCBsb2FkUHJvZ3Jlc3MgUkVBRCBsb2FkUHJvZ3Jlc3MgTk9USUZZIGxvYWRQcm9ncmVzc0NoYW5n
ZWQpCiAgICAgUV9QUk9QRVJUWShRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb24g
UkVBRCBuYXZpZ2F0aW9uQ29udHJvbGxlciBDT05TVEFOVCBGSU5BTCkKKyAgICBRX1BST1BFUlRZ
KFFXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMgUkVBRCBwcmVmZXJlbmNlcyBDT05TVEFOVCBG
SU5BTCkKICAgICBRX0VOVU1TKE5hdmlnYXRpb25Qb2xpY3kpCiAgICAgUV9FTlVNUyhFcnJvclR5
cGUpCiBwdWJsaWM6CkBAIC03OSw2ICs4MSw3IEBAIHB1YmxpYzoKICAgICBpbnQgbG9hZFByb2dy
ZXNzKCkgY29uc3Q7CiAKICAgICBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25D
b250cm9sbGVyKCkgY29uc3Q7CisgICAgUVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIGNv
bnN0OwogCiBwdWJsaWMgUV9TTE9UUzoKICAgICAgdm9pZCBsb2FkKGNvbnN0IFFVcmwmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdl
LmNwcAkocmV2aXNpb24gOTc0ODMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDExIEBAIFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogUVRvdWNoV2ViUGFnZToKICAgICByZXR1cm4gZC0+bmF2
aWdhdGlvbkNvbnRyb2xsZXI7CiB9CiAKK1FXZWJQcmVmZXJlbmNlcyogUVRvdWNoV2ViUGFnZTo6
cHJlZmVyZW5jZXMoKSBjb25zdAoreworICAgIHJldHVybiBkLT5wYWdlLT5wcmVmZXJlbmNlcygp
OworfQorCiBRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6UVRvdWNoV2ViUGFnZVByaXZhdGUoUVRvdWNo
V2ViUGFnZSogdmlldykKICAgICA6IHEodmlldykKICAgICAsIHBhZ2UoMCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCShyZXZpc2lv
biA5NzQ4MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiBjbGFzcyBRVG91Y2hXZWJQYWdl
UHJpdmF0ZTsKIGNsYXNzIFFUb3VjaFdlYlBhZ2VQcm94eTsKIGNsYXNzIFFXZWJOYXZpZ2F0aW9u
Q29udHJvbGxlcjsKK2NsYXNzIFFXZWJQcmVmZXJlbmNlczsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAgICAgY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOwpAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBR
V0VCS0lUX0VYUE9SVCBRVG91Y2hXZWJQYWdlIDogcHViCiAgICAgUV9QUk9QRVJUWShRVXJsIHVy
bCBSRUFEIHVybCBOT1RJRlkgdXJsQ2hhbmdlZCkKICAgICBRX1BST1BFUlRZKGludCBsb2FkUHJv
Z3Jlc3MgUkVBRCBsb2FkUHJvZ3Jlc3MgTk9USUZZIGxvYWRQcm9ncmVzc0NoYW5nZWQpCiAgICAg
UV9QUk9QRVJUWShRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb24gUkVBRCBuYXZp
Z2F0aW9uQ29udHJvbGxlciBDT05TVEFOVCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKFFXZWJQcmVm
ZXJlbmNlcyogcHJlZmVyZW5jZXMgUkVBRCBwcmVmZXJlbmNlcyBDT05TVEFOVCBGSU5BTCkKICAg
ICBRX0VOVU1TKEVycm9yVHlwZSkKIHB1YmxpYzoKICAgICBlbnVtIEVycm9yVHlwZSB7CkBAIC02
MCw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBpbnQgbG9hZFByb2dyZXNzKCkgY29uc3Q7CiAKICAg
ICBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25Db250cm9sbGVyKCkgY29uc3Q7
CisgICAgUVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIGNvbnN0OwogCiAgICAgdmlydHVh
bCBRU0dOb2RlKiB1cGRhdGVQYWludE5vZGUoUVNHTm9kZSogb2xkTm9kZSwgVXBkYXRlUGFpbnRO
b2RlRGF0YSopOwogICAgIHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlcy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVm
ZXJlbmNlcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzgxIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzLmgi
CisKKyNpbmNsdWRlICJXS1BhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldLUHJlZmVyZW5jZXMuaCIK
KyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKKyNpbmNs
dWRlICJxd2VicHJlZmVyZW5jZXNfcC5oIgorCisKK1FXZWJQcmVmZXJlbmNlcyogUVdlYlByZWZl
cmVuY2VzUHJpdmF0ZTo6Y3JlYXRlUHJlZmVyZW5jZXMoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmKQoreworICAgIFFXZWJQcmVmZXJlbmNlcyogcHJlZnMgPSBuZXcgUVdlYlByZWZlcmVuY2Vz
OworICAgIHByZWZzLT5kLT5yZWYgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHBhZ2VHcm91
cFJlZik7CisgICAgcmV0dXJuIHByZWZzOworfQorCitib29sIFFXZWJQcmVmZXJlbmNlc1ByaXZh
dGU6OnRlc3RBdHRyaWJ1dGUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6V2ViQXR0cmlidXRlIGF0
dHIpIGNvbnN0Cit7CisgICAgc3dpdGNoIChhdHRyKSB7CisgICAgY2FzZSBBdXRvTG9hZEltYWdl
czoKKyAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkocmVmKTsKKyAgICBjYXNlIEphdmFzY3JpcHRFbmFibGVkOgorICAgICAgICByZXR1cm4gV0tQ
cmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHJlZik7CisgICAgY2FzZSBQbHVnaW5zRW5h
YmxlZDoKKyAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChyZWYp
OworICAgIGNhc2UgT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOgorICAgICAgICBy
ZXR1cm4gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChy
ZWYpOworICAgIGNhc2UgTG9jYWxTdG9yYWdlRW5hYmxlZDoKKyAgICAgICAgcmV0dXJuIFdLUHJl
ZmVyZW5jZXNHZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHJlZik7CisgICAgY2FzZSBYU1NBdWRpdGlu
Z0VuYWJsZWQ6CisgICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJs
ZWQocmVmKTsKKyAgICBjYXNlIFByaXZhdGVCcm93c2luZ0VuYWJsZWQ6CisgICAgICAgIHJldHVy
biBXS1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChyZWYpOworICAgIGNhc2Ug
RG5zUHJlZmV0Y2hFbmFibGVkOgorICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEROU1By
ZWZldGNoaW5nRW5hYmxlZChyZWYpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFFXZWJQ
cmVmZXJlbmNlc1ByaXZhdGU6OnNldEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpX
ZWJBdHRyaWJ1dGUgYXR0ciwgYm9vbCBvbikKK3sKKyAgICBzd2l0Y2ggKGF0dHIpIHsKKyAgICBj
YXNlIEF1dG9Mb2FkSW1hZ2VzOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0TG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KHJlZiwgb24pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEphdmFzY3Jp
cHRFbmFibGVkOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0SmF2YVNjcmlwdEVuYWJsZWQocmVm
LCBvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGx1Z2luc0VuYWJsZWQ6CisgICAgICAg
IFdLUHJlZmVyZW5jZXNTZXRQbHVnaW5zRW5hYmxlZChyZWYsIG9uKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ6CisgICAgICAgIFdL
UHJlZmVyZW5jZXNTZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQocmVmLCBvbik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTG9jYWxTdG9yYWdlRW5hYmxlZDoKKyAgICAgICAg
V0tQcmVmZXJlbmNlc1NldExvY2FsU3RvcmFnZUVuYWJsZWQocmVmLCBvbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgWFNTQXVkaXRpbmdFbmFibGVkOgorICAgICAgICBXS1ByZWZlcmVuY2Vz
U2V0WFNTQXVkaXRvckVuYWJsZWQocmVmLCBvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDoKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQocmVmLCBvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRG5zUHJl
ZmV0Y2hFbmFibGVkOgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RE5TUHJlZmV0Y2hpbmdFbmFi
bGVkKHJlZiwgb24pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKKwordm9pZCBRV2ViUHJlZmVyZW5jZXNQcml2
YXRlOjpzZXRGb250RmFtaWx5KFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkZvbnRGYW1pbHkgd2hp
Y2gsIGNvbnN0IFFTdHJpbmcmIGZhbWlseSkKK3sKKyAgICBzd2l0Y2ggKHdoaWNoKSB7CisgICAg
Y2FzZSBTdGFuZGFyZEZvbnQ6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdGFuZGFyZEZvbnRG
YW1pbHkocmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKGZhbWlseSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEZpeGVkRm9udDoKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEZpeGVk
Rm9udEZhbWlseShyZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcoZmFtaWx5KSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2VyaWZGb250OgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0
U2VyaWZGb250RmFtaWx5KHJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhmYW1pbHkpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTYW5zU2VyaWZGb250OgorICAgICAgICBXS1ByZWZl
cmVuY2VzU2V0U2Fuc1NlcmlmRm9udEZhbWlseShyZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJp
bmcoZmFtaWx5KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3Vyc2l2ZUZvbnQ6CisgICAg
ICAgIFdLUHJlZmVyZW5jZXNTZXRDdXJzaXZlRm9udEZhbWlseShyZWYsIFdLU3RyaW5nQ3JlYXRl
V2l0aFFTdHJpbmcoZmFtaWx5KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmFudGFzeUZv
bnQ6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRGYW50YXN5Rm9udEZhbWlseShyZWYsIFdLU3Ry
aW5nQ3JlYXRlV2l0aFFTdHJpbmcoZmFtaWx5KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworUVN0cmluZyBRV2ViUHJlZmVyZW5jZXNQ
cml2YXRlOjpmb250RmFtaWx5KFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkZvbnRGYW1pbHkgd2hp
Y2gpIGNvbnN0Cit7CisgICAgc3dpdGNoICh3aGljaCkgeworICAgIGNhc2UgU3RhbmRhcmRGb250
OiB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYoQWRvcHRXSywg
V0tQcmVmZXJlbmNlc0NvcHlTdGFuZGFyZEZvbnRGYW1pbHkocmVmKSk7CisgICAgICAgIHJldHVy
biBXS1N0cmluZ0NvcHlRU3RyaW5nKHN0cmluZ1JlZi5nZXQoKSk7CisgICAgfQorICAgIGNhc2Ug
Rml4ZWRGb250OiB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYo
QWRvcHRXSywgV0tQcmVmZXJlbmNlc0NvcHlGaXhlZEZvbnRGYW1pbHkocmVmKSk7CisgICAgICAg
IHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKHN0cmluZ1JlZi5nZXQoKSk7CisgICAgfQorICAg
IGNhc2UgU2VyaWZGb250OiB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJp
bmdSZWYoQWRvcHRXSywgV0tQcmVmZXJlbmNlc0NvcHlTZXJpZkZvbnRGYW1pbHkocmVmKSk7Cisg
ICAgICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKHN0cmluZ1JlZi5nZXQoKSk7CisgICAg
fQorICAgIGNhc2UgU2Fuc1NlcmlmRm9udDogeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gc3RyaW5nUmVmKEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5U2Fuc1NlcmlmRm9udEZh
bWlseShyZWYpKTsKKyAgICAgICAgcmV0dXJuIFdLU3RyaW5nQ29weVFTdHJpbmcoc3RyaW5nUmVm
LmdldCgpKTsKKyAgICB9CisgICAgY2FzZSBDdXJzaXZlRm9udDogeworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nUmVmKEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5Q3Vy
c2l2ZUZvbnRGYW1pbHkocmVmKSk7CisgICAgICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5n
KHN0cmluZ1JlZi5nZXQoKSk7CisgICAgfQorICAgIGNhc2UgRmFudGFzeUZvbnQ6IHsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZihBZG9wdFdLLCBXS1ByZWZlcmVu
Y2VzQ29weUZhbnRhc3lGb250RmFtaWx5KHJlZikpOworICAgICAgICByZXR1cm4gV0tTdHJpbmdD
b3B5UVN0cmluZyhzdHJpbmdSZWYuZ2V0KCkpOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gUVN0cmluZygpOworICAgIH0KK30KKworCit2b2lkIFFXZWJQcmVmZXJlbmNlc1By
aXZhdGU6OnNldEZvbnRTaXplKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkZvbnRTaXplIHR5cGUs
IGludCBzaXplKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTWluaW11bUZvbnRT
aXplOgorICAgICAgICAgV0tQcmVmZXJlbmNlc1NldE1pbmltdW1Gb250U2l6ZShyZWYsIHNpemUp
OworICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEZWZhdWx0Rm9udFNpemU6CisgICAgICAgICBX
S1ByZWZlcmVuY2VzU2V0RGVmYXVsdEZvbnRTaXplKHJlZiwgc2l6ZSk7CisgICAgICAgICBicmVh
azsKKyAgICBjYXNlIERlZmF1bHRGaXhlZEZvbnRTaXplOgorICAgICAgICAgV0tQcmVmZXJlbmNl
c1NldERlZmF1bHRGaXhlZEZvbnRTaXplKHJlZiwgc2l6ZSk7CisgICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK2lu
dCBRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpmb250U2l6ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRl
OjpGb250U2l6ZSB0eXBlKSBjb25zdAoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
TWluaW11bUZvbnRTaXplOgorICAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRNaW5pbXVt
Rm9udFNpemUocmVmKTsKKyAgICBjYXNlIERlZmF1bHRGb250U2l6ZToKKyAgICAgICAgIHJldHVy
biBXS1ByZWZlcmVuY2VzR2V0RGVmYXVsdEZvbnRTaXplKHJlZik7CisgICAgY2FzZSBEZWZhdWx0
Rml4ZWRGb250U2l6ZToKKyAgICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RGVmYXVsdEZp
eGVkRm9udFNpemUocmVmKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworUVdlYlByZWZlcmVuY2Vz
OjpRV2ViUHJlZmVyZW5jZXMoKQorICAgIDogZChuZXcgUVdlYlByZWZlcmVuY2VzUHJpdmF0ZSkK
K3sKK30KKworUVdlYlByZWZlcmVuY2VzOjp+UVdlYlByZWZlcmVuY2VzKCkKK3sKKyAgICBkZWxl
dGUgZDsKK30KKworYm9vbCBRV2ViUHJlZmVyZW5jZXM6OmF1dG9Mb2FkSW1hZ2VzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZC0+dGVzdEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpB
dXRvTG9hZEltYWdlcyk7Cit9CisKK3ZvaWQgUVdlYlByZWZlcmVuY2VzOjpzZXRBdXRvTG9hZElt
YWdlcyhib29sIGVuYWJsZSkKK3sKKyAgICBkLT5zZXRBdHRyaWJ1dGUoUVdlYlByZWZlcmVuY2Vz
UHJpdmF0ZTo6QXV0b0xvYWRJbWFnZXMsIGVuYWJsZSk7CisgICAgZW1pdCBhdXRvTG9hZEltYWdl
c0NoYW5nZWQoKTsKK30KKworYm9vbCBRV2ViUHJlZmVyZW5jZXM6OmphdmFzY3JpcHRFbmFibGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dGVzdEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQ
cml2YXRlOjpKYXZhc2NyaXB0RW5hYmxlZCk7Cit9CisKK3ZvaWQgUVdlYlByZWZlcmVuY2VzOjpz
ZXRKYXZhc2NyaXB0RW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBkLT5zZXRBdHRyaWJ1dGUo
UVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6SmF2YXNjcmlwdEVuYWJsZWQsIGVuYWJsZSk7CisgICAg
ZW1pdCBqYXZhc2NyaXB0RW5hYmxlZENoYW5nZWQoKTsKK30KKworYm9vbCBRV2ViUHJlZmVyZW5j
ZXM6OnBsdWdpbnNFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dGVzdEF0dHJpYnV0
ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpQbHVnaW5zRW5hYmxlZCk7Cit9CisKK3ZvaWQgUVdl
YlByZWZlcmVuY2VzOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBkLT5z
ZXRBdHRyaWJ1dGUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6UGx1Z2luc0VuYWJsZWQsIGVuYWJs
ZSk7CisgICAgZW1pdCBwbHVnaW5zRW5hYmxlZENoYW5nZWQoKTsKK30KKworYm9vbCBRV2ViUHJl
ZmVyZW5jZXM6Om9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGQtPnRlc3RBdHRyaWJ1dGUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKTsKK30KKwordm9pZCBRV2ViUHJlZmVyZW5jZXM6
OnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAg
ICBkLT5zZXRBdHRyaWJ1dGUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6T2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVFbmFibGVkLCBlbmFibGUpOworICAgIGVtaXQgb2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkQ2hhbmdlZCgpOworfQorCitib29sIFFXZWJQcmVmZXJlbmNlczo6bG9j
YWxTdG9yYWdlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnRlc3RBdHRyaWJ1dGUo
UVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6TG9jYWxTdG9yYWdlRW5hYmxlZCk7Cit9CisKK3ZvaWQg
UVdlYlByZWZlcmVuY2VzOjpzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGJvb2wgZW5hYmxlKQorewor
ICAgIGQtPnNldEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpMb2NhbFN0b3JhZ2VF
bmFibGVkLCBlbmFibGUpOworICAgIGVtaXQgbG9jYWxTdG9yYWdlRW5hYmxlZENoYW5nZWQoKTsK
K30KKworYm9vbCBRV2ViUHJlZmVyZW5jZXM6OlhTU0F1ZGl0aW5nRW5hYmxlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQtPnRlc3RBdHRyaWJ1dGUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6WFNT
QXVkaXRpbmdFbmFibGVkKTsKK30KKwordm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldFhTU0F1ZGl0
aW5nRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBkLT5zZXRBdHRyaWJ1dGUoUVdlYlByZWZl
cmVuY2VzUHJpdmF0ZTo6WFNTQXVkaXRpbmdFbmFibGVkLCBlbmFibGUpOworICAgIGVtaXQgWFNT
QXVkaXRpbmdFbmFibGVkQ2hhbmdlZCgpOworfQorCitib29sIFFXZWJQcmVmZXJlbmNlczo6cHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnRlc3RBdHRyaWJ1
dGUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7Cit9CisK
K3ZvaWQgUVdlYlByZWZlcmVuY2VzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZW5h
YmxlKQoreworICAgIGQtPnNldEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpQcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBlbmFibGUpOworICAgIGVtaXQgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZENoYW5nZWQoKTsKK30KKworYm9vbCBRV2ViUHJlZmVyZW5jZXM6OmRuc1ByZWZldGNoRW5h
YmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnRlc3RBdHRyaWJ1dGUoUVdlYlByZWZlcmVu
Y2VzUHJpdmF0ZTo6RG5zUHJlZmV0Y2hFbmFibGVkKTsKK30KKwordm9pZCBRV2ViUHJlZmVyZW5j
ZXM6OnNldERuc1ByZWZldGNoRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBkLT5zZXRBdHRy
aWJ1dGUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6RG5zUHJlZmV0Y2hFbmFibGVkLCBlbmFibGUp
OworICAgIGVtaXQgZG5zUHJlZmV0Y2hFbmFibGVkQ2hhbmdlZCgpOworfQorCitRU3RyaW5nIFFX
ZWJQcmVmZXJlbmNlczo6c3RhbmRhcmRGb250RmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZC0+Zm9udEZhbWlseShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpTdGFuZGFyZEZvbnQpOworfQor
Cit2b2lkIFFXZWJQcmVmZXJlbmNlczo6c2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IFFTdHJp
bmcmIGZhbWlseSkKK3sKKyAgICBkLT5zZXRGb250RmFtaWx5KFFXZWJQcmVmZXJlbmNlc1ByaXZh
dGU6OlN0YW5kYXJkRm9udCwgZmFtaWx5KTsKKyAgICBlbWl0IHN0YW5kYXJkRm9udEZhbWlseUNo
YW5nZWQoKTsKK30KKworUVN0cmluZyBRV2ViUHJlZmVyZW5jZXM6OmZpeGVkRm9udEZhbWlseSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmZvbnRGYW1pbHkoUVdlYlByZWZlcmVuY2VzUHJpdmF0
ZTo6Rml4ZWRGb250KTsKK30KKwordm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldEZpeGVkRm9udEZh
bWlseShjb25zdCBRU3RyaW5nJiBmYW1pbHkpCit7CisgICAgZC0+c2V0Rm9udEZhbWlseShRV2Vi
UHJlZmVyZW5jZXNQcml2YXRlOjpGaXhlZEZvbnQsIGZhbWlseSk7CisgICAgZW1pdCBmaXhlZEZv
bnRGYW1pbHlDaGFuZ2VkKCk7Cit9CisKK1FTdHJpbmcgUVdlYlByZWZlcmVuY2VzOjpzZXJpZkZv
bnRGYW1pbHkoKSBjb25zdAoreworICAgIHJldHVybiBkLT5mb250RmFtaWx5KFFXZWJQcmVmZXJl
bmNlc1ByaXZhdGU6OlNlcmlmRm9udCk7Cit9CisKK3ZvaWQgUVdlYlByZWZlcmVuY2VzOjpzZXRT
ZXJpZkZvbnRGYW1pbHkoY29uc3QgUVN0cmluZyYgZmFtaWx5KQoreworICAgIGQtPnNldEZvbnRG
YW1pbHkoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6U2VyaWZGb250LCBmYW1pbHkpOworICAgIGVt
aXQgc2VyaWZGb250RmFtaWx5Q2hhbmdlZCgpOworfQorCitRU3RyaW5nIFFXZWJQcmVmZXJlbmNl
czo6c2Fuc1NlcmlmRm9udEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmZvbnRGYW1p
bHkoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6U2Fuc1NlcmlmRm9udCk7Cit9CisKK3ZvaWQgUVdl
YlByZWZlcmVuY2VzOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5KGNvbnN0IFFTdHJpbmcmIGZhbWls
eSkKK3sKKyAgICBkLT5zZXRGb250RmFtaWx5KFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OlNhbnNT
ZXJpZkZvbnQsIGZhbWlseSk7CisgICAgZW1pdCBzYW5zU2VyaWZGb250RmFtaWx5Q2hhbmdlZCgp
OworfQorCitRU3RyaW5nIFFXZWJQcmVmZXJlbmNlczo6Y3Vyc2l2ZUZvbnRGYW1pbHkoKSBjb25z
dAoreworICAgIHJldHVybiBkLT5mb250RmFtaWx5KFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkN1
cnNpdmVGb250KTsKK30KKwordm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldEN1cnNpdmVGb250RmFt
aWx5KGNvbnN0IFFTdHJpbmcmIGZhbWlseSkKK3sKKyAgICBkLT5zZXRGb250RmFtaWx5KFFXZWJQ
cmVmZXJlbmNlc1ByaXZhdGU6OkN1cnNpdmVGb250LCBmYW1pbHkpOworICAgIGVtaXQgY3Vyc2l2
ZUZvbnRGYW1pbHlDaGFuZ2VkKCk7Cit9CisKK1FTdHJpbmcgUVdlYlByZWZlcmVuY2VzOjpmYW50
YXN5Rm9udEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmZvbnRGYW1pbHkoUVdlYlBy
ZWZlcmVuY2VzUHJpdmF0ZTo6RmFudGFzeUZvbnQpOworfQorCit2b2lkIFFXZWJQcmVmZXJlbmNl
czo6c2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgUVN0cmluZyYgZmFtaWx5KQoreworICAgIGQt
PnNldEZvbnRGYW1pbHkoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6RmFudGFzeUZvbnQsIGZhbWls
eSk7CisgICAgZW1pdCBmYW50YXN5Rm9udEZhbWlseUNoYW5nZWQoKTsKK30KKworaW50IFFXZWJQ
cmVmZXJlbmNlczo6bWluaW11bUZvbnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+Zm9u
dFNpemUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6TWluaW11bUZvbnRTaXplKTsKK30KKwordm9p
ZCBRV2ViUHJlZmVyZW5jZXM6OnNldE1pbmltdW1Gb250U2l6ZShpbnQgc2l6ZSkKK3sKKyAgICBk
LT5zZXRGb250U2l6ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpNaW5pbXVtRm9udFNpemUsIHNp
emUpOworICAgIGVtaXQgbWluaW11bUZvbnRTaXplQ2hhbmdlZCgpOworfQorCitpbnQgUVdlYlBy
ZWZlcmVuY2VzOjpkZWZhdWx0Rm9udFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBkLT5mb250
U2l6ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpEZWZhdWx0Rm9udFNpemUpOworfQorCit2b2lk
IFFXZWJQcmVmZXJlbmNlczo6c2V0RGVmYXVsdEZvbnRTaXplKGludCBzaXplKQoreworICAgIGQt
PnNldEZvbnRTaXplKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkRlZmF1bHRGb250U2l6ZSwgc2l6
ZSk7CisgICAgZW1pdCBkZWZhdWx0Rm9udFNpemVDaGFuZ2VkKCk7Cit9CisKK2ludCBRV2ViUHJl
ZmVyZW5jZXM6OmRlZmF1bHRGaXhlZEZvbnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+
Zm9udFNpemUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6RGVmYXVsdEZpeGVkRm9udFNpemUpOwor
fQorCit2b2lkIFFXZWJQcmVmZXJlbmNlczo6c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoaW50IHNp
emUpCit7CisgICAgZC0+c2V0Rm9udFNpemUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6RGVmYXVs
dEZpeGVkRm9udFNpemUsIHNpemUpOworICAgIGVtaXQgZGVmYXVsdEZpeGVkRm9udFNpemVDaGFu
Z2VkKCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVm
ZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdlYnByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNSBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBRV0VCUkVGRVJFTkNFU19ICisjZGVmaW5l
IFFXRUJQUkVGRVJFTkNFU19ICisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNs
dWRlIDxRdENvcmUvUU9iamVjdD4KKworY2xhc3MgUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTsKKwor
Y2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYlByZWZlcmVuY2VzIDogcHVibGljIFFPYmplY3Qgewor
ICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUV9QUk9QRVJUWShib29sIGF1dG9Mb2FkSW1hZ2Vz
IFJFQUQgYXV0b0xvYWRJbWFnZXMgV1JJVEUgc2V0QXV0b0xvYWRJbWFnZXMgTk9USUZZIGF1dG9M
b2FkSW1hZ2VzQ2hhbmdlZCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKGJvb2wgamF2YXNjcmlwdEVu
YWJsZWQgUkVBRCBqYXZhc2NyaXB0RW5hYmxlZCBXUklURSBzZXRKYXZhc2NyaXB0RW5hYmxlZCBO
T1RJRlkgamF2YXNjcmlwdEVuYWJsZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoYm9v
bCBwbHVnaW5zRW5hYmxlZCBSRUFEIHBsdWdpbnNFbmFibGVkIFdSSVRFIHNldFBsdWdpbnNFbmFi
bGVkIE5PVElGWSBwbHVnaW5zRW5hYmxlZENoYW5nZWQgRklOQUwpCisgICAgUV9QUk9QRVJUWShi
b29sIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCBSRUFEIG9mZmxpbmVXZWJBcHBs
aWNhdGlvbkNhY2hlRW5hYmxlZCBXUklURSBzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQgTk9USUZZIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZENoYW5nZWQgRklO
QUwpCisgICAgUV9QUk9QRVJUWShib29sIGxvY2FsU3RvcmFnZUVuYWJsZWQgUkVBRCBsb2NhbFN0
b3JhZ2VFbmFibGVkIFdSSVRFIHNldExvY2FsU3RvcmFnZUVuYWJsZWQgTk9USUZZIGxvY2FsU3Rv
cmFnZUVuYWJsZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoYm9vbCBYU1NBdWRpdGlu
Z0VuYWJsZWQgUkVBRCBYU1NBdWRpdGluZ0VuYWJsZWQgV1JJVEUgc2V0WFNTQXVkaXRpbmdFbmFi
bGVkIE5PVElGWSBYU1NBdWRpdGluZ0VuYWJsZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVS
VFkoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkIFJFQUQgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCBXUklURSBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkIE5PVElGWSBwcml2YXRlQnJvd3NpbmdF
bmFibGVkQ2hhbmdlZCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKGJvb2wgZG5zUHJlZmV0Y2hFbmFi
bGVkIFJFQUQgZG5zUHJlZmV0Y2hFbmFibGVkIFdSSVRFIHNldERuc1ByZWZldGNoRW5hYmxlZCBO
T1RJRlkgZG5zUHJlZmV0Y2hFbmFibGVkQ2hhbmdlZCBGSU5BTCkKKworICAgIFFfUFJPUEVSVFko
UVN0cmluZyBzdGFuZGFyZEZvbnRGYW1pbHkgUkVBRCBzdGFuZGFyZEZvbnRGYW1pbHkgV1JJVEUg
c2V0U3RhbmRhcmRGb250RmFtaWx5IE5PVElGWSBzdGFuZGFyZEZvbnRGYW1pbHlDaGFuZ2VkIEZJ
TkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBmaXhlZEZvbnRGYW1pbHkgUkVBRCBmaXhlZEZv
bnRGYW1pbHkgV1JJVEUgc2V0Rml4ZWRGb250RmFtaWx5IE5PVElGWSBmaXhlZEZvbnRGYW1pbHlD
aGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBzZXJpZkZvbnRGYW1pbHkgUkVB
RCBzZXJpZkZvbnRGYW1pbHkgV1JJVEUgc2V0U2VyaWZGb250RmFtaWx5IE5PVElGWSBzZXJpZkZv
bnRGYW1pbHlDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBzYW5zU2VyaWZG
b250RmFtaWx5IFJFQUQgc2Fuc1NlcmlmRm9udEZhbWlseSBXUklURSBzZXRTYW5zU2VyaWZGb250
RmFtaWx5IE5PVElGWSBzYW5zU2VyaWZGb250RmFtaWx5Q2hhbmdlZCBGSU5BTCkKKyAgICBRX1BS
T1BFUlRZKFFTdHJpbmcgY3Vyc2l2ZUZvbnRGYW1pbHkgUkVBRCBjdXJzaXZlRm9udEZhbWlseSBX
UklURSBzZXRDdXJzaXZlRm9udEZhbWlseSBOT1RJRlkgY3Vyc2l2ZUZvbnRGYW1pbHlDaGFuZ2Vk
IEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBmYW50YXN5Rm9udEZhbWlseSBSRUFEIGZh
bnRhc3lGb250RmFtaWx5IFdSSVRFIHNldEZhbnRhc3lGb250RmFtaWx5IE5PVElGWSBmYW50YXN5
Rm9udEZhbWlseUNoYW5nZWQgRklOQUwpCisKKyAgICBRX1BST1BFUlRZKGludCBtaW5pbXVtRm9u
dFNpemUgUkVBRCBtaW5pbXVtRm9udFNpemUgV1JJVEUgc2V0TWluaW11bUZvbnRTaXplIE5PVElG
WSBtaW5pbXVtRm9udFNpemVDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoaW50IGRlZmF1
bHRGb250U2l6ZSBSRUFEIGRlZmF1bHRGb250U2l6ZSBXUklURSBzZXREZWZhdWx0Rm9udFNpemUg
Tk9USUZZIGRlZmF1bHRGb250U2l6ZUNoYW5nZWQgRklOQUwpCisgICAgUV9QUk9QRVJUWShpbnQg
ZGVmYXVsdEZpeGVkRm9udFNpemUgUkVBRCBkZWZhdWx0Rml4ZWRGb250U2l6ZSBXUklURSBzZXRE
ZWZhdWx0Rml4ZWRGb250U2l6ZSBOT1RJRlkgZGVmYXVsdEZpeGVkRm9udFNpemVDaGFuZ2VkIEZJ
TkFMKQorCisgICAgYm9vbCBhdXRvTG9hZEltYWdlcygpIGNvbnN0OworICAgIHZvaWQgc2V0QXV0
b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpOworCisgICAgYm9vbCBqYXZhc2NyaXB0RW5hYmxlZCgp
IGNvbnN0OworICAgIHZvaWQgc2V0SmF2YXNjcmlwdEVuYWJsZWQoYm9vbCBlbmFibGUpOworCisg
ICAgYm9vbCBwbHVnaW5zRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0UGx1Z2luc0VuYWJs
ZWQoYm9vbCBlbmFibGUpOworCisgICAgYm9vbCBvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZChib29sIGVuYWJsZSk7CisKKyAgICBib29sIGxvY2FsU3RvcmFnZUVuYWJsZWQoKSBjb25z
dDsKKyAgICB2b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCBlbmFibGUpOworCisgICAg
Ym9vbCBYU1NBdWRpdGluZ0VuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFhTU0F1ZGl0aW5n
RW5hYmxlZChib29sIGVuYWJsZSk7CisKKyAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSBjb25zdDsKKyAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGUp
OworCisgICAgYm9vbCBkbnNQcmVmZXRjaEVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldERu
c1ByZWZldGNoRW5hYmxlZChib29sIGVuYWJsZSk7CisKKyAgICBRU3RyaW5nIHN0YW5kYXJkRm9u
dEZhbWlseSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IFFT
dHJpbmcmIGZhbWlseSk7CisKKyAgICBRU3RyaW5nIGZpeGVkRm9udEZhbWlseSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IFFTdHJpbmcmIGZhbWlseSk7CisKKyAg
ICBRU3RyaW5nIHNlcmlmRm9udEZhbWlseSgpIGNvbnN0OworICAgIHZvaWQgc2V0U2VyaWZGb250
RmFtaWx5KGNvbnN0IFFTdHJpbmcmIGZhbWlseSk7CisKKyAgICBRU3RyaW5nIHNhbnNTZXJpZkZv
bnRGYW1pbHkoKSBjb25zdDsKKyAgICB2b2lkIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoY29uc3Qg
UVN0cmluZyYgZmFtaWx5KTsKKworICAgIFFTdHJpbmcgY3Vyc2l2ZUZvbnRGYW1pbHkoKSBjb25z
dDsKKyAgICB2b2lkIHNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IFFTdHJpbmcmIGZhbWlseSk7
CisKKyAgICBRU3RyaW5nIGZhbnRhc3lGb250RmFtaWx5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRG
YW50YXN5Rm9udEZhbWlseShjb25zdCBRU3RyaW5nJiBmYW1pbHkpOworCisgICAgaW50IG1pbmlt
dW1Gb250U2l6ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0TWluaW11bUZvbnRTaXplKGludCBzaXpl
KTsKKworICAgIGludCBkZWZhdWx0Rm9udFNpemUoKSBjb25zdDsKKyAgICB2b2lkIHNldERlZmF1
bHRGb250U2l6ZShpbnQgc2l6ZSk7CisKKyAgICBpbnQgZGVmYXVsdEZpeGVkRm9udFNpemUoKSBj
b25zdDsKKyAgICB2b2lkIHNldERlZmF1bHRGaXhlZEZvbnRTaXplKGludCBzaXplKTsKKworUV9T
SUdOQUxTOgorICAgIHZvaWQgYXV0b0xvYWRJbWFnZXNDaGFuZ2VkKCk7CisgICAgdm9pZCBwbHVn
aW5zRW5hYmxlZENoYW5nZWQoKTsKKyAgICB2b2lkIGphdmFzY3JpcHRFbmFibGVkQ2hhbmdlZCgp
OworICAgIHZvaWQgb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkQ2hhbmdlZCgpOwor
ICAgIHZvaWQgbG9jYWxTdG9yYWdlRW5hYmxlZENoYW5nZWQoKTsKKyAgICB2b2lkIFhTU0F1ZGl0
aW5nRW5hYmxlZENoYW5nZWQoKTsKKyAgICB2b2lkIHByaXZhdGVCcm93c2luZ0VuYWJsZWRDaGFu
Z2VkKCk7CisgICAgdm9pZCBkbnNQcmVmZXRjaEVuYWJsZWRDaGFuZ2VkKCk7CisKKyAgICB2b2lk
IHN0YW5kYXJkRm9udEZhbWlseUNoYW5nZWQoKTsKKyAgICB2b2lkIGZpeGVkRm9udEZhbWlseUNo
YW5nZWQoKTsKKyAgICB2b2lkIHNlcmlmRm9udEZhbWlseUNoYW5nZWQoKTsKKyAgICB2b2lkIHNh
bnNTZXJpZkZvbnRGYW1pbHlDaGFuZ2VkKCk7CisgICAgdm9pZCBjdXJzaXZlRm9udEZhbWlseUNo
YW5nZWQoKTsKKyAgICB2b2lkIGZhbnRhc3lGb250RmFtaWx5Q2hhbmdlZCgpOworCisgICAgdm9p
ZCBtaW5pbXVtRm9udFNpemVDaGFuZ2VkKCk7CisgICAgdm9pZCBkZWZhdWx0Rm9udFNpemVDaGFu
Z2VkKCk7CisgICAgdm9pZCBkZWZhdWx0Rml4ZWRGb250U2l6ZUNoYW5nZWQoKTsKKworcHJpdmF0
ZToKKyAgICBRX0RJU0FCTEVfQ09QWShRV2ViUHJlZmVyZW5jZXMpCisKKyAgICBRV2ViUHJlZmVy
ZW5jZXMoKTsKKyAgICB+UVdlYlByZWZlcmVuY2VzKCk7CisKKyAgICBRV2ViUHJlZmVyZW5jZXNQ
cml2YXRlICpkOworCisgICAgZnJpZW5kIGNsYXNzIFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU7Cit9
OworCisjZW5kaWYgLy8gUVdFQlBSRUZFUkVOQ0VTX0gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNs
dWRlICJXS1ByZWZlcmVuY2VzLmgiCisKK2NsYXNzIFFXZWJQcmVmZXJlbmNlc1ByaXZhdGUgewor
cHVibGljOgorCisgICAgZW51bSBXZWJBdHRyaWJ1dGUgeworICAgICAgICBBdXRvTG9hZEltYWdl
cywKKyAgICAgICAgSmF2YXNjcmlwdEVuYWJsZWQsCisgICAgICAgIFBsdWdpbnNFbmFibGVkLAor
ICAgICAgICBPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQsCisgICAgICAgIExvY2Fs
U3RvcmFnZUVuYWJsZWQsCisgICAgICAgIFhTU0F1ZGl0aW5nRW5hYmxlZCwKKyAgICAgICAgRnJh
bWVGbGF0dGVuaW5nRW5hYmxlZCwKKyAgICAgICAgUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwKKyAg
ICAgICAgRG5zUHJlZmV0Y2hFbmFibGVkCisgICAgfTsKKworICAgIGVudW0gRm9udEZhbWlseSB7
CisgICAgICAgIFN0YW5kYXJkRm9udCwKKyAgICAgICAgRml4ZWRGb250LAorICAgICAgICBTZXJp
ZkZvbnQsCisgICAgICAgIFNhbnNTZXJpZkZvbnQsCisgICAgICAgIEN1cnNpdmVGb250LAorICAg
ICAgICBGYW50YXN5Rm9udAorICAgIH07CisKKyAgICBlbnVtIEZvbnRTaXplIHsKKyAgICAgICAg
TWluaW11bUZvbnRTaXplLAorICAgICAgICBEZWZhdWx0Rm9udFNpemUsCisgICAgICAgIERlZmF1
bHRGaXhlZEZvbnRTaXplCisgICAgfTsKKworICAgIHN0YXRpYyBRV2ViUHJlZmVyZW5jZXMqIGNy
ZWF0ZVByZWZlcmVuY2VzKFdLUGFnZUdyb3VwUmVmKTsKKworICAgIHZvaWQgc2V0QXR0cmlidXRl
KFdlYkF0dHJpYnV0ZSBhdHRyLCBib29sIG9uKTsKKyAgICBib29sIHRlc3RBdHRyaWJ1dGUoV2Vi
QXR0cmlidXRlIGF0dHIpIGNvbnN0OworCisgICAgdm9pZCBzZXRGb250RmFtaWx5KEZvbnRGYW1p
bHkgd2hpY2gsIGNvbnN0IFFTdHJpbmcmIGZhbWlseSk7CisgICAgUVN0cmluZyBmb250RmFtaWx5
KEZvbnRGYW1pbHkgd2hpY2gpIGNvbnN0OworCisgICAgdm9pZCBzZXRGb250U2l6ZShGb250U2l6
ZSB0eXBlLCBpbnQgc2l6ZSk7CisgICAgaW50IGZvbnRTaXplKEZvbnRTaXplIHR5cGUpIGNvbnN0
OworCisgICAgV0tQcmVmZXJlbmNlc1JlZiByZWY7Cit9OwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xbWxwbHVnaW4vcGx1Z2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FtbHBsdWdpbi9wbHVnaW4uY3BwCShyZXZpc2lv
biA5NzQ4MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcW1scGx1Z2luL3Bs
dWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJxdG91
Y2h3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXRvdWNod2Vidmlldy5oIgogI2luY2x1ZGUgInF3ZWJu
YXZpZ2F0aW9uY29udHJvbGxlci5oIgorI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlcy5oIgogCiAj
aW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xZGVjbGFyYXRpdmUuaD4KICNpbmNsdWRlIDxRdERlY2xh
cmF0aXZlL3FkZWNsYXJhdGl2ZWV4dGVuc2lvbnBsdWdpbi5oPgpAQCAtMzcsNiArMzgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHFtbFJlZ2lzdGVyVHlwZTxRRGVza3RvcFdlYlZpZXc+KHVyaSwgNSwg
MCwgIkRlc2t0b3BXZWJWaWV3Iik7CiAgICAgICAgIHFtbFJlZ2lzdGVyVHlwZTxRVG91Y2hXZWJW
aWV3Pih1cmksIDUsIDAsICJUb3VjaFdlYlZpZXciKTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNy
ZWF0YWJsZVR5cGU8UVdlYk5hdmlnYXRpb25Db250cm9sbGVyPih1cmksIDUsIDAsICJOYXZpZ2F0
aW9uQ29udHJvbGxlciIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3Rh
bmNlIG9mIE5hdmlnYXRpb25Db250cm9sbGVyIikpOworICAgICAgICBxbWxSZWdpc3RlclVuY3Jl
YXRhYmxlVHlwZTxRV2ViUHJlZmVyZW5jZXM+KHVyaSwgNSwgMCwgIldlYlByZWZlcmVuY2VzIiwg
UU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgV2ViUHJlZmVy
ZW5jZXMiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFUb3VjaFdlYlBh
Z2U+KHVyaSwgNSwgMCwgIlRvdWNoV2ViUGFnZSIsIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRl
IHNlcGFyYXRlIGluc3RhbmNlIG9mIFRvdWNoV2ViUGFnZSwgdXNlIFRvdWNoV2ViVmlldyIpKTsK
ICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5cGU8UU5ldHdvcmtSZXBseT4odXJpLCA1
LCAwLCAiTmV0d29ya1JlcGx5IiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUg
aW5zdGFuY2Ugb2YgTmV0d29ya1JlcGx5IikpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0X3ByZWZl
cmVuY2VzLnFtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BXZWJWaWV3L3RzdF9wcmVmZXJlbmNlcy5xbWwJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3Rz
L0Rlc2t0b3BXZWJWaWV3L3RzdF9wcmVmZXJlbmNlcy5xbWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODQgQEAKK2ltcG9ydCBRdFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBR
dFdlYktpdC5leHBlcmltZW50YWwgNS4wCisKK0Rlc2t0b3BXZWJWaWV3IHsKKyAgICBpZDogd2Vi
VmlldworCisgICAgcHJlZmVyZW5jZXMgeworICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1
ZQorICAgICAgICBsb2NhbFN0b3JhZ2VFbmFibGVkOiB0cnVlCisgICAgICAgIHBsdWdpbnNFbmFi
bGVkOiB0cnVlCisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IHNweQorICAg
ICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTogImxvYWRTdWNjZWVkZWQi
CisgICAgfQorCisgICAgVGVzdENhc2UgeworICAgICAgICBuYW1lOiAiRGVza3RvcFdlYlZpZXdQ
cmVmZXJlbmNlcyIKKworICAgICAgICBmdW5jdGlvbiBpbml0KCkgeworICAgICAgICAgICAgd2Vi
Vmlldy5wcmVmZXJlbmNlcy5qYXZhc2NyaXB0RW5hYmxlZCA9IHRydWUKKyAgICAgICAgICAgIHdl
YlZpZXcucHJlZmVyZW5jZXMubG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWUKKyAgICAgICAgICAg
IHdlYlZpZXcucHJlZmVyZW5jZXMucGx1Z2luc0VuYWJsZWQgPSB0cnVlCisgICAgICAgICAgICBz
cHkuY2xlYXIoKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9qYXZhc2NyaXB0
RW5hYmxlZCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcucHJlZmVyZW5jZXMuamF2YXNjcmlwdEVu
YWJsZWQgPSB0cnVlCisgICAgICAgICAgICB2YXIgdGVzdFVybCA9IFF0LnJlc29sdmVkVXJsKCIu
Li9jb21tb24vamF2YXNjcmlwdC5odG1sIikKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZCh0ZXN0
VXJsKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3
LnRpdGxlLCAiTmV3IFRpdGxlIikKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3Rf
amF2YXNjcmlwdERpc2FibGVkKCkgeworICAgICAgICAgICAgd2ViVmlldy5wcmVmZXJlbmNlcy5q
YXZhc2NyaXB0RW5hYmxlZCA9IGZhbHNlCisgICAgICAgICAgICB2YXIgdGVzdFVybCA9IFF0LnJl
c29sdmVkVXJsKCIuLi9jb21tb24vamF2YXNjcmlwdC5odG1sIikKKyAgICAgICAgICAgIHdlYlZp
ZXcubG9hZCh0ZXN0VXJsKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZSh3ZWJWaWV3LnRpdGxlLCAiT3JpZ2luYWwgVGl0bGUiKQorICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdF9sb2NhbFN0b3JhZ2VEaXNhYmxlZCgpIHsKKyAgICAgICAgICAgIHdl
YlZpZXcucHJlZmVyZW5jZXMubG9jYWxTdG9yYWdlRW5hYmxlZCA9IGZhbHNlCisgICAgICAgICAg
ICB2YXIgdGVzdFVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vbG9jYWxTdG9yYWdlLmh0
bWwiKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKHRlc3RVcmwpCisgICAgICAgICAgICBzcHku
d2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJPcmlnaW5hbCBUaXRs
ZSIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2xvY2FsU3RvcmFnZUVuYWJs
ZWQoKSB7CisgICAgICAgICAgICB3ZWJWaWV3LnByZWZlcmVuY2VzLmxvY2FsU3RvcmFnZUVuYWJs
ZWQgPSB0cnVlCisgICAgICAgICAgICB2YXIgdGVzdFVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9j
b21tb24vbG9jYWxTdG9yYWdlLmh0bWwiKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKHRlc3RV
cmwpCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBzcHkuY2xlYXIoKQorICAg
ICAgICAgICAgd2ViVmlldy5sb2FkKHRlc3RVcmwpCisgICAgICAgICAgICBzcHkud2FpdCgpCisg
ICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJOZXcgVGl0bGUiKQorICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9wbHVnaW5zRGlzYWJsZWQoKSB7CisgICAgICAgICAg
ICB3ZWJWaWV3LnByZWZlcmVuY2VzLnBsdWdpbnNFbmFibGVkID0gZmFsc2UKKyAgICAgICAgICAg
IHZhciB0ZXN0VXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9wbHVnaW5zLmh0bWwiKQor
ICAgICAgICAgICAgd2ViVmlldy5sb2FkKHRlc3RVcmwpCisgICAgICAgICAgICBzcHkud2FpdCgp
CisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJQbHVnaW5zIE5vdCBMb2FkZWQi
KQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9wbHVnaW5zRW5hYmxlZCgpIHsK
KyAgICAgICAgICAgIHdlYlZpZXcucHJlZmVyZW5jZXMucGx1Z2luc0VuYWJsZWQgPSB0cnVlCisg
ICAgICAgICAgICB2YXIgdGVzdFVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vcGx1Z2lu
cy5odG1sIikKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZCh0ZXN0VXJsKQorICAgICAgICAgICAg
c3B5LndhaXQoKQorICAgICAgICAgICAgc3B5LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcu
bG9hZCh0ZXN0VXJsKQorICAgICAgICAgICAgc3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFy
ZSh3ZWJWaWV3LnRpdGxlLCAiT3JpZ2luYWwgVGl0bGUiKQorICAgICAgICB9CisgICAgfQorfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vamF2YXNjcmlwdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2phdmFzY3JpcHQuaHRtbAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29t
bW9uL2phdmFzY3JpcHQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACis8aHRtbD4K
KzxoZWFkPjx0aXRsZT5PcmlnaW5hbCBUaXRsZTwvdGl0bGU+PC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Citkb2N1bWVudC50aXRsZSA9ICJOZXcgVGl0bGUi
OworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9sb2NhbFN0b3JhZ2UuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3Rz
L2NvbW1vbi9sb2NhbFN0b3JhZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2xvY2FsU3RvcmFnZS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPk9yaWdp
bmFsIFRpdGxlPC90aXRsZT48L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KK2RvY3VtZW50LnRpdGxlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RpdGxlJyk7
Citsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGl0bGUnLCAnTmV3IFRpdGxlJyk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gOTc0ODMpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsy
Miw3IEBACiAjaW5jbHVkZSAiUXRXZWJQYWdlUHJveHkuaCIKIAogI2luY2x1ZGUgInF3ZWJlcnJv
ci5oIgotI2luY2x1ZGUgInF3a3ByZWZlcmVuY2VzX3AuaCIKKyNpbmNsdWRlICJxd2VicHJlZmVy
ZW5jZXNfcC5oIgogCiAjaW5jbHVkZSAiQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgInF3a2hpc3Rv
cnkuaCIKQEAgLTQ5MiwxMSArNDkyLDExIEBAIHZvaWQgUXRXZWJQYWdlUHJveHk6OnByb2Nlc3NE
aWRDcmFzaCgpCiAgICAgbV92aWV3SW50ZXJmYWNlLT5wcm9jZXNzRGlkQ3Jhc2goKTsKIH0KIAot
UVdLUHJlZmVyZW5jZXMqIFF0V2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlcygpIGNvbnN0CitRV2Vi
UHJlZmVyZW5jZXMqIFF0V2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlcygpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX3ByZWZlcmVuY2VzKSB7CiAgICAgICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJl
ZiA9IFdLUGFnZUdldFBhZ2VHcm91cChwYWdlUmVmKCkpOwotICAgICAgICBtX3ByZWZlcmVuY2Vz
ID0gUVdLUHJlZmVyZW5jZXNQcml2YXRlOjpjcmVhdGVQcmVmZXJlbmNlcyhwYWdlR3JvdXBSZWYp
OworICAgICAgICBtX3ByZWZlcmVuY2VzID0gUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6Y3JlYXRl
UHJlZmVyZW5jZXMocGFnZUdyb3VwUmVmKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9wcmVmZXJl
bmNlczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiA5NzQ4MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBAIGNsYXNzIFFVbmRv
U3RhY2s7CiBRVF9FTkRfTkFNRVNQQUNFCiAKIGNsYXNzIFFXZWJFcnJvcjsKK2NsYXNzIFFXZWJQ
cmVmZXJlbmNlczsKIGNsYXNzIFFXS0hpc3Rvcnk7Ci1jbGFzcyBRV0tQcmVmZXJlbmNlczsKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0RHJhd2luZ0FyZWFTaXplKGNvbnN0IFFTaXplJik7CiAKLSAgICBRV0tQcmVm
ZXJlbmNlcyogcHJlZmVyZW5jZXMoKSBjb25zdDsKKyAgICBRV2ViUHJlZmVyZW5jZXMqIHByZWZl
cmVuY2VzKCkgY29uc3Q7CiAKICAgICBRU3RyaW5nIHRpdGxlKCkgY29uc3Q7CiAKQEAgLTIwMyw3
ICsyMDMsNyBAQCBwcml2YXRlOgogICAgIFFXS0hpc3RvcnkqIG1faGlzdG9yeTsKIAogICAgIG11
dGFibGUgUUFjdGlvbiogbV9hY3Rpb25zW1F0V2ViUGFnZVByb3h5OjpXZWJBY3Rpb25Db3VudF07
Ci0gICAgbXV0YWJsZSBRV0tQcmVmZXJlbmNlcyogbV9wcmVmZXJlbmNlczsKKyAgICBtdXRhYmxl
IFFXZWJQcmVmZXJlbmNlcyogbV9wcmVmZXJlbmNlczsKIAogICAgIE93blB0cjxRVW5kb1N0YWNr
PiBtX3VuZG9TdGFjazsKICAgICBpbnQgbV9sb2FkUHJvZ3Jlc3M7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2twcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDk3NDgz
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSwyMTkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgInF3a3ByZWZlcmVuY2VzLmgiCi0KLSNpbmNsdWRlICJX
S1BhZ2VHcm91cC5oIgotI2luY2x1ZGUgIldLUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlICJXS1N0
cmluZ1F0LmgiCi0jaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKLSNpbmNsdWRlICJxd2twcmVmZXJl
bmNlc19wLmgiCi0KLQotUVdLUHJlZmVyZW5jZXMqIFFXS1ByZWZlcmVuY2VzUHJpdmF0ZTo6Y3Jl
YXRlUHJlZmVyZW5jZXMoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQotewotICAgIFFXS1By
ZWZlcmVuY2VzKiBwcmVmcyA9IG5ldyBRV0tQcmVmZXJlbmNlczsKLSAgICBwcmVmcy0+ZC0+cmVm
ID0gV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXBSZWYpOwotICAgIHJldHVybiBw
cmVmczsKLX0KLQotUVdLUHJlZmVyZW5jZXMqIFFXS1ByZWZlcmVuY2VzUHJpdmF0ZTo6Y3JlYXRl
U2hhcmVkUHJlZmVyZW5jZXMoKQotewotICAgIFFXS1ByZWZlcmVuY2VzKiBwcmVmcyA9IG5ldyBR
V0tQcmVmZXJlbmNlczsKLSAgICBwcmVmcy0+ZC0+cmVmID0gV0tQcmVmZXJlbmNlc0NyZWF0ZSgp
OwotICAgIHJldHVybiBwcmVmczsKLX0KLQotUVdLUHJlZmVyZW5jZXMqIFFXS1ByZWZlcmVuY2Vz
OjpzaGFyZWRQcmVmZXJlbmNlcygpCi17Ci0gICAgc3RhdGljIFFXS1ByZWZlcmVuY2VzKiBpbnN0
YW5jZSA9IDA7Ci0KLSAgICBpZiAoIWluc3RhbmNlKQotICAgICAgICBpbnN0YW5jZSA9IFFXS1By
ZWZlcmVuY2VzUHJpdmF0ZTo6Y3JlYXRlU2hhcmVkUHJlZmVyZW5jZXMoKTsKLSAgICByZXR1cm4g
aW5zdGFuY2U7Ci19Ci0KLVFXS1ByZWZlcmVuY2VzOjpRV0tQcmVmZXJlbmNlcygpCi0gICAgOiBk
KG5ldyBRV0tQcmVmZXJlbmNlc1ByaXZhdGUpCi17Ci19Ci0KLVFXS1ByZWZlcmVuY2VzOjp+UVdL
UHJlZmVyZW5jZXMoKQotewotICAgIGRlbGV0ZSBkOwotfQotCi12b2lkIFFXS1ByZWZlcmVuY2Vz
OjpzZXRGb250RmFtaWx5KEZvbnRGYW1pbHkgd2hpY2gsIGNvbnN0IFFTdHJpbmcmIGZhbWlseSkK
LXsKLSAgICBzd2l0Y2ggKHdoaWNoKSB7Ci0gICAgY2FzZSBTdGFuZGFyZEZvbnQ6Ci0gICAgICAg
IFdLUHJlZmVyZW5jZXNTZXRTdGFuZGFyZEZvbnRGYW1pbHkoZC0+cmVmLCBXS1N0cmluZ0NyZWF0
ZVdpdGhRU3RyaW5nKGZhbWlseSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpeGVkRm9u
dDoKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldEZpeGVkRm9udEZhbWlseShkLT5yZWYsIFdLU3Ry
aW5nQ3JlYXRlV2l0aFFTdHJpbmcoZmFtaWx5KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
U2VyaWZGb250OgotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U2VyaWZGb250RmFtaWx5KGQtPnJl
ZiwgV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhmYW1pbHkpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTYW5zU2VyaWZGb250OgotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U2Fuc1Nlcmlm
Rm9udEZhbWlseShkLT5yZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcoZmFtaWx5KSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3Vyc2l2ZUZvbnQ6Ci0gICAgICAgIFdLUHJlZmVyZW5j
ZXNTZXRDdXJzaXZlRm9udEZhbWlseShkLT5yZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmco
ZmFtaWx5KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmFudGFzeUZvbnQ6Ci0gICAgICAg
IFdLUHJlZmVyZW5jZXNTZXRGYW50YXN5Rm9udEZhbWlseShkLT5yZWYsIFdLU3RyaW5nQ3JlYXRl
V2l0aFFTdHJpbmcoZmFtaWx5KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLX0KLQotUVN0cmluZyBRV0tQcmVmZXJlbmNlczo6Zm9udEZhbWls
eShGb250RmFtaWx5IHdoaWNoKSBjb25zdAotewotICAgIHN3aXRjaCAod2hpY2gpIHsKLSAgICBj
YXNlIFN0YW5kYXJkRm9udDogewotICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3Ry
aW5nUmVmKEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5U3RhbmRhcmRGb250RmFtaWx5KGQtPnJl
ZikpOwotICAgICAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhzdHJpbmdSZWYuZ2V0KCkp
OwotICAgIH0KLSAgICBjYXNlIEZpeGVkRm9udDogewotICAgICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gc3RyaW5nUmVmKEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5Rml4ZWRGb250RmFt
aWx5KGQtPnJlZikpOwotICAgICAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhzdHJpbmdS
ZWYuZ2V0KCkpOwotICAgIH0KLSAgICBjYXNlIFNlcmlmRm9udDogewotICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nUmVmKEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5U2Vy
aWZGb250RmFtaWx5KGQtPnJlZikpOwotICAgICAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmlu
ZyhzdHJpbmdSZWYuZ2V0KCkpOwotICAgIH0KLSAgICBjYXNlIFNhbnNTZXJpZkZvbnQ6IHsKLSAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZihBZG9wdFdLLCBXS1ByZWZl
cmVuY2VzQ29weVNhbnNTZXJpZkZvbnRGYW1pbHkoZC0+cmVmKSk7Ci0gICAgICAgIHJldHVybiBX
S1N0cmluZ0NvcHlRU3RyaW5nKHN0cmluZ1JlZi5nZXQoKSk7Ci0gICAgfQotICAgIGNhc2UgQ3Vy
c2l2ZUZvbnQ6IHsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZihB
ZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ29weUN1cnNpdmVGb250RmFtaWx5KGQtPnJlZikpOwotICAg
ICAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhzdHJpbmdSZWYuZ2V0KCkpOwotICAgIH0K
LSAgICBjYXNlIEZhbnRhc3lGb250OiB7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBzdHJpbmdSZWYoQWRvcHRXSywgV0tQcmVmZXJlbmNlc0NvcHlGYW50YXN5Rm9udEZhbWlseShk
LT5yZWYpKTsKLSAgICAgICAgcmV0dXJuIFdLU3RyaW5nQ29weVFTdHJpbmcoc3RyaW5nUmVmLmdl
dCgpKTsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKLSAg
ICB9Ci19Ci0KLWJvb2wgUVdLUHJlZmVyZW5jZXM6OnRlc3RBdHRyaWJ1dGUoV2ViQXR0cmlidXRl
IGF0dHIpIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChhdHRyKSB7Ci0gICAgY2FzZSBBdXRvTG9hZElt
YWdlczoKLSAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHkoZC0+cmVmKTsKLSAgICBjYXNlIEphdmFzY3JpcHRFbmFibGVkOgotICAgICAgICByZXR1
cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKGQtPnJlZik7Ci0gICAgY2FzZSBQ
bHVnaW5zRW5hYmxlZDoKLSAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5h
YmxlZChkLT5yZWYpOwotICAgIGNhc2UgT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
OgotICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZChkLT5yZWYpOwotICAgIGNhc2UgTG9jYWxTdG9yYWdlRW5hYmxlZDoKLSAgICAg
ICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGQtPnJlZik7Ci0g
ICAgY2FzZSBYU1NBdWRpdGluZ0VuYWJsZWQ6Ci0gICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2Vz
R2V0WFNTQXVkaXRvckVuYWJsZWQoZC0+cmVmKTsKLSAgICBjYXNlIEZyYW1lRmxhdHRlbmluZ0Vu
YWJsZWQ6Ci0gICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5h
YmxlZChkLT5yZWYpOwotICAgIGNhc2UgUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDoKLSAgICAgICAg
cmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGQtPnJlZik7Ci0g
ICAgY2FzZSBEZXZlbG9wZXJFeHRyYXNFbmFibGVkOgotICAgICAgICByZXR1cm4gV0tQcmVmZXJl
bmNlc0dldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZC0+cmVmKTsKLSAgICBjYXNlIERuc1ByZWZl
dGNoRW5hYmxlZDoKLSAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRETlNQcmVmZXRjaGlu
Z0VuYWJsZWQoZC0+cmVmKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotdm9pZCBRV0tQcmVmZXJl
bmNlczo6c2V0QXR0cmlidXRlKFdlYkF0dHJpYnV0ZSBhdHRyLCBib29sIG9uKQotewotICAgIHN3
aXRjaCAoYXR0cikgewotICAgIGNhc2UgQXV0b0xvYWRJbWFnZXM6Ci0gICAgICAgIFdLUHJlZmVy
ZW5jZXNTZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZC0+cmVmLCBvbik7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSmF2YXNjcmlwdEVuYWJsZWQ6Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNT
ZXRKYXZhU2NyaXB0RW5hYmxlZChkLT5yZWYsIG9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQbHVnaW5zRW5hYmxlZDoKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFBsdWdpbnNFbmFibGVk
KGQtPnJlZiwgb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZDoKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldE9mZmxpbmVXZWJBcHBs
aWNhdGlvbkNhY2hlRW5hYmxlZChkLT5yZWYsIG9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBMb2NhbFN0b3JhZ2VFbmFibGVkOgotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0TG9jYWxTdG9y
YWdlRW5hYmxlZChkLT5yZWYsIG9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYU1NBdWRp
dGluZ0VuYWJsZWQ6Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRYU1NBdWRpdG9yRW5hYmxlZChk
LT5yZWYsIG9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGcmFtZUZsYXR0ZW5pbmdFbmFi
bGVkOgotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChkLT5y
ZWYsIG9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQcml2YXRlQnJvd3NpbmdFbmFibGVk
OgotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChkLT5yZWYs
IG9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEZXZlbG9wZXJFeHRyYXNFbmFibGVkOgot
ICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChkLT5yZWYsIG9u
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEbnNQcmVmZXRjaEVuYWJsZWQ6Ci0gICAgICAg
IFdLUHJlZmVyZW5jZXNTZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoZC0+cmVmLCBvbik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIH0KLX0KLQotdm9pZCBRV0tQcmVmZXJlbmNlczo6c2V0Rm9udFNpemUoRm9udFNpemUgdHlw
ZSwgaW50IHNpemUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBNaW5pbXVtRm9u
dFNpemU6Ci0gICAgICAgICBXS1ByZWZlcmVuY2VzU2V0TWluaW11bUZvbnRTaXplKGQtPnJlZiwg
c2l6ZSk7Ci0gICAgICAgICBicmVhazsKLSAgICBjYXNlIERlZmF1bHRGb250U2l6ZToKLSAgICAg
ICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0Rm9udFNpemUoZC0+cmVmLCBzaXplKTsKLSAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRGVmYXVsdEZpeGVkRm9udFNpemU6Ci0gICAgICAgICBXS1By
ZWZlcmVuY2VzU2V0RGVmYXVsdEZpeGVkRm9udFNpemUoZC0+cmVmLCBzaXplKTsKLSAgICAgICAg
IGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KLX0KLQotaW50IFFXS1ByZWZlcmVuY2VzOjpmb250U2l6ZShGb250U2l6ZSB0eXBlKSBjb25z
dAotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgTWluaW11bUZvbnRTaXplOgotICAg
ICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRNaW5pbXVtRm9udFNpemUoZC0+cmVmKTsKLSAg
ICBjYXNlIERlZmF1bHRGb250U2l6ZToKLSAgICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0
RGVmYXVsdEZvbnRTaXplKGQtPnJlZik7Ci0gICAgY2FzZSBEZWZhdWx0Rml4ZWRGb250U2l6ZToK
LSAgICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0RGVmYXVsdEZpeGVkRm9udFNpemUoZC0+
cmVmKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDk3NDgzKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NzkgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBRV0tQUkVGRVJFTkNFU19I
Ci0jZGVmaW5lIFFXS1BSRUZFUkVOQ0VTX0gKLQotI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIK
LQotY2xhc3MgUVdLUHJlZmVyZW5jZXNQcml2YXRlOwotCi1jbGFzcyBRV0VCS0lUX0VYUE9SVCBR
V0tQcmVmZXJlbmNlcyB7Ci1wdWJsaWM6Ci0gICAgZW51bSBGb250RmFtaWx5IHsKLSAgICAgICAg
U3RhbmRhcmRGb250LAotICAgICAgICBGaXhlZEZvbnQsCi0gICAgICAgIFNlcmlmRm9udCwKLSAg
ICAgICAgU2Fuc1NlcmlmRm9udCwKLSAgICAgICAgQ3Vyc2l2ZUZvbnQsCi0gICAgICAgIEZhbnRh
c3lGb250Ci0gICAgfTsKLQotICAgIGVudW0gV2ViQXR0cmlidXRlIHsKLSAgICAgICAgQXV0b0xv
YWRJbWFnZXMsCi0gICAgICAgIEphdmFzY3JpcHRFbmFibGVkLAotICAgICAgICBQbHVnaW5zRW5h
YmxlZCwKLSAgICAgICAgT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLAotICAgICAg
ICBMb2NhbFN0b3JhZ2VFbmFibGVkLAotICAgICAgICBYU1NBdWRpdGluZ0VuYWJsZWQsCi0gICAg
ICAgIEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQsCi0gICAgICAgIFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsCi0gICAgICAgIERldmVsb3BlckV4dHJhc0VuYWJsZWQsCi0gICAgICAgIERuc1ByZWZldGNo
RW5hYmxlZAotICAgIH07Ci0KLSAgICBlbnVtIEZvbnRTaXplIHsKLSAgICAgICAgTWluaW11bUZv
bnRTaXplLAotICAgICAgICBEZWZhdWx0Rm9udFNpemUsCi0gICAgICAgIERlZmF1bHRGaXhlZEZv
bnRTaXplCi0gICAgfTsKLQotICAgIHN0YXRpYyBRV0tQcmVmZXJlbmNlcyogc2hhcmVkUHJlZmVy
ZW5jZXMoKTsKLQotICAgIHZvaWQgc2V0Rm9udEZhbWlseShGb250RmFtaWx5IHdoaWNoLCBjb25z
dCBRU3RyaW5nJiBmYW1pbHkpOwotICAgIFFTdHJpbmcgZm9udEZhbWlseShGb250RmFtaWx5IHdo
aWNoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0QXR0cmlidXRlKFdlYkF0dHJpYnV0ZSBhdHRyLCBi
b29sIG9uKTsKLSAgICBib29sIHRlc3RBdHRyaWJ1dGUoV2ViQXR0cmlidXRlIGF0dHIpIGNvbnN0
OwotCi0gICAgdm9pZCBzZXRGb250U2l6ZShGb250U2l6ZSB0eXBlLCBpbnQgc2l6ZSk7Ci0gICAg
aW50IGZvbnRTaXplKEZvbnRTaXplIHR5cGUpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFFfRElT
QUJMRV9DT1BZKFFXS1ByZWZlcmVuY2VzKQotCi0gICAgUVdLUHJlZmVyZW5jZXMoKTsKLSAgICB+
UVdLUHJlZmVyZW5jZXMoKTsKLQotICAgIFFXS1ByZWZlcmVuY2VzUHJpdmF0ZSAqZDsKLQotICAg
IGZyaWVuZCBjbGFzcyBRV0tQcmVmZXJlbmNlc1ByaXZhdGU7Ci19OwotCi0jZW5kaWYgLy8gUVdL
UFJFRkVSRU5DRVNfSApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a3ByZWZl
cmVuY2VzX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdr
cHJlZmVyZW5jZXNfcC5oCShyZXZpc2lvbiA5NzQ4MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9xd2twcmVmZXJlbmNlc19wLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjggKzAsMCBA
QAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgIldLUHJlZmVyZW5jZXMuaCIKLQotY2xh
c3MgUVdLUHJlZmVyZW5jZXNQcml2YXRlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUVdLUHJlZmVy
ZW5jZXMqIGNyZWF0ZVByZWZlcmVuY2VzKFdLUGFnZUdyb3VwUmVmKTsKLSAgICBzdGF0aWMgUVdL
UHJlZmVyZW5jZXMqIGNyZWF0ZVNoYXJlZFByZWZlcmVuY2VzKCk7Ci0KLSAgICBXS1ByZWZlcmVu
Y2VzUmVmIHJlZjsKLX07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111246</attachid>
            <date>2011-10-17 05:14:15 -0700</date>
            <delta_ts>2011-10-18 05:28:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70141-20111017091359.patch</filename>
            <type>text/plain</type>
            <size>48936</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NjAyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODIgQEAKKzIwMTEtMTAtMTcgIEFsZXhpcyBN
ZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJd
IFdlYlByZWZlcmVuY2VzIGFyZSBpbXBvc3NpYmxlIHRvIHVzZSBpbiBRTUwuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDE0MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8g
dXNlIHF3a3ByZWZlcmVuY2VzIGluIFFNTC4gUmVuYW1lZCBpdAorICAgICAgICB0byBmb2xsb3cg
b3VyIG5ldyBzdHlsZSByZWdhcmRpbmcgY2xhc3MgbmFtZXMuIFRoaXMgY2xhc3MgaXMgCisgICAg
ICAgIG5vdyBhIFFPYmplY3QgdGhhdCBpcyBleHBvc2VkIGFzIGEgcHJvcGVydHkgb2YgdGhlIHZp
ZXcuCisgICAgICAgIFRoZSB0ZXN0cyBnaXZlIGFuIGlkZWEgb2YgdGhlIHVzYWdlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3FkZXNrdG9wd2Vidmlldy5jcHA6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OnByZWZl
cmVuY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcW1scGx1Z2luL3BsdWdpbi5jcHA6CisgICAgICAg
IChXZWJLaXQyUW1sUGx1Z2luOjpyZWdpc3RlclR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwOgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6cHJlZmVy
ZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcDogQWRkZWQuCisgICAg
ICAgIChRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpjcmVhdGVQcmVmZXJlbmNlcyk6CisgICAgICAg
IChRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjp0ZXN0QXR0cmlidXRlKToKKyAgICAgICAgKFFXZWJQ
cmVmZXJlbmNlc1ByaXZhdGU6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5j
ZXNQcml2YXRlOjpzZXRGb250RmFtaWx5KToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlc1ByaXZh
dGU6OmZvbnRGYW1pbHkpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6c2V0Rm9u
dFNpemUpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6Zm9udFNpemUpOgorICAg
ICAgICAoUVdlYlByZWZlcmVuY2VzOjpRV2ViUHJlZmVyZW5jZXMpOgorICAgICAgICAoUVdlYlBy
ZWZlcmVuY2VzOjp+UVdlYlByZWZlcmVuY2VzKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6
YXV0b0xvYWRJbWFnZXMpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXRBdXRvTG9hZElt
YWdlcyk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OmphdmFzY3JpcHRFbmFibGVkKToKKyAg
ICAgICAgKFFXZWJQcmVmZXJlbmNlczo6c2V0SmF2YXNjcmlwdEVuYWJsZWQpOgorICAgICAgICAo
UVdlYlByZWZlcmVuY2VzOjpwbHVnaW5zRW5hYmxlZCk6CisgICAgICAgIChRV2ViUHJlZmVyZW5j
ZXM6OnNldFBsdWdpbnNFbmFibGVkKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6b2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6
c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAgKFFXZWJQcmVm
ZXJlbmNlczo6bG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6
OnNldExvY2FsU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpYU1NB
dWRpdGluZ0VuYWJsZWQpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXRYU1NBdWRpdGlu
Z0VuYWJsZWQpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpwcml2YXRlQnJvd3NpbmdFbmFi
bGVkKToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OmRuc1ByZWZldGNoRW5hYmxlZCk6CisgICAg
ICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldERuc1ByZWZldGNoRW5hYmxlZCk6CisgICAgICAgIChR
V2ViUHJlZmVyZW5jZXM6OnN0YW5kYXJkRm9udEZhbWlseSk6CisgICAgICAgIChRV2ViUHJlZmVy
ZW5jZXM6OnNldFN0YW5kYXJkRm9udEZhbWlseSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6
OmZpeGVkRm9udEZhbWlseSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldEZpeGVkRm9u
dEZhbWlseSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNlcmlmRm9udEZhbWlseSk6Cisg
ICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldFNlcmlmRm9udEZhbWlseSk6CisgICAgICAgIChR
V2ViUHJlZmVyZW5jZXM6OnNhbnNTZXJpZkZvbnRGYW1pbHkpOgorICAgICAgICAoUVdlYlByZWZl
cmVuY2VzOjpzZXRTYW5zU2VyaWZGb250RmFtaWx5KToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNl
czo6Y3Vyc2l2ZUZvbnRGYW1pbHkpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXRDdXJz
aXZlRm9udEZhbWlseSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OmZhbnRhc3lGb250RmFt
aWx5KToKKyAgICAgICAgKFFXZWJQcmVmZXJlbmNlczo6c2V0RmFudGFzeUZvbnRGYW1pbHkpOgor
ICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjptaW5pbXVtRm9udFNpemUpOgorICAgICAgICAoUVdl
YlByZWZlcmVuY2VzOjpzZXRNaW5pbXVtRm9udFNpemUpOgorICAgICAgICAoUVdlYlByZWZlcmVu
Y2VzOjpkZWZhdWx0Rm9udFNpemUpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpzZXREZWZh
dWx0Rm9udFNpemUpOgorICAgICAgICAoUVdlYlByZWZlcmVuY2VzOjpkZWZhdWx0Rml4ZWRGb250
U2l6ZSk6CisgICAgICAgIChRV2ViUHJlZmVyZW5jZXM6OnNldERlZmF1bHRGaXhlZEZvbnRTaXpl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcv
dHN0X3ByZWZlcmVuY2VzLnFtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9xbWx0ZXN0cy9jb21tb24vamF2YXNjcmlwdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9sb2NhbFN0b3JhZ2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFF0V2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2Vz
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXNfcC5oOiBSZW1v
dmVkLgorICAgICAgICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDJBUEkucHJpOgor
CiAyMDExLTEwLTE3ICBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CiAKICAg
ICAgICAgW1dlYktpdDJdW2d0a10gUmVuYW1lIFdFQktJVF9QT0xJQ1lfRVJST1JfQ0FOTk9UX1NI
T1dfVVJMIHRvIFdFQktJVF9QT0xJQ1lfRVJST1JfQ0FOTk9UX1NIT1dfVVJJCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnBybwkocmV2aXNpb24gOTc2MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMjU5LDggKzI1OSw2IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5o
IFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeV9wLmggXAotICAgIFVJUHJvY2Vzcy9xdC9x
d2twcmVmZXJlbmNlcy5oIFwKLSAgICBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXNfcC5oIFwK
ICAgICBVSVByb2Nlc3MvcXQvU0dVcGRhdGVRdWV1ZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvU0dU
aWxlTm9kZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oIFwKQEAgLTQ5Nyw3
ICs0OTUsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvcXdlYmVycm9yLmNwcCBc
CiAgICAgVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0
L3F3a2hpc3RvcnkuY3BwIFwKLSAgICBVSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuY3BwIFwK
ICAgICBVSVByb2Nlc3MvcXQvU0dVcGRhdGVRdWV1ZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9T
R1RpbGVOb2RlLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFQcm94eVF0
LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQkocmV2aXNpb24gOTc2MDIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBA
QCBXRUJLSVQyX0FQSV9TT1VSQ0VTID0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAgXAogICAgICQkU09VUkNFX0RJUi9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmNwcCBcCisg
ICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMu
Y3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCkBAIC0xMjksNiArMTMwLDggQEAgV0VCS0lU
Ml9BUElfSEVBREVSUyArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9jcHAvcXQvV0tVUkxRdC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggXAorICAgICQkU09VUkNFX0RJUi9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmggXAorICAgICQkU09VUkNFX0RJ
Ui9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaCBcCiAgICAgJCRT
T1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmggXAogICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmgg
XAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmll
dy5oIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaAkocmV2
aXNpb24gOTc2MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw1ICsyNSw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9xdG91
Y2h3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9xdG91Y2h3ZWJwYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9xd2VibmF2aWdhdGlvbmNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L3F3ZWJwcmVmZXJlbmNlcy5oPgogCiAjZW5kaWYgLyogV0tWaWV3X2ggKi8KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAJ
KHJldmlzaW9uIDk3NjAyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVz
a3RvcHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsNiArMjkzLDExIEBAIFFXZWJO
YXZpZ2F0aW9uQ29udHJvbGxlciogUURlc2t0b3BXZWJWaWUKICAgICByZXR1cm4gZC0+bmF2aWdh
dGlvbkNvbnRyb2xsZXI7CiB9CiAKK1FXZWJQcmVmZXJlbmNlcyogUURlc2t0b3BXZWJWaWV3Ojpw
cmVmZXJlbmNlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnBhZ2UucHJlZmVyZW5jZXMoKTsK
K30KKwogc3RhdGljIHZvaWQgcGFpbnRDcmFzaGVkUGFnZShRUGFpbnRlciogcGFpbnRlciwgY29u
c3QgUVJlY3RGJiByZWN0KQogewogICAgIHBhaW50ZXItPmZpbGxSZWN0KHJlY3QsIFF0OjpncmF5
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXcuaAkocmV2aXNpb24gOTc2MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAKIGNsYXNzIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU7CiBjbGFzcyBRV2ViTmF2aWdhdGlvbkNv
bnRyb2xsZXI7CitjbGFzcyBRV2ViUHJlZmVyZW5jZXM7CiAKIFFUX0JFR0lOX05BTUVTUEFDRQog
Y2xhc3MgUUZvY3VzRXZlbnQ7CkBAIC01Niw2ICs1Nyw3IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JU
IFFEZXNrdG9wV2ViVmlldyA6IHAKICAgICBRX1BST1BFUlRZKFFVcmwgdXJsIFJFQUQgdXJsIE5P
VElGWSB1cmxDaGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoaW50IGxvYWRQcm9ncmVzcyBSRUFEIGxv
YWRQcm9ncmVzcyBOT1RJRlkgbG9hZFByb2dyZXNzQ2hhbmdlZCkKICAgICBRX1BST1BFUlRZKFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbiBSRUFEIG5hdmlnYXRpb25Db250cm9s
bGVyIENPTlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVdlYlByZWZlcmVuY2VzKiBwcmVm
ZXJlbmNlcyBSRUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFMKQogICAgIFFfRU5VTVMoTmF2
aWdhdGlvblBvbGljeSkKICAgICBRX0VOVU1TKEVycm9yVHlwZSkKIHB1YmxpYzoKQEAgLTc5LDYg
KzgxLDcgQEAgcHVibGljOgogICAgIGludCBsb2FkUHJvZ3Jlc3MoKSBjb25zdDsKIAogICAgIFFX
ZWJOYXZpZ2F0aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbkNvbnRyb2xsZXIoKSBjb25zdDsKKyAg
ICBRV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgY29uc3Q7CiAKIHB1YmxpYyBRX1NMT1RT
OgogICAgICB2b2lkIGxvYWQoY29uc3QgUVVybCYpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCShyZXZpc2lvbiA5NzYwMikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsMTEgQEAgUVdlYk5hdmlnYXRpb25Db250cm9sbGVy
KiBRVG91Y2hXZWJQYWdlOgogICAgIHJldHVybiBkLT5uYXZpZ2F0aW9uQ29udHJvbGxlcjsKIH0K
IAorUVdlYlByZWZlcmVuY2VzKiBRVG91Y2hXZWJQYWdlOjpwcmVmZXJlbmNlcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQtPnBhZ2UtPnByZWZlcmVuY2VzKCk7Cit9CisKIFFUb3VjaFdlYlBhZ2VQ
cml2YXRlOjpRVG91Y2hXZWJQYWdlUHJpdmF0ZShRVG91Y2hXZWJQYWdlKiB2aWV3KQogICAgIDog
cSh2aWV3KQogICAgICwgcGFnZSgwKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xdG91Y2h3ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmgJKHJldmlzaW9uIDk3NjAyKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKIGNsYXNzIFFUb3VjaFdlYlBhZ2VQcml2YXRlOwogY2xhc3MgUVRvdWNo
V2ViUGFnZVByb3h5OwogY2xhc3MgUVdlYk5hdmlnYXRpb25Db250cm9sbGVyOworY2xhc3MgUVdl
YlByZWZlcmVuY2VzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBjbGFzcyBUb3VjaFZpZXdJ
bnRlcmZhY2U7CkBAIC00MSw2ICs0Miw3IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFUb3VjaFdl
YlBhZ2UgOiBwdWIKICAgICBRX1BST1BFUlRZKFFVcmwgdXJsIFJFQUQgdXJsIE5PVElGWSB1cmxD
aGFuZ2VkKQogICAgIFFfUFJPUEVSVFkoaW50IGxvYWRQcm9ncmVzcyBSRUFEIGxvYWRQcm9ncmVz
cyBOT1RJRlkgbG9hZFByb2dyZXNzQ2hhbmdlZCkKICAgICBRX1BST1BFUlRZKFFXZWJOYXZpZ2F0
aW9uQ29udHJvbGxlciogbmF2aWdhdGlvbiBSRUFEIG5hdmlnYXRpb25Db250cm9sbGVyIENPTlNU
QU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcyBS
RUFEIHByZWZlcmVuY2VzIENPTlNUQU5UIEZJTkFMKQogICAgIFFfRU5VTVMoRXJyb3JUeXBlKQog
cHVibGljOgogICAgIGVudW0gRXJyb3JUeXBlIHsKQEAgLTYwLDYgKzYyLDcgQEAgcHVibGljOgog
ICAgIGludCBsb2FkUHJvZ3Jlc3MoKSBjb25zdDsKIAogICAgIFFXZWJOYXZpZ2F0aW9uQ29udHJv
bGxlciogbmF2aWdhdGlvbkNvbnRyb2xsZXIoKSBjb25zdDsKKyAgICBRV2ViUHJlZmVyZW5jZXMq
IHByZWZlcmVuY2VzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFFTR05vZGUqIHVwZGF0ZVBhaW50
Tm9kZShRU0dOb2RlKiBvbGROb2RlLCBVcGRhdGVQYWludE5vZGVEYXRhKik7CiAgICAgdmlydHVh
bCBib29sIGV2ZW50KFFFdmVudCopOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xd2VicHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNzggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJxd2VicHJlZmVyZW5jZXMuaCIKKworI2luY2x1ZGUgIldLUGFnZUdy
b3VwLmgiCisjaW5jbHVkZSAiV0tQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRy
LmgiCisjaW5jbHVkZSAiV0tTdHJpbmdRdC5oIgorI2luY2x1ZGUgInF3ZWJwcmVmZXJlbmNlc19w
LmgiCisKK1FXZWJQcmVmZXJlbmNlcyogUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6Y3JlYXRlUHJl
ZmVyZW5jZXMoV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQoreworICAgIFFXZWJQcmVmZXJl
bmNlcyogcHJlZnMgPSBuZXcgUVdlYlByZWZlcmVuY2VzOworICAgIHByZWZzLT5kLT5yZWYgPSBX
S1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHBhZ2VHcm91cFJlZik7CisgICAgcmV0dXJuIHByZWZz
OworfQorCitib29sIFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OnRlc3RBdHRyaWJ1dGUoUVdlYlBy
ZWZlcmVuY2VzUHJpdmF0ZTo6V2ViQXR0cmlidXRlIGF0dHIpIGNvbnN0Cit7CisgICAgc3dpdGNo
IChhdHRyKSB7CisgICAgY2FzZSBBdXRvTG9hZEltYWdlczoKKyAgICAgICAgcmV0dXJuIFdLUHJl
ZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocmVmKTsKKyAgICBjYXNlIEphdmFz
Y3JpcHRFbmFibGVkOgorICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRF
bmFibGVkKHJlZik7CisgICAgY2FzZSBQbHVnaW5zRW5hYmxlZDoKKyAgICAgICAgcmV0dXJuIFdL
UHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChyZWYpOworICAgIGNhc2UgT2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkOgorICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldE9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChyZWYpOworICAgIGNhc2UgTG9jYWxTdG9y
YWdlRW5hYmxlZDoKKyAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRMb2NhbFN0b3JhZ2VF
bmFibGVkKHJlZik7CisgICAgY2FzZSBYU1NBdWRpdGluZ0VuYWJsZWQ6CisgICAgICAgIHJldHVy
biBXS1ByZWZlcmVuY2VzR2V0WFNTQXVkaXRvckVuYWJsZWQocmVmKTsKKyAgICBjYXNlIFByaXZh
dGVCcm93c2luZ0VuYWJsZWQ6CisgICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChyZWYpOworICAgIGNhc2UgRG5zUHJlZmV0Y2hFbmFibGVkOgorICAg
ICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldEROU1ByZWZldGNoaW5nRW5hYmxlZChyZWYpOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OnNldEF0
dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpXZWJBdHRyaWJ1dGUgYXR0ciwgYm9vbCBl
bmFibGUpCit7CisgICAgc3dpdGNoIChhdHRyKSB7CisgICAgY2FzZSBBdXRvTG9hZEltYWdlczoK
KyAgICAgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShyZWYsIGVu
YWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSmF2YXNjcmlwdEVuYWJsZWQ6CisgICAg
ICAgIFdLUHJlZmVyZW5jZXNTZXRKYXZhU2NyaXB0RW5hYmxlZChyZWYsIGVuYWJsZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUGx1Z2luc0VuYWJsZWQ6CisgICAgICAgIFdLUHJlZmVyZW5j
ZXNTZXRQbHVnaW5zRW5hYmxlZChyZWYsIGVuYWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOgorICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHJlZiwgZW5hYmxlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2NhbFN0b3JhZ2VFbmFibGVkOgorICAgICAgICBXS1By
ZWZlcmVuY2VzU2V0TG9jYWxTdG9yYWdlRW5hYmxlZChyZWYsIGVuYWJsZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgWFNTQXVkaXRpbmdFbmFibGVkOgorICAgICAgICBXS1ByZWZlcmVuY2Vz
U2V0WFNTQXVkaXRvckVuYWJsZWQocmVmLCBlbmFibGUpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFByaXZhdGVCcm93c2luZ0VuYWJsZWQ6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKHJlZiwgZW5hYmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBEbnNQcmVmZXRjaEVuYWJsZWQ6CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRETlNQcmVmZXRj
aGluZ0VuYWJsZWQocmVmLCBlbmFibGUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgUVdlYlByZWZl
cmVuY2VzUHJpdmF0ZTo6c2V0Rm9udEZhbWlseShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpGb250
RmFtaWx5IHdoaWNoLCBjb25zdCBRU3RyaW5nJiBmYW1pbHkpCit7CisgICAgc3dpdGNoICh3aGlj
aCkgeworICAgIGNhc2UgU3RhbmRhcmRGb250OgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3Rh
bmRhcmRGb250RmFtaWx5KHJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhmYW1pbHkpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaXhlZEZvbnQ6CisgICAgICAgIFdLUHJlZmVyZW5j
ZXNTZXRGaXhlZEZvbnRGYW1pbHkocmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKGZhbWls
eSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNlcmlmRm9udDoKKyAgICAgICAgV0tQcmVm
ZXJlbmNlc1NldFNlcmlmRm9udEZhbWlseShyZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmco
ZmFtaWx5KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2Fuc1NlcmlmRm9udDoKKyAgICAg
ICAgV0tQcmVmZXJlbmNlc1NldFNhbnNTZXJpZkZvbnRGYW1pbHkocmVmLCBXS1N0cmluZ0NyZWF0
ZVdpdGhRU3RyaW5nKGZhbWlseSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEN1cnNpdmVG
b250OgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Q3Vyc2l2ZUZvbnRGYW1pbHkocmVmLCBXS1N0
cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKGZhbWlseSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEZhbnRhc3lGb250OgorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RmFudGFzeUZvbnRGYW1pbHko
cmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKGZhbWlseSkpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK1FTdHJpbmcgUVdlYlBy
ZWZlcmVuY2VzUHJpdmF0ZTo6Zm9udEZhbWlseShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpGb250
RmFtaWx5IHdoaWNoKSBjb25zdAoreworICAgIHN3aXRjaCAod2hpY2gpIHsKKyAgICBjYXNlIFN0
YW5kYXJkRm9udDogeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nUmVm
KEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5U3RhbmRhcmRGb250RmFtaWx5KHJlZikpOworICAg
ICAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhzdHJpbmdSZWYuZ2V0KCkpOworICAgIH0K
KyAgICBjYXNlIEZpeGVkRm9udDogeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
c3RyaW5nUmVmKEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5Rml4ZWRGb250RmFtaWx5KHJlZikp
OworICAgICAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhzdHJpbmdSZWYuZ2V0KCkpOwor
ICAgIH0KKyAgICBjYXNlIFNlcmlmRm9udDogeworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gc3RyaW5nUmVmKEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5U2VyaWZGb250RmFtaWx5
KHJlZikpOworICAgICAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhzdHJpbmdSZWYuZ2V0
KCkpOworICAgIH0KKyAgICBjYXNlIFNhbnNTZXJpZkZvbnQ6IHsKKyAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZihBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ29weVNhbnNT
ZXJpZkZvbnRGYW1pbHkocmVmKSk7CisgICAgICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5n
KHN0cmluZ1JlZi5nZXQoKSk7CisgICAgfQorICAgIGNhc2UgQ3Vyc2l2ZUZvbnQ6IHsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZihBZG9wdFdLLCBXS1ByZWZlcmVu
Y2VzQ29weUN1cnNpdmVGb250RmFtaWx5KHJlZikpOworICAgICAgICByZXR1cm4gV0tTdHJpbmdD
b3B5UVN0cmluZyhzdHJpbmdSZWYuZ2V0KCkpOworICAgIH0KKyAgICBjYXNlIEZhbnRhc3lGb250
OiB7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYoQWRvcHRXSywg
V0tQcmVmZXJlbmNlc0NvcHlGYW50YXN5Rm9udEZhbWlseShyZWYpKTsKKyAgICAgICAgcmV0dXJu
IFdLU3RyaW5nQ29weVFTdHJpbmcoc3RyaW5nUmVmLmdldCgpKTsKKyAgICB9CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICB9Cit9CisKK3ZvaWQgUVdlYlByZWZl
cmVuY2VzUHJpdmF0ZTo6c2V0Rm9udFNpemUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6Rm9udFNp
emVUeXBlIHR5cGUsIHVuc2lnbmVkIHNpemUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBNaW5pbXVtRm9udFNpemU6CisgICAgICAgICBXS1ByZWZlcmVuY2VzU2V0TWluaW11bUZv
bnRTaXplKHJlZiwgc2l6ZSk7CisgICAgICAgICBicmVhazsKKyAgICBjYXNlIERlZmF1bHRGb250
U2l6ZToKKyAgICAgICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0Rm9udFNpemUocmVmLCBzaXpl
KTsKKyAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRGVmYXVsdEZpeGVkRm9udFNpemU6CisgICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0RGVmYXVsdEZpeGVkRm9udFNpemUocmVmLCBzaXplKTsKKyAg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KK30KKwordW5zaWduZWQgUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6Zm9udFNpemUo
UVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6Rm9udFNpemVUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNaW5pbXVtRm9udFNpemU6CisgICAgICAgICByZXR1
cm4gV0tQcmVmZXJlbmNlc0dldE1pbmltdW1Gb250U2l6ZShyZWYpOworICAgIGNhc2UgRGVmYXVs
dEZvbnRTaXplOgorICAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREZWZhdWx0Rm9udFNp
emUocmVmKTsKKyAgICBjYXNlIERlZmF1bHRGaXhlZEZvbnRTaXplOgorICAgICAgICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXREZWZhdWx0Rml4ZWRGb250U2l6ZShyZWYpOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCitRV2ViUHJlZmVyZW5jZXM6OlFXZWJQcmVmZXJlbmNlcygpCisgICAgOiBkKG5l
dyBRV2ViUHJlZmVyZW5jZXNQcml2YXRlKQoreworfQorCitRV2ViUHJlZmVyZW5jZXM6On5RV2Vi
UHJlZmVyZW5jZXMoKQoreworICAgIGRlbGV0ZSBkOworfQorCitib29sIFFXZWJQcmVmZXJlbmNl
czo6YXV0b0xvYWRJbWFnZXMoKSBjb25zdAoreworICAgIHJldHVybiBkLT50ZXN0QXR0cmlidXRl
KFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkF1dG9Mb2FkSW1hZ2VzKTsKK30KKwordm9pZCBRV2Vi
UHJlZmVyZW5jZXM6OnNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wgZW5hYmxlKQoreworICAgIGQtPnNl
dEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpBdXRvTG9hZEltYWdlcywgZW5hYmxl
KTsKKyAgICBlbWl0IGF1dG9Mb2FkSW1hZ2VzQ2hhbmdlZCgpOworfQorCitib29sIFFXZWJQcmVm
ZXJlbmNlczo6amF2YXNjcmlwdEVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBkLT50ZXN0
QXR0cmlidXRlKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkphdmFzY3JpcHRFbmFibGVkKTsKK30K
Kwordm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldEphdmFzY3JpcHRFbmFibGVkKGJvb2wgZW5hYmxl
KQoreworICAgIGQtPnNldEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpKYXZhc2Ny
aXB0RW5hYmxlZCwgZW5hYmxlKTsKKyAgICBlbWl0IGphdmFzY3JpcHRFbmFibGVkQ2hhbmdlZCgp
OworfQorCitib29sIFFXZWJQcmVmZXJlbmNlczo6cGx1Z2luc0VuYWJsZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT50ZXN0QXR0cmlidXRlKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OlBsdWdp
bnNFbmFibGVkKTsKK30KKwordm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldFBsdWdpbnNFbmFibGVk
KGJvb2wgZW5hYmxlKQoreworICAgIGQtPnNldEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2
YXRlOjpQbHVnaW5zRW5hYmxlZCwgZW5hYmxlKTsKKyAgICBlbWl0IHBsdWdpbnNFbmFibGVkQ2hh
bmdlZCgpOworfQorCitib29sIFFXZWJQcmVmZXJlbmNlczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dGVzdEF0dHJpYnV0ZShRV2Vi
UHJlZmVyZW5jZXNQcml2YXRlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOwor
fQorCit2b2lkIFFXZWJQcmVmZXJlbmNlczo6c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVF
bmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIGQtPnNldEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5j
ZXNQcml2YXRlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQsIGVuYWJsZSk7Cisg
ICAgZW1pdCBvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWRDaGFuZ2VkKCk7Cit9CisK
K2Jvb2wgUVdlYlByZWZlcmVuY2VzOjpsb2NhbFN0b3JhZ2VFbmFibGVkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZC0+dGVzdEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpMb2NhbFN0
b3JhZ2VFbmFibGVkKTsKK30KKwordm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldExvY2FsU3RvcmFn
ZUVuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAgZC0+c2V0QXR0cmlidXRlKFFXZWJQcmVmZXJl
bmNlc1ByaXZhdGU6OkxvY2FsU3RvcmFnZUVuYWJsZWQsIGVuYWJsZSk7CisgICAgZW1pdCBsb2Nh
bFN0b3JhZ2VFbmFibGVkQ2hhbmdlZCgpOworfQorCitib29sIFFXZWJQcmVmZXJlbmNlczo6eHNz
QXVkaXRpbmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+dGVzdEF0dHJpYnV0ZShR
V2ViUHJlZmVyZW5jZXNQcml2YXRlOjpYU1NBdWRpdGluZ0VuYWJsZWQpOworfQorCit2b2lkIFFX
ZWJQcmVmZXJlbmNlczo6c2V0WHNzQXVkaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAg
IGQtPnNldEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpYU1NBdWRpdGluZ0VuYWJs
ZWQsIGVuYWJsZSk7CisgICAgZW1pdCB4c3NBdWRpdGluZ0VuYWJsZWRDaGFuZ2VkKCk7Cit9CisK
K2Jvb2wgUVdlYlByZWZlcmVuY2VzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZC0+dGVzdEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpQcml2
YXRlQnJvd3NpbmdFbmFibGVkKTsKK30KKwordm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAgZC0+c2V0QXR0cmlidXRlKFFX
ZWJQcmVmZXJlbmNlc1ByaXZhdGU6OlByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGVuYWJsZSk7Cisg
ICAgZW1pdCBwcml2YXRlQnJvd3NpbmdFbmFibGVkQ2hhbmdlZCgpOworfQorCitib29sIFFXZWJQ
cmVmZXJlbmNlczo6ZG5zUHJlZmV0Y2hFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+
dGVzdEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpEbnNQcmVmZXRjaEVuYWJsZWQp
OworfQorCit2b2lkIFFXZWJQcmVmZXJlbmNlczo6c2V0RG5zUHJlZmV0Y2hFbmFibGVkKGJvb2wg
ZW5hYmxlKQoreworICAgIGQtPnNldEF0dHJpYnV0ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpE
bnNQcmVmZXRjaEVuYWJsZWQsIGVuYWJsZSk7CisgICAgZW1pdCBkbnNQcmVmZXRjaEVuYWJsZWRD
aGFuZ2VkKCk7Cit9CisKK1FTdHJpbmcgUVdlYlByZWZlcmVuY2VzOjpzdGFuZGFyZEZvbnRGYW1p
bHkoKSBjb25zdAoreworICAgIHJldHVybiBkLT5mb250RmFtaWx5KFFXZWJQcmVmZXJlbmNlc1By
aXZhdGU6OlN0YW5kYXJkRm9udCk7Cit9CisKK3ZvaWQgUVdlYlByZWZlcmVuY2VzOjpzZXRTdGFu
ZGFyZEZvbnRGYW1pbHkoY29uc3QgUVN0cmluZyYgZmFtaWx5KQoreworICAgIGQtPnNldEZvbnRG
YW1pbHkoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6U3RhbmRhcmRGb250LCBmYW1pbHkpOworICAg
IGVtaXQgc3RhbmRhcmRGb250RmFtaWx5Q2hhbmdlZCgpOworfQorCitRU3RyaW5nIFFXZWJQcmVm
ZXJlbmNlczo6Zml4ZWRGb250RmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+Zm9udEZh
bWlseShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpGaXhlZEZvbnQpOworfQorCit2b2lkIFFXZWJQ
cmVmZXJlbmNlczo6c2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IFFTdHJpbmcmIGZhbWlseSkKK3sK
KyAgICBkLT5zZXRGb250RmFtaWx5KFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkZpeGVkRm9udCwg
ZmFtaWx5KTsKKyAgICBlbWl0IGZpeGVkRm9udEZhbWlseUNoYW5nZWQoKTsKK30KKworUVN0cmlu
ZyBRV2ViUHJlZmVyZW5jZXM6OnNlcmlmRm9udEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGQtPmZvbnRGYW1pbHkoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6U2VyaWZGb250KTsKK30KKwor
dm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldFNlcmlmRm9udEZhbWlseShjb25zdCBRU3RyaW5nJiBm
YW1pbHkpCit7CisgICAgZC0+c2V0Rm9udEZhbWlseShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpT
ZXJpZkZvbnQsIGZhbWlseSk7CisgICAgZW1pdCBzZXJpZkZvbnRGYW1pbHlDaGFuZ2VkKCk7Cit9
CisKK1FTdHJpbmcgUVdlYlByZWZlcmVuY2VzOjpzYW5zU2VyaWZGb250RmFtaWx5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZC0+Zm9udEZhbWlseShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpTYW5z
U2VyaWZGb250KTsKK30KKwordm9pZCBRV2ViUHJlZmVyZW5jZXM6OnNldFNhbnNTZXJpZkZvbnRG
YW1pbHkoY29uc3QgUVN0cmluZyYgZmFtaWx5KQoreworICAgIGQtPnNldEZvbnRGYW1pbHkoUVdl
YlByZWZlcmVuY2VzUHJpdmF0ZTo6U2Fuc1NlcmlmRm9udCwgZmFtaWx5KTsKKyAgICBlbWl0IHNh
bnNTZXJpZkZvbnRGYW1pbHlDaGFuZ2VkKCk7Cit9CisKK1FTdHJpbmcgUVdlYlByZWZlcmVuY2Vz
OjpjdXJzaXZlRm9udEZhbWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmZvbnRGYW1pbHko
UVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6Q3Vyc2l2ZUZvbnQpOworfQorCit2b2lkIFFXZWJQcmVm
ZXJlbmNlczo6c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY29uc3QgUVN0cmluZyYgZmFtaWx5KQorewor
ICAgIGQtPnNldEZvbnRGYW1pbHkoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6Q3Vyc2l2ZUZvbnQs
IGZhbWlseSk7CisgICAgZW1pdCBjdXJzaXZlRm9udEZhbWlseUNoYW5nZWQoKTsKK30KKworUVN0
cmluZyBRV2ViUHJlZmVyZW5jZXM6OmZhbnRhc3lGb250RmFtaWx5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZC0+Zm9udEZhbWlseShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpGYW50YXN5Rm9udCk7
Cit9CisKK3ZvaWQgUVdlYlByZWZlcmVuY2VzOjpzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBR
U3RyaW5nJiBmYW1pbHkpCit7CisgICAgZC0+c2V0Rm9udEZhbWlseShRV2ViUHJlZmVyZW5jZXNQ
cml2YXRlOjpGYW50YXN5Rm9udCwgZmFtaWx5KTsKKyAgICBlbWl0IGZhbnRhc3lGb250RmFtaWx5
Q2hhbmdlZCgpOworfQorCit1bnNpZ25lZCBRV2ViUHJlZmVyZW5jZXM6Om1pbmltdW1Gb250U2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmZvbnRTaXplKFFXZWJQcmVmZXJlbmNlc1ByaXZh
dGU6Ok1pbmltdW1Gb250U2l6ZSk7Cit9CisKK3ZvaWQgUVdlYlByZWZlcmVuY2VzOjpzZXRNaW5p
bXVtRm9udFNpemUodW5zaWduZWQgc2l6ZSkKK3sKKyAgICBkLT5zZXRGb250U2l6ZShRV2ViUHJl
ZmVyZW5jZXNQcml2YXRlOjpNaW5pbXVtRm9udFNpemUsIHNpemUpOworICAgIGVtaXQgbWluaW11
bUZvbnRTaXplQ2hhbmdlZCgpOworfQorCit1bnNpZ25lZCBRV2ViUHJlZmVyZW5jZXM6OmRlZmF1
bHRGb250U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmZvbnRTaXplKFFXZWJQcmVmZXJl
bmNlc1ByaXZhdGU6OkRlZmF1bHRGb250U2l6ZSk7Cit9CisKK3ZvaWQgUVdlYlByZWZlcmVuY2Vz
OjpzZXREZWZhdWx0Rm9udFNpemUodW5zaWduZWQgc2l6ZSkKK3sKKyAgICBkLT5zZXRGb250U2l6
ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpEZWZhdWx0Rm9udFNpemUsIHNpemUpOworICAgIGVt
aXQgZGVmYXVsdEZvbnRTaXplQ2hhbmdlZCgpOworfQorCit1bnNpZ25lZCBRV2ViUHJlZmVyZW5j
ZXM6OmRlZmF1bHRGaXhlZEZvbnRTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZC0+Zm9udFNp
emUoUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTo6RGVmYXVsdEZpeGVkRm9udFNpemUpOworfQorCit2
b2lkIFFXZWJQcmVmZXJlbmNlczo6c2V0RGVmYXVsdEZpeGVkRm9udFNpemUodW5zaWduZWQgc2l6
ZSkKK3sKKyAgICBkLT5zZXRGb250U2l6ZShRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpEZWZhdWx0
Rml4ZWRGb250U2l6ZSwgc2l6ZSk7CisgICAgZW1pdCBkZWZhdWx0Rml4ZWRGb250U2l6ZUNoYW5n
ZWQoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZl
cmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2VicHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM1IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIHF3ZWJwcmVmZXJlbmNlc19oCisjZGVmaW5l
IHF3ZWJwcmVmZXJlbmNlc19oCisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNs
dWRlIDxRdENvcmUvUU9iamVjdD4KKworY2xhc3MgUVdlYlByZWZlcmVuY2VzUHJpdmF0ZTsKKwor
Y2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYlByZWZlcmVuY2VzIDogcHVibGljIFFPYmplY3Qgewor
ICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUV9QUk9QRVJUWShib29sIGF1dG9Mb2FkSW1hZ2Vz
IFJFQUQgYXV0b0xvYWRJbWFnZXMgV1JJVEUgc2V0QXV0b0xvYWRJbWFnZXMgTk9USUZZIGF1dG9M
b2FkSW1hZ2VzQ2hhbmdlZCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKGJvb2wgamF2YXNjcmlwdEVu
YWJsZWQgUkVBRCBqYXZhc2NyaXB0RW5hYmxlZCBXUklURSBzZXRKYXZhc2NyaXB0RW5hYmxlZCBO
T1RJRlkgamF2YXNjcmlwdEVuYWJsZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoYm9v
bCBwbHVnaW5zRW5hYmxlZCBSRUFEIHBsdWdpbnNFbmFibGVkIFdSSVRFIHNldFBsdWdpbnNFbmFi
bGVkIE5PVElGWSBwbHVnaW5zRW5hYmxlZENoYW5nZWQgRklOQUwpCisgICAgUV9QUk9QRVJUWShi
b29sIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCBSRUFEIG9mZmxpbmVXZWJBcHBs
aWNhdGlvbkNhY2hlRW5hYmxlZCBXUklURSBzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQgTk9USUZZIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZENoYW5nZWQgRklO
QUwpCisgICAgUV9QUk9QRVJUWShib29sIGxvY2FsU3RvcmFnZUVuYWJsZWQgUkVBRCBsb2NhbFN0
b3JhZ2VFbmFibGVkIFdSSVRFIHNldExvY2FsU3RvcmFnZUVuYWJsZWQgTk9USUZZIGxvY2FsU3Rv
cmFnZUVuYWJsZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoYm9vbCB4c3NBdWRpdGlu
Z0VuYWJsZWQgUkVBRCB4c3NBdWRpdGluZ0VuYWJsZWQgV1JJVEUgc2V0WHNzQXVkaXRpbmdFbmFi
bGVkIE5PVElGWSB4c3NBdWRpdGluZ0VuYWJsZWRDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVS
VFkoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkIFJFQUQgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCBXUklURSBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkIE5PVElGWSBwcml2YXRlQnJvd3NpbmdF
bmFibGVkQ2hhbmdlZCBGSU5BTCkKKyAgICBRX1BST1BFUlRZKGJvb2wgZG5zUHJlZmV0Y2hFbmFi
bGVkIFJFQUQgZG5zUHJlZmV0Y2hFbmFibGVkIFdSSVRFIHNldERuc1ByZWZldGNoRW5hYmxlZCBO
T1RJRlkgZG5zUHJlZmV0Y2hFbmFibGVkQ2hhbmdlZCBGSU5BTCkKKworICAgIFFfUFJPUEVSVFko
UVN0cmluZyBzdGFuZGFyZEZvbnRGYW1pbHkgUkVBRCBzdGFuZGFyZEZvbnRGYW1pbHkgV1JJVEUg
c2V0U3RhbmRhcmRGb250RmFtaWx5IE5PVElGWSBzdGFuZGFyZEZvbnRGYW1pbHlDaGFuZ2VkIEZJ
TkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBmaXhlZEZvbnRGYW1pbHkgUkVBRCBmaXhlZEZv
bnRGYW1pbHkgV1JJVEUgc2V0Rml4ZWRGb250RmFtaWx5IE5PVElGWSBmaXhlZEZvbnRGYW1pbHlD
aGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBzZXJpZkZvbnRGYW1pbHkgUkVB
RCBzZXJpZkZvbnRGYW1pbHkgV1JJVEUgc2V0U2VyaWZGb250RmFtaWx5IE5PVElGWSBzZXJpZkZv
bnRGYW1pbHlDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBzYW5zU2VyaWZG
b250RmFtaWx5IFJFQUQgc2Fuc1NlcmlmRm9udEZhbWlseSBXUklURSBzZXRTYW5zU2VyaWZGb250
RmFtaWx5IE5PVElGWSBzYW5zU2VyaWZGb250RmFtaWx5Q2hhbmdlZCBGSU5BTCkKKyAgICBRX1BS
T1BFUlRZKFFTdHJpbmcgY3Vyc2l2ZUZvbnRGYW1pbHkgUkVBRCBjdXJzaXZlRm9udEZhbWlseSBX
UklURSBzZXRDdXJzaXZlRm9udEZhbWlseSBOT1RJRlkgY3Vyc2l2ZUZvbnRGYW1pbHlDaGFuZ2Vk
IEZJTkFMKQorICAgIFFfUFJPUEVSVFkoUVN0cmluZyBmYW50YXN5Rm9udEZhbWlseSBSRUFEIGZh
bnRhc3lGb250RmFtaWx5IFdSSVRFIHNldEZhbnRhc3lGb250RmFtaWx5IE5PVElGWSBmYW50YXN5
Rm9udEZhbWlseUNoYW5nZWQgRklOQUwpCisKKyAgICBRX1BST1BFUlRZKHVuc2lnbmVkIG1pbmlt
dW1Gb250U2l6ZSBSRUFEIG1pbmltdW1Gb250U2l6ZSBXUklURSBzZXRNaW5pbXVtRm9udFNpemUg
Tk9USUZZIG1pbmltdW1Gb250U2l6ZUNoYW5nZWQgRklOQUwpCisgICAgUV9QUk9QRVJUWSh1bnNp
Z25lZCBkZWZhdWx0Rm9udFNpemUgUkVBRCBkZWZhdWx0Rm9udFNpemUgV1JJVEUgc2V0RGVmYXVs
dEZvbnRTaXplIE5PVElGWSBkZWZhdWx0Rm9udFNpemVDaGFuZ2VkIEZJTkFMKQorICAgIFFfUFJP
UEVSVFkodW5zaWduZWQgZGVmYXVsdEZpeGVkRm9udFNpemUgUkVBRCBkZWZhdWx0Rml4ZWRGb250
U2l6ZSBXUklURSBzZXREZWZhdWx0Rml4ZWRGb250U2l6ZSBOT1RJRlkgZGVmYXVsdEZpeGVkRm9u
dFNpemVDaGFuZ2VkIEZJTkFMKQorCisgICAgYm9vbCBhdXRvTG9hZEltYWdlcygpIGNvbnN0Owor
ICAgIHZvaWQgc2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpOworCisgICAgYm9vbCBqYXZh
c2NyaXB0RW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0SmF2YXNjcmlwdEVuYWJsZWQoYm9v
bCBlbmFibGUpOworCisgICAgYm9vbCBwbHVnaW5zRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQg
c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBlbmFibGUpOworCisgICAgYm9vbCBvZmZsaW5lV2ViQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldE9mZmxpbmVXZWJBcHBs
aWNhdGlvbkNhY2hlRW5hYmxlZChib29sIGVuYWJsZSk7CisKKyAgICBib29sIGxvY2FsU3RvcmFn
ZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCBl
bmFibGUpOworCisgICAgYm9vbCB4c3NBdWRpdGluZ0VuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lk
IHNldFhzc0F1ZGl0aW5nRW5hYmxlZChib29sIGVuYWJsZSk7CisKKyAgICBib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoYm9vbCBlbmFibGUpOworCisgICAgYm9vbCBkbnNQcmVmZXRjaEVuYWJsZWQoKSBjb25zdDsK
KyAgICB2b2lkIHNldERuc1ByZWZldGNoRW5hYmxlZChib29sIGVuYWJsZSk7CisKKyAgICBRU3Ry
aW5nIHN0YW5kYXJkRm9udEZhbWlseSgpIGNvbnN0OworICAgIHZvaWQgc2V0U3RhbmRhcmRGb250
RmFtaWx5KGNvbnN0IFFTdHJpbmcmIGZhbWlseSk7CisKKyAgICBRU3RyaW5nIGZpeGVkRm9udEZh
bWlseSgpIGNvbnN0OworICAgIHZvaWQgc2V0Rml4ZWRGb250RmFtaWx5KGNvbnN0IFFTdHJpbmcm
IGZhbWlseSk7CisKKyAgICBRU3RyaW5nIHNlcmlmRm9udEZhbWlseSgpIGNvbnN0OworICAgIHZv
aWQgc2V0U2VyaWZGb250RmFtaWx5KGNvbnN0IFFTdHJpbmcmIGZhbWlseSk7CisKKyAgICBRU3Ry
aW5nIHNhbnNTZXJpZkZvbnRGYW1pbHkoKSBjb25zdDsKKyAgICB2b2lkIHNldFNhbnNTZXJpZkZv
bnRGYW1pbHkoY29uc3QgUVN0cmluZyYgZmFtaWx5KTsKKworICAgIFFTdHJpbmcgY3Vyc2l2ZUZv
bnRGYW1pbHkoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnNpdmVGb250RmFtaWx5KGNvbnN0IFFT
dHJpbmcmIGZhbWlseSk7CisKKyAgICBRU3RyaW5nIGZhbnRhc3lGb250RmFtaWx5KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShjb25zdCBRU3RyaW5nJiBmYW1pbHkpOwor
CisgICAgdW5zaWduZWQgbWluaW11bUZvbnRTaXplKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNaW5p
bXVtRm9udFNpemUodW5zaWduZWQgc2l6ZSk7CisKKyAgICB1bnNpZ25lZCBkZWZhdWx0Rm9udFNp
emUoKSBjb25zdDsKKyAgICB2b2lkIHNldERlZmF1bHRGb250U2l6ZSh1bnNpZ25lZCBzaXplKTsK
KworICAgIHVuc2lnbmVkIGRlZmF1bHRGaXhlZEZvbnRTaXplKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXREZWZhdWx0Rml4ZWRGb250U2l6ZSh1bnNpZ25lZCBzaXplKTsKKworUV9TSUdOQUxTOgorICAg
IHZvaWQgYXV0b0xvYWRJbWFnZXNDaGFuZ2VkKCk7CisgICAgdm9pZCBwbHVnaW5zRW5hYmxlZENo
YW5nZWQoKTsKKyAgICB2b2lkIGphdmFzY3JpcHRFbmFibGVkQ2hhbmdlZCgpOworICAgIHZvaWQg
b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkQ2hhbmdlZCgpOworICAgIHZvaWQgbG9j
YWxTdG9yYWdlRW5hYmxlZENoYW5nZWQoKTsKKyAgICB2b2lkIHhzc0F1ZGl0aW5nRW5hYmxlZENo
YW5nZWQoKTsKKyAgICB2b2lkIHByaXZhdGVCcm93c2luZ0VuYWJsZWRDaGFuZ2VkKCk7CisgICAg
dm9pZCBkbnNQcmVmZXRjaEVuYWJsZWRDaGFuZ2VkKCk7CisKKyAgICB2b2lkIHN0YW5kYXJkRm9u
dEZhbWlseUNoYW5nZWQoKTsKKyAgICB2b2lkIGZpeGVkRm9udEZhbWlseUNoYW5nZWQoKTsKKyAg
ICB2b2lkIHNlcmlmRm9udEZhbWlseUNoYW5nZWQoKTsKKyAgICB2b2lkIHNhbnNTZXJpZkZvbnRG
YW1pbHlDaGFuZ2VkKCk7CisgICAgdm9pZCBjdXJzaXZlRm9udEZhbWlseUNoYW5nZWQoKTsKKyAg
ICB2b2lkIGZhbnRhc3lGb250RmFtaWx5Q2hhbmdlZCgpOworCisgICAgdm9pZCBtaW5pbXVtRm9u
dFNpemVDaGFuZ2VkKCk7CisgICAgdm9pZCBkZWZhdWx0Rm9udFNpemVDaGFuZ2VkKCk7CisgICAg
dm9pZCBkZWZhdWx0Rml4ZWRGb250U2l6ZUNoYW5nZWQoKTsKKworcHJpdmF0ZToKKyAgICBRX0RJ
U0FCTEVfQ09QWShRV2ViUHJlZmVyZW5jZXMpCisKKyAgICBRV2ViUHJlZmVyZW5jZXMoKTsKKyAg
ICB+UVdlYlByZWZlcmVuY2VzKCk7CisKKyAgICBRV2ViUHJlZmVyZW5jZXNQcml2YXRlICpkOwor
CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU7Cit9OworCisjZW5kaWYg
Ly8gcXdlYnByZWZlcmVuY2VzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYnByZWZlcmVuY2VzX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJlbmNlc19wLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJXS1ByZWZl
cmVuY2VzLmgiCisKK2NsYXNzIFFXZWJQcmVmZXJlbmNlc1ByaXZhdGUgeworcHVibGljOgorCisg
ICAgZW51bSBXZWJBdHRyaWJ1dGUgeworICAgICAgICBBdXRvTG9hZEltYWdlcywKKyAgICAgICAg
SmF2YXNjcmlwdEVuYWJsZWQsCisgICAgICAgIFBsdWdpbnNFbmFibGVkLAorICAgICAgICBPZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQsCisgICAgICAgIExvY2FsU3RvcmFnZUVuYWJs
ZWQsCisgICAgICAgIFhTU0F1ZGl0aW5nRW5hYmxlZCwKKyAgICAgICAgRnJhbWVGbGF0dGVuaW5n
RW5hYmxlZCwKKyAgICAgICAgUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwKKyAgICAgICAgRG5zUHJl
ZmV0Y2hFbmFibGVkCisgICAgfTsKKworICAgIGVudW0gRm9udEZhbWlseSB7CisgICAgICAgIFN0
YW5kYXJkRm9udCwKKyAgICAgICAgRml4ZWRGb250LAorICAgICAgICBTZXJpZkZvbnQsCisgICAg
ICAgIFNhbnNTZXJpZkZvbnQsCisgICAgICAgIEN1cnNpdmVGb250LAorICAgICAgICBGYW50YXN5
Rm9udAorICAgIH07CisKKyAgICBlbnVtIEZvbnRTaXplVHlwZSB7CisgICAgICAgIE1pbmltdW1G
b250U2l6ZSwKKyAgICAgICAgRGVmYXVsdEZvbnRTaXplLAorICAgICAgICBEZWZhdWx0Rml4ZWRG
b250U2l6ZQorICAgIH07CisKKyAgICBzdGF0aWMgUVdlYlByZWZlcmVuY2VzKiBjcmVhdGVQcmVm
ZXJlbmNlcyhXS1BhZ2VHcm91cFJlZik7CisKKyAgICB2b2lkIHNldEF0dHJpYnV0ZShXZWJBdHRy
aWJ1dGUgYXR0ciwgYm9vbCBlbmFibGUpOworICAgIGJvb2wgdGVzdEF0dHJpYnV0ZShXZWJBdHRy
aWJ1dGUgYXR0cikgY29uc3Q7CisKKyAgICB2b2lkIHNldEZvbnRGYW1pbHkoRm9udEZhbWlseSB3
aGljaCwgY29uc3QgUVN0cmluZyYgZmFtaWx5KTsKKyAgICBRU3RyaW5nIGZvbnRGYW1pbHkoRm9u
dEZhbWlseSB3aGljaCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEZvbnRTaXplKEZvbnRTaXplVHlw
ZSB0eXBlLCB1bnNpZ25lZCBzaXplKTsKKyAgICB1bnNpZ25lZCBmb250U2l6ZShGb250U2l6ZVR5
cGUgdHlwZSkgY29uc3Q7CisKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHJlZjsKK307CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FtbHBsdWdpbi9wbHVnaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcW1scGx1Z2luL3BsdWdp
bi5jcHAJKHJldmlzaW9uIDk3NjAyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xbWxwbHVnaW4vcGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAog
I2luY2x1ZGUgInF0b3VjaHdlYnBhZ2UuaCIKICNpbmNsdWRlICJxdG91Y2h3ZWJ2aWV3LmgiCiAj
aW5jbHVkZSAicXdlYm5hdmlnYXRpb25jb250cm9sbGVyLmgiCisjaW5jbHVkZSAicXdlYnByZWZl
cmVuY2VzLmgiCiAKICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FkZWNsYXJhdGl2ZS5oPgogI2lu
Y2x1ZGUgPFF0RGVjbGFyYXRpdmUvcWRlY2xhcmF0aXZlZXh0ZW5zaW9ucGx1Z2luLmg+CkBAIC0z
Nyw2ICszOCw3IEBAIHB1YmxpYzoKICAgICAgICAgcW1sUmVnaXN0ZXJUeXBlPFFEZXNrdG9wV2Vi
Vmlldz4odXJpLCA1LCAwLCAiRGVza3RvcFdlYlZpZXciKTsKICAgICAgICAgcW1sUmVnaXN0ZXJU
eXBlPFFUb3VjaFdlYlZpZXc+KHVyaSwgNSwgMCwgIlRvdWNoV2ViVmlldyIpOwogICAgICAgICBx
bWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXI+KHVyaSwg
NSwgMCwgIk5hdmlnYXRpb25Db250cm9sbGVyIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUg
c2VwYXJhdGUgaW5zdGFuY2Ugb2YgTmF2aWdhdGlvbkNvbnRyb2xsZXIiKSk7CisgICAgICAgIHFt
bFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFXZWJQcmVmZXJlbmNlcz4odXJpLCA1LCAwLCAiV2Vi
UHJlZmVyZW5jZXMiLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5j
ZSBvZiBXZWJQcmVmZXJlbmNlcyIpKTsKICAgICAgICAgcW1sUmVnaXN0ZXJVbmNyZWF0YWJsZVR5
cGU8UVRvdWNoV2ViUGFnZT4odXJpLCA1LCAwLCAiVG91Y2hXZWJQYWdlIiwgUU9iamVjdDo6dHIo
IkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2YgVG91Y2hXZWJQYWdlLCB1c2UgVG91
Y2hXZWJWaWV3IikpOwogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRTmV0d29y
a1JlcGx5Pih1cmksIDUsIDAsICJOZXR3b3JrUmVwbHkiLCBRT2JqZWN0Ojp0cigiQ2Fubm90IGNy
ZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBOZXR3b3JrUmVwbHkiKSk7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wV2Vi
Vmlldy90c3RfcHJlZmVyZW5jZXMucW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0X3ByZWZlcmVu
Y2VzLnFtbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcW1sdGVzdHMvRGVza3RvcFdlYlZpZXcvdHN0X3ByZWZlcmVuY2VzLnFtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4NCBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0
IDEuMAoraW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCA1LjAKKworRGVza3RvcFdlYlZpZXcg
eworICAgIGlkOiB3ZWJWaWV3CisKKyAgICBwcmVmZXJlbmNlcyB7CisgICAgICAgIGphdmFzY3Jp
cHRFbmFibGVkOiB0cnVlCisgICAgICAgIGxvY2FsU3RvcmFnZUVuYWJsZWQ6IHRydWUKKyAgICAg
ICAgcGx1Z2luc0VuYWJsZWQ6IHRydWUKKyAgICB9CisKKyAgICBTaWduYWxTcHkgeworICAgICAg
ICBpZDogc3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAi
bG9hZFN1Y2NlZWRlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIG5hbWU6ICJE
ZXNrdG9wV2ViVmlld1ByZWZlcmVuY2VzIgorCisgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7Cisg
ICAgICAgICAgICB3ZWJWaWV3LnByZWZlcmVuY2VzLmphdmFzY3JpcHRFbmFibGVkID0gdHJ1ZQor
ICAgICAgICAgICAgd2ViVmlldy5wcmVmZXJlbmNlcy5sb2NhbFN0b3JhZ2VFbmFibGVkID0gdHJ1
ZQorICAgICAgICAgICAgd2ViVmlldy5wcmVmZXJlbmNlcy5wbHVnaW5zRW5hYmxlZCA9IHRydWUK
KyAgICAgICAgICAgIHNweS5jbGVhcigpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0
ZXN0X2phdmFzY3JpcHRFbmFibGVkKCkgeworICAgICAgICAgICAgd2ViVmlldy5wcmVmZXJlbmNl
cy5qYXZhc2NyaXB0RW5hYmxlZCA9IHRydWUKKyAgICAgICAgICAgIHZhciB0ZXN0VXJsID0gUXQu
cmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9qYXZhc2NyaXB0Lmh0bWwiKQorICAgICAgICAgICAgd2Vi
Vmlldy5sb2FkKHRlc3RVcmwpCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBj
b21wYXJlKHdlYlZpZXcudGl0bGUsICJOZXcgVGl0bGUiKQorICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdF9qYXZhc2NyaXB0RGlzYWJsZWQoKSB7CisgICAgICAgICAgICB3ZWJWaWV3
LnByZWZlcmVuY2VzLmphdmFzY3JpcHRFbmFibGVkID0gZmFsc2UKKyAgICAgICAgICAgIHZhciB0
ZXN0VXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9qYXZhc2NyaXB0Lmh0bWwiKQorICAg
ICAgICAgICAgd2ViVmlldy5sb2FkKHRlc3RVcmwpCisgICAgICAgICAgICBzcHkud2FpdCgpCisg
ICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJPcmlnaW5hbCBUaXRsZSIpCisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2xvY2FsU3RvcmFnZURpc2FibGVkKCkgewor
ICAgICAgICAgICAgd2ViVmlldy5wcmVmZXJlbmNlcy5sb2NhbFN0b3JhZ2VFbmFibGVkID0gZmFs
c2UKKyAgICAgICAgICAgIHZhciB0ZXN0VXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9s
b2NhbFN0b3JhZ2UuaHRtbCIpCisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQodGVzdFVybCkKKyAg
ICAgICAgICAgIHNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwg
Ik9yaWdpbmFsIFRpdGxlIikKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfbG9j
YWxTdG9yYWdlRW5hYmxlZCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcucHJlZmVyZW5jZXMubG9j
YWxTdG9yYWdlRW5hYmxlZCA9IHRydWUKKyAgICAgICAgICAgIHZhciB0ZXN0VXJsID0gUXQucmVz
b2x2ZWRVcmwoIi4uL2NvbW1vbi9sb2NhbFN0b3JhZ2UuaHRtbCIpCisgICAgICAgICAgICB3ZWJW
aWV3LmxvYWQodGVzdFVybCkKKyAgICAgICAgICAgIHNweS53YWl0KCkKKyAgICAgICAgICAgIHNw
eS5jbGVhcigpCisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQodGVzdFVybCkKKyAgICAgICAgICAg
IHNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIk5ldyBUaXRs
ZSIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3BsdWdpbnNEaXNhYmxlZCgp
IHsKKyAgICAgICAgICAgIHdlYlZpZXcucHJlZmVyZW5jZXMucGx1Z2luc0VuYWJsZWQgPSBmYWxz
ZQorICAgICAgICAgICAgdmFyIHRlc3RVcmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Bs
dWdpbnMuaHRtbCIpCisgICAgICAgICAgICB3ZWJWaWV3LmxvYWQodGVzdFVybCkKKyAgICAgICAg
ICAgIHNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIlBsdWdp
bnMgTm90IExvYWRlZCIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3BsdWdp
bnNFbmFibGVkKCkgeworICAgICAgICAgICAgd2ViVmlldy5wcmVmZXJlbmNlcy5wbHVnaW5zRW5h
YmxlZCA9IHRydWUKKyAgICAgICAgICAgIHZhciB0ZXN0VXJsID0gUXQucmVzb2x2ZWRVcmwoIi4u
L2NvbW1vbi9wbHVnaW5zLmh0bWwiKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkKHRlc3RVcmwp
CisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAgICAgICAgICBzcHkuY2xlYXIoKQorICAgICAg
ICAgICAgd2ViVmlldy5sb2FkKHRlc3RVcmwpCisgICAgICAgICAgICBzcHkud2FpdCgpCisgICAg
ICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJPcmlnaW5hbCBUaXRsZSIpCisgICAgICAg
IH0KKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL2NvbW1vbi9qYXZhc2NyaXB0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vamF2YXNjcmlwdC5o
dG1sCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9jb21tb24vamF2YXNjcmlwdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDggQEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPk9yaWdpbmFsIFRpdGxlPC90aXRsZT48L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2RvY3VtZW50LnRpdGxl
ID0gIk5ldyBUaXRsZSI7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL2xvY2FsU3Rv
cmFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcW1sdGVzdHMvY29tbW9uL2xvY2FsU3RvcmFnZS5odG1sCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vbG9j
YWxTdG9yYWdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVh
ZD48dGl0bGU+T3JpZ2luYWwgVGl0bGU8L3RpdGxlPjwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZG9jdW1lbnQudGl0bGUgPSBsb2NhbFN0b3JhZ2UuZ2V0
SXRlbSgndGl0bGUnKTsKK2xvY2FsU3RvcmFnZS5zZXRJdGVtKCd0aXRsZScsICdOZXcgVGl0bGUn
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA5NzYwMikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJRdFdlYlBhZ2VQcm94eS5oIgogCiAjaW5j
bHVkZSAicXdlYmVycm9yLmgiCi0jaW5jbHVkZSAicXdrcHJlZmVyZW5jZXNfcC5oIgorI2luY2x1
ZGUgInF3ZWJwcmVmZXJlbmNlc19wLmgiCiAKICNpbmNsdWRlICJDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSAicXdraGlzdG9yeS5oIgpAQCAtNDkyLDExICs0OTIsMTEgQEAgdm9pZCBRdFdlYlBhZ2VQ
cm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICBtX3ZpZXdJbnRlcmZhY2UtPnByb2Nlc3NEaWRD
cmFzaCgpOwogfQogCi1RV0tQcmVmZXJlbmNlcyogUXRXZWJQYWdlUHJveHk6OnByZWZlcmVuY2Vz
KCkgY29uc3QKK1FXZWJQcmVmZXJlbmNlcyogUXRXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fcHJlZmVyZW5jZXMpIHsKICAgICAgICAgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmID0gV0tQYWdlR2V0UGFnZUdyb3VwKHBhZ2VSZWYoKSk7Ci0gICAgICAg
IG1fcHJlZmVyZW5jZXMgPSBRV0tQcmVmZXJlbmNlc1ByaXZhdGU6OmNyZWF0ZVByZWZlcmVuY2Vz
KHBhZ2VHcm91cFJlZik7CisgICAgICAgIG1fcHJlZmVyZW5jZXMgPSBRV2ViUHJlZmVyZW5jZXNQ
cml2YXRlOjpjcmVhdGVQcmVmZXJlbmNlcyhwYWdlR3JvdXBSZWYpOwogICAgIH0KIAogICAgIHJl
dHVybiBtX3ByZWZlcmVuY2VzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1F0V2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDk3NjAyKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDgg
QEAgY2xhc3MgUVVuZG9TdGFjazsKIFFUX0VORF9OQU1FU1BBQ0UKIAogY2xhc3MgUVdlYkVycm9y
OworY2xhc3MgUVdlYlByZWZlcmVuY2VzOwogY2xhc3MgUVdLSGlzdG9yeTsKLWNsYXNzIFFXS1By
ZWZlcmVuY2VzOwogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0xNTIsNyArMTUyLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREcmF3aW5nQXJlYVNpemUoY29uc3QgUVNpemUmKTsK
IAotICAgIFFXS1ByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIGNvbnN0OworICAgIFFXZWJQcmVm
ZXJlbmNlcyogcHJlZmVyZW5jZXMoKSBjb25zdDsKIAogICAgIFFTdHJpbmcgdGl0bGUoKSBjb25z
dDsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHByaXZhdGU6CiAgICAgUVdLSGlzdG9yeSogbV9oaXN0
b3J5OwogCiAgICAgbXV0YWJsZSBRQWN0aW9uKiBtX2FjdGlvbnNbUXRXZWJQYWdlUHJveHk6Oldl
YkFjdGlvbkNvdW50XTsKLSAgICBtdXRhYmxlIFFXS1ByZWZlcmVuY2VzKiBtX3ByZWZlcmVuY2Vz
OworICAgIG11dGFibGUgUVdlYlByZWZlcmVuY2VzKiBtX3ByZWZlcmVuY2VzOwogCiAgICAgT3du
UHRyPFFVbmRvU3RhY2s+IG1fdW5kb1N0YWNrOwogICAgIGludCBtX2xvYWRQcm9ncmVzczsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xd2twcmVmZXJlbmNlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzLmNwcAko
cmV2aXNpb24gOTc2MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrcHJlZmVy
ZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIxOSArMCwwIEBACi0vKgotICAgIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAicXdrcHJlZmVyZW5jZXMuaCIK
LQotI2luY2x1ZGUgIldLUGFnZUdyb3VwLmgiCi0jaW5jbHVkZSAiV0tQcmVmZXJlbmNlcy5oIgot
I2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKLSNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2luY2x1
ZGUgInF3a3ByZWZlcmVuY2VzX3AuaCIKLQotCi1RV0tQcmVmZXJlbmNlcyogUVdLUHJlZmVyZW5j
ZXNQcml2YXRlOjpjcmVhdGVQcmVmZXJlbmNlcyhXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYp
Ci17Ci0gICAgUVdLUHJlZmVyZW5jZXMqIHByZWZzID0gbmV3IFFXS1ByZWZlcmVuY2VzOwotICAg
IHByZWZzLT5kLT5yZWYgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHBhZ2VHcm91cFJlZik7
Ci0gICAgcmV0dXJuIHByZWZzOwotfQotCi1RV0tQcmVmZXJlbmNlcyogUVdLUHJlZmVyZW5jZXNQ
cml2YXRlOjpjcmVhdGVTaGFyZWRQcmVmZXJlbmNlcygpCi17Ci0gICAgUVdLUHJlZmVyZW5jZXMq
IHByZWZzID0gbmV3IFFXS1ByZWZlcmVuY2VzOwotICAgIHByZWZzLT5kLT5yZWYgPSBXS1ByZWZl
cmVuY2VzQ3JlYXRlKCk7Ci0gICAgcmV0dXJuIHByZWZzOwotfQotCi1RV0tQcmVmZXJlbmNlcyog
UVdLUHJlZmVyZW5jZXM6OnNoYXJlZFByZWZlcmVuY2VzKCkKLXsKLSAgICBzdGF0aWMgUVdLUHJl
ZmVyZW5jZXMqIGluc3RhbmNlID0gMDsKLQotICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIGlu
c3RhbmNlID0gUVdLUHJlZmVyZW5jZXNQcml2YXRlOjpjcmVhdGVTaGFyZWRQcmVmZXJlbmNlcygp
OwotICAgIHJldHVybiBpbnN0YW5jZTsKLX0KLQotUVdLUHJlZmVyZW5jZXM6OlFXS1ByZWZlcmVu
Y2VzKCkKLSAgICA6IGQobmV3IFFXS1ByZWZlcmVuY2VzUHJpdmF0ZSkKLXsKLX0KLQotUVdLUHJl
ZmVyZW5jZXM6On5RV0tQcmVmZXJlbmNlcygpCi17Ci0gICAgZGVsZXRlIGQ7Ci19Ci0KLXZvaWQg
UVdLUHJlZmVyZW5jZXM6OnNldEZvbnRGYW1pbHkoRm9udEZhbWlseSB3aGljaCwgY29uc3QgUVN0
cmluZyYgZmFtaWx5KQotewotICAgIHN3aXRjaCAod2hpY2gpIHsKLSAgICBjYXNlIFN0YW5kYXJk
Rm9udDoKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0YW5kYXJkRm9udEZhbWlseShkLT5yZWYs
IFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcoZmFtaWx5KSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRml4ZWRGb250OgotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Rml4ZWRGb250RmFtaWx5
KGQtPnJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhmYW1pbHkpKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBTZXJpZkZvbnQ6Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTZXJpZkZv
bnRGYW1pbHkoZC0+cmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKGZhbWlseSkpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFNhbnNTZXJpZkZvbnQ6Ci0gICAgICAgIFdLUHJlZmVyZW5j
ZXNTZXRTYW5zU2VyaWZGb250RmFtaWx5KGQtPnJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmlu
ZyhmYW1pbHkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDdXJzaXZlRm9udDoKLSAgICAg
ICAgV0tQcmVmZXJlbmNlc1NldEN1cnNpdmVGb250RmFtaWx5KGQtPnJlZiwgV0tTdHJpbmdDcmVh
dGVXaXRoUVN0cmluZyhmYW1pbHkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGYW50YXN5
Rm9udDoKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldEZhbnRhc3lGb250RmFtaWx5KGQtPnJlZiwg
V0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhmYW1pbHkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1RU3RyaW5nIFFXS1ByZWZlcmVu
Y2VzOjpmb250RmFtaWx5KEZvbnRGYW1pbHkgd2hpY2gpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh3
aGljaCkgewotICAgIGNhc2UgU3RhbmRhcmRGb250OiB7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBzdHJpbmdSZWYoQWRvcHRXSywgV0tQcmVmZXJlbmNlc0NvcHlTdGFuZGFyZEZv
bnRGYW1pbHkoZC0+cmVmKSk7Ci0gICAgICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKHN0
cmluZ1JlZi5nZXQoKSk7Ci0gICAgfQotICAgIGNhc2UgRml4ZWRGb250OiB7Ci0gICAgICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYoQWRvcHRXSywgV0tQcmVmZXJlbmNlc0Nv
cHlGaXhlZEZvbnRGYW1pbHkoZC0+cmVmKSk7Ci0gICAgICAgIHJldHVybiBXS1N0cmluZ0NvcHlR
U3RyaW5nKHN0cmluZ1JlZi5nZXQoKSk7Ci0gICAgfQotICAgIGNhc2UgU2VyaWZGb250OiB7Ci0g
ICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmdSZWYoQWRvcHRXSywgV0tQcmVm
ZXJlbmNlc0NvcHlTZXJpZkZvbnRGYW1pbHkoZC0+cmVmKSk7Ci0gICAgICAgIHJldHVybiBXS1N0
cmluZ0NvcHlRU3RyaW5nKHN0cmluZ1JlZi5nZXQoKSk7Ci0gICAgfQotICAgIGNhc2UgU2Fuc1Nl
cmlmRm9udDogewotICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nUmVmKEFk
b3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5U2Fuc1NlcmlmRm9udEZhbWlseShkLT5yZWYpKTsKLSAg
ICAgICAgcmV0dXJuIFdLU3RyaW5nQ29weVFTdHJpbmcoc3RyaW5nUmVmLmdldCgpKTsKLSAgICB9
Ci0gICAgY2FzZSBDdXJzaXZlRm9udDogewotICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gc3RyaW5nUmVmKEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5Q3Vyc2l2ZUZvbnRGYW1pbHko
ZC0+cmVmKSk7Ci0gICAgICAgIHJldHVybiBXS1N0cmluZ0NvcHlRU3RyaW5nKHN0cmluZ1JlZi5n
ZXQoKSk7Ci0gICAgfQotICAgIGNhc2UgRmFudGFzeUZvbnQ6IHsKLSAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHN0cmluZ1JlZihBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ29weUZhbnRh
c3lGb250RmFtaWx5KGQtPnJlZikpOwotICAgICAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmlu
ZyhzdHJpbmdSZWYuZ2V0KCkpOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
UVN0cmluZygpOwotICAgIH0KLX0KLQotYm9vbCBRV0tQcmVmZXJlbmNlczo6dGVzdEF0dHJpYnV0
ZShXZWJBdHRyaWJ1dGUgYXR0cikgY29uc3QKLXsKLSAgICBzd2l0Y2ggKGF0dHIpIHsKLSAgICBj
YXNlIEF1dG9Mb2FkSW1hZ2VzOgotICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseShkLT5yZWYpOwotICAgIGNhc2UgSmF2YXNjcmlwdEVuYWJsZWQ6
Ci0gICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdEVuYWJsZWQoZC0+cmVm
KTsKLSAgICBjYXNlIFBsdWdpbnNFbmFibGVkOgotICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNl
c0dldFBsdWdpbnNFbmFibGVkKGQtPnJlZik7Ci0gICAgY2FzZSBPZmZsaW5lV2ViQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQ6Ci0gICAgICAgIHJldHVybiBXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGQtPnJlZik7Ci0gICAgY2FzZSBMb2NhbFN0b3JhZ2VF
bmFibGVkOgotICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJs
ZWQoZC0+cmVmKTsKLSAgICBjYXNlIFhTU0F1ZGl0aW5nRW5hYmxlZDoKLSAgICAgICAgcmV0dXJu
IFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChkLT5yZWYpOwotICAgIGNhc2UgRnJh
bWVGbGF0dGVuaW5nRW5hYmxlZDoKLSAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXRGcmFt
ZUZsYXR0ZW5pbmdFbmFibGVkKGQtPnJlZik7Ci0gICAgY2FzZSBQcml2YXRlQnJvd3NpbmdFbmFi
bGVkOgotICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoZC0+cmVmKTsKLSAgICBjYXNlIERldmVsb3BlckV4dHJhc0VuYWJsZWQ6Ci0gICAgICAgIHJl
dHVybiBXS1ByZWZlcmVuY2VzR2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChkLT5yZWYpOwotICAg
IGNhc2UgRG5zUHJlZmV0Y2hFbmFibGVkOgotICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dl
dEROU1ByZWZldGNoaW5nRW5hYmxlZChkLT5yZWYpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi12
b2lkIFFXS1ByZWZlcmVuY2VzOjpzZXRBdHRyaWJ1dGUoV2ViQXR0cmlidXRlIGF0dHIsIGJvb2wg
b24pCi17Ci0gICAgc3dpdGNoIChhdHRyKSB7Ci0gICAgY2FzZSBBdXRvTG9hZEltYWdlczoKLSAg
ICAgICAgV0tQcmVmZXJlbmNlc1NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShkLT5yZWYsIG9u
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBKYXZhc2NyaXB0RW5hYmxlZDoKLSAgICAgICAg
V0tQcmVmZXJlbmNlc1NldEphdmFTY3JpcHRFbmFibGVkKGQtPnJlZiwgb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBsdWdpbnNFbmFibGVkOgotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0
UGx1Z2luc0VuYWJsZWQoZC0+cmVmLCBvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgT2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOgotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0
T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGQtPnJlZiwgb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIExvY2FsU3RvcmFnZUVuYWJsZWQ6Ci0gICAgICAgIFdLUHJlZmVyZW5j
ZXNTZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGQtPnJlZiwgb24pOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFhTU0F1ZGl0aW5nRW5hYmxlZDoKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFhTU0F1
ZGl0b3JFbmFibGVkKGQtPnJlZiwgb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZyYW1l
RmxhdHRlbmluZ0VuYWJsZWQ6Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkKGQtPnJlZiwgb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFByaXZhdGVC
cm93c2luZ0VuYWJsZWQ6Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRQcml2YXRlQnJvd3NpbmdF
bmFibGVkKGQtPnJlZiwgb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIERldmVsb3BlckV4
dHJhc0VuYWJsZWQ6Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXREZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKGQtPnJlZiwgb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIERuc1ByZWZldGNoRW5h
YmxlZDoKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldEROU1ByZWZldGNoaW5nRW5hYmxlZChkLT5y
ZWYsIG9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi12b2lkIFFXS1ByZWZlcmVuY2VzOjpzZXRGb250U2l6
ZShGb250U2l6ZSB0eXBlLCBpbnQgc2l6ZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBj
YXNlIE1pbmltdW1Gb250U2l6ZToKLSAgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRNaW5pbXVtRm9u
dFNpemUoZC0+cmVmLCBzaXplKTsKLSAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGVmYXVsdEZv
bnRTaXplOgotICAgICAgICAgV0tQcmVmZXJlbmNlc1NldERlZmF1bHRGb250U2l6ZShkLT5yZWYs
IHNpemUpOwotICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEZWZhdWx0Rml4ZWRGb250U2l6ZToK
LSAgICAgICAgIFdLUHJlZmVyZW5jZXNTZXREZWZhdWx0Rml4ZWRGb250U2l6ZShkLT5yZWYsIHNp
emUpOwotICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgfQotfQotCi1pbnQgUVdLUHJlZmVyZW5jZXM6OmZvbnRTaXplKEZvbnRT
aXplIHR5cGUpIGNvbnN0Ci17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBNaW5pbXVt
Rm9udFNpemU6Ci0gICAgICAgICByZXR1cm4gV0tQcmVmZXJlbmNlc0dldE1pbmltdW1Gb250U2l6
ZShkLT5yZWYpOwotICAgIGNhc2UgRGVmYXVsdEZvbnRTaXplOgotICAgICAgICAgcmV0dXJuIFdL
UHJlZmVyZW5jZXNHZXREZWZhdWx0Rm9udFNpemUoZC0+cmVmKTsKLSAgICBjYXNlIERlZmF1bHRG
aXhlZEZvbnRTaXplOgotICAgICAgICAgcmV0dXJuIFdLUHJlZmVyZW5jZXNHZXREZWZhdWx0Rml4
ZWRGb250U2l6ZShkLT5yZWYpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuaAkocmV2aXNpb24gOTc2MDIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXdrcHJlZmVyZW5jZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3OSArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLQotICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWZuZGVmIFFX
S1BSRUZFUkVOQ0VTX0gKLSNkZWZpbmUgUVdLUFJFRkVSRU5DRVNfSAotCi0jaW5jbHVkZSAicXdl
YmtpdGdsb2JhbC5oIgotCi1jbGFzcyBRV0tQcmVmZXJlbmNlc1ByaXZhdGU7Ci0KLWNsYXNzIFFX
RUJLSVRfRVhQT1JUIFFXS1ByZWZlcmVuY2VzIHsKLXB1YmxpYzoKLSAgICBlbnVtIEZvbnRGYW1p
bHkgewotICAgICAgICBTdGFuZGFyZEZvbnQsCi0gICAgICAgIEZpeGVkRm9udCwKLSAgICAgICAg
U2VyaWZGb250LAotICAgICAgICBTYW5zU2VyaWZGb250LAotICAgICAgICBDdXJzaXZlRm9udCwK
LSAgICAgICAgRmFudGFzeUZvbnQKLSAgICB9OwotCi0gICAgZW51bSBXZWJBdHRyaWJ1dGUgewot
ICAgICAgICBBdXRvTG9hZEltYWdlcywKLSAgICAgICAgSmF2YXNjcmlwdEVuYWJsZWQsCi0gICAg
ICAgIFBsdWdpbnNFbmFibGVkLAotICAgICAgICBPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQsCi0gICAgICAgIExvY2FsU3RvcmFnZUVuYWJsZWQsCi0gICAgICAgIFhTU0F1ZGl0aW5n
RW5hYmxlZCwKLSAgICAgICAgRnJhbWVGbGF0dGVuaW5nRW5hYmxlZCwKLSAgICAgICAgUHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwKLSAgICAgICAgRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwKLSAgICAg
ICAgRG5zUHJlZmV0Y2hFbmFibGVkCi0gICAgfTsKLQotICAgIGVudW0gRm9udFNpemUgewotICAg
ICAgICBNaW5pbXVtRm9udFNpemUsCi0gICAgICAgIERlZmF1bHRGb250U2l6ZSwKLSAgICAgICAg
RGVmYXVsdEZpeGVkRm9udFNpemUKLSAgICB9OwotCi0gICAgc3RhdGljIFFXS1ByZWZlcmVuY2Vz
KiBzaGFyZWRQcmVmZXJlbmNlcygpOwotCi0gICAgdm9pZCBzZXRGb250RmFtaWx5KEZvbnRGYW1p
bHkgd2hpY2gsIGNvbnN0IFFTdHJpbmcmIGZhbWlseSk7Ci0gICAgUVN0cmluZyBmb250RmFtaWx5
KEZvbnRGYW1pbHkgd2hpY2gpIGNvbnN0OwotCi0gICAgdm9pZCBzZXRBdHRyaWJ1dGUoV2ViQXR0
cmlidXRlIGF0dHIsIGJvb2wgb24pOwotICAgIGJvb2wgdGVzdEF0dHJpYnV0ZShXZWJBdHRyaWJ1
dGUgYXR0cikgY29uc3Q7Ci0KLSAgICB2b2lkIHNldEZvbnRTaXplKEZvbnRTaXplIHR5cGUsIGlu
dCBzaXplKTsKLSAgICBpbnQgZm9udFNpemUoRm9udFNpemUgdHlwZSkgY29uc3Q7Ci0KLXByaXZh
dGU6Ci0gICAgUV9ESVNBQkxFX0NPUFkoUVdLUHJlZmVyZW5jZXMpCi0KLSAgICBRV0tQcmVmZXJl
bmNlcygpOwotICAgIH5RV0tQcmVmZXJlbmNlcygpOwotCi0gICAgUVdLUHJlZmVyZW5jZXNQcml2
YXRlICpkOwotCi0gICAgZnJpZW5kIGNsYXNzIFFXS1ByZWZlcmVuY2VzUHJpdmF0ZTsKLX07Ci0K
LSNlbmRpZiAvLyBRV0tQUkVGRVJFTkNFU19ICkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvcXdrcHJlZmVyZW5jZXNfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9xd2twcmVmZXJlbmNlc19wLmgJKHJldmlzaW9uIDk3NjAyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L3F3a3ByZWZlcmVuY2VzX3AuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwyOCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLQotICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQot
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiV0tQcmVmZXJl
bmNlcy5oIgotCi1jbGFzcyBRV0tQcmVmZXJlbmNlc1ByaXZhdGUgewotcHVibGljOgotICAgIHN0
YXRpYyBRV0tQcmVmZXJlbmNlcyogY3JlYXRlUHJlZmVyZW5jZXMoV0tQYWdlR3JvdXBSZWYpOwot
ICAgIHN0YXRpYyBRV0tQcmVmZXJlbmNlcyogY3JlYXRlU2hhcmVkUHJlZmVyZW5jZXMoKTsKLQot
ICAgIFdLUHJlZmVyZW5jZXNSZWYgcmVmOwotfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>