<?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>234770</bug_id>
          
          <creation_ts>2021-12-31 14:02:29 -0800</creation_ts>
          <short_desc>[Cocoa] Simplify some FontAttributes API tests</short_desc>
          <delta_ts>2022-01-01 13:05:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>190120</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>darin</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1827365</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-31 14:02:29 -0800</bug_when>
    <thetext>• Instead of defining PlatformColor/PlatformFont, use CocoaColor/CocoaFont from WebCore.
• Remove the Nullity flag in ShadowExpectation and ColorExpectation (and simply std::optional instead).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827370</commentid>
    <comment_count>1</comment_count>
      <attachid>448135</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-31 15:13:21 -0800</bug_when>
    <thetext>Created attachment 448135
Depends on #234757</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827392</commentid>
    <comment_count>2</comment_count>
      <attachid>448135</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-31 21:40:13 -0800</bug_when>
    <thetext>Comment on attachment 448135
Depends on #234757

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FontAttributes.mm:106
&gt; +    CGFloat red;
&gt; +    CGFloat green;
&gt; +    CGFloat blue;
&gt; +    CGFloat alpha;

I suggest these still be initialized to zero, even though this is a simple structure. No reason to let them be uninitialized.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FontAttributes.mm:111
&gt; +    CGFloat opacity;
&gt; +    CGFloat blurRadius;

Ditto. Same for the other structures below.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FontAttributes.mm:119
&gt; +static void checkColor(WebCore::CocoaColor *color, std::optional&lt;ColorExpectation&gt;&amp;&amp; expectation)

No reason to use an rvalue reference for the argument. It’s not important to move something full of a lot of scalars. I’d just use a value, not a reference at all.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FontAttributes.mm:139
&gt; +static void checkShadow(NSShadow *shadow, std::optional&lt;ShadowExpectation&gt;&amp;&amp; expectation)

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FontAttributes.mm:154
&gt; +static void checkFont(WebCore::CocoaFont *font, FontExpectation&amp;&amp; expectation)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827431</commentid>
    <comment_count>3</comment_count>
      <attachid>448135</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 11:05:52 -0800</bug_when>
    <thetext>Comment on attachment 448135
Depends on #234757

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

Thanks for the review!

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FontAttributes.mm:106
&gt;&gt; +    CGFloat alpha;
&gt; 
&gt; I suggest these still be initialized to zero, even though this is a simple structure. No reason to let them be uninitialized.

Makes sense — added initial values to ColorExpectation, ShadowExpectation, FontExpectation and ParagraphStyleExpectation (specifically the NSTextAlignment member).

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/FontAttributes.mm:119
&gt;&gt; +static void checkColor(WebCore::CocoaColor *color, std::optional&lt;ColorExpectation&gt;&amp;&amp; expectation)
&gt; 
&gt; No reason to use an rvalue reference for the argument. It’s not important to move something full of a lot of scalars. I’d just use a value, not a reference at all.

Sounds good! Changed this (and the other places below) to pass by value instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827445</commentid>
    <comment_count>4</comment_count>
      <attachid>448159</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-01 12:26:58 -0800</bug_when>
    <thetext>Created attachment 448159
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827447</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-01 13:04:30 -0800</bug_when>
    <thetext>Committed r287503 (245638@main): &lt;https://commits.webkit.org/245638@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448159.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827448</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-01 13:05:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/87041744&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448135</attachid>
            <date>2021-12-31 15:13:21 -0800</date>
            <delta_ts>2022-01-01 12:26:56 -0800</delta_ts>
            <desc>Depends on #234757</desc>
            <filename>bug-234770-20211231151321.patch</filename>
            <type>text/plain</type>
            <size>17067</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDk0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGY1ZTNjZjNjODAyYWNkNGI2OThjZDBlZjQzZjc2ZjJk
NmU3ZmU3NC4uY2Y5NGI5ZDNmNjBjZjZhY2I4MTcxMWE3ZTRlOThiZmIwNTgxN2JkYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDIxLTEyLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgc29tZSBGb250QXR0cmlidXRlcyBBUEkgdGVzdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDc3MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsaWZ5
IHNvbWUgb2YgdGhlIGxvZ2ljIGFyb3VuZCBGb250QXR0cmlidXRlcy5Gb250QXR0cmlidXRlc0Fm
dGVyQ2hhbmdpbmdTZWxlY3Rpb246CisgICAgICAgIDEuICBJbnN0ZWFkIG9mIGRlZmluaW5nIFBs
YXRmb3JtQ29sb3IvUGxhdGZvcm1Gb250LCB1c2UgQ29jb2FDb2xvci9Db2NvYUZvbnQgZnJvbSBX
ZWJDb3JlLgorICAgICAgICAyLiAgUmVtb3ZlIHRoZSBgTnVsbGl0eWAgZmxhZyBpbiBTaGFkb3dF
eHBlY3RhdGlvbiBhbmQgQ29sb3JFeHBlY3RhdGlvbiAoYW5kIHVzZSBgc3RkOjpvcHRpb25hbGAg
aW5zdGVhZCB0bworICAgICAgICAgICAgaW5kaWNhdGUgdGhhdCB0aGUgc2hhZG93IG9yIGZvbnQg
YXR0cmlidXRlIHNob3VsZCBiZSBudWxsKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpjaGVja0NvbG9yKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrU2hhZG93KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrRm9udCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkNvbG9yRXhwZWN0YXRpb246OkNvbG9y
RXhwZWN0YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6U2hhZG93RXhw
ZWN0YXRpb246OlNoYWRvd0V4cGVjdGF0aW9uKTogRGVsZXRlZC4KKwogMjAyMS0xMi0zMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGluZyB0
aGUgZmlsZSBuYW1lIG9mIGF0dGFjaG1lbnQtYmFja2VkIGltYWdlcyBzaG91bGQgYXV0b21hdGlj
YWxseSBzZXQgdGhlIGBhbHRgIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Gb250QXR0cmlidXRlcy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0dHJpYnV0ZXMubW0KaW5kZXggMDZhM2VjNDJm
NTAyMGY5NmU3MGZmZDA4MzkyY2U0YTRlNGM3NWZlNC4uMDM1ZDYzYzcwZmM5NjJlZmVjMDZlZmRk
YzVkMDVhNjM1YTZjMmNjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Gb250QXR0cmlidXRlcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0ZvbnRBdHRyaWJ1dGVzLm1tCkBAIC0zMSw2ICszMSw4IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0ZvbnRDb2NvYS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aD4KICNpbXBvcnQgPGNtYXRoPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0F0dHJpYnV0ZWRT
dHJpbmdTUEkuaD4KQEAgLTg1LDE4ICs4Nyw4IEBACiAKIEBlbmQKIAotI2lmIFBMQVRGT1JNKE1B
QykKLSNkZWZpbmUgUGxhdGZvcm1Db2xvciBOU0NvbG9yCi0jZGVmaW5lIFBsYXRmb3JtRm9udCBO
U0ZvbnQKLSNlbHNlCi0jZGVmaW5lIFBsYXRmb3JtQ29sb3IgVUlDb2xvcgotI2RlZmluZSBQbGF0
Zm9ybUZvbnQgVUlGb250Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1l
bnVtIGNsYXNzIE51bGxpdHkgOiB1aW50OF90IHsgTnVsbCwgTm9uTnVsbCB9OwotCiBzdHJ1Y3Qg
TGlzdEV4cGVjdGF0aW9uIHsKICAgICBOU1N0cmluZyAqbWFya2VyRm9ybWF0IHsgbmlsIH07CiAg
ICAgaW50IHN0YXJ0aW5nSXRlbU51bWJlciB7IDAgfTsKQEAgLTEwOCwzNyArMTAwLDE1IEBAIHN0
cnVjdCBQYXJhZ3JhcGhTdHlsZUV4cGVjdGF0aW9uIHsKIH07CiAKIHN0cnVjdCBDb2xvckV4cGVj
dGF0aW9uIHsKLSAgICBDb2xvckV4cGVjdGF0aW9uKENHRmxvYXQgcmVkVmFsdWUsIENHRmxvYXQg
Z3JlZW5WYWx1ZSwgQ0dGbG9hdCBibHVlVmFsdWUsIENHRmxvYXQgYWxwaGFWYWx1ZSkKLSAgICAg
ICAgOiByZWQocmVkVmFsdWUpCi0gICAgICAgICwgZ3JlZW4oZ3JlZW5WYWx1ZSkKLSAgICAgICAg
LCBibHVlKGJsdWVWYWx1ZSkKLSAgICAgICAgLCBhbHBoYShhbHBoYVZhbHVlKQotICAgICAgICAs
IG51bGxpdHkoTnVsbGl0eTo6Tm9uTnVsbCkKLSAgICB7Ci0gICAgfQotCi0gICAgQ29sb3JFeHBl
Y3RhdGlvbigpID0gZGVmYXVsdDsKLQotICAgIENHRmxvYXQgcmVkIHsgMCB9OwotICAgIENHRmxv
YXQgZ3JlZW4geyAwIH07Ci0gICAgQ0dGbG9hdCBibHVlIHsgMCB9OwotICAgIENHRmxvYXQgYWxw
aGEgeyAwIH07Ci0gICAgTnVsbGl0eSBudWxsaXR5IHsgTnVsbGl0eTo6TnVsbCB9OworICAgIENH
RmxvYXQgcmVkOworICAgIENHRmxvYXQgZ3JlZW47CisgICAgQ0dGbG9hdCBibHVlOworICAgIENH
RmxvYXQgYWxwaGE7CiB9OwogCiBzdHJ1Y3QgU2hhZG93RXhwZWN0YXRpb24gewotICAgIFNoYWRv
d0V4cGVjdGF0aW9uKENHRmxvYXQgb3BhY2l0eVZhbHVlLCBDR0Zsb2F0IGJsdXJSYWRpdXNWYWx1
ZSkKLSAgICAgICAgOiBvcGFjaXR5KG9wYWNpdHlWYWx1ZSkKLSAgICAgICAgLCBibHVyUmFkaXVz
KGJsdXJSYWRpdXNWYWx1ZSkKLSAgICAgICAgLCBudWxsaXR5KE51bGxpdHk6Ok5vbk51bGwpCi0g
ICAgewotICAgIH0KLQotICAgIFNoYWRvd0V4cGVjdGF0aW9uKCkgPSBkZWZhdWx0OwotCi0gICAg
Q0dGbG9hdCBvcGFjaXR5IHsgMCB9OwotICAgIENHRmxvYXQgYmx1clJhZGl1cyB7IDAgfTsKLSAg
ICBOdWxsaXR5IG51bGxpdHkgeyBOdWxsaXR5OjpOdWxsIH07CisgICAgQ0dGbG9hdCBvcGFjaXR5
OworICAgIENHRmxvYXQgYmx1clJhZGl1czsKIH07CiAKIHN0cnVjdCBGb250RXhwZWN0YXRpb24g
ewpAQCAtMTQ2LDkgKzExNiw5IEBAIHN0cnVjdCBGb250RXhwZWN0YXRpb24gewogICAgIENHRmxv
YXQgZm9udFNpemU7CiB9OwogCi1zdGF0aWMgdm9pZCBjaGVja0NvbG9yKFBsYXRmb3JtQ29sb3Ig
KmNvbG9yLCBDb2xvckV4cGVjdGF0aW9uJiYgZXhwZWN0YXRpb24pCitzdGF0aWMgdm9pZCBjaGVj
a0NvbG9yKFdlYkNvcmU6OkNvY29hQ29sb3IgKmNvbG9yLCBzdGQ6Om9wdGlvbmFsPENvbG9yRXhw
ZWN0YXRpb24+JiYgZXhwZWN0YXRpb24pCiB7Ci0gICAgaWYgKGV4cGVjdGF0aW9uLm51bGxpdHkg
PT0gTnVsbGl0eTo6TnVsbCkgeworICAgIGlmICghZXhwZWN0YXRpb24pIHsKICAgICAgICAgRVhQ
RUNUX05VTEwoY29sb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYwLDE1ICsxMzAs
MTUgQEAgc3RhdGljIHZvaWQgY2hlY2tDb2xvcihQbGF0Zm9ybUNvbG9yICpjb2xvciwgQ29sb3JF
eHBlY3RhdGlvbiYmIGV4cGVjdGF0aW9uKQogICAgIENHRmxvYXQgb2JzZXJ2ZWRCbHVlID0gMDsK
ICAgICBDR0Zsb2F0IG9ic2VydmVkQWxwaGEgPSAwOwogICAgIFtjb2xvciBnZXRSZWQ6Jm9ic2Vy
dmVkUmVkIGdyZWVuOiZvYnNlcnZlZEdyZWVuIGJsdWU6Jm9ic2VydmVkQmx1ZSBhbHBoYTomb2Jz
ZXJ2ZWRBbHBoYV07Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGF0aW9uLnJlZCwgc3RkOjpyb3VuZChv
YnNlcnZlZFJlZCAqIDI1NSkpOwotICAgIEVYUEVDVF9FUShleHBlY3RhdGlvbi5ncmVlbiwgc3Rk
Ojpyb3VuZChvYnNlcnZlZEdyZWVuICogMjU1KSk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGF0aW9u
LmJsdWUsIHN0ZDo6cm91bmQob2JzZXJ2ZWRCbHVlICogMjU1KSk7Ci0gICAgRVhQRUNUX0xUKHN0
ZDo6YWJzKGV4cGVjdGF0aW9uLmFscGhhIC0gb2JzZXJ2ZWRBbHBoYSksIDAuMDAwMSk7CisgICAg
RVhQRUNUX0VRKGV4cGVjdGF0aW9uLT5yZWQsIHN0ZDo6cm91bmQob2JzZXJ2ZWRSZWQgKiAyNTUp
KTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0YXRpb24tPmdyZWVuLCBzdGQ6OnJvdW5kKG9ic2VydmVk
R3JlZW4gKiAyNTUpKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0YXRpb24tPmJsdWUsIHN0ZDo6cm91
bmQob2JzZXJ2ZWRCbHVlICogMjU1KSk7CisgICAgRVhQRUNUX0xUKHN0ZDo6YWJzKGV4cGVjdGF0
aW9uLT5hbHBoYSAtIG9ic2VydmVkQWxwaGEpLCAwLjAwMDEpOwogfQogCi1zdGF0aWMgdm9pZCBj
aGVja1NoYWRvdyhOU1NoYWRvdyAqc2hhZG93LCBTaGFkb3dFeHBlY3RhdGlvbiYmIGV4cGVjdGF0
aW9uKQorc3RhdGljIHZvaWQgY2hlY2tTaGFkb3coTlNTaGFkb3cgKnNoYWRvdywgc3RkOjpvcHRp
b25hbDxTaGFkb3dFeHBlY3RhdGlvbj4mJiBleHBlY3RhdGlvbikKIHsKLSAgICBpZiAoZXhwZWN0
YXRpb24ubnVsbGl0eSA9PSBOdWxsaXR5OjpOdWxsKSB7CisgICAgaWYgKCFleHBlY3RhdGlvbikg
ewogICAgICAgICBFWFBFQ1RfTlVMTChzaGFkb3cpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTc3LDExICsxNDcsMTEgQEAgc3RhdGljIHZvaWQgY2hlY2tTaGFkb3coTlNTaGFkb3cgKnNo
YWRvdywgU2hhZG93RXhwZWN0YXRpb24mJiBleHBlY3RhdGlvbikKIAogICAgIENHRmxvYXQgb2Jz
ZXJ2ZWRBbHBoYSA9IDA7CiAgICAgW3NoYWRvdy5zaGFkb3dDb2xvciBnZXRSZWQ6bnVsbHB0ciBn
cmVlbjpudWxscHRyIGJsdWU6bnVsbHB0ciBhbHBoYTomb2JzZXJ2ZWRBbHBoYV07Ci0gICAgRVhQ
RUNUX0xUKHN0ZDo6YWJzKGV4cGVjdGF0aW9uLm9wYWNpdHkgLSBvYnNlcnZlZEFscGhhKSwgMC4w
MDAxKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0YXRpb24uYmx1clJhZGl1cywgc2hhZG93LnNoYWRv
d0JsdXJSYWRpdXMpOworICAgIEVYUEVDVF9MVChzdGQ6OmFicyhleHBlY3RhdGlvbi0+b3BhY2l0
eSAtIG9ic2VydmVkQWxwaGEpLCAwLjAwMDEpOworICAgIEVYUEVDVF9FUShleHBlY3RhdGlvbi0+
Ymx1clJhZGl1cywgc2hhZG93LnNoYWRvd0JsdXJSYWRpdXMpOwogfQogCi1zdGF0aWMgdm9pZCBj
aGVja0ZvbnQoUGxhdGZvcm1Gb250ICpmb250LCBGb250RXhwZWN0YXRpb24mJiBleHBlY3RhdGlv
bikKK3N0YXRpYyB2b2lkIGNoZWNrRm9udChXZWJDb3JlOjpDb2NvYUZvbnQgKmZvbnQsIEZvbnRF
eHBlY3RhdGlvbiYmIGV4cGVjdGF0aW9uKQogewogICAgIEVYUEVDVF9XS19TVFJFUShleHBlY3Rh
dGlvbi5mb250TmFtZSwgZm9udC5mb250TmFtZSk7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGF0aW9u
LmZvbnRTaXplLCBmb250LnBvaW50U2l6ZSk7CkBAIC0yMTksMTAgKzE4OSwxMCBAQCBURVNUKEZv
bnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAgICAg
ewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJvbmUiXTsK
ICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZpZXcgZm9udEF0dHJpYnV0
ZXNBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJp
YnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyAyMjcsIDM2LCAwLCAxIH0p
OwotICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1
dGVOYW1lXSwgeyAyNTUsIDE5OSwgMTE5LCAxIH0pOworICAgICAgICBjaGVja0NvbG9yKGF0dHJp
YnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB7IDIyNywgMzYsIDAsIDEg
fSB9KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0
cmlidXRlTmFtZV0sIHsgeyAyNTUsIDE5OSwgMTE5LCAxIH0gfSk7CiAgICAgICAgIGNoZWNrRm9u
dChhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdLCB7ICJIZWx2ZXRpY2EtQm9sZCIsIDQ4
IH0pOwotICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFt
ZV0sIHsgfSk7CisgICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1
dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tQYXJhZ3JhcGhTdHlsZXMoYXR0
cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsgTlNUZXh0QWxpZ25tZW50
TmF0dXJhbCwgeyB9IH0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZVNpbmds
ZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2Vy
VmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmli
dXRlc1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CkBAIC0y
MzEsMTAgKzIwMSwxMCBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVy
Q2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50
V2l0aElkZW50aWZpZXI6QCJ0d28iXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVz
ID0gW3dlYlZpZXcgZm9udEF0dHJpYnV0ZXNBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwot
ICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVO
YW1lXSwgeyAxMDIsIDE1NywgNTIsIDEgfSk7Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRl
c1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IDI1NSwgMTk3LCAxNzEsIDEgfSk7
CisgICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0
ZU5hbWVdLCB7IHsgMTAyLCAxNTcsIDUyLCAxIH0gfSk7CisgICAgICAgIGNoZWNrQ29sb3IoYXR0
cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IHsgMjU1LCAxOTcsIDE3
MSwgMSB9IH0pOwogICAgICAgICBjaGVja0ZvbnQoYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVO
YW1lXSwgeyAiSGVsdmV0aWNhLUJvbGQiLCA0OCB9KTsKLSAgICAgICAgY2hlY2tTaGFkb3coYXR0
cmlidXRlc1tOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdLCB7IDAuNDcwNTg4LCA1IH0pOworICAgICAg
ICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0sIHsgeyAwLjQ3
MDU4OCwgNSB9IH0pOwogICAgICAgICBjaGVja1BhcmFncmFwaFN0eWxlcyhhdHRyaWJ1dGVzW05T
UGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lXSwgeyBOU1RleHRBbGlnbm1lbnROYXR1cmFsLCB7
IH0gfSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0
ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAg
ICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUsIFthdHRyaWJ1dGVzW05TVW5k
ZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKQEAgLTI0Myw4ICsyMTMs
OCBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxl
Y3Rpb24pCiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZp
ZXI6QCJ0aHJlZSJdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbd2ViVmll
dyBmb250QXR0cmlidXRlc0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAgICAgIGNo
ZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IDI1
NSwgMTA2LCAwLCAxIH0pOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNCYWNrZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB9KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1
dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgeyAyNTUsIDEwNiwgMCwgMSB9
IH0pOworICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tGb250KGF0dHJpYnV0ZXNb
TlNGb250QXR0cmlidXRlTmFtZV0sIHsgIk1lbmxvLUl0YWxpYyIsIDE4IH0pOwogICAgICAgICBj
aGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0sIHsgfSk7CiAgICAg
ICAgIGNoZWNrUGFyYWdyYXBoU3R5bGVzKGF0dHJpYnV0ZXNbTlNQYXJhZ3JhcGhTdHlsZUF0dHJp
YnV0ZU5hbWVdLCB7IE5TVGV4dEFsaWdubWVudENlbnRlciwgeyB9IH0pOwpAQCAtMjU1LDEwICsy
MjUsMTAgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5n
U2VsZWN0aW9uKQogICAgIHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVu
dGlmaWVyOkAiZm91ciJdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbd2Vi
VmlldyBmb250QXR0cmlidXRlc0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAgICAg
IGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7
IDI1NSwgMjU1LCAyNTUsIDEgfSk7Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0Jh
Y2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IDAsIDAsIDAsIDEgfSk7CisgICAgICAgIGNo
ZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IHsg
MjU1LCAyNTUsIDI1NSwgMSB9IH0pOworICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNC
YWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB7IDAsIDAsIDAsIDEgfSB9KTsKICAgICAg
ICAgY2hlY2tGb250KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0sIHsgIkF2ZW5pci1C
b29rIiwgMjQgfSk7Ci0gICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRy
aWJ1dGVOYW1lXSwgeyB9KTsKKyAgICAgICAgY2hlY2tTaGFkb3coYXR0cmlidXRlc1tOU1NoYWRv
d0F0dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBjaGVja1BhcmFncmFwaFN0
eWxlcyhhdHRyaWJ1dGVzW05TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lXSwgeyBOU1RleHRB
bGlnbm1lbnRDZW50ZXIsIHsgfSB9KTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5
bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGlu
dGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFth
dHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsK
QEAgLTI2NywxMCArMjM3LDEwIEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVz
QWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICB7CiAgICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVs
ZW1lbnRXaXRoSWRlbnRpZmllcjpAImZpdmUiXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRy
aWJ1dGVzID0gW3dlYlZpZXcgZm9udEF0dHJpYnV0ZXNBZnRlck5leHRQcmVzZW50YXRpb25VcGRh
dGVdOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXSwgeyAxMzEsIDE2LCAwLCAxIH0pOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJp
YnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB9KTsKKyAgICAgICAgY2hl
Y2tDb2xvcihhdHRyaWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgeyAx
MzEsIDE2LCAwLCAxIH0gfSk7CisgICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBjaGVja0Zv
bnQoYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSwgeyAiVGltZXNOZXdSb21hblBTLUJv
bGRNVCIsIDI0IH0pOwotICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0
cmlidXRlTmFtZV0sIHsgfSk7CisgICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFk
b3dBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tQYXJhZ3JhcGhT
dHlsZXMoYXR0cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsgTlNUZXh0
QWxpZ25tZW50Q2VudGVyLCB7IH0gfSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0
eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBp
bnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBb
YXR0cmlidXRlc1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7
CkBAIC0yNzksOCArMjQ5LDggQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0ZXNB
ZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgIHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0RWxl
bWVudFdpdGhJZGVudGlmaWVyOkAic2l4Il07CiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmli
dXRlcyA9IFt3ZWJWaWV3IGZvbnRBdHRyaWJ1dGVzQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRl
XTsKLSAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmli
dXRlTmFtZV0sIHsgMjU1LCA2NCwgMTksIDEgfSk7Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmli
dXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IH0pOworICAgICAgICBjaGVj
a0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB7IDI1
NSwgNjQsIDE5LCAxIH0gfSk7CisgICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBjaGVja0Zv
bnQoYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSwgeyAiQXZlbmlyLUJsYWNrIiwgMTgg
fSk7CiAgICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1l
XSwgeyB9KTsKICAgICAgICAgY2hlY2tQYXJhZ3JhcGhTdHlsZXMoYXR0cmlidXRlc1tOU1BhcmFn
cmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsgTlNUZXh0QWxpZ25tZW50TGVmdCwge3sgTlNUZXh0
TGlzdE1hcmtlckRpc2MsIDEgfX0gfSk7CkBAIC0yOTEsMTAgKzI2MSwxMCBAQCBURVNUKEZvbnRB
dHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgewog
ICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJzZXZlbiJdOwog
ICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbd2ViVmlldyBmb250QXR0cmlidXRl
c0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmli
dXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IDIzNSwgMjM1LCAyMzUsIDEg
fSk7Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWVdLCB7IDc4LCAxMjIsIDM5LCAxIH0pOworICAgICAgICBjaGVja0NvbG9yKGF0dHJp
YnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB7IDIzNSwgMjM1LCAyMzUs
IDEgfSB9KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9y
QXR0cmlidXRlTmFtZV0sIHsgeyA3OCwgMTIyLCAzOSwgMSB9IH0pOwogICAgICAgICBjaGVja0Zv
bnQoYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSwgeyAiQXZlbmlyLUJvb2tPYmxpcXVl
IiwgMTIgfSk7Ci0gICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1
dGVOYW1lXSwgeyB9KTsKKyAgICAgICAgY2hlY2tTaGFkb3coYXR0cmlidXRlc1tOU1NoYWRvd0F0
dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBjaGVja1BhcmFncmFwaFN0eWxl
cyhhdHRyaWJ1dGVzW05TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lXSwgeyBOU1RleHRBbGln
bm1lbnRMZWZ0LCB7eyBOU1RleHRMaXN0TWFya2VyRGlzYywgMSB9fSB9KTsKICAgICAgICAgRVhQ
RUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hT
dHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNV
bmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVO
YW1lXSBpbnRlZ2VyVmFsdWVdKTsKQEAgLTMwMywxMCArMjczLDEwIEBAIFRFU1QoRm9udEF0dHJp
YnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICB7CiAgICAg
ICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAImVpZ2h0Il07CiAgICAg
ICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFt3ZWJWaWV3IGZvbnRBdHRyaWJ1dGVzQWZ0
ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKLSAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVz
W05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgfSk7Ci0gICAgICAgIGNoZWNrQ29s
b3IoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IH0pOworICAg
ICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1l
XSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TQmFja2dy
b3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGNoZWNrRm9u
dChhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdLCB7ICJBdmVuaXItQm9vayIsIDEyIH0p
OwotICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0s
IHsgfSk7CisgICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVO
YW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tQYXJhZ3JhcGhTdHlsZXMoYXR0cmli
dXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsgTlNUZXh0QWxpZ25tZW50TGVm
dCwge3sgTlNUZXh0TGlzdE1hcmtlckRlY2ltYWwsIDEgfX0gfSk7CiAgICAgICAgIEVYUEVDVF9F
UShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVB
dHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJs
aW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0g
aW50ZWdlclZhbHVlXSk7CkBAIC0zMTUsMTAgKzI4NSwxMCBAQCBURVNUKEZvbnRBdHRyaWJ1dGVz
LCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgewogICAgICAgICBb
d2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJuaW5lIl07CiAgICAgICAgIE5T
RGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFt3ZWJWaWV3IGZvbnRBdHRyaWJ1dGVzQWZ0ZXJOZXh0
UHJlc2VudGF0aW9uVXBkYXRlXTsKLSAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TRm9y
ZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgfSk7Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0
cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IH0pOworICAgICAgICBj
aGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgc3Rk
OjpudWxsb3B0KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENv
bG9yQXR0cmlidXRlTmFtZV0sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGNoZWNrRm9udChhdHRy
aWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdLCB7ICJHZW9yZ2lhIiwgMzYgfSk7Ci0gICAgICAg
IGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSwgeyAwLjY1ODgy
NCwgOSB9KTsKKyAgICAgICAgY2hlY2tTaGFkb3coYXR0cmlidXRlc1tOU1NoYWRvd0F0dHJpYnV0
ZU5hbWVdLCB7IHsgMC42NTg4MjQsIDkgfSB9KTsKICAgICAgICAgY2hlY2tQYXJhZ3JhcGhTdHls
ZXMoYXR0cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsgTlNUZXh0QWxp
Z25tZW50TGVmdCwge3sgTlNUZXh0TGlzdE1hcmtlckRlY2ltYWwsIDEgfX0gfSk7CiAgICAgICAg
IEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJv
dWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VR
KE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1VuZGVybGluZVN0eWxlQXR0cmli
dXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CkBAIC0zMjcsMTAgKzI5NywxMCBAQCBURVNUKEZvbnRB
dHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgewog
ICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJ0ZW4iXTsKICAg
ICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZpZXcgZm9udEF0dHJpYnV0ZXNB
ZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0
ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB9KTsKLSAgICAgICAgY2hlY2tD
b2xvcihhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgfSk7Cisg
ICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5h
bWVdLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNCYWNr
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tG
b250KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0sIHsgIkF2ZW5pci1Cb29rT2JsaXF1
ZSIsIDE4IH0pOwotICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmli
dXRlTmFtZV0sIHsgfSk7CisgICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dB
dHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tQYXJhZ3JhcGhTdHls
ZXMoYXR0cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsgTlNUZXh0QWxp
Z25tZW50UmlnaHQsIHsgfSB9KTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVO
b25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVn
ZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRy
aWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKQEAg
LTMzOSwxMCArMzA5LDEwIEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0
ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICB7CiAgICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1l
bnRXaXRoSWRlbnRpZmllcjpAImVsZXZlbiJdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJp
YnV0ZXMgPSBbd2ViVmlldyBmb250QXR0cmlidXRlc0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWVdLCB7IH0pOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNCYWNrZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB9KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1
dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHN0ZDo6bnVsbG9wdCk7CisgICAg
ICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVd
LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBjaGVja0ZvbnQoYXR0cmlidXRlc1tOU0ZvbnRBdHRy
aWJ1dGVOYW1lXSwgeyAiTWVubG8tUmVndWxhciIsIDIwIH0pOwotICAgICAgICBjaGVja1NoYWRv
dyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0sIHsgfSk7CisgICAgICAgIGNoZWNr
U2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgY2hlY2tQYXJhZ3JhcGhTdHlsZXMoYXR0cmlidXRlc1tOU1BhcmFncmFwaFN0eWxl
QXR0cmlidXRlTmFtZV0sIHsgTlNUZXh0QWxpZ25tZW50UmlnaHQsIHsgfSB9KTsKICAgICAgICAg
RVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91
Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEo
TlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1
dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448159</attachid>
            <date>2022-01-01 12:26:58 -0800</date>
            <delta_ts>2022-01-01 13:04:30 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-234770-20220101122657.patch</filename>
            <type>text/plain</type>
            <size>17253</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDQxNTg4ODhkYzI3YTBlODRjNTg2MDVhYzg3OTlmNjc0
MmU2MDI5YS4uODU5N2IyYWVkOTdlYmU0ZDM5ODVkZGY1ZjBmOTRiOWRjNTUzYWE5ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDIyLTAxLTAxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gU2ltcGxpZnkgc29tZSBGb250QXR0cmlidXRlcyBBUEkgdGVzdHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDc3MAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFNpbXBsaWZ5IHNv
bWUgb2YgdGhlIGxvZ2ljIGFyb3VuZCBGb250QXR0cmlidXRlcy5Gb250QXR0cmlidXRlc0FmdGVy
Q2hhbmdpbmdTZWxlY3Rpb246CisgICAgICAgIDEuICBJbnN0ZWFkIG9mIGRlZmluaW5nIFBsYXRm
b3JtQ29sb3IvUGxhdGZvcm1Gb250LCB1c2UgQ29jb2FDb2xvci9Db2NvYUZvbnQgZnJvbSBXZWJD
b3JlLgorICAgICAgICAyLiAgUmVtb3ZlIHRoZSBgTnVsbGl0eWAgZmxhZyBpbiBTaGFkb3dFeHBl
Y3RhdGlvbiBhbmQgQ29sb3JFeHBlY3RhdGlvbiAoYW5kIHVzZSBgc3RkOjpvcHRpb25hbGAgaW5z
dGVhZCB0bworICAgICAgICAgICAgaW5kaWNhdGUgdGhhdCB0aGUgc2hhZG93IG9yIGZvbnQgYXR0
cmlidXRlIHNob3VsZCBiZSBudWxsKS4KKyAgICAgICAgMy4gIENoYW5nZSBhIHNldmVyYWwgcnZh
bHVlIHJlZmVyZW5jZXMgdG8gYmUgcGxhaW4gdmFsdWVzIGluc3RlYWQgKHdoZW4gcGFzc2lubmcg
ZXhwZWN0YXRpb24gc3RydWN0cyB0aGF0IG9ubHkKKyAgICAgICAgICAgIGNvbnRhaW4gYSBoYW5k
ZnVsIG9mIHNjYWxhciB2YWx1ZXMpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Gb250QXR0cmlidXRlcy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNo
ZWNrQ29sb3IpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tTaGFkb3cpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tGb250KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q29sb3JFeHBlY3RhdGlvbjo6Q29sb3JFeHBl
Y3RhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpTaGFkb3dFeHBlY3Rh
dGlvbjo6U2hhZG93RXhwZWN0YXRpb24pOiBEZWxldGVkLgorCiAyMDIxLTEyLTMxICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEluY2x1ZGUgYSBmZXcg
bW9yZSB0YWcgbmFtZXMgdG8gc2VhcmNoIHdoZW4gcnVubmluZyBtb2RhbCBjb250YWluZXIgZGV0
ZWN0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0ZvbnRBdHRyaWJ1dGVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Gb250QXR0cmlidXRlcy5tbQppbmRleCAwNmEzZWM0MmY1MDIwZjk2ZTcwZmZkMDgzOTJjZTRh
NGU0Yzc1ZmU0Li40MDVhNWY5MDliYTc2M2Q2NmY1MjAwMDk5MDNmMGU5NDc2Yzg2NWQyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZvbnRBdHRyaWJ1
dGVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRm9udEF0
dHJpYnV0ZXMubW0KQEAgLTMxLDYgKzMxLDggQEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRm9udENvY29hLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8Y21hdGg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgpAQCAtODUsNzAg
Kzg3LDM4IEBACiAKIEBlbmQKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNkZWZpbmUgUGxhdGZvcm1D
b2xvciBOU0NvbG9yCi0jZGVmaW5lIFBsYXRmb3JtRm9udCBOU0ZvbnQKLSNlbHNlCi0jZGVmaW5l
IFBsYXRmb3JtQ29sb3IgVUlDb2xvcgotI2RlZmluZSBQbGF0Zm9ybUZvbnQgVUlGb250Ci0jZW5k
aWYKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1lbnVtIGNsYXNzIE51bGxpdHkgOiB1
aW50OF90IHsgTnVsbCwgTm9uTnVsbCB9OwotCiBzdHJ1Y3QgTGlzdEV4cGVjdGF0aW9uIHsKICAg
ICBOU1N0cmluZyAqbWFya2VyRm9ybWF0IHsgbmlsIH07CiAgICAgaW50IHN0YXJ0aW5nSXRlbU51
bWJlciB7IDAgfTsKIH07CiAKIHN0cnVjdCBQYXJhZ3JhcGhTdHlsZUV4cGVjdGF0aW9uIHsKLSAg
ICBOU1RleHRBbGlnbm1lbnQgYWxpZ25tZW50OworICAgIE5TVGV4dEFsaWdubWVudCBhbGlnbm1l
bnQgeyBOU1RleHRBbGlnbm1lbnROYXR1cmFsIH07CiAgICAgVmVjdG9yPExpc3RFeHBlY3RhdGlv
bj4gdGV4dExpc3RzOwogfTsKIAogc3RydWN0IENvbG9yRXhwZWN0YXRpb24gewotICAgIENvbG9y
RXhwZWN0YXRpb24oQ0dGbG9hdCByZWRWYWx1ZSwgQ0dGbG9hdCBncmVlblZhbHVlLCBDR0Zsb2F0
IGJsdWVWYWx1ZSwgQ0dGbG9hdCBhbHBoYVZhbHVlKQotICAgICAgICA6IHJlZChyZWRWYWx1ZSkK
LSAgICAgICAgLCBncmVlbihncmVlblZhbHVlKQotICAgICAgICAsIGJsdWUoYmx1ZVZhbHVlKQot
ICAgICAgICAsIGFscGhhKGFscGhhVmFsdWUpCi0gICAgICAgICwgbnVsbGl0eShOdWxsaXR5OjpO
b25OdWxsKQotICAgIHsKLSAgICB9Ci0KLSAgICBDb2xvckV4cGVjdGF0aW9uKCkgPSBkZWZhdWx0
OwotCiAgICAgQ0dGbG9hdCByZWQgeyAwIH07CiAgICAgQ0dGbG9hdCBncmVlbiB7IDAgfTsKICAg
ICBDR0Zsb2F0IGJsdWUgeyAwIH07CiAgICAgQ0dGbG9hdCBhbHBoYSB7IDAgfTsKLSAgICBOdWxs
aXR5IG51bGxpdHkgeyBOdWxsaXR5OjpOdWxsIH07CiB9OwogCiBzdHJ1Y3QgU2hhZG93RXhwZWN0
YXRpb24gewotICAgIFNoYWRvd0V4cGVjdGF0aW9uKENHRmxvYXQgb3BhY2l0eVZhbHVlLCBDR0Zs
b2F0IGJsdXJSYWRpdXNWYWx1ZSkKLSAgICAgICAgOiBvcGFjaXR5KG9wYWNpdHlWYWx1ZSkKLSAg
ICAgICAgLCBibHVyUmFkaXVzKGJsdXJSYWRpdXNWYWx1ZSkKLSAgICAgICAgLCBudWxsaXR5KE51
bGxpdHk6Ok5vbk51bGwpCi0gICAgewotICAgIH0KLQotICAgIFNoYWRvd0V4cGVjdGF0aW9uKCkg
PSBkZWZhdWx0OwotCiAgICAgQ0dGbG9hdCBvcGFjaXR5IHsgMCB9OwogICAgIENHRmxvYXQgYmx1
clJhZGl1cyB7IDAgfTsKLSAgICBOdWxsaXR5IG51bGxpdHkgeyBOdWxsaXR5OjpOdWxsIH07CiB9
OwogCiBzdHJ1Y3QgRm9udEV4cGVjdGF0aW9uIHsKLSAgICBjb25zdCBjaGFyKiBmb250TmFtZTsK
LSAgICBDR0Zsb2F0IGZvbnRTaXplOworICAgIGNvbnN0IGNoYXIqIGZvbnROYW1lIHsgbnVsbHB0
ciB9OworICAgIENHRmxvYXQgZm9udFNpemUgeyAwIH07CiB9OwogCi1zdGF0aWMgdm9pZCBjaGVj
a0NvbG9yKFBsYXRmb3JtQ29sb3IgKmNvbG9yLCBDb2xvckV4cGVjdGF0aW9uJiYgZXhwZWN0YXRp
b24pCitzdGF0aWMgdm9pZCBjaGVja0NvbG9yKFdlYkNvcmU6OkNvY29hQ29sb3IgKmNvbG9yLCBz
dGQ6Om9wdGlvbmFsPENvbG9yRXhwZWN0YXRpb24+IGV4cGVjdGF0aW9uKQogewotICAgIGlmIChl
eHBlY3RhdGlvbi5udWxsaXR5ID09IE51bGxpdHk6Ok51bGwpIHsKKyAgICBpZiAoIWV4cGVjdGF0
aW9uKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKGNvbG9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTE2MCwxNSArMTMwLDE1IEBAIHN0YXRpYyB2b2lkIGNoZWNrQ29sb3IoUGxhdGZvcm1D
b2xvciAqY29sb3IsIENvbG9yRXhwZWN0YXRpb24mJiBleHBlY3RhdGlvbikKICAgICBDR0Zsb2F0
IG9ic2VydmVkQmx1ZSA9IDA7CiAgICAgQ0dGbG9hdCBvYnNlcnZlZEFscGhhID0gMDsKICAgICBb
Y29sb3IgZ2V0UmVkOiZvYnNlcnZlZFJlZCBncmVlbjomb2JzZXJ2ZWRHcmVlbiBibHVlOiZvYnNl
cnZlZEJsdWUgYWxwaGE6Jm9ic2VydmVkQWxwaGFdOwotICAgIEVYUEVDVF9FUShleHBlY3RhdGlv
bi5yZWQsIHN0ZDo6cm91bmQob2JzZXJ2ZWRSZWQgKiAyNTUpKTsKLSAgICBFWFBFQ1RfRVEoZXhw
ZWN0YXRpb24uZ3JlZW4sIHN0ZDo6cm91bmQob2JzZXJ2ZWRHcmVlbiAqIDI1NSkpOwotICAgIEVY
UEVDVF9FUShleHBlY3RhdGlvbi5ibHVlLCBzdGQ6OnJvdW5kKG9ic2VydmVkQmx1ZSAqIDI1NSkp
OwotICAgIEVYUEVDVF9MVChzdGQ6OmFicyhleHBlY3RhdGlvbi5hbHBoYSAtIG9ic2VydmVkQWxw
aGEpLCAwLjAwMDEpOworICAgIEVYUEVDVF9FUShleHBlY3RhdGlvbi0+cmVkLCBzdGQ6OnJvdW5k
KG9ic2VydmVkUmVkICogMjU1KSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGF0aW9uLT5ncmVlbiwg
c3RkOjpyb3VuZChvYnNlcnZlZEdyZWVuICogMjU1KSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGF0
aW9uLT5ibHVlLCBzdGQ6OnJvdW5kKG9ic2VydmVkQmx1ZSAqIDI1NSkpOworICAgIEVYUEVDVF9M
VChzdGQ6OmFicyhleHBlY3RhdGlvbi0+YWxwaGEgLSBvYnNlcnZlZEFscGhhKSwgMC4wMDAxKTsK
IH0KIAotc3RhdGljIHZvaWQgY2hlY2tTaGFkb3coTlNTaGFkb3cgKnNoYWRvdywgU2hhZG93RXhw
ZWN0YXRpb24mJiBleHBlY3RhdGlvbikKK3N0YXRpYyB2b2lkIGNoZWNrU2hhZG93KE5TU2hhZG93
ICpzaGFkb3csIHN0ZDo6b3B0aW9uYWw8U2hhZG93RXhwZWN0YXRpb24+IGV4cGVjdGF0aW9uKQog
ewotICAgIGlmIChleHBlY3RhdGlvbi5udWxsaXR5ID09IE51bGxpdHk6Ok51bGwpIHsKKyAgICBp
ZiAoIWV4cGVjdGF0aW9uKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHNoYWRvdyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xNzcsMTEgKzE0NywxMSBAQCBzdGF0aWMgdm9pZCBjaGVja1No
YWRvdyhOU1NoYWRvdyAqc2hhZG93LCBTaGFkb3dFeHBlY3RhdGlvbiYmIGV4cGVjdGF0aW9uKQog
CiAgICAgQ0dGbG9hdCBvYnNlcnZlZEFscGhhID0gMDsKICAgICBbc2hhZG93LnNoYWRvd0NvbG9y
IGdldFJlZDpudWxscHRyIGdyZWVuOm51bGxwdHIgYmx1ZTpudWxscHRyIGFscGhhOiZvYnNlcnZl
ZEFscGhhXTsKLSAgICBFWFBFQ1RfTFQoc3RkOjphYnMoZXhwZWN0YXRpb24ub3BhY2l0eSAtIG9i
c2VydmVkQWxwaGEpLCAwLjAwMDEpOwotICAgIEVYUEVDVF9FUShleHBlY3RhdGlvbi5ibHVyUmFk
aXVzLCBzaGFkb3cuc2hhZG93Qmx1clJhZGl1cyk7CisgICAgRVhQRUNUX0xUKHN0ZDo6YWJzKGV4
cGVjdGF0aW9uLT5vcGFjaXR5IC0gb2JzZXJ2ZWRBbHBoYSksIDAuMDAwMSk7CisgICAgRVhQRUNU
X0VRKGV4cGVjdGF0aW9uLT5ibHVyUmFkaXVzLCBzaGFkb3cuc2hhZG93Qmx1clJhZGl1cyk7CiB9
CiAKLXN0YXRpYyB2b2lkIGNoZWNrRm9udChQbGF0Zm9ybUZvbnQgKmZvbnQsIEZvbnRFeHBlY3Rh
dGlvbiYmIGV4cGVjdGF0aW9uKQorc3RhdGljIHZvaWQgY2hlY2tGb250KFdlYkNvcmU6OkNvY29h
Rm9udCAqZm9udCwgRm9udEV4cGVjdGF0aW9uIGV4cGVjdGF0aW9uKQogewogICAgIEVYUEVDVF9X
S19TVFJFUShleHBlY3RhdGlvbi5mb250TmFtZSwgZm9udC5mb250TmFtZSk7CiAgICAgRVhQRUNU
X0VRKGV4cGVjdGF0aW9uLmZvbnRTaXplLCBmb250LnBvaW50U2l6ZSk7CkBAIC0yMTksMTAgKzE4
OSwxMCBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdT
ZWxlY3Rpb24pCiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50
aWZpZXI6QCJvbmUiXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZp
ZXcgZm9udEF0dHJpYnV0ZXNBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgICAgICBj
aGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyAy
MjcsIDM2LCAwLCAxIH0pOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNCYWNrZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyAyNTUsIDE5OSwgMTE5LCAxIH0pOworICAgICAgICBj
aGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB7
IDIyNywgMzYsIDAsIDEgfSB9KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TQmFj
a2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgeyAyNTUsIDE5OSwgMTE5LCAxIH0gfSk7CiAg
ICAgICAgIGNoZWNrRm9udChhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdLCB7ICJIZWx2
ZXRpY2EtQm9sZCIsIDQ4IH0pOwotICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hh
ZG93QXR0cmlidXRlTmFtZV0sIHsgfSk7CisgICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNb
TlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tQYXJh
Z3JhcGhTdHlsZXMoYXR0cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsg
TlNUZXh0QWxpZ25tZW50TmF0dXJhbCwgeyB9IH0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRl
cmxpbmVTdHlsZVNpbmdsZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1
dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5
bGVOb25lLCBbYXR0cmlidXRlc1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdl
clZhbHVlXSk7CkBAIC0yMzEsMTAgKzIwMSwxMCBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250
QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgewogICAgICAgICBbd2ViVmll
dyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJ0d28iXTsKICAgICAgICAgTlNEaWN0aW9u
YXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZpZXcgZm9udEF0dHJpYnV0ZXNBZnRlck5leHRQcmVzZW50
YXRpb25VcGRhdGVdOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5k
Q29sb3JBdHRyaWJ1dGVOYW1lXSwgeyAxMDIsIDE1NywgNTIsIDEgfSk7Ci0gICAgICAgIGNoZWNr
Q29sb3IoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IDI1NSwg
MTk3LCAxNzEsIDEgfSk7CisgICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91
bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IHsgMTAyLCAxNTcsIDUyLCAxIH0gfSk7CisgICAgICAg
IGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7
IHsgMjU1LCAxOTcsIDE3MSwgMSB9IH0pOwogICAgICAgICBjaGVja0ZvbnQoYXR0cmlidXRlc1tO
U0ZvbnRBdHRyaWJ1dGVOYW1lXSwgeyAiSGVsdmV0aWNhLUJvbGQiLCA0OCB9KTsKLSAgICAgICAg
Y2hlY2tTaGFkb3coYXR0cmlidXRlc1tOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdLCB7IDAuNDcwNTg4
LCA1IH0pOworICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRl
TmFtZV0sIHsgeyAwLjQ3MDU4OCwgNSB9IH0pOwogICAgICAgICBjaGVja1BhcmFncmFwaFN0eWxl
cyhhdHRyaWJ1dGVzW05TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lXSwgeyBOU1RleHRBbGln
bm1lbnROYXR1cmFsLCB7IH0gfSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxl
Tm9uZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRl
Z2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUsIFth
dHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsK
QEAgLTI0Myw4ICsyMTMsOCBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0Fm
dGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVt
ZW50V2l0aElkZW50aWZpZXI6QCJ0aHJlZSJdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJp
YnV0ZXMgPSBbd2ViVmlldyBmb250QXR0cmlidXRlc0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWVdLCB7IDI1NSwgMTA2LCAwLCAxIH0pOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJp
YnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB9KTsKKyAgICAgICAgY2hl
Y2tDb2xvcihhdHRyaWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgeyAy
NTUsIDEwNiwgMCwgMSB9IH0pOworICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNCYWNr
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tG
b250KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0sIHsgIk1lbmxvLUl0YWxpYyIsIDE4
IH0pOwogICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFt
ZV0sIHsgfSk7CiAgICAgICAgIGNoZWNrUGFyYWdyYXBoU3R5bGVzKGF0dHJpYnV0ZXNbTlNQYXJh
Z3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWVdLCB7IE5TVGV4dEFsaWdubWVudENlbnRlciwgeyB9IH0p
OwpAQCAtMjU1LDEwICsyMjUsMTAgQEAgVEVTVChGb250QXR0cmlidXRlcywgRm9udEF0dHJpYnV0
ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgIHsKICAgICAgICAgW3dlYlZpZXcgc2VsZWN0
RWxlbWVudFdpdGhJZGVudGlmaWVyOkAiZm91ciJdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0
dHJpYnV0ZXMgPSBbd2ViVmlldyBmb250QXR0cmlidXRlc0FmdGVyTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZV07Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0
dHJpYnV0ZU5hbWVdLCB7IDI1NSwgMjU1LCAyNTUsIDEgfSk7Ci0gICAgICAgIGNoZWNrQ29sb3Io
YXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IDAsIDAsIDAsIDEg
fSk7CisgICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWVdLCB7IHsgMjU1LCAyNTUsIDI1NSwgMSB9IH0pOworICAgICAgICBjaGVja0NvbG9y
KGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB7IDAsIDAsIDAs
IDEgfSB9KTsKICAgICAgICAgY2hlY2tGb250KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFt
ZV0sIHsgIkF2ZW5pci1Cb29rIiwgMjQgfSk7Ci0gICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0
ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSwgeyB9KTsKKyAgICAgICAgY2hlY2tTaGFkb3coYXR0
cmlidXRlc1tOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBj
aGVja1BhcmFncmFwaFN0eWxlcyhhdHRyaWJ1dGVzW05TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVO
YW1lXSwgeyBOU1RleHRBbGlnbm1lbnRDZW50ZXIsIHsgfSB9KTsKICAgICAgICAgRVhQRUNUX0VR
KE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0
dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxp
bmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBp
bnRlZ2VyVmFsdWVdKTsKQEAgLTI2NywxMCArMjM3LDEwIEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMs
IEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICB7CiAgICAgICAgIFt3
ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAImZpdmUiXTsKICAgICAgICAgTlNE
aWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZpZXcgZm9udEF0dHJpYnV0ZXNBZnRlck5leHRQ
cmVzZW50YXRpb25VcGRhdGVdOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3Jl
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyAxMzEsIDE2LCAwLCAxIH0pOwotICAgICAgICBj
aGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB9
KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmli
dXRlTmFtZV0sIHsgeyAxMzEsIDE2LCAwLCAxIH0gfSk7CisgICAgICAgIGNoZWNrQ29sb3IoYXR0
cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOwog
ICAgICAgICBjaGVja0ZvbnQoYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSwgeyAiVGlt
ZXNOZXdSb21hblBTLUJvbGRNVCIsIDI0IH0pOwotICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1
dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0sIHsgfSk7CisgICAgICAgIGNoZWNrU2hhZG93KGF0
dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAg
Y2hlY2tQYXJhZ3JhcGhTdHlsZXMoYXR0cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRl
TmFtZV0sIHsgTlNUZXh0QWxpZ25tZW50Q2VudGVyLCB7IH0gfSk7CiAgICAgICAgIEVYUEVDVF9F
UShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVB
dHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJs
aW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0g
aW50ZWdlclZhbHVlXSk7CkBAIC0yNzksOCArMjQ5LDggQEAgVEVTVChGb250QXR0cmlidXRlcywg
Rm9udEF0dHJpYnV0ZXNBZnRlckNoYW5naW5nU2VsZWN0aW9uKQogICAgIHsKICAgICAgICAgW3dl
YlZpZXcgc2VsZWN0RWxlbWVudFdpdGhJZGVudGlmaWVyOkAic2l4Il07CiAgICAgICAgIE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlcyA9IFt3ZWJWaWV3IGZvbnRBdHRyaWJ1dGVzQWZ0ZXJOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKLSAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TRm9yZWdy
b3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgMjU1LCA2NCwgMTksIDEgfSk7Ci0gICAgICAgIGNo
ZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IH0p
OworICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1
dGVOYW1lXSwgeyB7IDI1NSwgNjQsIDE5LCAxIH0gfSk7CisgICAgICAgIGNoZWNrQ29sb3IoYXR0
cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOwog
ICAgICAgICBjaGVja0ZvbnQoYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSwgeyAiQXZl
bmlyLUJsYWNrIiwgMTggfSk7CiAgICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFk
b3dBdHRyaWJ1dGVOYW1lXSwgeyB9KTsKICAgICAgICAgY2hlY2tQYXJhZ3JhcGhTdHlsZXMoYXR0
cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsgTlNUZXh0QWxpZ25tZW50
TGVmdCwge3sgTlNUZXh0TGlzdE1hcmtlckRpc2MsIDEgfX0gfSk7CkBAIC0yOTEsMTAgKzI2MSwx
MCBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxl
Y3Rpb24pCiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZp
ZXI6QCJzZXZlbiJdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbd2ViVmll
dyBmb250QXR0cmlidXRlc0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAgICAgIGNo
ZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IDIz
NSwgMjM1LCAyMzUsIDEgfSk7Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IDc4LCAxMjIsIDM5LCAxIH0pOworICAgICAgICBj
aGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB7
IDIzNSwgMjM1LCAyMzUsIDEgfSB9KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05T
QmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgeyA3OCwgMTIyLCAzOSwgMSB9IH0pOwog
ICAgICAgICBjaGVja0ZvbnQoYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSwgeyAiQXZl
bmlyLUJvb2tPYmxpcXVlIiwgMTIgfSk7Ci0gICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNb
TlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSwgeyB9KTsKKyAgICAgICAgY2hlY2tTaGFkb3coYXR0cmli
dXRlc1tOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBjaGVj
a1BhcmFncmFwaFN0eWxlcyhhdHRyaWJ1dGVzW05TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1l
XSwgeyBOU1RleHRBbGlnbm1lbnRMZWZ0LCB7eyBOU1RleHRMaXN0TWFya2VyRGlzYywgMSB9fSB9
KTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tO
U1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAg
ICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5l
U3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKQEAgLTMwMywxMCArMjczLDEwIEBA
IFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZvbnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlv
bikKICAgICB7CiAgICAgICAgIFt3ZWJWaWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpA
ImVpZ2h0Il07CiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFt3ZWJWaWV3IGZv
bnRBdHRyaWJ1dGVzQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKLSAgICAgICAgY2hlY2tD
b2xvcihhdHRyaWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgfSk7Ci0g
ICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5h
bWVdLCB7IH0pOworICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRy
aWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgIGNoZWNrRm9udChhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdLCB7ICJBdmVu
aXItQm9vayIsIDEyIH0pOwotICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93
QXR0cmlidXRlTmFtZV0sIHsgfSk7CisgICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNT
aGFkb3dBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tQYXJhZ3Jh
cGhTdHlsZXMoYXR0cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsgTlNU
ZXh0QWxpZ25tZW50TGVmdCwge3sgTlNUZXh0TGlzdE1hcmtlckRlY2ltYWwsIDEgfX0gfSk7CiAg
ICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0ZXNbTlNTdHJp
a2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAgICAgICAgRVhQ
RUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1VuZGVybGluZVN0eWxl
QXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CkBAIC0zMTUsMTAgKzI4NSwxMCBAQCBURVNU
KEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxlY3Rpb24pCiAg
ICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZpZXI6QCJuaW5l
Il07CiAgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFt3ZWJWaWV3IGZvbnRBdHRy
aWJ1dGVzQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKLSAgICAgICAgY2hlY2tDb2xvcihh
dHRyaWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHsgfSk7Ci0gICAgICAg
IGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7
IH0pOworICAgICAgICBjaGVja0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRy
aWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVz
W05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IGNoZWNrRm9udChhdHRyaWJ1dGVzW05TRm9udEF0dHJpYnV0ZU5hbWVdLCB7ICJHZW9yZ2lhIiwg
MzYgfSk7Ci0gICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVO
YW1lXSwgeyAwLjY1ODgyNCwgOSB9KTsKKyAgICAgICAgY2hlY2tTaGFkb3coYXR0cmlidXRlc1tO
U1NoYWRvd0F0dHJpYnV0ZU5hbWVdLCB7IHsgMC42NTg4MjQsIDkgfSB9KTsKICAgICAgICAgY2hl
Y2tQYXJhZ3JhcGhTdHlsZXMoYXR0cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFt
ZV0sIHsgTlNUZXh0QWxpZ25tZW50TGVmdCwge3sgTlNUZXh0TGlzdE1hcmtlckRlY2ltYWwsIDEg
fX0gfSk7CiAgICAgICAgIEVYUEVDVF9FUShOU1VuZGVybGluZVN0eWxlTm9uZSwgW2F0dHJpYnV0
ZXNbTlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKICAg
ICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1VuZGVy
bGluZVN0eWxlQXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVlXSk7CkBAIC0zMjcsMTAgKzI5Nywx
MCBAQCBURVNUKEZvbnRBdHRyaWJ1dGVzLCBGb250QXR0cmlidXRlc0FmdGVyQ2hhbmdpbmdTZWxl
Y3Rpb24pCiAgICAgewogICAgICAgICBbd2ViVmlldyBzZWxlY3RFbGVtZW50V2l0aElkZW50aWZp
ZXI6QCJ0ZW4iXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZpZXcg
Zm9udEF0dHJpYnV0ZXNBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwotICAgICAgICBjaGVj
a0NvbG9yKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB9KTsK
LSAgICAgICAgY2hlY2tDb2xvcihhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRl
TmFtZV0sIHsgfSk7CisgICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBjaGVja0NvbG9yKGF0
dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgY2hlY2tGb250KGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0sIHsgIkF2
ZW5pci1Cb29rT2JsaXF1ZSIsIDE4IH0pOwotICAgICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVz
W05TU2hhZG93QXR0cmlidXRlTmFtZV0sIHsgfSk7CisgICAgICAgIGNoZWNrU2hhZG93KGF0dHJp
YnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hl
Y2tQYXJhZ3JhcGhTdHlsZXMoYXR0cmlidXRlc1tOU1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFt
ZV0sIHsgTlNUZXh0QWxpZ25tZW50UmlnaHQsIHsgfSB9KTsKICAgICAgICAgRVhQRUNUX0VRKE5T
VW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRlc1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJp
YnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAgICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVT
dHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRl
Z2VyVmFsdWVdKTsKQEAgLTMzOSwxMCArMzA5LDEwIEBAIFRFU1QoRm9udEF0dHJpYnV0ZXMsIEZv
bnRBdHRyaWJ1dGVzQWZ0ZXJDaGFuZ2luZ1NlbGVjdGlvbikKICAgICB7CiAgICAgICAgIFt3ZWJW
aWV3IHNlbGVjdEVsZW1lbnRXaXRoSWRlbnRpZmllcjpAImVsZXZlbiJdOwogICAgICAgICBOU0Rp
Y3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbd2ViVmlldyBmb250QXR0cmlidXRlc0FmdGVyTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZV07Ci0gICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0ZvcmVn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdLCB7IH0pOwotICAgICAgICBjaGVja0NvbG9yKGF0dHJp
YnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSwgeyB9KTsKKyAgICAgICAgY2hl
Y2tDb2xvcihhdHRyaWJ1dGVzW05TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0sIHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIGNoZWNrQ29sb3IoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xv
ckF0dHJpYnV0ZU5hbWVdLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBjaGVja0ZvbnQoYXR0cmli
dXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1lXSwgeyAiTWVubG8tUmVndWxhciIsIDIwIH0pOwotICAg
ICAgICBjaGVja1NoYWRvdyhhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0sIHsgfSk7
CisgICAgICAgIGNoZWNrU2hhZG93KGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSwg
c3RkOjpudWxsb3B0KTsKICAgICAgICAgY2hlY2tQYXJhZ3JhcGhTdHlsZXMoYXR0cmlidXRlc1tO
U1BhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZV0sIHsgTlNUZXh0QWxpZ25tZW50UmlnaHQsIHsg
fSB9KTsKICAgICAgICAgRVhQRUNUX0VRKE5TVW5kZXJsaW5lU3R5bGVOb25lLCBbYXR0cmlidXRl
c1tOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludGVnZXJWYWx1ZV0pOwogICAg
ICAgICBFWFBFQ1RfRVEoTlNVbmRlcmxpbmVTdHlsZU5vbmUsIFthdHRyaWJ1dGVzW05TVW5kZXJs
aW5lU3R5bGVBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>