<?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>190232</bug_id>
          
          <creation_ts>2018-10-02 20:29:46 -0700</creation_ts>
          <short_desc>[iOS] [WK2] Expose some more editing SPI on WKWebView</short_desc>
          <delta_ts>2018-10-04 20:03:48 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1465891</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-02 20:29:46 -0700</bug_when>
    <thetext>Expose more editing SPI on WKWebView, for internal use by rich text editors on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465892</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-02 20:30:13 -0700</bug_when>
    <thetext>This includes a way to specify font colors, as well as a UIFont.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465894</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-02 20:31:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/44963368&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465905</commentid>
    <comment_count>3</comment_count>
      <attachid>351474</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-02 21:01:18 -0700</bug_when>
    <thetext>Created attachment 351474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465906</commentid>
    <comment_count>4</comment_count>
      <attachid>351474</attachid>
    <who name="">mitz</who>
    <bug_when>2018-10-02 21:07:06 -0700</bug_when>
    <thetext>Comment on attachment 351474
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:371
&gt; +@interface WKWebView (EditActions) &lt;UIResponderStandardEditActions&gt;

Unprefixed category names on API classes are reserved for client apps. WebKit’s categories should be prefixed WK. Although this could just be a class extension rather than a named category.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:382
&gt; +- (void)setFont:(UIFont *)font withSender:(id)sender;
&gt; +- (void)setTextColor:(UIColor *)color withSender:(id)sender;

Not sure how “with” fits here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465907</commentid>
    <comment_count>5</comment_count>
      <attachid>351474</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-02 21:10:42 -0700</bug_when>
    <thetext>Comment on attachment 351474
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:371
&gt;&gt; +@interface WKWebView (EditActions) &lt;UIResponderStandardEditActions&gt;
&gt; 
&gt; Unprefixed category names on API classes are reserved for client apps. WebKit’s categories should be prefixed WK. Although this could just be a class extension rather than a named category.

Good point! I&apos;ll change this to just be a class extension (i.e. WKWebView () &lt;…&gt;)

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:382
&gt;&gt; +- (void)setTextColor:(UIColor *)color withSender:(id)sender;
&gt; 
&gt; Not sure how “with” fits here.

I suppose the &quot;with&quot; doesn&apos;t add anything here except more keystrokes :P

Removed the &quot;with&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465913</commentid>
    <comment_count>6</comment_count>
      <attachid>351474</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-02 21:14:48 -0700</bug_when>
    <thetext>Comment on attachment 351474
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:382
&gt;&gt;&gt; +- (void)setTextColor:(UIColor *)color withSender:(id)sender;
&gt;&gt; 
&gt;&gt; Not sure how “with” fits here.
&gt; 
&gt; I suppose the &quot;with&quot; doesn&apos;t add anything here except more keystrokes :P
&gt; 
&gt; Removed the &quot;with&quot;

(Ah, I recall now — I was initially inspired to add the &quot;with&quot; by `- (BOOL)canPerformAction:(SEL)action withSender:(nullable id)sender` on UIResponder).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465916</commentid>
    <comment_count>7</comment_count>
      <attachid>351478</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-02 21:53:07 -0700</bug_when>
    <thetext>Created attachment 351478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465917</commentid>
    <comment_count>8</comment_count>
      <attachid>351479</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-02 21:55:37 -0700</bug_when>
    <thetext>Created attachment 351479
Update ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466112</commentid>
    <comment_count>9</comment_count>
      <attachid>351535</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-03 10:51:49 -0700</bug_when>
    <thetext>Created attachment 351535
Add setFontSize:sender:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466596</commentid>
    <comment_count>10</comment_count>
      <attachid>351649</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-04 19:24:13 -0700</bug_when>
    <thetext>Created attachment 351649
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466600</commentid>
    <comment_count>11</comment_count>
      <attachid>351649</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-04 20:03:28 -0700</bug_when>
    <thetext>Comment on attachment 351649
Patch for landing

Clearing flags on attachment: 351649

Committed r236867: &lt;https://trac.webkit.org/changeset/236867&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351474</attachid>
            <date>2018-10-02 21:01:18 -0700</date>
            <delta_ts>2018-10-02 21:53:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190232-20181002210117.patch</filename>
            <type>text/plain</type>
            <size>40104</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjMTRjZDZlMTBkM2VlNzdh
MTkzMjU5NDFlNzI1MjBiZmJlZjA1ZmYuLmQ0MDY1Y2I2YTA2MjMwNjg3Y2NjMmM5Mzc0ZDAyMTM5
MjNlYTQ1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA1IEBACisyMDE4LTEwLTAyICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXSzJdIEV4
cG9zZSBzb21lIG1vcmUgZWRpdGluZyBTUEkgb24gV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ0OTYzMzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEV4cG9zZXMgYSBmZXcgYWRkaXRpb25hbCBlZGl0aW5nIGNvbW1hbmRzIGFzIFNQ
SSBvbiBXS1dlYlZpZXcsIGJ5IGRlZmluaW5nIGEgbmV3IChFZGl0QWN0aW9ucykgY2F0ZWdvcnkg
b24KKyAgICAgICAgV0tXZWJWaWV3LCB0aGF0IGFsc28gY29uZm9ybXMgdG8gPFVJUmVzcG9uZGVy
U3RhbmRhcmRFZGl0QWN0aW9ucz4uIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBuZWFybHkgYWxsIG9m
IHRoZQorICAgICAgICByZW1haW5pbmcgdW5pbXBsZW1lbnRlZCBtZXRob2RzIG9uIFVJUmVzcG9u
ZGVyU3RhbmRhcmRFZGl0QWN0aW9ucywgYW5kIHRoZSBuZXcgY2F0ZWdvcnkgYXVnbWVudHMgdGhp
cyBzZXQgb2YKKyAgICAgICAgZWRpdGluZyBtZXRob2RzIGJ5IGFkZGluZyBhZGRpdGlvbmFsIGVk
aXRpbmcgaGVscGVycyB0aGF0IGRvbid0IGN1cnJlbnRseSBleGlzdCBvbiBpT1MgKGUuZy4gdG9n
Z2xlU3RyaWtlVGhyb3VnaAorICAgICAgICBhbmQgaW5zZXJ0VW5vcmRlcmVkTGlzdCkuIFRoZSBu
YW1lcyBvZiB0aGVzZSBuZXcgbWV0aG9kcyBoYXZlIGJlZW4gbGFyZ2VseSBiZWVuIGJvcnJvd2Vk
IGZyb20gdGhlaXIgY291bnRlcnBhcnRzCisgICAgICAgIG9uIG1hY09TIChzZWU6IGBOU1Jlc3Bv
bmRlci5oYCkuCisKKyAgICAgICAgVGhlIG5ldyBlZGl0IGFjdGlvbnMgYXJlIGFkZGVkIGluIHRo
aXMgcGF0Y2ggb24gaU9TIGFyZToKKworICAgICAgICBgYGAKKyAgICAgICAgLSAodm9pZClhbGln
bkNlbnRlcjooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lkKWFsaWduSnVzdGlmaWVkOihpZClz
ZW5kZXI7CisgICAgICAgIC0gKHZvaWQpYWxpZ25MZWZ0OihpZClzZW5kZXI7CisgICAgICAgIC0g
KHZvaWQpYWxpZ25SaWdodDooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lkKWluZGVudDooaWQp
c2VuZGVyOworICAgICAgICAtICh2b2lkKWluc2VydE9yZGVyZWRMaXN0OihpZClzZW5kZXI7Cisg
ICAgICAgIC0gKHZvaWQpaW5zZXJ0VW5vcmRlcmVkTGlzdDooaWQpc2VuZGVyOworICAgICAgICAt
ICh2b2lkKW91dGRlbnQ6KGlkKXNlbmRlcjsKKyAgICAgICAgLSAodm9pZCl0b2dnbGVTdHJpa2VU
aHJvdWdoOihpZClzZW5kZXI7CisgICAgICAgIC0gKHZvaWQpc2V0Rm9udDooVUlGb250ICopZm9u
dCB3aXRoU2VuZGVyOihpZClzZW5kZXI7CisgICAgICAgIC0gKHZvaWQpc2V0VGV4dENvbG9yOihV
SUNvbG9yICopY29sb3Igd2l0aFNlbmRlcjooaWQpc2VuZGVyOworICAgICAgICBgYGAKKworICAg
ICAgICBUZXN0czogIFdLV2ViVmlld0VkaXRBY3Rpb25zLkxpc3RJbnNlcnRpb24KKyAgICAgICAg
ICAgICAgICBXS1dlYlZpZXdFZGl0QWN0aW9ucy5DaGFuZ2VJbmRlbnRhdGlvbgorICAgICAgICAg
ICAgICAgIFdLV2ViVmlld0VkaXRBY3Rpb25zLlNldEFsaWdubWVudAorICAgICAgICAgICAgICAg
IFdLV2ViVmlld0VkaXRBY3Rpb25zLlRvZ2dsZVN0cmlrZVRocm91Z2gKKyAgICAgICAgICAgICAg
ICBXS1dlYlZpZXdFZGl0QWN0aW9ucy5DaGFuZ2VGb250U2l6ZQorICAgICAgICAgICAgICAgIFdL
V2ViVmlld0VkaXRBY3Rpb25zLlNldFRleHRDb2xvcgorICAgICAgICAgICAgICAgIFdLV2ViVmll
d0VkaXRBY3Rpb25zLlNldEZvbnRGYW1pbHkKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgY2FuUGVyZm9ybUFjdGlvbjp3
aXRoU2VuZGVyOl0pOgorCisgICAgICAgIFVwZGF0ZSB0aGlzIHRvIGhhbmRsZSB0aGUgbmV3IGVk
aXRpbmcgYWN0aW9ucy4gRm9yIG5vdywgd2Ugc2ltcGx5IHRyZWF0IGFsbCBvZiB0aGUgbmV3IGVk
aXQgYWN0aW9ucyBpbiB0aGUgc2FtZQorICAgICAgICB3YXkgYXMgd2UgY3VycmVudGx5IHRyZWF0
IGJvbGQsIGl0YWxpYyBhbmQgdW5kZXJsaW5lOiB0aGF0IGlzLCB0aGV5IGFyZSBlbmFibGVkIG9u
bHkgd2hlbiB0aGUgdXNlciBpcyBpbiBhCisgICAgICAgIHJpY2hseSBjb250ZW50ZWRpdGFibGUg
ZWxlbWVudC4KKworICAgICAgICAoLVtXS1dlYlZpZXcgc2V0Rm9udDp3aXRoU2VuZGVyOl0pOgor
CisgICAgICAgIENvbnN0cnVjdCBhbmQgc2VuZCBhIHNldCBvZiBGb250Q2hhbmdlcy4KKworICAg
ICAgICAoLVtXS1dlYlZpZXcgc2V0VGV4dENvbG9yOndpdGhTZW5kZXI6XSk6CisKKyAgICAgICAg
SW52b2tlICJGb3JlQ29sb3IiIHdpdGggdGhlIHNlcmlhbGl6ZWQgY29sb3IgcmVwcmVzZW50YXRp
b24uIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSBgcmdiYSgpYCBjb2xvciB2YWx1ZXMsCisgICAg
ICAgIHdoaWNoIGhleCBmb3JtYXQgd291bGQgbm90IHBlcm1pdC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorCisgICAgICAgIEFkZCB0aGUgbmV3
IFNQSSBjYXRlZ29yeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KToKKworICAgICAgICBQdWxs
IGxvZ2ljIGZvciBhcHBseWluZyBmb250IGFuZCBmb250IGF0dHJpYnV0ZSBzdHlsZSBjaGFuZ2Vz
IG91dCBvZiBtYWNPUy1zcGVjaWZpYyBjb2RlLCBhbmQgaW50bworICAgICAgICBwbGF0Zm9ybS1h
Z25vc3RpYyBjb2RlIGluIFdlYlBhZ2UgYW5kIFdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oOgorCisgICAgICAgIEFkZCB0aGUgbmV3IHN1cHBvcnRlZCBlZGl0
aW5nIGNvbW1hbmRzIGFzIHN1cHBvcnRlZCBhY3Rpb25zIGluIFdLV2ViVmlldy4gVGhlIG9ubHkg
bmV3IGVkaXRpbmcgY29tbWFuZHMgdGhhdAorICAgICAgICBhcmVuJ3QgcHJlc2VudCBpbiB0aGlz
IGxpc3QgYXJlIC1zZXRGb250OndpdGhTZW5kZXI6IGFuZCAtc2V0Q29sb3I6d2l0aFNlbmRlcjos
IHdoaWNoIGFyZSBtYW51YWxseSBoYW5kbGVkIGluCisgICAgICAgIHBsYWNlcyB3aGVyZSB0aGUg
YEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9OYCBtYWNybyBpcyBvdGhlcndpc2UgdXNlZC4g
SW4gYSBmb2xsb3d1cCwgd2UgY291bGQgY29uc2lkZXIKKyAgICAgICAgYXVnbWVudGluZyBgRk9S
X0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT05gIHRvIGhhbmRsZSBhY3Rpb25zIHdpdGggbXVsdGlw
bGUgYXJndW1lbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisKKyAgICAgICAgRGVmaW5lIGEgbmV3IGhlbHBlciBtYWNybyBoZXJlIHRv
IGRlZmluZSBib2lsZXJwbGF0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC3igKZGb3JXZWJWaWV3
IGVkaXQgY29tbWFuZAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgdGhhdCB0dXJuIGFyb3VuZCBh
bmQgaW52b2tlIGBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kYCB3aXRoIG5vIGFkZGl0aW9uYWwg
YXJndW1lbnRzLCBhbmQgYW4KKyAgICAgICAgZWRpdCBjb21tYW5kIG5hbWUgbWF0Y2hpbmcgdGhh
dCBvZiB0aGUgV2ViQ29yZSBlZGl0IGNvbW1hbmQuCisKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyB0b2dnbGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBpbmNyZWFzZVNpemVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGRlY3JlYXNlU2l6ZUZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0
Rm9udEZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBz
ZXRUZXh0Q29sb3JGb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKworICAgICAg
ICBBZGQg4oCmRm9yV2ViVmlldyBwbHVtYmluZyBmb3IgdGhlIG5ldyBlZGl0aW5nIGFjdGlvbnMs
IHNvIHRoZXkgdHVybiBhcm91bmQgYW5kIGNhbGwgaW50byBXS0NvbnRlbnRWaWV3IGJ5CisgICAg
ICAgIGRlZmF1bHQsIGJ1dCBiZWhhdmlvciBtYXkgYmUgb3ZlcnJpZGRlbiBpbiBXS1dlYlZpZXcu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udCk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpjaGFuZ2VGb250QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmNoYW5nZUZvbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjaGFuZ2VGb250QXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmNoYW5nZUZvbnQpOiBEZWxldGVkLgorCiAyMDE4LTEwLTAyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFBh
cnNlZFVSTFN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggMDkyYzY1NGMyZjRjY2FkMTgxNGE1YzBkZTVlMTU2NGUwMTU5MmZhYy4u
ZjE4NzE5NGU4MDdiOGRjYjI4NTczOWVkN2QxMDRlNjhjMjIzYzNhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMzk0LDYgKzEzOTQs
MTIgQEAgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tD
T05URU5UVklFVykKIAogICAgICN1bmRlZiBGT1JXQVJEX0NBTlBFUkZPUk1BQ1RJT05fVE9fV0tD
T05URU5UVklFVwogCisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2V0VGV4dENvbG9yOndp
dGhTZW5kZXI6KSkKKyAgICAgICAgcmV0dXJuIHNlbGYudXNlc1N0YW5kYXJkQ29udGVudFZpZXcg
JiYgW19jb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzphY3Rpb24gd2l0aFNl
bmRlcjpzZW5kZXJdOworCisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2V0Rm9udDp3aXRo
U2VuZGVyOikpCisgICAgICAgIHJldHVybiBzZWxmLnVzZXNTdGFuZGFyZENvbnRlbnRWaWV3ICYm
IFtfY29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6YWN0aW9uIHdpdGhTZW5k
ZXI6c2VuZGVyXTsKKwogICAgIHJldHVybiBbc3VwZXIgY2FuUGVyZm9ybUFjdGlvbjphY3Rpb24g
d2l0aFNlbmRlcjpzZW5kZXJdOwogfQogCkBAIC0xNDEyLDYgKzE0MTgsMTYgQEAgRk9SX0VBQ0hf
V0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykKICAg
ICByZXR1cm4gW3N1cGVyIHRhcmdldEZvckFjdGlvbjphY3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJd
OwogfQogCistICh2b2lkKXNldEZvbnQ6KFVJRm9udCAqKWZvbnQgd2l0aFNlbmRlcjooaWQpc2Vu
ZGVyCit7CisgICAgW19jb250ZW50VmlldyBzZXRGb250Rm9yV2ViVmlldzpmb250IHdpdGhTZW5k
ZXI6c2VuZGVyXTsKK30KKworLSAodm9pZClzZXRUZXh0Q29sb3I6KFVJQ29sb3IgKiljb2xvciB3
aXRoU2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBbX2NvbnRlbnRWaWV3IHNldFRleHRDb2xvckZv
cldlYlZpZXc6Y29sb3Igd2l0aFNlbmRlcjpzZW5kZXJdOworfQorCiBzdGF0aWMgaW5saW5lIENH
RmxvYXQgZmxvb3JUb0RldmljZVBpeGVsKENHRmxvYXQgaW5wdXQsIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yKQogewogICAgIHJldHVybiBDR0Zsb29yKGlucHV0ICogZGV2aWNlU2NhbGVGYWN0b3Ip
IC8gZGV2aWNlU2NhbGVGYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCAwNjJmMTVlNWI3OTk2ZGEwZjQzNWQy
NjNlNmY4YWFlOTM3MTY5ZTM2Li5kY2E3NjAwOGQ3ZGJhNDM2N2ZiMzRkYTEyZDZhNTdiNzUzMjYy
NzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKQEAgLTM2Niw5ICszNjYsMjcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5T
VUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAKIEBlbmQKIAotI2lmICFUQVJHRVRfT1NfSVBIT05F
CisjaWYgVEFSR0VUX09TX0lQSE9ORQorCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoRWRpdEFjdGlv
bnMpIDxVSVJlc3BvbmRlclN0YW5kYXJkRWRpdEFjdGlvbnM+CistICh2b2lkKWFsaWduQ2VudGVy
OihpZClzZW5kZXI7CistICh2b2lkKWFsaWduSnVzdGlmaWVkOihpZClzZW5kZXI7CistICh2b2lk
KWFsaWduTGVmdDooaWQpc2VuZGVyOworLSAodm9pZClhbGlnblJpZ2h0OihpZClzZW5kZXI7Cist
ICh2b2lkKWluZGVudDooaWQpc2VuZGVyOworLSAodm9pZClpbnNlcnRPcmRlcmVkTGlzdDooaWQp
c2VuZGVyOworLSAodm9pZClpbnNlcnRVbm9yZGVyZWRMaXN0OihpZClzZW5kZXI7CistICh2b2lk
KW91dGRlbnQ6KGlkKXNlbmRlcjsKKy0gKHZvaWQpdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQpc2Vu
ZGVyOworLSAodm9pZClzZXRGb250OihVSUZvbnQgKilmb250IHdpdGhTZW5kZXI6KGlkKXNlbmRl
cjsKKy0gKHZvaWQpc2V0VGV4dENvbG9yOihVSUNvbG9yICopY29sb3Igd2l0aFNlbmRlcjooaWQp
c2VuZGVyOworQGVuZAorCisjZWxzZQorCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tOU1RleHRG
aW5kZXJDbGllbnQpIDxOU1RleHRGaW5kZXJDbGllbnQ+CiBAZW5kCisKICNlbmRpZgogCiBAaW50
ZXJmYWNlIFdLV2ViVmlldyAoV0tUZXN0aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggNDIyZjI2YWVhMTg0OGE0MDlhODI4N2MzMjY1NjViM2YzZWQxMzdj
MC4uZTNhMGQ5N2M1ZjBhZGY0NTY0ZGQ2NTRkZTE5M2M0ZGU2MDQ3ZTJiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzMsNiArMTMzLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNEaXJlY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmg+CkBAIC03MDQ0LDYgKzcwNDUsMjIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKSwgbV9w
YWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2Vi
Q29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQoreworICAgIGlmICghaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsK
K30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMm
JiBjaGFuZ2VzKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udChXVEZNb3ZlKGNo
YW5nZXMpKSwgbV9wYWdlSUQpOworfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlNjZjNTRhOGEzMjU4M2JiZjc4YjBiNzNmN2Fk
OWEzY2VjY2M2NTU4Li45MjNlNGE4YjAyMDhlNjk4MmY1MDdmMzRhZWU3ODM4YmFlYjdlMjNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjk4LDExICs2OTgsMTIg
QEAgcHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSog
c2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZURhdGEuZ2V0KCk7IH0KICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAorICAgIHZvaWQgY2hh
bmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7CisgICAg
dm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYpOworCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIHZvaWQgaW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIGJv
b2wgcmVnaXN0ZXJVbmRvR3JvdXApOwogICAgIHZvaWQgYXR0cmlidXRlZFN1YnN0cmluZ0ZvckNo
YXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBBdHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7Ci0gICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZv
bnRDaGFuZ2VzJiYpOwogICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uKFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAKICAgICB2b2lkIHN0YXJ0V2luZG93RHJhZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGEyMzlkZTlk
YzVlMWVjMDg1NDZlZDMxZWEzNzJkMGRjNTE0NDdjNTAuLmYyYzBiMzczMjExMzkxNDlhMWExM2Ez
NzBkOTMzNGFhOTdjNjdhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTEyMSw3ICsxMjEsMTggQEAgdHlw
ZWRlZiBzdGQ6OnBhaXI8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCwgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkMKICAgICBNKHNlbGVjdEFsbCkgXAogICAgIE0odG9nZ2xlQm9s
ZGZhY2UpIFwKICAgICBNKHRvZ2dsZUl0YWxpY3MpIFwKLSAgICBNKHRvZ2dsZVVuZGVybGluZSkK
KyAgICBNKHRvZ2dsZVVuZGVybGluZSkgXAorICAgIE0oaW5jcmVhc2VTaXplKSBcCisgICAgTShk
ZWNyZWFzZVNpemUpIFwKKyAgICBNKHRvZ2dsZVN0cmlrZVRocm91Z2gpIFwKKyAgICBNKGluc2Vy
dFVub3JkZXJlZExpc3QpIFwKKyAgICBNKGluc2VydE9yZGVyZWRMaXN0KSBcCisgICAgTShpbmRl
bnQpIFwKKyAgICBNKG91dGRlbnQpIFwKKyAgICBNKGFsaWduTGVmdCkgXAorICAgIE0oYWxpZ25S
aWdodCkgXAorICAgIE0oYWxpZ25DZW50ZXIpIFwKKyAgICBNKGFsaWduSnVzdGlmaWVkKQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMzE5LDYgKzMzMCw5IEBAIEZPUl9FQUNIX1dLQ09OVEVO
VFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQog
REVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcoX3Bhc3RlQXNRdW90YXRp
b24pCiAjdW5kZWYgREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcKIAor
LSAodm9pZClzZXRGb250Rm9yV2ViVmlldzooVUlGb250ICopZm9udEZhbWlseSB3aXRoU2VuZGVy
OihpZClzZW5kZXI7CistICh2b2lkKXNldFRleHRDb2xvckZvcldlYlZpZXc6KFVJQ29sb3IgKilj
b2xvciB3aXRoU2VuZGVyOihpZClzZW5kZXI7CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
LSAodm9pZClfd2ViVG91Y2hFdmVudDooY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50
Jil0b3VjaEV2ZW50IHByZXZlbnRzTmF0aXZlR2VzdHVyZXM6KEJPT0wpcHJldmVudHNEZWZhdWx0
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBiMDFjNGY2YTNjNTRlOTljNzE2NTU3OGJhZTcy
MmYzOGVjYjhlNThjLi43ZGZjNDRhY2QzZWE1MjNmNWUxNDIwN2U2MzY5Mzc3OTc4MjAzMzBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTc1LDYgKzc1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3Iu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
bG9hdFF1YWQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0
cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTIyNzksNiAr
MjI4MCw1MCBAQCBGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcoX3Bhc3RlQXNRdW90YXRpb24p
CiAgICAgW1tVSUtleWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gcmVwbGFjZVRleHQ6c2VuZGVy
XTsKIH0KIAorI2RlZmluZSBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoY29tbWFuZCkgLSAo
dm9pZCljb21tYW5kICMjIEZvcldlYlZpZXc6KGlkKXNlbmRlciB7IF9wYWdlLT5leGVjdXRlRWRp
dENvbW1hbmQoI2NvbW1hbmQgIyMgX3MpOyB9CisKK1dFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklF
VyhpbnNlcnRPcmRlcmVkTGlzdCk7CitXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoaW5zZXJ0
VW5vcmRlcmVkTGlzdCk7CitXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoaW5kZW50KTsKK1dF
QkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhvdXRkZW50KTsKK1dFQkNPUkVfQ09NTUFORF9GT1Jf
V0VCVklFVyhhbGlnbkxlZnQpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGFsaWduUmln
aHQpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGFsaWduQ2VudGVyKTsKK1dFQkNPUkVf
Q09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkp1c3RpZmllZCk7CisKKy0gKHZvaWQpdG9nZ2xlU3Ry
aWtlVGhyb3VnaEZvcldlYlZpZXc6KGlkKXNlbmRlcgoreworICAgIF9wYWdlLT5leGVjdXRlRWRp
dENvbW1hbmQoIlN0cmlrZVRocm91Z2giX3MpOworfQorCistICh2b2lkKWluY3JlYXNlU2l6ZUZv
cldlYlZpZXc6KGlkKXNlbmRlcgoreworICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoIkZv
bnRTaXplRGVsdGEiX3MsICIxIl9zKTsKK30KKworLSAodm9pZClkZWNyZWFzZVNpemVGb3JXZWJW
aWV3OihpZClzZW5kZXIKK3sKKyAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJGb250U2l6
ZURlbHRhIl9zLCAiLTEiX3MpOworfQorCistICh2b2lkKXNldEZvbnRGb3JXZWJWaWV3OihVSUZv
bnQgKilmb250IHdpdGhTZW5kZXI6KGlkKXNlbmRlcgoreworICAgIFdlYkNvcmU6OkZvbnRDaGFu
Z2VzIGNoYW5nZXM7CisgICAgY2hhbmdlcy5zZXRGb250RmFtaWx5KGZvbnQuZmFtaWx5TmFtZSk7
CisgICAgY2hhbmdlcy5zZXRGb250TmFtZShmb250LmZvbnROYW1lKTsKKyAgICBjaGFuZ2VzLnNl
dEZvbnRTaXplKGZvbnQucG9pbnRTaXplKTsKKyAgICBjaGFuZ2VzLnNldEJvbGQoZm9udC50cmFp
dHMgJiBVSUZvbnRUcmFpdEJvbGQpOworICAgIGNoYW5nZXMuc2V0SXRhbGljKGZvbnQudHJhaXRz
ICYgVUlGb250VHJhaXRJdGFsaWMpOworICAgIF9wYWdlLT5jaGFuZ2VGb250KFdURk1vdmUoY2hh
bmdlcykpOworfQorCistICh2b2lkKXNldFRleHRDb2xvckZvcldlYlZpZXc6KFVJQ29sb3IgKilj
b2xvciB3aXRoU2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21t
YW5kKCJGb3JlQ29sb3IiX3MsIFdlYkNvcmU6OkNvbG9yKGNvbG9yLkNHQ29sb3IpLnNlcmlhbGl6
ZWQoKSk7Cit9CisKKyN1bmRlZiBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcKKwogLSAoTlNE
aWN0aW9uYXJ5ICopdGV4dFN0eWxpbmdBdFBvc2l0aW9uOihVSVRleHRQb3NpdGlvbiAqKXBvc2l0
aW9uIGluRGlyZWN0aW9uOihVSVRleHRTdG9yYWdlRGlyZWN0aW9uKWRpcmVjdGlvbgogewogICAg
IGlmICghcG9zaXRpb24gfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKQpAQCAtMjMzOCw4ICsyMzgzLDE0IEBAIEZPUldBUkRfQUNUSU9OX1RPX1dLV0VCVklF
VyhfcGFzdGVBc1F1b3RhdGlvbikKICAgICAgICAgcmV0dXJuIGVkaXRvclN0YXRlLmlzQ29udGVu
dFJpY2hseUVkaXRhYmxlICYmIGVkaXRvclN0YXRlLnNlbGVjdGlvbklzUmFuZ2UgJiYgIV9zaG93
aW5nVGV4dFN0eWxlT3B0aW9uczsKICAgICBpZiAoX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zKQog
ICAgICAgICByZXR1cm4gKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQm9sZGZhY2U6KSB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUl0YWxpY3M6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KHRvZ2dsZVVuZGVybGluZTopKTsKLSAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVC
b2xkZmFjZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlSXRhbGljczopIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3IodG9nZ2xlVW5kZXJsaW5lOikpCisgICAgaWYgKGFjdGlvbiA9PSBAc2Vs
ZWN0b3IodG9nZ2xlQm9sZGZhY2U6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUl0YWxp
Y3M6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVVuZGVybGluZTopIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IodG9nZ2xlU3RyaWtlVGhyb3VnaDopCisgICAgICAgIHx8IGFjdGlvbiA9PSBA
c2VsZWN0b3IoaW5zZXJ0T3JkZXJlZExpc3Q6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluc2Vy
dFVub3JkZXJlZExpc3Q6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluZGVudDopIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3Iob3V0ZGVudDopCisgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Io
YWxpZ25MZWZ0OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnblJpZ2h0OikgfHwgYWN0aW9u
ID09IEBzZWxlY3RvcihhbGlnbkNlbnRlcjopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoYWxpZ25K
dXN0aWZpZWQ6KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluY3JlYXNlU2l6ZTop
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVjcmVhc2VTaXplOikgfHwgYWN0aW9uID09IEBzZWxl
Y3RvcihzZXRGb250OndpdGhTZW5kZXI6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldFRleHRD
b2xvcjp3aXRoU2VuZGVyOikpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1v
cmUgbnVhbmNlZCBpbiB0aGUgZnV0dXJlLCByYXRoZXIgdGhhbiByZXR1cm5pbmcgWUVTIGZvciBh
bGwgcmljaGx5IGVkaXRhYmxlIGFyZWFzLiBGb3IgaW5zdGFuY2UsIG91dGRlbnQ6IHNob3VsZCBi
ZSBkaXNhYmxlZCB3aGVuIHRoZSBzZWxlY3Rpb24gaXMgYWxyZWFkeQorICAgICAgICAvLyBhdCB0
aGUgb3V0ZXJtb3N0IGluZGVudGF0aW9uIGxldmVsLgogICAgICAgICByZXR1cm4gZWRpdG9yU3Rh
dGUuaXNDb250ZW50UmljaGx5RWRpdGFibGU7CisgICAgfQogICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKGN1dDopKQogICAgICAgICByZXR1cm4gIWVkaXRvclN0YXRlLmlzSW5QYXNzd29yZEZp
ZWxkICYmIGVkaXRvclN0YXRlLmlzQ29udGVudEVkaXRhYmxlICYmIGVkaXRvclN0YXRlLnNlbGVj
dGlvbklzUmFuZ2U7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCA0ODQxOGNjZTg0OTJlMDI0NzI0N2ZiYTllYzJlMDdlMjdjMGQy
Njc4Li4xMDlkMWE0ZTYyY2UyMDI2YzEyOTE0MzJhNGFjYTljZDU4ZGNmMTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTUxLDcgKzUx
LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5o
PgotI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hhbmdlcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeU5TUGFzdGVib2Fy
ZFR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgpA
QCAtNjI5LDIyICs2MjgsNiBAQCBib29sIFdlYlBhZ2VQcm94eTo6YXBwbGVNYWlsTGluZXNDbGFt
cEVuYWJsZWQoKQogICAgIHJldHVybiBNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1haWwoKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRB
dHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5n
ZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7Ci19Ci0gICAgCi12
b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5n
ZXMpCi17Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykp
LCBtX3BhZ2VJRCk7Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjplZGl0b3JTdGF0ZUNoYW5nZWQo
Y29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKQogewogICAgIGJvb2wgY291bGRDaGFuZ2VT
ZWN1cmVJbnB1dFN0YXRlID0gbV9lZGl0b3JTdGF0ZS5pc0luUGFzc3dvcmRGaWVsZCAhPSBlZGl0
b3JTdGF0ZS5pc0luUGFzc3dvcmRGaWVsZCB8fCBtX2VkaXRvclN0YXRlLnNlbGVjdGlvbklzTm9u
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MjJiODA5MDExMjk3NjI4MGRiM2ZlZjIxODhlMmU3YjhhYmVkOTRkOS4uZDAzMDg4Y2FmZGNjYzhk
ZjRmZjgyNjY2NmExNmJjZGE3NjczNDVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1NSw2ICsxNTUsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRXZlbnROYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Gb250QXR0cmlidXRl
Q2hhbmdlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Zvcm1TdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTk5
OCw2ICs5OTksMjAgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoSW5jbHVkZVBv
c3RMYXlvdXREYXRhSGludCBzaG91bGRJbmNsdWRlUG9zdExheW8KICAgICByZXR1cm4gcmVzdWx0
OwogfQogCit2b2lkIFdlYlBhZ2U6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRB
dHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKK3sKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgaWYgKGZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIGZyYW1l
LmVkaXRvcigpLmFwcGx5U3R5bGVUb1NlbGVjdGlvbihjaGFuZ2VzLmNyZWF0ZUVkaXRpbmdTdHls
ZSgpLCBjaGFuZ2VzLmVkaXRBY3Rpb24oKSwgRWRpdG9yOjpDb2xvckZpbHRlck1vZGU6OkludmVy
dENvbG9yKTsKK30KKwordm9pZCBXZWJQYWdlOjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFu
Z2VzJiYgY2hhbmdlcykKK3sKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFw
cGx5U3R5bGVUb1NlbGVjdGlvbihjaGFuZ2VzLmNyZWF0ZUVkaXRpbmdTdHlsZSgpLCBFZGl0QWN0
aW9uOjpTZXRGb250LCBFZGl0b3I6OkNvbG9yRmlsdGVyTW9kZTo6SW52ZXJ0Q29sb3IpOworfQor
CiB2b2lkIFdlYlBhZ2U6OmV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50LCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBhcmd1bWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTUwYWI0
ZmVkOWU0YTZjZDQzMTM0NTI3NjZiODk4MGQ4NzVjY2Y4OC4uYTEzZDkxYmE3YjAwMGQyMjk2MGQ5
MmI1YjVlMjQ3ZTk0YWE5MGY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMTM2MCwxNCArMTM2MCwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1
cGRhdGVXZWJzaXRlUG9saWNpZXMoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKIAorICAgIHZvaWQg
Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmKTsKKyAgICB2b2lkIGNoYW5nZUZvbnRB
dHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYpOworCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIHZvaWQgcGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9u
KFdlYkNvcmU6OkZsb2F0UG9pbnQpOwogICAgIHN0ZDo6dHVwbGU8UmVmUHRyPFdlYkNvcmU6OlJh
bmdlPiwgTlNEaWN0aW9uYXJ5ICo+IGxvb2t1cFRleHRBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0
UG9pbnQpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCk7CiAgICAgdm9pZCBp
bW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRpZENv
bXBsZXRlKCk7Ci0gICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYpOwot
ICAgIHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5n
ZXMmJik7CiAKICAgICB2b2lkIGRhdGFEZXRlY3RvcnNEaWRQcmVzZW50VUkoV2ViQ29yZTo6UGFn
ZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQpOwogICAgIHZvaWQgZGF0YURldGVjdG9yc0RpZENoYW5n
ZVVJKFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGQ3
NWFjZWVhMGUwMDAyM2FiMjE5YjI5MTM5ZTM2MjI2YWY5YzZjNzYuLjg4NTBmNjQwZTIxZmRjNTU1
MzBjNGZjNjg5MWVlYTc0MmYwMTI0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTkwLDkgKzE5MCwxMCBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpCisjZW5kaWYK
KwogICAgIENoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMgY2hhbmdlcykKICAgICBDaGFu
Z2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyBjaGFuZ2VzKQot
I2VuZGlmCiAKICAgICBQcmVmZXJlbmNlc0RpZENoYW5nZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlIHN0b3JlKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGI3ODE3OTYwNTE5OWQ2M2M1ZDk4NGZkZDVl
ZGJiOWUyMzI3MWIwYWUuLjYyMzNiZjk2YTFjNjk4MTc2ZDVhMGJhNTExYWU0MzUwNmFkMDI4YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCkBAIC02Myw3ICs2Myw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250
cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgpAQCAtMTExMywyMCArMTExMiw2IEBAIHZvaWQg
V2ViUGFnZTo6ZGF0YURldGVjdG9yc0RpZEhpZGVVSShQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXlJ
RCBvdmVybGF5SUQpCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmNoYW5nZUZvbnRBdHRyaWJ1
dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKLXsKLSAgICBhdXRv
JiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7
Ci0gICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxl
KCkpCi0gICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGVUb1NlbGVjdGlvbihjaGFuZ2Vz
LmNyZWF0ZUVkaXRpbmdTdHlsZSgpLCBjaGFuZ2VzLmVkaXRBY3Rpb24oKSwgRWRpdG9yOjpDb2xv
ckZpbHRlck1vZGU6OkludmVydENvbG9yKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpjaGFuZ2VGb250
KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKLXsKLSAgICBhdXRvJiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKGZy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpCi0gICAgICAg
IGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGVUb1NlbGVjdGlvbihjaGFuZ2VzLmNyZWF0ZUVkaXRp
bmdTdHlsZSgpLCBFZGl0QWN0aW9uOjpTZXRGb250LCBFZGl0b3I6OkNvbG9yRmlsdGVyTW9kZTo6
SW52ZXJ0Q29sb3IpOwotfQotCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkg
JiYgIVBMQVRGT1JNKElPUykKIHZvaWQgV2ViUGFnZTo6cGxheWJhY2tUYXJnZXRTZWxlY3RlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRDb250
ZXh0JiB0YXJnZXRDb250ZXh0KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk3MWJhMTNkNjVkYmNhNmUxYmRlNzM5YjkzZmQ3Mjdk
N2IxOTMyNTEuLmZlMTJlYjQ0MWY1YzlhZDNjNWRmNjk1MzRmNjdiNzdmYTdjY2M4NTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MiBAQAorMjAxOC0xMC0wMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXSBbV0syXSBFeHBvc2Ugc29tZSBtb3JlIGVkaXRpbmcgU1BJIG9uIFdL
V2ViVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwMjMyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDk2MzM2OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyBBUEkgdGVzdHMgdG8g
ZXhlcmNpc2UgdGhlIG5ldyBTUElzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW06IEFkZGVkLgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6XSk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjp3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJU
ZXN0cy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjb2xsYXBzZVRvU3RhcnRdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjb2xsYXBzZVRvRW5kXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uRW5kOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25FbmQ6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgY29sbGFwc2VUb1N0YXJ0XSk6Cisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgY29sbGFwc2VUb0VuZF0pOgorCisgICAgICAgIFB1bGwg
c29tZSBjb21tb24gdGVzdGluZyBoZWxwZXJzIG91dCBvZiBOU0ZvbnRNYW5hZ2VyIGFuZCBpbnRv
IFRlc3RXS1dlYlZpZXcuCisKIDIwMTgtMTAtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBUZXN0V2ViS2l0QVBJLldLV2ViVmlldy5Qcm92
aXNpb25hbFVSTE5vdENoYW5nZSBBUEkgdGVzdCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGMxNWM0NzkyNDEzMmI4NDMxOWQyZDRlMTQ4ZGYwNGQ0ODAzMDU1MjEuLmNlZDUy
OTM5ODdlYTVhYTBkNmIxNjM1ZmI0NDE5MWQ0MjU3M2QxNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04NTgsNiArODU4LDcgQEAKIAkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNr
aW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGNDA1QkIxRDRDMENGODAwN0E5
NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi87IH07CiAJ
CUY0RkE5MTgxMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZBOTE3RjFF
NjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tICovOyB9OwogCQlG
NEZBOTE4MzFFNjE4NTdCMDA3QjhDMUQgLyogZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10
cmFpbGluZy1zcGFjZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0RkE5MTgyMUU2MTg1NjYwMDdCOEMxRCAvKiBkb3VibGUtY2xpY2st
ZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwgKi87IH07CisJCUY0RkI2ODI1MjE2
NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RkI2ODI0MjE2NDNFRkMwMDM0NjA3QSAv
KiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLzsgfTsKIAkJRjRGQzA3NzcyMEYwMTNCNjAwQ0Ew
NDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQzA3NzYyMEYwMTA4MTAwQ0Ew
NDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLmh0bWwgKi87IH07CiAJCUY2NjBBQTEx
MTVBNUY2MzEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGFDYWxsYmFja19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgKi87IH07CiAJCUY2NjBB
QTE1MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2NjBBQTE0MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3RlZEJ1bmRs
ZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCAqLzsgfTsKQEAg
LTIxMTYsNiArMjExNyw3IEBACiAJCUY0RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAvKiBza2lubnkt
YXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gInNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZBOTE3RjFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJW
aWV3TWFjRWRpdGluZ1Rlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNEZBOTE4MjFFNjE4NTY2MDA3QjhDMUQgLyogZG91YmxlLWNsaWNrLWRvZXMtbm90
LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBuYW1lID0g
ImRvdWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCI7IHBhdGgg
PSAiVGVzdHMvV2ViS2l0Q29jb2EvZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGlu
Zy1zcGFjZS5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlGNEZCNjgyNDIx
NjQzRUZDMDAzNDYwN0EgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRGQzA3NzYyMEYwMTA4MTAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0
b25lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAic2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2NjBBQTBDMTVBNUYwNjEwMDNBMTI0MyAvKiBH
ZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY2NjBBQTBGMTVBNUY2MjQwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJh
Y2tfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NjYsNiArMjU2
OCw3IEBACiAJCQkJRjQ2ODQ5QkQxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3Rz
Lm1tICovLAogCQkJCUY0M0UzQkJFMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0
cy5tbSAqLywKIAkJCQk1MTQ5NThCRDFGNzQyN0FDMDBFODdCQUQgLyogV0tXZWJWaWV3QXV0b2Zp
bGxUZXN0cy5tbSAqLywKKwkJCQlGNEZCNjgyNDIxNjQzRUZDMDAzNDYwN0EgLyogV0tXZWJWaWV3
RWRpdEFjdGlvbnMubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC00MDg4LDYgKzQwOTEsNyBAQAogCQkJCTdDNDE3RjMzMUQxOUUxNDgw
MEI4RUY1MyAvKiBXS1dlYlZpZXdEZWZhdWx0TmF2aWdhdGlvbkRlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDZFNjZBOTAxRjBENzU1OTAwMjZEODNDIC8qIFdLV2ViVmlld0RpYWdub3N0
aWNMb2dnaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRCNjQ3ODgxRjQxNjNENjAwNTFBODlF
IC8qIFdLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUY0RkI2ODI1MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9u
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGM0I5NEE3MUE3NzI2NzQwMERFMzI3MiAvKiBXS1dl
YlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gaW4gU291cmNlcyAqLywKIAkJCQlEMzRFMDg3NjFF
NEU0MkUxMDA1RkYxNEEgLyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGNEZBOTE4MTFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3Rz
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjOTljMGVjMmE3YjBiMDY3
NmI0NWNkYzU1OTlkZThlMmU5NmUzMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbQpAQCAtMCwwICsxLDE5MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oSU9TKSAm
JiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQgPFVJS2l0
L1VJRm9udERlc2NyaXB0b3IuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+
CisKK0BpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoRWRpdEFjdGlvblRlc3RpbmcpCistIChCT09M
KXF1ZXJ5U2VsZWN0b3JFeGlzdHM6KE5TU3RyaW5nICopcXVlcnlTZWxlY3RvcjsKK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEVkaXRBY3Rpb25UZXN0aW5nKQorCistIChC
T09MKXF1ZXJ5U2VsZWN0b3JFeGlzdHM6KE5TU3RyaW5nICopcXVlcnlTZWxlY3RvcgoreworICAg
IHJldHVybiBbW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgJUBgKSIsIHF1ZXJ5U2Vs
ZWN0b3JdXSBib29sVmFsdWVdOworfQorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yRWRpdEFjdGlv
blRlc3RpbmcoKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdj5XZWJLaXQ8L2Rpdj4i
XTsKKyAgICBbd2ViVmlldyBfc2V0RWRpdGFibGU6WUVTXTsKKyAgICBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1l
bnQuYm9keSwgMSkiXTsKKyAgICByZXR1cm4gd2ViVmlldzsKK30KKworVEVTVChXS1dlYlZpZXdF
ZGl0QWN0aW9ucywgTGlzdEluc2VydGlvbikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3
Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKworICAgIFt3ZWJWaWV3IGluc2VydE9yZGVyZWRMaXN0
Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9s
Il0pOworICAgIFt3ZWJWaWV3IGluc2VydE9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNUX0ZB
TFNFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJvbCJdKTsKKworICAgIFt3ZWJWaWV3
IGluc2VydFVub3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVy
eVNlbGVjdG9yRXhpc3RzOkAidWwiXSk7CisgICAgW3dlYlZpZXcgaW5zZXJ0VW5vcmRlcmVkTGlz
dDpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAi
dWwiXSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIENoYW5nZUluZGVudGF0aW9u
KQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwor
CisgICAgW3dlYlZpZXcgaW5kZW50Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVl
cnlTZWxlY3RvckV4aXN0czpAImJsb2NrcXVvdGUiXSk7CisgICAgW3dlYlZpZXcgaW5kZW50Om5p
bF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImJsb2Nr
cXVvdGUgPiBibG9ja3F1b3RlIl0pOworCisgICAgW3dlYlZpZXcgb3V0ZGVudDpuaWxdOworICAg
IEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJibG9ja3F1b3RlIl0p
OworICAgIFt3ZWJWaWV3IG91dGRlbnQ6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcg
cXVlcnlTZWxlY3RvckV4aXN0czpAImJsb2NrcXVvdGUiXSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3
RWRpdEFjdGlvbnMsIFNldEFsaWdubWVudCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3
Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKyAgICBhdXRvIHJ1blRlc3QgPSBbd2ViVmlld10gewor
ICAgICAgICBbd2ViVmlldyBhbGlnbkNlbnRlcjpuaWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoImNlbnRlciIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4
dC1hbGlnbiJdKTsKKyAgICAgICAgW3dlYlZpZXcgYWxpZ25MZWZ0Om5pbF07CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUSgibGVmdCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OkAidGV4dC1hbGlnbiJdKTsKKyAgICAgICAgW3dlYlZpZXcgYWxpZ25SaWdodDpuaWxdOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoInJpZ2h0IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LWFsaWduIl0pOworICAgICAgICBbd2ViVmlldyBhbGlnbkp1
c3RpZmllZDpuaWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImp1c3RpZnkiLCBbd2ViVmll
dyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQtYWxpZ24iXSk7CisgICAgfTsK
KworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuZGlyID0g
J3J0bCciIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgcnVuVGVzdCgpOworCisgICAgW3dl
YlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5kaXIgPSAnbHRyJyIgY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBydW5UZXN0KCk7Cit9CisKK1RFU1QoV0tXZWJWaWV3
RWRpdEFjdGlvbnMsIFRvZ2dsZVN0cmlrZVRocm91Z2gpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
d2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5p
bF07CisgICAgW3dlYlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIEVYUEVDVF9X
S19TVFJFUSgibGluZS10aHJvdWdoIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgibGluZS10aHJvdWdoIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0
aW9uRW5kOkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsKKworICAgIFt3
ZWJWaWV3IHRvZ2dsZVN0cmlrZVRocm91Z2g6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5v
bmUiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4
dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwg
W3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5kOkAiLXdlYmtpdC10ZXh0LWRlY29y
YXRpb25zLWluLWVmZmVjdCJdKTsKKworICAgIFt3ZWJWaWV3IGNvbGxhcHNlVG9FbmRdOworICAg
IFt3ZWJWaWV3IHRvZ2dsZVN0cmlrZVRocm91Z2g6bmlsXTsKKyAgICBbW3dlYlZpZXcgdGV4dElu
cHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJIZWxsbyJdOworICAgIEVYUEVDVF9XS19TVFJF
USgibGluZS10aHJvdWdoIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6
QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOworCisgICAgW3dlYlZpZXcg
dG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50
Vmlld10gaW5zZXJ0VGV4dDpAIkhlbGxvIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwg
W3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCItd2Via2l0LXRleHQtZGVj
b3JhdGlvbnMtaW4tZWZmZWN0Il0pOworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBD
aGFuZ2VGb250U2l6ZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFjdGlv
blRlc3RpbmcoKTsKKyAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICBFWFBFQ1RfRVEo
MTYsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJd
IGZsb2F0VmFsdWVdKTsKKworICAgIFt3ZWJWaWV3IGluY3JlYXNlU2l6ZTpuaWxdOworICAgIEVY
UEVDVF9FUSgxNywgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9u
dC1zaXplIl0gZmxvYXRWYWx1ZV0pOworICAgIFt3ZWJWaWV3IGluY3JlYXNlU2l6ZTpuaWxdOwor
ICAgIEVYUEVDVF9FUSgxOCwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0
OkAiZm9udC1zaXplIl0gZmxvYXRWYWx1ZV0pOworCisgICAgW3dlYlZpZXcgZGVjcmVhc2VTaXpl
Om5pbF07CisgICAgRVhQRUNUX0VRKDE3LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0
aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisgICAgW3dlYlZpZXcgZGVjcmVh
c2VTaXplOm5pbF07CisgICAgRVhQRUNUX0VRKDE2LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7Cit9CisKK1RFU1QoV0tX
ZWJWaWV3RWRpdEFjdGlvbnMsIFNldFRleHRDb2xvcikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3
ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKyAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmls
XTsKKworICAgIFt3ZWJWaWV3IHNldFRleHRDb2xvcjpbVUlDb2xvciBjb2xvcldpdGhSZWQ6MSBn
cmVlbjowIGJsdWU6MCBhbHBoYToxXSB3aXRoU2VuZGVyOm5pbF07CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJyZ2IoMjU1LCAwLCAwKSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OkAiY29sb3IiXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4
aXN0czpAImZvbnQiXSk7CisKKyAgICBbd2ViVmlldyBzZXRUZXh0Q29sb3I6W1VJQ29sb3IgY29s
b3JXaXRoUmVkOjAgZ3JlZW46MSBibHVlOjAgYWxwaGE6MC4yXSB3aXRoU2VuZGVyOm5pbF07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2JhKDAsIDI1NSwgMCwgMC4yKSIsIFt3ZWJWaWV3IHN0eWxl
UHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJmb250Il0pOworfQorCitURVNUKFdLV2ViVmll
d0VkaXRBY3Rpb25zLCBTZXRGb250RmFtaWx5KQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZp
ZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOwor
CisgICAgVUlGb250RGVzY3JpcHRvciAqZm9udERlc2NyaXB0b3IgPSBbVUlGb250RGVzY3JpcHRv
ciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczpAeyBVSUZvbnREZXNjcmlwdG9yRmFt
aWx5QXR0cmlidXRlOiBAIkhlbHZldGljYSIgfV07CisgICAgW3dlYlZpZXcgc2V0Rm9udDpbVUlG
b250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOjI0XSB3aXRoU2VuZGVy
Om5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWx2ZXRpY2EiLCBbd2ViVmlldyBzdHlsZVBy
b3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtZmFtaWx5Il0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgiMjRweCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9u
dC1zaXplIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5bGVQ
cm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXdlaWdodCJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIm5vcm1hbCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAi
Zm9udC1zdHlsZSJdKTsKKworICAgIFt3ZWJWaWV3IHNldEZvbnQ6W1VJRm9udCBmb250V2l0aE5h
bWU6QCJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIiBzaXplOjEyXSB3aXRoU2VuZGVyOm5pbF07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJcIlRpbWVzIE5ldyBSb21hblwiIiwgW3dlYlZpZXcgc3R5bGVQ
cm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIjEycHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZv
bnQtc2l6ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImJvbGQiLCBbd2ViVmlldyBzdHlsZVBy
b3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0Il0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJm
b250LXN0eWxlIl0pOworCisgICAgZm9udERlc2NyaXB0b3IgPSBbZm9udERlc2NyaXB0b3IgZm9u
dERlc2NyaXB0b3JXaXRoU3ltYm9saWNUcmFpdHM6VUlGb250RGVzY3JpcHRvclRyYWl0SXRhbGlj
IHwgVUlGb250RGVzY3JpcHRvclRyYWl0Qm9sZF07CisgICAgW3dlYlZpZXcgc2V0Rm9udDpbVUlG
b250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOjIwXSB3aXRoU2VuZGVy
Om5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWx2ZXRpY2EiLCBbd2ViVmlldyBzdHlsZVBy
b3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtZmFtaWx5Il0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgiMjBweCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9u
dC1zaXplIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiYm9sZCIsIFt3ZWJWaWV3IHN0eWxlUHJv
cGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJpdGFsaWMiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZv
bnQtc3R5bGUiXSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykgJiYgV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3RzLm1tCmluZGV4IDNlMTNhMTE0ODA5N2U5
MTdmNTZhY2FjYmVlYTM5ODgyZTgzNTczNTUuLjQwY2QxYWZiMzM5NDg4MjE3ZDQ2Y2M1ZjkwYmVk
M2VhNDhiNDRlMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Zv
bnRNYW5hZ2VyVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9u
dE1hbmFnZXJUZXN0cy5tbQpAQCAtNDMsMTEgKzQzLDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgTlNTdHJpbmcgKnNlbGVjdGVkVGV4dDsKIAogLSAoTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIGlkPiAqKXR5cGluZ0F0dHJpYnV0ZXM7Ci0tIChOU1N0cmluZyAqKXN0eWxlUHJv
cGVydHlBdFNlbGVjdGlvblN0YXJ0OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZTsKLS0gKE5TU3Ry
aW5nICopc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5kOihOU1N0cmluZyAqKXByb3BlcnR5TmFt
ZTsKIC0gKHZvaWQpc2VsZWN0TmV4dFdvcmQ7Ci0tICh2b2lkKWNvbGxhcHNlVG9TdGFydDsKLS0g
KHZvaWQpY29sbGFwc2VUb0VuZDsKIAogQGVuZAogCkBAIC04OSwyOCArODUsNiBAQAogICAgIFtz
ZWxmIHNlbGVjdFdvcmQ6bmlsXTsKIH0KIAotLSAodm9pZCljb2xsYXBzZVRvU3RhcnQKLXsKLSAg
ICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZVRvU3Rh
cnQoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKLX0KLQotLSAodm9pZCljb2xsYXBzZVRvRW5k
Ci17Ci0gICAgW3NlbGYgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkuY29sbGFw
c2VUb0VuZCgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwotfQotCi0tIChOU1N0cmluZyAqKXN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQotewot
ICAgIE5TU3RyaW5nICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImdldENv
bXB1dGVkU3R5bGUoZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5zdGFydENvbnRhaW5lci5w
YXJlbnRFbGVtZW50KVsnJUAnXSIsIHByb3BlcnR5TmFtZV07Ci0gICAgcmV0dXJuIFtzZWxmIHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XTsKLX0KLQotLSAoTlNTdHJpbmcgKilz
dHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCi17Ci0g
ICAgTlNTdHJpbmcgKnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZ2V0Q29t
cHV0ZWRTdHlsZShnZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApLmVuZENvbnRhaW5lci5wYXJl
bnRFbGVtZW50KVsnJUAnXSIsIHByb3BlcnR5TmFtZV07Ci0gICAgcmV0dXJuIFtzZWxmIHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6c2NyaXB0XTsKLX0KLQogQGVuZAogCiBzdGF0aWMgUmV0
YWluUHRyPEZvbnRNYW5hZ2VyVGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvckZvbnRNYW5hZ2VyVGVz
dGluZyhOU0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggZmU5MWFkZGViMDIyOGI2ZDJjZmMzMDQ3MGY5ZjZjZjM1
MTdlNThlNi4uMTMyNjljZjZmNDUyODM5MWEzYjZkY2I0MzFlMmZhYzQ5OGM5NzliOSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTY0LDYgKzY0LDEwIEBA
CiAtICh2b2lkKXdhaXRGb3JNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2U7CiAtICh2b2lkKXBl
cmZvcm1BZnRlckxvYWRpbmc6KGRpc3BhdGNoX2Jsb2NrX3QpYWN0aW9uczsKIC0gKHZvaWQpd2Fp
dEZvck5leHRQcmVzZW50YXRpb25VcGRhdGU7CistIChOU1N0cmluZyAqKXN0eWxlUHJvcGVydHlB
dFNlbGVjdGlvblN0YXJ0OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZTsKKy0gKE5TU3RyaW5nICop
c3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5kOihOU1N0cmluZyAqKXByb3BlcnR5TmFtZTsKKy0g
KHZvaWQpY29sbGFwc2VUb1N0YXJ0OworLSAodm9pZCljb2xsYXBzZVRvRW5kOwogQGVuZAogCiAj
aWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
Lm1tCmluZGV4IGFkZDAxM2YzMjg2ODUwNjkyOTIxNmZlYTQ4NWQ4NGZjNWVlZDgxMzguLjk4ZjRm
MDliNzVmNDkzYmUzZTA0MzczMDIzMTZlNDRlMWY3MGIzNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTMxNSw2ICszMTUsMjggQEAgTlNFdmVudE1h
c2sgX19zaW11bGF0ZWRfZm9yY2VDbGlja0Fzc29jaWF0ZWRFdmVudHNNYXNrKGlkIHNlbGYsIFNF
TCBfY21kKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKKy0gKE5T
U3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVy
dHlOYW1lCit7CisgICAgTlNTdHJpbmcgKnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiZ2V0Q29tcHV0ZWRTdHlsZShnZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApLnN0YXJ0
Q29udGFpbmVyLnBhcmVudEVsZW1lbnQpWyclQCddIiwgcHJvcGVydHlOYW1lXTsKKyAgICByZXR1
cm4gW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdOworfQorCistIChO
U1N0cmluZyAqKXN0eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDooTlNTdHJpbmcgKilwcm9wZXJ0
eU5hbWUKK3sKKyAgICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJnZXRDb21wdXRlZFN0eWxlKGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCkuZW5kQ29u
dGFpbmVyLnBhcmVudEVsZW1lbnQpWyclQCddIiwgcHJvcGVydHlOYW1lXTsKKyAgICByZXR1cm4g
W3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdOworfQorCistICh2b2lk
KWNvbGxhcHNlVG9TdGFydAoreworICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpAImdldFNl
bGVjdGlvbigpLmNvbGxhcHNlVG9TdGFydCgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworfQor
CistICh2b2lkKWNvbGxhcHNlVG9FbmQKK3sKKyAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZVRvRW5kKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07
Cit9CisKIEBlbmQKIAogI2lmIFBMQVRGT1JNKElPUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351478</attachid>
            <date>2018-10-02 21:53:07 -0700</date>
            <delta_ts>2018-10-02 21:54:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190232-20181002215306.patch</filename>
            <type>text/plain</type>
            <size>40730</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjMTRjZDZlMTBkM2VlNzdh
MTkzMjU5NDFlNzI1MjBiZmJlZjA1ZmYuLjQzMWFiMDViYzU3OTI0MjZiMGQ1YTQ4YWIxMjVmZjg4
N2U0M2MwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA2IEBACisyMDE4LTEwLTAyICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXSzJdIEV4
cG9zZSBzb21lIG1vcmUgZWRpdGluZyBTUEkgb24gV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ0OTYzMzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEV4cG9zZXMgYSBmZXcgYWRkaXRpb25hbCBlZGl0aW5nIGNvbW1hbmRzIGFzIFNQ
SSBvbiBXS1dlYlZpZXcsIGJ5IGRlZmluaW5nIGEgbmV3IChFZGl0QWN0aW9ucykgY2F0ZWdvcnkg
b24KKyAgICAgICAgV0tXZWJWaWV3LCB0aGF0IGFsc28gY29uZm9ybXMgdG8gPFVJUmVzcG9uZGVy
U3RhbmRhcmRFZGl0QWN0aW9ucz4uIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBuZWFybHkgYWxsIG9m
IHRoZQorICAgICAgICByZW1haW5pbmcgdW5pbXBsZW1lbnRlZCBtZXRob2RzIG9uIFVJUmVzcG9u
ZGVyU3RhbmRhcmRFZGl0QWN0aW9ucywgYW5kIHRoZSBuZXcgY2F0ZWdvcnkgYXVnbWVudHMgdGhp
cyBzZXQgb2YKKyAgICAgICAgZWRpdGluZyBtZXRob2RzIGJ5IGFkZGluZyBhZGRpdGlvbmFsIGVk
aXRpbmcgaGVscGVycyB0aGF0IGRvbid0IGN1cnJlbnRseSBleGlzdCBvbiBpT1MgKGUuZy4gdG9n
Z2xlU3RyaWtlVGhyb3VnaAorICAgICAgICBhbmQgaW5zZXJ0VW5vcmRlcmVkTGlzdCkuIFRoZSBu
YW1lcyBvZiB0aGVzZSBuZXcgbWV0aG9kcyBoYXZlIGJlZW4gbGFyZ2VseSBiZWVuIGJvcnJvd2Vk
IGZyb20gdGhlaXIgY291bnRlcnBhcnRzCisgICAgICAgIG9uIG1hY09TIChzZWU6IGBOU1Jlc3Bv
bmRlci5oYCkuCisKKyAgICAgICAgVGhlIG5ldyBlZGl0IGFjdGlvbnMgYXJlIGFkZGVkIGluIHRo
aXMgcGF0Y2ggb24gaU9TIGFyZToKKworICAgICAgICBgYGAKKyAgICAgICAgLSAodm9pZClhbGln
bkNlbnRlcjooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lkKWFsaWduSnVzdGlmaWVkOihpZClz
ZW5kZXI7CisgICAgICAgIC0gKHZvaWQpYWxpZ25MZWZ0OihpZClzZW5kZXI7CisgICAgICAgIC0g
KHZvaWQpYWxpZ25SaWdodDooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lkKWluZGVudDooaWQp
c2VuZGVyOworICAgICAgICAtICh2b2lkKWluc2VydE9yZGVyZWRMaXN0OihpZClzZW5kZXI7Cisg
ICAgICAgIC0gKHZvaWQpaW5zZXJ0VW5vcmRlcmVkTGlzdDooaWQpc2VuZGVyOworICAgICAgICAt
ICh2b2lkKW91dGRlbnQ6KGlkKXNlbmRlcjsKKyAgICAgICAgLSAodm9pZCl0b2dnbGVTdHJpa2VU
aHJvdWdoOihpZClzZW5kZXI7CisgICAgICAgIC0gKHZvaWQpc2V0Rm9udDooVUlGb250ICopZm9u
dCB3aXRoU2VuZGVyOihpZClzZW5kZXI7CisgICAgICAgIC0gKHZvaWQpc2V0VGV4dENvbG9yOihV
SUNvbG9yICopY29sb3Igd2l0aFNlbmRlcjooaWQpc2VuZGVyOworICAgICAgICBgYGAKKworICAg
ICAgICBUZXN0czogIFdLV2ViVmlld0VkaXRBY3Rpb25zLkxpc3RJbnNlcnRpb24KKyAgICAgICAg
ICAgICAgICBXS1dlYlZpZXdFZGl0QWN0aW9ucy5DaGFuZ2VJbmRlbnRhdGlvbgorICAgICAgICAg
ICAgICAgIFdLV2ViVmlld0VkaXRBY3Rpb25zLlNldEFsaWdubWVudAorICAgICAgICAgICAgICAg
IFdLV2ViVmlld0VkaXRBY3Rpb25zLlRvZ2dsZVN0cmlrZVRocm91Z2gKKyAgICAgICAgICAgICAg
ICBXS1dlYlZpZXdFZGl0QWN0aW9ucy5DaGFuZ2VGb250U2l6ZQorICAgICAgICAgICAgICAgIFdL
V2ViVmlld0VkaXRBY3Rpb25zLlNldFRleHRDb2xvcgorICAgICAgICAgICAgICAgIFdLV2ViVmll
d0VkaXRBY3Rpb25zLlNldEZvbnRGYW1pbHkKKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3Mv
VUlLaXRTUEkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IGNhblBlcmZvcm1BY3Rpb246d2l0aFNlbmRlcjpdKToKKwor
ICAgICAgICBVcGRhdGUgdGhpcyB0byBoYW5kbGUgdGhlIG5ldyBlZGl0aW5nIGFjdGlvbnMuIEZv
ciBub3csIHdlIHNpbXBseSB0cmVhdCBhbGwgb2YgdGhlIG5ldyBlZGl0IGFjdGlvbnMgaW4gdGhl
IHNhbWUKKyAgICAgICAgd2F5IGFzIHdlIGN1cnJlbnRseSB0cmVhdCBib2xkLCBpdGFsaWMgYW5k
IHVuZGVybGluZTogdGhhdCBpcywgdGhleSBhcmUgZW5hYmxlZCBvbmx5IHdoZW4gdGhlIHVzZXIg
aXMgaW4gYQorICAgICAgICByaWNobHkgY29udGVudGVkaXRhYmxlIGVsZW1lbnQuCisKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IHNldEZvbnQ6d2l0aFNlbmRlcjpdKToKKworICAgICAgICBDb25zdHJ1
Y3QgYW5kIHNlbmQgYSBzZXQgb2YgRm9udENoYW5nZXMuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3
IHNldFRleHRDb2xvcjp3aXRoU2VuZGVyOl0pOgorCisgICAgICAgIEludm9rZSAiRm9yZUNvbG9y
IiB3aXRoIHRoZSBzZXJpYWxpemVkIGNvbG9yIHJlcHJlc2VudGF0aW9uLiBUaGlzIGFsbG93cyB1
cyB0byBoYW5kbGUgYHJnYmEoKWAgY29sb3IgdmFsdWVzLAorICAgICAgICB3aGljaCBoZXggZm9y
bWF0IHdvdWxkIG5vdCBwZXJtaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICBBZGQgdGhlIG5ldyBTUEkgY2F0ZWdvcnkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y2hhbmdlRm9udCk6CisKKyAgICAgICAgUHVsbCBsb2dpYyBmb3IgYXBwbHlp
bmcgZm9udCBhbmQgZm9udCBhdHRyaWJ1dGUgc3R5bGUgY2hhbmdlcyBvdXQgb2YgbWFjT1Mtc3Bl
Y2lmaWMgY29kZSwgYW5kIGludG8KKyAgICAgICAgcGxhdGZvcm0tYWdub3N0aWMgY29kZSBpbiBX
ZWJQYWdlIGFuZCBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aDoKKworICAgICAgICBBZGQgdGhlIG5ldyBzdXBwb3J0ZWQgZWRpdGluZyBjb21tYW5kcyBhcyBz
dXBwb3J0ZWQgYWN0aW9ucyBpbiBXS1dlYlZpZXcuIFRoZSBvbmx5IG5ldyBlZGl0aW5nIGNvbW1h
bmRzIHRoYXQKKyAgICAgICAgYXJlbid0IHByZXNlbnQgaW4gdGhpcyBsaXN0IGFyZSAtc2V0Rm9u
dDp3aXRoU2VuZGVyOiBhbmQgLXNldENvbG9yOndpdGhTZW5kZXI6LCB3aGljaCBhcmUgbWFudWFs
bHkgaGFuZGxlZCBpbgorICAgICAgICBwbGFjZXMgd2hlcmUgdGhlIGBGT1JfRUFDSF9XS0NPTlRF
TlRWSUVXX0FDVElPTmAgbWFjcm8gaXMgb3RoZXJ3aXNlIHVzZWQuIEluIGEgZm9sbG93dXAsIHdl
IGNvdWxkIGNvbnNpZGVyCisgICAgICAgIGF1Z21lbnRpbmcgYEZPUl9FQUNIX1dLQ09OVEVOVFZJ
RVdfQUNUSU9OYCB0byBoYW5kbGUgYWN0aW9ucyB3aXRoIG11bHRpcGxlIGFyZ3VtZW50cy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorCisg
ICAgICAgIERlZmluZSBhIG5ldyBoZWxwZXIgbWFjcm8gaGVyZSB0byBkZWZpbmUgYm9pbGVycGxh
dGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAt4oCmRm9yV2ViVmlldyBlZGl0IGNvbW1hbmQKKyAg
ICAgICAgaW1wbGVtZW50YXRpb25zIHRoYXQgdHVybiBhcm91bmQgYW5kIGludm9rZSBgX3BhZ2Ut
PmV4ZWN1dGVFZGl0Q29tbWFuZGAgd2l0aCBubyBhZGRpdGlvbmFsIGFyZ3VtZW50cywgYW5kIGFu
CisgICAgICAgIGVkaXQgY29tbWFuZCBuYW1lIG1hdGNoaW5nIHRoYXQgb2YgdGhlIFdlYkNvcmUg
ZWRpdCBjb21tYW5kLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdG9nZ2xlU3RyaWtlVGhy
b3VnaEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5jcmVhc2VTaXpl
Rm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkZWNyZWFzZVNpemVGb3JX
ZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldEZvbnRGb3JXZWJWaWV3Ondp
dGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0VGV4dENvbG9yRm9yV2Vi
Vmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1B
Y3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6CisKKyAgICAgICAgQWRkIOKApkZvcldlYlZp
ZXcgcGx1bWJpbmcgZm9yIHRoZSBuZXcgZWRpdGluZyBhY3Rpb25zLCBzbyB0aGV5IHR1cm4gYXJv
dW5kIGFuZCBjYWxsIGludG8gV0tDb250ZW50VmlldyBieQorICAgICAgICBkZWZhdWx0LCBidXQg
YmVoYXZpb3IgbWF5IGJlIG92ZXJyaWRkZW4gaW4gV0tXZWJWaWV3LgorCisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhbmdlRm9u
dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFuZ2VGb250KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhbmdl
Rm9udEF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFu
Z2VGb250KTogRGVsZXRlZC4KKwogMjAxOC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBQYXJzZWRVUkxTdHJpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggMDBjYWExOGJjYThj
ZGIxMTVlMWMyMDhkY2Q1NDQ3MTI1OGNhNzBjZC4uMTg5MzU3NTIxOWI2ZDEzOTk3MDYzYzI2NWNk
M2ZmMDZkMDE0ZWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9z
L1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJ
LmgKQEAgLTE5NSwxMSArMTk1LDE0IEBAIHR5cGVkZWYgZW51bSB7CiBAZW5kCiAKIHR5cGVkZWYg
ZW51bSB7Ci0gICAgVUlGb250VHJhaXRQbGFpbiA9IDB4MDAwMDAwMDAsCisgICAgVUlGb250VHJh
aXRQbGFpbiA9IDAsCisgICAgVUlGb250VHJhaXRJdGFsaWMgPSAxIDw8IDAsCisgICAgVUlGb250
VHJhaXRCb2xkID0gMSA8PCAxLAogfSBVSUZvbnRUcmFpdDsKIAogQGludGVyZmFjZSBVSUZvbnQg
KCkKICsgKFVJRm9udCAqKWZvbnRXaXRoRmFtaWx5TmFtZTooTlNTdHJpbmcgKilmYW1pbHlOYW1l
IHRyYWl0czooVUlGb250VHJhaXQpdHJhaXRzIHNpemU6KENHRmxvYXQpZm9udFNpemU7CistIChV
SUZvbnRUcmFpdCl0cmFpdHM7CiBAZW5kCiAKIHR5cGVkZWYgZW51bSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwOTJjNjU0YzJmNGNj
YWQxODE0YTVjMGRlNWUxNTY0ZTAxNTkyZmFjLi4yNzUwZmZjZmNmYTA0M2YzOGIwNGRhOTBlMDg0
YTdlYjBhZjIxYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTEzOTQsNiArMTM5NCwxMiBAQCBGT1JfRUFDSF9XS0NPTlRFTlRWSUVX
X0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVXKQogCiAgICAgI3VuZGVmIEZP
UldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXCiAKKyAgICBpZiAoYWN0aW9u
ID09IEBzZWxlY3RvcihzZXRUZXh0Q29sb3I6c2VuZGVyOikpCisgICAgICAgIHJldHVybiBzZWxm
LnVzZXNTdGFuZGFyZENvbnRlbnRWaWV3ICYmIFtfY29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlv
bkZvcldlYlZpZXc6YWN0aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsKKworICAgIGlmIChhY3Rpb24g
PT0gQHNlbGVjdG9yKHNldEZvbnQ6c2VuZGVyOikpCisgICAgICAgIHJldHVybiBzZWxmLnVzZXNT
dGFuZGFyZENvbnRlbnRWaWV3ICYmIFtfY29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldl
YlZpZXc6YWN0aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsKKwogICAgIHJldHVybiBbc3VwZXIgY2Fu
UGVyZm9ybUFjdGlvbjphY3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJdOwogfQogCkBAIC0xNDEyLDYg
KzE0MTgsMTYgQEAgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05f
VE9fV0tDT05URU5UVklFVykKICAgICByZXR1cm4gW3N1cGVyIHRhcmdldEZvckFjdGlvbjphY3Rp
b24gd2l0aFNlbmRlcjpzZW5kZXJdOwogfQogCistICh2b2lkKXNldEZvbnQ6KFVJRm9udCAqKWZv
bnQgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBbX2NvbnRlbnRWaWV3IHNldEZvbnRGb3JXZWJW
aWV3OmZvbnQgc2VuZGVyOnNlbmRlcl07Cit9CisKKy0gKHZvaWQpc2V0VGV4dENvbG9yOihVSUNv
bG9yICopY29sb3Igc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBbX2NvbnRlbnRWaWV3IHNldFRl
eHRDb2xvckZvcldlYlZpZXc6Y29sb3Igc2VuZGVyOnNlbmRlcl07Cit9CisKIHN0YXRpYyBpbmxp
bmUgQ0dGbG9hdCBmbG9vclRvRGV2aWNlUGl4ZWwoQ0dGbG9hdCBpbnB1dCwgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IpCiB7CiAgICAgcmV0dXJuIENHRmxvb3IoaW5wdXQgKiBkZXZpY2VTY2FsZUZh
Y3RvcikgLyBkZXZpY2VTY2FsZUZhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDA2MmYxNWU1Yjc5OTZkYTBm
NDM1ZDI2M2U2ZjhhYWU5MzcxNjllMzYuLjk5ZGFkMmUyNGY0NzUxZjZhYmU1ZjA0NDI1MWRmMTdl
MDI2MDQ4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzY2LDkgKzM2NiwyNyBAQCB0eXBlZGVmIE5TX09QVElP
TlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIAogQGVuZAogCi0jaWYgIVRBUkdFVF9PU19J
UEhPTkUKKyNpZiBUQVJHRVRfT1NfSVBIT05FCisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3ICgpIDxV
SVJlc3BvbmRlclN0YW5kYXJkRWRpdEFjdGlvbnM+CistICh2b2lkKWFsaWduQ2VudGVyOihpZClz
ZW5kZXI7CistICh2b2lkKWFsaWduSnVzdGlmaWVkOihpZClzZW5kZXI7CistICh2b2lkKWFsaWdu
TGVmdDooaWQpc2VuZGVyOworLSAodm9pZClhbGlnblJpZ2h0OihpZClzZW5kZXI7CistICh2b2lk
KWluZGVudDooaWQpc2VuZGVyOworLSAodm9pZClpbnNlcnRPcmRlcmVkTGlzdDooaWQpc2VuZGVy
OworLSAodm9pZClpbnNlcnRVbm9yZGVyZWRMaXN0OihpZClzZW5kZXI7CistICh2b2lkKW91dGRl
bnQ6KGlkKXNlbmRlcjsKKy0gKHZvaWQpdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQpc2VuZGVyOwor
LSAodm9pZClzZXRGb250OihVSUZvbnQgKilmb250IHNlbmRlcjooaWQpc2VuZGVyOworLSAodm9p
ZClzZXRUZXh0Q29sb3I6KFVJQ29sb3IgKiljb2xvciBzZW5kZXI6KGlkKXNlbmRlcjsKK0BlbmQK
KworI2Vsc2UKKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLTlNUZXh0RmluZGVyQ2xpZW50KSA8
TlNUZXh0RmluZGVyQ2xpZW50PgogQGVuZAorCiAjZW5kaWYKIAogQGludGVyZmFjZSBXS1dlYlZp
ZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDQyMmYyNmFlYTE4NDhhNDA5YTgyODdjMzI2NTY1YjNmM2VkMTM3YzAuLmUzYTBkOTdjNWYw
YWRmNDU2NGRkNjU0ZGUxOTNjNGRlNjA0N2UyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9F
dmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Gb250QXR0cmlidXRl
Q2hhbmdlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR2xvYmFs
V2luZG93SWRlbnRpZmllci5oPgpAQCAtNzA0NCw2ICs3MDQ1LDIyIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjphZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZE1JTUVU
eXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihtaW1lVHlwZSksIG1fcGFnZUlEKTsKIH0KIAor
dm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRy
aWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZv
bnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKK3sK
KyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFn
ZUlEKTsKK30KKwogI2lmIFBMQVRGT1JNKENPQ09BKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggZTY2YzU0YThhMzI1ODNiYmY3OGIwYjczZjdhZDlhM2NlY2NjNjU1OC4u
OTIzZTRhOGIwMjA4ZTY5ODJmNTA3ZjM0YWVlNzgzOGJhZWI3ZTIzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY5OCwxMSArNjk4LDEyIEBAIHB1YmxpYzoKICAg
ICBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEqIHNjcm9sbGluZ1BlcmZv
cm1hbmNlRGF0YSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmdldCgpOyB9
CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKKyAgICB2b2lkIGNoYW5nZUZvbnRBdHRyaWJ1
dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYpOworICAgIHZvaWQgY2hhbmdlRm9u
dChXZWJDb3JlOjpGb250Q2hhbmdlcyYmKTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lk
IGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGlu
Z1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVy
bmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBib29sIHJlZ2lzdGVyVW5k
b0dyb3VwKTsKICAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFz
eW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgQXR0cmli
dXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKLSAgICB2b2lkIGNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVD
aGFuZ2VzJiYpOwotICAgIHZvaWQgY2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmKTsK
ICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCiAgICAgdm9pZCBz
dGFydFdpbmRvd0RyYWcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBhMjM5ZGU5ZGM1ZTFlYzA4NTQ2ZWQz
MWVhMzcyZDBkYzUxNDQ3YzUwLi5kNzY5YmFjYzkyZTUyMGVlZjcyZjE4NTFmMzk4MmRjNTViYzU5
MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xMjEsNyArMTIxLDE4IEBAIHR5cGVkZWYgc3RkOjpwYWly
PFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QsIEludGVyYWN0aW9uSW5mb3Jt
YXRpb25DCiAgICAgTShzZWxlY3RBbGwpIFwKICAgICBNKHRvZ2dsZUJvbGRmYWNlKSBcCiAgICAg
TSh0b2dnbGVJdGFsaWNzKSBcCi0gICAgTSh0b2dnbGVVbmRlcmxpbmUpCisgICAgTSh0b2dnbGVV
bmRlcmxpbmUpIFwKKyAgICBNKGluY3JlYXNlU2l6ZSkgXAorICAgIE0oZGVjcmVhc2VTaXplKSBc
CisgICAgTSh0b2dnbGVTdHJpa2VUaHJvdWdoKSBcCisgICAgTShpbnNlcnRVbm9yZGVyZWRMaXN0
KSBcCisgICAgTShpbnNlcnRPcmRlcmVkTGlzdCkgXAorICAgIE0oaW5kZW50KSBcCisgICAgTShv
dXRkZW50KSBcCisgICAgTShhbGlnbkxlZnQpIFwKKyAgICBNKGFsaWduUmlnaHQpIFwKKyAgICBN
KGFsaWduQ2VudGVyKSBcCisgICAgTShhbGlnbkp1c3RpZmllZCkKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKQEAgLTMxOSw2ICszMzAsOSBAQCBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihE
RUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKIERFQ0xBUkVfV0tDT05U
RU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQogI3VuZGVmIERF
Q0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXCiAKKy0gKHZvaWQpc2V0Rm9u
dEZvcldlYlZpZXc6KFVJRm9udCAqKWZvbnRGYW1pbHkgc2VuZGVyOihpZClzZW5kZXI7CistICh2
b2lkKXNldFRleHRDb2xvckZvcldlYlZpZXc6KFVJQ29sb3IgKiljb2xvciBzZW5kZXI6KGlkKXNl
bmRlcjsKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAtICh2b2lkKV93ZWJUb3VjaEV2ZW50
Oihjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQmKXRvdWNoRXZlbnQgcHJldmVudHNO
YXRpdmVHZXN0dXJlczooQk9PTClwcmV2ZW50c0RlZmF1bHQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IGIwMWM0ZjZhM2M1NGU5OWM3MTY1NTc4YmFlNzIyZjM4ZWNiOGU1OGMuLmFlMjJhZjQ2
Zjg1ZDJiNDg4MTBlMDkzMWE5ZWY4MDYzOTY5YzI1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzUs
NiArNzUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
YXRhRGV0ZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hhbmdlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnB1dE1v
ZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMjI3OSw2ICsyMjgwLDUwIEBAIEZPUldBUkRfQUNU
SU9OX1RPX1dLV0VCVklFVyhfcGFzdGVBc1F1b3RhdGlvbikKICAgICBbW1VJS2V5Ym9hcmRJbXBs
IHNoYXJlZEluc3RhbmNlXSByZXBsYWNlVGV4dDpzZW5kZXJdOwogfQogCisjZGVmaW5lIFdFQkNP
UkVfQ09NTUFORF9GT1JfV0VCVklFVyhjb21tYW5kKSAtICh2b2lkKWNvbW1hbmQgIyMgRm9yV2Vi
VmlldzooaWQpc2VuZGVyIHsgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgjY29tbWFuZCAjIyBf
cyk7IH0KKworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGluc2VydE9yZGVyZWRMaXN0KTsK
K1dFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhpbnNlcnRVbm9yZGVyZWRMaXN0KTsKK1dFQkNP
UkVfQ09NTUFORF9GT1JfV0VCVklFVyhpbmRlbnQpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJW
SUVXKG91dGRlbnQpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGFsaWduTGVmdCk7CitX
RUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoYWxpZ25SaWdodCk7CitXRUJDT1JFX0NPTU1BTkRf
Rk9SX1dFQlZJRVcoYWxpZ25DZW50ZXIpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGFs
aWduSnVzdGlmaWVkKTsKKworLSAodm9pZCl0b2dnbGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzoo
aWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgiU3RyaWtlVGhyb3Vn
aCJfcyk7Cit9CisKKy0gKHZvaWQpaW5jcmVhc2VTaXplRm9yV2ViVmlldzooaWQpc2VuZGVyCit7
CisgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgiRm9udFNpemVEZWx0YSJfcywgIjEiX3Mp
OworfQorCistICh2b2lkKWRlY3JlYXNlU2l6ZUZvcldlYlZpZXc6KGlkKXNlbmRlcgoreworICAg
IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoIkZvbnRTaXplRGVsdGEiX3MsICItMSJfcyk7Cit9
CisKKy0gKHZvaWQpc2V0Rm9udEZvcldlYlZpZXc6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClz
ZW5kZXIKK3sKKyAgICBXZWJDb3JlOjpGb250Q2hhbmdlcyBjaGFuZ2VzOworICAgIGNoYW5nZXMu
c2V0Rm9udEZhbWlseShmb250LmZhbWlseU5hbWUpOworICAgIGNoYW5nZXMuc2V0Rm9udE5hbWUo
Zm9udC5mb250TmFtZSk7CisgICAgY2hhbmdlcy5zZXRGb250U2l6ZShmb250LnBvaW50U2l6ZSk7
CisgICAgY2hhbmdlcy5zZXRCb2xkKGZvbnQudHJhaXRzICYgVUlGb250VHJhaXRCb2xkKTsKKyAg
ICBjaGFuZ2VzLnNldEl0YWxpYyhmb250LnRyYWl0cyAmIFVJRm9udFRyYWl0SXRhbGljKTsKKyAg
ICBfcGFnZS0+Y2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKTsKK30KKworLSAodm9pZClzZXRU
ZXh0Q29sb3JGb3JXZWJWaWV3OihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClzZW5kZXIKK3sK
KyAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiX3MsIFdlYkNvcmU6OkNv
bG9yKGNvbG9yLkNHQ29sb3IpLnNlcmlhbGl6ZWQoKSk7Cit9CisKKyN1bmRlZiBXRUJDT1JFX0NP
TU1BTkRfRk9SX1dFQlZJRVcKKwogLSAoTlNEaWN0aW9uYXJ5ICopdGV4dFN0eWxpbmdBdFBvc2l0
aW9uOihVSVRleHRQb3NpdGlvbiAqKXBvc2l0aW9uIGluRGlyZWN0aW9uOihVSVRleHRTdG9yYWdl
RGlyZWN0aW9uKWRpcmVjdGlvbgogewogICAgIGlmICghcG9zaXRpb24gfHwgIV9wYWdlLT5lZGl0
b3JTdGF0ZSgpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKQpAQCAtMjMzOCw4ICsyMzgzLDE0IEBA
IEZPUldBUkRfQUNUSU9OX1RPX1dLV0VCVklFVyhfcGFzdGVBc1F1b3RhdGlvbikKICAgICAgICAg
cmV0dXJuIGVkaXRvclN0YXRlLmlzQ29udGVudFJpY2hseUVkaXRhYmxlICYmIGVkaXRvclN0YXRl
LnNlbGVjdGlvbklzUmFuZ2UgJiYgIV9zaG93aW5nVGV4dFN0eWxlT3B0aW9uczsKICAgICBpZiAo
X3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zKQogICAgICAgICByZXR1cm4gKGFjdGlvbiA9PSBAc2Vs
ZWN0b3IodG9nZ2xlQm9sZGZhY2U6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUl0YWxp
Y3M6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVVuZGVybGluZTopKTsKLSAgICBpZiAo
YWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVCb2xkZmFjZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IodG9nZ2xlSXRhbGljczopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlVW5kZXJsaW5l
OikpCisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQm9sZGZhY2U6KSB8fCBhY3Rp
b24gPT0gQHNlbGVjdG9yKHRvZ2dsZUl0YWxpY3M6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRv
Z2dsZVVuZGVybGluZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlU3RyaWtlVGhyb3Vn
aDopCisgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5zZXJ0T3JkZXJlZExpc3Q6KSB8
fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluc2VydFVub3JkZXJlZExpc3Q6KSB8fCBhY3Rpb24gPT0g
QHNlbGVjdG9yKGluZGVudDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Iob3V0ZGVudDopCisgICAg
ICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoYWxpZ25MZWZ0OikgfHwgYWN0aW9uID09IEBzZWxl
Y3RvcihhbGlnblJpZ2h0OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnbkNlbnRlcjopIHx8
IGFjdGlvbiA9PSBAc2VsZWN0b3IoYWxpZ25KdXN0aWZpZWQ6KQorICAgICAgICB8fCBhY3Rpb24g
PT0gQHNlbGVjdG9yKGluY3JlYXNlU2l6ZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVjcmVh
c2VTaXplOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihzZXRGb250OnNlbmRlcjopIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3Ioc2V0VGV4dENvbG9yOnNlbmRlcjopKSB7CisgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBtb3JlIG51YW5jZWQgaW4gdGhlIGZ1dHVyZSwgcmF0aGVyIHRoYW4g
cmV0dXJuaW5nIFlFUyBmb3IgYWxsIHJpY2hseSBlZGl0YWJsZSBhcmVhcy4gRm9yIGluc3RhbmNl
LCBvdXRkZW50OiBzaG91bGQgYmUgZGlzYWJsZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGlzIGFscmVh
ZHkKKyAgICAgICAgLy8gYXQgdGhlIG91dGVybW9zdCBpbmRlbnRhdGlvbiBsZXZlbC4KICAgICAg
ICAgcmV0dXJuIGVkaXRvclN0YXRlLmlzQ29udGVudFJpY2hseUVkaXRhYmxlOworICAgIH0KICAg
ICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihjdXQ6KSkKICAgICAgICAgcmV0dXJuICFlZGl0b3JT
dGF0ZS5pc0luUGFzc3dvcmRGaWVsZCAmJiBlZGl0b3JTdGF0ZS5pc0NvbnRlbnRFZGl0YWJsZSAm
JiBlZGl0b3JTdGF0ZS5zZWxlY3Rpb25Jc1JhbmdlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggNDg0MThjY2U4NDkyZTAyNDcy
NDdmYmE5ZWMyZTA3ZTI3YzBkMjY3OC4uMTA5ZDFhNGU2MmNlMjAyNmMxMjkxNDMyYTRhY2E5Y2Q1
OGRjZjE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCkBAIC01MSw3ICs1MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVy
bmF0aXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRHJhZ0l0ZW0uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5n
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9MZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaD4KQEAgLTYyOSwyMiArNjI4LDYgQEAgYm9vbCBXZWJQYWdlUHJveHk6
OmFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkKCkKICAgICByZXR1cm4gTWFjQXBwbGljYXRpb246
OmlzQXBwbGVNYWlsKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmli
dXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmIGNoYW5nZXMpCi17Ci0gICAgaWYg
KCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV9w
YWdlSUQpOwotfQotICAgIAotdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6
Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9u
dChXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOwotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZWRpdG9yU3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJiBlZGl0b3JTdGF0ZSkKIHsKICAg
ICBib29sIGNvdWxkQ2hhbmdlU2VjdXJlSW5wdXRTdGF0ZSA9IG1fZWRpdG9yU3RhdGUuaXNJblBh
c3N3b3JkRmllbGQgIT0gZWRpdG9yU3RhdGUuaXNJblBhc3N3b3JkRmllbGQgfHwgbV9lZGl0b3JT
dGF0ZS5zZWxlY3Rpb25Jc05vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDIyYjgwOTAxMTI5NzYyODBkYjNmZWYyMTg4ZTJlN2I4YWJlZDk0
ZDkuLmQwMzA4OGNhZmRjY2M4ZGY0ZmY4MjY2NjZhMTZiY2RhNzY3MzQ1ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNTUsNiArMTU1LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TmFtZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRBdHRy
aWJ1dGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb3JtU3RhdGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lLmg+CkBAIC05OTgsNiArOTk5LDIwIEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVk
aXRvclN0YXRlKEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlv
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBXZWJQYWdlOjpjaGFuZ2VGb250QXR0cmli
dXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmIGNoYW5nZXMpCit7CisgICAgYXV0
byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
OworICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJs
ZSgpKQorICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oY2hhbmdl
cy5jcmVhdGVFZGl0aW5nU3R5bGUoKSwgY2hhbmdlcy5lZGl0QWN0aW9uKCksIEVkaXRvcjo6Q29s
b3JGaWx0ZXJNb2RlOjpJbnZlcnRDb2xvcik7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y2hhbmdlRm9u
dChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCit7CisgICAgYXV0byYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmIChm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAg
ICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oY2hhbmdlcy5jcmVhdGVFZGl0
aW5nU3R5bGUoKSwgRWRpdEFjdGlvbjo6U2V0Rm9udCwgRWRpdG9yOjpDb2xvckZpbHRlck1vZGU6
OkludmVydENvbG9yKTsKK30KKwogdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmRXaXRo
Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVu
dCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGV4ZWN1dGVFZGl0Q29tbWFuZChjb21t
YW5kTmFtZSwgYXJndW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDE1MGFiNGZlZDllNGE2Y2Q0MzEzNDUyNzY2Yjg5ODBkODc1Y2NmODguLmEx
M2Q5MWJhN2IwMDBkMjI5NjBkOTJiNWI1ZTI0N2U5NGFhOTBmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEzNjAsMTQgKzEzNjAsMTUgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgdXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0Rh
dGEmJik7CiAKKyAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJik7Cisg
ICAgdm9pZCBjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdl
cyYmKTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHBlcmZvcm1JbW1lZGlhdGVBY3Rp
b25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKICAgICBzdGQ6OnR1cGxl
PFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBsb29rdXBUZXh0QXRMb2Nh
dGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRpZFVw
ZGF0ZSgpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCk7CiAgICAgdm9pZCBp
bW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpOwotICAgIHZvaWQgY2hhbmdlRm9udChXZWJDb3Jl
OjpGb250Q2hhbmdlcyYmKTsKLSAgICB2b2lkIGNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6
OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYpOwogCiAgICAgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkUHJl
c2VudFVJKFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEKTsKICAgICB2b2lkIGRh
dGFEZXRlY3RvcnNEaWRDaGFuZ2VVSShXZWJDb3JlOjpQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXlJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCBkNzVhY2VlYTBlMDAwMjNhYjIxOWIyOTEzOWUzNjIyNmFmOWM2Yzc2
Li44ODUwZjY0MGUyMWZkYzU1NTMwYzRmYzY4OTFlZWE3NDJmMDEyNDJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTE5MCw5ICsxOTAsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgUGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRT
ZWxlY3Rpb24oKQorI2VuZGlmCisKICAgICBDaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2Vz
IGNoYW5nZXMpCiAgICAgQ2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0
ZUNoYW5nZXMgY2hhbmdlcykKLSNlbmRpZgogCiAgICAgUHJlZmVyZW5jZXNEaWRDaGFuZ2Uoc3Ry
dWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBiNzgxNzk2
MDUxOTlkNjNjNWQ5ODRmZGQ1ZWRiYjllMjMyNzFiMGFlLi42MjMzYmY5NmExYzY5ODE3NmQ1YTBi
YTUxMWFlNDM1MDZhZDAyOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNjMsNyArNjMsNiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmli
dXRlQ2hhbmdlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KQEAgLTExMTMs
MjAgKzExMTIsNiBAQCB2b2lkIFdlYlBhZ2U6OmRhdGFEZXRlY3RvcnNEaWRIaWRlVUkoUGFnZU92
ZXJsYXk6OlBhZ2VPdmVybGF5SUQgb3ZlcmxheUlEKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdl
OjpjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmIGNo
YW5nZXMpCi17Ci0gICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5pc0NvbnRlbnRFZGl0YWJsZSgpKQotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxl
VG9TZWxlY3Rpb24oY2hhbmdlcy5jcmVhdGVFZGl0aW5nU3R5bGUoKSwgY2hhbmdlcy5lZGl0QWN0
aW9uKCksIEVkaXRvcjo6Q29sb3JGaWx0ZXJNb2RlOjpJbnZlcnRDb2xvcik7Ci19Ci0KLXZvaWQg
V2ViUGFnZTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCi17Ci0g
ICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpOwotICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRF
ZGl0YWJsZSgpKQotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24o
Y2hhbmdlcy5jcmVhdGVFZGl0aW5nU3R5bGUoKSwgRWRpdEFjdGlvbjo6U2V0Rm9udCwgRWRpdG9y
OjpDb2xvckZpbHRlck1vZGU6OkludmVydENvbG9yKTsKLX0KLQogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCiB2b2lkIFdlYlBhZ2U6OnBsYXli
YWNrVGFyZ2V0U2VsZWN0ZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpNZWRp
YVBsYXliYWNrVGFyZ2V0Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NzFiYTEzZDY1ZGJj
YTZlMWJkZTczOWI5M2ZkNzI3ZDdiMTkzMjUxLi5mZTEyZWI0NDFmNWM5YWQzYzVkZjY5NTM0ZjY3
Yjc3ZmE3Y2NjODUzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTgtMTAtMDIgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gRXhwb3NlIHNvbWUgbW9y
ZSBlZGl0aW5nIFNQSSBvbiBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDIzMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQ5NjMz
Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBuZXcgQVBJIHRlc3RzIHRvIGV4ZXJjaXNlIHRoZSBuZXcgU1BJcy4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tOiBB
ZGRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOl0pOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgY29s
bGFwc2VUb1N0YXJ0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgY29sbGFw
c2VUb0VuZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvblN0YXJ0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3
IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3R5bGVQ
cm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3R5
bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5kOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGNv
bGxhcHNlVG9TdGFydF0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGNvbGxhcHNlVG9FbmRd
KToKKworICAgICAgICBQdWxsIHNvbWUgY29tbW9uIHRlc3RpbmcgaGVscGVycyBvdXQgb2YgTlNG
b250TWFuYWdlciBhbmQgaW50byBUZXN0V0tXZWJWaWV3LgorCiAyMDE4LTEwLTAyICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogVGVzdFdlYktp
dEFQSS5XS1dlYlZpZXcuUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UgQVBJIHRlc3QgaXMgZmFpbGlu
ZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMTVjNDc5MjQxMzJiODQzMTlkMmQ0ZTE0OGRm
MDRkNDgwMzA1NTIxLi5jZWQ1MjkzOTg3ZWE1YWEwZDZiMTYzNWZiNDQxOTFkNDI1NzNkMTU0IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODU4LDYgKzg1OCw3IEBACiAJCUY0RjQwNUJEMUQ0
QzBEMUMwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1h
dWRpby5odG1sICovOyB9OwogCQlGNEZBOTE4MTFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3
TWFjRWRpdGluZ1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdU
ZXN0cy5tbSAqLzsgfTsKIAkJRjRGQTkxODMxRTYxODU3QjAwN0I4QzFEIC8qIGRvdWJsZS1jbGlj
ay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZBOTE4MjFFNjE4NTY2MDA3QjhD
MUQgLyogZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sICov
OyB9OworCQlGNEZCNjgyNTIxNjQzRUZDMDAzNDYwN0EgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZCNjgy
NDIxNjQzRUZDMDAzNDYwN0EgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gKi87IH07CiAJCUY0
RkMwNzc3MjBGMDEzQjYwMENBMDQzQyAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RkMwNzc2MjBGMDEwODEwMENBMDQzQyAvKiBzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS5odG1s
ICovOyB9OwogCQlGNjYwQUExMTE1QTVGNjMxMDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2NjBBQTBGMTVBNUY2MjQwMDNBMTI0MyAv
KiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUu
Y3BwICovOyB9OwogCQlGNjYwQUExNTE1QTYxQUJGMDAzQTEyNDMgLyogSW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjYwQUExNDE1QTYxQUJGMDAzQTEy
NDMgLyogSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zX0J1
bmRsZS5jcHAgKi87IH07CkBAIC0yMTE2LDYgKzIxMTcsNyBAQAogCQlGNEY0MDVCQjFENEMwQ0Y4
MDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1h
dWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGQTkxN0YxRTYxODQ5
QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGQTkxODIxRTYxODU2NjAwN0I4QzFEIC8qIGRv
dWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgbmFtZSA9ICJkb3VibGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5n
LXNwYWNlLmh0bWwiOyBwYXRoID0gIlRlc3RzL1dlYktpdENvY29hL2RvdWJsZS1jbGljay1kb2Vz
LW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJRjRGQjY4MjQyMTY0M0VGQzAwMzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25z
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3RWRpdEFjdGlvbnMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RkMwNzc2MjBGMDEwODEwMENBMDQzQyAvKiBzaWdu
aWZpY2FudC10ZXh0LW1pbGVzdG9uZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNpZ25pZmljYW50LXRleHQt
bWlsZXN0b25lLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjYwQUEwQzE1
QTVGMDYxMDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNjYwQUEwRjE1QTVGNjI0MDAzQTEyNDMgLyogR2V0SW5qZWN0
ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6
YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNTY2LDYgKzI1NjgsNyBAQAogCQkJCUY0Njg0OUJEMUVFRjU4RTQwMEI5MzdGRSAv
KiBVSVBhc3RlYm9hcmRUZXN0cy5tbSAqLywKIAkJCQlGNDNFM0JCRTIwREFEQTFFMDBBNEU3RUQg
LyogV0tTY3JvbGxWaWV3VGVzdHMubW0gKi8sCiAJCQkJNTE0OTU4QkQxRjc0MjdBQzAwRTg3QkFE
IC8qIFdLV2ViVmlld0F1dG9maWxsVGVzdHMubW0gKi8sCisJCQkJRjRGQjY4MjQyMTY0M0VGQzAw
MzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBp
b3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDA4OCw2ICs0MDkxLDcgQEAKIAkJ
CQk3QzQxN0YzMzFEMTlFMTQ4MDBCOEVGNTMgLyogV0tXZWJWaWV3RGVmYXVsdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2RTY2QTkwMUYwRDc1NTkwMDI2RDgzQyAv
KiBXS1dlYlZpZXdEaWFnbm9zdGljTG9nZ2luZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQjY0
Nzg4MUY0MTYzRDYwMDUxQTg5RSAvKiBXS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6
YXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQlGNEZCNjgyNTIxNjQzRUZDMDAzNDYwN0EgLyog
V0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjNCOTRBNzFBNzcy
Njc0MDBERTMyNzIgLyogV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRDM0RTA4NzYxRTRFNDJFMTAwNUZGMTRBIC8qIFdLV2ViVmlld0dldENvbnRlbnRz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRGQTkxODExRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2Vi
Vmlld01hY0VkaXRpbmdUZXN0cy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNTk0Mjc2OWYxY2ViMGMzMDQ0MWViNDlhZjcyMjBiMTM1YWExNzk5Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMu
bW0KQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKwor
I2lmIFBMQVRGT1JNKElPUykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlVJS2l0U1BJ
LmgiCisjaW1wb3J0IDxVSUtpdC9VSUZvbnREZXNjcmlwdG9yLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgorCitAaW50ZXJmYWNlIFRlc3RXS1dlYlZpZXcgKEVkaXRBY3Rp
b25UZXN0aW5nKQorLSAoQk9PTClxdWVyeVNlbGVjdG9yRXhpc3RzOihOU1N0cmluZyAqKXF1ZXJ5
U2VsZWN0b3I7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChFZGl0QWN0
aW9uVGVzdGluZykKKworLSAoQk9PTClxdWVyeVNlbGVjdG9yRXhpc3RzOihOU1N0cmluZyAqKXF1
ZXJ5U2VsZWN0b3IKK3sKKyAgICByZXR1cm4gW1tzZWxmIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoYCVAYCkiLCBxdWVyeVNlbGVjdG9yXV0gYm9vbFZhbHVlXTsKK30KKworQGVuZAorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
d2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
IjxkaXY+V2ViS2l0PC9kaXY+Il07CisgICAgW3dlYlZpZXcgX3NldEVkaXRhYmxlOllFU107Cisg
ICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigp
LnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHksIDEpIl07CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9
CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIExpc3RJbnNlcnRpb24pCit7CisgICAgYXV0
byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisKKyAgICBbd2ViVmll
dyBpbnNlcnRPcmRlcmVkTGlzdDpuaWxdOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5
U2VsZWN0b3JFeGlzdHM6QCJvbCJdKTsKKyAgICBbd2ViVmlldyBpbnNlcnRPcmRlcmVkTGlzdDpu
aWxdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wi
XSk7CisKKyAgICBbd2ViVmlldyBpbnNlcnRVbm9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAInVsIl0pOworICAgIFt3ZWJWaWV3
IGluc2VydFVub3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVl
cnlTZWxlY3RvckV4aXN0czpAInVsIl0pOworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25z
LCBDaGFuZ2VJbmRlbnRhdGlvbikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRp
dEFjdGlvblRlc3RpbmcoKTsKKworICAgIFt3ZWJWaWV3IGluZGVudDpuaWxdOworICAgIEVYUEVD
VF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJibG9ja3F1b3RlIl0pOworICAg
IFt3ZWJWaWV3IGluZGVudDpuaWxdOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2Vs
ZWN0b3JFeGlzdHM6QCJibG9ja3F1b3RlID4gYmxvY2txdW90ZSJdKTsKKworICAgIFt3ZWJWaWV3
IG91dGRlbnQ6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhp
c3RzOkAiYmxvY2txdW90ZSJdKTsKKyAgICBbd2ViVmlldyBvdXRkZW50Om5pbF07CisgICAgRVhQ
RUNUX0ZBTFNFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJibG9ja3F1b3RlIl0pOwor
fQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBTZXRBbGlnbm1lbnQpCit7CisgICAgYXV0
byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisgICAgYXV0byBydW5U
ZXN0ID0gW3dlYlZpZXddIHsKKyAgICAgICAgW3dlYlZpZXcgYWxpZ25DZW50ZXI6bmlsXTsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKCJjZW50ZXIiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRT
ZWxlY3Rpb25TdGFydDpAInRleHQtYWxpZ24iXSk7CisgICAgICAgIFt3ZWJWaWV3IGFsaWduTGVm
dDpuaWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImxlZnQiLCBbd2ViVmlldyBzdHlsZVBy
b3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQtYWxpZ24iXSk7CisgICAgICAgIFt3ZWJWaWV3
IGFsaWduUmlnaHQ6bmlsXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJyaWdodCIsIFt3ZWJW
aWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1hbGlnbiJdKTsKKyAgICAg
ICAgW3dlYlZpZXcgYWxpZ25KdXN0aWZpZWQ6bmlsXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KCJqdXN0aWZ5IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0
LWFsaWduIl0pOworICAgIH07CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJk
b2N1bWVudC5ib2R5LmRpciA9ICdydGwnIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIHJ1
blRlc3QoKTsKKworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmJv
ZHkuZGlyID0gJ2x0ciciIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgcnVuVGVzdCgpOwor
fQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBUb2dnbGVTdHJpa2VUaHJvdWdoKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3
ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworICAgIFt3ZWJWaWV3IHRvZ2dsZVN0cmlrZVRocm91Z2g6
bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImxpbmUtdGhyb3VnaCIsIFt3ZWJWaWV3IHN0eWxl
UHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVm
ZmVjdCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImxpbmUtdGhyb3VnaCIsIFt3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1l
ZmZlY3QiXSk7CisKKyAgICBbd2ViVmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJub25lIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgibm9uZSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDpA
Ii13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7CisKKyAgICBbd2ViVmlldyBj
b2xsYXBzZVRvRW5kXTsKKyAgICBbd2ViVmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07Cisg
ICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiSGVsbG8iXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoImxpbmUtdGhyb3VnaCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvblN0YXJ0OkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJd
KTsKKworICAgIFt3ZWJWaWV3IHRvZ2dsZVN0cmlrZVRocm91Z2g6bmlsXTsKKyAgICBbW3dlYlZp
ZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJIZWxsbyJdOworICAgIEVYUEVD
VF9XS19TVFJFUSgibm9uZSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0
OkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsKK30KKworVEVTVChXS1dl
YlZpZXdFZGl0QWN0aW9ucywgQ2hhbmdlRm9udFNpemUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
d2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5p
bF07CisgICAgRVhQRUNUX0VRKDE2LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisKKyAgICBbd2ViVmlldyBpbmNyZWFz
ZVNpemU6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMTcsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRT
ZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKKyAgICBbd2ViVmlldyBp
bmNyZWFzZVNpemU6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMTgsIFtbd2ViVmlldyBzdHlsZVByb3Bl
cnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKKworICAgIFt3
ZWJWaWV3IGRlY3JlYXNlU2l6ZTpuaWxdOworICAgIEVYUEVDVF9FUSgxNywgW1t3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0gZmxvYXRWYWx1ZV0pOwor
ICAgIFt3ZWJWaWV3IGRlY3JlYXNlU2l6ZTpuaWxdOworICAgIEVYUEVDVF9FUSgxNiwgW1t3ZWJW
aWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0gZmxvYXRWYWx1
ZV0pOworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBTZXRUZXh0Q29sb3IpCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisgICAgW3dl
YlZpZXcgc2VsZWN0QWxsOm5pbF07CisKKyAgICBbd2ViVmlldyBzZXRUZXh0Q29sb3I6W1VJQ29s
b3IgY29sb3JXaXRoUmVkOjEgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0gc2VuZGVyOm5pbF07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2IoMjU1LCAwLCAwKSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcg
cXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7CisKKyAgICBbd2ViVmlldyBzZXRUZXh0Q29s
b3I6W1VJQ29sb3IgY29sb3JXaXRoUmVkOjAgZ3JlZW46MSBibHVlOjAgYWxwaGE6MC4yXSBzZW5k
ZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYmEoMCwgMjU1LCAwLCAwLjIpIiwgW3dl
YlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJjb2xvciJdKTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7Cit9CisKK1RF
U1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIFNldEZvbnRGYW1pbHkpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisgICAgW3dlYlZpZXcgc2VsZWN0
QWxsOm5pbF07CisKKyAgICBVSUZvbnREZXNjcmlwdG9yICpmb250RGVzY3JpcHRvciA9IFtVSUZv
bnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOkB7IFVJRm9udERl
c2NyaXB0b3JGYW1pbHlBdHRyaWJ1dGU6IEAiSGVsdmV0aWNhIiB9XTsKKyAgICBbd2ViVmlldyBz
ZXRGb250OltVSUZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmZvbnREZXNjcmlwdG9yIHNpemU6MjRd
IHNlbmRlcjpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsdmV0aWNhIiwgW3dlYlZpZXcg
c3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIjI0cHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFy
dDpAImZvbnQtc2l6ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vcm1hbCIsIFt3ZWJWaWV3
IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJub3JtYWwiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpAImZvbnQtc3R5bGUiXSk7CisKKyAgICBbd2ViVmlldyBzZXRGb250OltVSUZvbnQgZm9u
dFdpdGhOYW1lOkAiVGltZXNOZXdSb21hblBTLUJvbGRNVCIgc2l6ZToxMl0gc2VuZGVyOm5pbF07
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJcIlRpbWVzIE5ldyBSb21hblwiIiwgW3dlYlZpZXcgc3R5
bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIjEycHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpA
ImZvbnQtc2l6ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImJvbGQiLCBbd2ViVmlldyBzdHls
ZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0Il0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6
QCJmb250LXN0eWxlIl0pOworCisgICAgZm9udERlc2NyaXB0b3IgPSBbZm9udERlc2NyaXB0b3Ig
Zm9udERlc2NyaXB0b3JXaXRoU3ltYm9saWNUcmFpdHM6VUlGb250RGVzY3JpcHRvclRyYWl0SXRh
bGljIHwgVUlGb250RGVzY3JpcHRvclRyYWl0Qm9sZF07CisgICAgW3dlYlZpZXcgc2V0Rm9udDpb
VUlGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOjIwXSBzZW5kZXI6
bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbHZldGljYSIsIFt3ZWJWaWV3IHN0eWxlUHJv
cGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKCIyMHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250
LXNpemUiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJib2xkIiwgW3dlYlZpZXcgc3R5bGVQcm9w
ZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXdlaWdodCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIml0YWxpYyIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9u
dC1zdHlsZSJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKSAmJiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KaW5kZXggM2UxM2ExMTQ4MDk3ZTkx
N2Y1NmFjYWNiZWVhMzk4ODJlODM1NzM1NS4uNDBjZDFhZmIzMzk0ODgyMTdkNDZjYzVmOTBiZWQz
ZWE0OGI0NGUyNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9u
dE1hbmFnZXJUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250
TWFuYWdlclRlc3RzLm1tCkBAIC00MywxMSArNDMsNyBAQAogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBOU1N0cmluZyAqc2VsZWN0ZWRUZXh0OwogCiAtIChOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopdHlwaW5nQXR0cmlidXRlczsKLS0gKE5TU3RyaW5nICopc3R5bGVQcm9w
ZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lOwotLSAoTlNTdHJp
bmcgKilzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1l
OwogLSAodm9pZClzZWxlY3ROZXh0V29yZDsKLS0gKHZvaWQpY29sbGFwc2VUb1N0YXJ0OwotLSAo
dm9pZCljb2xsYXBzZVRvRW5kOwogCiBAZW5kCiAKQEAgLTg5LDI4ICs4NSw2IEBACiAgICAgW3Nl
bGYgc2VsZWN0V29yZDpuaWxdOwogfQogCi0tICh2b2lkKWNvbGxhcHNlVG9TdGFydAotewotICAg
IFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9TdGFy
dCgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwotfQotCi0tICh2b2lkKWNvbGxhcHNlVG9FbmQK
LXsKLSAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5jb2xsYXBz
ZVRvRW5kKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Ci19Ci0KLS0gKE5TU3RyaW5nICopc3R5
bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCi17Ci0g
ICAgTlNTdHJpbmcgKnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZ2V0Q29t
cHV0ZWRTdHlsZShnZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApLnN0YXJ0Q29udGFpbmVyLnBh
cmVudEVsZW1lbnQpWyclQCddIiwgcHJvcGVydHlOYW1lXTsKLSAgICByZXR1cm4gW3NlbGYgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdOwotfQotCi0tIChOU1N0cmluZyAqKXN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKLXsKLSAg
ICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJnZXRDb21w
dXRlZFN0eWxlKGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCkuZW5kQ29udGFpbmVyLnBhcmVu
dEVsZW1lbnQpWyclQCddIiwgcHJvcGVydHlOYW1lXTsKLSAgICByZXR1cm4gW3NlbGYgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdOwotfQotCiBAZW5kCiAKIHN0YXRpYyBSZXRh
aW5QdHI8Rm9udE1hbmFnZXJUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yRm9udE1hbmFnZXJUZXN0
aW5nKE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaAppbmRleCBmZTkxYWRkZWIwMjI4YjZkMmNmYzMwNDcwZjlmNmNmMzUx
N2U1OGU2Li4xMzI2OWNmNmY0NTI4MzkxYTNiNmRjYjQzMWUyZmFjNDk4Yzk3OWI5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNjQsNiArNjQsMTAgQEAK
IC0gKHZvaWQpd2FpdEZvck1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpcGVy
Zm9ybUFmdGVyTG9hZGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb25zOwogLSAodm9pZCl3YWl0
Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZTsKKy0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lOworLSAoTlNTdHJpbmcgKilz
dHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lOworLSAo
dm9pZCljb2xsYXBzZVRvU3RhcnQ7CistICh2b2lkKWNvbGxhcHNlVG9FbmQ7CiBAZW5kCiAKICNp
ZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KaW5kZXggYWRkMDEzZjMyODY4NTA2OTI5MjE2ZmVhNDg1ZDg0ZmM1ZWVkODEzOC4uOThmNGYw
OWI3NWY0OTNiZTNlMDQzNzMwMjMxNmU0NGUxZjcwYjM1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMzE1LDYgKzMxNSwyOCBAQCBOU0V2ZW50TWFz
ayBfX3NpbXVsYXRlZF9mb3JjZUNsaWNrQXNzb2NpYXRlZEV2ZW50c01hc2soaWQgc2VsZiwgU0VM
IF9jbWQpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorLSAoTlNT
dHJpbmcgKilzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDooTlNTdHJpbmcgKilwcm9wZXJ0
eU5hbWUKK3sKKyAgICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJnZXRDb21wdXRlZFN0eWxlKGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCkuc3RhcnRD
b250YWluZXIucGFyZW50RWxlbWVudClbJyVAJ10iLCBwcm9wZXJ0eU5hbWVdOworICAgIHJldHVy
biBbc2VsZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF07Cit9CisKKy0gKE5T
U3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5kOihOU1N0cmluZyAqKXByb3BlcnR5
TmFtZQoreworICAgIE5TU3RyaW5nICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImdldENvbXB1dGVkU3R5bGUoZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5lbmRDb250
YWluZXIucGFyZW50RWxlbWVudClbJyVAJ10iLCBwcm9wZXJ0eU5hbWVdOworICAgIHJldHVybiBb
c2VsZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF07Cit9CisKKy0gKHZvaWQp
Y29sbGFwc2VUb1N0YXJ0Cit7CisgICAgW3NlbGYgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZ2V0U2Vs
ZWN0aW9uKCkuY29sbGFwc2VUb1N0YXJ0KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Cit9CisK
Ky0gKHZvaWQpY29sbGFwc2VUb0VuZAoreworICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpA
ImdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9FbmQoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsK
K30KKwogQGVuZAogCiAjaWYgUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351479</attachid>
            <date>2018-10-02 21:55:37 -0700</date>
            <delta_ts>2018-10-03 10:51:48 -0700</delta_ts>
            <desc>Update ChangeLog</desc>
            <filename>bug-190232-20181002215536.patch</filename>
            <type>text/plain</type>
            <size>40707</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjMTRjZDZlMTBkM2VlNzdh
MTkzMjU5NDFlNzI1MjBiZmJlZjA1ZmYuLmNkMjc3YzkxMGQ3ZmI4YWQ1YThjMjZhYjhhODVkMzQ3
NDhjOTIwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA2IEBACisyMDE4LTEwLTAyICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXSzJdIEV4
cG9zZSBzb21lIG1vcmUgZWRpdGluZyBTUEkgb24gV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ0OTYzMzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEV4cG9zZXMgYSBmZXcgYWRkaXRpb25hbCBlZGl0aW5nIGNvbW1hbmRzIGFzIFNQ
SSBvbiBXS1dlYlZpZXcsIGJ5IGRlZmluaW5nIGEgbmV3IGV4dGVuc2lvbiBvbiBXS1dlYlZpZXcg
dGhhdAorICAgICAgICBhbHNvIGNvbmZvcm1zIHRvIDxVSVJlc3BvbmRlclN0YW5kYXJkRWRpdEFj
dGlvbnM+LiBUaGlzIHBhdGNoIGltcGxlbWVudHMgbmVhcmx5IGFsbCBvZiB0aGUgcmVtYWluaW5n
CisgICAgICAgIHVuaW1wbGVtZW50ZWQgbWV0aG9kcyBvbiBVSVJlc3BvbmRlclN0YW5kYXJkRWRp
dEFjdGlvbnMsIGFuZCB0aGUgbmV3IGNhdGVnb3J5IGF1Z21lbnRzIHRoaXMgc2V0IG9mIGVkaXRp
bmcKKyAgICAgICAgbWV0aG9kcyBieSBhZGRpbmcgYWRkaXRpb25hbCBlZGl0aW5nIGhlbHBlcnMg
dGhhdCBkb24ndCBjdXJyZW50bHkgZXhpc3Qgb24gaU9TIChlLmcuIHRvZ2dsZVN0cmlrZVRocm91
Z2ggYW5kCisgICAgICAgIGluc2VydFVub3JkZXJlZExpc3QpLiBUaGUgbmFtZXMgb2YgdGhlc2Ug
bmV3IG1ldGhvZHMgaGF2ZSBiZWVuIGxhcmdlbHkgYmVlbiBib3Jyb3dlZCBmcm9tIHRoZWlyIGNv
dW50ZXJwYXJ0cyBvbgorICAgICAgICBtYWNPUyAoc2VlOiBgTlNSZXNwb25kZXIuaGApLgorCisg
ICAgICAgIFRoZSBuZXcgZWRpdCBhY3Rpb25zIGFyZSBhZGRlZCBpbiB0aGlzIHBhdGNoIG9uIGlP
UyBhcmU6CisKKyAgICAgICAgYGBgCisgICAgICAgIC0gKHZvaWQpYWxpZ25DZW50ZXI6KGlkKXNl
bmRlcjsKKyAgICAgICAgLSAodm9pZClhbGlnbkp1c3RpZmllZDooaWQpc2VuZGVyOworICAgICAg
ICAtICh2b2lkKWFsaWduTGVmdDooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lkKWFsaWduUmln
aHQ6KGlkKXNlbmRlcjsKKyAgICAgICAgLSAodm9pZClpbmRlbnQ6KGlkKXNlbmRlcjsKKyAgICAg
ICAgLSAodm9pZClpbnNlcnRPcmRlcmVkTGlzdDooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lk
KWluc2VydFVub3JkZXJlZExpc3Q6KGlkKXNlbmRlcjsKKyAgICAgICAgLSAodm9pZClvdXRkZW50
OihpZClzZW5kZXI7CisgICAgICAgIC0gKHZvaWQpdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQpc2Vu
ZGVyOworICAgICAgICAtICh2b2lkKXNldEZvbnQ6KFVJRm9udCAqKWZvbnQgd2l0aFNlbmRlcjoo
aWQpc2VuZGVyOworICAgICAgICAtICh2b2lkKXNldFRleHRDb2xvcjooVUlDb2xvciAqKWNvbG9y
IHdpdGhTZW5kZXI6KGlkKXNlbmRlcjsKKyAgICAgICAgYGBgCisKKyAgICAgICAgVGVzdHM6ICBX
S1dlYlZpZXdFZGl0QWN0aW9ucy5MaXN0SW5zZXJ0aW9uCisgICAgICAgICAgICAgICAgV0tXZWJW
aWV3RWRpdEFjdGlvbnMuQ2hhbmdlSW5kZW50YXRpb24KKyAgICAgICAgICAgICAgICBXS1dlYlZp
ZXdFZGl0QWN0aW9ucy5TZXRBbGlnbm1lbnQKKyAgICAgICAgICAgICAgICBXS1dlYlZpZXdFZGl0
QWN0aW9ucy5Ub2dnbGVTdHJpa2VUaHJvdWdoCisgICAgICAgICAgICAgICAgV0tXZWJWaWV3RWRp
dEFjdGlvbnMuQ2hhbmdlRm9udFNpemUKKyAgICAgICAgICAgICAgICBXS1dlYlZpZXdFZGl0QWN0
aW9ucy5TZXRUZXh0Q29sb3IKKyAgICAgICAgICAgICAgICBXS1dlYlZpZXdFZGl0QWN0aW9ucy5T
ZXRGb250RmFtaWx5CisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBjYW5QZXJmb3JtQWN0aW9uOndpdGhTZW5kZXI6XSk6CisKKyAgICAgICAgVXBkYXRl
IHRoaXMgdG8gaGFuZGxlIHRoZSBuZXcgZWRpdGluZyBhY3Rpb25zLiBGb3Igbm93LCB3ZSBzaW1w
bHkgdHJlYXQgYWxsIG9mIHRoZSBuZXcgZWRpdCBhY3Rpb25zIGluIHRoZSBzYW1lCisgICAgICAg
IHdheSBhcyB3ZSBjdXJyZW50bHkgdHJlYXQgYm9sZCwgaXRhbGljIGFuZCB1bmRlcmxpbmU6IHRo
YXQgaXMsIHRoZXkgYXJlIGVuYWJsZWQgb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIGEKKyAgICAg
ICAgcmljaGx5IGNvbnRlbnRlZGl0YWJsZSBlbGVtZW50LgorCisgICAgICAgICgtW1dLV2ViVmll
dyBzZXRGb250OndpdGhTZW5kZXI6XSk6CisKKyAgICAgICAgQ29uc3RydWN0IGFuZCBzZW5kIGEg
c2V0IG9mIEZvbnRDaGFuZ2VzLgorCisgICAgICAgICgtW1dLV2ViVmlldyBzZXRUZXh0Q29sb3I6
d2l0aFNlbmRlcjpdKToKKworICAgICAgICBJbnZva2UgIkZvcmVDb2xvciIgd2l0aCB0aGUgc2Vy
aWFsaXplZCBjb2xvciByZXByZXNlbnRhdGlvbi4gVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIGBy
Z2JhKClgIGNvbG9yIHZhbHVlcywKKyAgICAgICAgd2hpY2ggaGV4IGZvcm1hdCB3b3VsZCBub3Qg
cGVybWl0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Lmg6CisKKyAgICAgICAgQWRkIHRoZSBuZXcgU1BJLgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hhbmdlRm9u
dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQp
OgorCisgICAgICAgIFB1bGwgbG9naWMgZm9yIGFwcGx5aW5nIGZvbnQgYW5kIGZvbnQgYXR0cmli
dXRlIHN0eWxlIGNoYW5nZXMgb3V0IG9mIG1hY09TLXNwZWNpZmljIGNvZGUsIGFuZCBpbnRvCisg
ICAgICAgIHBsYXRmb3JtLWFnbm9zdGljIGNvZGUgaW4gV2ViUGFnZSBhbmQgV2ViUGFnZVByb3h5
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisKKyAgICAgICAgQWRkIHRoZSBu
ZXcgc3VwcG9ydGVkIGVkaXRpbmcgY29tbWFuZHMgYXMgc3VwcG9ydGVkIGFjdGlvbnMgaW4gV0tX
ZWJWaWV3LiBUaGUgb25seSBuZXcgZWRpdGluZyBjb21tYW5kcyB0aGF0CisgICAgICAgIGFyZW4n
dCBwcmVzZW50IGluIHRoaXMgbGlzdCBhcmUgLXNldEZvbnQ6d2l0aFNlbmRlcjogYW5kIC1zZXRD
b2xvcjp3aXRoU2VuZGVyOiwgd2hpY2ggYXJlIG1hbnVhbGx5IGhhbmRsZWQgaW4KKyAgICAgICAg
cGxhY2VzIHdoZXJlIHRoZSBgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT05gIG1hY3JvIGlz
IG90aGVyd2lzZSB1c2VkLiBJbiBhIGZvbGxvd3VwLCB3ZSBjb3VsZCBjb25zaWRlcgorICAgICAg
ICBhdWdtZW50aW5nIGBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTmAgdG8gaGFuZGxlIGFj
dGlvbnMgd2l0aCBtdWx0aXBsZSBhcmd1bWVudHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKworICAgICAgICBEZWZpbmUgYSBuZXcgaGVs
cGVyIG1hY3JvIGhlcmUgdG8gZGVmaW5lIGJvaWxlcnBsYXRlIGltcGxlbWVudGF0aW9ucyBvZiB0
aGUgLeKApkZvcldlYlZpZXcgZWRpdCBjb21tYW5kCisgICAgICAgIGltcGxlbWVudGF0aW9ucyB0
aGF0IHR1cm4gYXJvdW5kIGFuZCBpbnZva2UgYF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmRgIHdp
dGggbm8gYWRkaXRpb25hbCBhcmd1bWVudHMsIGFuZCBhbgorICAgICAgICBlZGl0IGNvbW1hbmQg
bmFtZSBtYXRjaGluZyB0aGF0IG9mIHRoZSBXZWJDb3JlIGVkaXQgY29tbWFuZC4KKworICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IHRvZ2dsZVN0cmlrZVRocm91Z2hGb3JXZWJWaWV3Ol0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGluY3JlYXNlU2l6ZUZvcldlYlZpZXc6XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgZGVjcmVhc2VTaXplRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBzZXRGb250Rm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IHNldFRleHRDb2xvckZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2Vu
ZGVyOl0pOgorCisgICAgICAgIEFkZCDigKZGb3JXZWJWaWV3IHBsdW1iaW5nIGZvciB0aGUgbmV3
IGVkaXRpbmcgYWN0aW9ucywgc28gdGhleSB0dXJuIGFyb3VuZCBhbmQgY2FsbCBpbnRvIFdLQ29u
dGVudFZpZXcgYnkKKyAgICAgICAgZGVmYXVsdCwgYnV0IGJlaGF2aW9yIG1heSBiZSBvdmVycmlk
ZGVuIGluIFdLV2ViVmlldy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1
dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Y2hhbmdlRm9udCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhbmdlRm9udCk6IERlbGV0ZWQuCisKIDIw
MTgtMTAtMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZW1vdmUgUGFyc2VkVVJMU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L2lvcy9VSUtpdFNQSS5oCmluZGV4IDAwY2FhMThiY2E4Y2RiMTE1ZTFjMjA4ZGNkNTQ0NzEyNThj
YTcwY2QuLjE4OTM1NzUyMTliNmQxMzk5NzA2M2MyNjVjZDNmZjA2ZDAxNGVkNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0xOTUsMTEgKzE5NSwxNCBA
QCB0eXBlZGVmIGVudW0gewogQGVuZAogCiB0eXBlZGVmIGVudW0gewotICAgIFVJRm9udFRyYWl0
UGxhaW4gPSAweDAwMDAwMDAwLAorICAgIFVJRm9udFRyYWl0UGxhaW4gPSAwLAorICAgIFVJRm9u
dFRyYWl0SXRhbGljID0gMSA8PCAwLAorICAgIFVJRm9udFRyYWl0Qm9sZCA9IDEgPDwgMSwKIH0g
VUlGb250VHJhaXQ7CiAKIEBpbnRlcmZhY2UgVUlGb250ICgpCiArIChVSUZvbnQgKilmb250V2l0
aEZhbWlseU5hbWU6KE5TU3RyaW5nICopZmFtaWx5TmFtZSB0cmFpdHM6KFVJRm9udFRyYWl0KXRy
YWl0cyBzaXplOihDR0Zsb2F0KWZvbnRTaXplOworLSAoVUlGb250VHJhaXQpdHJhaXRzOwogQGVu
ZAogCiB0eXBlZGVmIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggMDkyYzY1NGMyZjRjY2FkMTgxNGE1YzBkZTVlMTU2NGUwMTU5
MmZhYy4uMjc1MGZmY2ZjZmEwNDNmMzhiMDRkYTkwZTA4NGE3ZWIwYWYyMWE5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMzk0LDYg
KzEzOTQsMTIgQEAgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05f
VE9fV0tDT05URU5UVklFVykKIAogICAgICN1bmRlZiBGT1JXQVJEX0NBTlBFUkZPUk1BQ1RJT05f
VE9fV0tDT05URU5UVklFVwogCisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2V0VGV4dENv
bG9yOnNlbmRlcjopKQorICAgICAgICByZXR1cm4gc2VsZi51c2VzU3RhbmRhcmRDb250ZW50Vmll
dyAmJiBbX2NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OmFjdGlvbiB3aXRo
U2VuZGVyOnNlbmRlcl07CisKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzZXRGb250OnNl
bmRlcjopKQorICAgICAgICByZXR1cm4gc2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldyAmJiBb
X2NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OmFjdGlvbiB3aXRoU2VuZGVy
OnNlbmRlcl07CisKICAgICByZXR1cm4gW3N1cGVyIGNhblBlcmZvcm1BY3Rpb246YWN0aW9uIHdp
dGhTZW5kZXI6c2VuZGVyXTsKIH0KIApAQCAtMTQxMiw2ICsxNDE4LDE2IEBAIEZPUl9FQUNIX1dL
Q09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcpCiAgICAg
cmV0dXJuIFtzdXBlciB0YXJnZXRGb3JBY3Rpb246YWN0aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsK
IH0KIAorLSAodm9pZClzZXRGb250OihVSUZvbnQgKilmb250IHNlbmRlcjooaWQpc2VuZGVyCit7
CisgICAgW19jb250ZW50VmlldyBzZXRGb250Rm9yV2ViVmlldzpmb250IHNlbmRlcjpzZW5kZXJd
OworfQorCistICh2b2lkKXNldFRleHRDb2xvcjooVUlDb2xvciAqKWNvbG9yIHNlbmRlcjooaWQp
c2VuZGVyCit7CisgICAgW19jb250ZW50VmlldyBzZXRUZXh0Q29sb3JGb3JXZWJWaWV3OmNvbG9y
IHNlbmRlcjpzZW5kZXJdOworfQorCiBzdGF0aWMgaW5saW5lIENHRmxvYXQgZmxvb3JUb0Rldmlj
ZVBpeGVsKENHRmxvYXQgaW5wdXQsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIHJl
dHVybiBDR0Zsb29yKGlucHV0ICogZGV2aWNlU2NhbGVGYWN0b3IpIC8gZGV2aWNlU2NhbGVGYWN0
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaAppbmRleCAwNjJmMTVlNWI3OTk2ZGEwZjQzNWQyNjNlNmY4YWFlOTM3MTY5ZTM2
Li45OWRhZDJlMjRmNDc1MWY2YWJlNWYwNDQyNTFkZjE3ZTAyNjA0OGVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAg
LTM2Niw5ICszNjYsMjcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RF
ZGdlKSB7CiAKIEBlbmQKIAotI2lmICFUQVJHRVRfT1NfSVBIT05FCisjaWYgVEFSR0VUX09TX0lQ
SE9ORQorCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoKSA8VUlSZXNwb25kZXJTdGFuZGFyZEVkaXRB
Y3Rpb25zPgorLSAodm9pZClhbGlnbkNlbnRlcjooaWQpc2VuZGVyOworLSAodm9pZClhbGlnbkp1
c3RpZmllZDooaWQpc2VuZGVyOworLSAodm9pZClhbGlnbkxlZnQ6KGlkKXNlbmRlcjsKKy0gKHZv
aWQpYWxpZ25SaWdodDooaWQpc2VuZGVyOworLSAodm9pZClpbmRlbnQ6KGlkKXNlbmRlcjsKKy0g
KHZvaWQpaW5zZXJ0T3JkZXJlZExpc3Q6KGlkKXNlbmRlcjsKKy0gKHZvaWQpaW5zZXJ0VW5vcmRl
cmVkTGlzdDooaWQpc2VuZGVyOworLSAodm9pZClvdXRkZW50OihpZClzZW5kZXI7CistICh2b2lk
KXRvZ2dsZVN0cmlrZVRocm91Z2g6KGlkKXNlbmRlcjsKKy0gKHZvaWQpc2V0Rm9udDooVUlGb250
ICopZm9udCBzZW5kZXI6KGlkKXNlbmRlcjsKKy0gKHZvaWQpc2V0VGV4dENvbG9yOihVSUNvbG9y
ICopY29sb3Igc2VuZGVyOihpZClzZW5kZXI7CitAZW5kCisKKyNlbHNlCisKIEBpbnRlcmZhY2Ug
V0tXZWJWaWV3IChXS05TVGV4dEZpbmRlckNsaWVudCkgPE5TVGV4dEZpbmRlckNsaWVudD4KIEBl
bmQKKwogI2VuZGlmCiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1Rlc3RpbmcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0MjJmMjZhZWExODQ4YTQwOWE4
Mjg3YzMyNjU2NWIzZjNlZDEzN2MwLi5lM2EwZDk3YzVmMGFkZjQ1NjRkZDY1NGRlMTkzYzRkZTYw
NDdlMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEz
Myw2ICsxMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnROYW1lcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVjdGlvbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HbG9iYWxGcmFtZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaD4KQEAg
LTcwNDQsNiArNzA0NSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkTUlNRVR5cGVXaXRoQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJv
dmlkZXIobWltZVR5cGUpLCBtX3BhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpjaGFu
Z2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmIGNoYW5nZXMp
Cit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250QXR0cmlidXRlcyhXVEZNb3ZlKGNo
YW5nZXMpKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChX
ZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
aGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7Cit9CisKICNpZiBQTEFURk9S
TShDT0NPQSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRBc3luYyhjb25zdCBTdHJpbmcm
IHRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU2NmM1NGE4
YTMyNTgzYmJmNzhiMGI3M2Y3YWQ5YTNjZWNjYzY1NTguLjkyM2U0YThiMDIwOGU2OTgyZjUwN2Yz
NGFlZTc4MzhiYWViN2UyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC02OTgsMTEgKzY5OCwxMiBAQCBwdWJsaWM6CiAgICAgUmVtb3RlTGF5ZXJUcmVlU2Nyb2xs
aW5nUGVyZm9ybWFuY2VEYXRhKiBzY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEoKSB7IHJldHVybiBt
X3Njcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5nZXQoKTsgfQogI2VuZGlmIC8vIFBMQVRGT1JNKENP
Q09BKQogCisgICAgdm9pZCBjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmli
dXRlQ2hhbmdlcyYmKTsKKyAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMm
Jik7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3lu
Yyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5n
ZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3Rh
dGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7CiAgICAgdm9pZCBhdHRy
aWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2Um
LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0
aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBjaGFuZ2VGb250
QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmKTsKLSAgICB2b2lkIGNo
YW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJik7CiAgICAgdm9pZCBmb250QXRTZWxlY3Rp
b24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKIAogICAgIHZvaWQgc3RhcnRXaW5kb3dEcmFnKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmgKaW5kZXggYTIzOWRlOWRjNWUxZWMwODU0NmVkMzFlYTM3MmQwZGM1MTQ0N2M1MC4uZDc2
OWJhY2M5MmU1MjBlZWY3MmYxODUxZjM5ODJkYzU1YmM1OTFlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAt
MTIxLDcgKzEyMSwxOCBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQwogICAgIE0oc2VsZWN0QWxs
KSBcCiAgICAgTSh0b2dnbGVCb2xkZmFjZSkgXAogICAgIE0odG9nZ2xlSXRhbGljcykgXAotICAg
IE0odG9nZ2xlVW5kZXJsaW5lKQorICAgIE0odG9nZ2xlVW5kZXJsaW5lKSBcCisgICAgTShpbmNy
ZWFzZVNpemUpIFwKKyAgICBNKGRlY3JlYXNlU2l6ZSkgXAorICAgIE0odG9nZ2xlU3RyaWtlVGhy
b3VnaCkgXAorICAgIE0oaW5zZXJ0VW5vcmRlcmVkTGlzdCkgXAorICAgIE0oaW5zZXJ0T3JkZXJl
ZExpc3QpIFwKKyAgICBNKGluZGVudCkgXAorICAgIE0ob3V0ZGVudCkgXAorICAgIE0oYWxpZ25M
ZWZ0KSBcCisgICAgTShhbGlnblJpZ2h0KSBcCisgICAgTShhbGlnbkNlbnRlcikgXAorICAgIE0o
YWxpZ25KdXN0aWZpZWQpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0zMTksNiArMzMwLDkg
QEAgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FD
VElPTl9GT1JfV0VCX1ZJRVcpCiBERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJf
VklFVyhfcGFzdGVBc1F1b3RhdGlvbikKICN1bmRlZiBERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNU
SU9OX0ZPUl9XRUJfVklFVwogCistICh2b2lkKXNldEZvbnRGb3JXZWJWaWV3OihVSUZvbnQgKilm
b250RmFtaWx5IHNlbmRlcjooaWQpc2VuZGVyOworLSAodm9pZClzZXRUZXh0Q29sb3JGb3JXZWJW
aWV3OihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClzZW5kZXI7CisKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogLSAodm9pZClfd2ViVG91Y2hFdmVudDooY29uc3QgV2ViS2l0OjpOYXRpdmVX
ZWJUb3VjaEV2ZW50Jil0b3VjaEV2ZW50IHByZXZlbnRzTmF0aXZlR2VzdHVyZXM6KEJPT0wpcHJl
dmVudHNEZWZhdWx0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBiMDFjNGY2YTNjNTRlOTlj
NzE2NTU3OGJhZTcyMmYzOGVjYjhlNThjLi5hZTIyYWY0NmY4NWQyYjQ4ODEwZTA5MzFhOWVmODA2
Mzk2OWMyNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTc1LDYgKzc1LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvQ29sb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GbG9hdFF1YWQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNo
YW5nZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW5wdXRNb2RlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
QEAgLTIyNzksNiArMjI4MCw1MCBAQCBGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcoX3Bhc3Rl
QXNRdW90YXRpb24pCiAgICAgW1tVSUtleWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gcmVwbGFj
ZVRleHQ6c2VuZGVyXTsKIH0KIAorI2RlZmluZSBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVco
Y29tbWFuZCkgLSAodm9pZCljb21tYW5kICMjIEZvcldlYlZpZXc6KGlkKXNlbmRlciB7IF9wYWdl
LT5leGVjdXRlRWRpdENvbW1hbmQoI2NvbW1hbmQgIyMgX3MpOyB9CisKK1dFQkNPUkVfQ09NTUFO
RF9GT1JfV0VCVklFVyhpbnNlcnRPcmRlcmVkTGlzdCk7CitXRUJDT1JFX0NPTU1BTkRfRk9SX1dF
QlZJRVcoaW5zZXJ0VW5vcmRlcmVkTGlzdCk7CitXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVco
aW5kZW50KTsKK1dFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhvdXRkZW50KTsKK1dFQkNPUkVf
Q09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkxlZnQpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJW
SUVXKGFsaWduUmlnaHQpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGFsaWduQ2VudGVy
KTsKK1dFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkp1c3RpZmllZCk7CisKKy0gKHZv
aWQpdG9nZ2xlU3RyaWtlVGhyb3VnaEZvcldlYlZpZXc6KGlkKXNlbmRlcgoreworICAgIF9wYWdl
LT5leGVjdXRlRWRpdENvbW1hbmQoIlN0cmlrZVRocm91Z2giX3MpOworfQorCistICh2b2lkKWlu
Y3JlYXNlU2l6ZUZvcldlYlZpZXc6KGlkKXNlbmRlcgoreworICAgIF9wYWdlLT5leGVjdXRlRWRp
dENvbW1hbmQoIkZvbnRTaXplRGVsdGEiX3MsICIxIl9zKTsKK30KKworLSAodm9pZClkZWNyZWFz
ZVNpemVGb3JXZWJWaWV3OihpZClzZW5kZXIKK3sKKyAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21t
YW5kKCJGb250U2l6ZURlbHRhIl9zLCAiLTEiX3MpOworfQorCistICh2b2lkKXNldEZvbnRGb3JX
ZWJWaWV3OihVSUZvbnQgKilmb250IHNlbmRlcjooaWQpc2VuZGVyCit7CisgICAgV2ViQ29yZTo6
Rm9udENoYW5nZXMgY2hhbmdlczsKKyAgICBjaGFuZ2VzLnNldEZvbnRGYW1pbHkoZm9udC5mYW1p
bHlOYW1lKTsKKyAgICBjaGFuZ2VzLnNldEZvbnROYW1lKGZvbnQuZm9udE5hbWUpOworICAgIGNo
YW5nZXMuc2V0Rm9udFNpemUoZm9udC5wb2ludFNpemUpOworICAgIGNoYW5nZXMuc2V0Qm9sZChm
b250LnRyYWl0cyAmIFVJRm9udFRyYWl0Qm9sZCk7CisgICAgY2hhbmdlcy5zZXRJdGFsaWMoZm9u
dC50cmFpdHMgJiBVSUZvbnRUcmFpdEl0YWxpYyk7CisgICAgX3BhZ2UtPmNoYW5nZUZvbnQoV1RG
TW92ZShjaGFuZ2VzKSk7Cit9CisKKy0gKHZvaWQpc2V0VGV4dENvbG9yRm9yV2ViVmlldzooVUlD
b2xvciAqKWNvbG9yIHNlbmRlcjooaWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0
Q29tbWFuZCgiRm9yZUNvbG9yIl9zLCBXZWJDb3JlOjpDb2xvcihjb2xvci5DR0NvbG9yKS5zZXJp
YWxpemVkKCkpOworfQorCisjdW5kZWYgV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXCisKIC0g
KE5TRGljdGlvbmFyeSAqKXRleHRTdHlsaW5nQXRQb3NpdGlvbjooVUlUZXh0UG9zaXRpb24gKilw
b3NpdGlvbiBpbkRpcmVjdGlvbjooVUlUZXh0U3RvcmFnZURpcmVjdGlvbilkaXJlY3Rpb24KIHsK
ICAgICBpZiAoIXBvc2l0aW9uIHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc0NvbnRlbnRSaWNo
bHlFZGl0YWJsZSkKQEAgLTIzMzgsOCArMjM4MywxNCBAQCBGT1JXQVJEX0FDVElPTl9UT19XS1dF
QlZJRVcoX3Bhc3RlQXNRdW90YXRpb24pCiAgICAgICAgIHJldHVybiBlZGl0b3JTdGF0ZS5pc0Nv
bnRlbnRSaWNobHlFZGl0YWJsZSAmJiBlZGl0b3JTdGF0ZS5zZWxlY3Rpb25Jc1JhbmdlICYmICFf
c2hvd2luZ1RleHRTdHlsZU9wdGlvbnM7CiAgICAgaWYgKF9zaG93aW5nVGV4dFN0eWxlT3B0aW9u
cykKICAgICAgICAgcmV0dXJuIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUJvbGRmYWNlOikg
fHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVJdGFsaWNzOikgfHwgYWN0aW9uID09IEBzZWxl
Y3Rvcih0b2dnbGVVbmRlcmxpbmU6KSk7Ci0gICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9n
Z2xlQm9sZGZhY2U6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUl0YWxpY3M6KSB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVVuZGVybGluZTopKQorICAgIGlmIChhY3Rpb24gPT0g
QHNlbGVjdG9yKHRvZ2dsZUJvbGRmYWNlOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVJ
dGFsaWNzOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVVbmRlcmxpbmU6KSB8fCBhY3Rp
b24gPT0gQHNlbGVjdG9yKHRvZ2dsZVN0cmlrZVRocm91Z2g6KQorICAgICAgICB8fCBhY3Rpb24g
PT0gQHNlbGVjdG9yKGluc2VydE9yZGVyZWRMaXN0OikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihp
bnNlcnRVbm9yZGVyZWRMaXN0OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihpbmRlbnQ6KSB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKG91dGRlbnQ6KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVj
dG9yKGFsaWduTGVmdDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoYWxpZ25SaWdodDopIHx8IGFj
dGlvbiA9PSBAc2VsZWN0b3IoYWxpZ25DZW50ZXI6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGFs
aWduSnVzdGlmaWVkOikKKyAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihpbmNyZWFzZVNp
emU6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGRlY3JlYXNlU2l6ZTopIHx8IGFjdGlvbiA9PSBA
c2VsZWN0b3Ioc2V0Rm9udDpzZW5kZXI6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldFRleHRD
b2xvcjpzZW5kZXI6KSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW9yZSBu
dWFuY2VkIGluIHRoZSBmdXR1cmUsIHJhdGhlciB0aGFuIHJldHVybmluZyBZRVMgZm9yIGFsbCBy
aWNobHkgZWRpdGFibGUgYXJlYXMuIEZvciBpbnN0YW5jZSwgb3V0ZGVudDogc2hvdWxkIGJlIGRp
c2FibGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBhbHJlYWR5CisgICAgICAgIC8vIGF0IHRoZSBv
dXRlcm1vc3QgaW5kZW50YXRpb24gbGV2ZWwuCiAgICAgICAgIHJldHVybiBlZGl0b3JTdGF0ZS5p
c0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKKyAgICB9CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0
b3IoY3V0OikpCiAgICAgICAgIHJldHVybiAhZWRpdG9yU3RhdGUuaXNJblBhc3N3b3JkRmllbGQg
JiYgZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGUgJiYgZWRpdG9yU3RhdGUuc2VsZWN0aW9u
SXNSYW5nZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCmluZGV4IDQ4NDE4Y2NlODQ5MmUwMjQ3MjQ3ZmJhOWVjMmUwN2UyN2MwZDI2Nzgu
LjEwOWQxYTRlNjJjZTIwMjZjMTI5MTQzMmE0YWNhOWNkNThkY2YxNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNTEsNyArNTEsNiBA
QAogI2ltcG9ydCA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5TlNQYXN0ZWJvYXJkVHlw
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CkBAIC02
MjksMjIgKzYyOCw2IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphcHBsZU1haWxMaW5lc0NsYW1wRW5h
YmxlZCgpCiAgICAgcmV0dXJuIE1hY0FwcGxpY2F0aW9uOjppc0FwcGxlTWFpbCgpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJp
YnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9u
dEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsKLX0KLSAgICAKLXZvaWQg
V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykK
LXsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSksIG1f
cGFnZUlEKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZChjb25z
dCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiB7CiAgICAgYm9vbCBjb3VsZENoYW5nZVNlY3Vy
ZUlucHV0U3RhdGUgPSBtX2VkaXRvclN0YXRlLmlzSW5QYXNzd29yZEZpZWxkICE9IGVkaXRvclN0
YXRlLmlzSW5QYXNzd29yZEZpZWxkIHx8IG1fZWRpdG9yU3RhdGUuc2VsZWN0aW9uSXNOb25lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAyMmI4
MDkwMTEyOTc2MjgwZGIzZmVmMjE4OGUyZTdiOGFiZWQ5NGQ5Li5kMDMwODhjYWZkY2NjOGRmNGZm
ODI2NjY2YTE2YmNkYTc2NzM0NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMTU1LDYgKzE1NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9F
dmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFu
Z2VzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRm9ybVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpAQCAtOTk4LDYg
Kzk5OSwyMCBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JTdGF0ZShJbmNsdWRlUG9zdExh
eW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5bwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK3ZvaWQgV2ViUGFnZTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJp
YnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQoreworICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgZnJhbWUuZWRp
dG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNoYW5nZXMuY3JlYXRlRWRpdGluZ1N0eWxlKCks
IGNoYW5nZXMuZWRpdEFjdGlvbigpLCBFZGl0b3I6OkNvbG9yRmlsdGVyTW9kZTo6SW52ZXJ0Q29s
b3IpOworfQorCit2b2lkIFdlYlBhZ2U6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMm
JiBjaGFuZ2VzKQoreworICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlT
dHlsZVRvU2VsZWN0aW9uKGNoYW5nZXMuY3JlYXRlRWRpdGluZ1N0eWxlKCksIEVkaXRBY3Rpb246
OlNldEZvbnQsIEVkaXRvcjo6Q29sb3JGaWx0ZXJNb2RlOjpJbnZlcnRDb2xvcik7Cit9CisKIHZv
aWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbnN0IFN0cmluZyYg
Y29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBleGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5hbWUsIGFyZ3VtZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNTBhYjRmZWQ5
ZTRhNmNkNDMxMzQ1Mjc2NmI4OTgwZDg3NWNjZjg4Li5hMTNkOTFiYTdiMDAwZDIyOTYwZDkyYjVi
NWUyNDdlOTRhYTkwZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xMzYwLDE0ICsxMzYwLDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0
ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYpOwogCisgICAgdm9pZCBjaGFu
Z2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYpOworICAgIHZvaWQgY2hhbmdlRm9udEF0dHJp
YnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7CisKICNpZiBQTEFURk9STShN
QUMpCiAgICAgdm9pZCBwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24oV2Vi
Q29yZTo6RmxvYXRQb2ludCk7CiAgICAgc3RkOjp0dXBsZTxSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
LCBOU0RpY3Rpb25hcnkgKj4gbG9va3VwVGV4dEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2lu
dCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKTsKICAgICB2b2lkIGltbWVk
aWF0ZUFjdGlvbkRpZENhbmNlbCgpOwogICAgIHZvaWQgaW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxl
dGUoKTsKLSAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJik7Ci0gICAg
dm9pZCBjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYm
KTsKIAogICAgIHZvaWQgZGF0YURldGVjdG9yc0RpZFByZXNlbnRVSShXZWJDb3JlOjpQYWdlT3Zl
cmxheTo6UGFnZU92ZXJsYXlJRCk7CiAgICAgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkQ2hhbmdlVUko
V2ViQ29yZTo6UGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZDc1YWNl
ZWEwZTAwMDIzYWIyMTliMjkxMzllMzYyMjZhZjljNmM3Ni4uODg1MGY2NDBlMjFmZGM1NTUzMGM0
ZmM2ODkxZWVhNzQyZjAxMjQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xOTAsOSArMTkwLDEwIEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKKyNlbmRpZgorCiAg
ICAgQ2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyBjaGFuZ2VzKQogICAgIENoYW5nZUZv
bnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzIGNoYW5nZXMpCi0jZW5k
aWYKIAogICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmUgc3RvcmUpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYjc4MTc5NjA1MTk5ZDYzYzVkOTg0ZmRkNWVkYmI5
ZTIzMjcxYjBhZS4uNjIzM2JmOTZhMWM2OTgxNzZkNWEwYmE1MTFhZTQzNTA2YWQwMjhiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTYzLDcgKzYzLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xs
ZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CkBAIC0xMTEzLDIwICsxMTEyLDYgQEAgdm9pZCBXZWJQ
YWdlOjpkYXRhRGV0ZWN0b3JzRGlkSGlkZVVJKFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEIG92
ZXJsYXlJRCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMo
V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQotewotICAgIGF1dG8mIGZy
YW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAg
ICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkK
LSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNoYW5nZXMuY3Jl
YXRlRWRpdGluZ1N0eWxlKCksIGNoYW5nZXMuZWRpdEFjdGlvbigpLCBFZGl0b3I6OkNvbG9yRmls
dGVyTW9kZTo6SW52ZXJ0Q29sb3IpOwotfQotCi12b2lkIFdlYlBhZ2U6OmNoYW5nZUZvbnQoV2Vi
Q29yZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQotewotICAgIGF1dG8mIGZyYW1lID0gbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgZnJh
bWUuZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNoYW5nZXMuY3JlYXRlRWRpdGluZ1N0
eWxlKCksIEVkaXRBY3Rpb246OlNldEZvbnQsIEVkaXRvcjo6Q29sb3JGaWx0ZXJNb2RlOjpJbnZl
cnRDb2xvcik7Ci19Ci0KICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAh
UExBVEZPUk0oSU9TKQogdm9pZCBXZWJQYWdlOjpwbGF5YmFja1RhcmdldFNlbGVjdGVkKHVpbnQ2
NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQm
IHRhcmdldENvbnRleHQpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggOTcxYmExM2Q2NWRiY2E2ZTFiZGU3MzliOTNmZDcyN2Q3YjE5
MzI1MS4uZmUxMmViNDQxZjVjOWFkM2M1ZGY2OTUzNGY2N2I3N2ZhN2NjYzg1MyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDE4LTEwLTAyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1NdIFtXSzJdIEV4cG9zZSBzb21lIG1vcmUgZWRpdGluZyBTUEkgb24gV0tXZWJW
aWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAy
MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0OTYzMzY4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgbmV3IEFQSSB0ZXN0cyB0byBleGVy
Y2lzZSB0aGUgbmV3IFNQSXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbTogQWRkZWQuCisgICAgICAgICgtW1Rlc3RX
S1dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OndlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3Rz
Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGNvbGxhcHNlVG9TdGFydF0pOiBEZWxldGVk
LgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGNvbGxhcHNlVG9FbmRdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bVGVzdFdLV2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25FbmQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0
Ol0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVu
ZDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjb2xsYXBzZVRvU3RhcnRdKToKKyAgICAg
ICAgKC1bVGVzdFdLV2ViVmlldyBjb2xsYXBzZVRvRW5kXSk6CisKKyAgICAgICAgUHVsbCBzb21l
IGNvbW1vbiB0ZXN0aW5nIGhlbHBlcnMgb3V0IG9mIE5TRm9udE1hbmFnZXIgYW5kIGludG8gVGVz
dFdLV2ViVmlldy4KKwogMjAxOC0xMC0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT046IFRlc3RXZWJLaXRBUEkuV0tXZWJWaWV3LlByb3Zpc2lv
bmFsVVJMTm90Q2hhbmdlIEFQSSB0ZXN0IGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggYzE1YzQ3OTI0MTMyYjg0MzE5ZDJkNGUxNDhkZjA0ZDQ4MDMwNTUyMS4uY2VkNTI5Mzk4
N2VhNWFhMGQ2YjE2MzVmYjQ0MTkxZDQyNTczZDE1NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg1OCw2ICs4NTgsNyBAQAogCQlGNEY0MDVCRDFENEMwRDFDMDA3QTk3MDcgLyogc2tpbm55
LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQjFENEMwQ0Y4MDA3QTk3MDcg
Lyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsKIAkJRjRG
QTkxODExRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RkE5MTdGMUU2MTg0
OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0gKi87IH07CiAJCUY0RkE5
MTgzMUU2MTg1N0IwMDdCOEMxRCAvKiBkb3VibGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWls
aW5nLXNwYWNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjRGQTkxODIxRTYxODU2NjAwN0I4QzFEIC8qIGRvdWJsZS1jbGljay1kb2Vz
LW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCAqLzsgfTsKKwkJRjRGQjY4MjUyMTY0M0VG
QzAwMzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQjY4MjQyMTY0M0VGQzAwMzQ2MDdBIC8qIFdL
V2ViVmlld0VkaXRBY3Rpb25zLm1tICovOyB9OwogCQlGNEZDMDc3NzIwRjAxM0I2MDBDQTA0M0Mg
Lyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0Mg
Lyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLzsgfTsKIAkJRjY2MEFBMTExNUE1
RjYzMTAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNh
bGxiYWNrX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNjYwQUEwRjE1QTVGNjI0MDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCAqLzsgfTsKIAkJRjY2MEFBMTUx
NUE2MUFCRjAwM0ExMjQzIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNh
bGxiYWNrV2luc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjY2MEFBMTQxNUE2MUFCRjAwM0ExMjQzIC8qIEluamVjdGVkQnVuZGxlSW5p
dGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3BwICovOyB9OwpAQCAtMjEx
Niw2ICsyMTE3LDcgQEAKIAkJRjRGNDA1QkIxRDRDMENGODAwN0E5NzA3IC8qIHNraW5ueS1hdXRv
cGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAic2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0RkE5MTdGMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdN
YWNFZGl0aW5nVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0RkE5MTgyMUU2MTg1NjYwMDdCOEMxRCAvKiBkb3VibGUtY2xpY2stZG9lcy1ub3Qtc2Vs
ZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IG5hbWUgPSAiZG91
YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sIjsgcGF0aCA9ICJU
ZXN0cy9XZWJLaXRDb2NvYS9kb3VibGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNw
YWNlLmh0bWwiOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUY0RkI2ODI0MjE2NDNF
RkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjY2MEFBMEMxNUE1RjA2MTAwM0ExMjQzIC8qIEdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjY2
MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25V
c2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja19C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU2Niw2ICsyNTY4LDcg
QEAKIAkJCQlGNDY4NDlCRDFFRUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVzdHMubW0g
Ki8sCiAJCQkJRjQzRTNCQkUyMERBREExRTAwQTRFN0VEIC8qIFdLU2Nyb2xsVmlld1Rlc3RzLm1t
ICovLAogCQkJCTUxNDk1OEJEMUY3NDI3QUMwMEU4N0JBRCAvKiBXS1dlYlZpZXdBdXRvZmlsbFRl
c3RzLm1tICovLAorCQkJCUY0RkI2ODI0MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0
QWN0aW9ucy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTQwODgsNiArNDA5MSw3IEBACiAJCQkJN0M0MTdGMzMxRDE5RTE0ODAwQjhF
RjUzIC8qIFdLV2ViVmlld0RlZmF1bHROYXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk0NkU2NkE5MDFGMEQ3NTU5MDAyNkQ4M0MgLyogV0tXZWJWaWV3RGlhZ25vc3RpY0xv
Z2dpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREI2NDc4ODFGNDE2M0Q2MDA1MUE4OUUgLyog
V0tXZWJWaWV3RG9lc05vdExvZ0R1cmluZ0luaXRpYWxpemF0aW9uLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJRjRGQjY4MjUyMTY0M0VGQzAwMzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjk0QTcxQTc3MjY3NDAwREUzMjcyIC8qIFdLV2ViVmll
d0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUQzNEUwODc2MUU0RTQy
RTEwMDVGRjE0QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUY0RkE5MTgxMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
V0tXZWJWaWV3RWRpdEFjdGlvbnMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU5NDI3NjlmMWNlYjBjMzA0NDFl
YjQ5YWY3MjIwYjEzNWFhMTc5OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tCkBAIC0wLDAgKzEsMTkyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShJT1MpICYmIFdL
X0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCA8VUlLaXQvVUlG
b250RGVzY3JpcHRvci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKwor
QGludGVyZmFjZSBUZXN0V0tXZWJWaWV3IChFZGl0QWN0aW9uVGVzdGluZykKKy0gKEJPT0wpcXVl
cnlTZWxlY3RvckV4aXN0czooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoRWRpdEFjdGlvblRlc3RpbmcpCisKKy0gKEJPT0wp
cXVlcnlTZWxlY3RvckV4aXN0czooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yCit7CisgICAgcmV0
dXJuIFtbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiISFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAlQGApIiwgcXVlcnlTZWxlY3Rv
cl1dIGJvb2xWYWx1ZV07Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVz
dGluZygpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2PldlYktpdDwvZGl2PiJdOwor
ICAgIFt3ZWJWaWV3IF9zZXRFZGl0YWJsZTpZRVNdOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5i
b2R5LCAxKSJdOworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitURVNUKFdLV2ViVmlld0VkaXRB
Y3Rpb25zLCBMaXN0SW5zZXJ0aW9uKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JF
ZGl0QWN0aW9uVGVzdGluZygpOworCisgICAgW3dlYlZpZXcgaW5zZXJ0T3JkZXJlZExpc3Q6bmls
XTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wiXSk7
CisgICAgW3dlYlZpZXcgaW5zZXJ0T3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9sIl0pOworCisgICAgW3dlYlZpZXcgaW5z
ZXJ0VW5vcmRlcmVkTGlzdDpuaWxdOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2Vs
ZWN0b3JFeGlzdHM6QCJ1bCJdKTsKKyAgICBbd2ViVmlldyBpbnNlcnRVbm9yZGVyZWRMaXN0Om5p
bF07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJ1bCJd
KTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgQ2hhbmdlSW5kZW50YXRpb24pCit7
CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisKKyAg
ICBbd2ViVmlldyBpbmRlbnQ6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNl
bGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKKyAgICBbd2ViVmlldyBpbmRlbnQ6bmlsXTsK
KyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90
ZSA+IGJsb2NrcXVvdGUiXSk7CisKKyAgICBbd2ViVmlldyBvdXRkZW50Om5pbF07CisgICAgRVhQ
RUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImJsb2NrcXVvdGUiXSk7Cisg
ICAgW3dlYlZpZXcgb3V0ZGVudDpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBxdWVy
eVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0
QWN0aW9ucywgU2V0QWxpZ25tZW50KQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JF
ZGl0QWN0aW9uVGVzdGluZygpOworICAgIGF1dG8gcnVuVGVzdCA9IFt3ZWJWaWV3XSB7CisgICAg
ICAgIFt3ZWJWaWV3IGFsaWduQ2VudGVyOm5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgi
Y2VudGVyIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LWFs
aWduIl0pOworICAgICAgICBbd2ViVmlldyBhbGlnbkxlZnQ6bmlsXTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKCJsZWZ0IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6
QCJ0ZXh0LWFsaWduIl0pOworICAgICAgICBbd2ViVmlldyBhbGlnblJpZ2h0Om5pbF07CisgICAg
ICAgIEVYUEVDVF9XS19TVFJFUSgicmlnaHQiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxl
Y3Rpb25TdGFydDpAInRleHQtYWxpZ24iXSk7CisgICAgICAgIFt3ZWJWaWV3IGFsaWduSnVzdGlm
aWVkOm5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgianVzdGlmeSIsIFt3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1hbGlnbiJdKTsKKyAgICB9OworCisg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5kaXIgPSAncnRs
JyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBydW5UZXN0KCk7CisKKyAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmRpciA9ICdsdHInIiBjb21wbGV0
aW9uSGFuZGxlcjpuaWxdOworICAgIHJ1blRlc3QoKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0
QWN0aW9ucywgVG9nZ2xlU3RyaWtlVGhyb3VnaCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJW
aWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKyAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsK
KyAgICBbd2ViVmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFy
dDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25F
bmQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOworCisgICAgW3dlYlZp
ZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgibm9uZSIs
IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiLXdlYmtpdC10ZXh0LWRl
Y29yYXRpb25zLWluLWVmZmVjdCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlv
bnMtaW4tZWZmZWN0Il0pOworCisgICAgW3dlYlZpZXcgY29sbGFwc2VUb0VuZF07CisgICAgW3dl
YlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRD
b250ZW50Vmlld10gaW5zZXJ0VGV4dDpAIkhlbGxvIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJs
aW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13
ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7CisKKyAgICBbd2ViVmlldyB0b2dn
bGVTdHJpa2VUaHJvdWdoOm5pbF07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3
XSBpbnNlcnRUZXh0OkAiSGVsbG8iXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0
aW9ucy1pbi1lZmZlY3QiXSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIENoYW5n
ZUZvbnRTaXplKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVz
dGluZygpOworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworICAgIEVYUEVDVF9FUSgxNiwg
W1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0gZmxv
YXRWYWx1ZV0pOworCisgICAgW3dlYlZpZXcgaW5jcmVhc2VTaXplOm5pbF07CisgICAgRVhQRUNU
X0VRKDE3LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNp
emUiXSBmbG9hdFZhbHVlXSk7CisgICAgW3dlYlZpZXcgaW5jcmVhc2VTaXplOm5pbF07CisgICAg
RVhQRUNUX0VRKDE4LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJm
b250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisKKyAgICBbd2ViVmlldyBkZWNyZWFzZVNpemU6bmls
XTsKKyAgICBFWFBFQ1RfRVEoMTcsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKKyAgICBbd2ViVmlldyBkZWNyZWFzZVNp
emU6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMTYsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxl
Y3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKK30KKworVEVTVChXS1dlYlZp
ZXdFZGl0QWN0aW9ucywgU2V0VGV4dENvbG9yKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZp
ZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOwor
CisgICAgW3dlYlZpZXcgc2V0VGV4dENvbG9yOltVSUNvbG9yIGNvbG9yV2l0aFJlZDoxIGdyZWVu
OjAgYmx1ZTowIGFscGhhOjFdIHNlbmRlcjpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgicmdi
KDI1NSwgMCwgMCkiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImNv
bG9yIl0pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJm
b250Il0pOworCisgICAgW3dlYlZpZXcgc2V0VGV4dENvbG9yOltVSUNvbG9yIGNvbG9yV2l0aFJl
ZDowIGdyZWVuOjEgYmx1ZTowIGFscGhhOjAuMl0gc2VuZGVyOm5pbF07CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJyZ2JhKDAsIDI1NSwgMCwgMC4yKSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNl
bGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHF1ZXJ5
U2VsZWN0b3JFeGlzdHM6QCJmb250Il0pOworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25z
LCBTZXRGb250RmFtaWx5KQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0
aW9uVGVzdGluZygpOworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworCisgICAgVUlGb250
RGVzY3JpcHRvciAqZm9udERlc2NyaXB0b3IgPSBbVUlGb250RGVzY3JpcHRvciBmb250RGVzY3Jp
cHRvcldpdGhGb250QXR0cmlidXRlczpAeyBVSUZvbnREZXNjcmlwdG9yRmFtaWx5QXR0cmlidXRl
OiBAIkhlbHZldGljYSIgfV07CisgICAgW3dlYlZpZXcgc2V0Rm9udDpbVUlGb250IGZvbnRXaXRo
RGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOjI0XSBzZW5kZXI6bmlsXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIkhlbHZldGljYSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlv
blN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIyNHB4IiwgW3dl
YlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJub3JtYWwiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25TdGFydDpAImZvbnQtd2VpZ2h0Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgibm9ybWFsIiwg
W3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXN0eWxlIl0pOwor
CisgICAgW3dlYlZpZXcgc2V0Rm9udDpbVUlGb250IGZvbnRXaXRoTmFtZTpAIlRpbWVzTmV3Um9t
YW5QUy1Cb2xkTVQiIHNpemU6MTJdIHNlbmRlcjpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgi
XCJUaW1lcyBOZXcgUm9tYW5cIiIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OkAiZm9udC1mYW1pbHkiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIxMnB4IiwgW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJib2xkIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3Rh
cnQ6QCJmb250LXdlaWdodCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vcm1hbCIsIFt3ZWJW
aWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zdHlsZSJdKTsKKworICAg
IGZvbnREZXNjcmlwdG9yID0gW2ZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aFN5bWJv
bGljVHJhaXRzOlVJRm9udERlc2NyaXB0b3JUcmFpdEl0YWxpYyB8IFVJRm9udERlc2NyaXB0b3JU
cmFpdEJvbGRdOworICAgIFt3ZWJWaWV3IHNldEZvbnQ6W1VJRm9udCBmb250V2l0aERlc2NyaXB0
b3I6Zm9udERlc2NyaXB0b3Igc2l6ZToyMF0gc2VuZGVyOm5pbF07CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJIZWx2ZXRpY2EiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpA
ImZvbnQtZmFtaWx5Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiMjBweCIsIFt3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgiYm9sZCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAi
Zm9udC13ZWlnaHQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJpdGFsaWMiLCBbd2ViVmlldyBz
dHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc3R5bGUiXSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgV0tf
QVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Zv
bnRNYW5hZ2VyVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFu
YWdlclRlc3RzLm1tCmluZGV4IDNlMTNhMTE0ODA5N2U5MTdmNTZhY2FjYmVlYTM5ODgyZTgzNTcz
NTUuLjQwY2QxYWZiMzM5NDg4MjE3ZDQ2Y2M1ZjkwYmVkM2VhNDhiNDRlMjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQpAQCAtNDMs
MTEgKzQzLDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKnNl
bGVjdGVkVGV4dDsKIAogLSAoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXR5cGluZ0F0
dHJpYnV0ZXM7Ci0tIChOU1N0cmluZyAqKXN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OihO
U1N0cmluZyAqKXByb3BlcnR5TmFtZTsKLS0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uRW5kOihOU1N0cmluZyAqKXByb3BlcnR5TmFtZTsKIC0gKHZvaWQpc2VsZWN0TmV4dFdv
cmQ7Ci0tICh2b2lkKWNvbGxhcHNlVG9TdGFydDsKLS0gKHZvaWQpY29sbGFwc2VUb0VuZDsKIAog
QGVuZAogCkBAIC04OSwyOCArODUsNiBAQAogICAgIFtzZWxmIHNlbGVjdFdvcmQ6bmlsXTsKIH0K
IAotLSAodm9pZCljb2xsYXBzZVRvU3RhcnQKLXsKLSAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJnZXRTZWxlY3Rpb24oKS5jb2xsYXBzZVRvU3RhcnQoKSIgY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKLX0KLQotLSAodm9pZCljb2xsYXBzZVRvRW5kCi17Ci0gICAgW3NlbGYgZXZhbHVhdGVK
YXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2VUb0VuZCgpIiBjb21wbGV0aW9uSGFu
ZGxlcjpuaWxdOwotfQotCi0tIChOU1N0cmluZyAqKXN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQotewotICAgIE5TU3RyaW5nICpzY3JpcHQgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImdldENvbXB1dGVkU3R5bGUoZ2V0U2VsZWN0aW9u
KCkuZ2V0UmFuZ2VBdCgwKS5zdGFydENvbnRhaW5lci5wYXJlbnRFbGVtZW50KVsnJUAnXSIsIHBy
b3BlcnR5TmFtZV07Ci0gICAgcmV0dXJuIFtzZWxmIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6c2NyaXB0XTsKLX0KLQotLSAoTlNTdHJpbmcgKilzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25F
bmQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCi17Ci0gICAgTlNTdHJpbmcgKnNjcmlwdCA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZ2V0Q29tcHV0ZWRTdHlsZShnZXRTZWxlY3Rpb24o
KS5nZXRSYW5nZUF0KDApLmVuZENvbnRhaW5lci5wYXJlbnRFbGVtZW50KVsnJUAnXSIsIHByb3Bl
cnR5TmFtZV07Ci0gICAgcmV0dXJuIFtzZWxmIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
c2NyaXB0XTsKLX0KLQogQGVuZAogCiBzdGF0aWMgUmV0YWluUHRyPEZvbnRNYW5hZ2VyVGVzdFdL
V2ViVmlldz4gd2ViVmlld0ZvckZvbnRNYW5hZ2VyVGVzdGluZyhOU0ZvbnRNYW5hZ2VyICpmb250
TWFuYWdlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXgg
ZmU5MWFkZGViMDIyOGI2ZDJjZmMzMDQ3MGY5ZjZjZjM1MTdlNThlNi4uMTMyNjljZjZmNDUyODM5
MWEzYjZkY2I0MzFlMmZhYzQ5OGM5NzliOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3LmgKQEAgLTY0LDYgKzY0LDEwIEBACiAtICh2b2lkKXdhaXRGb3JNZXNzYWdl
OihOU1N0cmluZyAqKW1lc3NhZ2U7CiAtICh2b2lkKXBlcmZvcm1BZnRlckxvYWRpbmc6KGRpc3Bh
dGNoX2Jsb2NrX3QpYWN0aW9uczsKIC0gKHZvaWQpd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRh
dGU7CistIChOU1N0cmluZyAqKXN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OihOU1N0cmlu
ZyAqKXByb3BlcnR5TmFtZTsKKy0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
RW5kOihOU1N0cmluZyAqKXByb3BlcnR5TmFtZTsKKy0gKHZvaWQpY29sbGFwc2VUb1N0YXJ0Owor
LSAodm9pZCljb2xsYXBzZVRvRW5kOwogQGVuZAogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IGFkZDAxM2YzMjg2ODUw
NjkyOTIxNmZlYTQ4NWQ4NGZjNWVlZDgxMzguLjk4ZjRmMDliNzVmNDkzYmUzZTA0MzczMDIzMTZl
NDRlMWY3MGIzNTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KQEAgLTMxNSw2ICszMTUsMjggQEAgTlNFdmVudE1hc2sgX19zaW11bGF0ZWRfZm9yY2VDbGlj
a0Fzc29jaWF0ZWRFdmVudHNNYXNrKGlkIHNlbGYsIFNFTCBfY21kKQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKKy0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCit7CisgICAgTlNTdHJpbmcg
KnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZ2V0Q29tcHV0ZWRTdHlsZShn
ZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApLnN0YXJ0Q29udGFpbmVyLnBhcmVudEVsZW1lbnQp
WyclQCddIiwgcHJvcGVydHlOYW1lXTsKKyAgICByZXR1cm4gW3NlbGYgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpzY3JpcHRdOworfQorCistIChOU1N0cmluZyAqKXN0eWxlUHJvcGVydHlB
dFNlbGVjdGlvbkVuZDooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKK3sKKyAgICBOU1N0cmluZyAq
c2NyaXB0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJnZXRDb21wdXRlZFN0eWxlKGdl
dFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCkuZW5kQ29udGFpbmVyLnBhcmVudEVsZW1lbnQpWycl
QCddIiwgcHJvcGVydHlOYW1lXTsKKyAgICByZXR1cm4gW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpzY3JpcHRdOworfQorCistICh2b2lkKWNvbGxhcHNlVG9TdGFydAoreworICAg
IFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9TdGFy
dCgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworfQorCistICh2b2lkKWNvbGxhcHNlVG9FbmQK
K3sKKyAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5jb2xsYXBz
ZVRvRW5kKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Cit9CisKIEBlbmQKIAogI2lmIFBMQVRG
T1JNKElPUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351535</attachid>
            <date>2018-10-03 10:51:49 -0700</date>
            <delta_ts>2018-10-04 15:27:22 -0700</delta_ts>
            <desc>Add setFontSize:sender:</desc>
            <filename>bug-190232-20181003105148.patch</filename>
            <type>text/plain</type>
            <size>41822</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI2ZmRkYTY1NjQyY2Y1ZTVh
ZTIxZWZmYWIxMjMwYWJhZTgzYzBlNGQuLmUxNzIyZjM4YTQ3ZmNmNzhiNzk1MGIwNDJlZjk0ZTgx
NWQ2ZTQwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDE4LTEwLTAzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXSzJdIEV4
cG9zZSBzb21lIG1vcmUgZWRpdGluZyBTUEkgb24gV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ0OTYzMzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEV4cG9zZXMgYSBmZXcgYWRkaXRpb25hbCBlZGl0aW5nIGNvbW1hbmRzIGFzIFNQ
SSBvbiBXS1dlYlZpZXcsIGJ5IGRlZmluaW5nIGEgbmV3IGV4dGVuc2lvbiBvbiBXS1dlYlZpZXcg
dGhhdAorICAgICAgICBhbHNvIGNvbmZvcm1zIHRvIDxVSVJlc3BvbmRlclN0YW5kYXJkRWRpdEFj
dGlvbnM+LiBUaGlzIHBhdGNoIGltcGxlbWVudHMgbmVhcmx5IGFsbCBvZiB0aGUgcmVtYWluaW5n
CisgICAgICAgIHVuaW1wbGVtZW50ZWQgbWV0aG9kcyBvbiBVSVJlc3BvbmRlclN0YW5kYXJkRWRp
dEFjdGlvbnMsIGFuZCB0aGUgbmV3IGNhdGVnb3J5IGF1Z21lbnRzIHRoaXMgc2V0IG9mIGVkaXRp
bmcKKyAgICAgICAgbWV0aG9kcyBieSBhZGRpbmcgYWRkaXRpb25hbCBlZGl0aW5nIGhlbHBlcnMg
dGhhdCBkb24ndCBjdXJyZW50bHkgZXhpc3Qgb24gaU9TIChlLmcuIHRvZ2dsZVN0cmlrZVRocm91
Z2ggYW5kCisgICAgICAgIGluc2VydFVub3JkZXJlZExpc3QpLiBUaGUgbmFtZXMgb2YgdGhlc2Ug
bmV3IG1ldGhvZHMgaGF2ZSBiZWVuIGxhcmdlbHkgYmVlbiBib3Jyb3dlZCBmcm9tIHRoZWlyIGNv
dW50ZXJwYXJ0cyBvbgorICAgICAgICBtYWNPUyAoc2VlOiBgTlNSZXNwb25kZXIuaGApLgorCisg
ICAgICAgIFRoZSBuZXcgZWRpdCBhY3Rpb25zIGFyZSBhZGRlZCBpbiB0aGlzIHBhdGNoIG9uIGlP
UyBhcmU6CisKKyAgICAgICAgYGBgCisgICAgICAgIC0gKHZvaWQpYWxpZ25DZW50ZXI6KGlkKXNl
bmRlcjsKKyAgICAgICAgLSAodm9pZClhbGlnbkp1c3RpZmllZDooaWQpc2VuZGVyOworICAgICAg
ICAtICh2b2lkKWFsaWduTGVmdDooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lkKWFsaWduUmln
aHQ6KGlkKXNlbmRlcjsKKyAgICAgICAgLSAodm9pZClpbmRlbnQ6KGlkKXNlbmRlcjsKKyAgICAg
ICAgLSAodm9pZClpbnNlcnRPcmRlcmVkTGlzdDooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lk
KWluc2VydFVub3JkZXJlZExpc3Q6KGlkKXNlbmRlcjsKKyAgICAgICAgLSAodm9pZClvdXRkZW50
OihpZClzZW5kZXI7CisgICAgICAgIC0gKHZvaWQpdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQpc2Vu
ZGVyOworICAgICAgICAtICh2b2lkKXNldEZvbnQ6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClz
ZW5kZXI7CisgICAgICAgIC0gKHZvaWQpc2V0Rm9udFNpemU6KENHRmxvYXQpZm9udFNpemUgc2Vu
ZGVyOihpZClzZW5kZXI7CisgICAgICAgIC0gKHZvaWQpc2V0VGV4dENvbG9yOihVSUNvbG9yICop
Y29sb3Igc2VuZGVyOihpZClzZW5kZXI7CisgICAgICAgIGBgYAorCisgICAgICAgIFRlc3RzOiAg
V0tXZWJWaWV3RWRpdEFjdGlvbnMuTGlzdEluc2VydGlvbgorICAgICAgICAgICAgICAgIFdLV2Vi
Vmlld0VkaXRBY3Rpb25zLkNoYW5nZUluZGVudGF0aW9uCisgICAgICAgICAgICAgICAgV0tXZWJW
aWV3RWRpdEFjdGlvbnMuU2V0QWxpZ25tZW50CisgICAgICAgICAgICAgICAgV0tXZWJWaWV3RWRp
dEFjdGlvbnMuVG9nZ2xlU3RyaWtlVGhyb3VnaAorICAgICAgICAgICAgICAgIFdLV2ViVmlld0Vk
aXRBY3Rpb25zLkNoYW5nZUZvbnRTaXplCisgICAgICAgICAgICAgICAgV0tXZWJWaWV3RWRpdEFj
dGlvbnMuU2V0VGV4dENvbG9yCisgICAgICAgICAgICAgICAgV0tXZWJWaWV3RWRpdEFjdGlvbnMu
U2V0Rm9udEZhbWlseQorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgY2FuUGVyZm9ybUFjdGlvbjp3aXRoU2VuZGVyOl0pOgorCisgICAgICAgIFVwZGF0
ZSB0aGlzIHRvIGhhbmRsZSB0aGUgbmV3IGVkaXRpbmcgYWN0aW9ucy4gRm9yIG5vdywgd2Ugc2lt
cGx5IHRyZWF0IGFsbCBvZiB0aGUgbmV3IGVkaXQgYWN0aW9ucyBpbiB0aGUgc2FtZQorICAgICAg
ICB3YXkgYXMgd2UgY3VycmVudGx5IHRyZWF0IGJvbGQsIGl0YWxpYyBhbmQgdW5kZXJsaW5lOiB0
aGF0IGlzLCB0aGV5IGFyZSBlbmFibGVkIG9ubHkgd2hlbiB0aGUgdXNlciBpcyBpbiBhCisgICAg
ICAgIHJpY2hseSBjb250ZW50ZWRpdGFibGUgZWxlbWVudC4KKworICAgICAgICAoLVtXS1dlYlZp
ZXcgc2V0Rm9udDpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRGb250U2l6ZTpz
ZW5kZXI6XSk6CisKKyAgICAgICAgQ29uc3RydWN0IGFuZCBzZW5kIGEgc2V0IG9mIEZvbnRDaGFu
Z2VzLgorCisgICAgICAgICgtW1dLV2ViVmlldyBzZXRUZXh0Q29sb3I6c2VuZGVyOl0pOgorCisg
ICAgICAgIEludm9rZSAiRm9yZUNvbG9yIiB3aXRoIHRoZSBzZXJpYWxpemVkIGNvbG9yIHJlcHJl
c2VudGF0aW9uLiBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgYHJnYmEoKWAgY29sb3IgdmFsdWVz
LAorICAgICAgICB3aGljaCBoZXggZm9ybWF0IHdvdWxkIG5vdCBwZXJtaXQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICBBZGQg
dGhlIG5ldyBTUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udCk6CisKKyAgICAgICAgUHVsbCBs
b2dpYyBmb3IgYXBwbHlpbmcgZm9udCBhbmQgZm9udCBhdHRyaWJ1dGUgc3R5bGUgY2hhbmdlcyBv
dXQgb2YgbWFjT1Mtc3BlY2lmaWMgY29kZSwgYW5kIGludG8KKyAgICAgICAgcGxhdGZvcm0tYWdu
b3N0aWMgY29kZSBpbiBXZWJQYWdlIGFuZCBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaDoKKworICAgICAgICBBZGQgdGhlIG5ldyBzdXBwb3J0ZWQgZWRpdGlu
ZyBjb21tYW5kcyBhcyBzdXBwb3J0ZWQgYWN0aW9ucyBpbiBXS1dlYlZpZXcuIFRoZSBvbmx5IG5l
dyBlZGl0aW5nIGNvbW1hbmRzIHRoYXQKKyAgICAgICAgYXJlbid0IHByZXNlbnQgaW4gdGhpcyBs
aXN0IGFyZSAtc2V0Rm9udDpzZW5kZXI6LCAtc2V0Q29sb3I6c2VuZGVyOiwgYW5kIC1zZXRGb250
U2l6ZTpzZW5kZXI6IHdoaWNoIGFyZSBtYW51YWxseQorICAgICAgICBoYW5kbGVkIGluIHBsYWNl
cyB3aGVyZSB0aGUgYEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9OYCBtYWNybyBpcyBvdGhl
cndpc2UgdXNlZC4gSW4gYSBmb2xsb3d1cCwgd2UgY291bGQKKyAgICAgICAgY29uc2lkZXIgYXVn
bWVudGluZyBgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT05gIHRvIGhhbmRsZSBhY3Rpb25z
IHdpdGggbXVsdGlwbGUgYXJndW1lbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisKKyAgICAgICAgRGVmaW5lIGEgbmV3IGhlbHBlciBt
YWNybyBoZXJlIHRvIGRlZmluZSBib2lsZXJwbGF0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC3i
gKZGb3JXZWJWaWV3IGVkaXQgY29tbWFuZAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgdGhhdCB0
dXJuIGFyb3VuZCBhbmQgaW52b2tlIGBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kYCB3aXRoIG5v
IGFkZGl0aW9uYWwgYXJndW1lbnRzLCBhbmQgYW4KKyAgICAgICAgZWRpdCBjb21tYW5kIG5hbWUg
bWF0Y2hpbmcgdGhhdCBvZiB0aGUgV2ViQ29yZSBlZGl0IGNvbW1hbmQuCisKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBpbmNyZWFzZVNpemVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGRlY3JlYXNlU2l6ZUZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgc2V0Rm9udEZvcldlYlZpZXc6c2VuZGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHNldEZvbnRTaXplRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgc2V0VGV4dENvbG9yRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6c2VuZGVyOl0pOgorCisgICAg
ICAgIEFkZCDigKZGb3JXZWJWaWV3IHBsdW1iaW5nIGZvciB0aGUgbmV3IGVkaXRpbmcgYWN0aW9u
cywgc28gdGhleSB0dXJuIGFyb3VuZCBhbmQgY2FsbCBpbnRvIFdLQ29udGVudFZpZXcgYnkKKyAg
ICAgICAgZGVmYXVsdCwgYnV0IGJlaGF2aW9yIG1heSBiZSBvdmVycmlkZGVuIGluIFdLV2ViVmll
dy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Y2hhbmdlRm9udCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Y2hhbmdlRm9udCk6IERlbGV0ZWQuCisKIDIwMTgtMTAtMDMgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dU
S10gRW5hYmxlIE1TRSBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9V
SUtpdFNQSS5oCmluZGV4IDAwY2FhMThiY2E4Y2RiMTE1ZTFjMjA4ZGNkNTQ0NzEyNThjYTcwY2Qu
LjE4OTM1NzUyMTliNmQxMzk5NzA2M2MyNjVjZDNmZjA2ZDAxNGVkNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0xOTUsMTEgKzE5NSwxNCBAQCB0eXBl
ZGVmIGVudW0gewogQGVuZAogCiB0eXBlZGVmIGVudW0gewotICAgIFVJRm9udFRyYWl0UGxhaW4g
PSAweDAwMDAwMDAwLAorICAgIFVJRm9udFRyYWl0UGxhaW4gPSAwLAorICAgIFVJRm9udFRyYWl0
SXRhbGljID0gMSA8PCAwLAorICAgIFVJRm9udFRyYWl0Qm9sZCA9IDEgPDwgMSwKIH0gVUlGb250
VHJhaXQ7CiAKIEBpbnRlcmZhY2UgVUlGb250ICgpCiArIChVSUZvbnQgKilmb250V2l0aEZhbWls
eU5hbWU6KE5TU3RyaW5nICopZmFtaWx5TmFtZSB0cmFpdHM6KFVJRm9udFRyYWl0KXRyYWl0cyBz
aXplOihDR0Zsb2F0KWZvbnRTaXplOworLSAoVUlGb250VHJhaXQpdHJhaXRzOwogQGVuZAogCiB0
eXBlZGVmIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggMDkyYzY1NGMyZjRjY2FkMTgxNGE1YzBkZTVlMTU2NGUwMTU5MmZhYy4u
MTg3YjA0Mjc2MzE4NmJiMDU1ZWE3MzU0MzAzOThiNTI1MmVhNGZhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMzk0LDYgKzEzOTQs
OSBAQCBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS0NP
TlRFTlRWSUVXKQogCiAgICAgI3VuZGVmIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NP
TlRFTlRWSUVXCiAKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzZXRUZXh0Q29sb3I6c2Vu
ZGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihzZXRGb250U2l6ZTpzZW5kZXI6KSB8fCBhY3Rp
b24gPT0gQHNlbGVjdG9yKHNldEZvbnQ6c2VuZGVyOikpCisgICAgICAgIHJldHVybiBzZWxmLnVz
ZXNTdGFuZGFyZENvbnRlbnRWaWV3ICYmIFtfY29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZv
cldlYlZpZXc6YWN0aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsKKwogICAgIHJldHVybiBbc3VwZXIg
Y2FuUGVyZm9ybUFjdGlvbjphY3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJdOwogfQogCkBAIC0xNDEy
LDYgKzE0MTUsMjEgQEAgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJ
T05fVE9fV0tDT05URU5UVklFVykKICAgICByZXR1cm4gW3N1cGVyIHRhcmdldEZvckFjdGlvbjph
Y3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJdOwogfQogCistICh2b2lkKXNldEZvbnQ6KFVJRm9udCAq
KWZvbnQgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBbX2NvbnRlbnRWaWV3IHNldEZvbnRGb3JX
ZWJWaWV3OmZvbnQgc2VuZGVyOnNlbmRlcl07Cit9CisKKy0gKHZvaWQpc2V0VGV4dENvbG9yOihV
SUNvbG9yICopY29sb3Igc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBbX2NvbnRlbnRWaWV3IHNl
dFRleHRDb2xvckZvcldlYlZpZXc6Y29sb3Igc2VuZGVyOnNlbmRlcl07Cit9CisKKy0gKHZvaWQp
c2V0Rm9udFNpemU6KENHRmxvYXQpZm9udFNpemUgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBb
X2NvbnRlbnRWaWV3IHNldEZvbnRTaXplRm9yV2ViVmlldzpmb250U2l6ZSBzZW5kZXI6c2VuZGVy
XTsKK30KKwogc3RhdGljIGlubGluZSBDR0Zsb2F0IGZsb29yVG9EZXZpY2VQaXhlbChDR0Zsb2F0
IGlucHV0LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICByZXR1cm4gQ0dGbG9vcihp
bnB1dCAqIGRldmljZVNjYWxlRmFjdG9yKSAvIGRldmljZVNjYWxlRmFjdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5k
ZXggMDYyZjE1ZTViNzk5NmRhMGY0MzVkMjYzZTZmOGFhZTkzNzE2OWUzNi4uMDgzN2E2MWIxNTNl
NWI2YmYyNjE1Yzg3ZjVhNWZjM2I4MDEwOTUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNjYsOSArMzY2LDI4
IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiBAZW5k
CiAKLSNpZiAhVEFSR0VUX09TX0lQSE9ORQorI2lmIFRBUkdFVF9PU19JUEhPTkUKKworQGludGVy
ZmFjZSBXS1dlYlZpZXcgKCkgPFVJUmVzcG9uZGVyU3RhbmRhcmRFZGl0QWN0aW9ucz4KKy0gKHZv
aWQpYWxpZ25DZW50ZXI6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJB
KSk7CistICh2b2lkKWFsaWduSnVzdGlmaWVkOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShp
b3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClhbGlnbkxlZnQ6KGlkKXNlbmRlciBXS19BUElfQVZB
SUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKWFsaWduUmlnaHQ6KGlkKXNlbmRlciBX
S19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKWluZGVudDooaWQpc2Vu
ZGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpaW5zZXJ0T3Jk
ZXJlZExpc3Q6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7Cist
ICh2b2lkKWluc2VydFVub3JkZXJlZExpc3Q6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CistICh2b2lkKW91dGRlbnQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxB
QkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKXRvZ2dsZVN0cmlrZVRocm91Z2g6KGlkKXNl
bmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKXNldEZvbnQ6
KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tf
SU9TX1RCQSkpOworLSAodm9pZClzZXRGb250U2l6ZTooQ0dGbG9hdClmb250U2l6ZSBzZW5kZXI6
KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKXNl
dFRleHRDb2xvcjooVUlDb2xvciAqKWNvbG9yIHNlbmRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJ
TEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKK0BlbmQKKworI2Vsc2UKKwogQGludGVyZmFjZSBXS1dl
YlZpZXcgKFdLTlNUZXh0RmluZGVyQ2xpZW50KSA8TlNUZXh0RmluZGVyQ2xpZW50PgogQGVuZAor
CiAjZW5kaWYKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQyMmYyNmFlYTE4NDhhNDA5YTgyODdj
MzI2NTY1YjNmM2VkMTM3YzAuLmUzYTBkOTdjNWYwYWRmNDU2NGRkNjU0ZGUxOTNjNGRlNjA0N2Uy
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTMzLDYg
KzEzMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hhbmdlcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dsb2JhbEZyYW1lSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR2xvYmFsV2luZG93SWRlbnRpZmllci5oPgpAQCAtNzA0
NCw2ICs3MDQ1LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRNSU1FVHlwZVdpdGhDdXN0b21D
b250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRl
cihtaW1lVHlwZSksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZv
bnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKK3sK
KyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdl
cykpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNv
cmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5n
ZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsKK30KKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZTY2YzU0YThhMzI1
ODNiYmY3OGIwYjczZjdhZDlhM2NlY2NjNjU1OC4uOTIzZTRhOGIwMjA4ZTY5ODJmNTA3ZjM0YWVl
NzgzOGJhZWI3ZTIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTY5OCwxMSArNjk4LDEyIEBAIHB1YmxpYzoKICAgICBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQ
ZXJmb3JtYW5jZURhdGEqIHNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpIHsgcmV0dXJuIG1fc2Ny
b2xsaW5nUGVyZm9ybWFuY2VEYXRhLmdldCgpOyB9CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0Ep
CiAKKyAgICB2b2lkIGNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVD
aGFuZ2VzJiYpOworICAgIHZvaWQgY2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmKTsK
KwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9u
QWx0ZXJuYXRpdmVzLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKTsKICAgICB2b2lkIGF0dHJpYnV0
ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdS
YW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIGNoYW5nZUZvbnRBdHRy
aWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYpOwotICAgIHZvaWQgY2hhbmdl
Rm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYpOwogCiAgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aAppbmRleCBhMjM5ZGU5ZGM1ZTFlYzA4NTQ2ZWQzMWVhMzcyZDBkYzUxNDQ3YzUwLi45ZGVjNGQ4
YmRhNzU3ZmVkMDQyYzQ4ZDhhZTQ0M2U5Y2FlMjNjOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xMjEs
NyArMTIxLDE4IEBAIHR5cGVkZWYgc3RkOjpwYWlyPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvblJlcXVlc3QsIEludGVyYWN0aW9uSW5mb3JtYXRpb25DCiAgICAgTShzZWxlY3RBbGwpIFwK
ICAgICBNKHRvZ2dsZUJvbGRmYWNlKSBcCiAgICAgTSh0b2dnbGVJdGFsaWNzKSBcCi0gICAgTSh0
b2dnbGVVbmRlcmxpbmUpCisgICAgTSh0b2dnbGVVbmRlcmxpbmUpIFwKKyAgICBNKGluY3JlYXNl
U2l6ZSkgXAorICAgIE0oZGVjcmVhc2VTaXplKSBcCisgICAgTSh0b2dnbGVTdHJpa2VUaHJvdWdo
KSBcCisgICAgTShpbnNlcnRVbm9yZGVyZWRMaXN0KSBcCisgICAgTShpbnNlcnRPcmRlcmVkTGlz
dCkgXAorICAgIE0oaW5kZW50KSBcCisgICAgTShvdXRkZW50KSBcCisgICAgTShhbGlnbkxlZnQp
IFwKKyAgICBNKGFsaWduUmlnaHQpIFwKKyAgICBNKGFsaWduQ2VudGVyKSBcCisgICAgTShhbGln
bkp1c3RpZmllZCkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTMxOSw2ICszMzAsMTAgQEAg
Rk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElP
Tl9GT1JfV0VCX1ZJRVcpCiBERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklF
VyhfcGFzdGVBc1F1b3RhdGlvbikKICN1bmRlZiBERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9O
X0ZPUl9XRUJfVklFVwogCistICh2b2lkKXNldEZvbnRGb3JXZWJWaWV3OihVSUZvbnQgKilmb250
RmFtaWx5IHNlbmRlcjooaWQpc2VuZGVyOworLSAodm9pZClzZXRGb250U2l6ZUZvcldlYlZpZXc6
KENHRmxvYXQpZm9udFNpemUgc2VuZGVyOihpZClzZW5kZXI7CistICh2b2lkKXNldFRleHRDb2xv
ckZvcldlYlZpZXc6KFVJQ29sb3IgKiljb2xvciBzZW5kZXI6KGlkKXNlbmRlcjsKKwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiAtICh2b2lkKV93ZWJUb3VjaEV2ZW50Oihjb25zdCBXZWJLaXQ6
Ok5hdGl2ZVdlYlRvdWNoRXZlbnQmKXRvdWNoRXZlbnQgcHJldmVudHNOYXRpdmVHZXN0dXJlczoo
Qk9PTClwcmV2ZW50c0RlZmF1bHQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGIwMWM0ZjZh
M2M1NGU5OWM3MTY1NTc4YmFlNzIyZjM4ZWNiOGU1OGMuLjdmMmYwNzI4NDlmZGI2YWZkNGU3Mzdj
Y2ZjYjg4YWE4ZTczMDQ0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzUsNiArNzUsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Db2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0
cmlidXRlQ2hhbmdlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgpAQCAtMjI3OSw2ICsyMjgwLDU3IEBAIEZPUldBUkRfQUNUSU9OX1RPX1dLV0VCVklF
VyhfcGFzdGVBc1F1b3RhdGlvbikKICAgICBbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNl
XSByZXBsYWNlVGV4dDpzZW5kZXJdOwogfQogCisjZGVmaW5lIFdFQkNPUkVfQ09NTUFORF9GT1Jf
V0VCVklFVyhjb21tYW5kKSAtICh2b2lkKWNvbW1hbmQgIyMgRm9yV2ViVmlldzooaWQpc2VuZGVy
IHsgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgjY29tbWFuZCAjIyBfcyk7IH0KKworV0VCQ09S
RV9DT01NQU5EX0ZPUl9XRUJWSUVXKGluc2VydE9yZGVyZWRMaXN0KTsKK1dFQkNPUkVfQ09NTUFO
RF9GT1JfV0VCVklFVyhpbnNlcnRVbm9yZGVyZWRMaXN0KTsKK1dFQkNPUkVfQ09NTUFORF9GT1Jf
V0VCVklFVyhpbmRlbnQpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKG91dGRlbnQpOwor
V0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGFsaWduTGVmdCk7CitXRUJDT1JFX0NPTU1BTkRf
Rk9SX1dFQlZJRVcoYWxpZ25SaWdodCk7CitXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoYWxp
Z25DZW50ZXIpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGFsaWduSnVzdGlmaWVkKTsK
KworLSAodm9pZCl0b2dnbGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzooaWQpc2VuZGVyCit7Cisg
ICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgiU3RyaWtlVGhyb3VnaCJfcyk7Cit9CisKKy0g
KHZvaWQpaW5jcmVhc2VTaXplRm9yV2ViVmlldzooaWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmV4
ZWN1dGVFZGl0Q29tbWFuZCgiRm9udFNpemVEZWx0YSJfcywgIjEiX3MpOworfQorCistICh2b2lk
KWRlY3JlYXNlU2l6ZUZvcldlYlZpZXc6KGlkKXNlbmRlcgoreworICAgIF9wYWdlLT5leGVjdXRl
RWRpdENvbW1hbmQoIkZvbnRTaXplRGVsdGEiX3MsICItMSJfcyk7Cit9CisKKy0gKHZvaWQpc2V0
Rm9udEZvcldlYlZpZXc6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBX
ZWJDb3JlOjpGb250Q2hhbmdlcyBjaGFuZ2VzOworICAgIGNoYW5nZXMuc2V0Rm9udEZhbWlseShm
b250LmZhbWlseU5hbWUpOworICAgIGNoYW5nZXMuc2V0Rm9udE5hbWUoZm9udC5mb250TmFtZSk7
CisgICAgY2hhbmdlcy5zZXRGb250U2l6ZShmb250LnBvaW50U2l6ZSk7CisgICAgY2hhbmdlcy5z
ZXRCb2xkKGZvbnQudHJhaXRzICYgVUlGb250VHJhaXRCb2xkKTsKKyAgICBjaGFuZ2VzLnNldEl0
YWxpYyhmb250LnRyYWl0cyAmIFVJRm9udFRyYWl0SXRhbGljKTsKKyAgICBfcGFnZS0+Y2hhbmdl
Rm9udChXVEZNb3ZlKGNoYW5nZXMpKTsKK30KKworLSAodm9pZClzZXRGb250U2l6ZUZvcldlYlZp
ZXc6KENHRmxvYXQpZm9udFNpemUgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBXZWJDb3JlOjpG
b250Q2hhbmdlcyBjaGFuZ2VzOworICAgIGNoYW5nZXMuc2V0Rm9udFNpemUoZm9udFNpemUpOwor
ICAgIF9wYWdlLT5jaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpOworfQorCistICh2b2lkKXNl
dFRleHRDb2xvckZvcldlYlZpZXc6KFVJQ29sb3IgKiljb2xvciBzZW5kZXI6KGlkKXNlbmRlcgor
eworICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoIkZvcmVDb2xvciJfcywgV2ViQ29yZTo6
Q29sb3IoY29sb3IuQ0dDb2xvcikuc2VyaWFsaXplZCgpKTsKK30KKworI3VuZGVmIFdFQkNPUkVf
Q09NTUFORF9GT1JfV0VCVklFVworCiAtIChOU0RpY3Rpb25hcnkgKil0ZXh0U3R5bGluZ0F0UG9z
aXRpb246KFVJVGV4dFBvc2l0aW9uICopcG9zaXRpb24gaW5EaXJlY3Rpb246KFVJVGV4dFN0b3Jh
Z2VEaXJlY3Rpb24pZGlyZWN0aW9uCiB7CiAgICAgaWYgKCFwb3NpdGlvbiB8fCAhX3BhZ2UtPmVk
aXRvclN0YXRlKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUpCkBAIC0yMzM4LDggKzIzOTAsMTUg
QEAgRk9SV0FSRF9BQ1RJT05fVE9fV0tXRUJWSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQogICAgICAg
ICByZXR1cm4gZWRpdG9yU3RhdGUuaXNDb250ZW50UmljaGx5RWRpdGFibGUgJiYgZWRpdG9yU3Rh
dGUuc2VsZWN0aW9uSXNSYW5nZSAmJiAhX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zOwogICAgIGlm
IChfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnMpCiAgICAgICAgIHJldHVybiAoYWN0aW9uID09IEBz
ZWxlY3Rvcih0b2dnbGVCb2xkZmFjZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlSXRh
bGljczopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlVW5kZXJsaW5lOikpOwotICAgIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUJvbGRmYWNlOikgfHwgYWN0aW9uID09IEBzZWxl
Y3Rvcih0b2dnbGVJdGFsaWNzOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVVbmRlcmxp
bmU6KSkKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVCb2xkZmFjZTopIHx8IGFj
dGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlSXRhbGljczopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Io
dG9nZ2xlVW5kZXJsaW5lOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVTdHJpa2VUaHJv
dWdoOikKKyAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihpbnNlcnRPcmRlcmVkTGlzdDop
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5zZXJ0VW5vcmRlcmVkTGlzdDopIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IoaW5kZW50OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihvdXRkZW50OikKKyAg
ICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnbkxlZnQ6KSB8fCBhY3Rpb24gPT0gQHNl
bGVjdG9yKGFsaWduUmlnaHQ6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGFsaWduQ2VudGVyOikg
fHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnbkp1c3RpZmllZDopCisgICAgICAgIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3IoaW5jcmVhc2VTaXplOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihkZWNy
ZWFzZVNpemU6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldFRleHRDb2xvcjpzZW5kZXI6KQor
ICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldEZvbnQ6c2VuZGVyOikgfHwgYWN0aW9u
ID09IEBzZWxlY3RvcihzZXRGb250U2l6ZTpzZW5kZXI6KSkgeworICAgICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgbW9yZSBudWFuY2VkIGluIHRoZSBmdXR1cmUsIHJhdGhlciB0aGFuIHJl
dHVybmluZyBZRVMgZm9yIGFsbCByaWNobHkgZWRpdGFibGUgYXJlYXMuIEZvciBpbnN0YW5jZSwg
b3V0ZGVudDogc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBhbHJlYWR5
CisgICAgICAgIC8vIGF0IHRoZSBvdXRlcm1vc3QgaW5kZW50YXRpb24gbGV2ZWwuCiAgICAgICAg
IHJldHVybiBlZGl0b3JTdGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKKyAgICB9CiAgICAg
aWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoY3V0OikpCiAgICAgICAgIHJldHVybiAhZWRpdG9yU3Rh
dGUuaXNJblBhc3N3b3JkRmllbGQgJiYgZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGUgJiYg
ZWRpdG9yU3RhdGUuc2VsZWN0aW9uSXNSYW5nZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDQ4NDE4Y2NlODQ5MmUwMjQ3MjQ3
ZmJhOWVjMmUwN2UyN2MwZDI2NzguLjEwOWQxYTRlNjJjZTIwMjZjMTI5MTQzMmE0YWNhOWNkNThk
Y2YxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQpAQCAtNTEsNyArNTEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5h
dGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RyYWdJdGVtLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2Vz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
TGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmg+CkBAIC02MjksMjIgKzYyOCw2IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojph
cHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZCgpCiAgICAgcmV0dXJuIE1hY0FwcGxpY2F0aW9uOjpp
c0FwcGxlTWFpbCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0
ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQotewotICAgIGlmICgh
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFn
ZUlEKTsKLX0KLSAgICAKLXZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZv
bnRDaGFuZ2VzJiYgY2hhbmdlcykKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQo
V1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmVk
aXRvclN0YXRlQ2hhbmdlZChjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiB7CiAgICAg
Ym9vbCBjb3VsZENoYW5nZVNlY3VyZUlucHV0U3RhdGUgPSBtX2VkaXRvclN0YXRlLmlzSW5QYXNz
d29yZEZpZWxkICE9IGVkaXRvclN0YXRlLmlzSW5QYXNzd29yZEZpZWxkIHx8IG1fZWRpdG9yU3Rh
dGUuc2VsZWN0aW9uSXNOb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAyMmI4MDkwMTEyOTc2MjgwZGIzZmVmMjE4OGUyZTdiOGFiZWQ5NGQ5
Li5kMDMwODhjYWZkY2NjOGRmNGZmODI2NjY2YTE2YmNkYTc2NzM0NWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTU1LDYgKzE1NSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250QXR0cmli
dXRlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9ybVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZS5oPgpAQCAtOTk4LDYgKzk5OSwyMCBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0
b3JTdGF0ZShJbmNsdWRlUG9zdExheW91dERhdGFIaW50IHNob3VsZEluY2x1ZGVQb3N0TGF5bwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y2hhbmdlRm9udEF0dHJpYnV0
ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQoreworICAgIGF1dG8m
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
KyAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUo
KSkKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNoYW5nZXMu
Y3JlYXRlRWRpdGluZ1N0eWxlKCksIGNoYW5nZXMuZWRpdEFjdGlvbigpLCBFZGl0b3I6OkNvbG9y
RmlsdGVyTW9kZTo6SW52ZXJ0Q29sb3IpOworfQorCit2b2lkIFdlYlBhZ2U6OmNoYW5nZUZvbnQo
V2ViQ29yZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQoreworICAgIGF1dG8mIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoZnJh
bWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNoYW5nZXMuY3JlYXRlRWRpdGlu
Z1N0eWxlKCksIEVkaXRBY3Rpb246OlNldEZvbnQsIEVkaXRvcjo6Q29sb3JGaWx0ZXJNb2RlOjpJ
bnZlcnRDb2xvcik7Cit9CisKIHZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENh
bGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBleGVjdXRlRWRpdENvbW1hbmQoY29tbWFu
ZE5hbWUsIGFyZ3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCAxNTBhYjRmZWQ5ZTRhNmNkNDMxMzQ1Mjc2NmI4OTgwZDg3NWNjZjg4Li5hMTNk
OTFiYTdiMDAwZDIyOTYwZDkyYjViNWUyNDdlOTRhYTkwZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMzYwLDE0ICsxMzYwLDE1IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRh
JiYpOwogCisgICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYpOworICAg
IHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMm
Jik7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBwZXJmb3JtSW1tZWRpYXRlQWN0aW9u
SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCk7CiAgICAgc3RkOjp0dXBsZTxS
ZWZQdHI8V2ViQ29yZTo6UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKj4gbG9va3VwVGV4dEF0TG9jYXRp
b24oV2ViQ29yZTo6RmxvYXRQb2ludCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRVcGRh
dGUoKTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgpOwogICAgIHZvaWQgaW1t
ZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKTsKLSAgICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6
Rm9udENoYW5nZXMmJik7Ci0gICAgdm9pZCBjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpG
b250QXR0cmlidXRlQ2hhbmdlcyYmKTsKIAogICAgIHZvaWQgZGF0YURldGVjdG9yc0RpZFByZXNl
bnRVSShXZWJDb3JlOjpQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXlJRCk7CiAgICAgdm9pZCBkYXRh
RGV0ZWN0b3JzRGlkQ2hhbmdlVUkoV2ViQ29yZTo6UGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KaW5kZXggZDc1YWNlZWEwZTAwMDIzYWIyMTliMjkxMzllMzYyMjZhZjljNmM3Ni4u
ODg1MGY2NDBlMjFmZGM1NTUzMGM0ZmM2ODkxZWVhNzQyZjAxMjQyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0x
OTAsOSArMTkwLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2Vs
ZWN0aW9uKCkKKyNlbmRpZgorCiAgICAgQ2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyBj
aGFuZ2VzKQogICAgIENoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVD
aGFuZ2VzIGNoYW5nZXMpCi0jZW5kaWYKIAogICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVj
dCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYjc4MTc5NjA1
MTk5ZDYzYzVkOTg0ZmRkNWVkYmI5ZTIzMjcxYjBhZS4uNjIzM2JmOTZhMWM2OTgxNzZkNWEwYmE1
MTFhZTQzNTA2YWQwMjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTYzLDcgKzYzLDYgQEAKICNpbXBvcnQgPFdlYkNv
cmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0
ZUNoYW5nZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CkBAIC0xMTEzLDIw
ICsxMTEyLDYgQEAgdm9pZCBXZWJQYWdlOjpkYXRhRGV0ZWN0b3JzRGlkSGlkZVVJKFBhZ2VPdmVy
bGF5OjpQYWdlT3ZlcmxheUlEIG92ZXJsYXlJRCkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6
Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFu
Z2VzKQotewotICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
aXNDb250ZW50RWRpdGFibGUoKSkKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZVRv
U2VsZWN0aW9uKGNoYW5nZXMuY3JlYXRlRWRpdGluZ1N0eWxlKCksIGNoYW5nZXMuZWRpdEFjdGlv
bigpLCBFZGl0b3I6OkNvbG9yRmlsdGVyTW9kZTo6SW52ZXJ0Q29sb3IpOwotfQotCi12b2lkIFdl
YlBhZ2U6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQotewotICAg
IGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKLSAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRp
dGFibGUoKSkKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNo
YW5nZXMuY3JlYXRlRWRpdGluZ1N0eWxlKCksIEVkaXRBY3Rpb246OlNldEZvbnQsIEVkaXRvcjo6
Q29sb3JGaWx0ZXJNb2RlOjpJbnZlcnRDb2xvcik7Ci19Ci0KICNpZiBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQYWdlOjpwbGF5YmFj
a1RhcmdldFNlbGVjdGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6TWVkaWFQ
bGF5YmFja1RhcmdldENvbnRleHQmIHRhcmdldENvbnRleHQpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTBjOTU3NTgwYmM2ODE0
YzNiNmRlZGNiMjYyZmJlM2M4NzU5MjhlZi4uNGQ5ZTMyMWJkNmM2ZDk3ZTEwNjQzN2ZlNjc0ZDZi
NmEzMjE3MzVhNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTEwLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXSzJdIEV4cG9zZSBzb21lIG1vcmUg
ZWRpdGluZyBTUEkgb24gV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTAyMzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0OTYzMzY4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
bmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSB0aGUgbmV3IFNQSXMuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbTogQWRk
ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZyk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Gb250TWFuYWdlclRlc3RzLm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGNvbGxh
cHNlVG9TdGFydF0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IGNvbGxhcHNl
VG9FbmRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzdHlsZVByb3BlcnR5
QXRTZWxlY3Rpb25TdGFydDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBz
dHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN0eWxlUHJv
cGVydHlBdFNlbGVjdGlvblN0YXJ0Ol0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN0eWxl
UHJvcGVydHlBdFNlbGVjdGlvbkVuZDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjb2xs
YXBzZVRvU3RhcnRdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjb2xsYXBzZVRvRW5kXSk6
CisKKyAgICAgICAgUHVsbCBzb21lIGNvbW1vbiB0ZXN0aW5nIGhlbHBlcnMgb3V0IG9mIE5TRm9u
dE1hbmFnZXIgYW5kIGludG8gVGVzdFdLV2ViVmlldy4KKwogMjAxOC0xMC0wMyAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFbmFibGUgc2VsZWN0aW9uQWNyb3Nz
U2hhZG93Qm91bmRhcmllc0VuYWJsZWQgYnkgZGVmYXVsdCBpbiBXZWJLaXRMZWdhY3kKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYzE1YzQ3OTI0MTMyYjg0MzE5ZDJkNGUxNDhkZjA0ZDQ4MDMw
NTUyMS4uY2VkNTI5Mzk4N2VhNWFhMGQ2YjE2MzVmYjQ0MTkxZDQyNTczZDE1NCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTg1OCw2ICs4NTgsNyBAQAogCQlGNEY0MDVCRDFENEMwRDFDMDA3
QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQjFE
NEMwQ0Y4MDA3QTk3MDcgLyogc2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRt
bCAqLzsgfTsKIAkJRjRGQTkxODExRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRp
bmdUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0RkE5MTdGMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0g
Ki87IH07CiAJCUY0RkE5MTgzMUU2MTg1N0IwMDdCOEMxRCAvKiBkb3VibGUtY2xpY2stZG9lcy1u
b3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQTkxODIxRTYxODU2NjAwN0I4QzFEIC8qIGRv
dWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCAqLzsgfTsKKwkJ
RjRGQjY4MjUyMTY0M0VGQzAwMzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQjY4MjQyMTY0M0VG
QzAwMzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tICovOyB9OwogCQlGNEZDMDc3NzIw
RjAxM0I2MDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZDMDc3NjIw
RjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLzsgfTsK
IAkJRjY2MEFBMTExNUE1RjYzMTAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6
YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjYwQUEwRjE1QTVGNjI0MDAzQTEyNDMgLyogR2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCAqLzsg
fTsKIAkJRjY2MEFBMTUxNUE2MUFCRjAwM0ExMjQzIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6
YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY2MEFBMTQxNUE2MUFCRjAwM0ExMjQzIC8qIElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3Bw
ICovOyB9OwpAQCAtMjExNiw2ICsyMTE3LDcgQEAKIAkJRjRGNDA1QkIxRDRDMENGODAwN0E5NzA3
IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAic2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RkE5MTdGMUU2MTg0OUIwMDdCOEMx
RCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0RkE5MTgyMUU2MTg1NjYwMDdCOEMxRCAvKiBkb3VibGUtY2xp
Y2stZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IG5hbWUgPSAiZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5o
dG1sIjsgcGF0aCA9ICJUZXN0cy9XZWJLaXRDb2NvYS9kb3VibGUtY2xpY2stZG9lcy1ub3Qtc2Vs
ZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwiOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CUY0RkI2ODI0MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQt
dGV4dC1taWxlc3RvbmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9u
ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjY2MEFBMEMxNUE1RjA2MTAw
M0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldEluamVjdGVkQnVu
ZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNl
ckRhdGFDYWxsYmFja19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjU2Niw2ICsyNTY4LDcgQEAKIAkJCQlGNDY4NDlCRDFFRUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0
ZWJvYXJkVGVzdHMubW0gKi8sCiAJCQkJRjQzRTNCQkUyMERBREExRTAwQTRFN0VEIC8qIFdLU2Ny
b2xsVmlld1Rlc3RzLm1tICovLAogCQkJCTUxNDk1OEJEMUY3NDI3QUMwMEU4N0JBRCAvKiBXS1dl
YlZpZXdBdXRvZmlsbFRlc3RzLm1tICovLAorCQkJCUY0RkI2ODI0MjE2NDNFRkMwMDM0NjA3QSAv
KiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQwODgsNiArNDA5MSw3IEBACiAJCQkJN0M0MTdG
MzMxRDE5RTE0ODAwQjhFRjUzIC8qIFdLV2ViVmlld0RlZmF1bHROYXZpZ2F0aW9uRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk0NkU2NkE5MDFGMEQ3NTU5MDAyNkQ4M0MgLyogV0tXZWJW
aWV3RGlhZ25vc3RpY0xvZ2dpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREI2NDc4ODFGNDE2
M0Q2MDA1MUE4OUUgLyogV0tXZWJWaWV3RG9lc05vdExvZ0R1cmluZ0luaXRpYWxpemF0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJRjRGQjY4MjUyMTY0M0VGQzAwMzQ2MDdBIC8qIFdLV2ViVmll
d0VkaXRBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjk0QTcxQTc3MjY3NDAwREUz
MjcyIC8qIFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUQzNEUwODc2MUU0RTQyRTEwMDVGRjE0QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUY0RkE5MTgxMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNF
ZGl0aW5nVGVzdHMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVlZTYw
OWQzNWI4ODE0NzU5OTVkYTQxOWE5ZjhhZTdmMDYwNDVjMAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tCkBAIC0w
LDAgKzEsMTk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQTEFU
Rk9STShJT1MpICYmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2lt
cG9ydCA8VUlLaXQvVUlGb250RGVzY3JpcHRvci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KKworQGludGVyZmFjZSBUZXN0V0tXZWJWaWV3IChFZGl0QWN0aW9uVGVzdGlu
ZykKKy0gKEJPT0wpcXVlcnlTZWxlY3RvckV4aXN0czooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9y
OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoRWRpdEFjdGlvblRlc3Rp
bmcpCisKKy0gKEJPT0wpcXVlcnlTZWxlY3RvckV4aXN0czooTlNTdHJpbmcgKilxdWVyeVNlbGVj
dG9yCit7CisgICAgcmV0dXJuIFtbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiISFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAlQGAp
IiwgcXVlcnlTZWxlY3Rvcl1dIGJvb2xWYWx1ZV07Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdG
b3JFZGl0QWN0aW9uVGVzdGluZygpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQw
MCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2Pldl
YktpdDwvZGl2PiJdOworICAgIFt3ZWJWaWV3IF9zZXRFZGl0YWJsZTpZRVNdOworICAgIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3Np
dGlvbihkb2N1bWVudC5ib2R5LCAxKSJdOworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitURVNU
KFdLV2ViVmlld0VkaXRBY3Rpb25zLCBMaXN0SW5zZXJ0aW9uKQoreworICAgIGF1dG8gd2ViVmll
dyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworCisgICAgW3dlYlZpZXcgaW5zZXJ0
T3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9y
RXhpc3RzOkAib2wiXSk7CisgICAgW3dlYlZpZXcgaW5zZXJ0T3JkZXJlZExpc3Q6bmlsXTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9sIl0pOworCisg
ICAgW3dlYlZpZXcgaW5zZXJ0VW5vcmRlcmVkTGlzdDpuaWxdOworICAgIEVYUEVDVF9UUlVFKFt3
ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJ1bCJdKTsKKyAgICBbd2ViVmlldyBpbnNlcnRV
bm9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0
b3JFeGlzdHM6QCJ1bCJdKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgQ2hhbmdl
SW5kZW50YXRpb24pCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25U
ZXN0aW5nKCk7CisKKyAgICBbd2ViVmlldyBpbmRlbnQ6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKKyAgICBbd2ViVmll
dyBpbmRlbnQ6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhp
c3RzOkAiYmxvY2txdW90ZSA+IGJsb2NrcXVvdGUiXSk7CisKKyAgICBbd2ViVmlldyBvdXRkZW50
Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImJs
b2NrcXVvdGUiXSk7CisgICAgW3dlYlZpZXcgb3V0ZGVudDpuaWxdOworICAgIEVYUEVDVF9GQUxT
RShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKK30KKworVEVT
VChXS1dlYlZpZXdFZGl0QWN0aW9ucywgU2V0QWxpZ25tZW50KQoreworICAgIGF1dG8gd2ViVmll
dyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIGF1dG8gcnVuVGVzdCA9IFt3
ZWJWaWV3XSB7CisgICAgICAgIFt3ZWJWaWV3IGFsaWduQ2VudGVyOm5pbF07CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUSgiY2VudGVyIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJ0ZXh0LWFsaWduIl0pOworICAgICAgICBbd2ViVmlldyBhbGlnbkxlZnQ6bmlsXTsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJsZWZ0IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LWFsaWduIl0pOworICAgICAgICBbd2ViVmlldyBhbGlnblJp
Z2h0Om5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgicmlnaHQiLCBbd2ViVmlldyBzdHls
ZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQtYWxpZ24iXSk7CisgICAgICAgIFt3ZWJW
aWV3IGFsaWduSnVzdGlmaWVkOm5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgianVzdGlm
eSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1hbGlnbiJd
KTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
Ym9keS5kaXIgPSAncnRsJyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBydW5UZXN0KCk7
CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmRpciA9
ICdsdHInIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIHJ1blRlc3QoKTsKK30KKworVEVT
VChXS1dlYlZpZXdFZGl0QWN0aW9ucywgVG9nZ2xlU3RyaWtlVGhyb3VnaCkKK3sKKyAgICBhdXRv
IHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKyAgICBbd2ViVmlldyBz
ZWxlY3RBbGw6bmlsXTsKKyAgICBbd2ViVmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5
QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3Bl
cnR5QXRTZWxlY3Rpb25FbmQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0p
OworCisgICAgW3dlYlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIEVYUEVDVF9X
S19TVFJFUSgibm9uZSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAi
LXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIm5vbmUiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6QCItd2Via2l0
LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOworCisgICAgW3dlYlZpZXcgY29sbGFwc2VU
b0VuZF07CisgICAgW3dlYlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIFtbd2Vi
VmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAIkhlbGxvIl07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxl
Y3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7CisKKyAg
ICBbd2ViVmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07CisgICAgW1t3ZWJWaWV3IHRleHRJ
bnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiSGVsbG8iXTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIm5vbmUiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJr
aXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRp
dEFjdGlvbnMsIENoYW5nZUZvbnRTaXplKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdG
b3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworICAg
IEVYUEVDVF9FUSgxNiwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAi
Zm9udC1zaXplIl0gZmxvYXRWYWx1ZV0pOworCisgICAgW3dlYlZpZXcgaW5jcmVhc2VTaXplOm5p
bF07CisgICAgRVhQRUNUX0VRKDE3LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisgICAgW3dlYlZpZXcgaW5jcmVhc2VT
aXplOm5pbF07CisgICAgRVhQRUNUX0VRKDE4LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisKKyAgICBbd2ViVmlldyBk
ZWNyZWFzZVNpemU6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMTcsIFtbd2ViVmlldyBzdHlsZVByb3Bl
cnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKKyAgICBbd2Vi
VmlldyBkZWNyZWFzZVNpemU6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMTYsIFtbd2ViVmlldyBzdHls
ZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKKwor
ICAgIFt3ZWJWaWV3IHNldEZvbnRTaXplOjIwIHNlbmRlcjpuaWxdOworICAgIEVYUEVDVF9FUSgy
MCwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0g
ZmxvYXRWYWx1ZV0pOworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBTZXRUZXh0Q29s
b3IpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7
CisgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07CisKKyAgICBbd2ViVmlldyBzZXRUZXh0Q29s
b3I6W1VJQ29sb3IgY29sb3JXaXRoUmVkOjEgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0gc2VuZGVy
Om5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2IoMjU1LCAwLCAwKSIsIFt3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7CisgICAgRVhQRUNUX1RSVUUo
W3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7CisKKyAgICBbd2ViVmlldyBz
ZXRUZXh0Q29sb3I6W1VJQ29sb3IgY29sb3JXaXRoUmVkOjAgZ3JlZW46MSBibHVlOjAgYWxwaGE6
MC4yXSBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYmEoMCwgMjU1LCAwLCAw
LjIpIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJjb2xvciJdKTsK
KyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7
Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIFNldEZvbnRGYW1pbHkpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisgICAgW3dlYlZp
ZXcgc2VsZWN0QWxsOm5pbF07CisKKyAgICBVSUZvbnREZXNjcmlwdG9yICpmb250RGVzY3JpcHRv
ciA9IFtVSUZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOkB7
IFVJRm9udERlc2NyaXB0b3JGYW1pbHlBdHRyaWJ1dGU6IEAiSGVsdmV0aWNhIiB9XTsKKyAgICBb
d2ViVmlldyBzZXRGb250OltVSUZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmZvbnREZXNjcmlwdG9y
IHNpemU6MjRdIHNlbmRlcjpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsdmV0aWNhIiwg
W3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIjI0cHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxl
Y3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vcm1hbCIs
IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub3JtYWwiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRT
ZWxlY3Rpb25TdGFydDpAImZvbnQtc3R5bGUiXSk7CisKKyAgICBbd2ViVmlldyBzZXRGb250OltV
SUZvbnQgZm9udFdpdGhOYW1lOkAiVGltZXNOZXdSb21hblBTLUJvbGRNVCIgc2l6ZToxMl0gc2Vu
ZGVyOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJcIlRpbWVzIE5ldyBSb21hblwiIiwgW3dl
YlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIjEycHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25TdGFydDpAImZvbnQtc2l6ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImJvbGQiLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0Il0pOworICAg
IEVYUEVDVF9XS19TVFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0
aW9uU3RhcnQ6QCJmb250LXN0eWxlIl0pOworCisgICAgZm9udERlc2NyaXB0b3IgPSBbZm9udERl
c2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoU3ltYm9saWNUcmFpdHM6VUlGb250RGVzY3JpcHRv
clRyYWl0SXRhbGljIHwgVUlGb250RGVzY3JpcHRvclRyYWl0Qm9sZF07CisgICAgW3dlYlZpZXcg
c2V0Rm9udDpbVUlGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOjIw
XSBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbHZldGljYSIsIFt3ZWJWaWV3
IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCIyMHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3Rh
cnQ6QCJmb250LXNpemUiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJib2xkIiwgW3dlYlZpZXcg
c3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXdlaWdodCJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIml0YWxpYyIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OkAiZm9udC1zdHlsZSJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQor
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KaW5kZXggNzA2MTY3
M2VjZTA2MTFmMzFhOTQ1NGNjMTJmYjA4MjJiZDVkN2ZjOS4uYjA1OWFhZWI5YmNhZTU0ODFmYmQ4
ZDJmYTM3MWQ3N2M1NGNlMGEyZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Gb250TWFuYWdlclRlc3RzLm1tCkBAIC00MywxMSArNDMsNyBAQAogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqc2VsZWN0ZWRUZXh0OwogCiAtIChOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopdHlwaW5nQXR0cmlidXRlczsKLS0gKE5TU3RyaW5nICop
c3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lOwot
LSAoTlNTdHJpbmcgKilzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6KE5TU3RyaW5nICopcHJv
cGVydHlOYW1lOwogLSAodm9pZClzZWxlY3ROZXh0V29yZDsKLS0gKHZvaWQpY29sbGFwc2VUb1N0
YXJ0OwotLSAodm9pZCljb2xsYXBzZVRvRW5kOwogCiBAZW5kCiAKQEAgLTg5LDI4ICs4NSw2IEBA
CiAgICAgW3NlbGYgc2VsZWN0V29yZDpuaWxdOwogfQogCi0tICh2b2lkKWNvbGxhcHNlVG9TdGFy
dAotewotICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLmNvbGxh
cHNlVG9TdGFydCgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwotfQotCi0tICh2b2lkKWNvbGxh
cHNlVG9FbmQKLXsKLSAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24o
KS5jb2xsYXBzZVRvRW5kKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Ci19Ci0KLS0gKE5TU3Ry
aW5nICopc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVydHlO
YW1lCi17Ci0gICAgTlNTdHJpbmcgKnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiZ2V0Q29tcHV0ZWRTdHlsZShnZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApLnN0YXJ0Q29u
dGFpbmVyLnBhcmVudEVsZW1lbnQpWyclQCddIiwgcHJvcGVydHlOYW1lXTsKLSAgICByZXR1cm4g
W3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdOwotfQotCi0tIChOU1N0
cmluZyAqKXN0eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDooTlNTdHJpbmcgKilwcm9wZXJ0eU5h
bWUKLXsKLSAgICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJnZXRDb21wdXRlZFN0eWxlKGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCkuZW5kQ29udGFp
bmVyLnBhcmVudEVsZW1lbnQpWyclQCddIiwgcHJvcGVydHlOYW1lXTsKLSAgICByZXR1cm4gW3Nl
bGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdOwotfQotCiBAZW5kCiAKIHN0
YXRpYyBSZXRhaW5QdHI8Rm9udE1hbmFnZXJUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yRm9udE1h
bmFnZXJUZXN0aW5nKE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBmZTkxYWRkZWIwMjI4YjZkMmNmYzMwNDcw
ZjlmNmNmMzUxN2U1OGU2Li4xMzI2OWNmNmY0NTI4MzkxYTNiNmRjYjQzMWUyZmFjNDk4Yzk3OWI5
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNjQsNiAr
NjQsMTAgQEAKIC0gKHZvaWQpd2FpdEZvck1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZTsKIC0g
KHZvaWQpcGVyZm9ybUFmdGVyTG9hZGluZzooZGlzcGF0Y2hfYmxvY2tfdClhY3Rpb25zOwogLSAo
dm9pZCl3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZTsKKy0gKE5TU3RyaW5nICopc3R5bGVQ
cm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lOworLSAoTlNT
dHJpbmcgKilzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6KE5TU3RyaW5nICopcHJvcGVydHlO
YW1lOworLSAodm9pZCljb2xsYXBzZVRvU3RhcnQ7CistICh2b2lkKWNvbGxhcHNlVG9FbmQ7CiBA
ZW5kCiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW0KaW5kZXggYWRkMDEzZjMyODY4NTA2OTI5MjE2ZmVhNDg1ZDg0ZmM1ZWVkODEz
OC4uOThmNGYwOWI3NWY0OTNiZTNlMDQzNzMwMjMxNmU0NGUxZjcwYjM1OSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtMzE1LDYgKzMxNSwyOCBAQCBO
U0V2ZW50TWFzayBfX3NpbXVsYXRlZF9mb3JjZUNsaWNrQXNzb2NpYXRlZEV2ZW50c01hc2soaWQg
c2VsZiwgU0VMIF9jbWQpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0K
IAorLSAoTlNTdHJpbmcgKilzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDooTlNTdHJpbmcg
Kilwcm9wZXJ0eU5hbWUKK3sKKyAgICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJnZXRDb21wdXRlZFN0eWxlKGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQo
MCkuc3RhcnRDb250YWluZXIucGFyZW50RWxlbWVudClbJyVAJ10iLCBwcm9wZXJ0eU5hbWVdOwor
ICAgIHJldHVybiBbc2VsZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF07Cit9
CisKKy0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5kOihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZQoreworICAgIE5TU3RyaW5nICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImdldENvbXB1dGVkU3R5bGUoZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgw
KS5lbmRDb250YWluZXIucGFyZW50RWxlbWVudClbJyVAJ10iLCBwcm9wZXJ0eU5hbWVdOworICAg
IHJldHVybiBbc2VsZiBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF07Cit9CisK
Ky0gKHZvaWQpY29sbGFwc2VUb1N0YXJ0Cit7CisgICAgW3NlbGYgZXZhbHVhdGVKYXZhU2NyaXB0
OkAiZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2VUb1N0YXJ0KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5p
bF07Cit9CisKKy0gKHZvaWQpY29sbGFwc2VUb0VuZAoreworICAgIFtzZWxmIGV2YWx1YXRlSmF2
YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9FbmQoKSIgY29tcGxldGlvbkhhbmRs
ZXI6bmlsXTsKK30KKwogQGVuZAogCiAjaWYgUExBVEZPUk0oSU9TKQo=
</data>
<flag name="review"
          id="368881"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351649</attachid>
            <date>2018-10-04 19:24:13 -0700</date>
            <delta_ts>2018-10-04 20:03:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-190232-20181004192413.patch</filename>
            <type>text/plain</type>
            <size>41792</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNkMGQxOGYzODU5ZjQzYjQz
MzQ4OGIyNGUyZTk2YTM3NTBjYmYzNDkuLjcyZGRmMjViYzRkM2E5ZTIwZDI1NzkwN2JkNDE5OGI1
MDgwYzUxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA5IEBACisyMDE4LTEwLTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXSzJdIEV4
cG9zZSBzb21lIG1vcmUgZWRpdGluZyBTUEkgb24gV0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyMzIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ0OTYzMzY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgRXhwb3NlcyBhIGZldyBhZGRpdGlvbmFsIGVkaXRpbmcgY29tbWFuZHMgYXMgU1BJIG9u
IFdLV2ViVmlldywgYnkgZGVmaW5pbmcgYSBuZXcgZXh0ZW5zaW9uIG9uIFdLV2ViVmlldyB0aGF0
CisgICAgICAgIGFsc28gY29uZm9ybXMgdG8gPFVJUmVzcG9uZGVyU3RhbmRhcmRFZGl0QWN0aW9u
cz4uIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBuZWFybHkgYWxsIG9mIHRoZSByZW1haW5pbmcKKyAg
ICAgICAgdW5pbXBsZW1lbnRlZCBtZXRob2RzIG9uIFVJUmVzcG9uZGVyU3RhbmRhcmRFZGl0QWN0
aW9ucywgYW5kIHRoZSBuZXcgZXh0ZW5zaW9uIGF1Z21lbnRzIHRoaXMgc2V0IG9mIGVkaXRpbmcK
KyAgICAgICAgbWV0aG9kcyBieSBhZGRpbmcgYWRkaXRpb25hbCBlZGl0aW5nIGhlbHBlcnMgdGhh
dCBkb24ndCBjdXJyZW50bHkgZXhpc3Qgb24gaU9TIChlLmcuIHRvZ2dsZVN0cmlrZVRocm91Z2gg
YW5kCisgICAgICAgIGluc2VydFVub3JkZXJlZExpc3QpLiBUaGUgbmFtZXMgb2YgdGhlc2UgbmV3
IG1ldGhvZHMgaGF2ZSBiZWVuIGxhcmdlbHkgYmVlbiBib3Jyb3dlZCBmcm9tIHRoZWlyIGNvdW50
ZXJwYXJ0cyBvbgorICAgICAgICBtYWNPUyAoc2VlOiBgTlNSZXNwb25kZXIuaGApLgorCisgICAg
ICAgIFRoZSBuZXcgZWRpdCBhY3Rpb25zIGFyZSBhZGRlZCBpbiB0aGlzIHBhdGNoIG9uIGlPUyBh
cmU6CisKKyAgICAgICAgYGBgCisgICAgICAgIC0gKHZvaWQpYWxpZ25DZW50ZXI6KGlkKXNlbmRl
cjsKKyAgICAgICAgLSAodm9pZClhbGlnbkp1c3RpZmllZDooaWQpc2VuZGVyOworICAgICAgICAt
ICh2b2lkKWFsaWduTGVmdDooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lkKWFsaWduUmlnaHQ6
KGlkKXNlbmRlcjsKKyAgICAgICAgLSAodm9pZClpbmRlbnQ6KGlkKXNlbmRlcjsKKyAgICAgICAg
LSAodm9pZClpbnNlcnRPcmRlcmVkTGlzdDooaWQpc2VuZGVyOworICAgICAgICAtICh2b2lkKWlu
c2VydFVub3JkZXJlZExpc3Q6KGlkKXNlbmRlcjsKKyAgICAgICAgLSAodm9pZClvdXRkZW50Oihp
ZClzZW5kZXI7CisgICAgICAgIC0gKHZvaWQpdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQpc2VuZGVy
OworICAgICAgICAtICh2b2lkKXNldEZvbnQ6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClzZW5k
ZXI7CisgICAgICAgIC0gKHZvaWQpc2V0Rm9udFNpemU6KENHRmxvYXQpZm9udFNpemUgc2VuZGVy
OihpZClzZW5kZXI7CisgICAgICAgIC0gKHZvaWQpc2V0VGV4dENvbG9yOihVSUNvbG9yICopY29s
b3Igc2VuZGVyOihpZClzZW5kZXI7CisgICAgICAgIGBgYAorCisgICAgICAgIFRlc3RzOiAgV0tX
ZWJWaWV3RWRpdEFjdGlvbnMuTGlzdEluc2VydGlvbgorICAgICAgICAgICAgICAgIFdLV2ViVmll
d0VkaXRBY3Rpb25zLkNoYW5nZUluZGVudGF0aW9uCisgICAgICAgICAgICAgICAgV0tXZWJWaWV3
RWRpdEFjdGlvbnMuU2V0QWxpZ25tZW50CisgICAgICAgICAgICAgICAgV0tXZWJWaWV3RWRpdEFj
dGlvbnMuVG9nZ2xlU3RyaWtlVGhyb3VnaAorICAgICAgICAgICAgICAgIFdLV2ViVmlld0VkaXRB
Y3Rpb25zLkNoYW5nZUZvbnRTaXplCisgICAgICAgICAgICAgICAgV0tXZWJWaWV3RWRpdEFjdGlv
bnMuU2V0VGV4dENvbG9yCisgICAgICAgICAgICAgICAgV0tXZWJWaWV3RWRpdEFjdGlvbnMuU2V0
Rm9udEZhbWlseQorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgY2FuUGVyZm9ybUFjdGlvbjp3aXRoU2VuZGVyOl0pOgorCisgICAgICAgIFVwZGF0ZSB0
aGlzIHRvIGhhbmRsZSB0aGUgbmV3IGVkaXRpbmcgYWN0aW9ucy4gRm9yIG5vdywgd2Ugc2ltcGx5
IHRyZWF0IGFsbCBvZiB0aGUgbmV3IGVkaXQgYWN0aW9ucyBpbiB0aGUgc2FtZQorICAgICAgICB3
YXkgYXMgd2UgY3VycmVudGx5IHRyZWF0IGJvbGQsIGl0YWxpYyBhbmQgdW5kZXJsaW5lOiB0aGF0
IGlzLCB0aGV5IGFyZSBlbmFibGVkIG9ubHkgd2hlbiB0aGUgdXNlciBpcyBpbiBhCisgICAgICAg
IHJpY2hseSBjb250ZW50ZWRpdGFibGUgZWxlbWVudC4KKworICAgICAgICAoLVtXS1dlYlZpZXcg
c2V0Rm9udDpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRGb250U2l6ZTpzZW5k
ZXI6XSk6CisKKyAgICAgICAgQ29uc3RydWN0IGFuZCBzZW5kIGEgc2V0IG9mIEZvbnRDaGFuZ2Vz
LgorCisgICAgICAgICgtW1dLV2ViVmlldyBzZXRUZXh0Q29sb3I6c2VuZGVyOl0pOgorCisgICAg
ICAgIEludm9rZSAiRm9yZUNvbG9yIiB3aXRoIHRoZSBzZXJpYWxpemVkIGNvbG9yIHJlcHJlc2Vu
dGF0aW9uLiBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgYHJnYmEoKWAgY29sb3IgdmFsdWVzLAor
ICAgICAgICB3aGljaCBoZXggZm9ybWF0IHdvdWxkIG5vdCBwZXJtaXQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICBBZGQgdGhl
IG5ldyBTUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udCk6CisKKyAgICAgICAgUHVsbCBsb2dp
YyBmb3IgYXBwbHlpbmcgZm9udCBhbmQgZm9udCBhdHRyaWJ1dGUgc3R5bGUgY2hhbmdlcyBvdXQg
b2YgbWFjT1Mtc3BlY2lmaWMgY29kZSwgYW5kIGludG8KKyAgICAgICAgcGxhdGZvcm0tYWdub3N0
aWMgY29kZSBpbiBXZWJQYWdlIGFuZCBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaDoKKworICAgICAgICBBZGQgdGhlIG5ldyBzdXBwb3J0ZWQgZWRpdGluZyBj
b21tYW5kcyBhcyBzdXBwb3J0ZWQgYWN0aW9ucyBpbiBXS1dlYlZpZXcuIFRoZSBvbmx5IG5ldyBl
ZGl0aW5nIGNvbW1hbmRzIHRoYXQKKyAgICAgICAgYXJlbid0IHByZXNlbnQgaW4gdGhpcyBsaXN0
IGFyZSAtc2V0Rm9udDpzZW5kZXI6LCAtc2V0Q29sb3I6c2VuZGVyOiwgYW5kIC1zZXRGb250U2l6
ZTpzZW5kZXI6IHdoaWNoIGFyZSBtYW51YWxseQorICAgICAgICBoYW5kbGVkIGluIHBsYWNlcyB3
aGVyZSB0aGUgYEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9OYCBtYWNybyBpcyBvdGhlcndp
c2UgdXNlZC4gSW4gYSBmb2xsb3d1cCwgd2UgY291bGQKKyAgICAgICAgY29uc2lkZXIgYXVnbWVu
dGluZyBgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT05gIHRvIGhhbmRsZSBhY3Rpb25zIHdp
dGggbXVsdGlwbGUgYXJndW1lbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW06CisKKyAgICAgICAgRGVmaW5lIGEgbmV3IGhlbHBlciBtYWNy
byBoZXJlIHRvIGRlZmluZSBib2lsZXJwbGF0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC3igKZG
b3JXZWJWaWV3IGVkaXQgY29tbWFuZAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgdGhhdCB0dXJu
IGFyb3VuZCBhbmQgaW52b2tlIGBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kYCB3aXRoIG5vIGFk
ZGl0aW9uYWwgYXJndW1lbnRzLCBhbmQgYW4KKyAgICAgICAgZWRpdCBjb21tYW5kIG5hbWUgbWF0
Y2hpbmcgdGhhdCBvZiB0aGUgV2ViQ29yZSBlZGl0IGNvbW1hbmQuCisKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBpbmNyZWFzZVNpemVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGRlY3JlYXNlU2l6ZUZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0Rm9udEZvcldlYlZpZXc6c2VuZGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHNldEZvbnRTaXplRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0VGV4dENvbG9yRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6c2VuZGVyOl0pOgorCisgICAgICAg
IEFkZCDigKZGb3JXZWJWaWV3IHBsdW1iaW5nIGZvciB0aGUgbmV3IGVkaXRpbmcgYWN0aW9ucywg
c28gdGhleSB0dXJuIGFyb3VuZCBhbmQgY2FsbCBpbnRvIFdLQ29udGVudFZpZXcgYnkKKyAgICAg
ICAgZGVmYXVsdCwgYnV0IGJlaGF2aW9yIG1heSBiZSBvdmVycmlkZGVuIGluIFdLV2ViVmlldy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Y2hhbmdlRm9udCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Y2hhbmdlRm9udCk6IERlbGV0ZWQuCisKIDIwMTgtMTAtMDQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBZGQgU1BJ
IHRvIGV4cG9zZSB0eXBpbmcgYXR0cmlidXRlcyBhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24gb24g
V0tXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlL
aXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4
IDAwY2FhMThiY2E4Y2RiMTE1ZTFjMjA4ZGNkNTQ0NzEyNThjYTcwY2QuLjE4OTM1NzUyMTliNmQx
Mzk5NzA2M2MyNjVjZDNmZjA2ZDAxNGVkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3Bp
L2lvcy9VSUtpdFNQSS5oCkBAIC0xOTUsMTEgKzE5NSwxNCBAQCB0eXBlZGVmIGVudW0gewogQGVu
ZAogCiB0eXBlZGVmIGVudW0gewotICAgIFVJRm9udFRyYWl0UGxhaW4gPSAweDAwMDAwMDAwLAor
ICAgIFVJRm9udFRyYWl0UGxhaW4gPSAwLAorICAgIFVJRm9udFRyYWl0SXRhbGljID0gMSA8PCAw
LAorICAgIFVJRm9udFRyYWl0Qm9sZCA9IDEgPDwgMSwKIH0gVUlGb250VHJhaXQ7CiAKIEBpbnRl
cmZhY2UgVUlGb250ICgpCiArIChVSUZvbnQgKilmb250V2l0aEZhbWlseU5hbWU6KE5TU3RyaW5n
ICopZmFtaWx5TmFtZSB0cmFpdHM6KFVJRm9udFRyYWl0KXRyYWl0cyBzaXplOihDR0Zsb2F0KWZv
bnRTaXplOworLSAoVUlGb250VHJhaXQpdHJhaXRzOwogQGVuZAogCiB0eXBlZGVmIGVudW0gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXgg
MGU3ZGNjYjE0MWMxMjYyNjE3Nzg1ZmZhMTVkNmI5NTk4MzgyMWUyMi4uZGQ1NGRiYjA0NjBiY2Mw
ZTkyY2ZjMjlhNjQ2ZDZlM2IwNTgxMTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xMzk4LDYgKzEzOTgsOSBAQCBGT1JfRUFDSF9X
S0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVXKQogCiAg
ICAgI3VuZGVmIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXCiAKKyAg
ICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihzZXRUZXh0Q29sb3I6c2VuZGVyOikgfHwgYWN0aW9u
ID09IEBzZWxlY3RvcihzZXRGb250U2l6ZTpzZW5kZXI6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KHNldEZvbnQ6c2VuZGVyOikpCisgICAgICAgIHJldHVybiBzZWxmLnVzZXNTdGFuZGFyZENvbnRl
bnRWaWV3ICYmIFtfY29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6YWN0aW9u
IHdpdGhTZW5kZXI6c2VuZGVyXTsKKwogICAgIHJldHVybiBbc3VwZXIgY2FuUGVyZm9ybUFjdGlv
bjphY3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJdOwogfQogCkBAIC0xNDE2LDYgKzE0MTksMjEgQEAg
Rk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5U
VklFVykKICAgICByZXR1cm4gW3N1cGVyIHRhcmdldEZvckFjdGlvbjphY3Rpb24gd2l0aFNlbmRl
cjpzZW5kZXJdOwogfQogCistICh2b2lkKXNldEZvbnQ6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihp
ZClzZW5kZXIKK3sKKyAgICBbX2NvbnRlbnRWaWV3IHNldEZvbnRGb3JXZWJWaWV3OmZvbnQgc2Vu
ZGVyOnNlbmRlcl07Cit9CisKKy0gKHZvaWQpc2V0VGV4dENvbG9yOihVSUNvbG9yICopY29sb3Ig
c2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBbX2NvbnRlbnRWaWV3IHNldFRleHRDb2xvckZvcldl
YlZpZXc6Y29sb3Igc2VuZGVyOnNlbmRlcl07Cit9CisKKy0gKHZvaWQpc2V0Rm9udFNpemU6KENH
RmxvYXQpZm9udFNpemUgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBbX2NvbnRlbnRWaWV3IHNl
dEZvbnRTaXplRm9yV2ViVmlldzpmb250U2l6ZSBzZW5kZXI6c2VuZGVyXTsKK30KKwogc3RhdGlj
IGlubGluZSBDR0Zsb2F0IGZsb29yVG9EZXZpY2VQaXhlbChDR0Zsb2F0IGlucHV0LCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICByZXR1cm4gQ0dGbG9vcihpbnB1dCAqIGRldmljZVNj
YWxlRmFjdG9yKSAvIGRldmljZVNjYWxlRmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMDYyZjE1ZTViNzk5
NmRhMGY0MzVkMjYzZTZmOGFhZTkzNzE2OWUzNi4uMDgzN2E2MWIxNTNlNWI2YmYyNjE1Yzg3ZjVh
NWZjM2I4MDEwOTUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNjYsOSArMzY2LDI4IEBAIHR5cGVkZWYgTlNf
T1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiBAZW5kCiAKLSNpZiAhVEFSR0VU
X09TX0lQSE9ORQorI2lmIFRBUkdFVF9PU19JUEhPTkUKKworQGludGVyZmFjZSBXS1dlYlZpZXcg
KCkgPFVJUmVzcG9uZGVyU3RhbmRhcmRFZGl0QWN0aW9ucz4KKy0gKHZvaWQpYWxpZ25DZW50ZXI6
KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKWFs
aWduSnVzdGlmaWVkOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkp
OworLSAodm9pZClhbGlnbkxlZnQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19J
T1NfVEJBKSk7CistICh2b2lkKWFsaWduUmlnaHQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxF
KGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKWluZGVudDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJ
TEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpaW5zZXJ0T3JkZXJlZExpc3Q6KGlkKXNl
bmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKWluc2VydFVu
b3JkZXJlZExpc3Q6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7
CistICh2b2lkKW91dGRlbnQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKXRvZ2dsZVN0cmlrZVRocm91Z2g6KGlkKXNlbmRlciBXS19BUElfQVZB
SUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKXNldEZvbnQ6KFVJRm9udCAqKWZvbnQg
c2VuZGVyOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOworLSAo
dm9pZClzZXRGb250U2l6ZTooQ0dGbG9hdClmb250U2l6ZSBzZW5kZXI6KGlkKXNlbmRlciBXS19B
UElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKXNldFRleHRDb2xvcjooVUlD
b2xvciAqKWNvbG9yIHNlbmRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lP
U19UQkEpKTsKK0BlbmQKKworI2Vsc2UKKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLTlNUZXh0
RmluZGVyQ2xpZW50KSA8TlNUZXh0RmluZGVyQ2xpZW50PgogQGVuZAorCiAjZW5kaWYKIAogQGlu
dGVyZmFjZSBXS1dlYlZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGVhMGYwNjdjNDhkMzlmN2M3NzZjYzE1M2E2ZWYzZGIwMTQ3NGMy
OGMuLmY0NjdjMTcwYmMyMjBlOTE1YjM4YzE2ZGJjM2I3OTJjNThiNGYyNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTMzLDYgKzEzMyw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzRGlyZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Gb250QXR0cmlidXRlQ2hhbmdlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvR2xvYmFsV2luZG93SWRlbnRpZmllci5oPgpAQCAtNzA3MSw2ICs3MDcyLDIyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjphZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihtaW1lVHlwZSksIG1f
cGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdl
YkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKK3sKKyAgICBpZiAoIWlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2Vz
JiYgY2hhbmdlcykKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShj
aGFuZ2VzKSksIG1fcGFnZUlEKTsKK30KKwogI2lmIFBMQVRGT1JNKENPQ09BKQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWIxMmM1ODkwZDY0MDYzMmE4N2IxZDNiMzY1
YTlkOWVkZGZmZGZhYy4uNDgwZDBlYTcxZWI4MDNlYTNlY2FkODExMmNkMTQ1NjZmY2I2YzU1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY5OCwxMSArNjk4LDEy
IEBAIHB1YmxpYzoKICAgICBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEq
IHNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nUGVyZm9ybWFu
Y2VEYXRhLmdldCgpOyB9CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKKyAgICB2b2lkIGNo
YW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYpOworICAg
IHZvaWQgY2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmKTsKKwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICB2b2lkIGluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCBi
b29sIHJlZ2lzdGVyVW5kb0dyb3VwKTsKICAgICB2b2lkIGF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JD
aGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIGNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6
OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYpOwotICAgIHZvaWQgY2hhbmdlRm9udChXZWJDb3JlOjpG
b250Q2hhbmdlcyYmKTsKICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYp
OwogCiAgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBhMjM5ZGU5
ZGM1ZTFlYzA4NTQ2ZWQzMWVhMzcyZDBkYzUxNDQ3YzUwLi45ZGVjNGQ4YmRhNzU3ZmVkMDQyYzQ4
ZDhhZTQ0M2U5Y2FlMjNjOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xMjEsNyArMTIxLDE4IEBAIHR5
cGVkZWYgc3RkOjpwYWlyPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QsIElu
dGVyYWN0aW9uSW5mb3JtYXRpb25DCiAgICAgTShzZWxlY3RBbGwpIFwKICAgICBNKHRvZ2dsZUJv
bGRmYWNlKSBcCiAgICAgTSh0b2dnbGVJdGFsaWNzKSBcCi0gICAgTSh0b2dnbGVVbmRlcmxpbmUp
CisgICAgTSh0b2dnbGVVbmRlcmxpbmUpIFwKKyAgICBNKGluY3JlYXNlU2l6ZSkgXAorICAgIE0o
ZGVjcmVhc2VTaXplKSBcCisgICAgTSh0b2dnbGVTdHJpa2VUaHJvdWdoKSBcCisgICAgTShpbnNl
cnRVbm9yZGVyZWRMaXN0KSBcCisgICAgTShpbnNlcnRPcmRlcmVkTGlzdCkgXAorICAgIE0oaW5k
ZW50KSBcCisgICAgTShvdXRkZW50KSBcCisgICAgTShhbGlnbkxlZnQpIFwKKyAgICBNKGFsaWdu
UmlnaHQpIFwKKyAgICBNKGFsaWduQ2VudGVyKSBcCisgICAgTShhbGlnbkp1c3RpZmllZCkKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTMxOSw2ICszMzAsMTAgQEAgRk9SX0VBQ0hfV0tDT05U
RU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcp
CiBERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVyhfcGFzdGVBc1F1b3Rh
dGlvbikKICN1bmRlZiBERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVwog
CistICh2b2lkKXNldEZvbnRGb3JXZWJWaWV3OihVSUZvbnQgKilmb250RmFtaWx5IHNlbmRlcjoo
aWQpc2VuZGVyOworLSAodm9pZClzZXRGb250U2l6ZUZvcldlYlZpZXc6KENHRmxvYXQpZm9udFNp
emUgc2VuZGVyOihpZClzZW5kZXI7CistICh2b2lkKXNldFRleHRDb2xvckZvcldlYlZpZXc6KFVJ
Q29sb3IgKiljb2xvciBzZW5kZXI6KGlkKXNlbmRlcjsKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAtICh2b2lkKV93ZWJUb3VjaEV2ZW50Oihjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNo
RXZlbnQmKXRvdWNoRXZlbnQgcHJldmVudHNOYXRpdmVHZXN0dXJlczooQk9PTClwcmV2ZW50c0Rl
ZmF1bHQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGIwMWM0ZjZhM2M1NGU5OWM3MTY1NTc4
YmFlNzIyZjM4ZWNiOGU1OGMuLjdmMmYwNzI4NDlmZGI2YWZkNGU3MzdjY2ZjYjg4YWE4ZTczMDQ0
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzUsNiArNzUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9D
b2xvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Zsb2F0UXVhZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hhbmdlcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9JbnB1dE1vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxp
emVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtMjI3
OSw2ICsyMjgwLDU3IEBAIEZPUldBUkRfQUNUSU9OX1RPX1dLV0VCVklFVyhfcGFzdGVBc1F1b3Rh
dGlvbikKICAgICBbW1VJS2V5Ym9hcmRJbXBsIHNoYXJlZEluc3RhbmNlXSByZXBsYWNlVGV4dDpz
ZW5kZXJdOwogfQogCisjZGVmaW5lIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhjb21tYW5k
KSAtICh2b2lkKWNvbW1hbmQgIyMgRm9yV2ViVmlldzooaWQpc2VuZGVyIHsgX3BhZ2UtPmV4ZWN1
dGVFZGl0Q29tbWFuZCgjY29tbWFuZCAjIyBfcyk7IH0KKworV0VCQ09SRV9DT01NQU5EX0ZPUl9X
RUJWSUVXKGluc2VydE9yZGVyZWRMaXN0KTsKK1dFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhp
bnNlcnRVbm9yZGVyZWRMaXN0KTsKK1dFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhpbmRlbnQp
OworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKG91dGRlbnQpOworV0VCQ09SRV9DT01NQU5E
X0ZPUl9XRUJWSUVXKGFsaWduTGVmdCk7CitXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoYWxp
Z25SaWdodCk7CitXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoYWxpZ25DZW50ZXIpOworV0VC
Q09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGFsaWduSnVzdGlmaWVkKTsKKworLSAodm9pZCl0b2dn
bGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzooaWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmV4ZWN1
dGVFZGl0Q29tbWFuZCgiU3RyaWtlVGhyb3VnaCJfcyk7Cit9CisKKy0gKHZvaWQpaW5jcmVhc2VT
aXplRm9yV2ViVmlldzooaWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFu
ZCgiRm9udFNpemVEZWx0YSJfcywgIjEiX3MpOworfQorCistICh2b2lkKWRlY3JlYXNlU2l6ZUZv
cldlYlZpZXc6KGlkKXNlbmRlcgoreworICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoIkZv
bnRTaXplRGVsdGEiX3MsICItMSJfcyk7Cit9CisKKy0gKHZvaWQpc2V0Rm9udEZvcldlYlZpZXc6
KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBXZWJDb3JlOjpGb250Q2hh
bmdlcyBjaGFuZ2VzOworICAgIGNoYW5nZXMuc2V0Rm9udEZhbWlseShmb250LmZhbWlseU5hbWUp
OworICAgIGNoYW5nZXMuc2V0Rm9udE5hbWUoZm9udC5mb250TmFtZSk7CisgICAgY2hhbmdlcy5z
ZXRGb250U2l6ZShmb250LnBvaW50U2l6ZSk7CisgICAgY2hhbmdlcy5zZXRCb2xkKGZvbnQudHJh
aXRzICYgVUlGb250VHJhaXRCb2xkKTsKKyAgICBjaGFuZ2VzLnNldEl0YWxpYyhmb250LnRyYWl0
cyAmIFVJRm9udFRyYWl0SXRhbGljKTsKKyAgICBfcGFnZS0+Y2hhbmdlRm9udChXVEZNb3ZlKGNo
YW5nZXMpKTsKK30KKworLSAodm9pZClzZXRGb250U2l6ZUZvcldlYlZpZXc6KENHRmxvYXQpZm9u
dFNpemUgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBXZWJDb3JlOjpGb250Q2hhbmdlcyBjaGFu
Z2VzOworICAgIGNoYW5nZXMuc2V0Rm9udFNpemUoZm9udFNpemUpOworICAgIF9wYWdlLT5jaGFu
Z2VGb250KFdURk1vdmUoY2hhbmdlcykpOworfQorCistICh2b2lkKXNldFRleHRDb2xvckZvcldl
YlZpZXc6KFVJQ29sb3IgKiljb2xvciBzZW5kZXI6KGlkKXNlbmRlcgoreworICAgIF9wYWdlLT5l
eGVjdXRlRWRpdENvbW1hbmQoIkZvcmVDb2xvciJfcywgV2ViQ29yZTo6Q29sb3IoY29sb3IuQ0dD
b2xvcikuc2VyaWFsaXplZCgpKTsKK30KKworI3VuZGVmIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VC
VklFVworCiAtIChOU0RpY3Rpb25hcnkgKil0ZXh0U3R5bGluZ0F0UG9zaXRpb246KFVJVGV4dFBv
c2l0aW9uICopcG9zaXRpb24gaW5EaXJlY3Rpb246KFVJVGV4dFN0b3JhZ2VEaXJlY3Rpb24pZGly
ZWN0aW9uCiB7CiAgICAgaWYgKCFwb3NpdGlvbiB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXND
b250ZW50UmljaGx5RWRpdGFibGUpCkBAIC0yMzM4LDggKzIzOTAsMTUgQEAgRk9SV0FSRF9BQ1RJ
T05fVE9fV0tXRUJWSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQogICAgICAgICByZXR1cm4gZWRpdG9y
U3RhdGUuaXNDb250ZW50UmljaGx5RWRpdGFibGUgJiYgZWRpdG9yU3RhdGUuc2VsZWN0aW9uSXNS
YW5nZSAmJiAhX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zOwogICAgIGlmIChfc2hvd2luZ1RleHRT
dHlsZU9wdGlvbnMpCiAgICAgICAgIHJldHVybiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVC
b2xkZmFjZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlSXRhbGljczopIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3IodG9nZ2xlVW5kZXJsaW5lOikpOwotICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKHRvZ2dsZUJvbGRmYWNlOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVJdGFs
aWNzOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVVbmRlcmxpbmU6KSkKKyAgICBpZiAo
YWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVCb2xkZmFjZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IodG9nZ2xlSXRhbGljczopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlVW5kZXJsaW5l
OikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVTdHJpa2VUaHJvdWdoOikKKyAgICAgICAg
fHwgYWN0aW9uID09IEBzZWxlY3RvcihpbnNlcnRPcmRlcmVkTGlzdDopIHx8IGFjdGlvbiA9PSBA
c2VsZWN0b3IoaW5zZXJ0VW5vcmRlcmVkTGlzdDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5k
ZW50OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihvdXRkZW50OikKKyAgICAgICAgfHwgYWN0aW9u
ID09IEBzZWxlY3RvcihhbGlnbkxlZnQ6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGFsaWduUmln
aHQ6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGFsaWduQ2VudGVyOikgfHwgYWN0aW9uID09IEBz
ZWxlY3RvcihhbGlnbkp1c3RpZmllZDopCisgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Io
aW5jcmVhc2VTaXplOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihkZWNyZWFzZVNpemU6KSB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKHNldFRleHRDb2xvcjpzZW5kZXI6KQorICAgICAgICB8fCBhY3Rp
b24gPT0gQHNlbGVjdG9yKHNldEZvbnQ6c2VuZGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihz
ZXRGb250U2l6ZTpzZW5kZXI6KSkgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
bW9yZSBudWFuY2VkIGluIHRoZSBmdXR1cmUsIHJhdGhlciB0aGFuIHJldHVybmluZyBZRVMgZm9y
IGFsbCByaWNobHkgZWRpdGFibGUgYXJlYXMuIEZvciBpbnN0YW5jZSwgb3V0ZGVudDogc2hvdWxk
IGJlIGRpc2FibGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBhbHJlYWR5CisgICAgICAgIC8vIGF0
IHRoZSBvdXRlcm1vc3QgaW5kZW50YXRpb24gbGV2ZWwuCiAgICAgICAgIHJldHVybiBlZGl0b3JT
dGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKKyAgICB9CiAgICAgaWYgKGFjdGlvbiA9PSBA
c2VsZWN0b3IoY3V0OikpCiAgICAgICAgIHJldHVybiAhZWRpdG9yU3RhdGUuaXNJblBhc3N3b3Jk
RmllbGQgJiYgZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGUgJiYgZWRpdG9yU3RhdGUuc2Vs
ZWN0aW9uSXNSYW5nZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCmluZGV4IGYzMTIzNDg5MDY5MThkMDMzMzJlNDMzM2ZhMjZkNWJiZjY3
ODY2OTMuLmI1NWNlOWU4ZjM5Y2Y1NmM5MTI1NDBjMzBiOGNjY2Y1NjYyNzBkMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNTEsNyAr
NTEsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVt
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5TlNQYXN0ZWJv
YXJkVHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+
CkBAIC02MjksMjIgKzYyOCw2IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphcHBsZU1haWxMaW5lc0Ns
YW1wRW5hYmxlZCgpCiAgICAgcmV0dXJuIE1hY0FwcGxpY2F0aW9uOjppc0FwcGxlTWFpbCgpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQotewotICAgIGlmICghaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hh
bmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsKLX0KLSAgICAK
LXZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hh
bmdlcykKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2Vz
KSksIG1fcGFnZUlEKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdl
ZChjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUpCiB7CiAgICAgYm9vbCBjb3VsZENoYW5n
ZVNlY3VyZUlucHV0U3RhdGUgPSBtX2VkaXRvclN0YXRlLmlzSW5QYXNzd29yZEZpZWxkICE9IGVk
aXRvclN0YXRlLmlzSW5QYXNzd29yZEZpZWxkIHx8IG1fZWRpdG9yU3RhdGUuc2VsZWN0aW9uSXNO
b25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCA0MzJkYzg5NWEzMmQzNzBhMjcwOGM1MzExOTllNTQwNDQ0ZGU4YmYyLi5jOWQxNzI0OTZiYjJi
MTQ1MTY4ZTUzZjA3NTViYmEzYzc2YjJiOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTU1LDYgKzE1NSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9FdmVudE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRBdHRyaWJ1
dGVDaGFuZ2VzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRm9ybVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpAQCAt
MTAwMyw2ICsxMDA0LDIwIEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKEluY2x1
ZGVQb3N0TGF5b3V0RGF0YUhpbnQgc2hvdWxkSW5jbHVkZVBvc3RMYXlvCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAordm9pZCBXZWJQYWdlOjpjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpG
b250QXR0cmlidXRlQ2hhbmdlcyYmIGNoYW5nZXMpCit7CisgICAgYXV0byYgZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmIChmcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICBm
cmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oY2hhbmdlcy5jcmVhdGVFZGl0aW5n
U3R5bGUoKSwgY2hhbmdlcy5lZGl0QWN0aW9uKCksIEVkaXRvcjo6Q29sb3JGaWx0ZXJNb2RlOjpJ
bnZlcnRDb2xvcik7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250
Q2hhbmdlcyYmIGNoYW5nZXMpCit7CisgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmIChmcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgICAgICBmcmFtZS5lZGl0b3Io
KS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oY2hhbmdlcy5jcmVhdGVFZGl0aW5nU3R5bGUoKSwgRWRp
dEFjdGlvbjo6U2V0Rm9udCwgRWRpdG9yOjpDb2xvckZpbHRlck1vZGU6OkludmVydENvbG9yKTsK
K30KKwogdm9pZCBXZWJQYWdlOjpleGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29uc3Qg
U3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIGV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgYXJndW1l
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGIx
MmIwNjM4ODkzNzZmMmNlNjUwMGNjNTYyNTQ5ODhlNGE1ODEyNzkuLmQwMWM5YWU5ODFlZTU1NGI3
YmI2MGQ4MzFhZWVjYjA5ODA5N2VmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTEzNjIsMTQgKzEzNjIsMTUgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgdXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CiAKKyAgICB2
b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJik7CisgICAgdm9pZCBjaGFuZ2VG
b250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmKTsKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIHBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2Nh
dGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KTsKICAgICBzdGQ6OnR1cGxlPFJlZlB0cjxXZWJDb3Jl
OjpSYW5nZT4sIE5TRGljdGlvbmFyeSAqPiBsb29rdXBUZXh0QXRMb2NhdGlvbihXZWJDb3JlOjpG
bG9hdFBvaW50KTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpOwogICAgIHZv
aWQgaW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCk7CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25E
aWRDb21wbGV0ZSgpOwotICAgIHZvaWQgY2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYm
KTsKLSAgICB2b2lkIGNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVD
aGFuZ2VzJiYpOwogCiAgICAgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkUHJlc2VudFVJKFdlYkNvcmU6
OlBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEKTsKICAgICB2b2lkIGRhdGFEZXRlY3RvcnNEaWRD
aGFuZ2VVSShXZWJDb3JlOjpQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXlJRCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRl
eCA5NGNhZmU2YzUxOTFkNTkwNWM5NGQ2MGNiZTA0YmIwNDBjOTNiMzkxLi5hMGExNGVmMmRiZTBj
ZWQ2ZWUzMDg5ZWEzMzZjMjZkZjA4ODZjMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE5MCw5ICsxOTAsMTAg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgUGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKQorI2Vu
ZGlmCisKICAgICBDaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzIGNoYW5nZXMpCiAgICAg
Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMgY2hhbmdl
cykKLSNlbmRpZgogCiAgICAgUHJlZmVyZW5jZXNEaWRDaGFuZ2Uoc3RydWN0IFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBiNzgxNzk2MDUxOTlkNjNjNWQ5ODRm
ZGQ1ZWRiYjllMjMyNzFiMGFlLi42MjMzYmY5NmExYzY5ODE3NmQ1YTBiYTUxMWFlNDM1MDZhZDAy
OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQpAQCAtNjMsNyArNjMsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3Vz
Q29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hhbmdlcy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KQEAgLTExMTMsMjAgKzExMTIsNiBAQCB2
b2lkIFdlYlBhZ2U6OmRhdGFEZXRlY3RvcnNEaWRIaWRlVUkoUGFnZU92ZXJsYXk6OlBhZ2VPdmVy
bGF5SUQgb3ZlcmxheUlEKQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpjaGFuZ2VGb250QXR0
cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmIGNoYW5nZXMpCi17Ci0gICAg
YXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0
YWJsZSgpKQotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oY2hh
bmdlcy5jcmVhdGVFZGl0aW5nU3R5bGUoKSwgY2hhbmdlcy5lZGl0QWN0aW9uKCksIEVkaXRvcjo6
Q29sb3JGaWx0ZXJNb2RlOjpJbnZlcnRDb2xvcik7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6Y2hhbmdl
Rm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCi17Ci0gICAgYXV0byYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlm
IChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKQotICAg
ICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rpb24oY2hhbmdlcy5jcmVhdGVF
ZGl0aW5nU3R5bGUoKSwgRWRpdEFjdGlvbjo6U2V0Rm9udCwgRWRpdG9yOjpDb2xvckZpbHRlck1v
ZGU6OkludmVydENvbG9yKTsKLX0KLQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICYmICFQTEFURk9STShJT1MpCiB2b2lkIFdlYlBhZ2U6OnBsYXliYWNrVGFyZ2V0U2VsZWN0
ZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNWZhZWE2MmZkOTUzZmZjNDFhZDc0YmU0NzI2
MjYyMmU3ZTU3ZTMxLi4wMTk5MWFmM2VhOGJkMDFlZjI0NWQ3MDQyZjdmZDA3OTQ5NDlkYjI3IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMTgtMTAtMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gW1dLMl0gRXhwb3NlIHNvbWUgbW9yZSBlZGl0aW5nIFNQSSBv
biBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDIzMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDQ5NjMzNjg+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGRzIG5ldyBBUEkgdGVzdHMgdG8g
ZXhlcmNpc2UgdGhlIG5ldyBTUElzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW06IEFkZGVkLgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6XSk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjp3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJU
ZXN0cy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjb2xsYXBzZVRvU3RhcnRdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBjb2xsYXBzZVRvRW5kXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uRW5kOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25FbmQ6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgY29sbGFwc2VUb1N0YXJ0XSk6Cisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgY29sbGFwc2VUb0VuZF0pOgorCisgICAgICAgIFB1bGwg
c29tZSBjb21tb24gdGVzdGluZyBoZWxwZXJzIG91dCBvZiBOU0ZvbnRNYW5hZ2VyIGFuZCBpbnRv
IFRlc3RXS1dlYlZpZXcuCisKIDIwMTgtMTAtMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBZGQgU1BJIHRvIGV4cG9zZSB0eXBpbmcg
YXR0cmlidXRlcyBhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24gb24gV0tXZWJWaWV3CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGE1MGY1NDdjOWIzMGRmYmQzYzVjMmFlZWU2NzQ1YTdlYjcyZjlm
NDcuLjdmZTQ1ODFhMWIzOWRiM2FiMDk5OTYyN2RjZDkyOGRmMWM2ZDQ5MTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC04NjEsNiArODYxLDcgQEAKIAkJRjRGNUJCNTIyMTY2N0JBQTAwMkQw
NkI5IC8qIFRlc3RGb250T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0RjVCQjUxMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9udE9wdGlv
bnMubW0gKi87IH07CiAJCUY0RkE5MTgxMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNF
ZGl0aW5nVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEZBOTE3RjFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3Rz
Lm1tICovOyB9OwogCQlGNEZBOTE4MzFFNjE4NTdCMDA3QjhDMUQgLyogZG91YmxlLWNsaWNrLWRv
ZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RkE5MTgyMUU2MTg1NjYwMDdCOEMxRCAv
KiBkb3VibGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwgKi87IH07
CisJCUY0RkI2ODI1MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RkI2ODI0MjE2
NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLzsgfTsKIAkJRjRGQzA3
NzcyMEYwMTNCNjAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQzA3
NzYyMEYwMTA4MTAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLmh0bWwgKi87
IH07CiAJCUY2NjBBQTExMTVBNUY2MzEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdl
dEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAg
Ki87IH07CiAJCUY2NjBBQTE1MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2NjBBQTE0MTVBNjFBQkYwMDNBMTI0MyAv
KiBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxl
LmNwcCAqLzsgfTsKQEAgLTIxMjQsNiArMjEyNSw3IEBACiAJCUY0RjVCQjUxMjE2NjdCQUEwMDJE
MDZCOSAvKiBUZXN0Rm9udE9wdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0Rm9u
dE9wdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RkE5MTdGMUU2MTg0
OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RkE5MTgyMUU2MTg1NjYwMDdCOEMxRCAvKiBk
b3VibGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IG5hbWUgPSAiZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGlu
Zy1zcGFjZS5odG1sIjsgcGF0aCA9ICJUZXN0cy9XZWJLaXRDb2NvYS9kb3VibGUtY2xpY2stZG9l
cy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwiOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CisJCUY0RkI2ODI0MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9u
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2ln
bmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzaWduaWZpY2FudC10ZXh0
LW1pbGVzdG9uZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjY2MEFBMEMx
NUE1RjA2MTAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdldEluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjU3NSw2ICsyNTc3LDcgQEAKIAkJCQlGNDY4NDlCRDFFRUY1OEU0MDBCOTM3RkUg
LyogVUlQYXN0ZWJvYXJkVGVzdHMubW0gKi8sCiAJCQkJRjQzRTNCQkUyMERBREExRTAwQTRFN0VE
IC8qIFdLU2Nyb2xsVmlld1Rlc3RzLm1tICovLAogCQkJCTUxNDk1OEJEMUY3NDI3QUMwMEU4N0JB
RCAvKiBXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tICovLAorCQkJCUY0RkI2ODI0MjE2NDNFRkMw
MDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0g
aW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQxMDIsNiArNDEwNSw3IEBACiAJ
CQkJN0M0MTdGMzMxRDE5RTE0ODAwQjhFRjUzIC8qIFdLV2ViVmlld0RlZmF1bHROYXZpZ2F0aW9u
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NkU2NkE5MDFGMEQ3NTU5MDAyNkQ4M0Mg
LyogV0tXZWJWaWV3RGlhZ25vc3RpY0xvZ2dpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREI2
NDc4ODFGNDE2M0Q2MDA1MUE4OUUgLyogV0tXZWJWaWV3RG9lc05vdExvZ0R1cmluZ0luaXRpYWxp
emF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjRGQjY4MjUyMTY0M0VGQzAwMzQ2MDdBIC8q
IFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjk0QTcxQTc3
MjY3NDAwREUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUQzNEUwODc2MUU0RTQyRTEwMDVGRjE0QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RkE5MTgxMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dl
YlZpZXdNYWNFZGl0aW5nVGVzdHMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTVlZTYwOWQzNWI4ODE0NzU5OTVkYTQxOWE5ZjhhZTdmMDYwNDVjMAotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25z
Lm1tCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisK
KyNpZiBQTEFURk9STShJT1MpICYmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVSUtpdFNQ
SS5oIgorI2ltcG9ydCA8VUlLaXQvVUlGb250RGVzY3JpcHRvci5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGUuaD4KKworQGludGVyZmFjZSBUZXN0V0tXZWJWaWV3IChFZGl0QWN0
aW9uVGVzdGluZykKKy0gKEJPT0wpcXVlcnlTZWxlY3RvckV4aXN0czooTlNTdHJpbmcgKilxdWVy
eVNlbGVjdG9yOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoRWRpdEFj
dGlvblRlc3RpbmcpCisKKy0gKEJPT0wpcXVlcnlTZWxlY3RvckV4aXN0czooTlNTdHJpbmcgKilx
dWVyeVNlbGVjdG9yCit7CisgICAgcmV0dXJuIFtbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiISFkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKGAlQGApIiwgcXVlcnlTZWxlY3Rvcl1dIGJvb2xWYWx1ZV07Cit9CisKK0BlbmQKKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+
IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA0MDAsIDQwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCI8ZGl2PldlYktpdDwvZGl2PiJdOworICAgIFt3ZWJWaWV3IF9zZXRFZGl0YWJsZTpZRVNdOwor
ICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24o
KS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAxKSJdOworICAgIHJldHVybiB3ZWJWaWV3Owor
fQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBMaXN0SW5zZXJ0aW9uKQoreworICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworCisgICAgW3dlYlZp
ZXcgaW5zZXJ0T3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVy
eVNlbGVjdG9yRXhpc3RzOkAib2wiXSk7CisgICAgW3dlYlZpZXcgaW5zZXJ0T3JkZXJlZExpc3Q6
bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9s
Il0pOworCisgICAgW3dlYlZpZXcgaW5zZXJ0VW5vcmRlcmVkTGlzdDpuaWxdOworICAgIEVYUEVD
VF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJ1bCJdKTsKKyAgICBbd2ViVmll
dyBpbnNlcnRVbm9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHF1
ZXJ5U2VsZWN0b3JFeGlzdHM6QCJ1bCJdKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9u
cywgQ2hhbmdlSW5kZW50YXRpb24pCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVk
aXRBY3Rpb25UZXN0aW5nKCk7CisKKyAgICBbd2ViVmlldyBpbmRlbnQ6bmlsXTsKKyAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKKyAg
ICBbd2ViVmlldyBpbmRlbnQ6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNl
bGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSA+IGJsb2NrcXVvdGUiXSk7CisKKyAgICBbd2ViVmll
dyBvdXRkZW50Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4
aXN0czpAImJsb2NrcXVvdGUiXSk7CisgICAgW3dlYlZpZXcgb3V0ZGVudDpuaWxdOworICAgIEVY
UEVDVF9GQUxTRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsK
K30KKworVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgU2V0QWxpZ25tZW50KQoreworICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIGF1dG8gcnVu
VGVzdCA9IFt3ZWJWaWV3XSB7CisgICAgICAgIFt3ZWJWaWV3IGFsaWduQ2VudGVyOm5pbF07Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUSgiY2VudGVyIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LWFsaWduIl0pOworICAgICAgICBbd2ViVmlldyBhbGlnbkxl
ZnQ6bmlsXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJsZWZ0IiwgW3dlYlZpZXcgc3R5bGVQ
cm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LWFsaWduIl0pOworICAgICAgICBbd2ViVmll
dyBhbGlnblJpZ2h0Om5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgicmlnaHQiLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQtYWxpZ24iXSk7CisgICAg
ICAgIFt3ZWJWaWV3IGFsaWduSnVzdGlmaWVkOm5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJF
USgianVzdGlmeSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4
dC1hbGlnbiJdKTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuYm9keS5kaXIgPSAncnRsJyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBy
dW5UZXN0KCk7CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5i
b2R5LmRpciA9ICdsdHInIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIHJ1blRlc3QoKTsK
K30KKworVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgVG9nZ2xlU3RyaWtlVGhyb3VnaCkKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKyAgICBb
d2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICBbd2ViVmlldyB0b2dnbGVTdHJpa2VUaHJvdWdo
Om5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHls
ZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1l
ZmZlY3QiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBz
dHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4t
ZWZmZWN0Il0pOworCisgICAgW3dlYlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAg
IEVYUEVDVF9XS19TVFJFUSgibm9uZSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlv
blN0YXJ0OkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIm5vbmUiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6
QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOworCisgICAgW3dlYlZpZXcg
Y29sbGFwc2VUb0VuZF07CisgICAgW3dlYlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOwor
ICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAIkhlbGxvIl07
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3Bl
cnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Qi
XSk7CisKKyAgICBbd2ViVmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07CisgICAgW1t3ZWJW
aWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiSGVsbG8iXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIm5vbmUiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFy
dDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7Cit9CisKK1RFU1QoV0tX
ZWJWaWV3RWRpdEFjdGlvbnMsIENoYW5nZUZvbnRTaXplKQoreworICAgIGF1dG8gd2ViVmlldyA9
IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpu
aWxdOworICAgIEVYUEVDVF9FUSgxNiwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlv
blN0YXJ0OkAiZm9udC1zaXplIl0gZmxvYXRWYWx1ZV0pOworCisgICAgW3dlYlZpZXcgaW5jcmVh
c2VTaXplOm5pbF07CisgICAgRVhQRUNUX0VRKDE3LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisgICAgW3dlYlZpZXcg
aW5jcmVhc2VTaXplOm5pbF07CisgICAgRVhQRUNUX0VRKDE4LCBbW3dlYlZpZXcgc3R5bGVQcm9w
ZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisKKyAgICBb
d2ViVmlldyBkZWNyZWFzZVNpemU6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMTcsIFtbd2ViVmlldyBz
dHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsK
KyAgICBbd2ViVmlldyBkZWNyZWFzZVNpemU6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMTYsIFtbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFs
dWVdKTsKKworICAgIFt3ZWJWaWV3IHNldEZvbnRTaXplOjIwIHNlbmRlcjpuaWxdOworICAgIEVY
UEVDVF9FUSgyMCwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9u
dC1zaXplIl0gZmxvYXRWYWx1ZV0pOworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBT
ZXRUZXh0Q29sb3IpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25U
ZXN0aW5nKCk7CisgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07CisKKyAgICBbd2ViVmlldyBz
ZXRUZXh0Q29sb3I6W1VJQ29sb3IgY29sb3JXaXRoUmVkOjEgZ3JlZW46MCBibHVlOjAgYWxwaGE6
MV0gc2VuZGVyOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2IoMjU1LCAwLCAwKSIsIFt3
ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7CisgICAgRVhQ
RUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7CisKKyAgICBb
d2ViVmlldyBzZXRUZXh0Q29sb3I6W1VJQ29sb3IgY29sb3JXaXRoUmVkOjAgZ3JlZW46MSBibHVl
OjAgYWxwaGE6MC4yXSBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYmEoMCwg
MjU1LCAwLCAwLjIpIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJj
b2xvciJdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpA
ImZvbnQiXSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIFNldEZvbnRGYW1pbHkp
Cit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7Cisg
ICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07CisKKyAgICBVSUZvbnREZXNjcmlwdG9yICpmb250
RGVzY3JpcHRvciA9IFtVSUZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRy
aWJ1dGVzOkB7IFVJRm9udERlc2NyaXB0b3JGYW1pbHlBdHRyaWJ1dGU6IEAiSGVsdmV0aWNhIiB9
XTsKKyAgICBbd2ViVmlldyBzZXRGb250OltVSUZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmZvbnRE
ZXNjcmlwdG9yIHNpemU6MjRdIHNlbmRlcjpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgiSGVs
dmV0aWNhIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZh
bWlseSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjI0cHgiLCBbd2ViVmlldyBzdHlsZVByb3Bl
cnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
Im5vcm1hbCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13
ZWlnaHQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub3JtYWwiLCBbd2ViVmlldyBzdHlsZVBy
b3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc3R5bGUiXSk7CisKKyAgICBbd2ViVmlldyBz
ZXRGb250OltVSUZvbnQgZm9udFdpdGhOYW1lOkAiVGltZXNOZXdSb21hblBTLUJvbGRNVCIgc2l6
ZToxMl0gc2VuZGVyOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJcIlRpbWVzIE5ldyBSb21h
blwiIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWls
eSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjEycHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5
QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImJv
bGQiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0
Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0
eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXN0eWxlIl0pOworCisgICAgZm9udERlc2NyaXB0b3Ig
PSBbZm9udERlc2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoU3ltYm9saWNUcmFpdHM6VUlGb250
RGVzY3JpcHRvclRyYWl0SXRhbGljIHwgVUlGb250RGVzY3JpcHRvclRyYWl0Qm9sZF07CisgICAg
W3dlYlZpZXcgc2V0Rm9udDpbVUlGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRv
ciBzaXplOjIwXSBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbHZldGljYSIs
IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCIyMHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJib2xkIiwg
W3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXdlaWdodCJdKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIml0YWxpYyIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNl
bGVjdGlvblN0YXJ0OkAiZm9udC1zdHlsZSJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBXS19BUElfRU5BQkxFRApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KaW5k
ZXggNmE0NDY3OWVkNTkzMmMzYTFlOTUxMDI2YjI1MmFhMjU0MjkxMDBkMy4uNGJjYmVjNDhmYjQ5
MTUxMzFjYjQwMjkxODhjYzVlNzgyYzAxMmRmMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3RzLm1tCkBAIC00NCwxMSArNDQsNyBAQAogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqc2VsZWN0ZWRUZXh0OwogCiAt
IChOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopdHlwaW5nQXR0cmlidXRlczsKLS0gKE5T
U3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVy
dHlOYW1lOwotLSAoTlNTdHJpbmcgKilzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6KE5TU3Ry
aW5nICopcHJvcGVydHlOYW1lOwogLSAodm9pZClzZWxlY3ROZXh0V29yZDsKLS0gKHZvaWQpY29s
bGFwc2VUb1N0YXJ0OwotLSAodm9pZCljb2xsYXBzZVRvRW5kOwogCiBAZW5kCiAKQEAgLTkwLDI4
ICs4Niw2IEBACiAgICAgW3NlbGYgc2VsZWN0V29yZDpuaWxdOwogfQogCi0tICh2b2lkKWNvbGxh
cHNlVG9TdGFydAotewotICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpAImdldFNlbGVjdGlv
bigpLmNvbGxhcHNlVG9TdGFydCgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwotfQotCi0tICh2
b2lkKWNvbGxhcHNlVG9FbmQKLXsKLSAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRT
ZWxlY3Rpb24oKS5jb2xsYXBzZVRvRW5kKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Ci19Ci0K
LS0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICop
cHJvcGVydHlOYW1lCi17Ci0gICAgTlNTdHJpbmcgKnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiZ2V0Q29tcHV0ZWRTdHlsZShnZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDAp
LnN0YXJ0Q29udGFpbmVyLnBhcmVudEVsZW1lbnQpWyclQCddIiwgcHJvcGVydHlOYW1lXTsKLSAg
ICByZXR1cm4gW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdOwotfQot
Ci0tIChOU1N0cmluZyAqKXN0eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDooTlNTdHJpbmcgKilw
cm9wZXJ0eU5hbWUKLXsKLSAgICBOU1N0cmluZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJnZXRDb21wdXRlZFN0eWxlKGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCku
ZW5kQ29udGFpbmVyLnBhcmVudEVsZW1lbnQpWyclQCddIiwgcHJvcGVydHlOYW1lXTsKLSAgICBy
ZXR1cm4gW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpzY3JpcHRdOwotfQotCiBA
ZW5kCiAKIHN0YXRpYyBSZXRhaW5QdHI8Rm9udE1hbmFnZXJUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3
Rm9yRm9udE1hbmFnZXJUZXN0aW5nKE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyLCBOU1N0cmlu
ZyAqbWFya3VwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRl
eCBmZTkxYWRkZWIwMjI4YjZkMmNmYzMwNDcwZjlmNmNmMzUxN2U1OGU2Li4xMzI2OWNmNmY0NTI4
MzkxYTNiNmRjYjQzMWUyZmFjNDk4Yzk3OWI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaApAQCAtNjQsNiArNjQsMTAgQEAKIC0gKHZvaWQpd2FpdEZvck1lc3Nh
Z2U6KE5TU3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpcGVyZm9ybUFmdGVyTG9hZGluZzooZGlz
cGF0Y2hfYmxvY2tfdClhY3Rpb25zOwogLSAodm9pZCl3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZTsKKy0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3Ry
aW5nICopcHJvcGVydHlOYW1lOworLSAoTlNTdHJpbmcgKilzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25FbmQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lOworLSAodm9pZCljb2xsYXBzZVRvU3RhcnQ7
CistICh2b2lkKWNvbGxhcHNlVG9FbmQ7CiBAZW5kCiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggYWRkMDEzZjMyODY4
NTA2OTI5MjE2ZmVhNDg1ZDg0ZmM1ZWVkODEzOC4uOThmNGYwOWI3NWY0OTNiZTNlMDQzNzMwMjMx
NmU0NGUxZjcwYjM1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQpAQCAtMzE1LDYgKzMxNSwyOCBAQCBOU0V2ZW50TWFzayBfX3NpbXVsYXRlZF9mb3JjZUNs
aWNrQXNzb2NpYXRlZEV2ZW50c01hc2soaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorLSAoTlNTdHJpbmcgKilzdHlsZVByb3BlcnR5
QXRTZWxlY3Rpb25TdGFydDooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKK3sKKyAgICBOU1N0cmlu
ZyAqc2NyaXB0ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJnZXRDb21wdXRlZFN0eWxl
KGdldFNlbGVjdGlvbigpLmdldFJhbmdlQXQoMCkuc3RhcnRDb250YWluZXIucGFyZW50RWxlbWVu
dClbJyVAJ10iLCBwcm9wZXJ0eU5hbWVdOworICAgIHJldHVybiBbc2VsZiBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OnNjcmlwdF07Cit9CisKKy0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0
eUF0U2VsZWN0aW9uRW5kOihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQoreworICAgIE5TU3RyaW5n
ICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImdldENvbXB1dGVkU3R5bGUo
Z2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5lbmRDb250YWluZXIucGFyZW50RWxlbWVudClb
JyVAJ10iLCBwcm9wZXJ0eU5hbWVdOworICAgIHJldHVybiBbc2VsZiBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OnNjcmlwdF07Cit9CisKKy0gKHZvaWQpY29sbGFwc2VUb1N0YXJ0Cit7Cisg
ICAgW3NlbGYgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkuY29sbGFwc2VUb1N0
YXJ0KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Cit9CisKKy0gKHZvaWQpY29sbGFwc2VUb0Vu
ZAoreworICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLmNvbGxh
cHNlVG9FbmQoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKK30KKwogQGVuZAogCiAjaWYgUExB
VEZPUk0oSU9TKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>