<?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>191410</bug_id>
          
          <creation_ts>2018-11-07 19:17:59 -0800</creation_ts>
          <short_desc>[Cocoa] Introduce WKWebView SPI to insert nested ordered and unordered lists</short_desc>
          <delta_ts>2018-11-09 12:52:42 -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>WebKit2</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>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1476392</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-07 19:17:59 -0800</bug_when>
    <thetext>This would make it easier for Mail to implement list editing behaviors using WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476393</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-07 19:18:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/45898610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476776</commentid>
    <comment_count>2</comment_count>
      <attachid>354304</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-08 19:34:08 -0800</bug_when>
    <thetext>Created attachment 354304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476782</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-08 20:19:42 -0800</bug_when>
    <thetext>&gt; In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2/unified-sources/UnifiedSource29.cpp:3:
&gt; /Volumes/Data/EWS/WebKit/Source/WebKit/UIProcess/WebPageProxy.cpp:1762:44: error: no member named &apos;IncreaseListLevel&apos; in namespace &apos;Messages::WebPage&apos;
&gt;         m_process-&gt;send(Messages::WebPage::IncreaseListLevel(), m_pageID);
&gt;                         ~~~~~~~~~~~~~~~~~~~^
&gt; /Volumes/Data/EWS/WebKit/Source/WebKit/UIProcess/WebPageProxy.cpp:1768:44: error: no member named &apos;DecreaseListLevel&apos; in namespace &apos;Messages::WebPage&apos;
&gt;         m_process-&gt;send(Messages::WebPage::DecreaseListLevel(), m_pageID);
&gt;                         ~~~~~~~~~~~~~~~~~~~^
&gt; /Volumes/Data/EWS/WebKit/Source/WebKit/UIProcess/WebPageProxy.cpp:1774:44: error: no member named &apos;ChangeListType&apos; in namespace &apos;Messages::WebPage&apos;
&gt;         m_process-&gt;send(Messages::WebPage::ChangeListType(), m_pageID);
&gt;                         ~~~~~~~~~~~~~~~~~~~^
&gt; 3 errors generated.

It&apos;s not terribly clear to me why the iOS device build is failing, whereas iOS sim builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476785</commentid>
    <comment_count>4</comment_count>
      <attachid>354308</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-08 20:44:08 -0800</bug_when>
    <thetext>Created attachment 354308
Fix some typos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477012</commentid>
    <comment_count>5</comment_count>
      <attachid>354308</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-09 11:32:16 -0800</bug_when>
    <thetext>Comment on attachment 354308
Fix some typos.

Rejecting attachment 354308 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 354308, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Tools/ChangeLog is not at the top of the file.

Full output: https://webkit-queues.webkit.org/results/9926409</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477019</commentid>
    <comment_count>6</comment_count>
      <attachid>354361</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-09 11:37:25 -0800</bug_when>
    <thetext>Created attachment 354361
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477039</commentid>
    <comment_count>7</comment_count>
      <attachid>354361</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-09 12:16:42 -0800</bug_when>
    <thetext>Comment on attachment 354361
Patch for landing

Clearing flags on attachment: 354361

Committed r238050: &lt;https://trac.webkit.org/changeset/238050&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354304</attachid>
            <date>2018-11-08 19:34:08 -0800</date>
            <delta_ts>2018-11-08 20:44:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191410-20181108193407.patch</filename>
            <type>text/plain</type>
            <size>53733</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkwNGYyNmU5MGM1M2ExZTA3
ZmY3ZWJkMWMwMWFmNWU5YzBkOWQ5N2MuLmUzOTM5OTMwNWJjMWYwYjA4ODZkOWI0OWFiOTlmYTA3
YzY5NzYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTgtMTEtMDggIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1
Y2UgV0tXZWJWaWV3IFNQSSB0byBpbnNlcnQgbmVzdGVkIG9yZGVyZWQgYW5kIHVub3JkZXJlZCBs
aXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkx
NDEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTg5ODYxMD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmVmaXhlcyBhIGZldyBpT1Mtb25seSBT
UEkgbWV0aG9kcyBkZWNsYXJlZCBvbiBXS1dlYlZpZXcgaW4gcjIzNjg2NyB3aXRoIHVuZGVyc2Nv
cmVzLCBhbmQgYWxzbyBleHBvc2VzIHNvbWUKKyAgICAgICAgbW9yZSBjcm9zcy1wbGF0Zm9ybSBD
b2NvYSBlZGl0aW5nIFNQSS4gU2UgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4gT25jZSB0aGUgdW5w
cmVmaXhlZCBTUEkgbWV0aG9kcyBhcmUgbm8gbG9uZ2VyCisgICAgICAgIHVzZWQgYnkgaW50ZXJu
YWwgY2xpZW50cywgdGhlc2Ugd2lsbCBuZWVkIHRvIGJlIHJlbW92ZWQgKHNlZSBmb2xsb3d1cCBi
dWc6IHdlYmtpdC5vcmcvYi8xOTE0NTApLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IGFuZCBl
eGlzdGluZyBBUEkgdGVzdHMgaW4gV0tXZWJWaWV3RWRpdEFjdGlvbnMuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKworICAgICAgICBIb2lzdCB0aGUgZGVm
aW5pdGlvbiAoYW5kIHVuZGVmKSBvZiBgRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFV2Ag
dG8gZW5jb21wYXNzIGJvdGggdGhlIFdLV2ViVmlldworICAgICAgICBpbXBsZW1lbnRhdGlvbiBh
bmQgdGhlIFdLV2ViVmlldyAoV0tQcml2YXRlKSBpbXBsZW1lbnRhdGlvbi4gVGhpcyBhbGxvd3Mg
dXMgdG8gdXNlIHRoaXMgbWFjcm8gd2hlbiBpbXBsZW1lbnRpbmcKKyAgICAgICAgU1BJIG1ldGhv
ZHMgaW4gdGhlIFdLUHJpdmF0ZSBjYXRlZ29yeSwgYXMgd2VsbCBhcyBtZXRob2RzIHRoYXQgYXJl
IHBhcnQgb2YgdGhlIG1haW4gV0tXZWJWaWV3IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICgt
W1dLV2ViVmlldyBjYW5QZXJmb3JtQWN0aW9uOndpdGhTZW5kZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyB0YXJnZXRGb3JBY3Rpb246d2l0aFNlbmRlcjpdKToKKworICAgICAgICBBZGQgZm9y
d2FyZGluZyBmb3IgdGhlIG5ldyBlZGl0aW5nIGNvbW1hbmRzIGluIC1jYW5QZXJmb3JtQWN0aW9u
OiBhbmQgLXRhcmdldEZvckFjdGlvbjouCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90b2dnbGVT
dHJpa2VUaHJvdWdoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luY3JlYXNlTGlzdExldmVs
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RlY3JlYXNlTGlzdExldmVsOl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2NoYW5nZUxpc3RUeXBlOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3NldEZvbnQ6c2VuZGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEZvbnRTaXplOnNl
bmRlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRUZXh0Q29sb3I6c2VuZGVyOl0pOgor
CisgICAgICAgIEFkZCBkZWZpbml0aW9ucyBmb3IgdGhlIG5ldyBlZGl0aW5nIG1ldGhvZHMgb24g
V0tXZWJWaWV3LCB1c2luZyBtYWNyb3MgKGBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORGAgb24gbWFj
T1MgYW5kCisgICAgICAgIGBGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVXYCBvbiBpT1Mp
IHRvIGhlbHAgcmVkdWNlIHRoZSBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICgtW1dLV2Vi
VmlldyBfcGFzdGVBc1F1b3RhdGlvbjpdKTogRGVsZXRlZC4KKworICAgICAgICBSZW1vdmUgdGhp
cyBtZXRob2QgZGVmaW5pdGlvbiwgd2hpY2ggaXMgbm93IHJlcGxhY2VkIGJ5IG1hY3JvcyBvbiBp
T1MgYW5kIG1hY09TLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBuZXcgU1BJIHRvIFdLV2ViVmlldyAo
V0tQcml2YXRlKSwgYW5kIGFkZCBGSVhNRXMgdG8gcmVtb3ZlIG9sZCwgdW5wcmVmaXhlZCB2YXJp
YW50cyBvZiB0aGUgU1BJLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0TGV2ZWwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY3JlYXNlTGlzdExldmVsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSk6CisKKyAgICAgICAgQWRkIHBs
dW1iaW5nIGZvciB0aGVzZSBsaXN0IGVkaXRpbmcgY29tbWFuZHMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW5jcmVhc2VMaXN0TGV2
ZWxGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWNyZWFzZUxpc3RM
ZXZlbEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NoYW5nZUxpc3RU
eXBlRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdG9nZ2xlU3RyaWtl
VGhyb3VnaEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NldEZvbnRG
b3JXZWJWaWV3OnNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2V0Rm9udFNp
emVGb3JXZWJWaWV3OnNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2V0VGV4
dENvbG9yRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdG9n
Z2xlU3RyaWtlVGhyb3VnaEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
c2V0Rm9udEZvcldlYlZpZXc6c2VuZGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNl
dEZvbnRTaXplRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
c2V0VGV4dENvbG9yRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKworICAgICAgICBD
aGVjayBmb3IgdGhlIG5ldyBhY3Rpb24gc2VsZWN0b3JzIGhlcmUsIGFuZCBhZGRpdGlvbmFsbHkg
YWRkIHZhbGlkYXRpb24gZm9yIGBfcGFzdGVBc1F1b3RhdGlvbjpgLgorCisgICAgICAgICogV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbmNyZWFzZUxpc3RM
ZXZlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRlY3JlYXNlTGlzdExldmVsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhbmdlTGlzdFR5cGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46CisKKyAgICAgICAgQWRkIHN0dWJzIGZvciBzZXZlcmFsIGxpc3Qg
ZWRpdGluZyBjb21tYW5kcyB0aGF0IGFyZSB5ZXQgdG8gYmUgaG9va2VkIHVwIHRvIFdlYkNvcmUu
IFRoZXNlIHdpbGwgYmUgaW1wbGVtZW50ZWQKKyAgICAgICAgaW4gYSBmdXR1cmUgcGF0Y2guCisK
IDIwMTgtMTEtMDggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRk
aXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDQ4ZjkzMjUzN2JiNmYzNWE5NzJhNGFk
NzcyZDg4ODA2Yzg0OWQ5ZS4uN2NlZGQ4YTI3NTUzM2M4NDU1NDk1ZDAxYTY2NmQyNmRhMzM1MWNl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0yNTYsNiArMjU2LDEzIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUoX1dLT3ZlCiB9CiAjZW5kaWYK
IAorI2RlZmluZSBGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVXKF9hY3Rpb24pIFwKKyAg
ICAtICh2b2lkKV9hY3Rpb246KGlkKXNlbmRlciBcCisgICAgeyBcCisgICAgICAgIGlmIChzZWxm
LnVzZXNTdGFuZGFyZENvbnRlbnRWaWV3KSBcCisgICAgICAgICAgICBbX2NvbnRlbnRWaWV3IF9h
Y3Rpb24gIyMgRm9yV2ViVmlldzpzZW5kZXJdOyBcCisgICAgfQorCiBAaW1wbGVtZW50YXRpb24g
V0tXZWJWaWV3IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU+
IF9uYXZpZ2F0aW9uU3RhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6VUlEZWxlZ2F0
ZT4gX3VpRGVsZWdhdGU7CkBAIC0xMzc5LDE3ICsxMzg2LDggQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIFtzdXBlciByZXNpZ25GaXJzdFJlc3BvbmRlcl07
CiB9CiAKLSNkZWZpbmUgRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVyhfYWN0aW9uKSBc
Ci0gICAgLSAodm9pZClfYWN0aW9uOihpZClzZW5kZXIgXAotICAgIHsgXAotICAgICAgICBpZiAo
c2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldykgXAotICAgICAgICAgICAgW19jb250ZW50Vmll
dyBfYWN0aW9uICMjIEZvcldlYlZpZXc6c2VuZGVyXTsgXAotICAgIH0KLQogRk9SX0VBQ0hfV0tD
T05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykKIAotI3Vu
ZGVmIEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcKLQogLSAoQk9PTCljYW5QZXJmb3Jt
QWN0aW9uOihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogewogICAgICNkZWZpbmUg
Rk9SV0FSRF9DQU5QRVJGT1JNQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcoX2FjdGlvbikgXApAQCAt
MTM5NywxNCArMTM5NSwxNiBAQCBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJE
X0FDVElPTl9UT19XS0NPTlRFTlRWSUVXKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudXNlc1N0
YW5kYXJkQ29udGVudFZpZXcgJiYgW19jb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2Vi
VmlldzphY3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJdOwogCiAgICAgRk9SX0VBQ0hfV0tDT05URU5U
VklFV19BQ1RJT04oRk9SV0FSRF9DQU5QRVJGT1JNQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcpCi0K
LSAgICBGT1JXQVJEX0NBTlBFUkZPUk1BQ1RJT05fVE9fV0tDT05URU5UVklFVyhfcGFzdGVBc1F1
b3RhdGlvbikKKyAgICBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldB
UkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKQorICAgIEZPUldBUkRfQ0FOUEVS
Rk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKHNldFRleHRDb2xvcjpzZW5kZXIpCisgICAgRk9S
V0FSRF9DQU5QRVJGT1JNQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcoc2V0Rm9udFNpemU6c2VuZGVy
KQorICAgIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKHNldEZvbnQ6
c2VuZGVyKQorICAgIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKF9z
ZXRUZXh0Q29sb3I6c2VuZGVyKQorICAgIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NP
TlRFTlRWSUVXKF9zZXRGb250U2l6ZTpzZW5kZXIpCisgICAgRk9SV0FSRF9DQU5QRVJGT1JNQUNU
SU9OX1RPX1dLQ09OVEVOVFZJRVcoX3NldEZvbnQ6c2VuZGVyKQogCiAgICAgI3VuZGVmIEZPUldB
UkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXCiAKLSAgICBpZiAoYWN0aW9uID09
IEBzZWxlY3RvcihzZXRUZXh0Q29sb3I6c2VuZGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihz
ZXRGb250U2l6ZTpzZW5kZXI6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldEZvbnQ6c2VuZGVy
OikpCi0gICAgICAgIHJldHVybiBzZWxmLnVzZXNTdGFuZGFyZENvbnRlbnRWaWV3ICYmIFtfY29u
dGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6YWN0aW9uIHdpdGhTZW5kZXI6c2Vu
ZGVyXTsKLQogICAgIHJldHVybiBbc3VwZXIgY2FuUGVyZm9ybUFjdGlvbjphY3Rpb24gd2l0aFNl
bmRlcjpzZW5kZXJdOwogfQogCkBAIC0xNDE1LDggKzE0MTUsMTMgQEAgRk9SX0VBQ0hfV0tDT05U
RU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykKICAgICAgICAg
ICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IHRhcmdldEZvckFjdGlvbkZvcldlYlZpZXc6YWN0aW9u
IHdpdGhTZW5kZXI6c2VuZGVyXTsKIAogICAgIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNUSU9O
KEZPUldBUkRfVEFSR0VURk9SQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcpCi0KLSAgICBGT1JXQVJE
X1RBUkdFVEZPUkFDVElPTl9UT19XS0NPTlRFTlRWSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQorICAg
IEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9UQVJHRVRGT1JB
Q1RJT05fVE9fV0tDT05URU5UVklFVykKKyAgICBGT1JXQVJEX1RBUkdFVEZPUkFDVElPTl9UT19X
S0NPTlRFTlRWSUVXKHNldFRleHRDb2xvcjpzZW5kZXIpCisgICAgRk9SV0FSRF9UQVJHRVRGT1JB
Q1RJT05fVE9fV0tDT05URU5UVklFVyhzZXRGb250U2l6ZTpzZW5kZXIpCisgICAgRk9SV0FSRF9U
QVJHRVRGT1JBQ1RJT05fVE9fV0tDT05URU5UVklFVyhzZXRGb250OnNlbmRlcikKKyAgICBGT1JX
QVJEX1RBUkdFVEZPUkFDVElPTl9UT19XS0NPTlRFTlRWSUVXKF9zZXRUZXh0Q29sb3I6c2VuZGVy
KQorICAgIEZPUldBUkRfVEFSR0VURk9SQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcoX3NldEZvbnRT
aXplOnNlbmRlcikKKyAgICBGT1JXQVJEX1RBUkdFVEZPUkFDVElPTl9UT19XS0NPTlRFTlRWSUVX
KF9zZXRGb250OnNlbmRlcikKIAogICAgICN1bmRlZiBGT1JXQVJEX1RBUkdFVEZPUkFDVElPTl9U
T19XS0NPTlRFTlRWSUVXCiAKQEAgLTQyODAsNiArNDI4NSw3MCBAQCBJR05PUkVfV0FSTklOR1Nf
RU5ECiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLUHJpdmF0ZSkKIAorI2lmIFBMQVRG
T1JNKE1BQykKKworI2RlZmluZSBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChjb21tYW5kKSAtICh2
b2lkKV8jI2NvbW1hbmQ6KGlkKXNlbmRlciB7IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoI2Nv
bW1hbmQgIyMgX3MpOyB9CisKK1dFQkNPUkVfUFJJVkFURV9DT01NQU5EKGFsaWduQ2VudGVyKQor
V0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoYWxpZ25KdXN0aWZpZWQpCitXRUJDT1JFX1BSSVZBVEVf
Q09NTUFORChhbGlnbkxlZnQpCitXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChhbGlnblJpZ2h0KQor
V0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoaW5zZXJ0T3JkZXJlZExpc3QpCitXRUJDT1JFX1BSSVZB
VEVfQ09NTUFORChpbnNlcnRVbm9yZGVyZWRMaXN0KQorV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQo
aW5zZXJ0TmVzdGVkT3JkZXJlZExpc3QpCitXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChpbnNlcnRO
ZXN0ZWRVbm9yZGVyZWRMaXN0KQorV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoaW5kZW50KQorV0VC
Q09SRV9QUklWQVRFX0NPTU1BTkQob3V0ZGVudCkKK1dFQkNPUkVfUFJJVkFURV9DT01NQU5EKHBh
c3RlQXNRdW90YXRpb24pOworCisjdW5kZWYgV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQKKworLSAo
dm9pZClfdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmV4ZWN1
dGVFZGl0Q29tbWFuZCgic3RyaWtldGhyb3VnaCJfcyk7Cit9CisKKy0gKHZvaWQpX2luY3JlYXNl
TGlzdExldmVsOihpZClzZW5kZXIKK3sKKyAgICBfcGFnZS0+aW5jcmVhc2VMaXN0TGV2ZWwoKTsK
K30KKworLSAodm9pZClfZGVjcmVhc2VMaXN0TGV2ZWw6KGlkKXNlbmRlcgoreworICAgIF9wYWdl
LT5kZWNyZWFzZUxpc3RMZXZlbCgpOworfQorCistICh2b2lkKV9jaGFuZ2VMaXN0VHlwZTooaWQp
c2VuZGVyCit7CisgICAgX3BhZ2UtPmNoYW5nZUxpc3RUeXBlKCk7Cit9CisKKyNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCitGT1JfRUFDSF9QUklW
QVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcp
CisKKy0gKHZvaWQpX3NldEZvbnQ6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClzZW5kZXIKK3sK
KyAgICBpZiAoc2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldykKKyAgICAgICAgW19jb250ZW50
VmlldyBzZXRGb250Rm9yV2ViVmlldzpmb250IHNlbmRlcjpzZW5kZXJdOworfQorCistICh2b2lk
KV9zZXRGb250U2l6ZTooQ0dGbG9hdClmb250U2l6ZSBzZW5kZXI6KGlkKXNlbmRlcgoreworICAg
IGlmIChzZWxmLnVzZXNTdGFuZGFyZENvbnRlbnRWaWV3KQorICAgICAgICBbX2NvbnRlbnRWaWV3
IHNldEZvbnRTaXplRm9yV2ViVmlldzpmb250U2l6ZSBzZW5kZXI6c2VuZGVyXTsKK30KKworLSAo
dm9pZClfc2V0VGV4dENvbG9yOihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClzZW5kZXIKK3sK
KyAgICBpZiAoc2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldykKKyAgICAgICAgW19jb250ZW50
VmlldyBzZXRUZXh0Q29sb3JGb3JXZWJWaWV3OmNvbG9yIHNlbmRlcjpzZW5kZXJdOworfQorCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogLSAoQk9PTClfaXNFZGl0YWJsZQogewog
ICAgIHJldHVybiBfcGFnZS0+aXNFZGl0YWJsZSgpOwpAQCAtNDYyNiwxNiArNDY5NSw2IEBAIElH
Tk9SRV9XQVJOSU5HU19FTkQKICAgICByZXR1cm4gbmlsOwogfQogCi0tICh2b2lkKV9wYXN0ZUFz
UXVvdGF0aW9uOihpZClzZW5kZXIKLXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgX2ltcGwtPmV4
ZWN1dGVFZGl0Q29tbWFuZEZvclNlbGVjdG9yKF9jbWQpOwotI2Vsc2UKLSAgICBpZiAoc2VsZi51
c2VzU3RhbmRhcmRDb250ZW50VmlldykKLSAgICAgICAgW19jb250ZW50VmlldyBfcGFzdGVBc1F1
b3RhdGlvbkZvcldlYlZpZXc6c2VuZGVyXTsKLSNlbmRpZgotfQotCiArIChCT09MKV9oYW5kbGVz
U2FmZUJyb3dzaW5nCiB7CiAgICAgcmV0dXJuIERFRkFVTFRfU0FGRV9CUk9XU0lOR19FTkFCTEVE
OwpAQCAtNjAxNCw2ICs2MDczLDcgQEAgc3RhdGljIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24gdG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVJU2UKIAogQGVuZAog
CisjdW5kZWYgRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVwogCiBAaW1wbGVtZW50YXRp
b24gV0tXZWJWaWV3IChXS1Rlc3RpbmcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGE3MTY5ZTU0NzU5MmVlZDRh
NjczNzg4Y2FmMzZjZWEwOTM1NGRhMWYuLjIzZTY4ZGE5YjVlZjhhM2VkMTcxMzNlZDk3NzhhZjQ4
M2MzOWI2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTg2LDExICsxODYsMzAgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtIChfV0tBdHRhY2htZW50ICopX2luc2Vy
dEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxlV3JhcHBlciBj
b250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBjb21wbGV0aW9uOih2b2lkKF4pKEJP
T0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChfV0tBdHRhY2htZW50ICopX2F0dGFjaG1l
bnRGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKLS0gKElCQWN0aW9uKV9wYXN0
ZUFzUXVvdGF0aW9uOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KICsgKEJPT0wpX2hhbmRsZXNTYWZlQnJvd3NpbmcgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0g
KElCQWN0aW9uKV9hbGlnbkNlbnRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoSUJBY3Rpb24pX2FsaWduSnVzdGlm
aWVkOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfYWxpZ25MZWZ0OihpZClzZW5kZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlv
bilfYWxpZ25SaWdodDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoSUJBY3Rpb24pX2luZGVudDooaWQpc2VuZGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAo
SUJBY3Rpb24pX291dGRlbnQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKElCQWN0aW9uKV90b2dnbGVTdHJpa2VUaHJv
dWdoOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfaW5zZXJ0T3JkZXJlZExpc3Q6KGlkKXNlbmRlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0g
KElCQWN0aW9uKV9pbnNlcnRVbm9yZGVyZWRMaXN0OihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfaW5z
ZXJ0TmVzdGVkT3JkZXJlZExpc3Q6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKElCQWN0aW9uKV9pbnNlcnROZXN0ZWRV
bm9yZGVyZWRMaXN0OihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfaW5jcmVhc2VMaXN0TGV2ZWw6KGlk
KXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKElCQWN0aW9uKV9kZWNyZWFzZUxpc3RMZXZlbDooaWQpc2VuZGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoSUJBY3Rp
b24pX2NoYW5nZUxpc3RUeXBlOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfcGFzdGVBc1F1b3RhdGlv
bjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQorCistICh2b2lkKV9zZXRGb250OihV
SUZvbnQgKilmb250IHNlbmRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX3NldEZvbnRTaXplOihDR0Zsb2F0KWZvbnRTaXplIHNlbmRlcjoo
aWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Nl
dFRleHRDb2xvcjooVUlDb2xvciAqKWNvbG9yIHNlbmRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJ
TEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKwogLy8gREVSRUNBVEVEOiBUaGUgc2V0dGVycyBvZiB0
aGUgdGhyZWUgZm9sbG93aW5nIGZ1bmN0aW9uIGFyZSBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIG92
ZXJyaWRlTGF5b3V0UGFyYW1ldGVycy4KIC8vIERlZmluZSB0aGUgc21hbGxlc3Qgc2l6ZSBhIHBh
Z2UgdGFrZSB3aXRoIGEgcmVndWxhciB2aWV3cG9ydC4KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQ0dTaXplIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOwpAQCAtMzcxLDYgKzM5
MCw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogI2lm
IFRBUkdFVF9PU19JUEhPTkUKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkgPFVJUmVzcG9uZGVy
U3RhbmRhcmRFZGl0QWN0aW9ucz4KKy8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugb25jZSBpbnRlcm5h
bCBjbGllbnRzIGhhdmUgbW92ZWQgdG8gdGhlIHVuZGVyc2NvcmUtcHJlZml4ZWQgdmVyc2lvbnMu
CiAtICh2b2lkKWFsaWduQ2VudGVyOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tf
SU9TX1RCQSkpOwogLSAodm9pZClhbGlnbkp1c3RpZmllZDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJ
TEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpYWxpZ25MZWZ0OihpZClzZW5kZXIgV0tf
QVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggMzVjZWNlNTdhMjJlYmVhNjlhYmU5NDlkMzQ0YjlkY2MxYjgx
ZTk5MS4uNzhhNTc0MWM0MjY1YTJjOGI3NGM3NTQwYjFhY2Y4NzE4MDRhOWZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNzU2LDYgKzE3NTYsMjQgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmRO
YW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmluY3JlYXNlTGlzdExldmVsKCkKK3sKKyAgICBp
ZiAoaXNWYWxpZCgpKQorICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkluY3JlYXNlTGlzdExldmVsKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OmRlY3JlYXNlTGlzdExldmVsKCkKK3sKKyAgICBpZiAoaXNWYWxpZCgpKQorICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRlY3JlYXNlTGlzdExldmVsKCksIG1fcGFn
ZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUxpc3RUeXBlKCkKK3sKKyAgICBp
ZiAoaXNWYWxpZCgpKQorICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNoYW5nZUxpc3RUeXBlKCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZUZvbnRBdHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpCiB7CiAgICAgbV9jYWNo
ZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQucmVzZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjliZGRjYjc1MDg1N2Q5NThjYjdlYmNhNmE0ZTZh
MjgyMmMwNGRjYS4uMzUxY2I0ODU4NDExYTc4NDE0MTgzNjg1NDE3NmJlMzg4NGQxZDRkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU0NSw2ICs1NDUsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzU2VsZWN0ZWRSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRp
dG9yU3RhdGUuc2VsZWN0aW9uSXNSYW5nZTsgfQogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUo
KSBjb25zdCB7IHJldHVybiBtX2VkaXRvclN0YXRlLmlzQ29udGVudEVkaXRhYmxlOyB9CiAKKyAg
ICB2b2lkIGluY3JlYXNlTGlzdExldmVsKCk7CisgICAgdm9pZCBkZWNyZWFzZUxpc3RMZXZlbCgp
OworICAgIHZvaWQgY2hhbmdlTGlzdFR5cGUoKTsKKwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6Rm9udEF0dHJpYnV0ZXM+IGNhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0OyB9
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCA1NjBlYTUzMGUyODFmZjQ3
Mzk2Zjg1YThhMTdiYzVjM2UyOGJjOTM0Li41YzQxNDI1NmY5YjU2OGRkYTVhNjhlM2JhMjkyYWZm
NjkzNzc0YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xMzQsNiArMTM0LDIzIEBAIHR5cGVkZWYgc3Rk
OjpwYWlyPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QsIEludGVyYWN0aW9u
SW5mb3JtYXRpb25DCiAgICAgTShhbGlnbkNlbnRlcikgXAogICAgIE0oYWxpZ25KdXN0aWZpZWQp
CiAKKyNkZWZpbmUgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihNKSBcCisg
ICAgTShfYWxpZ25DZW50ZXIpIFwKKyAgICBNKF9hbGlnbkp1c3RpZmllZCkgXAorICAgIE0oX2Fs
aWduTGVmdCkgXAorICAgIE0oX2FsaWduUmlnaHQpIFwKKyAgICBNKF9pbmRlbnQpIFwKKyAgICBN
KF9vdXRkZW50KSBcCisgICAgTShfdG9nZ2xlU3RyaWtlVGhyb3VnaCkgXAorICAgIE0oX2luc2Vy
dE9yZGVyZWRMaXN0KSBcCisgICAgTShfaW5zZXJ0VW5vcmRlcmVkTGlzdCkgXAorICAgIE0oX2lu
c2VydE5lc3RlZE9yZGVyZWRMaXN0KSBcCisgICAgTShfaW5zZXJ0TmVzdGVkVW5vcmRlcmVkTGlz
dCkgXAorICAgIE0oX2luY3JlYXNlTGlzdExldmVsKSBcCisgICAgTShfZGVjcmVhc2VMaXN0TGV2
ZWwpIFwKKyAgICBNKF9jaGFuZ2VMaXN0VHlwZSkgXAorICAgIE0oX3Bhc3RlQXNRdW90YXRpb24p
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3aW5nSW5mbyB7
CkBAIC0zMzksNyArMzU2LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICNkZWZp
bmUgREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcoX2FjdGlvbikgXAog
ICAgIC0gKHZvaWQpX2FjdGlvbiAjIyBGb3JXZWJWaWV3OihpZClzZW5kZXI7CiBGT1JfRUFDSF9X
S0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJf
VklFVykKLURFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKF9wYXN0ZUFz
UXVvdGF0aW9uKQorRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJF
X1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKICN1bmRlZiBERUNMQVJFX1dLQ09O
VEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVwogCiAtICh2b2lkKXNldEZvbnRGb3JXZWJWaWV3
OihVSUZvbnQgKilmb250RmFtaWx5IHNlbmRlcjooaWQpc2VuZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5k
ZXggNjE0YWQ5ZjhlMWQxOTZhNWU3MDczYmExOWI0YmJiYmFlNTViYmMwYS4uYjM1Zjc1NWI0ZDNi
ZGU2Y2I1YjM3ZTVlMjU5ZDQwMWJkNzMwYmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0yMTk0LDgg
KzIxOTQsNyBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0Nv
bnRlbnRWaWV3KiBjb250ZW50VmlldykKICAgICB9CiAKIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdf
QUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dLV0VCVklFVykKLQotRk9SV0FSRF9BQ1RJT05fVE9f
V0tXRUJWSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQorRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRW
SUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcpCiAKICN1bmRlZiBGT1JXQVJE
X0FDVElPTl9UT19XS1dFQlZJRVcKIApAQCAtMjI4NSwxOCArMjI4NCwzNyBAQCBGT1JXQVJEX0FD
VElPTl9UT19XS1dFQlZJRVcoX3Bhc3RlQXNRdW90YXRpb24pCiAgICAgW1tVSUtleWJvYXJkSW1w
bCBzaGFyZWRJbnN0YW5jZV0gcmVwbGFjZVRleHQ6c2VuZGVyXTsKIH0KIAotI2RlZmluZSBXRUJD
T1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoY29tbWFuZCkgLSAodm9pZCljb21tYW5kICMjIEZvcldl
YlZpZXc6KGlkKXNlbmRlciB7IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoI2NvbW1hbmQgIyMg
X3MpOyB9Ci0KKyNkZWZpbmUgV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGNvbW1hbmQpIFwK
KyAgICAtICh2b2lkKV8gIyMgY29tbWFuZCAjIyBGb3JXZWJWaWV3OihpZClzZW5kZXIgeyBfcGFn
ZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21tYW5kICMjIF9zKTsgfSBcCisgICAgLSAodm9pZClj
b21tYW5kICMjIEZvcldlYlZpZXc6KGlkKXNlbmRlciB7IFtzZWxmIF8gIyMgY29tbWFuZCAjIyBG
b3JXZWJWaWV3OnNlbmRlcl07IH0KIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhpbnNlcnRP
cmRlcmVkTGlzdCk7CiBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoaW5zZXJ0VW5vcmRlcmVk
TGlzdCk7CitXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoaW5zZXJ0TmVzdGVkT3JkZXJlZExp
c3QpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGluc2VydE5lc3RlZFVub3JkZXJlZExp
c3QpOwogV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGluZGVudCk7CiBXRUJDT1JFX0NPTU1B
TkRfRk9SX1dFQlZJRVcob3V0ZGVudCk7CiBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoYWxp
Z25MZWZ0KTsKIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnblJpZ2h0KTsKIFdFQkNP
UkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkNlbnRlcik7CiBXRUJDT1JFX0NPTU1BTkRfRk9S
X1dFQlZJRVcoYWxpZ25KdXN0aWZpZWQpOworI3VuZGVmIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VC
VklFVwogCi0tICh2b2lkKXRvZ2dsZVN0cmlrZVRocm91Z2hGb3JXZWJWaWV3OihpZClzZW5kZXIK
Ky0gKHZvaWQpX2luY3JlYXNlTGlzdExldmVsRm9yV2ViVmlldzooaWQpc2VuZGVyCit7CisgICAg
X3BhZ2UtPmluY3JlYXNlTGlzdExldmVsKCk7Cit9CisKKy0gKHZvaWQpX2RlY3JlYXNlTGlzdExl
dmVsRm9yV2ViVmlldzooaWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmRlY3JlYXNlTGlzdExldmVs
KCk7Cit9CisKKy0gKHZvaWQpX2NoYW5nZUxpc3RUeXBlRm9yV2ViVmlldzooaWQpc2VuZGVyCit7
CisgICAgX3BhZ2UtPmNoYW5nZUxpc3RUeXBlKCk7Cit9CisKKy0gKHZvaWQpX3RvZ2dsZVN0cmlr
ZVRocm91Z2hGb3JXZWJWaWV3OihpZClzZW5kZXIKIHsKICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRD
b21tYW5kKCJTdHJpa2VUaHJvdWdoIl9zKTsKIH0KQEAgLTIzMTEsNyArMjMyOSw3IEBAIFdFQkNP
UkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkp1c3RpZmllZCk7CiAgICAgX3BhZ2UtPmV4ZWN1
dGVFZGl0Q29tbWFuZCgiRm9udFNpemVEZWx0YSJfcywgIi0xIl9zKTsKIH0KIAotLSAodm9pZClz
ZXRGb250Rm9yV2ViVmlldzooVUlGb250ICopZm9udCBzZW5kZXI6KGlkKXNlbmRlcgorLSAodm9p
ZClfc2V0Rm9udEZvcldlYlZpZXc6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClzZW5kZXIKIHsK
ICAgICBXZWJDb3JlOjpGb250Q2hhbmdlcyBjaGFuZ2VzOwogICAgIGNoYW5nZXMuc2V0Rm9udEZh
bWlseShmb250LmZhbWlseU5hbWUpOwpAQCAtMjMyMiwxOSArMjM0MCwzNyBAQCBXRUJDT1JFX0NP
TU1BTkRfRk9SX1dFQlZJRVcoYWxpZ25KdXN0aWZpZWQpOwogICAgIF9wYWdlLT5jaGFuZ2VGb250
KFdURk1vdmUoY2hhbmdlcykpOwogfQogCi0tICh2b2lkKXNldEZvbnRTaXplRm9yV2ViVmlldzoo
Q0dGbG9hdClmb250U2l6ZSBzZW5kZXI6KGlkKXNlbmRlcgorLSAodm9pZClfc2V0Rm9udFNpemVG
b3JXZWJWaWV3OihDR0Zsb2F0KWZvbnRTaXplIHNlbmRlcjooaWQpc2VuZGVyCiB7CiAgICAgV2Vi
Q29yZTo6Rm9udENoYW5nZXMgY2hhbmdlczsKICAgICBjaGFuZ2VzLnNldEZvbnRTaXplKGZvbnRT
aXplKTsKICAgICBfcGFnZS0+Y2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKTsKIH0KIAotLSAo
dm9pZClzZXRUZXh0Q29sb3JGb3JXZWJWaWV3OihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClz
ZW5kZXIKKy0gKHZvaWQpX3NldFRleHRDb2xvckZvcldlYlZpZXc6KFVJQ29sb3IgKiljb2xvciBz
ZW5kZXI6KGlkKXNlbmRlcgogewogICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoIkZvcmVD
b2xvciJfcywgV2ViQ29yZTo6Q29sb3IoY29sb3IuQ0dDb2xvcikuc2VyaWFsaXplZCgpKTsKIH0K
IAotI3VuZGVmIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVworLSAodm9pZCl0b2dnbGVTdHJp
a2VUaHJvdWdoRm9yV2ViVmlldzooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgX3RvZ2dsZVN0cmlr
ZVRocm91Z2hGb3JXZWJWaWV3OnNlbmRlcl07Cit9CisKKy0gKHZvaWQpc2V0Rm9udEZvcldlYlZp
ZXc6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBbc2VsZiBfc2V0Rm9u
dEZvcldlYlZpZXc6Zm9udCBzZW5kZXI6c2VuZGVyXTsKK30KKworLSAodm9pZClzZXRGb250U2l6
ZUZvcldlYlZpZXc6KENHRmxvYXQpZm9udFNpemUgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBb
c2VsZiBfc2V0Rm9udFNpemVGb3JXZWJWaWV3OmZvbnRTaXplIHNlbmRlcjpzZW5kZXJdOworfQor
CistICh2b2lkKXNldFRleHRDb2xvckZvcldlYlZpZXc6KFVJQ29sb3IgKiljb2xvciBzZW5kZXI6
KGlkKXNlbmRlcgoreworICAgIFtzZWxmIF9zZXRUZXh0Q29sb3JGb3JXZWJWaWV3OmNvbG9yIHNl
bmRlcjpzZW5kZXJdOworfQogCiAtIChOU0RpY3Rpb25hcnkgKil0ZXh0U3R5bGluZ0F0UG9zaXRp
b246KFVJVGV4dFBvc2l0aW9uICopcG9zaXRpb24gaW5EaXJlY3Rpb246KFVJVGV4dFN0b3JhZ2VE
aXJlY3Rpb24pZGlyZWN0aW9uCiB7CkBAIC0yMzkyLDExICsyNDI4LDE2IEBAIFdFQkNPUkVfQ09N
TUFORF9GT1JfV0VCVklFVyhhbGlnbkp1c3RpZmllZCk7CiAgICAgICAgIHJldHVybiBlZGl0b3JT
dGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSAmJiBlZGl0b3JTdGF0ZS5zZWxlY3Rpb25Jc1Jh
bmdlICYmICFfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnM7CiAgICAgaWYgKF9zaG93aW5nVGV4dFN0
eWxlT3B0aW9ucykKICAgICAgICAgcmV0dXJuIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUJv
bGRmYWNlOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVJdGFsaWNzOikgfHwgYWN0aW9u
ID09IEBzZWxlY3Rvcih0b2dnbGVVbmRlcmxpbmU6KSk7Ci0gICAgaWYgKGFjdGlvbiA9PSBAc2Vs
ZWN0b3IodG9nZ2xlQm9sZGZhY2U6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUl0YWxp
Y3M6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVVuZGVybGluZTopIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IodG9nZ2xlU3RyaWtlVGhyb3VnaDopCi0gICAgICAgIHx8IGFjdGlvbiA9PSBA
c2VsZWN0b3IoaW5zZXJ0T3JkZXJlZExpc3Q6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluc2Vy
dFVub3JkZXJlZExpc3Q6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluZGVudDopIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3Iob3V0ZGVudDopCisgICAgLy8gRklYTUU6IFNvbWUgb2YgdGhlIGZvbGxv
d2luZyBjaGVja3Mgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpbnRlcm5hbCBjbGllbnRzIG1vdmUg
dG8gdGhlIHVuZGVyc2NvcmUtcHJlZml4ZWQgdmVyc2lvbnMuCisgICAgaWYgKGFjdGlvbiA9PSBA
c2VsZWN0b3IodG9nZ2xlQm9sZGZhY2U6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUl0
YWxpY3M6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVVuZGVybGluZTopIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3IoX3RvZ2dsZVN0cmlrZVRocm91Z2g6KQorICAgICAgICB8fCBhY3Rpb24g
PT0gQHNlbGVjdG9yKF9hbGlnbkxlZnQ6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9hbGlnblJp
Z2h0OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihfYWxpZ25DZW50ZXI6KSB8fCBhY3Rpb24gPT0g
QHNlbGVjdG9yKF9hbGlnbkp1c3RpZmllZDopCisgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IoX3NldFRleHRDb2xvcjpzZW5kZXI6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9zZXRGb250
OnNlbmRlcjopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX3NldEZvbnRTaXplOnNlbmRlcjopCisg
ICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX2luc2VydE9yZGVyZWRMaXN0OikgfHwgYWN0
aW9uID09IEBzZWxlY3RvcihfaW5zZXJ0VW5vcmRlcmVkTGlzdDopIHx8IGFjdGlvbiA9PSBAc2Vs
ZWN0b3IoX2luc2VydE5lc3RlZE9yZGVyZWRMaXN0OikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihf
aW5zZXJ0TmVzdGVkVW5vcmRlcmVkTGlzdDopCisgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IoX2luY3JlYXNlTGlzdExldmVsOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihfZGVjcmVhc2VM
aXN0TGV2ZWw6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9jaGFuZ2VMaXN0VHlwZTopIHx8IGFj
dGlvbiA9PSBAc2VsZWN0b3IoX2luZGVudDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX291dGRl
bnQ6KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluY3JlYXNlU2l6ZTopIHx8IGFj
dGlvbiA9PSBAc2VsZWN0b3IoZGVjcmVhc2VTaXplOikKKyAgICAgICAgfHwgYWN0aW9uID09IEBz
ZWxlY3Rvcih0b2dnbGVTdHJpa2VUaHJvdWdoOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihpbnNl
cnRPcmRlcmVkTGlzdDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5zZXJ0VW5vcmRlcmVkTGlz
dDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5kZW50OikgfHwgYWN0aW9uID09IEBzZWxlY3Rv
cihvdXRkZW50OikKICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnbkxlZnQ6KSB8
fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGFsaWduUmlnaHQ6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KGFsaWduQ2VudGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnbkp1c3RpZmllZDopCi0g
ICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5jcmVhc2VTaXplOikgfHwgYWN0aW9uID09
IEBzZWxlY3RvcihkZWNyZWFzZVNpemU6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldFRleHRD
b2xvcjpzZW5kZXI6KQotICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldEZvbnQ6c2Vu
ZGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihzZXRGb250U2l6ZTpzZW5kZXI6KSkgeworICAg
ICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldFRleHRDb2xvcjpzZW5kZXI6KSB8fCBhY3Rp
b24gPT0gQHNlbGVjdG9yKHNldEZvbnQ6c2VuZGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihz
ZXRGb250U2l6ZTpzZW5kZXI6KSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
bW9yZSBudWFuY2VkIGluIHRoZSBmdXR1cmUsIHJhdGhlciB0aGFuIHJldHVybmluZyBZRVMgZm9y
IGFsbCByaWNobHkgZWRpdGFibGUgYXJlYXMuIEZvciBpbnN0YW5jZSwgb3V0ZGVudDogc2hvdWxk
IGJlIGRpc2FibGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBhbHJlYWR5CiAgICAgICAgIC8vIGF0
IHRoZSBvdXRlcm1vc3QgaW5kZW50YXRpb24gbGV2ZWwuCiAgICAgICAgIHJldHVybiBlZGl0b3JT
dGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKQEAgLTI0MDQsNyArMjQ0NSw3IEBAIFdFQkNP
UkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkp1c3RpZmllZCk7CiAgICAgaWYgKGFjdGlvbiA9
PSBAc2VsZWN0b3IoY3V0OikpCiAgICAgICAgIHJldHVybiAhZWRpdG9yU3RhdGUuaXNJblBhc3N3
b3JkRmllbGQgJiYgZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGUgJiYgZWRpdG9yU3RhdGUu
c2VsZWN0aW9uSXNSYW5nZTsKICAgICAKLSAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihwYXN0
ZTopKSB7CisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGU6KSB8fCBhY3Rpb24gPT0g
QHNlbGVjdG9yKF9wYXN0ZUFzUXVvdGF0aW9uOikpIHsKICAgICAgICAgaWYgKGVkaXRvclN0YXRl
LnNlbGVjdGlvbklzTm9uZSB8fCAhZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGUpCiAgICAg
ICAgICAgICByZXR1cm4gTk87CiAgICAgICAgIFVJUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtV
SVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2MmRiYTNmYjI4NzcxMGQwNDA2ODRhZjAyNWNj
MDAyZDQyNzg4YmNhLi5kODJkNjUyZTlmMTEwNmFlYjBhZjQwYWYxMjI1ODYwYWVlY2E3MWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTE1
MCw2ICsxMTUwLDIxIEBAIHZvaWQgV2ViUGFnZTo6c2V0RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkK
ICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5jcmVhc2VMaXN0TGV2ZWwoKQoreworICAgIC8v
IEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisKK3ZvaWQgV2ViUGFnZTo6ZGVjcmVhc2VMaXN0
TGV2ZWwoKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisKK3ZvaWQgV2Vi
UGFnZTo6Y2hhbmdlTGlzdFR5cGUoKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQu
Cit9CisKIGJvb2wgV2ViUGFnZTo6aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQwNzZlYTdiNzQ1MjkzZWRjZTA3N2I4MjhmYzVjM2M2NWFk
NmZhOTQuLjcyMjc0ZGQwZmZhMjdiY2I3MTA1MmQ0MDRmOGYyZGQ0MDhkNDY5YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTExODQsNiArMTE4NCwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RWRpdGFibGUoYm9vbCk7CiAKKyAgICB2b2lk
IGluY3JlYXNlTGlzdExldmVsKCk7CisgICAgdm9pZCBkZWNyZWFzZUxpc3RMZXZlbCgpOworICAg
IHZvaWQgY2hhbmdlTGlzdFR5cGUoKTsKKwogICAgIHZvaWQgc2V0TmVlZHNGb250QXR0cmlidXRl
cyhib29sKTsKIAogICAgIHZvaWQgbW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgppbmRleCBmZDQzMGQ2OWFlMjU0NWIyMDlmMjI2N2E3ZWFlNTZkYjI1ZDkwZmU0Li5hYzYz
OTlmYTY2MTVjMTBiOTY4NWIzZWM0M2ZiOWEyYTFjNDViNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTIxMSw2
ICsyMTEsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVmFs
aWRhdGVDb21tYW5kKFN0cmluZyBuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBFeGVjdXRlRWRpdENvbW1hbmQoU3RyaW5nIG5hbWUsIFN0cmluZyBhcmd1bWVudCkKIAor
ICAgIEluY3JlYXNlTGlzdExldmVsKCkKKyAgICBEZWNyZWFzZUxpc3RMZXZlbCgpCisgICAgQ2hh
bmdlTGlzdFR5cGUoKQorCiAgICAgU2V0TmVlZHNGb250QXR0cmlidXRlcyhib29sIG5lZWRzRm9u
dEF0dHJpYnV0ZXMpCiAKICAgICBSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0
KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdlNDc3OTIzNjI5NDg1YjU4ZjJlZDc3MmJmMWMx
NWRjMWU0M2FkMzguLmVlZWM0ZWEwNGE2MTRmZDVmMGU2MmM2NWU0NDIyN2FjM2Q5NGIwYjkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNiAr
MSwyNSBAQAorMjAxOC0xMS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ29jb2FdIEludHJvZHVjZSBXS1dlYlZpZXcgU1BJIHRvIGluc2VydCBu
ZXN0ZWQgb3JkZXJlZCBhbmQgdW5vcmRlcmVkIGxpc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0MTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ1ODk4NjEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1vdmUgV0tXZWJWaWV3RWRpdEFjdGlvbnMgZnJvbSBpT1MgdG8gV2ViS2l0Q29jb2EsIGFu
ZCBlbmFibGUgc29tZSBvZiB0aGUgV0tXZWJWaWV3RWRpdEFjdGlvbnMgQVBJIHRlc3RzIG9uCisg
ICAgICAgIG1hY09TLiBBZGRpdGlvbmFsbHksIGFkZCBuZXcgQVBJIHRlc3RzIHRvIHZlcmlmeSB0
aGF0IGAtX3Bhc3RlQXNRdW90YXRpb246YCBhbmQgYC1faW5zZXJ0TmVzdGVkKFVuKU9yZGVyZWRM
aXN0OmAKKyAgICAgICAgYXJlIGhvb2tlZCB1cCB0byB0aGVpciByZXNwZWN0aXZlIGVkaXRpbmcg
Y29tbWFuZHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0uCisgICAgICAgICgtW1Rl
c3RXS1dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpdKToKKyAgICAgICAgKC1bVGVzdFdLV2Vi
VmlldyBpbnNlcnRTdHJpbmc6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3Rm9y
RWRpdEFjdGlvblRlc3RpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIw
MTgtMTEtMDggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAot
b25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93
IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRkaXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2ZWVmNzM1NWRhNmQxZjljZDA1Y2VhZTgzYTA0NTc4ZDY5MTdiMGQ4Li5kNWE4Y2Fh
OGYzNmRkZjNiZmM5NzllNDBmNjI0YmIwNzlmOTYwZmFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODQ2LDYgKzg0Niw3IEBACiAJCUY0NkEwOTVBMUVEOEE2RTYwMEQ0QUE1NSAvKiBhcHBs
ZS5naWYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8qIGFwcGxlLmdpZiAqLzsgfTsKIAkJRjQ2QTA5
NUIxRUQ4QTZFNjAwRDRBQTU1IC8qIGdpZi1hbmQtZmlsZS1pbnB1dC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0N0QzMEVEMUVEMjhB
NkMwMDA0ODJFMSAvKiBnaWYtYW5kLWZpbGUtaW5wdXQuaHRtbCAqLzsgfTsKIAkJRjQ3NzI4OTkx
RTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDc3Mjg5ODFF
NEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sICovOyB9Owor
CQlGNDgxMUU1OTIxOTQwQkRFMDBBNUUwRkQgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgxMUU1ODIxOTQw
QjQ0MDBBNUUwRkQgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gKi87IH07CiAJCUY0ODU2Q0Ez
MUU2NDlFQTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDg1NkNBMjFFNjQ5OEE4
MDA5RDdFRTcgLyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgKi87IH07CiAJCUY0ODZCMUQwMUY2
Nzk1MjMwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4NkIxQ0YxRjY3
OTRGRjAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCAqLzsgfTsKIAkJ
RjRBMzJFQzQxRjA1RjM4NTAwNDdDNTQ0IC8qIGRyYWdzdGFydC1jaGFuZ2Utc2VsZWN0aW9uLW9m
ZnNjcmVlbi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0QTMyRUMzMUYwNUYzNzgwMDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNl
bGVjdGlvbi1vZmZzY3JlZW4uaHRtbCAqLzsgfTsKQEAgLTg3OCw3ICs4NzksNiBAQAogCQlGNEY1
QkI1MjIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25zLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGNUJCNTEyMTY2N0JBQTAwMkQwNkI5
IC8qIFRlc3RGb250T3B0aW9ucy5tbSAqLzsgfTsKIAkJRjRGQTkxODExRTYxODQ5QjAwN0I4QzFE
IC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RkE5MTdGMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZp
ZXdNYWNFZGl0aW5nVGVzdHMubW0gKi87IH07CiAJCUY0RkE5MTgzMUU2MTg1N0IwMDdCOEMxRCAv
KiBkb3VibGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQTkxODIx
RTYxODU2NjAwN0I4QzFEIC8qIGRvdWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmct
c3BhY2UuaHRtbCAqLzsgfTsKLQkJRjRGQjY4MjUyMTY0M0VGQzAwMzQ2MDdBIC8qIFdLV2ViVmll
d0VkaXRBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjRGQjY4MjQyMTY0M0VGQzAwMzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1t
ICovOyB9OwogCQlGNEZDMDc3NzIwRjAxM0I2MDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1t
aWxlc3RvbmUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1t
aWxlc3RvbmUuaHRtbCAqLzsgfTsKIAkJRjY2MEFBMTExNUE1RjYzMTAwM0ExMjQzIC8qIEdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjYwQUEwRjE1QTVG
NjI0MDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2Fs
bGJhY2tfQnVuZGxlLmNwcCAqLzsgfTsKIAkJRjY2MEFBMTUxNUE2MUFCRjAwM0ExMjQzIC8qIElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY2MEFBMTQx
NUE2MUFCRjAwM0ExMjQzIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNh
bGxiYWNrV2luc19CdW5kbGUuY3BwICovOyB9OwpAQCAtMjEzMSw2ICsyMTMxLDcgQEAKIAkJRjQ3
NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDdEMzBFQjFFRDI4NjE5MDAwNDgy
RTEgLyogYXBwbGUuZ2lmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gaW1hZ2UuZ2lmOyBwYXRoID0gYXBwbGUuZ2lmOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDdEMzBFRDFFRDI4QTZDMDAwNDgyRTEgLyogZ2lmLWFuZC1maWxlLWlucHV0
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAiZ2lmLWFuZC1maWxlLWlucHV0Lmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNDgxMUU1ODIxOTQwQjQ0MDBBNUUwRkQgLyogV0tXZWJWaWV3RWRp
dEFjdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dl
YlZpZXdFZGl0QWN0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4NTZD
QTIxRTY0OThBODAwOUQ3RUU3IC8qIGF0dGFjaG1lbnQtZWxlbWVudC5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gImF0dGFjaG1lbnQtZWxlbWVudC5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4NkIxQ0YxRjY3OTRGRjAwRjM0QkREIC8qIERhdGFUcmFuc2Zl
ci1zZXREcmFnSW1hZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJEYXRhVHJh
bnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDkzMjQ3QzFGNDRERjhEMDA2RjQzMzYgLyogVUlLaXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlL
aXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNjYsNyArMjE2Nyw2IEBA
CiAJCUY0RjVCQjUxMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9udE9wdGlvbnMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBUZXN0Rm9udE9wdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0RkE5MTdGMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5n
VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZp
ZXdNYWNFZGl0aW5nVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RkE5
MTgyMUU2MTg1NjYwMDdCOEMxRCAvKiBkb3VibGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWls
aW5nLXNwYWNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IG5hbWUgPSAiZG91YmxlLWNsaWNr
LWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sIjsgcGF0aCA9ICJUZXN0cy9XZWJL
aXRDb2NvYS9kb3VibGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwi
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCUY0RkI2ODI0MjE2NDNFRkMwMDM0NjA3
QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vi
Vmlld0VkaXRBY3Rpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZDMDc3
NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjY2MEFBMEMxNUE1RjA2MTAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVu
ZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjY2MEFBMEYxNUE1
RjYyNDAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNh
bGxiYWNrX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
ZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUxNCw2ICsyNTE0LDcgQEAKIAkJCQk3
QzQxN0YzMTFEMTlFMTQ4MDBCOEVGNTMgLyogV0tXZWJWaWV3RGVmYXVsdE5hdmlnYXRpb25EZWxl
Z2F0ZS5tbSAqLywKIAkJCQk0NkU2NkE4RjFGMEQ3NTU5MDAyNkQ4M0MgLyogV0tXZWJWaWV3RGlh
Z25vc3RpY0xvZ2dpbmcubW0gKi8sCiAJCQkJMkRCNjQ3ODcxRjQxNjFGNzAwNTFBODlFIC8qIFdL
V2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbSAqLywKKwkJCQlGNDgxMUU1
ODIxOTQwQjQ0MDBBNUUwRkQgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gKi8sCiAJCQkJMEYz
Qjk0QTUxQTc3MjY2QzAwREUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSAq
LywKIAkJCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJWaWV3R2V0Q29udGVudHMu
bW0gKi8sCiAJCQkJMzdBOURCRTcyMTNCNEM5MzAwRDI2MUEyIC8qIFdLV2ViVmlld1NlcnZlclRy
dXN0S1ZDLm1tICovLApAQCAtMjYzMiw3ICsyNjMzLDYgQEAKIAkJCQlGNDY4NDlCRDFFRUY1OEU0
MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVzdHMubW0gKi8sCiAJCQkJRjQzRTNCQkUyMERBREEx
RTAwQTRFN0VEIC8qIFdLU2Nyb2xsVmlld1Rlc3RzLm1tICovLAogCQkJCTUxNDk1OEJEMUY3NDI3
QUMwMEU4N0JBRCAvKiBXS1dlYlZpZXdBdXRvZmlsbFRlc3RzLm1tICovLAotCQkJCUY0RkI2ODI0
MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQxNzUsNyArNDE3
NSw3IEBACiAJCQkJN0M0MTdGMzMxRDE5RTE0ODAwQjhFRjUzIC8qIFdLV2ViVmlld0RlZmF1bHRO
YXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NkU2NkE5MDFGMEQ3NTU5
MDAyNkQ4M0MgLyogV0tXZWJWaWV3RGlhZ25vc3RpY0xvZ2dpbmcubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyREI2NDc4ODFGNDE2M0Q2MDA1MUE4OUUgLyogV0tXZWJWaWV3RG9lc05vdExvZ0R1cmlu
Z0luaXRpYWxpemF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJRjRGQjY4MjUyMTY0M0VGQzAw
MzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ4
MTFFNTkyMTk0MEJERTAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYzQjk0QTcxQTc3MjY3NDAwREUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRl
SmF2YVNjcmlwdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUQzNEUwODc2MUU0RTQyRTEwMDVGRjE0
QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RkE5MTgx
MUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNzdhMzA4YzQxNjMw
NDZkNmY4MTQ3MjU3MmUyNDk0NGIzZGUwM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tCkBAIC0w
LDAgKzEsMjQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCA8VUlL
aXQvVUlGb250RGVzY3JpcHRvci5oPgorI2VuZGlmCisKK0BpbnRlcmZhY2UgVGVzdFdLV2ViVmll
dyAoRWRpdEFjdGlvblRlc3RpbmcpCistIChCT09MKXF1ZXJ5U2VsZWN0b3JFeGlzdHM6KE5TU3Ry
aW5nICopcXVlcnlTZWxlY3RvcjsKKy0gKHZvaWQpaW5zZXJ0U3RyaW5nOihOU1N0cmluZyAqKXN0
cmluZzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEVkaXRBY3Rpb25U
ZXN0aW5nKQorCistIChCT09MKXF1ZXJ5U2VsZWN0b3JFeGlzdHM6KE5TU3RyaW5nICopcXVlcnlT
ZWxlY3RvcgoreworICAgIHJldHVybiBbW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiEhZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihg
JUBgKSIsIHF1ZXJ5U2VsZWN0b3JdXSBib29sVmFsdWVdOworfQorCistICh2b2lkKWluc2VydFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IFtbc2VsZiB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpzdHJpbmddOworI2Vsc2UK
KyAgICBbc2VsZiBpbnNlcnRUZXh0OnN0cmluZ107CisjZW5kaWYKK30KKworQGVuZAorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
d2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
IjxkaXY+V2ViS2l0PC9kaXY+Il07CisgICAgW3dlYlZpZXcgX3NldEVkaXRhYmxlOllFU107Cisg
ICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigp
LnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHksIDEpIl07CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9
CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIE5lc3RlZExpc3RJbnNlcnRpb24pCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisKKyAgICBb
d2ViVmlldyBfaW5zZXJ0TmVzdGVkT3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wiXSk7CisgICAgRVhQRUNUX1RSVUUoW3dl
YlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9sID4gbGkiXSk7CisKKyAgICBbd2ViVmlldyBf
aW5zZXJ0TmVzdGVkT3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBx
dWVyeVNlbGVjdG9yRXhpc3RzOkAib2wgPiBvbCJdKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmll
dyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wgPiBvbCA+IGxpIl0pOworCisgICAgW3dlYlZpZXcg
X2luc2VydE5lc3RlZFVub3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmll
dyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wgPiBvbCA+IHVsIl0pOworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJvbCA+IG9sID4gdWwgPiBsaSJdKTsKKwor
ICAgIFt3ZWJWaWV3IF9pbnNlcnROZXN0ZWRVbm9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9sID4gb2wgPiB1bCA+IHVsIl0p
OworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJvbCA+IG9s
ID4gdWwgPiB1bCA+IGxpIl0pOworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBMaXN0
SW5zZXJ0aW9uKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVz
dGluZygpOworCisgICAgW3dlYlZpZXcgX2luc2VydE9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQ
RUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9sIl0pOworICAgIFt3ZWJW
aWV3IF9pbnNlcnRPcmRlcmVkTGlzdDpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBx
dWVyeVNlbGVjdG9yRXhpc3RzOkAib2wiXSk7CisKKyAgICBbd2ViVmlldyBfaW5zZXJ0VW5vcmRl
cmVkTGlzdDpuaWxdOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlz
dHM6QCJ1bCJdKTsKKyAgICBbd2ViVmlldyBfaW5zZXJ0VW5vcmRlcmVkTGlzdDpuaWxdOworICAg
IEVYUEVDVF9GQUxTRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAidWwiXSk7Cit9CisK
K1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIENoYW5nZUluZGVudGF0aW9uKQoreworICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworCisgICAgW3dlYlZp
ZXcgX2luZGVudDpuaWxdOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JF
eGlzdHM6QCJibG9ja3F1b3RlIl0pOworICAgIFt3ZWJWaWV3IF9pbmRlbnQ6bmlsXTsKKyAgICBF
WFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSA+IGJs
b2NrcXVvdGUiXSk7CisKKyAgICBbd2ViVmlldyBfb3V0ZGVudDpuaWxdOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJibG9ja3F1b3RlIl0pOworICAgIFt3
ZWJWaWV3IF9vdXRkZW50Om5pbF07CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHF1ZXJ5U2Vs
ZWN0b3JFeGlzdHM6QCJibG9ja3F1b3RlIl0pOworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rp
b25zLCBTZXRBbGlnbm1lbnQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRB
Y3Rpb25UZXN0aW5nKCk7CisgICAgYXV0byBydW5UZXN0ID0gW3dlYlZpZXddIHsKKyAgICAgICAg
W3dlYlZpZXcgX2FsaWduQ2VudGVyOm5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiY2Vu
dGVyIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LWFsaWdu
Il0pOworICAgICAgICBbd2ViVmlldyBfYWxpZ25MZWZ0Om5pbF07CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgibGVmdCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAi
dGV4dC1hbGlnbiJdKTsKKyAgICAgICAgW3dlYlZpZXcgX2FsaWduUmlnaHQ6bmlsXTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKCJyaWdodCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVj
dGlvblN0YXJ0OkAidGV4dC1hbGlnbiJdKTsKKyAgICAgICAgW3dlYlZpZXcgX2FsaWduSnVzdGlm
aWVkOm5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgianVzdGlmeSIsIFt3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1hbGlnbiJdKTsKKyAgICB9OworCisg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5kaXIgPSAncnRs
JyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBydW5UZXN0KCk7CisKKyAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmRpciA9ICdsdHInIiBjb21wbGV0
aW9uSGFuZGxlcjpuaWxdOworICAgIHJ1blRlc3QoKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0
QWN0aW9ucywgVG9nZ2xlU3RyaWtlVGhyb3VnaCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJW
aWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKyAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsK
KyAgICBbd2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIEVYUEVDVF9XS19T
VFJFUSgibGluZS10aHJvdWdoIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3Rh
cnQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgibGluZS10aHJvdWdoIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
RW5kOkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsKKworICAgIFt3ZWJW
aWV3IF90b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub25l
IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCItd2Via2l0LXRleHQt
ZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgibm9uZSIsIFt3
ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0
aW9ucy1pbi1lZmZlY3QiXSk7CisKKyAgICBbd2ViVmlldyBjb2xsYXBzZVRvRW5kXTsKKyAgICBb
d2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIFt3ZWJWaWV3IGluc2VydFN0
cmluZzpAIkhlbGxvIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0
aW9ucy1pbi1lZmZlY3QiXSk7CisKKyAgICBbd2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3VnaDpu
aWxdOworICAgIFt3ZWJWaWV3IGluc2VydFN0cmluZzpAIkhlbGxvIl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJub25lIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCIt
d2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOworfQorCitURVNUKFdLV2ViVmll
d0VkaXRBY3Rpb25zLCBQYXN0ZUFzUXVvdGF0aW9uKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdl
YlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxd
OworICAgIFt3ZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6QCJjdXQiIGFyZ3VtZW50Om5pbCBj
b21wbGV0aW9uOm5pbF07CisgICAgW3dlYlZpZXcgX3Bhc3RlQXNRdW90YXRpb246bmlsXTsKKyAg
ICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJd
KTsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK1RFU1QoV0tXZWJWaWV3RWRpdEFj
dGlvbnMsIENoYW5nZUZvbnRTaXplKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JF
ZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworICAgIEVY
UEVDVF9FUSgxNiwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9u
dC1zaXplIl0gZmxvYXRWYWx1ZV0pOworCisgICAgW3dlYlZpZXcgaW5jcmVhc2VTaXplOm5pbF07
CisgICAgRVhQRUNUX0VRKDE3LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3Rh
cnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisgICAgW3dlYlZpZXcgaW5jcmVhc2VTaXpl
Om5pbF07CisgICAgRVhQRUNUX0VRKDE4LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0
aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisKKyAgICBbd2ViVmlldyBkZWNy
ZWFzZVNpemU6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMTcsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5
QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKKyAgICBbd2ViVmll
dyBkZWNyZWFzZVNpemU6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMTYsIFtbd2ViVmlldyBzdHlsZVBy
b3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKKworICAg
IFt3ZWJWaWV3IF9zZXRGb250U2l6ZToyMCBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMjAs
IFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZs
b2F0VmFsdWVdKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgU2V0VGV4dENvbG9y
KQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwor
ICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworCisgICAgW3dlYlZpZXcgX3NldFRleHRDb2xv
cjpbVUlDb2xvciBjb2xvcldpdGhSZWQ6MSBncmVlbjowIGJsdWU6MCBhbHBoYToxXSBzZW5kZXI6
bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYigyNTUsIDAsIDApIiwgW3dlYlZpZXcgc3R5
bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJjb2xvciJdKTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiZm9udCJdKTsKKworICAgIFt3ZWJWaWV3IF9z
ZXRUZXh0Q29sb3I6W1VJQ29sb3IgY29sb3JXaXRoUmVkOjAgZ3JlZW46MSBibHVlOjAgYWxwaGE6
MC4yXSBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYmEoMCwgMjU1LCAwLCAw
LjIpIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJjb2xvciJdKTsK
KyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7
Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIFNldEZvbnRGYW1pbHkpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisgICAgW3dlYlZp
ZXcgc2VsZWN0QWxsOm5pbF07CisKKyAgICBVSUZvbnREZXNjcmlwdG9yICpmb250RGVzY3JpcHRv
ciA9IFtVSUZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOkB7
IFVJRm9udERlc2NyaXB0b3JGYW1pbHlBdHRyaWJ1dGU6IEAiSGVsdmV0aWNhIiB9XTsKKyAgICBb
d2ViVmlldyBfc2V0Rm9udDpbVUlGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRv
ciBzaXplOjI0XSBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbHZldGljYSIs
IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCIyNHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub3JtYWwi
LCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0Il0p
OworICAgIEVYUEVDVF9XS19TVFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6QCJmb250LXN0eWxlIl0pOworCisgICAgW3dlYlZpZXcgX3NldEZvbnQ6
W1VJRm9udCBmb250V2l0aE5hbWU6QCJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIiBzaXplOjEyXSBz
ZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlwiVGltZXMgTmV3IFJvbWFuXCIiLCBb
d2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtZmFtaWx5Il0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiMTJweCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVj
dGlvblN0YXJ0OkAiZm9udC1zaXplIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiYm9sZCIsIFt3
ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJub3JtYWwiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxl
Y3Rpb25TdGFydDpAImZvbnQtc3R5bGUiXSk7CisKKyAgICBmb250RGVzY3JpcHRvciA9IFtmb250
RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhTeW1ib2xpY1RyYWl0czpVSUZvbnREZXNjcmlw
dG9yVHJhaXRJdGFsaWMgfCBVSUZvbnREZXNjcmlwdG9yVHJhaXRCb2xkXTsKKyAgICBbd2ViVmll
dyBfc2V0Rm9udDpbVUlGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXpl
OjIwXSBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbHZldGljYSIsIFt3ZWJW
aWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCIyMHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJmb250LXNpemUiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJib2xkIiwgW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXdlaWdodCJdKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoIml0YWxpYyIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlv
blN0YXJ0OkAiZm9udC1zdHlsZSJdKTsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFdLX0FQSV9F
TkFCTEVECmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZp
ZXdFZGl0QWN0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmll
d0VkaXRBY3Rpb25zLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjE5OTQ3ZDZm
Mjg1MjIxMTgyOTllNjY4YjBkYTc3NzZmOGQwNjE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2Vi
Vmlld0VkaXRBY3Rpb25zLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IFdLX0FQSV9FTkFCTEVECi0KLSNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCi0jaW1wb3J0ICJVSUtpdFNQSS5oIgotI2ltcG9ydCA8VUlLaXQv
VUlGb250RGVzY3JpcHRvci5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4K
LQotQGludGVyZmFjZSBUZXN0V0tXZWJWaWV3IChFZGl0QWN0aW9uVGVzdGluZykKLS0gKEJPT0wp
cXVlcnlTZWxlY3RvckV4aXN0czooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yOwotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoRWRpdEFjdGlvblRlc3RpbmcpCi0KLS0gKEJP
T0wpcXVlcnlTZWxlY3RvckV4aXN0czooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yCi17Ci0gICAg
cmV0dXJuIFtbc2VsZiBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiISFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAlQGApIiwgcXVlcnlTZWxl
Y3Rvcl1dIGJvb2xWYWx1ZV07Ci19Ci0KLUBlbmQKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewotCi1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JFZGl0QWN0aW9u
VGVzdGluZygpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKLSAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2PldlYktpdDwvZGl2PiJd
OwotICAgIFt3ZWJWaWV3IF9zZXRFZGl0YWJsZTpZRVNdOwotICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVu
dC5ib2R5LCAxKSJdOwotICAgIHJldHVybiB3ZWJWaWV3OwotfQotCi1URVNUKFdLV2ViVmlld0Vk
aXRBY3Rpb25zLCBMaXN0SW5zZXJ0aW9uKQotewotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdG
b3JFZGl0QWN0aW9uVGVzdGluZygpOwotCi0gICAgW3dlYlZpZXcgaW5zZXJ0T3JkZXJlZExpc3Q6
bmlsXTsKLSAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wi
XSk7Ci0gICAgW3dlYlZpZXcgaW5zZXJ0T3JkZXJlZExpc3Q6bmlsXTsKLSAgICBFWFBFQ1RfRkFM
U0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9sIl0pOwotCi0gICAgW3dlYlZpZXcg
aW5zZXJ0VW5vcmRlcmVkTGlzdDpuaWxdOwotICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5
U2VsZWN0b3JFeGlzdHM6QCJ1bCJdKTsKLSAgICBbd2ViVmlldyBpbnNlcnRVbm9yZGVyZWRMaXN0
Om5pbF07Ci0gICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJ1
bCJdKTsKLX0KLQotVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgQ2hhbmdlSW5kZW50YXRpb24p
Ci17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7Ci0K
LSAgICBbd2ViVmlldyBpbmRlbnQ6bmlsXTsKLSAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVy
eVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKLSAgICBbd2ViVmlldyBpbmRlbnQ6bmls
XTsKLSAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2tx
dW90ZSA+IGJsb2NrcXVvdGUiXSk7Ci0KLSAgICBbd2ViVmlldyBvdXRkZW50Om5pbF07Ci0gICAg
RVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImJsb2NrcXVvdGUiXSk7
Ci0gICAgW3dlYlZpZXcgb3V0ZGVudDpuaWxdOwotICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBx
dWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKLX0KLQotVEVTVChXS1dlYlZpZXdF
ZGl0QWN0aW9ucywgU2V0QWxpZ25tZW50KQotewotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdG
b3JFZGl0QWN0aW9uVGVzdGluZygpOwotICAgIGF1dG8gcnVuVGVzdCA9IFt3ZWJWaWV3XSB7Ci0g
ICAgICAgIFt3ZWJWaWV3IGFsaWduQ2VudGVyOm5pbF07Ci0gICAgICAgIEVYUEVDVF9XS19TVFJF
USgiY2VudGVyIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0
LWFsaWduIl0pOwotICAgICAgICBbd2ViVmlldyBhbGlnbkxlZnQ6bmlsXTsKLSAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKCJsZWZ0IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3Rh
cnQ6QCJ0ZXh0LWFsaWduIl0pOwotICAgICAgICBbd2ViVmlldyBhbGlnblJpZ2h0Om5pbF07Ci0g
ICAgICAgIEVYUEVDVF9XS19TVFJFUSgicmlnaHQiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRT
ZWxlY3Rpb25TdGFydDpAInRleHQtYWxpZ24iXSk7Ci0gICAgICAgIFt3ZWJWaWV3IGFsaWduSnVz
dGlmaWVkOm5pbF07Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgianVzdGlmeSIsIFt3ZWJWaWV3
IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1hbGlnbiJdKTsKLSAgICB9Owot
Ci0gICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5kaXIgPSAn
cnRsJyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKLSAgICBydW5UZXN0KCk7Ci0KLSAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmRpciA9ICdsdHInIiBjb21w
bGV0aW9uSGFuZGxlcjpuaWxdOwotICAgIHJ1blRlc3QoKTsKLX0KLQotVEVTVChXS1dlYlZpZXdF
ZGl0QWN0aW9ucywgVG9nZ2xlU3RyaWtlVGhyb3VnaCkKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3
ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKLSAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmls
XTsKLSAgICBbd2ViVmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07Ci0gICAgRVhQRUNUX1dL
X1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7Ci0gICAgRVhQRUNU
X1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25FbmQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOwotCi0gICAgW3dl
YlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOwotICAgIEVYUEVDVF9XS19TVFJFUSgibm9u
ZSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiLXdlYmtpdC10ZXh0
LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCBb
d2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6QCItd2Via2l0LXRleHQtZGVjb3Jh
dGlvbnMtaW4tZWZmZWN0Il0pOwotCi0gICAgW3dlYlZpZXcgY29sbGFwc2VUb0VuZF07Ci0gICAg
W3dlYlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOwotICAgIFtbd2ViVmlldyB0ZXh0SW5w
dXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAIkhlbGxvIl07Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpA
Ii13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7Ci0KLSAgICBbd2ViVmlldyB0
b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07Ci0gICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRW
aWV3XSBpbnNlcnRUZXh0OkAiSGVsbG8iXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCBb
d2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNv
cmF0aW9ucy1pbi1lZmZlY3QiXSk7Ci19Ci0KLVRFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIENo
YW5nZUZvbnRTaXplKQotewotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9u
VGVzdGluZygpOwotICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOwotICAgIEVYUEVDVF9FUSgx
NiwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0g
ZmxvYXRWYWx1ZV0pOwotCi0gICAgW3dlYlZpZXcgaW5jcmVhc2VTaXplOm5pbF07Ci0gICAgRVhQ
RUNUX0VRKDE3LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250
LXNpemUiXSBmbG9hdFZhbHVlXSk7Ci0gICAgW3dlYlZpZXcgaW5jcmVhc2VTaXplOm5pbF07Ci0g
ICAgRVhQRUNUX0VRKDE4LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6
QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7Ci0KLSAgICBbd2ViVmlldyBkZWNyZWFzZVNpemU6
bmlsXTsKLSAgICBFWFBFQ1RfRVEoMTcsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKLSAgICBbd2ViVmlldyBkZWNyZWFz
ZVNpemU6bmlsXTsKLSAgICBFWFBFQ1RfRVEoMTYsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRT
ZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKLQotICAgIFt3ZWJWaWV3
IHNldEZvbnRTaXplOjIwIHNlbmRlcjpuaWxdOwotICAgIEVYUEVDVF9FUSgyMCwgW1t3ZWJWaWV3
IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0gZmxvYXRWYWx1ZV0p
OwotfQotCi1URVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBTZXRUZXh0Q29sb3IpCi17Ci0gICAg
YXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7Ci0gICAgW3dlYlZp
ZXcgc2VsZWN0QWxsOm5pbF07Ci0KLSAgICBbd2ViVmlldyBzZXRUZXh0Q29sb3I6W1VJQ29sb3Ig
Y29sb3JXaXRoUmVkOjEgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0gc2VuZGVyOm5pbF07Ci0gICAg
RVhQRUNUX1dLX1NUUkVRKCJyZ2IoMjU1LCAwLCAwKSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlB
dFNlbGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7Ci0gICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVl
cnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7Ci0KLSAgICBbd2ViVmlldyBzZXRUZXh0Q29sb3I6
W1VJQ29sb3IgY29sb3JXaXRoUmVkOjAgZ3JlZW46MSBibHVlOjAgYWxwaGE6MC4yXSBzZW5kZXI6
bmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYmEoMCwgMjU1LCAwLCAwLjIpIiwgW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJjb2xvciJdKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7Ci19Ci0KLVRFU1Qo
V0tXZWJWaWV3RWRpdEFjdGlvbnMsIFNldEZvbnRGYW1pbHkpCi17Ci0gICAgYXV0byB3ZWJWaWV3
ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7Ci0gICAgW3dlYlZpZXcgc2VsZWN0QWxs
Om5pbF07Ci0KLSAgICBVSUZvbnREZXNjcmlwdG9yICpmb250RGVzY3JpcHRvciA9IFtVSUZvbnRE
ZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOkB7IFVJRm9udERlc2Ny
aXB0b3JGYW1pbHlBdHRyaWJ1dGU6IEAiSGVsdmV0aWNhIiB9XTsKLSAgICBbd2ViVmlldyBzZXRG
b250OltVSUZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmZvbnREZXNjcmlwdG9yIHNpemU6MjRdIHNl
bmRlcjpuaWxdOwotICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsdmV0aWNhIiwgW3dlYlZpZXcgc3R5
bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKLSAgICBFWFBFQ1Rf
V0tfU1RSRVEoIjI0cHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpA
ImZvbnQtc2l6ZSJdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vcm1hbCIsIFt3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNU
X1dLX1NUUkVRKCJub3JtYWwiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFy
dDpAImZvbnQtc3R5bGUiXSk7Ci0KLSAgICBbd2ViVmlldyBzZXRGb250OltVSUZvbnQgZm9udFdp
dGhOYW1lOkAiVGltZXNOZXdSb21hblBTLUJvbGRNVCIgc2l6ZToxMl0gc2VuZGVyOm5pbF07Ci0g
ICAgRVhQRUNUX1dLX1NUUkVRKCJcIlRpbWVzIE5ldyBSb21hblwiIiwgW3dlYlZpZXcgc3R5bGVQ
cm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKLSAgICBFWFBFQ1RfV0tf
U1RSRVEoIjEycHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZv
bnQtc2l6ZSJdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoImJvbGQiLCBbd2ViVmlldyBzdHlsZVBy
b3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0Il0pOwotICAgIEVYUEVDVF9XS19T
VFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJm
b250LXN0eWxlIl0pOwotCi0gICAgZm9udERlc2NyaXB0b3IgPSBbZm9udERlc2NyaXB0b3IgZm9u
dERlc2NyaXB0b3JXaXRoU3ltYm9saWNUcmFpdHM6VUlGb250RGVzY3JpcHRvclRyYWl0SXRhbGlj
IHwgVUlGb250RGVzY3JpcHRvclRyYWl0Qm9sZF07Ci0gICAgW3dlYlZpZXcgc2V0Rm9udDpbVUlG
b250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOjIwXSBzZW5kZXI6bmls
XTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbHZldGljYSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KCIyMHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNp
emUiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJib2xkIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0
eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXdlaWdodCJdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
Iml0YWxpYyIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1z
dHlsZSJdKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354308</attachid>
            <date>2018-11-08 20:44:08 -0800</date>
            <delta_ts>2018-11-09 11:32:16 -0800</delta_ts>
            <desc>Fix some typos.</desc>
            <filename>bug-191410-20181108204407.patch</filename>
            <type>text/plain</type>
            <size>54162</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkwNGYyNmU5MGM1M2ExZTA3
ZmY3ZWJkMWMwMWFmNWU5YzBkOWQ5N2MuLmVmMTgzMzI3MmU2ZjI4NTZhODE5MzgzMTk5NTBlN2Y2
NzU4YmNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMTgtMTEtMDggIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1
Y2UgV0tXZWJWaWV3IFNQSSB0byBpbnNlcnQgbmVzdGVkIG9yZGVyZWQgYW5kIHVub3JkZXJlZCBs
aXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkx
NDEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTg5ODYxMD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmVmaXhlcyBhIGZldyBpT1Mtb25seSBT
UEkgbWV0aG9kcyBkZWNsYXJlZCBvbiBXS1dlYlZpZXcgaW4gcjIzNjg2NyB3aXRoIHVuZGVyc2Nv
cmVzLCBhbmQgYWxzbyBleHBvc2VzIHNvbWUKKyAgICAgICAgbW9yZSBjcm9zcy1wbGF0Zm9ybSBD
b2NvYSBlZGl0aW5nIFNQSS4gT25jZSB0aGUgdW5wcmVmaXhlZCBTUEkgbWV0aG9kcyBhcmUgbm8g
bG9uZ2VyIHVzZWQgYnkgaW50ZXJuYWwgY2xpZW50cywKKyAgICAgICAgdGhlc2Ugd2lsbCBuZWVk
IHRvIGJlIHJlbW92ZWQgKHNlZSBmb2xsb3d1cCBidWc6IHdlYmtpdC5vcmcvYi8xOTE0NTApLiBT
ZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBhbmQg
ZXhpc3RpbmcgQVBJIHRlc3RzIGluIFdLV2ViVmlld0VkaXRBY3Rpb25zLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisKKyAgICAgICAgSG9pc3QgdGhlIGRl
ZmluaXRpb24gKGFuZCB1bmRlZmluaXRpb24pIG9mIGBGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRF
TlRWSUVXYCB0byBlbmNvbXBhc3MgYm90aCB0aGUgV0tXZWJWaWV3CisgICAgICAgIGltcGxlbWVu
dGF0aW9uIGFuZCB0aGUgV0tXZWJWaWV3IChXS1ByaXZhdGUpIGltcGxlbWVudGF0aW9uLiBUaGlz
IGFsbG93cyB1cyB0byB1c2UgdGhpcyBtYWNybyB3aGVuIGltcGxlbWVudGluZworICAgICAgICBT
UEkgbWV0aG9kcyBpbiB0aGUgV0tQcml2YXRlIGNhdGVnb3J5LCBhcyB3ZWxsIGFzIG1ldGhvZHMg
dGhhdCBhcmUgcGFydCBvZiB0aGUgbWFpbiBXS1dlYlZpZXcgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IGNhblBlcmZvcm1BY3Rpb246d2l0aFNlbmRlcjpdKToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IHRhcmdldEZvckFjdGlvbjp3aXRoU2VuZGVyOl0pOgorCisgICAgICAg
IEFkZCBmb3J3YXJkaW5nIGZvciB0aGUgbmV3IGVkaXRpbmcgY29tbWFuZHMgaW4gLWNhblBlcmZv
cm1BY3Rpb246IGFuZCAtdGFyZ2V0Rm9yQWN0aW9uOi4KKworICAgICAgICAoLVtXS1dlYlZpZXcg
X3RvZ2dsZVN0cmlrZVRocm91Z2g6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5jcmVhc2VM
aXN0TGV2ZWw6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZGVjcmVhc2VMaXN0TGV2ZWw6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfY2hhbmdlTGlzdFR5cGU6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2V0Rm9udDpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0Rm9u
dFNpemU6c2VuZGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFRleHRDb2xvcjpzZW5k
ZXI6XSk6CisKKyAgICAgICAgQWRkIGRlZmluaXRpb25zIGZvciB0aGUgbmV3IGVkaXRpbmcgbWV0
aG9kcyBvbiBXS1dlYlZpZXcsIHVzaW5nIG1hY3JvcyAoYFdFQkNPUkVfUFJJVkFURV9DT01NQU5E
YCBvbiBtYWNPUyBhbmQKKyAgICAgICAgYEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVdg
IG9uIGlPUykgdG8gaGVscCByZWR1Y2UgdGhlIGNvZGUgZHVwbGljYXRpb24uCisKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9wYXN0ZUFzUXVvdGF0aW9uOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJl
bW92ZSB0aGlzIG1ldGhvZCBkZWZpbml0aW9uLCB3aGljaCBpcyBub3cgcmVwbGFjZWQgYnkgbWFj
cm9zIG9uIGlPUyBhbmQgbWFjT1MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaDoKKworICAgICAgICBJbnRyb2R1Y2UgdGhlIG5ldyBTUEkgdG8gV0tX
ZWJWaWV3IChXS1ByaXZhdGUpLCBhbmQgYWRkIEZJWE1FcyB0byByZW1vdmUgb2xkLCB1bnByZWZp
eGVkIHZhcmlhbnRzIG9mIHRoZSBTUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZl
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjcmVhc2VMaXN0TGV2ZWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZUxpc3RUeXBlKToKKworICAgICAg
ICBBZGQgcGx1bWJpbmcgZm9yIHRoZXNlIGxpc3QgZWRpdGluZyBjb21tYW5kcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9pbmNyZWFz
ZUxpc3RMZXZlbEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RlY3Jl
YXNlTGlzdExldmVsRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY2hh
bmdlTGlzdFR5cGVGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90b2dn
bGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
c2V0Rm9udEZvcldlYlZpZXc6c2VuZGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9z
ZXRGb250U2l6ZUZvcldlYlZpZXc6c2VuZGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF9zZXRUZXh0Q29sb3JGb3JXZWJWaWV3OnNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBzZXRGb250Rm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0Rm9udFNpemVGb3JXZWJWaWV3OnNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBzZXRUZXh0Q29sb3JGb3JXZWJWaWV3OnNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorCisg
ICAgICAgIENoZWNrIGZvciB0aGUgbmV3IGFjdGlvbiBzZWxlY3RvcnMgaGVyZSwgYW5kIGFkZGl0
aW9uYWxseSBhZGQgdmFsaWRhdGlvbiBmb3IgYF9wYXN0ZUFzUXVvdGF0aW9uOmAuIExldCB0aGUK
KyAgICAgICAgdW5wcmVmaXhlZCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzIHNpbXBseSBjYWxs
IHRoZSBwcmVmaXhlZCB2ZXJzaW9ucyAodGhlc2UgbWV0aG9kIGltcGxlbWVudGF0aW9ucyB3aWxs
IGJlCisgICAgICAgIHJlbW92ZWQgaW4gYSBmb2xsb3d1cCBvbmNlIGRvaW5nIHNvIHdvdWxkIG5v
dCBhZmZlY3QgYW55IGNsaWVudHMgb2YgV2ViS2l0KS4KKworICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5jcmVhc2VMaXN0TGV2ZWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZWNyZWFzZUxpc3RMZXZlbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmNoYW5nZUxpc3RUeXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCisgICAgICAgIEFkZCBzdHVicyBmb3Igc2V2ZXJhbCBsaXN0IGVkaXRpbmcg
Y29tbWFuZHMgdGhhdCBhcmUgeWV0IHRvIGJlIGhvb2tlZCB1cCB0byBXZWJDb3JlLiBUaGVzZSB3
aWxsIGJlIGltcGxlbWVudGVkCisgICAgICAgIGluIGEgZnV0dXJlIHBhdGNoLgorCiAyMDE4LTEx
LTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGFuIFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwg
c3VwcG9ydGVkIGltYWdlIGZvcm1hdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDQ0OGY5MzI1MzdiYjZmMzVhOTcyYTRhZDc3MmQ4ODgw
NmM4NDlkOWUuLjdjZWRkOGEyNzU1MzNjODQ1NTQ5NWQwMWE2NjZkMjZkYTMzNTFjZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjU2
LDYgKzI1NiwxMyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVy
bGF5U3R5bGU+IHRvQ29yZVNjcm9sbGJhclN0eWxlKF9XS092ZQogfQogI2VuZGlmCiAKKyNkZWZp
bmUgRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVyhfYWN0aW9uKSBcCisgICAgLSAodm9p
ZClfYWN0aW9uOihpZClzZW5kZXIgXAorICAgIHsgXAorICAgICAgICBpZiAoc2VsZi51c2VzU3Rh
bmRhcmRDb250ZW50VmlldykgXAorICAgICAgICAgICAgW19jb250ZW50VmlldyBfYWN0aW9uICMj
IEZvcldlYlZpZXc6c2VuZGVyXTsgXAorICAgIH0KKwogQGltcGxlbWVudGF0aW9uIFdLV2ViVmll
dyB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6TmF2aWdhdGlvblN0YXRlPiBfbmF2aWdh
dGlvblN0YXRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlVJRGVsZWdhdGU+IF91aURl
bGVnYXRlOwpAQCAtMTM3OSwxNyArMTM4Niw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIHJldHVybiBbc3VwZXIgcmVzaWduRmlyc3RSZXNwb25kZXJdOwogfQogCi0j
ZGVmaW5lIEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcoX2FjdGlvbikgXAotICAgIC0g
KHZvaWQpX2FjdGlvbjooaWQpc2VuZGVyIFwKLSAgICB7IFwKLSAgICAgICAgaWYgKHNlbGYudXNl
c1N0YW5kYXJkQ29udGVudFZpZXcpIFwKLSAgICAgICAgICAgIFtfY29udGVudFZpZXcgX2FjdGlv
biAjIyBGb3JXZWJWaWV3OnNlbmRlcl07IFwKLSAgICB9Ci0KIEZPUl9FQUNIX1dLQ09OVEVOVFZJ
RVdfQUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcpCiAKLSN1bmRlZiBGT1JX
QVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVXCi0KIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbjoo
U0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIHsKICAgICAjZGVmaW5lIEZPUldBUkRf
Q0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKF9hY3Rpb24pIFwKQEAgLTEzOTcsMTQg
KzEzOTUsMTYgQEAgRk9SX0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05f
VE9fV0tDT05URU5UVklFVykKICAgICAgICAgICAgIHJldHVybiBzZWxmLnVzZXNTdGFuZGFyZENv
bnRlbnRWaWV3ICYmIFtfY29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6YWN0
aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsKIAogICAgIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdfQUNU
SU9OKEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKQotCi0gICAgRk9S
V0FSRF9DQU5QRVJGT1JNQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcoX3Bhc3RlQXNRdW90YXRpb24p
CisgICAgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0NBTlBF
UkZPUk1BQ1RJT05fVE9fV0tDT05URU5UVklFVykKKyAgICBGT1JXQVJEX0NBTlBFUkZPUk1BQ1RJ
T05fVE9fV0tDT05URU5UVklFVyhzZXRUZXh0Q29sb3I6c2VuZGVyKQorICAgIEZPUldBUkRfQ0FO
UEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKHNldEZvbnRTaXplOnNlbmRlcikKKyAgICBG
T1JXQVJEX0NBTlBFUkZPUk1BQ1RJT05fVE9fV0tDT05URU5UVklFVyhzZXRGb250OnNlbmRlcikK
KyAgICBGT1JXQVJEX0NBTlBFUkZPUk1BQ1RJT05fVE9fV0tDT05URU5UVklFVyhfc2V0VGV4dENv
bG9yOnNlbmRlcikKKyAgICBGT1JXQVJEX0NBTlBFUkZPUk1BQ1RJT05fVE9fV0tDT05URU5UVklF
Vyhfc2V0Rm9udFNpemU6c2VuZGVyKQorICAgIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19X
S0NPTlRFTlRWSUVXKF9zZXRGb250OnNlbmRlcikKIAogICAgICN1bmRlZiBGT1JXQVJEX0NBTlBF
UkZPUk1BQ1RJT05fVE9fV0tDT05URU5UVklFVwogCi0gICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0
b3Ioc2V0VGV4dENvbG9yOnNlbmRlcjopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2V0Rm9udFNp
emU6c2VuZGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihzZXRGb250OnNlbmRlcjopKQotICAg
ICAgICByZXR1cm4gc2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldyAmJiBbX2NvbnRlbnRWaWV3
IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OmFjdGlvbiB3aXRoU2VuZGVyOnNlbmRlcl07Ci0K
ICAgICByZXR1cm4gW3N1cGVyIGNhblBlcmZvcm1BY3Rpb246YWN0aW9uIHdpdGhTZW5kZXI6c2Vu
ZGVyXTsKIH0KIApAQCAtMTQxNSw4ICsxNDE1LDEzIEBAIEZPUl9FQUNIX1dLQ09OVEVOVFZJRVdf
QUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcpCiAgICAgICAgICAgICByZXR1
cm4gW19jb250ZW50VmlldyB0YXJnZXRGb3JBY3Rpb25Gb3JXZWJWaWV3OmFjdGlvbiB3aXRoU2Vu
ZGVyOnNlbmRlcl07CiAKICAgICBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJE
X1RBUkdFVEZPUkFDVElPTl9UT19XS0NPTlRFTlRWSUVXKQotCi0gICAgRk9SV0FSRF9UQVJHRVRG
T1JBQ1RJT05fVE9fV0tDT05URU5UVklFVyhfcGFzdGVBc1F1b3RhdGlvbikKKyAgICBGT1JfRUFD
SF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRfVEFSR0VURk9SQUNUSU9OX1RP
X1dLQ09OVEVOVFZJRVcpCisgICAgRk9SV0FSRF9UQVJHRVRGT1JBQ1RJT05fVE9fV0tDT05URU5U
VklFVyhzZXRUZXh0Q29sb3I6c2VuZGVyKQorICAgIEZPUldBUkRfVEFSR0VURk9SQUNUSU9OX1RP
X1dLQ09OVEVOVFZJRVcoc2V0Rm9udFNpemU6c2VuZGVyKQorICAgIEZPUldBUkRfVEFSR0VURk9S
QUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcoc2V0Rm9udDpzZW5kZXIpCisgICAgRk9SV0FSRF9UQVJH
RVRGT1JBQ1RJT05fVE9fV0tDT05URU5UVklFVyhfc2V0VGV4dENvbG9yOnNlbmRlcikKKyAgICBG
T1JXQVJEX1RBUkdFVEZPUkFDVElPTl9UT19XS0NPTlRFTlRWSUVXKF9zZXRGb250U2l6ZTpzZW5k
ZXIpCisgICAgRk9SV0FSRF9UQVJHRVRGT1JBQ1RJT05fVE9fV0tDT05URU5UVklFVyhfc2V0Rm9u
dDpzZW5kZXIpCiAKICAgICAjdW5kZWYgRk9SV0FSRF9UQVJHRVRGT1JBQ1RJT05fVE9fV0tDT05U
RU5UVklFVwogCkBAIC00MjgwLDYgKzQyODUsNzAgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogCiBA
aW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1ByaXZhdGUpCiAKKyNpZiBQTEFURk9STShNQUMp
CisKKyNkZWZpbmUgV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoY29tbWFuZCkgLSAodm9pZClfIyNj
b21tYW5kOihpZClzZW5kZXIgeyBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21tYW5kICMj
IF9zKTsgfQorCitXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChhbGlnbkNlbnRlcikKK1dFQkNPUkVf
UFJJVkFURV9DT01NQU5EKGFsaWduSnVzdGlmaWVkKQorV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQo
YWxpZ25MZWZ0KQorV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoYWxpZ25SaWdodCkKK1dFQkNPUkVf
UFJJVkFURV9DT01NQU5EKGluc2VydE9yZGVyZWRMaXN0KQorV0VCQ09SRV9QUklWQVRFX0NPTU1B
TkQoaW5zZXJ0VW5vcmRlcmVkTGlzdCkKK1dFQkNPUkVfUFJJVkFURV9DT01NQU5EKGluc2VydE5l
c3RlZE9yZGVyZWRMaXN0KQorV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoaW5zZXJ0TmVzdGVkVW5v
cmRlcmVkTGlzdCkKK1dFQkNPUkVfUFJJVkFURV9DT01NQU5EKGluZGVudCkKK1dFQkNPUkVfUFJJ
VkFURV9DT01NQU5EKG91dGRlbnQpCitXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChwYXN0ZUFzUXVv
dGF0aW9uKTsKKworI3VuZGVmIFdFQkNPUkVfUFJJVkFURV9DT01NQU5ECisKKy0gKHZvaWQpX3Rv
Z2dsZVN0cmlrZVRocm91Z2g6KGlkKXNlbmRlcgoreworICAgIF9wYWdlLT5leGVjdXRlRWRpdENv
bW1hbmQoInN0cmlrZXRocm91Z2giX3MpOworfQorCistICh2b2lkKV9pbmNyZWFzZUxpc3RMZXZl
bDooaWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmluY3JlYXNlTGlzdExldmVsKCk7Cit9CisKKy0g
KHZvaWQpX2RlY3JlYXNlTGlzdExldmVsOihpZClzZW5kZXIKK3sKKyAgICBfcGFnZS0+ZGVjcmVh
c2VMaXN0TGV2ZWwoKTsKK30KKworLSAodm9pZClfY2hhbmdlTGlzdFR5cGU6KGlkKXNlbmRlcgor
eworICAgIF9wYWdlLT5jaGFuZ2VMaXN0VHlwZSgpOworfQorCisjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworRk9SX0VBQ0hfUFJJVkFURV9XS0NP
TlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVXKQorCistICh2
b2lkKV9zZXRGb250OihVSUZvbnQgKilmb250IHNlbmRlcjooaWQpc2VuZGVyCit7CisgICAgaWYg
KHNlbGYudXNlc1N0YW5kYXJkQ29udGVudFZpZXcpCisgICAgICAgIFtfY29udGVudFZpZXcgc2V0
Rm9udEZvcldlYlZpZXc6Zm9udCBzZW5kZXI6c2VuZGVyXTsKK30KKworLSAodm9pZClfc2V0Rm9u
dFNpemU6KENHRmxvYXQpZm9udFNpemUgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBpZiAoc2Vs
Zi51c2VzU3RhbmRhcmRDb250ZW50VmlldykKKyAgICAgICAgW19jb250ZW50VmlldyBzZXRGb250
U2l6ZUZvcldlYlZpZXc6Zm9udFNpemUgc2VuZGVyOnNlbmRlcl07Cit9CisKKy0gKHZvaWQpX3Nl
dFRleHRDb2xvcjooVUlDb2xvciAqKWNvbG9yIHNlbmRlcjooaWQpc2VuZGVyCit7CisgICAgaWYg
KHNlbGYudXNlc1N0YW5kYXJkQ29udGVudFZpZXcpCisgICAgICAgIFtfY29udGVudFZpZXcgc2V0
VGV4dENvbG9yRm9yV2ViVmlldzpjb2xvciBzZW5kZXI6c2VuZGVyXTsKK30KKworI2VuZGlmIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCisKIC0gKEJPT0wpX2lzRWRpdGFibGUKIHsKICAgICByZXR1
cm4gX3BhZ2UtPmlzRWRpdGFibGUoKTsKQEAgLTQ2MjYsMTYgKzQ2OTUsNiBAQCBJR05PUkVfV0FS
TklOR1NfRU5ECiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLSAodm9pZClfcGFzdGVBc1F1b3RhdGlv
bjooaWQpc2VuZGVyCi17Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIF9pbXBsLT5leGVjdXRlRWRp
dENvbW1hbmRGb3JTZWxlY3RvcihfY21kKTsKLSNlbHNlCi0gICAgaWYgKHNlbGYudXNlc1N0YW5k
YXJkQ29udGVudFZpZXcpCi0gICAgICAgIFtfY29udGVudFZpZXcgX3Bhc3RlQXNRdW90YXRpb25G
b3JXZWJWaWV3OnNlbmRlcl07Ci0jZW5kaWYKLX0KLQogKyAoQk9PTClfaGFuZGxlc1NhZmVCcm93
c2luZwogewogICAgIHJldHVybiBERUZBVUxUX1NBRkVfQlJPV1NJTkdfRU5BQkxFRDsKQEAgLTYw
MTQsNiArNjA3Myw3IEBAIHN0YXRpYyBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uIHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVSVNlCiAKIEBlbmQKIAorI3VuZGVm
IEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcKIAogQGltcGxlbWVudGF0aW9uIFdLV2Vi
VmlldyAoV0tUZXN0aW5nKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBhNzE2OWU1NDc1OTJlZWQ0YTY3Mzc4OGNh
ZjM2Y2VhMDkzNTRkYTFmLi4yM2U2OGRhOWI1ZWY4YTNlZDE3MTMzZWQ5Nzc4YWY0ODNjMzliNjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKQEAgLTE4NiwxMSArMTg2LDMwIEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2ht
ZW50V2l0aEZpbGVXcmFwcGVyOihOU0ZpbGVXcmFwcGVyICopZmlsZVdyYXBwZXIgY29udGVudFR5
cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nl
c3MpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoX1dLQXR0YWNobWVudCAqKV9hdHRhY2htZW50Rm9ySWRl
bnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCi0tIChJQkFjdGlvbilfcGFzdGVBc1F1b3Rh
dGlvbjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwotCiArIChCT09MKV9oYW5kbGVzU2FmZUJyb3dzaW5nIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistIChJQkFjdGlv
bilfYWxpZ25DZW50ZXI6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKElCQWN0aW9uKV9hbGlnbkp1c3RpZmllZDooaWQp
c2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAoSUJBY3Rpb24pX2FsaWduTGVmdDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoSUJBY3Rpb24pX2FsaWdu
UmlnaHQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKy0gKElCQWN0aW9uKV9pbmRlbnQ6KGlkKXNlbmRlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKElCQWN0aW9u
KV9vdXRkZW50OihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQp
c2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAoSUJBY3Rpb24pX2luc2VydE9yZGVyZWRMaXN0OihpZClzZW5kZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlv
bilfaW5zZXJ0VW5vcmRlcmVkTGlzdDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoSUJBY3Rpb24pX2luc2VydE5lc3Rl
ZE9yZGVyZWRMaXN0OihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfaW5zZXJ0TmVzdGVkVW5vcmRlcmVk
TGlzdDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAoSUJBY3Rpb24pX2luY3JlYXNlTGlzdExldmVsOihpZClzZW5kZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
IChJQkFjdGlvbilfZGVjcmVhc2VMaXN0TGV2ZWw6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKElCQWN0aW9uKV9jaGFu
Z2VMaXN0VHlwZTooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworLSAoSUJBY3Rpb24pX3Bhc3RlQXNRdW90YXRpb246KGlkKXNl
bmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKwogI2lmIFRBUkdFVF9PU19JUEhPTkUKKworLSAodm9pZClfc2V0Rm9udDooVUlGb250ICop
Zm9udCBzZW5kZXI6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7
CistICh2b2lkKV9zZXRGb250U2l6ZTooQ0dGbG9hdClmb250U2l6ZSBzZW5kZXI6KGlkKXNlbmRl
ciBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zZXRUZXh0Q29s
b3I6KFVJQ29sb3IgKiljb2xvciBzZW5kZXI6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CisKIC8vIERFUkVDQVRFRDogVGhlIHNldHRlcnMgb2YgdGhlIHRocmVl
IGZvbGxvd2luZyBmdW5jdGlvbiBhcmUgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBvdmVycmlkZUxh
eW91dFBhcmFtZXRlcnMuCiAvLyBEZWZpbmUgdGhlIHNtYWxsZXN0IHNpemUgYSBwYWdlIHRha2Ug
d2l0aCBhIHJlZ3VsYXIgdmlld3BvcnQuCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IENHU2l6ZSBfbWluaW11bUxheW91dFNpemVPdmVycmlkZTsKQEAgLTM3MSw2ICszOTAsNyBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKICNpZiBUQVJHRVRf
T1NfSVBIT05FCiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3ICgpIDxVSVJlc3BvbmRlclN0YW5kYXJk
RWRpdEFjdGlvbnM+CisvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG9uY2UgaW50ZXJuYWwgY2xpZW50
cyBoYXZlIG1vdmVkIHRvIHRoZSB1bmRlcnNjb3JlLXByZWZpeGVkIHZlcnNpb25zLgogLSAodm9p
ZClhbGlnbkNlbnRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEp
KTsKIC0gKHZvaWQpYWxpZ25KdXN0aWZpZWQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKWFsaWduTGVmdDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJ
TEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDM1Y2VjZTU3YTIyZWJlYTY5YWJlOTQ5ZDM0NGI5ZGNjMWI4MWU5OTEuLjc4
YTU3NDFjNDI2NWEyYzhiNzRjNzU0MGIxYWNmODcxODA0YTlmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTc1Niw2ICsxNzU2LDI0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RG
OjpGdW5jdGlvbjx2b2lkCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpW
YWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZlbCgpCit7CisgICAgaWYgKGlzVmFs
aWQoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFz
ZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFz
ZUxpc3RMZXZlbCgpCit7CisgICAgaWYgKGlzVmFsaWQoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFzZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7Cit9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSgpCit7CisgICAgaWYgKGlzVmFs
aWQoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VM
aXN0VHlwZSgpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVGb250
QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKQogewogICAgIG1fY2FjaGVkRm9udEF0
dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0LnJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDI5YmRkY2I3NTA4NTdkOTU4Y2I3ZWJjYTZhNGU2YTI4MjJjMDRk
Y2EuLjM1MWNiNDg1ODQxMWE3ODQxNDE4MzY4NTQxNzZiZTM4ODRkMWQ0ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NDUsNiArNTQ1LDEwIEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc1NlbGVjdGVkUmFuZ2UoKSBjb25zdCB7IHJldHVybiBtX2VkaXRvclN0YXRl
LnNlbGVjdGlvbklzUmFuZ2U7IH0KICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9lZGl0b3JTdGF0ZS5pc0NvbnRlbnRFZGl0YWJsZTsgfQogCisgICAgdm9pZCBp
bmNyZWFzZUxpc3RMZXZlbCgpOworICAgIHZvaWQgZGVjcmVhc2VMaXN0TGV2ZWwoKTsKKyAgICB2
b2lkIGNoYW5nZUxpc3RUeXBlKCk7CisKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRB
dHRyaWJ1dGVzPiBjYWNoZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7
IHJldHVybiBtX2NhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydDsgfQogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggNTYwZWE1MzBlMjgxZmY0NzM5NmY4NWE4
YTE3YmM1YzNlMjhiYzkzNC4uNWM0MTQyNTZmOWI1NjhkZGE1YTY4ZTNiYTI5MmFmZjY5Mzc3NGI0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24uaApAQCAtMTM0LDYgKzEzNCwyMyBAQCB0eXBlZGVmIHN0ZDo6cGFpcjxX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQwogICAgIE0oYWxpZ25DZW50ZXIpIFwKICAgICBNKGFsaWduSnVzdGlmaWVkKQogCisjZGVm
aW5lIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oTSkgXAorICAgIE0oX2Fs
aWduQ2VudGVyKSBcCisgICAgTShfYWxpZ25KdXN0aWZpZWQpIFwKKyAgICBNKF9hbGlnbkxlZnQp
IFwKKyAgICBNKF9hbGlnblJpZ2h0KSBcCisgICAgTShfaW5kZW50KSBcCisgICAgTShfb3V0ZGVu
dCkgXAorICAgIE0oX3RvZ2dsZVN0cmlrZVRocm91Z2gpIFwKKyAgICBNKF9pbnNlcnRPcmRlcmVk
TGlzdCkgXAorICAgIE0oX2luc2VydFVub3JkZXJlZExpc3QpIFwKKyAgICBNKF9pbnNlcnROZXN0
ZWRPcmRlcmVkTGlzdCkgXAorICAgIE0oX2luc2VydE5lc3RlZFVub3JkZXJlZExpc3QpIFwKKyAg
ICBNKF9pbmNyZWFzZUxpc3RMZXZlbCkgXAorICAgIE0oX2RlY3JlYXNlTGlzdExldmVsKSBcCisg
ICAgTShfY2hhbmdlTGlzdFR5cGUpIFwKKyAgICBNKF9wYXN0ZUFzUXVvdGF0aW9uKQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdLU2VsZWN0aW9uRHJhd2luZ0luZm8gewpAQCAtMzM5
LDcgKzM1Niw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAjZGVmaW5lIERFQ0xB
UkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKF9hY3Rpb24pIFwKICAgICAtICh2
b2lkKV9hY3Rpb24gIyMgRm9yV2ViVmlldzooaWQpc2VuZGVyOwogRk9SX0VBQ0hfV0tDT05URU5U
VklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCi1E
RUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVyhfcGFzdGVBc1F1b3RhdGlv
bikKK0ZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRF
TlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAjdW5kZWYgREVDTEFSRV9XS0NPTlRFTlRWSUVX
X0FDVElPTl9GT1JfV0VCX1ZJRVcKIAogLSAodm9pZClzZXRGb250Rm9yV2ViVmlldzooVUlGb250
ICopZm9udEZhbWlseSBzZW5kZXI6KGlkKXNlbmRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDYxNGFk
OWY4ZTFkMTk2YTVlNzA3M2JhMTliNGJiYmJhZTU1YmJjMGEuLmIzNWY3NTViNGQzYmRlNmNiNWIz
N2U1ZTI1OWQ0MDFiZDczMGJhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMjE5NCw4ICsyMTk0LDcg
QEAgc3RhdGljIHZvaWQgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3NhcnkoV0tDb250ZW50Vmll
dyogY29udGVudFZpZXcpCiAgICAgfQogCiBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihG
T1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcpCi0KLUZPUldBUkRfQUNUSU9OX1RPX1dLV0VCVklF
VyhfcGFzdGVBc1F1b3RhdGlvbikKK0ZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJ
T04oRk9SV0FSRF9BQ1RJT05fVE9fV0tXRUJWSUVXKQogCiAjdW5kZWYgRk9SV0FSRF9BQ1RJT05f
VE9fV0tXRUJWSUVXCiAKQEAgLTIyODUsMTggKzIyODQsMzcgQEAgRk9SV0FSRF9BQ1RJT05fVE9f
V0tXRUJWSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQogICAgIFtbVUlLZXlib2FyZEltcGwgc2hhcmVk
SW5zdGFuY2VdIHJlcGxhY2VUZXh0OnNlbmRlcl07CiB9CiAKLSNkZWZpbmUgV0VCQ09SRV9DT01N
QU5EX0ZPUl9XRUJWSUVXKGNvbW1hbmQpIC0gKHZvaWQpY29tbWFuZCAjIyBGb3JXZWJWaWV3Oihp
ZClzZW5kZXIgeyBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21tYW5kICMjIF9zKTsgfQot
CisjZGVmaW5lIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhjb21tYW5kKSBcCisgICAgLSAo
dm9pZClfICMjIGNvbW1hbmQgIyMgRm9yV2ViVmlldzooaWQpc2VuZGVyIHsgX3BhZ2UtPmV4ZWN1
dGVFZGl0Q29tbWFuZCgjY29tbWFuZCAjIyBfcyk7IH0gXAorICAgIC0gKHZvaWQpY29tbWFuZCAj
IyBGb3JXZWJWaWV3OihpZClzZW5kZXIgeyBbc2VsZiBfICMjIGNvbW1hbmQgIyMgRm9yV2ViVmll
dzpzZW5kZXJdOyB9CiBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoaW5zZXJ0T3JkZXJlZExp
c3QpOwogV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGluc2VydFVub3JkZXJlZExpc3QpOwor
V0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGluc2VydE5lc3RlZE9yZGVyZWRMaXN0KTsKK1dF
QkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhpbnNlcnROZXN0ZWRVbm9yZGVyZWRMaXN0KTsKIFdF
QkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhpbmRlbnQpOwogV0VCQ09SRV9DT01NQU5EX0ZPUl9X
RUJWSUVXKG91dGRlbnQpOwogV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGFsaWduTGVmdCk7
CiBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoYWxpZ25SaWdodCk7CiBXRUJDT1JFX0NPTU1B
TkRfRk9SX1dFQlZJRVcoYWxpZ25DZW50ZXIpOwogV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVX
KGFsaWduSnVzdGlmaWVkKTsKKyN1bmRlZiBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcKIAot
LSAodm9pZCl0b2dnbGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzooaWQpc2VuZGVyCistICh2b2lk
KV9pbmNyZWFzZUxpc3RMZXZlbEZvcldlYlZpZXc6KGlkKXNlbmRlcgoreworICAgIF9wYWdlLT5p
bmNyZWFzZUxpc3RMZXZlbCgpOworfQorCistICh2b2lkKV9kZWNyZWFzZUxpc3RMZXZlbEZvcldl
YlZpZXc6KGlkKXNlbmRlcgoreworICAgIF9wYWdlLT5kZWNyZWFzZUxpc3RMZXZlbCgpOworfQor
CistICh2b2lkKV9jaGFuZ2VMaXN0VHlwZUZvcldlYlZpZXc6KGlkKXNlbmRlcgoreworICAgIF9w
YWdlLT5jaGFuZ2VMaXN0VHlwZSgpOworfQorCistICh2b2lkKV90b2dnbGVTdHJpa2VUaHJvdWdo
Rm9yV2ViVmlldzooaWQpc2VuZGVyCiB7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgi
U3RyaWtlVGhyb3VnaCJfcyk7CiB9CkBAIC0yMzExLDcgKzIzMjksNyBAQCBXRUJDT1JFX0NPTU1B
TkRfRk9SX1dFQlZJRVcoYWxpZ25KdXN0aWZpZWQpOwogICAgIF9wYWdlLT5leGVjdXRlRWRpdENv
bW1hbmQoIkZvbnRTaXplRGVsdGEiX3MsICItMSJfcyk7CiB9CiAKLS0gKHZvaWQpc2V0Rm9udEZv
cldlYlZpZXc6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClzZW5kZXIKKy0gKHZvaWQpX3NldEZv
bnRGb3JXZWJWaWV3OihVSUZvbnQgKilmb250IHNlbmRlcjooaWQpc2VuZGVyCiB7CiAgICAgV2Vi
Q29yZTo6Rm9udENoYW5nZXMgY2hhbmdlczsKICAgICBjaGFuZ2VzLnNldEZvbnRGYW1pbHkoZm9u
dC5mYW1pbHlOYW1lKTsKQEAgLTIzMjIsMTkgKzIzNDAsMzcgQEAgV0VCQ09SRV9DT01NQU5EX0ZP
Ul9XRUJWSUVXKGFsaWduSnVzdGlmaWVkKTsKICAgICBfcGFnZS0+Y2hhbmdlRm9udChXVEZNb3Zl
KGNoYW5nZXMpKTsKIH0KIAotLSAodm9pZClzZXRGb250U2l6ZUZvcldlYlZpZXc6KENHRmxvYXQp
Zm9udFNpemUgc2VuZGVyOihpZClzZW5kZXIKKy0gKHZvaWQpX3NldEZvbnRTaXplRm9yV2ViVmll
dzooQ0dGbG9hdClmb250U2l6ZSBzZW5kZXI6KGlkKXNlbmRlcgogewogICAgIFdlYkNvcmU6OkZv
bnRDaGFuZ2VzIGNoYW5nZXM7CiAgICAgY2hhbmdlcy5zZXRGb250U2l6ZShmb250U2l6ZSk7CiAg
ICAgX3BhZ2UtPmNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSk7CiB9CiAKLS0gKHZvaWQpc2V0
VGV4dENvbG9yRm9yV2ViVmlldzooVUlDb2xvciAqKWNvbG9yIHNlbmRlcjooaWQpc2VuZGVyCist
ICh2b2lkKV9zZXRUZXh0Q29sb3JGb3JXZWJWaWV3OihVSUNvbG9yICopY29sb3Igc2VuZGVyOihp
ZClzZW5kZXIKIHsKICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCJGb3JlQ29sb3IiX3Ms
IFdlYkNvcmU6OkNvbG9yKGNvbG9yLkNHQ29sb3IpLnNlcmlhbGl6ZWQoKSk7CiB9CiAKLSN1bmRl
ZiBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcKKy0gKHZvaWQpdG9nZ2xlU3RyaWtlVGhyb3Vn
aEZvcldlYlZpZXc6KGlkKXNlbmRlcgoreworICAgIFtzZWxmIF90b2dnbGVTdHJpa2VUaHJvdWdo
Rm9yV2ViVmlldzpzZW5kZXJdOworfQorCistICh2b2lkKXNldEZvbnRGb3JXZWJWaWV3OihVSUZv
bnQgKilmb250IHNlbmRlcjooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgX3NldEZvbnRGb3JXZWJW
aWV3OmZvbnQgc2VuZGVyOnNlbmRlcl07Cit9CisKKy0gKHZvaWQpc2V0Rm9udFNpemVGb3JXZWJW
aWV3OihDR0Zsb2F0KWZvbnRTaXplIHNlbmRlcjooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgX3Nl
dEZvbnRTaXplRm9yV2ViVmlldzpmb250U2l6ZSBzZW5kZXI6c2VuZGVyXTsKK30KKworLSAodm9p
ZClzZXRUZXh0Q29sb3JGb3JXZWJWaWV3OihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClzZW5k
ZXIKK3sKKyAgICBbc2VsZiBfc2V0VGV4dENvbG9yRm9yV2ViVmlldzpjb2xvciBzZW5kZXI6c2Vu
ZGVyXTsKK30KIAogLSAoTlNEaWN0aW9uYXJ5ICopdGV4dFN0eWxpbmdBdFBvc2l0aW9uOihVSVRl
eHRQb3NpdGlvbiAqKXBvc2l0aW9uIGluRGlyZWN0aW9uOihVSVRleHRTdG9yYWdlRGlyZWN0aW9u
KWRpcmVjdGlvbgogewpAQCAtMjM5MiwxMSArMjQyOCwxNiBAQCBXRUJDT1JFX0NPTU1BTkRfRk9S
X1dFQlZJRVcoYWxpZ25KdXN0aWZpZWQpOwogICAgICAgICByZXR1cm4gZWRpdG9yU3RhdGUuaXND
b250ZW50UmljaGx5RWRpdGFibGUgJiYgZWRpdG9yU3RhdGUuc2VsZWN0aW9uSXNSYW5nZSAmJiAh
X3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zOwogICAgIGlmIChfc2hvd2luZ1RleHRTdHlsZU9wdGlv
bnMpCiAgICAgICAgIHJldHVybiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVCb2xkZmFjZTop
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlSXRhbGljczopIHx8IGFjdGlvbiA9PSBAc2Vs
ZWN0b3IodG9nZ2xlVW5kZXJsaW5lOikpOwotICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRv
Z2dsZUJvbGRmYWNlOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVJdGFsaWNzOikgfHwg
YWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVVbmRlcmxpbmU6KSB8fCBhY3Rpb24gPT0gQHNlbGVj
dG9yKHRvZ2dsZVN0cmlrZVRocm91Z2g6KQotICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KGluc2VydE9yZGVyZWRMaXN0OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihpbnNlcnRVbm9yZGVy
ZWRMaXN0OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihpbmRlbnQ6KSB8fCBhY3Rpb24gPT0gQHNl
bGVjdG9yKG91dGRlbnQ6KQorICAgIC8vIEZJWE1FOiBTb21lIG9mIHRoZSBmb2xsb3dpbmcgY2hl
Y2tzIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgaW50ZXJuYWwgY2xpZW50cyBtb3ZlIHRvIHRoZSB1
bmRlcnNjb3JlLXByZWZpeGVkIHZlcnNpb25zLgorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9y
KHRvZ2dsZUJvbGRmYWNlOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVJdGFsaWNzOikg
fHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVVbmRlcmxpbmU6KSB8fCBhY3Rpb24gPT0gQHNl
bGVjdG9yKF90b2dnbGVTdHJpa2VUaHJvdWdoOikKKyAgICAgICAgfHwgYWN0aW9uID09IEBzZWxl
Y3RvcihfYWxpZ25MZWZ0OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihfYWxpZ25SaWdodDopIHx8
IGFjdGlvbiA9PSBAc2VsZWN0b3IoX2FsaWduQ2VudGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3Rv
cihfYWxpZ25KdXN0aWZpZWQ6KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9zZXRU
ZXh0Q29sb3I6c2VuZGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihfc2V0Rm9udDpzZW5kZXI6
KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9zZXRGb250U2l6ZTpzZW5kZXI6KQorICAgICAgICB8
fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9pbnNlcnRPcmRlcmVkTGlzdDopIHx8IGFjdGlvbiA9PSBA
c2VsZWN0b3IoX2luc2VydFVub3JkZXJlZExpc3Q6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9p
bnNlcnROZXN0ZWRPcmRlcmVkTGlzdDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX2luc2VydE5l
c3RlZFVub3JkZXJlZExpc3Q6KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9pbmNy
ZWFzZUxpc3RMZXZlbDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX2RlY3JlYXNlTGlzdExldmVs
OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihfY2hhbmdlTGlzdFR5cGU6KSB8fCBhY3Rpb24gPT0g
QHNlbGVjdG9yKF9pbmRlbnQ6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9vdXRkZW50OikKKyAg
ICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihpbmNyZWFzZVNpemU6KSB8fCBhY3Rpb24gPT0g
QHNlbGVjdG9yKGRlY3JlYXNlU2l6ZTopCisgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Io
dG9nZ2xlU3RyaWtlVGhyb3VnaDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5zZXJ0T3JkZXJl
ZExpc3Q6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluc2VydFVub3JkZXJlZExpc3Q6KSB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKGluZGVudDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Iob3V0ZGVu
dDopCiAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoYWxpZ25MZWZ0OikgfHwgYWN0aW9u
ID09IEBzZWxlY3RvcihhbGlnblJpZ2h0OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnbkNl
bnRlcjopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoYWxpZ25KdXN0aWZpZWQ6KQotICAgICAgICB8
fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluY3JlYXNlU2l6ZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IoZGVjcmVhc2VTaXplOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihzZXRUZXh0Q29sb3I6c2Vu
ZGVyOikKLSAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihzZXRGb250OnNlbmRlcjopIHx8
IGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2V0Rm9udFNpemU6c2VuZGVyOikpIHsKKyAgICAgICAgfHwg
YWN0aW9uID09IEBzZWxlY3RvcihzZXRUZXh0Q29sb3I6c2VuZGVyOikgfHwgYWN0aW9uID09IEBz
ZWxlY3RvcihzZXRGb250OnNlbmRlcjopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2V0Rm9udFNp
emU6c2VuZGVyOikpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1vcmUgbnVh
bmNlZCBpbiB0aGUgZnV0dXJlLCByYXRoZXIgdGhhbiByZXR1cm5pbmcgWUVTIGZvciBhbGwgcmlj
aGx5IGVkaXRhYmxlIGFyZWFzLiBGb3IgaW5zdGFuY2UsIG91dGRlbnQ6IHNob3VsZCBiZSBkaXNh
YmxlZCB3aGVuIHRoZSBzZWxlY3Rpb24gaXMgYWxyZWFkeQogICAgICAgICAvLyBhdCB0aGUgb3V0
ZXJtb3N0IGluZGVudGF0aW9uIGxldmVsLgogICAgICAgICByZXR1cm4gZWRpdG9yU3RhdGUuaXND
b250ZW50UmljaGx5RWRpdGFibGU7CkBAIC0yNDA0LDcgKzI0NDUsNyBAQCBXRUJDT1JFX0NPTU1B
TkRfRk9SX1dFQlZJRVcoYWxpZ25KdXN0aWZpZWQpOwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVj
dG9yKGN1dDopKQogICAgICAgICByZXR1cm4gIWVkaXRvclN0YXRlLmlzSW5QYXNzd29yZEZpZWxk
ICYmIGVkaXRvclN0YXRlLmlzQ29udGVudEVkaXRhYmxlICYmIGVkaXRvclN0YXRlLnNlbGVjdGlv
bklzUmFuZ2U7CiAgICAgCi0gICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGU6KSkgewor
ICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBhc3RlOikgfHwgYWN0aW9uID09IEBzZWxlY3Rv
cihfcGFzdGVBc1F1b3RhdGlvbjopKSB7CiAgICAgICAgIGlmIChlZGl0b3JTdGF0ZS5zZWxlY3Rp
b25Jc05vbmUgfHwgIWVkaXRvclN0YXRlLmlzQ29udGVudEVkaXRhYmxlKQogICAgICAgICAgICAg
cmV0dXJuIE5POwogICAgICAgICBVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbVUlQYXN0ZWJv
YXJkIGdlbmVyYWxQYXN0ZWJvYXJkXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNjJkYmEzZmIyODc3MTBkMDQwNjg0YWYwMjVjYzAwMmQ0Mjc4
OGJjYS4uZDgyZDY1MmU5ZjExMDZhZWIwYWY0MGFmMTIyNTg2MGFlZWNhNzFhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTExNTAsNiArMTE1
MCwyMSBAQCB2b2lkIFdlYlBhZ2U6OnNldEVkaXRhYmxlKGJvb2wgZWRpdGFibGUpCiAgICAgfQog
fQogCit2b2lkIFdlYlBhZ2U6OmluY3JlYXNlTGlzdExldmVsKCkKK3sKKyAgICAvLyBGSVhNRTog
Tm90IGltcGxlbWVudGVkLgorfQorCit2b2lkIFdlYlBhZ2U6OmRlY3JlYXNlTGlzdExldmVsKCkK
K3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorfQorCit2b2lkIFdlYlBhZ2U6OmNo
YW5nZUxpc3RUeXBlKCkKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorfQorCiBi
b29sIFdlYlBhZ2U6OmlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA0MDc2ZWE3Yjc0NTI5M2VkY2UwNzdiODI4ZmM1YzNjNjVhZDZmYTk0Li43
MjI3NGRkMGZmYTI3YmNiNzEwNTJkNDA0ZjhmMmRkNDA4ZDQ2OWM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMTg0LDYgKzExODQsMTAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wpOwogCisgICAgdm9pZCBpbmNyZWFz
ZUxpc3RMZXZlbCgpOworICAgIHZvaWQgZGVjcmVhc2VMaXN0TGV2ZWwoKTsKKyAgICB2b2lkIGNo
YW5nZUxpc3RUeXBlKCk7CisKICAgICB2b2lkIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCk7
CiAKICAgICB2b2lkIG1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggZmQ0MzBkNjlhZTI1NDViMjA5ZjIyNjdhN2VhZTU2ZGIyNWQ5MGZlNC4uYWM2Mzk5ZmE2NjE1
YzEwYjk2ODViM2VjNDNmYjlhMmExYzQ1YjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMTEsNiArMjExLDEw
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFZhbGlkYXRlQ29t
bWFuZChTdHJpbmcgbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRXhl
Y3V0ZUVkaXRDb21tYW5kKFN0cmluZyBuYW1lLCBTdHJpbmcgYXJndW1lbnQpCiAKKyAgICBJbmNy
ZWFzZUxpc3RMZXZlbCgpCisgICAgRGVjcmVhc2VMaXN0TGV2ZWwoKQorICAgIENoYW5nZUxpc3RU
eXBlKCkKKwogICAgIFNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCBuZWVkc0ZvbnRBdHRyaWJ1
dGVzKQogCiAgICAgUmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA3ZTQ3NzkyMzYyOTQ4NWI1OGYyZWQ3NzJiZjFjMTVkYzFlNDNh
ZDM4Li4wYWYxNmI4NTZhMjhlMDU0NGIzODIwNjExYmFmMDM1NGQwYWU1OGQ3IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDYgKzEsMjkgQEAK
KzIwMTgtMTEtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgV0tXZWJWaWV3IFNQSSB0byBpbnNlcnQgbmVzdGVkIG9y
ZGVyZWQgYW5kIHVub3JkZXJlZCBsaXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNDEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTg5ODYx
MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IFdLV2ViVmlld0VkaXRBY3Rpb25zIGZyb20gaU9TIHRvIFdlYktpdENvY29hLCBhbmQgZW5hYmxl
IHRoZSByZWxldmFudCBXS1dlYlZpZXdFZGl0QWN0aW9ucyB0ZXN0cyBvbiBtYWNPUy4KKyAgICAg
ICAgQWRkaXRpb25hbGx5LCBhZGQgbmV3IEFQSSB0ZXN0cyB0byB2ZXJpZnkgdGhhdCBgLV9wYXN0
ZUFzUXVvdGF0aW9uOmAgYW5kIGAtX2luc2VydE5lc3RlZChVbilPcmRlcmVkTGlzdDpgIGFyZQor
ICAgICAgICBob29rZWQgdXAgdG8gdGhlaXIgcmVzcGVjdGl2ZSBlZGl0aW5nIGNvbW1hbmRzLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dl
YlZpZXdFZGl0QWN0aW9ucy5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tLgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3
IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaW5zZXJ0
U3RyaW5nOl0pOgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2QgdG8gaW5zZXJ0IGEgcGll
Y2Ugb2YgdGV4dC4gVGhpcyBhYnN0cmFjdHMgcGxhdGZvcm0gZGlmZmVyZW5jZXMgYmV0d2VlbiBp
T1MgYW5kIG1hY09TLCBieQorICAgICAgICBpbnZva2luZyB0aGUgV0tXZWJWaWV3IGRpcmVjdGx5
IG9uIG1hY09TIGFuZCBjYWxsaW5nIG9uIHRoZSBjb250ZW50IHZpZXcgb24gaU9TLgorCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMTEtMDggIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAotb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0
cworICAgICAgICBBZGQgYW4gU1BJIHRvIGFsbG93IFdlYlZpZXcgY2xpZW50cyB0byBhZGQgYWRk
aXRpb25hbCBzdXBwb3J0ZWQgaW1hZ2UgZm9ybWF0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU0CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZWVmNzM1NWRhNmQxZjljZDA1
Y2VhZTgzYTA0NTc4ZDY5MTdiMGQ4Li5kNWE4Y2FhOGYzNmRkZjNiZmM5NzllNDBmNjI0YmIwNzlm
OTYwZmFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODQ2LDYgKzg0Niw3IEBACiAJCUY0
NkEwOTVBMUVEOEE2RTYwMEQ0QUE1NSAvKiBhcHBsZS5naWYgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUx
IC8qIGFwcGxlLmdpZiAqLzsgfTsKIAkJRjQ2QTA5NUIxRUQ4QTZFNjAwRDRBQTU1IC8qIGdpZi1h
bmQtZmlsZS1pbnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0N0QzMEVEMUVEMjhBNkMwMDA0ODJFMSAvKiBnaWYtYW5kLWZpbGUt
aW5wdXQuaHRtbCAqLzsgfTsKIAkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFn
ZS1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdl
LWNvbnRlbnRlZGl0YWJsZS5odG1sICovOyB9OworCQlGNDgxMUU1OTIxOTQwQkRFMDBBNUUwRkQg
LyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDgxMUU1ODIxOTQwQjQ0MDBBNUUwRkQgLyogV0tXZWJWaWV3RWRp
dEFjdGlvbnMubW0gKi87IH07CiAJCUY0ODU2Q0EzMUU2NDlFQTgwMDlEN0VFNyAvKiBhdHRhY2ht
ZW50LWVsZW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDg1NkNBMjFFNjQ5OEE4MDA5RDdFRTcgLyogYXR0YWNobWVudC1lbGVt
ZW50Lmh0bWwgKi87IH07CiAJCUY0ODZCMUQwMUY2Nzk1MjMwMEYzNEJERCAvKiBEYXRhVHJhbnNm
ZXItc2V0RHJhZ0ltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ4NkIxQ0YxRjY3OTRGRjAwRjM0QkREIC8qIERhdGFUcmFuc2Zl
ci1zZXREcmFnSW1hZ2UuaHRtbCAqLzsgfTsKIAkJRjRBMzJFQzQxRjA1RjM4NTAwNDdDNTQ0IC8q
IGRyYWdzdGFydC1jaGFuZ2Utc2VsZWN0aW9uLW9mZnNjcmVlbi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QTMyRUMzMUYwNUYzNzgw
MDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNlbGVjdGlvbi1vZmZzY3JlZW4uaHRtbCAqLzsg
fTsKQEAgLTg3OCw3ICs4NzksNiBAQAogCQlGNEY1QkI1MjIxNjY3QkFBMDAyRDA2QjkgLyogVGVz
dEZvbnRPcHRpb25zLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjRGNUJCNTEyMTY2N0JBQTAwMkQwNkI5IC8qIFRlc3RGb250T3B0aW9ucy5tbSAqLzsg
fTsKIAkJRjRGQTkxODExRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RkE5
MTdGMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0gKi87IH07
CiAJCUY0RkE5MTgzMUU2MTg1N0IwMDdCOEMxRCAvKiBkb3VibGUtY2xpY2stZG9lcy1ub3Qtc2Vs
ZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQTkxODIxRTYxODU2NjAwN0I4QzFEIC8qIGRvdWJsZS1j
bGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCAqLzsgfTsKLQkJRjRGQjY4
MjUyMTY0M0VGQzAwMzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQjY4MjQyMTY0M0VGQzAwMzQ2
MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tICovOyB9OwogCQlGNEZDMDc3NzIwRjAxM0I2
MDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZDMDc3NjIwRjAxMDgx
MDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLzsgfTsKIAkJRjY2
MEFBMTExNUE1RjYzMTAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25V
c2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNjYwQUEwRjE1QTVGNjI0MDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCAqLzsgfTsKIAkJ
RjY2MEFBMTUxNUE2MUFCRjAwM0ExMjQzIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25V
c2VyRGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjY2MEFBMTQxNUE2MUFCRjAwM0ExMjQzIC8qIEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3BwICovOyB9
OwpAQCAtMjEzMSw2ICsyMTMxLDcgQEAKIAkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1
bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDdEMzBFQjFFRDI4NjE5MDAwNDgyRTEgLyogYXBwbGUuZ2lmICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UuZ2lmOyBwYXRoID0g
YXBwbGUuZ2lmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDdEMzBFRDFFRDI4QTZD
MDAwNDgyRTEgLyogZ2lmLWFuZC1maWxlLWlucHV0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZ2lmLWFuZC1m
aWxlLWlucHV0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDgxMUU1ODIx
OTQwQjQ0MDBBNUUwRkQgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4NTZDQTIxRTY0OThBODAwOUQ3RUU3IC8qIGF0dGFj
aG1lbnQtZWxlbWVudC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImF0dGFjaG1l
bnQtZWxlbWVudC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4NkIxQ0Yx
RjY3OTRGRjAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDkzMjQ3QzFGNDRERjhEMDA2RjQzMzYgLyog
VUlLaXRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVUlLaXRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxNjYsNyArMjE2Nyw2IEBACiAJCUY0RjVCQjUxMjE2NjdCQUEwMDJEMDZC
OSAvKiBUZXN0Rm9udE9wdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXN0Rm9udE9w
dGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RkE5MTdGMUU2MTg0OUIw
MDdCOEMxRCAvKiBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RkE5MTgyMUU2MTg1NjYwMDdCOEMxRCAvKiBkb3Vi
bGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IG5hbWUgPSAiZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1z
cGFjZS5odG1sIjsgcGF0aCA9ICJUZXN0cy9XZWJLaXRDb2NvYS9kb3VibGUtY2xpY2stZG9lcy1u
b3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNlLmh0bWwiOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07Ci0JCUY0RkI2ODI0MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlm
aWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzaWduaWZpY2FudC10ZXh0LW1p
bGVzdG9uZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjY2MEFBMEMxNUE1
RjA2MTAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNh
bGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdldEluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjUxNCw2ICsyNTE0LDcgQEAKIAkJCQk3QzQxN0YzMTFEMTlFMTQ4MDBCOEVGNTMgLyog
V0tXZWJWaWV3RGVmYXVsdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCQk0NkU2NkE4RjFG
MEQ3NTU5MDAyNkQ4M0MgLyogV0tXZWJWaWV3RGlhZ25vc3RpY0xvZ2dpbmcubW0gKi8sCiAJCQkJ
MkRCNjQ3ODcxRjQxNjFGNzAwNTFBODlFIC8qIFdLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0
aWFsaXphdGlvbi5tbSAqLywKKwkJCQlGNDgxMUU1ODIxOTQwQjQ0MDBBNUUwRkQgLyogV0tXZWJW
aWV3RWRpdEFjdGlvbnMubW0gKi8sCiAJCQkJMEYzQjk0QTUxQTc3MjY2QzAwREUzMjcyIC8qIFdL
V2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSAqLywKIAkJCQlEM0JFNUUzNDFFNENFODVFMDBG
RDU2M0EgLyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gKi8sCiAJCQkJMzdBOURCRTcyMTNCNEM5
MzAwRDI2MUEyIC8qIFdLV2ViVmlld1NlcnZlclRydXN0S1ZDLm1tICovLApAQCAtMjYzMiw3ICsy
NjMzLDYgQEAKIAkJCQlGNDY4NDlCRDFFRUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVz
dHMubW0gKi8sCiAJCQkJRjQzRTNCQkUyMERBREExRTAwQTRFN0VEIC8qIFdLU2Nyb2xsVmlld1Rl
c3RzLm1tICovLAogCQkJCTUxNDk1OEJEMUY3NDI3QUMwMEU4N0JBRCAvKiBXS1dlYlZpZXdBdXRv
ZmlsbFRlc3RzLm1tICovLAotCQkJCUY0RkI2ODI0MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZp
ZXdFZGl0QWN0aW9ucy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTQxNzUsNyArNDE3NSw3IEBACiAJCQkJN0M0MTdGMzMxRDE5RTE0
ODAwQjhFRjUzIC8qIFdLV2ViVmlld0RlZmF1bHROYXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk0NkU2NkE5MDFGMEQ3NTU5MDAyNkQ4M0MgLyogV0tXZWJWaWV3RGlhZ25v
c3RpY0xvZ2dpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREI2NDc4ODFGNDE2M0Q2MDA1MUE4
OUUgLyogV0tXZWJWaWV3RG9lc05vdExvZ0R1cmluZ0luaXRpYWxpemF0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRjRGQjY4MjUyMTY0M0VGQzAwMzQ2MDdBIC8qIFdLV2ViVmlld0VkaXRBY3Rp
b25zLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ4MTFFNTkyMTk0MEJERTAwQTVFMEZEIC8qIFdL
V2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQjk0QTcxQTc3MjY3
NDAwREUzMjcyIC8qIFdLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUQzNEUwODc2MUU0RTQyRTEwMDVGRjE0QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUY0RkE5MTgxMUU2MTg0OUIwMDdCOEMxRCAvKiBXS1dlYlZp
ZXdNYWNFZGl0aW5nVGVzdHMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0VkaXRBY3Rpb25z
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmIxNzdhMzA4YzQxNjMwNDZkNmY4MTQ3MjU3MmUyNDk0NGIzZGUwM2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tCkBAIC0wLDAgKzEsMjQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1w
b3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCA8VUlLaXQvVUlGb250RGVzY3JpcHRvci5oPgorI2Vu
ZGlmCisKK0BpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoRWRpdEFjdGlvblRlc3RpbmcpCistIChC
T09MKXF1ZXJ5U2VsZWN0b3JFeGlzdHM6KE5TU3RyaW5nICopcXVlcnlTZWxlY3RvcjsKKy0gKHZv
aWQpaW5zZXJ0U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZzsKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFRlc3RXS1dlYlZpZXcgKEVkaXRBY3Rpb25UZXN0aW5nKQorCistIChCT09MKXF1ZXJ5U2Vs
ZWN0b3JFeGlzdHM6KE5TU3RyaW5nICopcXVlcnlTZWxlY3RvcgoreworICAgIHJldHVybiBbW3Nl
bGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgJUBgKSIsIHF1ZXJ5U2VsZWN0b3JdXSBib29s
VmFsdWVdOworfQorCistICh2b2lkKWluc2VydFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcKK3sK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtbc2VsZiB0ZXh0SW5wdXRDb250ZW50Vmll
d10gaW5zZXJ0VGV4dDpzdHJpbmddOworI2Vsc2UKKyAgICBbc2VsZiBpbnNlcnRUZXh0OnN0cmlu
Z107CisjZW5kaWYKK30KKworQGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0
YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5n
KCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXY+V2ViS2l0PC9kaXY+Il07CisgICAg
W3dlYlZpZXcgX3NldEVkaXRhYmxlOllFU107CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHks
IDEpIl07CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlv
bnMsIE5lc3RlZExpc3RJbnNlcnRpb24pCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0Zv
ckVkaXRBY3Rpb25UZXN0aW5nKCk7CisKKyAgICBbd2ViVmlldyBfaW5zZXJ0TmVzdGVkT3JkZXJl
ZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3Rz
OkAib2wiXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpA
Im9sID4gbGkiXSk7CisKKyAgICBbd2ViVmlldyBfaW5zZXJ0TmVzdGVkT3JkZXJlZExpc3Q6bmls
XTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wgPiBv
bCJdKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wg
PiBvbCA+IGxpIl0pOworCisgICAgW3dlYlZpZXcgX2luc2VydE5lc3RlZFVub3JkZXJlZExpc3Q6
bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wg
PiBvbCA+IHVsIl0pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlz
dHM6QCJvbCA+IG9sID4gdWwgPiBsaSJdKTsKKworICAgIFt3ZWJWaWV3IF9pbnNlcnROZXN0ZWRV
bm9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3Rv
ckV4aXN0czpAIm9sID4gb2wgPiB1bCA+IHVsIl0pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3
IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJvbCA+IG9sID4gdWwgPiB1bCA+IGxpIl0pOworfQorCitU
RVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBMaXN0SW5zZXJ0aW9uKQoreworICAgIGF1dG8gd2Vi
VmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworCisgICAgW3dlYlZpZXcgX2lu
c2VydE9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxl
Y3RvckV4aXN0czpAIm9sIl0pOworICAgIFt3ZWJWaWV3IF9pbnNlcnRPcmRlcmVkTGlzdDpuaWxd
OworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wiXSk7
CisKKyAgICBbd2ViVmlldyBfaW5zZXJ0VW5vcmRlcmVkTGlzdDpuaWxdOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJ1bCJdKTsKKyAgICBbd2ViVmlldyBf
aW5zZXJ0VW5vcmRlcmVkTGlzdDpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBxdWVy
eVNlbGVjdG9yRXhpc3RzOkAidWwiXSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMs
IENoYW5nZUluZGVudGF0aW9uKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0
QWN0aW9uVGVzdGluZygpOworCisgICAgW3dlYlZpZXcgX2luZGVudDpuaWxdOworICAgIEVYUEVD
VF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJibG9ja3F1b3RlIl0pOworICAg
IFt3ZWJWaWV3IF9pbmRlbnQ6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNl
bGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSA+IGJsb2NrcXVvdGUiXSk7CisKKyAgICBbd2ViVmll
dyBfb3V0ZGVudDpuaWxdOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JF
eGlzdHM6QCJibG9ja3F1b3RlIl0pOworICAgIFt3ZWJWaWV3IF9vdXRkZW50Om5pbF07CisgICAg
RVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJibG9ja3F1b3RlIl0p
OworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBTZXRBbGlnbm1lbnQpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7CisgICAgYXV0byBy
dW5UZXN0ID0gW3dlYlZpZXddIHsKKyAgICAgICAgW3dlYlZpZXcgX2FsaWduQ2VudGVyOm5pbF07
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiY2VudGVyIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0
eUF0U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LWFsaWduIl0pOworICAgICAgICBbd2ViVmlldyBfYWxp
Z25MZWZ0Om5pbF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgibGVmdCIsIFt3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1hbGlnbiJdKTsKKyAgICAgICAgW3dl
YlZpZXcgX2FsaWduUmlnaHQ6bmlsXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJyaWdodCIs
IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1hbGlnbiJdKTsK
KyAgICAgICAgW3dlYlZpZXcgX2FsaWduSnVzdGlmaWVkOm5pbF07CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgianVzdGlmeSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0
OkAidGV4dC1hbGlnbiJdKTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQuYm9keS5kaXIgPSAncnRsJyIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsK
KyAgICBydW5UZXN0KCk7CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1
bWVudC5ib2R5LmRpciA9ICdsdHInIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIHJ1blRl
c3QoKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgVG9nZ2xlU3RyaWtlVGhyb3Vn
aCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsK
KyAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICBbd2ViVmlldyBfdG9nZ2xlU3RyaWtl
VGhyb3VnaDpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgibGluZS10aHJvdWdoIiwgW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlv
bnMtaW4tZWZmZWN0Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgibGluZS10aHJvdWdoIiwgW3dl
YlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5kOkAiLXdlYmtpdC10ZXh0LWRlY29yYXRp
b25zLWluLWVmZmVjdCJdKTsKKworICAgIFt3ZWJWaWV3IF90b2dnbGVTdHJpa2VUaHJvdWdoOm5p
bF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgibm9uZSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVj
dGlvbkVuZDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7CisKKyAgICBb
d2ViVmlldyBjb2xsYXBzZVRvRW5kXTsKKyAgICBbd2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3Vn
aDpuaWxdOworICAgIFt3ZWJWaWV3IGluc2VydFN0cmluZzpAIkhlbGxvIl07CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7CisKKyAgICBb
d2ViVmlldyBfdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIFt3ZWJWaWV3IGluc2VydFN0
cmluZzpAIkhlbGxvIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwgW3dlYlZpZXcgc3R5
bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4t
ZWZmZWN0Il0pOworfQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBQYXN0ZUFzUXVvdGF0
aW9uKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygp
OworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworICAgIFt3ZWJWaWV3IF9leGVjdXRlRWRp
dENvbW1hbmQ6QCJjdXQiIGFyZ3VtZW50Om5pbCBjb21wbGV0aW9uOm5pbF07CisgICAgW3dlYlZp
ZXcgX3Bhc3RlQXNRdW90YXRpb246bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVy
eVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKK30KKworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIENoYW5nZUZvbnRTaXplKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3
ZWJWaWV3IHNlbGVjdEFsbDpuaWxdOworICAgIEVYUEVDVF9FUSgxNiwgW1t3ZWJWaWV3IHN0eWxl
UHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0gZmxvYXRWYWx1ZV0pOworCisg
ICAgW3dlYlZpZXcgaW5jcmVhc2VTaXplOm5pbF07CisgICAgRVhQRUNUX0VRKDE3LCBbW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVl
XSk7CisgICAgW3dlYlZpZXcgaW5jcmVhc2VTaXplOm5pbF07CisgICAgRVhQRUNUX0VRKDE4LCBb
W3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9h
dFZhbHVlXSk7CisKKyAgICBbd2ViVmlldyBkZWNyZWFzZVNpemU6bmlsXTsKKyAgICBFWFBFQ1Rf
RVEoMTcsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6
ZSJdIGZsb2F0VmFsdWVdKTsKKyAgICBbd2ViVmlldyBkZWNyZWFzZVNpemU6bmlsXTsKKyAgICBF
WFBFQ1RfRVEoMTYsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZv
bnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKKworICAgIFt3ZWJWaWV3IF9zZXRGb250U2l6ZToyMCBz
ZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfRVEoMjAsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRT
ZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKK30KKworVEVTVChXS1dl
YlZpZXdFZGl0QWN0aW9ucywgU2V0VGV4dENvbG9yKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdl
YlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxd
OworCisgICAgW3dlYlZpZXcgX3NldFRleHRDb2xvcjpbVUlDb2xvciBjb2xvcldpdGhSZWQ6MSBn
cmVlbjowIGJsdWU6MCBhbHBoYToxXSBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
InJnYigyNTUsIDAsIDApIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6
QCJjb2xvciJdKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3Rz
OkAiZm9udCJdKTsKKworICAgIFt3ZWJWaWV3IF9zZXRUZXh0Q29sb3I6W1VJQ29sb3IgY29sb3JX
aXRoUmVkOjAgZ3JlZW46MSBibHVlOjAgYWxwaGE6MC4yXSBzZW5kZXI6bmlsXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoInJnYmEoMCwgMjU1LCAwLCAwLjIpIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0
eUF0U2VsZWN0aW9uU3RhcnQ6QCJjb2xvciJdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcg
cXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFj
dGlvbnMsIFNldEZvbnRGYW1pbHkpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVk
aXRBY3Rpb25UZXN0aW5nKCk7CisgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07CisKKyAgICBV
SUZvbnREZXNjcmlwdG9yICpmb250RGVzY3JpcHRvciA9IFtVSUZvbnREZXNjcmlwdG9yIGZvbnRE
ZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOkB7IFVJRm9udERlc2NyaXB0b3JGYW1pbHlBdHRy
aWJ1dGU6IEAiSGVsdmV0aWNhIiB9XTsKKyAgICBbd2ViVmlldyBfc2V0Rm9udDpbVUlGb250IGZv
bnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOjI0XSBzZW5kZXI6bmlsXTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIkhlbHZldGljYSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNl
bGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIyNHB4
IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub3JtYWwiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRT
ZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgibm9y
bWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXN0eWxl
Il0pOworCisgICAgW3dlYlZpZXcgX3NldEZvbnQ6W1VJRm9udCBmb250V2l0aE5hbWU6QCJUaW1l
c05ld1JvbWFuUFMtQm9sZE1UIiBzaXplOjEyXSBzZW5kZXI6bmlsXTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIlwiVGltZXMgTmV3IFJvbWFuXCIiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxl
Y3Rpb25TdGFydDpAImZvbnQtZmFtaWx5Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiMTJweCIs
IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiYm9sZCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVj
dGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub3JtYWwi
LCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc3R5bGUiXSk7
CisKKyAgICBmb250RGVzY3JpcHRvciA9IFtmb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldp
dGhTeW1ib2xpY1RyYWl0czpVSUZvbnREZXNjcmlwdG9yVHJhaXRJdGFsaWMgfCBVSUZvbnREZXNj
cmlwdG9yVHJhaXRCb2xkXTsKKyAgICBbd2ViVmlldyBfc2V0Rm9udDpbVUlGb250IGZvbnRXaXRo
RGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOjIwXSBzZW5kZXI6bmlsXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIkhlbHZldGljYSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlv
blN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIyMHB4IiwgW3dl
YlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJib2xkIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJmb250LXdlaWdodCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIml0YWxpYyIsIFt3
ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zdHlsZSJdKTsKK30K
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjMjE5OTQ3ZDZmMjg1MjIxMTgyOTllNjY4YjBkYTc3NzZmOGQw
NjE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIFdLX0FQSV9FTkFCTEVECi0KLSNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCi0jaW1wb3J0
ICJVSUtpdFNQSS5oIgotI2ltcG9ydCA8VUlLaXQvVUlGb250RGVzY3JpcHRvci5oPgotI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KLQotQGludGVyZmFjZSBUZXN0V0tXZWJWaWV3
IChFZGl0QWN0aW9uVGVzdGluZykKLS0gKEJPT0wpcXVlcnlTZWxlY3RvckV4aXN0czooTlNTdHJp
bmcgKilxdWVyeVNlbGVjdG9yOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmll
dyAoRWRpdEFjdGlvblRlc3RpbmcpCi0KLS0gKEJPT0wpcXVlcnlTZWxlY3RvckV4aXN0czooTlNT
dHJpbmcgKilxdWVyeVNlbGVjdG9yCi17Ci0gICAgcmV0dXJuIFtbc2VsZiBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiISFkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKGAlQGApIiwgcXVlcnlTZWxlY3Rvcl1dIGJvb2xWYWx1ZV07Ci19Ci0KLUBl
bmQKLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgUmV0YWluUHRyPFRlc3RX
S1dlYlZpZXc+IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpCi17Ci0gICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKLSAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8ZGl2PldlYktpdDwvZGl2PiJdOwotICAgIFt3ZWJWaWV3IF9zZXRFZGl0YWJs
ZTpZRVNdOwotICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAxKSJdOwotICAgIHJldHVybiB3
ZWJWaWV3OwotfQotCi1URVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBMaXN0SW5zZXJ0aW9uKQot
ewotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwotCi0g
ICAgW3dlYlZpZXcgaW5zZXJ0T3JkZXJlZExpc3Q6bmlsXTsKLSAgICBFWFBFQ1RfVFJVRShbd2Vi
VmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wiXSk7Ci0gICAgW3dlYlZpZXcgaW5zZXJ0T3Jk
ZXJlZExpc3Q6bmlsXTsKLSAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4
aXN0czpAIm9sIl0pOwotCi0gICAgW3dlYlZpZXcgaW5zZXJ0VW5vcmRlcmVkTGlzdDpuaWxdOwot
ICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJ1bCJdKTsKLSAg
ICBbd2ViVmlldyBpbnNlcnRVbm9yZGVyZWRMaXN0Om5pbF07Ci0gICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJ1bCJdKTsKLX0KLQotVEVTVChXS1dlYlZpZXdF
ZGl0QWN0aW9ucywgQ2hhbmdlSW5kZW50YXRpb24pCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2Vi
Vmlld0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7Ci0KLSAgICBbd2ViVmlldyBpbmRlbnQ6bmlsXTsK
LSAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90
ZSJdKTsKLSAgICBbd2ViVmlldyBpbmRlbnQ6bmlsXTsKLSAgICBFWFBFQ1RfVFJVRShbd2ViVmll
dyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSA+IGJsb2NrcXVvdGUiXSk7Ci0KLSAg
ICBbd2ViVmlldyBvdXRkZW50Om5pbF07Ci0gICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlT
ZWxlY3RvckV4aXN0czpAImJsb2NrcXVvdGUiXSk7Ci0gICAgW3dlYlZpZXcgb3V0ZGVudDpuaWxd
OwotICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2tx
dW90ZSJdKTsKLX0KLQotVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgU2V0QWxpZ25tZW50KQot
ewotICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwotICAg
IGF1dG8gcnVuVGVzdCA9IFt3ZWJWaWV3XSB7Ci0gICAgICAgIFt3ZWJWaWV3IGFsaWduQ2VudGVy
Om5pbF07Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgiY2VudGVyIiwgW3dlYlZpZXcgc3R5bGVQ
cm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LWFsaWduIl0pOwotICAgICAgICBbd2ViVmll
dyBhbGlnbkxlZnQ6bmlsXTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJsZWZ0IiwgW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LWFsaWduIl0pOwotICAgICAg
ICBbd2ViVmlldyBhbGlnblJpZ2h0Om5pbF07Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUSgicmln
aHQiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQtYWxpZ24i
XSk7Ci0gICAgICAgIFt3ZWJWaWV3IGFsaWduSnVzdGlmaWVkOm5pbF07Ci0gICAgICAgIEVYUEVD
VF9XS19TVFJFUSgianVzdGlmeSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OkAidGV4dC1hbGlnbiJdKTsKLSAgICB9OwotCi0gICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuYm9keS5kaXIgPSAncnRsJyIgY29tcGxldGlvbkhhbmRsZXI6bmls
XTsKLSAgICBydW5UZXN0KCk7Ci0KLSAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJk
b2N1bWVudC5ib2R5LmRpciA9ICdsdHInIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwotICAgIHJ1
blRlc3QoKTsKLX0KLQotVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgVG9nZ2xlU3RyaWtlVGhy
b3VnaCkKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3Rpbmco
KTsKLSAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKLSAgICBbd2ViVmlldyB0b2dnbGVTdHJp
a2VUaHJvdWdoOm5pbF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0
aW9ucy1pbi1lZmZlY3QiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBb
d2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6QCItd2Via2l0LXRleHQtZGVjb3Jh
dGlvbnMtaW4tZWZmZWN0Il0pOwotCi0gICAgW3dlYlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpu
aWxdOwotICAgIEVYUEVDVF9XS19TVFJFUSgibm9uZSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlB
dFNlbGVjdGlvblN0YXJ0OkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxl
Y3Rpb25FbmQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOwotCi0gICAg
W3dlYlZpZXcgY29sbGFwc2VUb0VuZF07Ci0gICAgW3dlYlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3Vn
aDpuaWxdOwotICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpA
IkhlbGxvIl07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5lLXRocm91Z2giLCBbd2ViVmlldyBz
dHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1p
bi1lZmZlY3QiXSk7Ci0KLSAgICBbd2ViVmlldyB0b2dnbGVTdHJpa2VUaHJvdWdoOm5pbF07Ci0g
ICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiSGVsbG8iXTsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxl
Y3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7Ci19Ci0K
LVRFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIENoYW5nZUZvbnRTaXplKQotewotICAgIGF1dG8g
d2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwotICAgIFt3ZWJWaWV3IHNl
bGVjdEFsbDpuaWxdOwotICAgIEVYUEVDVF9FUSgxNiwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlB
dFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0gZmxvYXRWYWx1ZV0pOwotCi0gICAgW3dlYlZp
ZXcgaW5jcmVhc2VTaXplOm5pbF07Ci0gICAgRVhQRUNUX0VRKDE3LCBbW3dlYlZpZXcgc3R5bGVQ
cm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7Ci0gICAg
W3dlYlZpZXcgaW5jcmVhc2VTaXplOm5pbF07Ci0gICAgRVhQRUNUX0VRKDE4LCBbW3dlYlZpZXcg
c3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7
Ci0KLSAgICBbd2ViVmlldyBkZWNyZWFzZVNpemU6bmlsXTsKLSAgICBFWFBFQ1RfRVEoMTcsIFtb
d2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0
VmFsdWVdKTsKLSAgICBbd2ViVmlldyBkZWNyZWFzZVNpemU6bmlsXTsKLSAgICBFWFBFQ1RfRVEo
MTYsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJd
IGZsb2F0VmFsdWVdKTsKLQotICAgIFt3ZWJWaWV3IHNldEZvbnRTaXplOjIwIHNlbmRlcjpuaWxd
OwotICAgIEVYUEVDVF9FUSgyMCwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OkAiZm9udC1zaXplIl0gZmxvYXRWYWx1ZV0pOwotfQotCi1URVNUKFdLV2ViVmlld0VkaXRB
Y3Rpb25zLCBTZXRUZXh0Q29sb3IpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVk
aXRBY3Rpb25UZXN0aW5nKCk7Ci0gICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07Ci0KLSAgICBb
d2ViVmlldyBzZXRUZXh0Q29sb3I6W1VJQ29sb3IgY29sb3JXaXRoUmVkOjEgZ3JlZW46MCBibHVl
OjAgYWxwaGE6MV0gc2VuZGVyOm5pbF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2IoMjU1LCAw
LCAwKSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7
Ci0gICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7
Ci0KLSAgICBbd2ViVmlldyBzZXRUZXh0Q29sb3I6W1VJQ29sb3IgY29sb3JXaXRoUmVkOjAgZ3Jl
ZW46MSBibHVlOjAgYWxwaGE6MC4yXSBzZW5kZXI6bmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
InJnYmEoMCwgMjU1LCAwLCAwLjIpIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJjb2xvciJdKTsKLSAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3Rv
ckV4aXN0czpAImZvbnQiXSk7Ci19Ci0KLVRFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIFNldEZv
bnRGYW1pbHkpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckVkaXRBY3Rpb25UZXN0
aW5nKCk7Ci0gICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07Ci0KLSAgICBVSUZvbnREZXNjcmlw
dG9yICpmb250RGVzY3JpcHRvciA9IFtVSUZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0
aEZvbnRBdHRyaWJ1dGVzOkB7IFVJRm9udERlc2NyaXB0b3JGYW1pbHlBdHRyaWJ1dGU6IEAiSGVs
dmV0aWNhIiB9XTsKLSAgICBbd2ViVmlldyBzZXRGb250OltVSUZvbnQgZm9udFdpdGhEZXNjcmlw
dG9yOmZvbnREZXNjcmlwdG9yIHNpemU6MjRdIHNlbmRlcjpuaWxdOwotICAgIEVYUEVDVF9XS19T
VFJFUSgiSGVsdmV0aWNhIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6
QCJmb250LWZhbWlseSJdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIjI0cHgiLCBbd2ViVmlldyBz
dHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsKLSAgICBFWFBFQ1Rf
V0tfU1RSRVEoIm5vcm1hbCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0
OkAiZm9udC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJub3JtYWwiLCBbd2ViVmll
dyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc3R5bGUiXSk7Ci0KLSAgICBb
d2ViVmlldyBzZXRGb250OltVSUZvbnQgZm9udFdpdGhOYW1lOkAiVGltZXNOZXdSb21hblBTLUJv
bGRNVCIgc2l6ZToxMl0gc2VuZGVyOm5pbF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJcIlRpbWVz
IE5ldyBSb21hblwiIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJm
b250LWZhbWlseSJdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIjEycHgiLCBbd2ViVmlldyBzdHls
ZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdKTsKLSAgICBFWFBFQ1RfV0tf
U1RSRVEoImJvbGQiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZv
bnQtd2VpZ2h0Il0pOwotICAgIEVYUEVDVF9XS19TVFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5
bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXN0eWxlIl0pOwotCi0gICAgZm9udERl
c2NyaXB0b3IgPSBbZm9udERlc2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoU3ltYm9saWNUcmFp
dHM6VUlGb250RGVzY3JpcHRvclRyYWl0SXRhbGljIHwgVUlGb250RGVzY3JpcHRvclRyYWl0Qm9s
ZF07Ci0gICAgW3dlYlZpZXcgc2V0Rm9udDpbVUlGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250
RGVzY3JpcHRvciBzaXplOjIwXSBzZW5kZXI6bmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIkhl
bHZldGljYSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1m
YW1pbHkiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCIyMHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9w
ZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KCJib2xkIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXdl
aWdodCJdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIml0YWxpYyIsIFt3ZWJWaWV3IHN0eWxlUHJv
cGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zdHlsZSJdKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgV0tf
QVBJX0VOQUJMRUQK
</data>
<flag name="review"
          id="371508"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="371563"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354361</attachid>
            <date>2018-11-09 11:37:25 -0800</date>
            <delta_ts>2018-11-09 12:16:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-191410-20181109113724.patch</filename>
            <type>text/plain</type>
            <size>53956</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkODgxN2I0MTYxYzAxYTg3
N2NkZDBiY2MwOWFlMzc5YTFjNzJhMzUuLjQyNzBhM2NiZjU0ZjgxOGFlODdkMDE1ZTEzZTNlODA2
ZjIyZjUzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMTgtMTEtMDkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1
Y2UgV0tXZWJWaWV3IFNQSSB0byBpbnNlcnQgbmVzdGVkIG9yZGVyZWQgYW5kIHVub3JkZXJlZCBs
aXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkx
NDEwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTg5ODYxMD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgUHJlZml4ZXMgYSBmZXcgaU9TLW9ubHkgU1BJ
IG1ldGhvZHMgZGVjbGFyZWQgb24gV0tXZWJWaWV3IGluIHIyMzY4Njcgd2l0aCB1bmRlcnNjb3Jl
cywgYW5kIGFsc28gZXhwb3NlcyBzb21lCisgICAgICAgIG1vcmUgY3Jvc3MtcGxhdGZvcm0gQ29j
b2EgZWRpdGluZyBTUEkuIE9uY2UgdGhlIHVucHJlZml4ZWQgU1BJIG1ldGhvZHMgYXJlIG5vIGxv
bmdlciB1c2VkIGJ5IGludGVybmFsIGNsaWVudHMsCisgICAgICAgIHRoZXNlIHdpbGwgbmVlZCB0
byBiZSByZW1vdmVkIChzZWUgZm9sbG93dXAgYnVnOiB3ZWJraXQub3JnL2IvMTkxNDUwKS4gU2Vl
IGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgYW5kIGV4
aXN0aW5nIEFQSSB0ZXN0cyBpbiBXS1dlYlZpZXdFZGl0QWN0aW9ucy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorCisgICAgICAgIEhvaXN0IHRoZSBkZWZp
bml0aW9uIChhbmQgdW5kZWZpbml0aW9uKSBvZiBgRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5U
VklFV2AgdG8gZW5jb21wYXNzIGJvdGggdGhlIFdLV2ViVmlldworICAgICAgICBpbXBsZW1lbnRh
dGlvbiBhbmQgdGhlIFdLV2ViVmlldyAoV0tQcml2YXRlKSBpbXBsZW1lbnRhdGlvbi4gVGhpcyBh
bGxvd3MgdXMgdG8gdXNlIHRoaXMgbWFjcm8gd2hlbiBpbXBsZW1lbnRpbmcKKyAgICAgICAgU1BJ
IG1ldGhvZHMgaW4gdGhlIFdLUHJpdmF0ZSBjYXRlZ29yeSwgYXMgd2VsbCBhcyBtZXRob2RzIHRo
YXQgYXJlIHBhcnQgb2YgdGhlIG1haW4gV0tXZWJWaWV3IGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICgtW1dLV2ViVmlldyBjYW5QZXJmb3JtQWN0aW9uOndpdGhTZW5kZXI6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyB0YXJnZXRGb3JBY3Rpb246d2l0aFNlbmRlcjpdKToKKworICAgICAgICBB
ZGQgZm9yd2FyZGluZyBmb3IgdGhlIG5ldyBlZGl0aW5nIGNvbW1hbmRzIGluIC1jYW5QZXJmb3Jt
QWN0aW9uOiBhbmQgLXRhcmdldEZvckFjdGlvbjouCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90
b2dnbGVTdHJpa2VUaHJvdWdoOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luY3JlYXNlTGlz
dExldmVsOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RlY3JlYXNlTGlzdExldmVsOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2NoYW5nZUxpc3RUeXBlOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NldEZvbnQ6c2VuZGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldEZvbnRT
aXplOnNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRUZXh0Q29sb3I6c2VuZGVy
Ol0pOgorCisgICAgICAgIEFkZCBkZWZpbml0aW9ucyBmb3IgdGhlIG5ldyBlZGl0aW5nIG1ldGhv
ZHMgb24gV0tXZWJWaWV3LCB1c2luZyBtYWNyb3MgKGBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORGAg
b24gbWFjT1MgYW5kCisgICAgICAgIGBGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVXYCBv
biBpT1MpIHRvIGhlbHAgcmVkdWNlIHRoZSBjb2RlIGR1cGxpY2F0aW9uLgorCisgICAgICAgICgt
W1dLV2ViVmlldyBfcGFzdGVBc1F1b3RhdGlvbjpdKTogRGVsZXRlZC4KKworICAgICAgICBSZW1v
dmUgdGhpcyBtZXRob2QgZGVmaW5pdGlvbiwgd2hpY2ggaXMgbm93IHJlcGxhY2VkIGJ5IG1hY3Jv
cyBvbiBpT1MgYW5kIG1hY09TLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmg6CisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBuZXcgU1BJIHRvIFdLV2Vi
VmlldyAoV0tQcml2YXRlKSwgYW5kIGFkZCBGSVhNRXMgdG8gcmVtb3ZlIG9sZCwgdW5wcmVmaXhl
ZCB2YXJpYW50cyBvZiB0aGUgU1BJLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0TGV2ZWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY3JlYXNlTGlzdExldmVsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSk6CisKKyAgICAgICAg
QWRkIHBsdW1iaW5nIGZvciB0aGVzZSBsaXN0IGVkaXRpbmcgY29tbWFuZHMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW5jcmVhc2VM
aXN0TGV2ZWxGb3JXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kZWNyZWFz
ZUxpc3RMZXZlbEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2NoYW5n
ZUxpc3RUeXBlRm9yV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdG9nZ2xl
U3RyaWtlVGhyb3VnaEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Nl
dEZvbnRGb3JXZWJWaWV3OnNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2V0
Rm9udFNpemVGb3JXZWJWaWV3OnNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
c2V0VGV4dENvbG9yRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaEZvcldlYlZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0Rm9udEZvcldlYlZpZXc6c2VuZGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IHNldEZvbnRTaXplRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgc2V0VGV4dENvbG9yRm9yV2ViVmlldzpzZW5kZXI6XSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKworICAg
ICAgICBDaGVjayBmb3IgdGhlIG5ldyBhY3Rpb24gc2VsZWN0b3JzIGhlcmUsIGFuZCBhZGRpdGlv
bmFsbHkgYWRkIHZhbGlkYXRpb24gZm9yIGBfcGFzdGVBc1F1b3RhdGlvbjpgLiBMZXQgdGhlCisg
ICAgICAgIHVucHJlZml4ZWQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyBzaW1wbHkgY2FsbCB0
aGUgcHJlZml4ZWQgdmVyc2lvbnMgKHRoZXNlIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBi
ZQorICAgICAgICByZW1vdmVkIGluIGEgZm9sbG93dXAgb25jZSBkb2luZyBzbyB3b3VsZCBub3Qg
YWZmZWN0IGFueSBjbGllbnRzIG9mIFdlYktpdCkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmluY3JlYXNlTGlzdExldmVsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGVjcmVhc2VMaXN0TGV2ZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpjaGFuZ2VMaXN0VHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKworICAgICAgICBBZGQgc3R1YnMgZm9yIHNldmVyYWwgbGlzdCBlZGl0aW5nIGNv
bW1hbmRzIHRoYXQgYXJlIHlldCB0byBiZSBob29rZWQgdXAgdG8gV2ViQ29yZS4gVGhlc2Ugd2ls
bCBiZSBpbXBsZW1lbnRlZAorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaC4KKwogMjAxOC0xMS0w
OSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJh
dyBjYXBzIGxvY2sgaW5kaWNhdG9yIGluIHBhc3N3b3JkIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNGIwNWY5Y2JjYzdiYjkx
NGQ2MTUyYjMwNmVkM2ZjZDM0MjI5MjNjMy4uYWMwMWNlYWQwYzllNmQ2MGYzMTI5YmIyNTBjZmI1
YWZmNThkNjNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC0yNTcsNiArMjU3LDEzIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5bGUoX1dLT3ZlCiB9
CiAjZW5kaWYKIAorI2RlZmluZSBGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVXKF9hY3Rp
b24pIFwKKyAgICAtICh2b2lkKV9hY3Rpb246KGlkKXNlbmRlciBcCisgICAgeyBcCisgICAgICAg
IGlmIChzZWxmLnVzZXNTdGFuZGFyZENvbnRlbnRWaWV3KSBcCisgICAgICAgICAgICBbX2NvbnRl
bnRWaWV3IF9hY3Rpb24gIyMgRm9yV2ViVmlldzpzZW5kZXJdOyBcCisgICAgfQorCiBAaW1wbGVt
ZW50YXRpb24gV0tXZWJWaWV3IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU+IF9uYXZpZ2F0aW9uU3RhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6
VUlEZWxlZ2F0ZT4gX3VpRGVsZWdhdGU7CkBAIC0xMzg0LDE3ICsxMzkxLDggQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIFtzdXBlciByZXNpZ25GaXJzdFJl
c3BvbmRlcl07CiB9CiAKLSNkZWZpbmUgRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVyhf
YWN0aW9uKSBcCi0gICAgLSAodm9pZClfYWN0aW9uOihpZClzZW5kZXIgXAotICAgIHsgXAotICAg
ICAgICBpZiAoc2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldykgXAotICAgICAgICAgICAgW19j
b250ZW50VmlldyBfYWN0aW9uICMjIEZvcldlYlZpZXc6c2VuZGVyXTsgXAotICAgIH0KLQogRk9S
X0VBQ0hfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklF
VykKIAotI3VuZGVmIEZPUldBUkRfQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcKLQogLSAoQk9PTClj
YW5QZXJmb3JtQWN0aW9uOihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogewogICAg
ICNkZWZpbmUgRk9SV0FSRF9DQU5QRVJGT1JNQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcoX2FjdGlv
bikgXApAQCAtMTQwMiwxNCArMTQwMCwxNiBAQCBGT1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElP
TihGT1JXQVJEX0FDVElPTl9UT19XS0NPTlRFTlRWSUVXKQogICAgICAgICAgICAgcmV0dXJuIHNl
bGYudXNlc1N0YW5kYXJkQ29udGVudFZpZXcgJiYgW19jb250ZW50VmlldyBjYW5QZXJmb3JtQWN0
aW9uRm9yV2ViVmlldzphY3Rpb24gd2l0aFNlbmRlcjpzZW5kZXJdOwogCiAgICAgRk9SX0VBQ0hf
V0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9DQU5QRVJGT1JNQUNUSU9OX1RPX1dLQ09OVEVO
VFZJRVcpCi0KLSAgICBGT1JXQVJEX0NBTlBFUkZPUk1BQ1RJT05fVE9fV0tDT05URU5UVklFVyhf
cGFzdGVBc1F1b3RhdGlvbikKKyAgICBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNU
SU9OKEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKQorICAgIEZPUldB
UkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXKHNldFRleHRDb2xvcjpzZW5kZXIp
CisgICAgRk9SV0FSRF9DQU5QRVJGT1JNQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcoc2V0Rm9udFNp
emU6c2VuZGVyKQorICAgIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVX
KHNldEZvbnQ6c2VuZGVyKQorICAgIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRF
TlRWSUVXKF9zZXRUZXh0Q29sb3I6c2VuZGVyKQorICAgIEZPUldBUkRfQ0FOUEVSRk9STUFDVElP
Tl9UT19XS0NPTlRFTlRWSUVXKF9zZXRGb250U2l6ZTpzZW5kZXIpCisgICAgRk9SV0FSRF9DQU5Q
RVJGT1JNQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcoX3NldEZvbnQ6c2VuZGVyKQogCiAgICAgI3Vu
ZGVmIEZPUldBUkRfQ0FOUEVSRk9STUFDVElPTl9UT19XS0NPTlRFTlRWSUVXCiAKLSAgICBpZiAo
YWN0aW9uID09IEBzZWxlY3RvcihzZXRUZXh0Q29sb3I6c2VuZGVyOikgfHwgYWN0aW9uID09IEBz
ZWxlY3RvcihzZXRGb250U2l6ZTpzZW5kZXI6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldEZv
bnQ6c2VuZGVyOikpCi0gICAgICAgIHJldHVybiBzZWxmLnVzZXNTdGFuZGFyZENvbnRlbnRWaWV3
ICYmIFtfY29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6YWN0aW9uIHdpdGhT
ZW5kZXI6c2VuZGVyXTsKLQogICAgIHJldHVybiBbc3VwZXIgY2FuUGVyZm9ybUFjdGlvbjphY3Rp
b24gd2l0aFNlbmRlcjpzZW5kZXJdOwogfQogCkBAIC0xNDIwLDggKzE0MjAsMTMgQEAgRk9SX0VB
Q0hfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykK
ICAgICAgICAgICAgIHJldHVybiBbX2NvbnRlbnRWaWV3IHRhcmdldEZvckFjdGlvbkZvcldlYlZp
ZXc6YWN0aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsKIAogICAgIEZPUl9FQUNIX1dLQ09OVEVOVFZJ
RVdfQUNUSU9OKEZPUldBUkRfVEFSR0VURk9SQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVcpCi0KLSAg
ICBGT1JXQVJEX1RBUkdFVEZPUkFDVElPTl9UT19XS0NPTlRFTlRWSUVXKF9wYXN0ZUFzUXVvdGF0
aW9uKQorICAgIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9U
QVJHRVRGT1JBQ1RJT05fVE9fV0tDT05URU5UVklFVykKKyAgICBGT1JXQVJEX1RBUkdFVEZPUkFD
VElPTl9UT19XS0NPTlRFTlRWSUVXKHNldFRleHRDb2xvcjpzZW5kZXIpCisgICAgRk9SV0FSRF9U
QVJHRVRGT1JBQ1RJT05fVE9fV0tDT05URU5UVklFVyhzZXRGb250U2l6ZTpzZW5kZXIpCisgICAg
Rk9SV0FSRF9UQVJHRVRGT1JBQ1RJT05fVE9fV0tDT05URU5UVklFVyhzZXRGb250OnNlbmRlcikK
KyAgICBGT1JXQVJEX1RBUkdFVEZPUkFDVElPTl9UT19XS0NPTlRFTlRWSUVXKF9zZXRUZXh0Q29s
b3I6c2VuZGVyKQorICAgIEZPUldBUkRfVEFSR0VURk9SQUNUSU9OX1RPX1dLQ09OVEVOVFZJRVco
X3NldEZvbnRTaXplOnNlbmRlcikKKyAgICBGT1JXQVJEX1RBUkdFVEZPUkFDVElPTl9UT19XS0NP
TlRFTlRWSUVXKF9zZXRGb250OnNlbmRlcikKIAogICAgICN1bmRlZiBGT1JXQVJEX1RBUkdFVEZP
UkFDVElPTl9UT19XS0NPTlRFTlRWSUVXCiAKQEAgLTQyOTIsNiArNDI5Nyw3MCBAQCBJR05PUkVf
V0FSTklOR1NfRU5ECiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLUHJpdmF0ZSkKIAor
I2lmIFBMQVRGT1JNKE1BQykKKworI2RlZmluZSBXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChjb21t
YW5kKSAtICh2b2lkKV8jI2NvbW1hbmQ6KGlkKXNlbmRlciB7IF9wYWdlLT5leGVjdXRlRWRpdENv
bW1hbmQoI2NvbW1hbmQgIyMgX3MpOyB9CisKK1dFQkNPUkVfUFJJVkFURV9DT01NQU5EKGFsaWdu
Q2VudGVyKQorV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoYWxpZ25KdXN0aWZpZWQpCitXRUJDT1JF
X1BSSVZBVEVfQ09NTUFORChhbGlnbkxlZnQpCitXRUJDT1JFX1BSSVZBVEVfQ09NTUFORChhbGln
blJpZ2h0KQorV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoaW5zZXJ0T3JkZXJlZExpc3QpCitXRUJD
T1JFX1BSSVZBVEVfQ09NTUFORChpbnNlcnRVbm9yZGVyZWRMaXN0KQorV0VCQ09SRV9QUklWQVRF
X0NPTU1BTkQoaW5zZXJ0TmVzdGVkT3JkZXJlZExpc3QpCitXRUJDT1JFX1BSSVZBVEVfQ09NTUFO
RChpbnNlcnROZXN0ZWRVbm9yZGVyZWRMaXN0KQorV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQoaW5k
ZW50KQorV0VCQ09SRV9QUklWQVRFX0NPTU1BTkQob3V0ZGVudCkKK1dFQkNPUkVfUFJJVkFURV9D
T01NQU5EKHBhc3RlQXNRdW90YXRpb24pOworCisjdW5kZWYgV0VCQ09SRV9QUklWQVRFX0NPTU1B
TkQKKworLSAodm9pZClfdG9nZ2xlU3RyaWtlVGhyb3VnaDooaWQpc2VuZGVyCit7CisgICAgX3Bh
Z2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgic3RyaWtldGhyb3VnaCJfcyk7Cit9CisKKy0gKHZvaWQp
X2luY3JlYXNlTGlzdExldmVsOihpZClzZW5kZXIKK3sKKyAgICBfcGFnZS0+aW5jcmVhc2VMaXN0
TGV2ZWwoKTsKK30KKworLSAodm9pZClfZGVjcmVhc2VMaXN0TGV2ZWw6KGlkKXNlbmRlcgorewor
ICAgIF9wYWdlLT5kZWNyZWFzZUxpc3RMZXZlbCgpOworfQorCistICh2b2lkKV9jaGFuZ2VMaXN0
VHlwZTooaWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmNoYW5nZUxpc3RUeXBlKCk7Cit9CisKKyNl
bmRpZiAvLyBQTEFURk9STShNQUMpCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCitGT1Jf
RUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dLQ09O
VEVOVFZJRVcpCisKKy0gKHZvaWQpX3NldEZvbnQ6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClz
ZW5kZXIKK3sKKyAgICBpZiAoc2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldykKKyAgICAgICAg
W19jb250ZW50VmlldyBzZXRGb250Rm9yV2ViVmlldzpmb250IHNlbmRlcjpzZW5kZXJdOworfQor
CistICh2b2lkKV9zZXRGb250U2l6ZTooQ0dGbG9hdClmb250U2l6ZSBzZW5kZXI6KGlkKXNlbmRl
cgoreworICAgIGlmIChzZWxmLnVzZXNTdGFuZGFyZENvbnRlbnRWaWV3KQorICAgICAgICBbX2Nv
bnRlbnRWaWV3IHNldEZvbnRTaXplRm9yV2ViVmlldzpmb250U2l6ZSBzZW5kZXI6c2VuZGVyXTsK
K30KKworLSAodm9pZClfc2V0VGV4dENvbG9yOihVSUNvbG9yICopY29sb3Igc2VuZGVyOihpZClz
ZW5kZXIKK3sKKyAgICBpZiAoc2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldykKKyAgICAgICAg
W19jb250ZW50VmlldyBzZXRUZXh0Q29sb3JGb3JXZWJWaWV3OmNvbG9yIHNlbmRlcjpzZW5kZXJd
OworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogLSAoQk9PTClfaXNFZGl0
YWJsZQogewogICAgIHJldHVybiBfcGFnZS0+aXNFZGl0YWJsZSgpOwpAQCAtNDYzOCwxNiArNDcw
Nyw2IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKICAgICByZXR1cm4gbmlsOwogfQogCi0tICh2b2lk
KV9wYXN0ZUFzUXVvdGF0aW9uOihpZClzZW5kZXIKLXsKLSNpZiBQTEFURk9STShNQUMpCi0gICAg
X2ltcGwtPmV4ZWN1dGVFZGl0Q29tbWFuZEZvclNlbGVjdG9yKF9jbWQpOwotI2Vsc2UKLSAgICBp
ZiAoc2VsZi51c2VzU3RhbmRhcmRDb250ZW50VmlldykKLSAgICAgICAgW19jb250ZW50VmlldyBf
cGFzdGVBc1F1b3RhdGlvbkZvcldlYlZpZXc6c2VuZGVyXTsKLSNlbmRpZgotfQotCiArIChCT09M
KV9oYW5kbGVzU2FmZUJyb3dzaW5nCiB7CiAgICAgcmV0dXJuIERFRkFVTFRfU0FGRV9CUk9XU0lO
R19FTkFCTEVEOwpAQCAtNjAyNiw2ICs2MDg1LDcgQEAgc3RhdGljIFdlYkNvcmU6OlVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24gdG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVJU2UK
IAogQGVuZAogCisjdW5kZWYgRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVwogCiBAaW1w
bGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1Rlc3RpbmcpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGE3MTY5ZTU0
NzU5MmVlZDRhNjczNzg4Y2FmMzZjZWEwOTM1NGRhMWYuLjIzZTY4ZGE5YjVlZjhhM2VkMTcxMzNl
ZDk3NzhhZjQ4M2MzOWI2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTg2LDExICsxODYsMzAgQEAgdHlwZWRl
ZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtIChfV0tBdHRhY2htZW50
ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZVdyYXBwZXI6KE5TRmlsZVdyYXBwZXIgKilmaWxl
V3JhcHBlciBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBjb21wbGV0aW9uOih2
b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChfV0tBdHRhY2htZW50ICop
X2F0dGFjaG1lbnRGb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKLS0gKElCQWN0
aW9uKV9wYXN0ZUFzUXVvdGF0aW9uOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KICsgKEJPT0wpX2hhbmRsZXNTYWZlQnJv
d3NpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKKy0gKElCQWN0aW9uKV9hbGlnbkNlbnRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoSUJBY3Rpb24pX2Fs
aWduSnVzdGlmaWVkOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfYWxpZ25MZWZ0OihpZClzZW5kZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Cist
IChJQkFjdGlvbilfYWxpZ25SaWdodDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAoSUJBY3Rpb24pX2luZGVudDooaWQp
c2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAoSUJBY3Rpb24pX291dGRlbnQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKElCQWN0aW9uKV90b2dnbGVT
dHJpa2VUaHJvdWdoOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfaW5zZXJ0T3JkZXJlZExpc3Q6KGlk
KXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKy0gKElCQWN0aW9uKV9pbnNlcnRVbm9yZGVyZWRMaXN0OihpZClzZW5kZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFj
dGlvbilfaW5zZXJ0TmVzdGVkT3JkZXJlZExpc3Q6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKElCQWN0aW9uKV9pbnNl
cnROZXN0ZWRVbm9yZGVyZWRMaXN0OihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfaW5jcmVhc2VMaXN0
TGV2ZWw6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKy0gKElCQWN0aW9uKV9kZWNyZWFzZUxpc3RMZXZlbDooaWQpc2VuZGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
LSAoSUJBY3Rpb24pX2NoYW5nZUxpc3RUeXBlOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistIChJQkFjdGlvbilfcGFzdGVB
c1F1b3RhdGlvbjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQorCistICh2b2lkKV9z
ZXRGb250OihVSUZvbnQgKilmb250IHNlbmRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUo
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3NldEZvbnRTaXplOihDR0Zsb2F0KWZvbnRTaXpl
IHNlbmRlcjooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKy0g
KHZvaWQpX3NldFRleHRDb2xvcjooVUlDb2xvciAqKWNvbG9yIHNlbmRlcjooaWQpc2VuZGVyIFdL
X0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKwogLy8gREVSRUNBVEVEOiBUaGUgc2V0
dGVycyBvZiB0aGUgdGhyZWUgZm9sbG93aW5nIGZ1bmN0aW9uIGFyZSBkZXByZWNhdGVkLCBwbGVh
c2UgdXNlIG92ZXJyaWRlTGF5b3V0UGFyYW1ldGVycy4KIC8vIERlZmluZSB0aGUgc21hbGxlc3Qg
c2l6ZSBhIHBhZ2UgdGFrZSB3aXRoIGEgcmVndWxhciB2aWV3cG9ydC4KIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgQ0dTaXplIF9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlOwpAQCAt
MzcxLDYgKzM5MCw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRn
ZSkgewogI2lmIFRBUkdFVF9PU19JUEhPTkUKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkgPFVJ
UmVzcG9uZGVyU3RhbmRhcmRFZGl0QWN0aW9ucz4KKy8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugb25j
ZSBpbnRlcm5hbCBjbGllbnRzIGhhdmUgbW92ZWQgdG8gdGhlIHVuZGVyc2NvcmUtcHJlZml4ZWQg
dmVyc2lvbnMuCiAtICh2b2lkKWFsaWduQ2VudGVyOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJM
RShpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClhbGlnbkp1c3RpZmllZDooaWQpc2VuZGVyIFdL
X0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpYWxpZ25MZWZ0OihpZClz
ZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGI3MmIzZTNhMmU1ZTg2MjlkYmVlMWZmODQx
MjY1Mzc0MTAwNWY5MC4uZDI5MjNlYjg4ZWQwNmY0NWQ0YjI4NWQ1ZWM1YzYyODVkMTE1ZWUzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xNzU2LDYgKzE3
NTYsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmluY3JlYXNlTGlzdExldmVsKCkK
K3sKKyAgICBpZiAoaXNWYWxpZCgpKQorICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkluY3JlYXNlTGlzdExldmVsKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OmRlY3JlYXNlTGlzdExldmVsKCkKK3sKKyAgICBpZiAoaXNWYWxpZCgpKQorICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRlY3JlYXNlTGlzdExldmVs
KCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUxpc3RUeXBlKCkK
K3sKKyAgICBpZiAoaXNWYWxpZCgpKQorICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNoYW5nZUxpc3RUeXBlKCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZUZvbnRBdHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpCiB7CiAg
ICAgbV9jYWNoZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQucmVzZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjE1YTA4ZDg1YWMyMjY4NjRjNTIx
YzhlZDgwNzc4YWMzZWEyOGI2Zi4uNTM3MWY4ZDAyNmU3MzE3ZWU5NzNlZmFlMmYyYWU3NTkzODg3
MmMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU0NSw2ICs1
NDUsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2VsZWN0ZWRSYW5nZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZWRpdG9yU3RhdGUuc2VsZWN0aW9uSXNSYW5nZTsgfQogICAgIGJvb2wgaXNDb250ZW50
RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX2VkaXRvclN0YXRlLmlzQ29udGVudEVkaXRhYmxl
OyB9CiAKKyAgICB2b2lkIGluY3JlYXNlTGlzdExldmVsKCk7CisgICAgdm9pZCBkZWNyZWFzZUxp
c3RMZXZlbCgpOworICAgIHZvaWQgY2hhbmdlTGlzdFR5cGUoKTsKKwogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+IGNhY2hlZEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlv
blN0YXJ0OyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCA1NjBlYTUz
MGUyODFmZjQ3Mzk2Zjg1YThhMTdiYzVjM2UyOGJjOTM0Li41YzQxNDI1NmY5YjU2OGRkYTVhNjhl
M2JhMjkyYWZmNjkzNzc0YjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xMzQsNiArMTM0LDIzIEBAIHR5
cGVkZWYgc3RkOjpwYWlyPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QsIElu
dGVyYWN0aW9uSW5mb3JtYXRpb25DCiAgICAgTShhbGlnbkNlbnRlcikgXAogICAgIE0oYWxpZ25K
dXN0aWZpZWQpCiAKKyNkZWZpbmUgRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElP
TihNKSBcCisgICAgTShfYWxpZ25DZW50ZXIpIFwKKyAgICBNKF9hbGlnbkp1c3RpZmllZCkgXAor
ICAgIE0oX2FsaWduTGVmdCkgXAorICAgIE0oX2FsaWduUmlnaHQpIFwKKyAgICBNKF9pbmRlbnQp
IFwKKyAgICBNKF9vdXRkZW50KSBcCisgICAgTShfdG9nZ2xlU3RyaWtlVGhyb3VnaCkgXAorICAg
IE0oX2luc2VydE9yZGVyZWRMaXN0KSBcCisgICAgTShfaW5zZXJ0VW5vcmRlcmVkTGlzdCkgXAor
ICAgIE0oX2luc2VydE5lc3RlZE9yZGVyZWRMaXN0KSBcCisgICAgTShfaW5zZXJ0TmVzdGVkVW5v
cmRlcmVkTGlzdCkgXAorICAgIE0oX2luY3JlYXNlTGlzdExldmVsKSBcCisgICAgTShfZGVjcmVh
c2VMaXN0TGV2ZWwpIFwKKyAgICBNKF9jaGFuZ2VMaXN0VHlwZSkgXAorICAgIE0oX3Bhc3RlQXNR
dW90YXRpb24pCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV0tTZWxlY3Rpb25EcmF3
aW5nSW5mbyB7CkBAIC0zMzksNyArMzU2LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRh
IHsKICNkZWZpbmUgREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcoX2Fj
dGlvbikgXAogICAgIC0gKHZvaWQpX2FjdGlvbiAjIyBGb3JXZWJWaWV3OihpZClzZW5kZXI7CiBG
T1JfRUFDSF9XS0NPTlRFTlRWSUVXX0FDVElPTihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9O
X0ZPUl9XRUJfVklFVykKLURFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVX
KF9wYXN0ZUFzUXVvdGF0aW9uKQorRk9SX0VBQ0hfUFJJVkFURV9XS0NPTlRFTlRWSUVXX0FDVElP
TihERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVykKICN1bmRlZiBERUNM
QVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVwogCiAtICh2b2lkKXNldEZvbnRG
b3JXZWJWaWV3OihVSUZvbnQgKilmb250RmFtaWx5IHNlbmRlcjooaWQpc2VuZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggYzgwNmUxMDJhMWIxNGViOWY4MzY4Mjg3OWVlMGQ4MzBiN2Q4ODI4MS4uNzBj
ODgzNjc3NDgyZjk5YWYyNjMzMjcyNjkyYzllNjRjNjgzMGQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC0yMTk0LDggKzIxOTQsNyBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vz
c2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKICAgICB9CiAKIEZPUl9FQUNIX1dLQ09O
VEVOVFZJRVdfQUNUSU9OKEZPUldBUkRfQUNUSU9OX1RPX1dLV0VCVklFVykKLQotRk9SV0FSRF9B
Q1RJT05fVE9fV0tXRUJWSUVXKF9wYXN0ZUFzUXVvdGF0aW9uKQorRk9SX0VBQ0hfUFJJVkFURV9X
S0NPTlRFTlRWSUVXX0FDVElPTihGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcpCiAKICN1bmRl
ZiBGT1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcKIApAQCAtMjI4NSwxOCArMjI4NCwzNyBAQCBG
T1JXQVJEX0FDVElPTl9UT19XS1dFQlZJRVcoX3Bhc3RlQXNRdW90YXRpb24pCiAgICAgW1tVSUtl
eWJvYXJkSW1wbCBzaGFyZWRJbnN0YW5jZV0gcmVwbGFjZVRleHQ6c2VuZGVyXTsKIH0KIAotI2Rl
ZmluZSBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoY29tbWFuZCkgLSAodm9pZCljb21tYW5k
ICMjIEZvcldlYlZpZXc6KGlkKXNlbmRlciB7IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoI2Nv
bW1hbmQgIyMgX3MpOyB9Ci0KKyNkZWZpbmUgV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGNv
bW1hbmQpIFwKKyAgICAtICh2b2lkKV8gIyMgY29tbWFuZCAjIyBGb3JXZWJWaWV3OihpZClzZW5k
ZXIgeyBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21tYW5kICMjIF9zKTsgfSBcCisgICAg
LSAodm9pZCljb21tYW5kICMjIEZvcldlYlZpZXc6KGlkKXNlbmRlciB7IFtzZWxmIF8gIyMgY29t
bWFuZCAjIyBGb3JXZWJWaWV3OnNlbmRlcl07IH0KIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklF
VyhpbnNlcnRPcmRlcmVkTGlzdCk7CiBXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoaW5zZXJ0
VW5vcmRlcmVkTGlzdCk7CitXRUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoaW5zZXJ0TmVzdGVk
T3JkZXJlZExpc3QpOworV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGluc2VydE5lc3RlZFVu
b3JkZXJlZExpc3QpOwogV0VCQ09SRV9DT01NQU5EX0ZPUl9XRUJWSUVXKGluZGVudCk7CiBXRUJD
T1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcob3V0ZGVudCk7CiBXRUJDT1JFX0NPTU1BTkRfRk9SX1dF
QlZJRVcoYWxpZ25MZWZ0KTsKIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnblJpZ2h0
KTsKIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkNlbnRlcik7CiBXRUJDT1JFX0NP
TU1BTkRfRk9SX1dFQlZJRVcoYWxpZ25KdXN0aWZpZWQpOworI3VuZGVmIFdFQkNPUkVfQ09NTUFO
RF9GT1JfV0VCVklFVwogCi0tICh2b2lkKXRvZ2dsZVN0cmlrZVRocm91Z2hGb3JXZWJWaWV3Oihp
ZClzZW5kZXIKKy0gKHZvaWQpX2luY3JlYXNlTGlzdExldmVsRm9yV2ViVmlldzooaWQpc2VuZGVy
Cit7CisgICAgX3BhZ2UtPmluY3JlYXNlTGlzdExldmVsKCk7Cit9CisKKy0gKHZvaWQpX2RlY3Jl
YXNlTGlzdExldmVsRm9yV2ViVmlldzooaWQpc2VuZGVyCit7CisgICAgX3BhZ2UtPmRlY3JlYXNl
TGlzdExldmVsKCk7Cit9CisKKy0gKHZvaWQpX2NoYW5nZUxpc3RUeXBlRm9yV2ViVmlldzooaWQp
c2VuZGVyCit7CisgICAgX3BhZ2UtPmNoYW5nZUxpc3RUeXBlKCk7Cit9CisKKy0gKHZvaWQpX3Rv
Z2dsZVN0cmlrZVRocm91Z2hGb3JXZWJWaWV3OihpZClzZW5kZXIKIHsKICAgICBfcGFnZS0+ZXhl
Y3V0ZUVkaXRDb21tYW5kKCJTdHJpa2VUaHJvdWdoIl9zKTsKIH0KQEAgLTIzMTEsNyArMjMyOSw3
IEBAIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkp1c3RpZmllZCk7CiAgICAgX3Bh
Z2UtPmV4ZWN1dGVFZGl0Q29tbWFuZCgiRm9udFNpemVEZWx0YSJfcywgIi0xIl9zKTsKIH0KIAot
LSAodm9pZClzZXRGb250Rm9yV2ViVmlldzooVUlGb250ICopZm9udCBzZW5kZXI6KGlkKXNlbmRl
cgorLSAodm9pZClfc2V0Rm9udEZvcldlYlZpZXc6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClz
ZW5kZXIKIHsKICAgICBXZWJDb3JlOjpGb250Q2hhbmdlcyBjaGFuZ2VzOwogICAgIGNoYW5nZXMu
c2V0Rm9udEZhbWlseShmb250LmZhbWlseU5hbWUpOwpAQCAtMjMyMiwxOSArMjM0MCwzNyBAQCBX
RUJDT1JFX0NPTU1BTkRfRk9SX1dFQlZJRVcoYWxpZ25KdXN0aWZpZWQpOwogICAgIF9wYWdlLT5j
aGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpOwogfQogCi0tICh2b2lkKXNldEZvbnRTaXplRm9y
V2ViVmlldzooQ0dGbG9hdClmb250U2l6ZSBzZW5kZXI6KGlkKXNlbmRlcgorLSAodm9pZClfc2V0
Rm9udFNpemVGb3JXZWJWaWV3OihDR0Zsb2F0KWZvbnRTaXplIHNlbmRlcjooaWQpc2VuZGVyCiB7
CiAgICAgV2ViQ29yZTo6Rm9udENoYW5nZXMgY2hhbmdlczsKICAgICBjaGFuZ2VzLnNldEZvbnRT
aXplKGZvbnRTaXplKTsKICAgICBfcGFnZS0+Y2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKTsK
IH0KIAotLSAodm9pZClzZXRUZXh0Q29sb3JGb3JXZWJWaWV3OihVSUNvbG9yICopY29sb3Igc2Vu
ZGVyOihpZClzZW5kZXIKKy0gKHZvaWQpX3NldFRleHRDb2xvckZvcldlYlZpZXc6KFVJQ29sb3Ig
Kiljb2xvciBzZW5kZXI6KGlkKXNlbmRlcgogewogICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1h
bmQoIkZvcmVDb2xvciJfcywgV2ViQ29yZTo6Q29sb3IoY29sb3IuQ0dDb2xvcikuc2VyaWFsaXpl
ZCgpKTsKIH0KIAotI3VuZGVmIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVworLSAodm9pZCl0
b2dnbGVTdHJpa2VUaHJvdWdoRm9yV2ViVmlldzooaWQpc2VuZGVyCit7CisgICAgW3NlbGYgX3Rv
Z2dsZVN0cmlrZVRocm91Z2hGb3JXZWJWaWV3OnNlbmRlcl07Cit9CisKKy0gKHZvaWQpc2V0Rm9u
dEZvcldlYlZpZXc6KFVJRm9udCAqKWZvbnQgc2VuZGVyOihpZClzZW5kZXIKK3sKKyAgICBbc2Vs
ZiBfc2V0Rm9udEZvcldlYlZpZXc6Zm9udCBzZW5kZXI6c2VuZGVyXTsKK30KKworLSAodm9pZClz
ZXRGb250U2l6ZUZvcldlYlZpZXc6KENHRmxvYXQpZm9udFNpemUgc2VuZGVyOihpZClzZW5kZXIK
K3sKKyAgICBbc2VsZiBfc2V0Rm9udFNpemVGb3JXZWJWaWV3OmZvbnRTaXplIHNlbmRlcjpzZW5k
ZXJdOworfQorCistICh2b2lkKXNldFRleHRDb2xvckZvcldlYlZpZXc6KFVJQ29sb3IgKiljb2xv
ciBzZW5kZXI6KGlkKXNlbmRlcgoreworICAgIFtzZWxmIF9zZXRUZXh0Q29sb3JGb3JXZWJWaWV3
OmNvbG9yIHNlbmRlcjpzZW5kZXJdOworfQogCiAtIChOU0RpY3Rpb25hcnkgKil0ZXh0U3R5bGlu
Z0F0UG9zaXRpb246KFVJVGV4dFBvc2l0aW9uICopcG9zaXRpb24gaW5EaXJlY3Rpb246KFVJVGV4
dFN0b3JhZ2VEaXJlY3Rpb24pZGlyZWN0aW9uCiB7CkBAIC0yMzkyLDExICsyNDI4LDE2IEBAIFdF
QkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkp1c3RpZmllZCk7CiAgICAgICAgIHJldHVy
biBlZGl0b3JTdGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSAmJiBlZGl0b3JTdGF0ZS5zZWxl
Y3Rpb25Jc1JhbmdlICYmICFfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnM7CiAgICAgaWYgKF9zaG93
aW5nVGV4dFN0eWxlT3B0aW9ucykKICAgICAgICAgcmV0dXJuIChhY3Rpb24gPT0gQHNlbGVjdG9y
KHRvZ2dsZUJvbGRmYWNlOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVJdGFsaWNzOikg
fHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVVbmRlcmxpbmU6KSk7Ci0gICAgaWYgKGFjdGlv
biA9PSBAc2VsZWN0b3IodG9nZ2xlQm9sZGZhY2U6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRv
Z2dsZUl0YWxpY3M6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVVuZGVybGluZTopIHx8
IGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlU3RyaWtlVGhyb3VnaDopCi0gICAgICAgIHx8IGFj
dGlvbiA9PSBAc2VsZWN0b3IoaW5zZXJ0T3JkZXJlZExpc3Q6KSB8fCBhY3Rpb24gPT0gQHNlbGVj
dG9yKGluc2VydFVub3JkZXJlZExpc3Q6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluZGVudDop
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Iob3V0ZGVudDopCisgICAgLy8gRklYTUU6IFNvbWUgb2Yg
dGhlIGZvbGxvd2luZyBjaGVja3Mgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpbnRlcm5hbCBjbGll
bnRzIG1vdmUgdG8gdGhlIHVuZGVyc2NvcmUtcHJlZml4ZWQgdmVyc2lvbnMuCisgICAgaWYgKGFj
dGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlQm9sZGZhY2U6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KHRvZ2dsZUl0YWxpY3M6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVVuZGVybGluZTop
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX3RvZ2dsZVN0cmlrZVRocm91Z2g6KQorICAgICAgICB8
fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9hbGlnbkxlZnQ6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KF9hbGlnblJpZ2h0OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihfYWxpZ25DZW50ZXI6KSB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKF9hbGlnbkp1c3RpZmllZDopCisgICAgICAgIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IoX3NldFRleHRDb2xvcjpzZW5kZXI6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KF9zZXRGb250OnNlbmRlcjopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX3NldEZvbnRTaXplOnNl
bmRlcjopCisgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX2luc2VydE9yZGVyZWRMaXN0
OikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihfaW5zZXJ0VW5vcmRlcmVkTGlzdDopIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3IoX2luc2VydE5lc3RlZE9yZGVyZWRMaXN0OikgfHwgYWN0aW9uID09IEBz
ZWxlY3RvcihfaW5zZXJ0TmVzdGVkVW5vcmRlcmVkTGlzdDopCisgICAgICAgIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IoX2luY3JlYXNlTGlzdExldmVsOikgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihf
ZGVjcmVhc2VMaXN0TGV2ZWw6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9jaGFuZ2VMaXN0VHlw
ZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX2luZGVudDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IoX291dGRlbnQ6KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluY3JlYXNlU2l6
ZTopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVjcmVhc2VTaXplOikKKyAgICAgICAgfHwgYWN0
aW9uID09IEBzZWxlY3Rvcih0b2dnbGVTdHJpa2VUaHJvdWdoOikgfHwgYWN0aW9uID09IEBzZWxl
Y3RvcihpbnNlcnRPcmRlcmVkTGlzdDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5zZXJ0VW5v
cmRlcmVkTGlzdDopIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5kZW50OikgfHwgYWN0aW9uID09
IEBzZWxlY3RvcihvdXRkZW50OikKICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGln
bkxlZnQ6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGFsaWduUmlnaHQ6KSB8fCBhY3Rpb24gPT0g
QHNlbGVjdG9yKGFsaWduQ2VudGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnbkp1c3Rp
ZmllZDopCi0gICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5jcmVhc2VTaXplOikgfHwg
YWN0aW9uID09IEBzZWxlY3RvcihkZWNyZWFzZVNpemU6KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KHNldFRleHRDb2xvcjpzZW5kZXI6KQotICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNl
dEZvbnQ6c2VuZGVyOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihzZXRGb250U2l6ZTpzZW5kZXI6
KSkgeworICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldFRleHRDb2xvcjpzZW5kZXI6
KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldEZvbnQ6c2VuZGVyOikgfHwgYWN0aW9uID09IEBz
ZWxlY3RvcihzZXRGb250U2l6ZTpzZW5kZXI6KSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgbW9yZSBudWFuY2VkIGluIHRoZSBmdXR1cmUsIHJhdGhlciB0aGFuIHJldHVybmlu
ZyBZRVMgZm9yIGFsbCByaWNobHkgZWRpdGFibGUgYXJlYXMuIEZvciBpbnN0YW5jZSwgb3V0ZGVu
dDogc2hvdWxkIGJlIGRpc2FibGVkIHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBhbHJlYWR5CiAgICAg
ICAgIC8vIGF0IHRoZSBvdXRlcm1vc3QgaW5kZW50YXRpb24gbGV2ZWwuCiAgICAgICAgIHJldHVy
biBlZGl0b3JTdGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZTsKQEAgLTI0MDQsNyArMjQ0NSw3
IEBAIFdFQkNPUkVfQ09NTUFORF9GT1JfV0VCVklFVyhhbGlnbkp1c3RpZmllZCk7CiAgICAgaWYg
KGFjdGlvbiA9PSBAc2VsZWN0b3IoY3V0OikpCiAgICAgICAgIHJldHVybiAhZWRpdG9yU3RhdGUu
aXNJblBhc3N3b3JkRmllbGQgJiYgZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFibGUgJiYgZWRp
dG9yU3RhdGUuc2VsZWN0aW9uSXNSYW5nZTsKICAgICAKLSAgICBpZiAoYWN0aW9uID09IEBzZWxl
Y3RvcihwYXN0ZTopKSB7CisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGFzdGU6KSB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKF9wYXN0ZUFzUXVvdGF0aW9uOikpIHsKICAgICAgICAgaWYgKGVk
aXRvclN0YXRlLnNlbGVjdGlvbklzTm9uZSB8fCAhZWRpdG9yU3RhdGUuaXNDb250ZW50RWRpdGFi
bGUpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAgICAgICAgIFVJUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCA9IFtVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2MmRiYTNmYjI4NzcxMGQwNDA2
ODRhZjAyNWNjMDAyZDQyNzg4YmNhLi5kODJkNjUyZTlmMTEwNmFlYjBhZjQwYWYxMjI1ODYwYWVl
Y2E3MWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTE1MCw2ICsxMTUwLDIxIEBAIHZvaWQgV2ViUGFnZTo6c2V0RWRpdGFibGUoYm9vbCBl
ZGl0YWJsZSkKICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aW5jcmVhc2VMaXN0TGV2ZWwoKQor
eworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisKK3ZvaWQgV2ViUGFnZTo6ZGVj
cmVhc2VMaXN0TGV2ZWwoKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisK
K3ZvaWQgV2ViUGFnZTo6Y2hhbmdlTGlzdFR5cGUoKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1w
bGVtZW50ZWQuCit9CisKIGJvb2wgV2ViUGFnZTo6aXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29u
c3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDk5ZjQ0MjRiN2Y5ZmExYjJhZmVkYTI4ZGU1
ZTQ3MWViYTAyZTYwYzYuLmZjNGQyNWNkYzY4Y2U1N2Q0M2UzMjRhMTI0NjVkNjUyMjI5NjA5MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTExODYs
NiArMTE4NiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RWRpdGFibGUoYm9vbCk7CiAK
KyAgICB2b2lkIGluY3JlYXNlTGlzdExldmVsKCk7CisgICAgdm9pZCBkZWNyZWFzZUxpc3RMZXZl
bCgpOworICAgIHZvaWQgY2hhbmdlTGlzdFR5cGUoKTsKKwogICAgIHZvaWQgc2V0TmVlZHNGb250
QXR0cmlidXRlcyhib29sKTsKIAogICAgIHZvaWQgbW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCA3NjI2ZmJiMjY1MzRmNDc2NjdkZDYyMWRmNzc3ZjUwMzA2ODA1
MmMzLi4xODA1YzkwNjk0NzAzMWZkZjk4ZWFhOTM3OTIyMjkzNjNmOWIyYjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTIxMiw2ICsyMTIsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgVmFsaWRhdGVDb21tYW5kKFN0cmluZyBuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBFeGVjdXRlRWRpdENvbW1hbmQoU3RyaW5nIG5hbWUsIFN0cmluZyBhcmd1
bWVudCkKIAorICAgIEluY3JlYXNlTGlzdExldmVsKCkKKyAgICBEZWNyZWFzZUxpc3RMZXZlbCgp
CisgICAgQ2hhbmdlTGlzdFR5cGUoKQorCiAgICAgU2V0TmVlZHNGb250QXR0cmlidXRlcyhib29s
IG5lZWRzRm9udEF0dHJpYnV0ZXMpCiAKICAgICBSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVj
dGlvblN0YXJ0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVkNzNiM2RjZTdkZGEyYWM1MTE2
OGY5NTYxMzIyYTM3N2UyNTE5MTguLmYyMjA4MThlOTBlZTBmZmQyMTAyZmI3M2JkNjBiNjViMTdj
MDZjNjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAxOC0xMS0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEludHJvZHVjZSBXS1dlYlZpZXcgU1BJIHRv
IGluc2VydCBuZXN0ZWQgb3JkZXJlZCBhbmQgdW5vcmRlcmVkIGxpc3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0MTAKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ1ODk4NjEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4K
KworICAgICAgICBNb3ZlIFdLV2ViVmlld0VkaXRBY3Rpb25zIGZyb20gaU9TIHRvIFdlYktpdENv
Y29hLCBhbmQgZW5hYmxlIHRoZSByZWxldmFudCBXS1dlYlZpZXdFZGl0QWN0aW9ucyB0ZXN0cyBv
biBtYWNPUy4KKyAgICAgICAgQWRkaXRpb25hbGx5LCBhZGQgbmV3IEFQSSB0ZXN0cyB0byB2ZXJp
ZnkgdGhhdCBgLV9wYXN0ZUFzUXVvdGF0aW9uOmAgYW5kIGAtX2luc2VydE5lc3RlZChVbilPcmRl
cmVkTGlzdDpgIGFyZQorICAgICAgICBob29rZWQgdXAgdG8gdGhlaXIgcmVzcGVjdGl2ZSBlZGl0
aW5nIGNvbW1hbmRzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld0VkaXRBY3Rpb25zLm1tLgorICAgICAgICAo
LVtUZXN0V0tXZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6XSk6CisgICAgICAgICgtW1Rlc3RX
S1dlYlZpZXcgaW5zZXJ0U3RyaW5nOl0pOgorCisgICAgICAgIEFkZCBhIGhlbHBlciBtZXRob2Qg
dG8gaW5zZXJ0IGEgcGllY2Ugb2YgdGV4dC4gVGhpcyBhYnN0cmFjdHMgcGxhdGZvcm0gZGlmZmVy
ZW5jZXMgYmV0d2VlbiBpT1MgYW5kIG1hY09TLCBieQorICAgICAgICBpbnZva2luZyB0aGUgV0tX
ZWJWaWV3IGRpcmVjdGx5IG9uIG1hY09TIGFuZCBjYWxsaW5nIG9uIHRoZSBjb250ZW50IHZpZXcg
b24gaU9TLgorCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJWaWV3Rm9yRWRpdEFjdGlvblRl
c3RpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMTEtMDkgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGbGF0cGFr
XSBSZWZhY3RvcmluZyBhbmQgZHJpdmUtYnkgZml4ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNmVlZjczNTVkYTZkMWY5Y2QwNWNlYWU4M2EwNDU3OGQ2OTE3YjBkOC4uZDVhOGNhYThmMzZk
ZGYzYmZjOTc5ZTQwZjYyNGJiMDc5Zjk2MGZhYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTg0Niw2ICs4NDYsNyBAQAogCQlGNDZBMDk1QTFFRDhBNkU2MDBENEFBNTUgLyogYXBwbGUuZ2lm
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
N0QzMEVCMUVEMjg2MTkwMDA0ODJFMSAvKiBhcHBsZS5naWYgKi87IH07CiAJCUY0NkEwOTVCMUVE
OEE2RTYwMEQ0QUE1NSAvKiBnaWYtYW5kLWZpbGUtaW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDdEMzBFRDFFRDI4QTZDMDAw
NDgyRTEgLyogZ2lmLWFuZC1maWxlLWlucHV0Lmh0bWwgKi87IH07CiAJCUY0NzcyODk5MUU0QUUz
QzEwMDdBQkY2QSAvKiBmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3NzI4OTgxRTRBRTNB
RDAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLzsgfTsKKwkJRjQ4
MTFFNTkyMTk0MEJERTAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MTFFNTgyMTk0MEI0NDAw
QTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tICovOyB9OwogCQlGNDg1NkNBMzFFNjQ5
RUE4MDA5RDdFRTcgLyogYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4NTZDQTIxRTY0OThBODAwOUQ3
RUU3IC8qIGF0dGFjaG1lbnQtZWxlbWVudC5odG1sICovOyB9OwogCQlGNDg2QjFEMDFGNjc5NTIz
MDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODZCMUNGMUY2Nzk0RkYw
MEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgKi87IH07CiAJCUY0QTMy
RUM0MUYwNUYzODUwMDQ3QzU0NCAvKiBkcmFnc3RhcnQtY2hhbmdlLXNlbGVjdGlvbi1vZmZzY3Jl
ZW4uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEEzMkVDMzFGMDVGMzc4MDA0N0M1NDQgLyogZHJhZ3N0YXJ0LWNoYW5nZS1zZWxlY3Rp
b24tb2Zmc2NyZWVuLmh0bWwgKi87IH07CkBAIC04NzgsNyArODc5LDYgQEAKIAkJRjRGNUJCNTIy
MTY2N0JBQTAwMkQwNkI5IC8qIFRlc3RGb250T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RjVCQjUxMjE2NjdCQUEwMDJEMDZCOSAvKiBU
ZXN0Rm9udE9wdGlvbnMubW0gKi87IH07CiAJCUY0RkE5MTgxMUU2MTg0OUIwMDdCOEMxRCAvKiBX
S1dlYlZpZXdNYWNFZGl0aW5nVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEZBOTE3RjFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFj
RWRpdGluZ1Rlc3RzLm1tICovOyB9OwogCQlGNEZBOTE4MzFFNjE4NTdCMDA3QjhDMUQgLyogZG91
YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RkE5MTgyMUU2MTg1
NjYwMDdCOEMxRCAvKiBkb3VibGUtY2xpY2stZG9lcy1ub3Qtc2VsZWN0LXRyYWlsaW5nLXNwYWNl
Lmh0bWwgKi87IH07Ci0JCUY0RkI2ODI1MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0
QWN0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0RkI2ODI0MjE2NDNFRkMwMDM0NjA3QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSAqLzsg
fTsKIAkJRjRGQzA3NzcyMEYwMTNCNjAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0
b25lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjRGQzA3NzYyMEYwMTA4MTAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0
b25lLmh0bWwgKi87IH07CiAJCUY2NjBBQTExMTVBNUY2MzEwMDNBMTI0MyAvKiBHZXRJbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjY2MEFBMEYxNUE1RjYyNDAw
M0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNr
X0J1bmRsZS5jcHAgKi87IH07CiAJCUY2NjBBQTE1MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2NjBBQTE0MTVBNjFB
QkYwMDNBMTI0MyAvKiBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFj
a1dpbnNfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTIxMzEsNiArMjEzMSw3IEBACiAJCUY0NzcyODk4
MUU0QUUzQUQwMDdBQkY2QSAvKiBmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ3RDMwRUIxRUQyODYxOTAwMDQ4MkUxIC8q
IGFwcGxlLmdpZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGltYWdlLmdpZjsgcGF0aCA9IGFwcGxlLmdpZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjQ3RDMwRUQxRUQyOEE2QzAwMDQ4MkUxIC8qIGdpZi1hbmQtZmlsZS1pbnB1dC5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImdpZi1hbmQtZmlsZS1pbnB1dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjQ4MTFFNTgyMTk0MEI0NDAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rp
b25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3
RWRpdEFjdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODU2Q0EyMUU2
NDk4QTgwMDlEN0VFNyAvKiBhdHRhY2htZW50LWVsZW1lbnQuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJhdHRhY2htZW50LWVsZW1lbnQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0ODZCMUNGMUY2Nzk0RkYwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0
RHJhZ0ltYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiRGF0YVRyYW5zZmVy
LXNldERyYWdJbWFnZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5MzI0
N0MxRjQ0REY4RDAwNkY0MzM2IC8qIFVJS2l0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVJS2l0U1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTY2LDcgKzIxNjcsNiBAQAogCQlG
NEY1QkI1MTIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25zLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVGVzdEZvbnRPcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNEZBOTE3RjFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3Rz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3TWFj
RWRpdGluZ1Rlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZBOTE4MjFF
NjE4NTY2MDA3QjhDMUQgLyogZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1z
cGFjZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBuYW1lID0gImRvdWJsZS1jbGljay1kb2Vz
LW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCI7IHBhdGggPSAiVGVzdHMvV2ViS2l0Q29j
b2EvZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sIjsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQlGNEZCNjgyNDIxNjQzRUZDMDAzNDYwN0EgLyog
V0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdF
ZGl0QWN0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGQzA3NzYyMEYw
MTA4MTAwQ0EwNDNDIC8qIHNpZ25pZmljYW50LXRleHQtbWlsZXN0b25lLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAic2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY2NjBBQTBDMTVBNUYwNjEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUlu
aXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2NjBBQTBGMTVBNUY2MjQw
MDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFj
a19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MTQsNiArMjUxNCw3IEBACiAJCQkJN0M0MTdG
MzExRDE5RTE0ODAwQjhFRjUzIC8qIFdLV2ViVmlld0RlZmF1bHROYXZpZ2F0aW9uRGVsZWdhdGUu
bW0gKi8sCiAJCQkJNDZFNjZBOEYxRjBENzU1OTAwMjZEODNDIC8qIFdLV2ViVmlld0RpYWdub3N0
aWNMb2dnaW5nLm1tICovLAogCQkJCTJEQjY0Nzg3MUY0MTYxRjcwMDUxQTg5RSAvKiBXS1dlYlZp
ZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24ubW0gKi8sCisJCQkJRjQ4MTFFNTgyMTk0
MEI0NDAwQTVFMEZEIC8qIFdLV2ViVmlld0VkaXRBY3Rpb25zLm1tICovLAogCQkJCTBGM0I5NEE1
MUE3NzI2NkMwMERFMzI3MiAvKiBXS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gKi8sCiAJ
CQkJRDNCRTVFMzQxRTRDRTg1RTAwRkQ1NjNBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tICov
LAogCQkJCTM3QTlEQkU3MjEzQjRDOTMwMEQyNjFBMiAvKiBXS1dlYlZpZXdTZXJ2ZXJUcnVzdEtW
Qy5tbSAqLywKQEAgLTI2MzIsNyArMjYzMyw2IEBACiAJCQkJRjQ2ODQ5QkQxRUVGNThFNDAwQjkz
N0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tICovLAogCQkJCUY0M0UzQkJFMjBEQURBMUUwMEE0
RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSAqLywKIAkJCQk1MTQ5NThCRDFGNzQyN0FDMDBF
ODdCQUQgLyogV0tXZWJWaWV3QXV0b2ZpbGxUZXN0cy5tbSAqLywKLQkJCQlGNEZCNjgyNDIxNjQz
RUZDMDAzNDYwN0EgLyogV0tXZWJWaWV3RWRpdEFjdGlvbnMubW0gKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00MTc1LDcgKzQxNzUsNyBA
QAogCQkJCTdDNDE3RjMzMUQxOUUxNDgwMEI4RUY1MyAvKiBXS1dlYlZpZXdEZWZhdWx0TmF2aWdh
dGlvbkRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDZFNjZBOTAxRjBENzU1OTAwMjZE
ODNDIC8qIFdLV2ViVmlld0RpYWdub3N0aWNMb2dnaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkRCNjQ3ODgxRjQxNjNENjAwNTFBODlFIC8qIFdLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0
aWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCUY0RkI2ODI1MjE2NDNFRkMwMDM0NjA3
QSAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUY0ODExRTU5
MjE5NDBCREUwMEE1RTBGRCAvKiBXS1dlYlZpZXdFZGl0QWN0aW9ucy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTBGM0I5NEE3MUE3NzI2NzQwMERFMzI3MiAvKiBXS1dlYlZpZXdFdmFsdWF0ZUphdmFT
Y3JpcHQubW0gaW4gU291cmNlcyAqLywKIAkJCQlEMzRFMDg3NjFFNEU0MkUxMDA1RkYxNEEgLyog
V0tXZWJWaWV3R2V0Q29udGVudHMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEZBOTE4MTFFNjE4
NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0VkaXRBY3Rpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTc3YTMwOGM0MTYzMDQ2ZDZm
ODE0NzI1NzJlMjQ5NDRiM2RlMDNkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFZGl0QWN0aW9ucy5tbQpAQCAtMCwwICsx
LDI0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgV0tfQVBJX0VO
QUJMRUQKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dl
YlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQgPFVJS2l0L1VJ
Rm9udERlc2NyaXB0b3IuaD4KKyNlbmRpZgorCitAaW50ZXJmYWNlIFRlc3RXS1dlYlZpZXcgKEVk
aXRBY3Rpb25UZXN0aW5nKQorLSAoQk9PTClxdWVyeVNlbGVjdG9yRXhpc3RzOihOU1N0cmluZyAq
KXF1ZXJ5U2VsZWN0b3I7CistICh2b2lkKWluc2VydFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmc7
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChFZGl0QWN0aW9uVGVzdGlu
ZykKKworLSAoQk9PTClxdWVyeVNlbGVjdG9yRXhpc3RzOihOU1N0cmluZyAqKXF1ZXJ5U2VsZWN0
b3IKK3sKKyAgICByZXR1cm4gW1tzZWxmIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCVAYCki
LCBxdWVyeVNlbGVjdG9yXV0gYm9vbFZhbHVlXTsKK30KKworLSAodm9pZClpbnNlcnRTdHJpbmc6
KE5TU3RyaW5nICopc3RyaW5nCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbW3Nl
bGYgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6c3RyaW5nXTsKKyNlbHNlCisgICAg
W3NlbGYgaW5zZXJ0VGV4dDpzdHJpbmddOworI2VuZGlmCit9CisKK0BlbmQKKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZp
ZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAs
IDQwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2
PldlYktpdDwvZGl2PiJdOworICAgIFt3ZWJWaWV3IF9zZXRFZGl0YWJsZTpZRVNdOworICAgIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQ
b3NpdGlvbihkb2N1bWVudC5ib2R5LCAxKSJdOworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitU
RVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBOZXN0ZWRMaXN0SW5zZXJ0aW9uKQoreworICAgIGF1
dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworCisgICAgW3dlYlZp
ZXcgX2luc2VydE5lc3RlZE9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZp
ZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9sIl0pOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3
IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJvbCA+IGxpIl0pOworCisgICAgW3dlYlZpZXcgX2luc2Vy
dE5lc3RlZE9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlT
ZWxlY3RvckV4aXN0czpAIm9sID4gb2wiXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVl
cnlTZWxlY3RvckV4aXN0czpAIm9sID4gb2wgPiBsaSJdKTsKKworICAgIFt3ZWJWaWV3IF9pbnNl
cnROZXN0ZWRVbm9yZGVyZWRMaXN0Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVl
cnlTZWxlY3RvckV4aXN0czpAIm9sID4gb2wgPiB1bCJdKTsKKyAgICBFWFBFQ1RfVFJVRShbd2Vi
VmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wgPiBvbCA+IHVsID4gbGkiXSk7CisKKyAgICBb
d2ViVmlldyBfaW5zZXJ0TmVzdGVkVW5vcmRlcmVkTGlzdDpuaWxdOworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJvbCA+IG9sID4gdWwgPiB1bCJdKTsKKyAg
ICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAib2wgPiBvbCA+IHVs
ID4gdWwgPiBsaSJdKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgTGlzdEluc2Vy
dGlvbikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3Rpbmco
KTsKKworICAgIFt3ZWJWaWV3IF9pbnNlcnRPcmRlcmVkTGlzdDpuaWxdOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJvbCJdKTsKKyAgICBbd2ViVmlldyBf
aW5zZXJ0T3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlT
ZWxlY3RvckV4aXN0czpAIm9sIl0pOworCisgICAgW3dlYlZpZXcgX2luc2VydFVub3JkZXJlZExp
c3Q6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAi
dWwiXSk7CisgICAgW3dlYlZpZXcgX2luc2VydFVub3JkZXJlZExpc3Q6bmlsXTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAInVsIl0pOworfQorCitURVNU
KFdLV2ViVmlld0VkaXRBY3Rpb25zLCBDaGFuZ2VJbmRlbnRhdGlvbikKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKworICAgIFt3ZWJWaWV3IF9p
bmRlbnQ6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3Rz
OkAiYmxvY2txdW90ZSJdKTsKKyAgICBbd2ViVmlldyBfaW5kZW50Om5pbF07CisgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImJsb2NrcXVvdGUgPiBibG9ja3F1
b3RlIl0pOworCisgICAgW3dlYlZpZXcgX291dGRlbnQ6bmlsXTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKKyAgICBbd2ViVmll
dyBfb3V0ZGVudDpuaWxdOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBxdWVyeVNlbGVjdG9y
RXhpc3RzOkAiYmxvY2txdW90ZSJdKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywg
U2V0QWxpZ25tZW50KQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9u
VGVzdGluZygpOworICAgIGF1dG8gcnVuVGVzdCA9IFt3ZWJWaWV3XSB7CisgICAgICAgIFt3ZWJW
aWV3IF9hbGlnbkNlbnRlcjpuaWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImNlbnRlciIs
IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1hbGlnbiJdKTsK
KyAgICAgICAgW3dlYlZpZXcgX2FsaWduTGVmdDpuaWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoImxlZnQiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQt
YWxpZ24iXSk7CisgICAgICAgIFt3ZWJWaWV3IF9hbGlnblJpZ2h0Om5pbF07CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUSgicmlnaHQiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpAInRleHQtYWxpZ24iXSk7CisgICAgICAgIFt3ZWJWaWV3IF9hbGlnbkp1c3RpZmllZDpu
aWxdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImp1c3RpZnkiLCBbd2ViVmlldyBzdHlsZVBy
b3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQtYWxpZ24iXSk7CisgICAgfTsKKworICAgIFt3
ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuZGlyID0gJ3J0bCciIGNv
bXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgcnVuVGVzdCgpOworCisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5kaXIgPSAnbHRyJyIgY29tcGxldGlvbkhh
bmRsZXI6bmlsXTsKKyAgICBydW5UZXN0KCk7Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlv
bnMsIFRvZ2dsZVN0cmlrZVRocm91Z2gpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0Zv
ckVkaXRBY3Rpb25UZXN0aW5nKCk7CisgICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07CisgICAg
W3dlYlZpZXcgX3RvZ2dsZVN0cmlrZVRocm91Z2g6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
ImxpbmUtdGhyb3VnaCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAi
LXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoImxpbmUtdGhyb3VnaCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDpA
Ii13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXSk7CisKKyAgICBbd2ViVmlldyBf
dG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgibm9uZSIsIFt3
ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiLXdlYmtpdC10ZXh0LWRlY29y
YXRpb25zLWluLWVmZmVjdCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCBbd2ViVmll
dyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMt
aW4tZWZmZWN0Il0pOworCisgICAgW3dlYlZpZXcgY29sbGFwc2VUb0VuZF07CisgICAgW3dlYlZp
ZXcgX3RvZ2dsZVN0cmlrZVRocm91Z2g6bmlsXTsKKyAgICBbd2ViVmlldyBpbnNlcnRTdHJpbmc6
QCJIZWxsbyJdOworICAgIEVYUEVDVF9XS19TVFJFUSgibGluZS10aHJvdWdoIiwgW3dlYlZpZXcg
c3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMt
aW4tZWZmZWN0Il0pOworCisgICAgW3dlYlZpZXcgX3RvZ2dsZVN0cmlrZVRocm91Z2g6bmlsXTsK
KyAgICBbd2ViVmlldyBpbnNlcnRTdHJpbmc6QCJIZWxsbyJdOworICAgIEVYUEVDVF9XS19TVFJF
USgibm9uZSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiLXdlYmtp
dC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsKK30KKworVEVTVChXS1dlYlZpZXdFZGl0
QWN0aW9ucywgUGFzdGVBc1F1b3RhdGlvbikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3
Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKyAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAg
ICBbd2ViVmlldyBfZXhlY3V0ZUVkaXRDb21tYW5kOkAiY3V0IiBhcmd1bWVudDpuaWwgY29tcGxl
dGlvbjpuaWxdOworICAgIFt3ZWJWaWV3IF9wYXN0ZUFzUXVvdGF0aW9uOm5pbF07CisgICAgRVhQ
RUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImJsb2NrcXVvdGUiXSk7Cit9
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25z
LCBDaGFuZ2VGb250U2l6ZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFj
dGlvblRlc3RpbmcoKTsKKyAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICBFWFBFQ1Rf
RVEoMTYsIFtbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6
ZSJdIGZsb2F0VmFsdWVdKTsKKworICAgIFt3ZWJWaWV3IGluY3JlYXNlU2l6ZTpuaWxdOworICAg
IEVYUEVDVF9FUSgxNywgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAi
Zm9udC1zaXplIl0gZmxvYXRWYWx1ZV0pOworICAgIFt3ZWJWaWV3IGluY3JlYXNlU2l6ZTpuaWxd
OworICAgIEVYUEVDVF9FUSgxOCwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0
YXJ0OkAiZm9udC1zaXplIl0gZmxvYXRWYWx1ZV0pOworCisgICAgW3dlYlZpZXcgZGVjcmVhc2VT
aXplOm5pbF07CisgICAgRVhQRUNUX0VRKDE3LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisgICAgW3dlYlZpZXcgZGVj
cmVhc2VTaXplOm5pbF07CisgICAgRVhQRUNUX0VRKDE2LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0
eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7CisKKyAgICBbd2Vi
VmlldyBfc2V0Rm9udFNpemU6MjAgc2VuZGVyOm5pbF07CisgICAgRVhQRUNUX0VRKDIwLCBbW3dl
YlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZh
bHVlXSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIFNldFRleHRDb2xvcikKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3RpbmcoKTsKKyAgICBb
d2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKworICAgIFt3ZWJWaWV3IF9zZXRUZXh0Q29sb3I6W1VJ
Q29sb3IgY29sb3JXaXRoUmVkOjEgZ3JlZW46MCBibHVlOjAgYWxwaGE6MV0gc2VuZGVyOm5pbF07
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2IoMjU1LCAwLCAwKSIsIFt3ZWJWaWV3IHN0eWxlUHJv
cGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZp
ZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImZvbnQiXSk7CisKKyAgICBbd2ViVmlldyBfc2V0VGV4
dENvbG9yOltVSUNvbG9yIGNvbG9yV2l0aFJlZDowIGdyZWVuOjEgYmx1ZTowIGFscGhhOjAuMl0g
c2VuZGVyOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2JhKDAsIDI1NSwgMCwgMC4yKSIs
IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7CisgICAg
RVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJmb250Il0pOworfQor
CitURVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBTZXRGb250RmFtaWx5KQoreworICAgIGF1dG8g
d2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOworICAgIFt3ZWJWaWV3IHNl
bGVjdEFsbDpuaWxdOworCisgICAgVUlGb250RGVzY3JpcHRvciAqZm9udERlc2NyaXB0b3IgPSBb
VUlGb250RGVzY3JpcHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczpAeyBVSUZv
bnREZXNjcmlwdG9yRmFtaWx5QXR0cmlidXRlOiBAIkhlbHZldGljYSIgfV07CisgICAgW3dlYlZp
ZXcgX3NldEZvbnQ6W1VJRm9udCBmb250V2l0aERlc2NyaXB0b3I6Zm9udERlc2NyaXB0b3Igc2l6
ZToyNF0gc2VuZGVyOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWx2ZXRpY2EiLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtZmFtaWx5Il0pOworICAg
IEVYUEVDVF9XS19TVFJFUSgiMjRweCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlv
blN0YXJ0OkAiZm9udC1zaXplIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgibm9ybWFsIiwgW3dl
YlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXdlaWdodCJdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIm5vcm1hbCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVj
dGlvblN0YXJ0OkAiZm9udC1zdHlsZSJdKTsKKworICAgIFt3ZWJWaWV3IF9zZXRGb250OltVSUZv
bnQgZm9udFdpdGhOYW1lOkAiVGltZXNOZXdSb21hblBTLUJvbGRNVCIgc2l6ZToxMl0gc2VuZGVy
Om5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJcIlRpbWVzIE5ldyBSb21hblwiIiwgW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LWZhbWlseSJdKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoIjEycHgiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpAImZvbnQtc2l6ZSJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImJvbGQiLCBbd2ViVmll
dyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0Il0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJmb250LXN0eWxlIl0pOworCisgICAgZm9udERlc2NyaXB0b3IgPSBbZm9udERlc2Ny
aXB0b3IgZm9udERlc2NyaXB0b3JXaXRoU3ltYm9saWNUcmFpdHM6VUlGb250RGVzY3JpcHRvclRy
YWl0SXRhbGljIHwgVUlGb250RGVzY3JpcHRvclRyYWl0Qm9sZF07CisgICAgW3dlYlZpZXcgX3Nl
dEZvbnQ6W1VJRm9udCBmb250V2l0aERlc2NyaXB0b3I6Zm9udERlc2NyaXB0b3Igc2l6ZToyMF0g
c2VuZGVyOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWx2ZXRpY2EiLCBbd2ViVmlldyBz
dHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtZmFtaWx5Il0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgiMjBweCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0
OkAiZm9udC1zaXplIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiYm9sZCIsIFt3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJpdGFsaWMiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFy
dDpAImZvbnQtc3R5bGUiXSk7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQor
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxF
RApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJWaWV3RWRp
dEFjdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdFZGl0
QWN0aW9ucy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIxOTk0N2Q2ZjI4NTIy
MTE4Mjk5ZTY2OGIwZGE3Nzc2ZjhkMDYxOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdF
ZGl0QWN0aW9ucy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBXS19B
UElfRU5BQkxFRAotCi0jaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgotI2ltcG9ydCAiVUlLaXRTUEkuaCIKLSNpbXBvcnQgPFVJS2l0L1VJRm9u
dERlc2NyaXB0b3IuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+Ci0KLUBp
bnRlcmZhY2UgVGVzdFdLV2ViVmlldyAoRWRpdEFjdGlvblRlc3RpbmcpCi0tIChCT09MKXF1ZXJ5
U2VsZWN0b3JFeGlzdHM6KE5TU3RyaW5nICopcXVlcnlTZWxlY3RvcjsKLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEVkaXRBY3Rpb25UZXN0aW5nKQotCi0tIChCT09MKXF1
ZXJ5U2VsZWN0b3JFeGlzdHM6KE5TU3RyaW5nICopcXVlcnlTZWxlY3RvcgotewotICAgIHJldHVy
biBbW3NlbGYgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgJUBgKSIsIHF1ZXJ5U2VsZWN0b3Jd
XSBib29sVmFsdWVdOwotfQotCi1AZW5kCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQot
c3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3Rp
bmcoKQotewotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7Ci0gICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdj5XZWJLaXQ8L2Rpdj4iXTsKLSAg
ICBbd2ViVmlldyBfc2V0RWRpdGFibGU6WUVTXTsKLSAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9k
eSwgMSkiXTsKLSAgICByZXR1cm4gd2ViVmlldzsKLX0KLQotVEVTVChXS1dlYlZpZXdFZGl0QWN0
aW9ucywgTGlzdEluc2VydGlvbikKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRp
dEFjdGlvblRlc3RpbmcoKTsKLQotICAgIFt3ZWJWaWV3IGluc2VydE9yZGVyZWRMaXN0Om5pbF07
Ci0gICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAIm9sIl0pOwot
ICAgIFt3ZWJWaWV3IGluc2VydE9yZGVyZWRMaXN0Om5pbF07Ci0gICAgRVhQRUNUX0ZBTFNFKFt3
ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJvbCJdKTsKLQotICAgIFt3ZWJWaWV3IGluc2Vy
dFVub3JkZXJlZExpc3Q6bmlsXTsKLSAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBxdWVyeVNlbGVj
dG9yRXhpc3RzOkAidWwiXSk7Ci0gICAgW3dlYlZpZXcgaW5zZXJ0VW5vcmRlcmVkTGlzdDpuaWxd
OwotICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBxdWVyeVNlbGVjdG9yRXhpc3RzOkAidWwiXSk7
Ci19Ci0KLVRFU1QoV0tXZWJWaWV3RWRpdEFjdGlvbnMsIENoYW5nZUluZGVudGF0aW9uKQotewot
ICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwotCi0gICAg
W3dlYlZpZXcgaW5kZW50Om5pbF07Ci0gICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxl
Y3RvckV4aXN0czpAImJsb2NrcXVvdGUiXSk7Ci0gICAgW3dlYlZpZXcgaW5kZW50Om5pbF07Ci0g
ICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgcXVlcnlTZWxlY3RvckV4aXN0czpAImJsb2NrcXVvdGUg
PiBibG9ja3F1b3RlIl0pOwotCi0gICAgW3dlYlZpZXcgb3V0ZGVudDpuaWxdOwotICAgIEVYUEVD
VF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJibG9ja3F1b3RlIl0pOwotICAg
IFt3ZWJWaWV3IG91dGRlbnQ6bmlsXTsKLSAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgcXVlcnlT
ZWxlY3RvckV4aXN0czpAImJsb2NrcXVvdGUiXSk7Ci19Ci0KLVRFU1QoV0tXZWJWaWV3RWRpdEFj
dGlvbnMsIFNldEFsaWdubWVudCkKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRp
dEFjdGlvblRlc3RpbmcoKTsKLSAgICBhdXRvIHJ1blRlc3QgPSBbd2ViVmlld10gewotICAgICAg
ICBbd2ViVmlldyBhbGlnbkNlbnRlcjpuaWxdOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImNl
bnRlciIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1hbGln
biJdKTsKLSAgICAgICAgW3dlYlZpZXcgYWxpZ25MZWZ0Om5pbF07Ci0gICAgICAgIEVYUEVDVF9X
S19TVFJFUSgibGVmdCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAi
dGV4dC1hbGlnbiJdKTsKLSAgICAgICAgW3dlYlZpZXcgYWxpZ25SaWdodDpuaWxdOwotICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoInJpZ2h0IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0
aW9uU3RhcnQ6QCJ0ZXh0LWFsaWduIl0pOwotICAgICAgICBbd2ViVmlldyBhbGlnbkp1c3RpZmll
ZDpuaWxdOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImp1c3RpZnkiLCBbd2ViVmlldyBzdHls
ZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQtYWxpZ24iXSk7Ci0gICAgfTsKLQotICAg
IFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuZGlyID0gJ3J0bCci
IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07Ci0gICAgcnVuVGVzdCgpOwotCi0gICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5kaXIgPSAnbHRyJyIgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKLSAgICBydW5UZXN0KCk7Ci19Ci0KLVRFU1QoV0tXZWJWaWV3RWRpdEFj
dGlvbnMsIFRvZ2dsZVN0cmlrZVRocm91Z2gpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gd2ViVmll
d0ZvckVkaXRBY3Rpb25UZXN0aW5nKCk7Ci0gICAgW3dlYlZpZXcgc2VsZWN0QWxsOm5pbF07Ci0g
ICAgW3dlYlZpZXcgdG9nZ2xlU3RyaWtlVGhyb3VnaDpuaWxdOwotICAgIEVYUEVDVF9XS19TVFJF
USgibGluZS10aHJvdWdoIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6
QCItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOwotICAgIEVYUEVDVF9XS19T
VFJFUSgibGluZS10aHJvdWdoIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5k
OkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdKTsKLQotICAgIFt3ZWJWaWV3
IHRvZ2dsZVN0cmlrZVRocm91Z2g6bmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCBb
d2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAIi13ZWJraXQtdGV4dC1kZWNv
cmF0aW9ucy1pbi1lZmZlY3QiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwgW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5kOkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25z
LWluLWVmZmVjdCJdKTsKLQotICAgIFt3ZWJWaWV3IGNvbGxhcHNlVG9FbmRdOwotICAgIFt3ZWJW
aWV3IHRvZ2dsZVN0cmlrZVRocm91Z2g6bmlsXTsKLSAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29u
dGVudFZpZXddIGluc2VydFRleHQ6QCJIZWxsbyJdOwotICAgIEVYUEVDVF9XS19TVFJFUSgibGlu
ZS10aHJvdWdoIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCItd2Vi
a2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0Il0pOwotCi0gICAgW3dlYlZpZXcgdG9nZ2xl
U3RyaWtlVGhyb3VnaDpuaWxdOwotICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10g
aW5zZXJ0VGV4dDpAIkhlbGxvIl07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwgW3dlYlZp
ZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCItd2Via2l0LXRleHQtZGVjb3JhdGlv
bnMtaW4tZWZmZWN0Il0pOwotfQotCi1URVNUKFdLV2ViVmlld0VkaXRBY3Rpb25zLCBDaGFuZ2VG
b250U2l6ZSkKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRWRpdEFjdGlvblRlc3Rp
bmcoKTsKLSAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKLSAgICBFWFBFQ1RfRVEoMTYsIFtb
d2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0
VmFsdWVdKTsKLQotICAgIFt3ZWJWaWV3IGluY3JlYXNlU2l6ZTpuaWxdOwotICAgIEVYUEVDVF9F
USgxNywgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXpl
Il0gZmxvYXRWYWx1ZV0pOwotICAgIFt3ZWJWaWV3IGluY3JlYXNlU2l6ZTpuaWxdOwotICAgIEVY
UEVDVF9FUSgxOCwgW1t3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9u
dC1zaXplIl0gZmxvYXRWYWx1ZV0pOwotCi0gICAgW3dlYlZpZXcgZGVjcmVhc2VTaXplOm5pbF07
Ci0gICAgRVhQRUNUX0VRKDE3LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3Rh
cnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7Ci0gICAgW3dlYlZpZXcgZGVjcmVhc2VTaXpl
Om5pbF07Ci0gICAgRVhQRUNUX0VRKDE2LCBbW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0
aW9uU3RhcnQ6QCJmb250LXNpemUiXSBmbG9hdFZhbHVlXSk7Ci0KLSAgICBbd2ViVmlldyBzZXRG
b250U2l6ZToyMCBzZW5kZXI6bmlsXTsKLSAgICBFWFBFQ1RfRVEoMjAsIFtbd2ViVmlldyBzdHls
ZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc2l6ZSJdIGZsb2F0VmFsdWVdKTsKLX0K
LQotVEVTVChXS1dlYlZpZXdFZGl0QWN0aW9ucywgU2V0VGV4dENvbG9yKQotewotICAgIGF1dG8g
d2ViVmlldyA9IHdlYlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwotICAgIFt3ZWJWaWV3IHNl
bGVjdEFsbDpuaWxdOwotCi0gICAgW3dlYlZpZXcgc2V0VGV4dENvbG9yOltVSUNvbG9yIGNvbG9y
V2l0aFJlZDoxIGdyZWVuOjAgYmx1ZTowIGFscGhhOjFdIHNlbmRlcjpuaWxdOwotICAgIEVYUEVD
VF9XS19TVFJFUSgicmdiKDI1NSwgMCwgMCkiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxl
Y3Rpb25TdGFydDpAImNvbG9yIl0pOwotICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHF1ZXJ5U2Vs
ZWN0b3JFeGlzdHM6QCJmb250Il0pOwotCi0gICAgW3dlYlZpZXcgc2V0VGV4dENvbG9yOltVSUNv
bG9yIGNvbG9yV2l0aFJlZDowIGdyZWVuOjEgYmx1ZTowIGFscGhhOjAuMl0gc2VuZGVyOm5pbF07
Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2JhKDAsIDI1NSwgMCwgMC4yKSIsIFt3ZWJWaWV3IHN0
eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiY29sb3IiXSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KFt3ZWJWaWV3IHF1ZXJ5U2VsZWN0b3JFeGlzdHM6QCJmb250Il0pOwotfQotCi1URVNUKFdLV2Vi
Vmlld0VkaXRBY3Rpb25zLCBTZXRGb250RmFtaWx5KQotewotICAgIGF1dG8gd2ViVmlldyA9IHdl
YlZpZXdGb3JFZGl0QWN0aW9uVGVzdGluZygpOwotICAgIFt3ZWJWaWV3IHNlbGVjdEFsbDpuaWxd
OwotCi0gICAgVUlGb250RGVzY3JpcHRvciAqZm9udERlc2NyaXB0b3IgPSBbVUlGb250RGVzY3Jp
cHRvciBmb250RGVzY3JpcHRvcldpdGhGb250QXR0cmlidXRlczpAeyBVSUZvbnREZXNjcmlwdG9y
RmFtaWx5QXR0cmlidXRlOiBAIkhlbHZldGljYSIgfV07Ci0gICAgW3dlYlZpZXcgc2V0Rm9udDpb
VUlGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOjI0XSBzZW5kZXI6
bmlsXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbHZldGljYSIsIFt3ZWJWaWV3IHN0eWxlUHJv
cGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7Ci0gICAgRVhQRUNUX1dLX1NU
UkVRKCIyNHB4IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250
LXNpemUiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJub3JtYWwiLCBbd2ViVmlldyBzdHlsZVBy
b3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtd2VpZ2h0Il0pOwotICAgIEVYUEVDVF9XS19T
VFJFUSgibm9ybWFsIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJm
b250LXN0eWxlIl0pOwotCi0gICAgW3dlYlZpZXcgc2V0Rm9udDpbVUlGb250IGZvbnRXaXRoTmFt
ZTpAIlRpbWVzTmV3Um9tYW5QUy1Cb2xkTVQiIHNpemU6MTJdIHNlbmRlcjpuaWxdOwotICAgIEVY
UEVDVF9XS19TVFJFUSgiXCJUaW1lcyBOZXcgUm9tYW5cIiIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1mYW1pbHkiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KCIxMnB4IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXNp
emUiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJib2xkIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0
eUF0U2VsZWN0aW9uU3RhcnQ6QCJmb250LXdlaWdodCJdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
Im5vcm1hbCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1z
dHlsZSJdKTsKLQotICAgIGZvbnREZXNjcmlwdG9yID0gW2ZvbnREZXNjcmlwdG9yIGZvbnREZXNj
cmlwdG9yV2l0aFN5bWJvbGljVHJhaXRzOlVJRm9udERlc2NyaXB0b3JUcmFpdEl0YWxpYyB8IFVJ
Rm9udERlc2NyaXB0b3JUcmFpdEJvbGRdOwotICAgIFt3ZWJWaWV3IHNldEZvbnQ6W1VJRm9udCBm
b250V2l0aERlc2NyaXB0b3I6Zm9udERlc2NyaXB0b3Igc2l6ZToyMF0gc2VuZGVyOm5pbF07Ci0g
ICAgRVhQRUNUX1dLX1NUUkVRKCJIZWx2ZXRpY2EiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRT
ZWxlY3Rpb25TdGFydDpAImZvbnQtZmFtaWx5Il0pOwotICAgIEVYUEVDVF9XS19TVFJFUSgiMjBw
eCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiZm9udC1zaXplIl0p
OwotICAgIEVYUEVDVF9XS19TVFJFUSgiYm9sZCIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNl
bGVjdGlvblN0YXJ0OkAiZm9udC13ZWlnaHQiXSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCJpdGFs
aWMiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImZvbnQtc3R5bGUi
XSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQotI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
      

    </bug>

</bugzilla>