<?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>221649</bug_id>
          
          <creation_ts>2021-02-09 21:01:45 -0800</creation_ts>
          <short_desc>[watchOS] Adopt PUICQuickboardController for text input</short_desc>
          <delta_ts>2021-02-10 14:27:26 -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>Platform</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>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1727415</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-09 21:01:45 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727429</commentid>
    <comment_count>1</comment_count>
      <attachid>419816</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-09 22:09:16 -0800</bug_when>
    <thetext>Created attachment 419816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727433</commentid>
    <comment_count>2</comment_count>
      <attachid>419816</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-02-09 23:17:26 -0800</bug_when>
    <thetext>Comment on attachment 419816
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:6569
&gt; +    // establishes a connection to the quickboard view service before presenting the remote view controller.

I wonder if quickboard is a proper noun or a daemon name (should it be capitalized or not?)

&gt; Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:52
&gt; +#if PLATFORM(WATCHOS)

Technically would be better if these were all HAVE(PEPPER_UI_CORE) (at least, I think that is the right direction for Sam&apos;s PLATFORM eradication project), but this is fine for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727545</commentid>
    <comment_count>3</comment_count>
      <attachid>419816</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-10 08:26:10 -0800</bug_when>
    <thetext>Comment on attachment 419816
Patch

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

Thanks for the review!

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:6569
&gt;&gt; +    // establishes a connection to the quickboard view service before presenting the remote view controller.
&gt; 
&gt; I wonder if quickboard is a proper noun or a daemon name (should it be capitalized or not?)

Ah yes, quickboard, the quickboar daemon 😅.

(Jokes aside, Quickboard should probably be capitalized, although PepperUICore sources refer to the view service as `QuickboardViewService`, so I&apos;ll change it to that instead.)

&gt;&gt; Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:52
&gt;&gt; +#if PLATFORM(WATCHOS)
&gt; 
&gt; Technically would be better if these were all HAVE(PEPPER_UI_CORE) (at least, I think that is the right direction for Sam&apos;s PLATFORM eradication project), but this is fine for now.

That&apos;s a good point — I&apos;ll replace all the `PLATFORM(WATCHOS)`-es around our Quickboard code with `HAVE(PEPPER_UI_CORE)` in a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727546</commentid>
    <comment_count>4</comment_count>
      <attachid>419847</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-10 08:29:25 -0800</bug_when>
    <thetext>Created attachment 419847
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727562</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-10 09:08:04 -0800</bug_when>
    <thetext>Committed r272659: &lt;https://commits.webkit.org/r272659&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419847.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727772</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-10 14:27:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/74206358&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419816</attachid>
            <date>2021-02-09 22:09:16 -0800</date>
            <delta_ts>2021-02-09 23:17:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221649-20210209220915.patch</filename>
            <type>text/plain</type>
            <size>50619</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5ZjZmYzEyODkzOTA3Y2RkODY0ZmY2
NzM4ZGM1OTU0MTkwNWMyY2IuLmFlZjZkOTc2Yzc0MGI1Y2U5NDBjZmM1NmMxOTAwODkxZWRmY2E3
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIEFkb3B0IFBVSUNRdWlja2Jv
YXJkQ29udHJvbGxlciBmb3IgdGV4dCBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IGludGVybmFsIHNldHRpbmcuIFNlZSBvdGhl
ciBDaGFuZ2VMb2dzIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sOgorCiAyMDIxLTAyLTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTm9uLXNwZWNp
YWwgVVJMcyBzaG91bGQgaGF2ZSBhbiBvcGFxdWUgb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE3ZTVlZjAy
MjZiZTZmNDg3Y2MzZThjYTYxNTJlZWM2MzExYzViMGQuLjdjNGY3MzM4NTE3N2ZhMmI1MmI0OTdh
MjU4YmUxZDBiOGEwYTMyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjEtMDItMDkg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNo
T1NdIEFkb3B0IFBVSUNRdWlja2JvYXJkQ29udHJvbGxlciBmb3IgdGV4dCBpbnB1dAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjQ5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgdGV4dCBp
bnB1dCBvbiB3YXRjaE9TIHRvIHVzZSBgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyYCwgaW5zdGVh
ZCBvZiBjdXN0b20gV2ViS2l0IHN1YmNsYXNzZXMgb2YKKyAgICAgICAgYFBVSUNRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyYC4gVGhpcyBuZXcgQVBJIHNlcnZlcyB0aGUgc2FtZSBwdXJwb3Nl
IGFzIHRoZSBjdXJyZW50IGxpc3QgdmlldyBjb250cm9sbGVyCisgICAgICAgIHN1YmNsYXNzLCBi
eSBwcm92aWRpbmcgYSB2aWV3IHRoYXQgb2ZmZXJzIG9wdGlvbnMgdG8gZGljdGF0ZSwgc2NyaWJi
bGUsIGFuZCBjaG9vc2UgdGV4dCBzdWdnZXN0aW9ucy4gU2VlIGJlbG93CisgICAgICAgIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgRm9yIHRoZSB0aW1lIGJlaW5nLCB0aGlzIG5ldyBgUFVJ
Q1F1aWNrYm9hcmRDb250cm9sbGVyYCBkb2Vzbid0IHByb3ZpZGUgYSB3YXkgdG8gcmVuZGVyIGEg
Y3VzdG9tIGhlYWRlciB2aWV3CisgICAgICAgIGZvciB1cyB0byBzaG93IHRoZSBkb21haW4gbmFt
ZTsgdG8gYXZvaWQgaW50cm9kdWNpbmcgYSBzZWN1cml0eSBvciBwcml2YWN5IGJ1ZyBpbiB0aGUg
aW50ZXJpbSwgZ3VhcmQgdGhpcyBiZWhpbmQKKyAgICAgICAgYSBXZWJLaXQtZXhwb3NlZCBydW50
aW1lLWVuYWJsZWQgc2V0dGluZyB0aGF0J3Mgb2ZmIGJ5IGRlZmF1bHQuIFdlIGNhbiByZW1vdmUg
dGhpcyBzZXR0aW5nIGFuZCBpbnN0ZWFkIGp1c3QgdXNlCisgICAgICAgIHRoZSBgSEFWRShRVUlD
S0JPQVJEX0NPTlRST0xMRVIpYCBidWlsZC10aW1lIGZsYWcgb25jZSBzdXBwb3J0IGZvciB0aGUg
Y3VzdG9tIGhlYWRlciB2aWV3IGlzIGNvbXBsZXRlLgorCisgICAgICAgICogUGxhdGZvcm0vc3Bp
L3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmg6CisKKyAgICAgICAgSW5jbHVkZSBhIGNvdXBsZSBv
ZiBuZXcgaGVhZGVycyBpZiBgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpYCBpcyBzZXQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorCisg
ICAgICAgIEFkZCBhIGBfcHJlc2VudGVkUXVpY2tib2FyZENvbnRyb2xsZXJgIGluc3RhbmNlIHZh
cmlhYmxlIGlmIGBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUilgIGlzIHNldC4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorCisgICAgICAg
IEFkZCBwcm90b2NvbCBjb25mb3JtYW5jZSB0byBgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyRGVs
ZWdhdGVgLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3VwZGF0ZUludGVyYWN0aW9uVGlu
dENvbG9yOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRpbnRDb2xvckRpZENoYW5nZV0p
OgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgdG8gdGFrZSBgVUlUZXh0SW5wdXRUcmFpdHNgLCBp
bnN0ZWFkIG9mIHVzaW5nIGBfdHJhaXRzYC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRl
eHRJbnB1dFRyYWl0c10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91cGRhdGVUZXh0SW5w
dXRUcmFpdHM6XSk6CisKKyAgICAgICAgUmVmYWN0b3IgdGhpcyB0byBtb2RpZnkgdGhlIGdpdmVu
IHNldCBvZiB0ZXh0IGlucHV0IHRyYWl0cyBnaXZlbiBjdXJyZW50IGZvY3VzZWQgZWxlbWVudCBp
bmZvcm1hdGlvbiBzdGF0ZSwKKyAgICAgICAgcmF0aGVyIHRoYW4gb3BlcmF0aW5nIG9uIHRoZSBg
X3RyYWl0c2AgaW5zdGFuY2UgdmFyaWFibGUuIFRoaXMgcmVmYWN0b3JpbmcgYWxsb3dzIHVzIHRv
IHNoYXJlIGxvZ2ljIHdoZW4gc2V0dGluZworICAgICAgICB1cCB0ZXh0IGlucHV0IHRyYWl0cyBv
biBib3RoIGlPUyBhbmQgd2F0Y2hPUzsgaW4gdGhlIGZvcm1lciBjYXNlLCB3ZSdyZSBzZXR0aW5n
IHVwIGEgc2V0IG9mIGNhY2hlZCBgX3RyYWl0c2Agb24KKyAgICAgICAgdGhlIGNvbnRlbnQgdmll
dywgYnV0IGluIHRoZSBsYXR0ZXIgY2FzZSwgd2UncmUgbW9kaWZ5aW5nIGEgbmV3bHkgY3JlYXRl
ZCBgUFVJQ1RleHRJbnB1dENvbnRleHRgIHRoYXQgd2UnbGwgdGhlbgorICAgICAgICBzZXQgb24g
dGhlIGBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXJgLgorCisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2NyZWF0ZVF1aWNrYm9hcmRDb250cm9sbGVyOl0pOgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBtZXRob2QgdG8gY3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgYFBVSUNRdWlja2JvYXJkQ29udHJv
bGxlcmAgdGhhdCdzIHN1aXRhYmxlIGZvciB0aGUgY3VycmVudAorICAgICAgICBmb2N1c2VkIGVs
ZW1lbnQncyBzdGF0ZS4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHByZXNlbnRWaWV3Q29u
dHJvbGxlckZvckN1cnJlbnRGb2N1c2VkRWxlbWVudF0pOgorCisgICAgICAgIFByZXNlbnQgdGhl
IHZpZXcgY29udHJvbGxlciBmb3IgdGhlIGZvY3VzZWQgZWxlbWVudCwgYnkgZWl0aGVyIHVzaW5n
IGEgY3VzdG9tIFdlYktpdC1vd25lZAorICAgICAgICBgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0Nv
bnRyb2xsZXJgIHN1YmNsYXNzLCBvciBieSB1c2luZyBhIG5ldyBgUFVJQ1F1aWNrYm9hcmRDb250
cm9sbGVyYCB3aXRoIGEgY3VzdG9tIHRleHQKKyAgICAgICAgaW5wdXQgY29udGV4dC4gTm90ZSB0
aGF0IGluIHRoZSBsYXR0ZXIgY2FzZSwgd2UgbWF5IG5vdCBiZSBhYmxlIHRvIGludm9rZSB0aGUg
VUkgZGVsZWdhdGUgaG9vaworICAgICAgICBgLV93ZWJWaWV3OmRpZFByZXNlbnRGb2N1c2VkRWxl
bWVudFZpZXdDb250cm9sbGVyOmAsIHNpbmNlIHRoZSBwcmVzZW50aW5nIHZpZXcgY29udHJvbGxl
cidzIHRyYW5zaXRpb24KKyAgICAgICAgY29vcmRpbmF0b3IgbWF5IG5vdCBoYXZlIGJlZW4gY3Jl
YXRlZCB5ZXQgaW4gdGhlIHNjZW5hcmlvIHdoZXJlIHdlJ3JlIHNwaW5uaW5nIHVwIHRoZSBRdWlj
a2JvYXJkIHZpZXcgc2VydmljZQorICAgICAgICBmb3IgdGhlIGZpcnN0IHRpbWUsIHNpbmNlIHRo
ZSBjYWxsIHRvIGVzdGFibGlzaCB0aGUgWFBDIGNvbm5lY3Rpb24gaXMgYXN5bmNocm9ub3VzIGlu
IFBlcHBlclVJQ29yZSwgYW5kIHdlIGRvbid0CisgICAgICAgIGF0dGVtcHQgdG8gcHJlc2VudCB0
aGUgcmVtb3RlIHZpZXcgY29udHJvbGxlciB1bnRpbCB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxp
c2hlZC4gVGhpcyBtYWtlcyBpdCBzbyB0aGF0IHdlCisgICAgICAgIGNhbid0IHJlbHkgb24gdGhl
IGAtZGlkUHJlc2VudEZvY3VzZWRFbGVtZW50Vmlld0NvbnRyb2xsZXI6YCBob29rIGluIFdlYktp
dFRlc3RSdW5uZXIgdG8ga25vdyB3aGVuIGEKKyAgICAgICAgYFBVSUNRdWlja2JvYXJkQ29udHJv
bGxlcmAgaGFzIGZpbmlzaGVkIHByZXNlbnRpbmcuCisKKyAgICAgICAgVG8gd29yayBhcm91bmQg
dGhpcywgd2UgdGVhY2ggdGhlIHRlc3QgaGFybmVzcyB0byBvdmVycmlkZSBgLXByZXNlbnRWaWV3
Q29udHJvbGxlcjphbmltYXRlZDpjb21wbGV0aW9uOmAgYW5kCisgICAgICAgIGNhbGwgaW50byB0
aGUgdGVzdCBydW5uZXIncyBgV0tXZWJWaWV3YCBzdWJjbGFzcyB3aGVuIGEgcmVtb3RlIHF1aWNr
Ym9hcmQgY29udHJvbGxlciBpcyBkb25lIHByZXNlbnRpbmcuIEluIHRoZQorICAgICAgICBsb25n
ZXIgdGVybSwgd2Ugd2lsbCByZXF1aXJlIFNQSSBmcm9tIFBlcHBlclVJQ29yZSB0byBwcmVzZW50
IGEgYFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcmAgd2l0aCBhIGNvbXBsZXRpb24KKyAgICAgICAg
YmxvY2suCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaXNQcmVzZW50aW5nRnVsbFNjcmVl
bklucHV0Vmlld10pOgorCisgICAgICAgIEEgImZ1bGwgc2NyZWVuIGlucHV0IHZpZXciIGZvciB0
aGUgZm9jdXNlZCBlbGVtZW50IGlzIG5vdyBwcmVzZW50IGlmIGVpdGhlciBgX3ByZXNlbnRlZFF1
aWNrYm9hcmRDb250cm9sbGVyYCBpcworICAgICAgICBzZXQsIG9yIGBfcHJlc2VudGVkRnVsbFNj
cmVlbklucHV0Vmlld0NvbnRyb2xsZXJgIGlzIHNldC4KKworICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGRpc21pc3NBbGxJbnB1dFZpZXdDb250cm9sbGVyczpdKToKKworICAgICAgICBEaXNtaXNz
IGVpdGhlciB0aGUgY3VycmVudGx5IHByZXNlbnRlZCBgX3ByZXNlbnRlZFF1aWNrYm9hcmRDb250
cm9sbGVyYCBvcgorICAgICAgICBgX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9s
bGVyYCwgYW5kIGludm9rZSB0aGUgVUkgZGVsZWdhdGUgbWV0aG9kCisgICAgICAgIGAtX3dlYlZp
ZXc6ZGlkRGlzbWlzc0ZvY3VzZWRFbGVtZW50Vmlld0NvbnRyb2xsZXI6YCB3aGVuIGZpbmlzaGVk
LgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcXVpY2tib2FyZENvbnRyb2xsZXI6dGV4dElu
cHV0VmFsdWVEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcXVpY2tib2Fy
ZENvbnRyb2xsZXJUZXh0SW5wdXRWYWx1ZUNhbmNlbGxlZDpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBkaXNtaXNzUXVpY2tib2FyZFZpZXdDb250cm9sbGVyQW5kUmV2ZWFsRm9jdXNlZEZv
cm1PdmVybGF5SWZOZWNlc3Nhcnk6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dENv
bnRlbnRUeXBlRm9yUXVpY2tib2FyZF0pOgorCisgICAgICAgIFJlZmFjdG9yIGAtX3VwZGF0ZVRl
eHRJbnB1dFRyYWl0czpgIHRvIGNhbGwgYSBoZWxwZXIgbWV0aG9kIChgLXRleHRDb250ZW50VHlw
ZUZvclF1aWNrYm9hcmRgKSBvbiB3YXRjaE9TIHRvCisgICAgICAgIGNvbnZlcnQgdGhlIGN1cnJl
bnQgZm9jdXNlZCBlbGVtZW50IGluZm9ybWF0aW9uIHRvIGEgYFVJVGV4dENvbnRlbnRUeXBlYC4K
KworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29u
dHJvbGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2ltdWxhdGVUZXh0RW50ZXJl
ZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0Q29udGVudFR5cGVGb3JUZXN0aW5n
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZm9ybUlucHV0TGFiZWxdKToKKworICAgICAg
ICBVcGRhdGUgYSBmZXcgaW50ZXJuYWwgdGVzdGluZyBob29rcyB0byBoYW5kbGUgdGhlIGNhc2Ug
d2hlcmUgd2UgaGF2ZSBhIGBfcHJlc2VudGVkUXVpY2tib2FyZENvbnRyb2xsZXJgIGluc3RlYWQK
KyAgICAgICAgb2YgYSBgX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyYC4K
KworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91cGRhdGVJbnRlcmFjdGlvblRpbnRDb2xvcl0p
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0
Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9s
bGVyIGFkZGl0aW9uYWxUcmF5QnV0dG9uc10pOiBTdXBwcmVzcyBhIGRlcHJlY2F0aW9uIHdhcm5p
bmcuCisKIDIwMjEtMDItMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBVc2UgQ29tcGxldGlvbkhhbmRsZXIgaW5zdGVhZCBvZiBEcmF3VG9Q
REZDYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKaW5kZXggMjdmNjVmN2ViMWZmNWZmZTQ3Nzlj
NDFjZTE0MDhiZmVkMmFmMjQyOC4uNmQwNzY4NmVmY2Q4Zjc0MzgyNjQ1YzY1Y2RhM2UxZDQ2MDdl
MjI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzSW50ZXJuYWwueWFtbAorKysgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCkBAIC01OTksNiArNTk5LDE3IEBAIFByZWZpeGVk
V2ViQXVkaW9FbmFibGVkOgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogCitR
dWlja2JvYXJkQ29udHJvbGxlckZvclRleHRJbnB1dEVuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAg
aHVtYW5SZWFkYWJsZU5hbWU6ICJRdWlja2JvYXJkIGNvbnRyb2xsZXIiCisgIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbjogIkVuYWJsZSBxdWlja2JvYXJkIGNvbnRyb2xsZXIgZm9yIHRleHQgaW5w
dXQiCisgIGNvbmRpdGlvbjogSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisgIHdlYmNvcmVC
aW5kaW5nOiBub25lCisgIGV4cG9zZWQ6IFsgV2ViS2l0IF0KKyAgZGVmYXVsdFZhbHVlOgorICAg
IFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisKIFJlc291cmNlTG9hZFNjaGVkdWxpbmdF
bmFibGVkOgogICB0eXBlOiBib29sCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiUmVzb3VyY2UgTG9h
ZCBTY2hlZHVsaW5nIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvd2F0
Y2hvcy9QZXBwZXJVSUNvcmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNo
b3MvUGVwcGVyVUlDb3JlU1BJLmgKaW5kZXggN2E4M2FjYWFiYWU2ODJhYWEzODA3YzBlYTY1OWI5
Y2E2MmIxYmEzMy4uOGQ3Y2QyZWI4MWVlYTBhOWI3ZmM0MjFmNjhhMjI3YmE3NmU0YjAyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvd2F0Y2hvcy9QZXBwZXJVSUNvcmVT
UEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29y
ZVNQSS5oCkBAIC01NSw2ICs1NSwxMSBAQAogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlj
a2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwuaD4KICNlbmRpZgogCisjaWYgSEFWRShR
VUlDS0JPQVJEX0NPTlRST0xMRVIpCisjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9h
cmRDb250cm9sbGVyLmg+CisjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRSZW1v
dGVWaWV3Q29udHJvbGxlci5oPgorI2VuZGlmCisKICNlbHNlIC8vIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggNWQ2ODMy
NjdhZTI0NWI0Yzc5YWVhOGI4MDZkNTVmZjZkZTNhNjMzMS4uNzYxNTA1ODIxNWQwZGU5YWUwMDRl
ZGMzNGM2ZWU5Y2Y2ZmY3MjljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTE5LDYgKzExOSwxMyBAQCBj
bGFzcyBXZWJQYWdlUHJveHk7CiBAY2xhc3MgX1VJTG9va3VwR2VzdHVyZVJlY29nbml6ZXI7CiBA
Y2xhc3MgX1VJSGlnaGxpZ2h0VmlldzsKIAorI2lmIFBMQVRGT1JNKFdBVENIT1MpCitAY2xhc3Mg
UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcjsKKyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJP
TExFUikKK0BjbGFzcyBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXI7CisjZW5kaWYKKyNlbmRpZgor
CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb25BZGRpdGlvbnNCZWZvcmUuaD4KICNlbmRpZgpAQCAtNDUw
LDEyICs0NTcsMTUgQEAgcHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgUmV0
YWluUHRyPFdLRm9jdXNlZEZvcm1Db250cm9sVmlldz4gX2ZvY3VzZWRGb3JtQ29udHJvbFZpZXc7
Ci0gICAgUmV0YWluUHRyPFVJVmlld0NvbnRyb2xsZXI+IF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5w
dXRWaWV3Q29udHJvbGxlcjsKKyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKKyAgICBS
ZXRhaW5QdHI8UFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyPiBfcHJlc2VudGVkUXVpY2tib2FyZENv
bnRyb2xsZXI7CisjZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisgICAgUmV0
YWluUHRyPFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXI+IF9wcmVzZW50ZWRGdWxsU2NyZWVu
SW5wdXRWaWV3Q29udHJvbGxlcjsKICAgICBSZXRhaW5QdHI8VUlOYXZpZ2F0aW9uQ29udHJvbGxl
cj4gX2lucHV0TmF2aWdhdGlvblZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlbklucHV0czsKIAog
ICAgIEJPT0wgX3Nob3VsZFJlc3RvcmVGaXJzdFJlc3BvbmRlclN0YXR1c0FmdGVyTG9zaW5nRm9j
dXM7CiAgICAgQmxvY2tQdHI8dm9pZCgpPiBfYWN0aXZlRm9jdXNlZFN0YXRlUmV0YWluQmxvY2s7
Ci0jZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShXQVRDSE9TKQogCiAjaWYgRU5BQkxFKFBMQVRG
T1JNX0RSSVZFTl9URVhUX0NIRUNLSU5HKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlRl
eHRDaGVja2luZ0NvbnRyb2xsZXI+IF90ZXh0Q2hlY2tpbmdDb250cm9sbGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggZTM0ZjRmMmM0OGE3NzliM2RhOGU4YjdiMzBmYTlmNTU2ZjdiYTc1OS4uMzA1ODQz
YTM0MGQ2OGU0MmE3MTMyZmQyNGNhYWY4NDdjZDYzZTVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0x
NjYsNiArMTY2LDEwIEBACiAjaW1wb3J0ICJXS1dlYkV2ZW50LmgiCiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFdBVENIT1MpCisjaW1wb3J0ICJQZXBwZXJVSUNvcmVTUEkuaCIKKyNlbmRpZgorCiAj
aW1wb3J0IDxwYWwvaW9zL01hbmFnZWRDb25maWd1cmF0aW9uU29mdExpbmsuaD4KIAogI2lmIEhB
VkUoTElOS19QUkVWSUVXKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKQEAgLTE4Niw5ICsxOTAsMTQg
QEAgQGVuZAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXQVRDSE9TKQorI2lmIEhBVkUoUVVJQ0tC
T0FSRF9DT05UUk9MTEVSKQorQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChRdWlja2JvYXJkQ29u
dHJvbGxlclN1cHBvcnQpIDxQVUlDUXVpY2tib2FyZENvbnRyb2xsZXJEZWxlZ2F0ZT4KK0BlbmQK
KyNlbmRpZiAvLyBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKKwogQGludGVyZmFjZSBXS0Nv
bnRlbnRWaWV3IChXYXRjaFN1cHBvcnQpIDxXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXdEZWxlZ2F0
ZSwgV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGUsIFdLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyRGVsZWdhdGU+CiBAZW5kCi0jZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9S
TShXQVRDSE9TKQogCiBzdGF0aWMgdm9pZCAqV0tDb250ZW50Vmlld0tWT1RyYW5zZm9ybUNvbnRl
eHQgPSAmV0tDb250ZW50Vmlld0tWT1RyYW5zZm9ybUNvbnRleHQ7CiAKQEAgLTM0NDUsOSArMzQ1
NCw5IEBAIC0gKFVJQ29sb3IgKilfY2FzY2FkZUludGVyYWN0aW9uVGludENvbG9yCiAgICAgcmV0
dXJuIFtzZWxmIF9pbmhlcml0ZWRJbnRlcmFjdGlvblRpbnRDb2xvcl07CiB9CiAKLS0gKHZvaWQp
X3VwZGF0ZUludGVyYWN0aW9uVGludENvbG9yCistICh2b2lkKV91cGRhdGVJbnRlcmFjdGlvblRp
bnRDb2xvcjooVUlUZXh0SW5wdXRUcmFpdHMgKil0cmFpdHMKIHsKLSAgICBbX3RyYWl0cyBfc2V0
Q29sb3JzVG9NYXRjaFRpbnRDb2xvcjpbc2VsZiBfY2FzY2FkZUludGVyYWN0aW9uVGludENvbG9y
XV07CisgICAgW3RyYWl0cyBfc2V0Q29sb3JzVG9NYXRjaFRpbnRDb2xvcjpbc2VsZiBfY2FzY2Fk
ZUludGVyYWN0aW9uVGludENvbG9yXV07CiB9CiAKIC0gKHZvaWQpdGludENvbG9yRGlkQ2hhbmdl
CkBAIC0zNDU3LDcgKzM0NjYsNyBAQCAtICh2b2lkKXRpbnRDb2xvckRpZENoYW5nZQogICAgIEJP
T0wgc2hvdWxkVXBkYXRlVGV4dFNlbGVjdGlvbiA9IHNlbGYuaXNGaXJzdFJlc3BvbmRlciAmJiBb
c2VsZiBjYW5TaG93Tm9uRW1wdHlTZWxlY3Rpb25WaWV3XTsKICAgICBpZiAoc2hvdWxkVXBkYXRl
VGV4dFNlbGVjdGlvbikKICAgICAgICAgW190ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgZGVhY3Rp
dmF0ZVNlbGVjdGlvbl07Ci0gICAgW3NlbGYgX3VwZGF0ZUludGVyYWN0aW9uVGludENvbG9yXTsK
KyAgICBbc2VsZiBfdXBkYXRlSW50ZXJhY3Rpb25UaW50Q29sb3I6X3RyYWl0cy5nZXQoKV07CiAg
ICAgaWYgKHNob3VsZFVwZGF0ZVRleHRTZWxlY3Rpb24pCiAgICAgICAgIFtfdGV4dEludGVyYWN0
aW9uQXNzaXN0YW50IGFjdGl2YXRlU2VsZWN0aW9uXTsKIH0KQEAgLTUxNjQsNDUgKzUxNzMsNDkg
QEAgLSAoVUlUZXh0SW5wdXRUcmFpdHMgKil0ZXh0SW5wdXRUcmFpdHMKICAgICAgICAgcmV0dXJu
IF90cmFpdHMuZ2V0KCk7CiAjZW5kaWYKIAotICAgIFtfdHJhaXRzIHNldFNlY3VyZVRleHRFbnRy
eTpfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0
VHlwZTo6UGFzc3dvcmQgfHwgW19mb3JtSW5wdXRTZXNzaW9uIGZvcmNlU2VjdXJlVGV4dEVudHJ5
XV07Ci0gICAgW190cmFpdHMgc2V0U2hvcnRjdXRDb252ZXJzaW9uVHlwZTpfZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6UGFzc3dvcmQg
PyBVSVRleHRTaG9ydGN1dENvbnZlcnNpb25UeXBlTm8gOiBVSVRleHRTaG9ydGN1dENvbnZlcnNp
b25UeXBlRGVmYXVsdF07CisgICAgW3NlbGYgX3VwZGF0ZVRleHRJbnB1dFRyYWl0czpfdHJhaXRz
LmdldCgpXTsKKyAgICByZXR1cm4gX3RyYWl0cy5nZXQoKTsKK30KKworLSAodm9pZClfdXBkYXRl
VGV4dElucHV0VHJhaXRzOihpZCA8VUlUZXh0SW5wdXRUcmFpdHM+KXRyYWl0cworeworICAgIHRy
YWl0cy5zZWN1cmVUZXh0RW50cnkgPSBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50
VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6UGFzc3dvcmQgfHwgW19mb3JtSW5wdXRTZXNzaW9u
IGZvcmNlU2VjdXJlVGV4dEVudHJ5XTsKIAogICAgIHN3aXRjaCAoX2ZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uZW50ZXJLZXlIaW50KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpFbnRlcktleUhpbnQ6
OkVudGVyOgotICAgICAgICBbX3RyYWl0cyBzZXRSZXR1cm5LZXlUeXBlOlVJUmV0dXJuS2V5RGVm
YXVsdF07CisgICAgICAgIHRyYWl0cy5yZXR1cm5LZXlUeXBlID0gVUlSZXR1cm5LZXlEZWZhdWx0
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkNvcmU6OkVudGVyS2V5SGludDo6RG9uZToK
LSAgICAgICAgW190cmFpdHMgc2V0UmV0dXJuS2V5VHlwZTpVSVJldHVybktleURvbmVdOworICAg
ICAgICB0cmFpdHMucmV0dXJuS2V5VHlwZSA9IFVJUmV0dXJuS2V5RG9uZTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXZWJDb3JlOjpFbnRlcktleUhpbnQ6OkdvOgotICAgICAgICBbX3RyYWl0
cyBzZXRSZXR1cm5LZXlUeXBlOlVJUmV0dXJuS2V5R29dOworICAgICAgICB0cmFpdHMucmV0dXJu
S2V5VHlwZSA9IFVJUmV0dXJuS2V5R287CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29y
ZTo6RW50ZXJLZXlIaW50OjpOZXh0OgotICAgICAgICBbX3RyYWl0cyBzZXRSZXR1cm5LZXlUeXBl
OlVJUmV0dXJuS2V5TmV4dF07CisgICAgICAgIHRyYWl0cy5yZXR1cm5LZXlUeXBlID0gVUlSZXR1
cm5LZXlOZXh0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkNvcmU6OkVudGVyS2V5SGlu
dDo6U2VhcmNoOgotICAgICAgICBbX3RyYWl0cyBzZXRSZXR1cm5LZXlUeXBlOlVJUmV0dXJuS2V5
U2VhcmNoXTsKKyAgICAgICAgdHJhaXRzLnJldHVybktleVR5cGUgPSBVSVJldHVybktleVNlYXJj
aDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpFbnRlcktleUhpbnQ6OlNlbmQ6
Ci0gICAgICAgIFtfdHJhaXRzIHNldFJldHVybktleVR5cGU6VUlSZXR1cm5LZXlTZW5kXTsKKyAg
ICAgICAgdHJhaXRzLnJldHVybktleVR5cGUgPSBVSVJldHVybktleVNlbmQ7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6IHsKICAgICAgICAgaWYgKCFfZm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5mb3JtQWN0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIFtfdHJhaXRzIHNldFJldHVy
bktleVR5cGU6X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0
OjpJbnB1dFR5cGU6OlNlYXJjaCA/IFVJUmV0dXJuS2V5U2VhcmNoIDogVUlSZXR1cm5LZXlHb107
CisgICAgICAgICAgICB0cmFpdHMucmV0dXJuS2V5VHlwZSA9IF9mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLmVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpTZWFyY2ggPyBVSVJldHVy
bktleVNlYXJjaCA6IFVJUmV0dXJuS2V5R287CiAgICAgfQogICAgIH0KIAotICAgIGlmIChfZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6
UGFzc3dvcmQgfHwgX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2Vi
S2l0OjpJbnB1dFR5cGU6OkVtYWlsIHx8IF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1l
bnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpVUkwgfHwgX2ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uZm9ybUFjdGlvbi5jb250YWlucygibG9naW4iKSkgewotICAgICAgICBbX3RyYWl0cyBz
ZXRBdXRvY2FwaXRhbGl6YXRpb25UeXBlOlVJVGV4dEF1dG9jYXBpdGFsaXphdGlvblR5cGVOb25l
XTsKLSAgICAgICAgW190cmFpdHMgc2V0QXV0b2NvcnJlY3Rpb25UeXBlOlVJVGV4dEF1dG9jb3Jy
ZWN0aW9uVHlwZU5vXTsKLSAgICB9IGVsc2UgewotICAgICAgICBbX3RyYWl0cyBzZXRBdXRvY2Fw
aXRhbGl6YXRpb25UeXBlOnRvVUlUZXh0QXV0b2NhcGl0YWxpemUoX2ZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uYXV0b2NhcGl0YWxpemVUeXBlKV07Ci0gICAgICAgIFtfdHJhaXRzIHNldEF1dG9j
b3JyZWN0aW9uVHlwZTpfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pc0F1dG9jb3JyZWN0ID8g
VUlUZXh0QXV0b2NvcnJlY3Rpb25UeXBlWWVzIDogVUlUZXh0QXV0b2NvcnJlY3Rpb25UeXBlTm9d
OwotICAgIH0KKyAgICBCT09MIGRpc2FibGVBdXRvY29ycmVjdEFuZEF1dG9jYXBpdGFsaXplID0g
X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5
cGU6OlBhc3N3b3JkIHx8IF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09
IFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbAorICAgICAgICB8fCBfZm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi5lbGVtZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6VVJMIHx8IF9mb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLmZvcm1BY3Rpb24uY29udGFpbnMoImxvZ2luIik7CisgICAgaWYg
KFt0cmFpdHMgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRBdXRvY2FwaXRhbGl6YXRp
b25UeXBlOildKQorICAgICAgICB0cmFpdHMuYXV0b2NhcGl0YWxpemF0aW9uVHlwZSA9IGRpc2Fi
bGVBdXRvY29ycmVjdEFuZEF1dG9jYXBpdGFsaXplID8gVUlUZXh0QXV0b2NhcGl0YWxpemF0aW9u
VHlwZU5vbmUgOiB0b1VJVGV4dEF1dG9jYXBpdGFsaXplKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uLmF1dG9jYXBpdGFsaXplVHlwZSk7CisgICAgaWYgKFt0cmFpdHMgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzZXRBdXRvY29ycmVjdGlvblR5cGU6KV0pCisgICAgICAgIHRyYWl0cy5h
dXRvY29ycmVjdGlvblR5cGUgPSBkaXNhYmxlQXV0b2NvcnJlY3RBbmRBdXRvY2FwaXRhbGl6ZSA/
IFVJVGV4dEF1dG9jb3JyZWN0aW9uVHlwZU5vIDogKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmlzQXV0b2NvcnJlY3QgPyBVSVRleHRBdXRvY29ycmVjdGlvblR5cGVZZXMgOiBVSVRleHRBdXRv
Y29ycmVjdGlvblR5cGVObyk7CiAKICAgICBpZiAoIV9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmlzU3BlbGxDaGVja2luZ0VuYWJsZWQpIHsKLSAgICAgICAgW190cmFpdHMgc2V0U21hcnRRdW90
ZXNUeXBlOlVJVGV4dFNtYXJ0UXVvdGVzVHlwZU5vXTsKLSAgICAgICAgW190cmFpdHMgc2V0U21h
cnREYXNoZXNUeXBlOlVJVGV4dFNtYXJ0RGFzaGVzVHlwZU5vXTsKKyAgICAgICAgdHJhaXRzLnNt
YXJ0UXVvdGVzVHlwZSA9IFVJVGV4dFNtYXJ0UXVvdGVzVHlwZU5vOworICAgICAgICB0cmFpdHMu
c21hcnREYXNoZXNUeXBlID0gVUlUZXh0U21hcnREYXNoZXNUeXBlTm87CiAgICAgfQogCiAgICAg
c3dpdGNoIChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pbnB1dE1vZGUpIHsKQEAgLTUyMTAs
MTkgKzUyMjMsMTkgQEAgLSAoVUlUZXh0SW5wdXRUcmFpdHMgKil0ZXh0SW5wdXRUcmFpdHMKICAg
ICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6VW5zcGVjaWZpZWQ6CiAgICAgICAgIHN3aXRjaCAo
X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICAgICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6UGhvbmU6Ci0gICAgICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2Fy
ZFR5cGU6VUlLZXlib2FyZFR5cGVQaG9uZVBhZF07CisgICAgICAgICAgICB0cmFpdHMua2V5Ym9h
cmRUeXBlID0gVUlLZXlib2FyZFR5cGVQaG9uZVBhZDsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpVUkw6Ci0gICAgICAgICAgICBbX3RyYWl0cyBz
ZXRLZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5cGVVUkxdOworICAgICAgICAgICAgdHJhaXRzLmtl
eWJvYXJkVHlwZSA9IFVJS2V5Ym9hcmRUeXBlVVJMOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkVtYWlsOgotICAgICAgICAgICAgW190cmFpdHMg
c2V0S2V5Ym9hcmRUeXBlOlVJS2V5Ym9hcmRUeXBlRW1haWxBZGRyZXNzXTsKKyAgICAgICAgICAg
IHRyYWl0cy5rZXlib2FyZFR5cGUgPSBVSUtleWJvYXJkVHlwZUVtYWlsQWRkcmVzczsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOdW1iZXI6Ci0g
ICAgICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5cGVOdW1iZXJz
QW5kUHVuY3R1YXRpb25dOworICAgICAgICAgICAgdHJhaXRzLmtleWJvYXJkVHlwZSA9IFVJS2V5
Ym9hcmRUeXBlTnVtYmVyc0FuZFB1bmN0dWF0aW9uOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok51bWJlclBhZDoKLSAgICAgICAgICAgIFtfdHJh
aXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJkVHlwZU51bWJlclBhZF07CisgICAgICAgICAg
ICB0cmFpdHMua2V5Ym9hcmRUeXBlID0gVUlLZXlib2FyZFR5cGVOdW1iZXJQYWQ7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Tm9uZToKICAgICAg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxlOgpAQCAtNTI0MCw2NiAr
NTI1Myw3NSBAQCAtIChVSVRleHRJbnB1dFRyYWl0cyAqKXRleHRJbnB1dFRyYWl0cwogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpD
b2xvcjoKICNlbmRpZgotICAgICAgICAgICAgW190cmFpdHMgc2V0S2V5Ym9hcmRUeXBlOlVJS2V5
Ym9hcmRUeXBlRGVmYXVsdF07CisgICAgICAgICAgICB0cmFpdHMua2V5Ym9hcmRUeXBlID0gVUlL
ZXlib2FyZFR5cGVEZWZhdWx0OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
V2ViQ29yZTo6SW5wdXRNb2RlOjpUZXh0OgotICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5
cGU6VUlLZXlib2FyZFR5cGVEZWZhdWx0XTsKKyAgICAgICAgdHJhaXRzLmtleWJvYXJkVHlwZSA9
IFVJS2V5Ym9hcmRUeXBlRGVmYXVsdDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3Jl
OjpJbnB1dE1vZGU6OlRlbGVwaG9uZToKLSAgICAgICAgW190cmFpdHMgc2V0S2V5Ym9hcmRUeXBl
OlVJS2V5Ym9hcmRUeXBlUGhvbmVQYWRdOworICAgICAgICB0cmFpdHMua2V5Ym9hcmRUeXBlID0g
VUlLZXlib2FyZFR5cGVQaG9uZVBhZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3Jl
OjpJbnB1dE1vZGU6OlVybDoKLSAgICAgICAgW190cmFpdHMgc2V0S2V5Ym9hcmRUeXBlOlVJS2V5
Ym9hcmRUeXBlVVJMXTsKKyAgICAgICAgdHJhaXRzLmtleWJvYXJkVHlwZSA9IFVJS2V5Ym9hcmRU
eXBlVVJMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6RW1h
aWw6Ci0gICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJkVHlwZUVtYWls
QWRkcmVzc107CisgICAgICAgIHRyYWl0cy5rZXlib2FyZFR5cGUgPSBVSUtleWJvYXJkVHlwZUVt
YWlsQWRkcmVzczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6
Ok51bWVyaWM6Ci0gICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJkVHlw
ZU51bWJlclBhZF07CisgICAgICAgIHRyYWl0cy5rZXlib2FyZFR5cGUgPSBVSUtleWJvYXJkVHlw
ZU51bWJlclBhZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6
OkRlY2ltYWw6Ci0gICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJkVHlw
ZURlY2ltYWxQYWRdOworICAgICAgICB0cmFpdHMua2V5Ym9hcmRUeXBlID0gVUlLZXlib2FyZFR5
cGVEZWNpbWFsUGFkOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9k
ZTo6U2VhcmNoOgotICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5
cGVXZWJTZWFyY2hdOworICAgICAgICB0cmFpdHMua2V5Ym9hcmRUeXBlID0gVUlLZXlib2FyZFR5
cGVXZWJTZWFyY2g7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIFtfdHJhaXRzIHNldFRl
eHRDb250ZW50VHlwZTpjb250ZW50VHlwZUZyb21GaWVsZE5hbWUoX2ZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uYXV0b2ZpbGxGaWVsZE5hbWUpXTsKKyNpZiBQTEFURk9STShXQVRDSE9TKQorICAg
IHRyYWl0cy50ZXh0Q29udGVudFR5cGUgPSBzZWxmLnRleHRDb250ZW50VHlwZUZvclF1aWNrYm9h
cmQ7CisjZWxzZQorICAgIHRyYWl0cy50ZXh0Q29udGVudFR5cGUgPSBjb250ZW50VHlwZUZyb21G
aWVsZE5hbWUoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uYXV0b2ZpbGxGaWVsZE5hbWUpOwor
I2VuZGlmCiAKLSAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRU
eXBlKSB7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxlOgotICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHRBcmVhOgotICAgICAgICBbX3RyYWl0cyBzZXRJ
c1NpbmdsZUxpbmVEb2N1bWVudDpOT107Ci0gICAgICAgIGJyZWFrOworICAgIGF1dG8gcHJpdmF0
ZVRyYWl0cyA9IChpZCA8VUlUZXh0SW5wdXRUcmFpdHNfUHJpdmF0ZT4pdHJhaXRzOworICAgIGlm
IChbcHJpdmF0ZVRyYWl0cyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldElzU2luZ2xl
TGluZURvY3VtZW50OildKSB7CisgICAgICAgIHN3aXRjaCAoX2ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uZWxlbWVudFR5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29u
dGVudEVkaXRhYmxlOgorICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToK
KyAgICAgICAgICAgIHByaXZhdGVUcmFpdHMuaXNTaW5nbGVMaW5lRG9jdW1lbnQgPSBOTzsKKyAg
ICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6OkNvbG9yOgorICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpDb2xvcjoKICNlbmRpZgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkRhdGU6Ci0gICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpEcmF3aW5nOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkVtYWlsOgot
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1
dFR5cGU6Ok51bWJlcjoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOdW1iZXJQYWQ6Ci0g
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6UGFzc3dvcmQ6Ci0gICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6UGhvbmU6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VhcmNoOgotICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdDoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpUZXh0OgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRpbWU6Ci0gICAgY2FzZSBX
ZWJLaXQ6OklucHV0VHlwZTo6VVJMOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OldlZWs6
Ci0gICAgICAgIFtfdHJhaXRzIHNldElzU2luZ2xlTGluZURvY3VtZW50OllFU107Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgorICAgICAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpEYXRlVGltZUxvY2FsOgorICAgICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpEcmF3aW5nOgorICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbDoK
KyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6CisgICAgICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6Ok51bWJlcjoKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
TnVtYmVyUGFkOgorICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZDoKKyAg
ICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6UGhvbmU6CisgICAgICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlNlYXJjaDoKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2Vs
ZWN0OgorICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0OgorICAgICAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgorICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpVUkw6CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OldlZWs6CisgICAgICAgICAg
ICBwcml2YXRlVHJhaXRzLmlzU2luZ2xlTGluZURvY3VtZW50ID0gWUVTOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIAotICAgIFtzZWxmIF91cGRhdGVJbnRlcmFjdGlv
blRpbnRDb2xvcl07CisgICAgaWYgKFtwcml2YXRlVHJhaXRzIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0U2hvcnRjdXRDb252ZXJzaW9uVHlwZTopXSkKKyAgICAgICAgcHJpdmF0ZVRy
YWl0cy5zaG9ydGN1dENvbnZlcnNpb25UeXBlID0gX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24u
ZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkID8gVUlUZXh0U2hvcnRj
dXRDb252ZXJzaW9uVHlwZU5vIDogVUlUZXh0U2hvcnRjdXRDb252ZXJzaW9uVHlwZURlZmF1bHQ7
CiAKLSAgICByZXR1cm4gX3RyYWl0cy5nZXQoKTsKKyAgICBpZiAoW3RyYWl0cyBpc0tpbmRPZkNs
YXNzOlVJVGV4dElucHV0VHJhaXRzLmNsYXNzXSkKKyAgICAgICAgW3NlbGYgX3VwZGF0ZUludGVy
YWN0aW9uVGludENvbG9yOihVSVRleHRJbnB1dFRyYWl0cyAqKXRyYWl0c107CiB9CiAKIC0gKFVJ
VGV4dEludGVyYWN0aW9uQXNzaXN0YW50ICopaW50ZXJhY3Rpb25Bc3Npc3RhbnQKQEAgLTY0NDUs
NiArNjQ2NywzMSBAQCAtICh2b2lkKXJlbW92ZUZvY3VzZWRGb3JtQ29udHJvbE92ZXJsYXkKICAg
ICBbc2VsZiBzZXRJbnB1dERlbGVnYXRlOm5pbF07CiB9CiAKKyNpZiBIQVZFKFFVSUNLQk9BUkRf
Q09OVFJPTExFUikKKworLSAoUmV0YWluUHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2Ny
ZWF0ZVF1aWNrYm9hcmRDb250cm9sbGVyOihVSVZpZXdDb250cm9sbGVyICopcHJlc2VudGluZ1Zp
ZXdDb250cm9sbGVyCit7CisgICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9IGFkb3B0TlMo
W1tQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gc3Vn
Z2VzdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6W19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dlc3Rpb25zXS5jb3VudF0pOwor
ICAgIGZvciAoVUlUZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBbX2Zvcm1JbnB1dFNlc3Np
b24gc3VnZ2VzdGlvbnNdKQorICAgICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0OnN1Z2dlc3Rp
b24uaW5wdXRUZXh0XTsKKworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW1tQVUlDVGV4dElu
cHV0Q29udGV4dCBhbGxvY10gaW5pdF0pOworICAgIFtzZWxmIF91cGRhdGVUZXh0SW5wdXRUcmFp
dHM6Y29udGV4dC5nZXQoKV07CisgICAgW2NvbnRleHQgc2V0U3VnZ2VzdGlvbnM6c3VnZ2VzdGlv
bnMuZ2V0KCldOworICAgIFtjb250ZXh0IHNldEluaXRpYWxUZXh0Ol9mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLnZhbHVlXTsKKyAgICBbY29udGV4dCBzZXRBY2NlcHRzRW1vamk6WUVTXTsKKyAg
ICBbcXVpY2tib2FyZENvbnRyb2xsZXIgc2V0UXVpY2tib2FyZFByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXJdOworICAgIFtxdWlja2JvYXJkQ29udHJvbGxl
ciBzZXRFeGNsdWRlZEZyb21TY3JlZW5DYXB0dXJlOltjb250ZXh0IGlzU2VjdXJlVGV4dEVudHJ5
XV07CisgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNldFRleHRJbnB1dENvbnRleHQ6Y29udGV4
dC5nZXQoKV07CisgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNldERlbGVnYXRlOnNlbGZdOwor
CisgICAgcmV0dXJuIHF1aWNrYm9hcmRDb250cm9sbGVyOworfQorCisjZW5kaWYgLy8gSEFWRShR
VUlDS0JPQVJEX0NPTlRST0xMRVIpCisKIC0gKHZvaWQpcHJlc2VudFZpZXdDb250cm9sbGVyRm9y
Q3VycmVudEZvY3VzZWRFbGVtZW50CiB7CiAgICAgW3NlbGYgZGlzbWlzc0FsbElucHV0Vmlld0Nv
bnRyb2xsZXJzOk5PXTsKQEAgLTY0NzEsMTIgKzY1MTgsMjMgQEAgLSAodm9pZClwcmVzZW50Vmll
d0NvbnRyb2xsZXJGb3JDdXJyZW50Rm9jdXNlZEVsZW1lbnQKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Tm9uZToKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKKyAgICBkZWZhdWx0OiB7CisjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisgICAg
ICAgIGlmIChfcGFnZS0+cHJlZmVyZW5jZXMoKS5xdWlja2JvYXJkQ29udHJvbGxlckZvclRleHRJ
bnB1dEVuYWJsZWQoKSkgeworICAgICAgICAgICAgX3ByZXNlbnRlZFF1aWNrYm9hcmRDb250cm9s
bGVyID0gW3NlbGYgX2NyZWF0ZVF1aWNrYm9hcmRDb250cm9sbGVyOnByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlcl07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAg
IF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZTpzZWxmXSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICB9CiAKLSAgICBBU1NFUlQoX3ByZXNlbnRlZEZ1
bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyKTsKKyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJP
TExFUikKKyAgICBBU1NFUlRfSU1QTElFUyhfcHJlc2VudGVkUXVpY2tib2FyZENvbnRyb2xsZXIs
ICFfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIpOworICAgIEFTU0VSVF9J
TVBMSUVTKF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciwgIV9wcmVzZW50
ZWRRdWlja2JvYXJkQ29udHJvbGxlcik7CisjZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTlRS
T0xMRVIpCisgICAgQVNTRVJUKHNlbGYuX2lzUHJlc2VudGluZ0Z1bGxTY3JlZW5JbnB1dFZpZXcp
OwogICAgIEFTU0VSVChwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIpOwogCiAgICAgaWYgKCFwcmVm
ZXJzTW9kYWxQcmVzZW50YXRpb24gJiYgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBpc0tpbmRP
ZkNsYXNzOltVSU5hdmlnYXRpb25Db250cm9sbGVyIGNsYXNzXV0pCkBAIC02NDg0LDE5ICs2NTQy
LDMzIEBAIC0gKHZvaWQpcHJlc2VudFZpZXdDb250cm9sbGVyRm9yQ3VycmVudEZvY3VzZWRFbGVt
ZW50CiAgICAgZWxzZQogICAgICAgICBfaW5wdXROYXZpZ2F0aW9uVmlld0NvbnRyb2xsZXJGb3JG
dWxsU2NyZWVuSW5wdXRzID0gbmlsOwogCi0gICAgLy8gUHJlc2VudCB0aGUgaW5wdXQgdmlldyBj
b250cm9sbGVyIG9uIGFuIGV4aXN0aW5nIG5hdmlnYXRpb24gc3RhY2ssIGlmIHBvc3NpYmxlLiBJ
ZiB0aGVyZSBpcyBubyBuYXZpZ2F0aW9uIHN0YWNrIHdlIGNhbiB1c2UsIGZhbGwgYmFjayB0byBw
cmVzZW50aW5nIG1vZGFsbHkuCi0gICAgLy8gVGhpcyBpcyBiZWNhdXNlIHRoZSBISSBzcGVjaWZp
Y2F0aW9uIChmb3IgY2VydGFpbiBzY2VuYXJpb3MpIGNhbGxzIGZvciBuYXZpZ2F0aW9uLXN0eWxl
IHZpZXcgY29udHJvbGxlciBwcmVzZW50YXRpb24sIGJ1dCBXS1dlYlZpZXcgY2FuJ3QgbWFrZSBh
bnkgZ3VhcmFudGVlcwotICAgIC8vIGFib3V0IGNsaWVudHMnIHZpZXcgY29udHJvbGxlciBoaWVy
YXJjaGllcywgc28gd2UgY2FuIG9ubHkgdHJ5IG91ciBiZXN0IHRvIGF2b2lkIHByZXNlbnRpbmcg
bW9kYWxseS4gQ2xpZW50cyBjYW4gaW1wbGljaXRseSBvcHQgaW4gdG8gc3BlY2NlZCBiZWhhdmlv
ciBieSB1c2luZwotICAgIC8vIFVJTmF2aWdhdGlvbkNvbnRyb2xsZXIgdG8gcHJlc2VudCB0aGUg
d2ViIHZpZXcuCi0gICAgaWYgKF9pbnB1dE5hdmlnYXRpb25WaWV3Q29udHJvbGxlckZvckZ1bGxT
Y3JlZW5JbnB1dHMpCi0gICAgICAgIFtfaW5wdXROYXZpZ2F0aW9uVmlld0NvbnRyb2xsZXJGb3JG
dWxsU2NyZWVuSW5wdXRzIHB1c2hWaWV3Q29udHJvbGxlcjpfcHJlc2VudGVkRnVsbFNjcmVlbklu
cHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTXTsKLSAgICBlbHNlCi0gICAgICAg
IFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOl9wcmVzZW50
ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxl
dGlvbjpuaWxdOworICAgIFJldGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBjb250cm9sbGVyOwor
ICAgIGlmIChfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIpIHsKKyAgICAg
ICAgLy8gUHJlc2VudCB0aGUgaW5wdXQgdmlldyBjb250cm9sbGVyIG9uIGFuIGV4aXN0aW5nIG5h
dmlnYXRpb24gc3RhY2ssIGlmIHBvc3NpYmxlLiBJZiB0aGVyZSBpcyBubyBuYXZpZ2F0aW9uIHN0
YWNrIHdlIGNhbiB1c2UsIGZhbGwgYmFjayB0byBwcmVzZW50aW5nIG1vZGFsbHkuCisgICAgICAg
IC8vIFRoaXMgaXMgYmVjYXVzZSB0aGUgSEkgc3BlY2lmaWNhdGlvbiAoZm9yIGNlcnRhaW4gc2Nl
bmFyaW9zKSBjYWxscyBmb3IgbmF2aWdhdGlvbi1zdHlsZSB2aWV3IGNvbnRyb2xsZXIgcHJlc2Vu
dGF0aW9uLCBidXQgV0tXZWJWaWV3IGNhbid0IG1ha2UgYW55IGd1YXJhbnRlZXMKKyAgICAgICAg
Ly8gYWJvdXQgY2xpZW50cycgdmlldyBjb250cm9sbGVyIGhpZXJhcmNoaWVzLCBzbyB3ZSBjYW4g
b25seSB0cnkgb3VyIGJlc3QgdG8gYXZvaWQgcHJlc2VudGluZyBtb2RhbGx5LiBDbGllbnRzIGNh
biBpbXBsaWNpdGx5IG9wdCBpbiB0byBzcGVjY2VkIGJlaGF2aW9yIGJ5IHVzaW5nCisgICAgICAg
IC8vIFVJTmF2aWdhdGlvbkNvbnRyb2xsZXIgdG8gcHJlc2VudCB0aGUgd2ViIHZpZXcuCisgICAg
ICAgIGlmIChfaW5wdXROYXZpZ2F0aW9uVmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuSW5wdXRz
KQorICAgICAgICAgICAgW19pbnB1dE5hdmlnYXRpb25WaWV3Q29udHJvbGxlckZvckZ1bGxTY3Jl
ZW5JbnB1dHMgcHVzaFZpZXdDb250cm9sbGVyOl9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3
Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVNdOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBbcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpfcHJlc2Vu
dGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTIGNvbXBs
ZXRpb246bmlsXTsKKyAgICAgICAgY29udHJvbGxlciA9IF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5w
dXRWaWV3Q29udHJvbGxlci5nZXQoKTsKKyAgICB9CisKKyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09O
VFJPTExFUikKKyAgICBpZiAoX3ByZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVyKSB7CisgICAg
ICAgIFtfcHJlc2VudGVkUXVpY2tib2FyZENvbnRyb2xsZXIgcHJlc2VudF07CisgICAgICAgIGNv
bnRyb2xsZXIgPSBbcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyIHByZXNlbnRlZFZpZXdDb250cm9s
bGVyXTsKKyAgICB9CisjZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCiAKICAg
ICAvLyBQcmVzZW50aW5nIGEgZnVsbHNjcmVlbiBpbnB1dCB2aWV3IGNvbnRyb2xsZXIgZnVsbHkg
b2JzY3VyZXMgdGhlIHdlYiB2aWV3LiBXaXRob3V0IHRha2luZyB0aGlzIHRva2VuLCB0aGUgd2Vi
IGNvbnRlbnQgcHJvY2VzcyB3aWxsIGdldCBiYWNrZ3JvdW5kZWQuCiAgICAgX3BhZ2UtPnByb2Nl
c3MoKS5zdGFydEJhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpOwogCi0gICAg
W3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlci50cmFuc2l0aW9uQ29vcmRpbmF0b3IgYW5pbWF0ZUFs
b25nc2lkZVRyYW5zaXRpb246bmlsIGNvbXBsZXRpb246W3dlYWtXZWJWaWV3ID0gV2Vha09iakNQ
dHI8V0tXZWJWaWV3Pihfd2ViVmlldyksIGNvbnRyb2xsZXIgPSBfcHJlc2VudGVkRnVsbFNjcmVl
bklucHV0Vmlld0NvbnRyb2xsZXJdIChpZCA8VUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db29y
ZGluYXRvckNvbnRleHQ+KSB7CisgICAgLy8gRklYTUU6IFBVSUNRdWlja2JvYXJkQ29udHJvbGxl
ciBkb2VzIG5vdCBwcmVzZW50IGl0cyB2aWV3IGNvbnRyb2xsZXIgaW1tZWRpYXRlbHksIHNpbmNl
IGl0IGFzeW5jaHJvbm91c2x5CisgICAgLy8gZXN0YWJsaXNoZXMgYSBjb25uZWN0aW9uIHRvIHRo
ZSBxdWlja2JvYXJkIHZpZXcgc2VydmljZSBiZWZvcmUgcHJlc2VudGluZyB0aGUgcmVtb3RlIHZp
ZXcgY29udHJvbGxlci4KKyAgICAvLyBGaXhpbmcgdGhpcyByZXF1aXJlcyBhIHZlcnNpb24gb2Yg
YC1bUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIHByZXNlbnRdYCB0aGF0IHRha2VzIGEgY29tcGxl
dGlvbiBoYW5kbGVyLgorICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIudHJhbnNpdGlvbkNv
b3JkaW5hdG9yIGFuaW1hdGVBbG9uZ3NpZGVUcmFuc2l0aW9uOm5pbCBjb21wbGV0aW9uOlt3ZWFr
V2ViVmlldyA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oX3dlYlZpZXcpLCBjb250cm9sbGVyXSAo
aWQgPFVJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29vcmRpbmF0b3JDb250ZXh0PikgewogICAg
ICAgICBhdXRvIHN0cm9uZ1dlYlZpZXcgPSB3ZWFrV2ViVmlldy5nZXQoKTsKICAgICAgICAgaWQg
PFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURl
bGVnYXRlUHJpdmF0ZT4+KFtzdHJvbmdXZWJWaWV3IFVJRGVsZWdhdGVdKTsKICAgICAgICAgaWYg
KFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkUHJl
c2VudEZvY3VzZWRFbGVtZW50Vmlld0NvbnRyb2xsZXI6KV0pCkBAIC02NTA0LDI1ICs2NTc2LDQ5
IEBAIC0gKHZvaWQpcHJlc2VudFZpZXdDb250cm9sbGVyRm9yQ3VycmVudEZvY3VzZWRFbGVtZW50
CiAgICAgfV07CiB9CiAKKy0gKEJPT0wpX2lzUHJlc2VudGluZ0Z1bGxTY3JlZW5JbnB1dFZpZXcK
K3sKKyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKKyAgICBpZiAoX3ByZXNlbnRlZFF1
aWNrYm9hcmRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gWUVTOworI2VuZGlmIC8vIEhBVkUo
UVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorICAgIHJldHVybiBfcHJlc2VudGVkRnVsbFNjcmVlbklu
cHV0Vmlld0NvbnRyb2xsZXI7Cit9CisKIC0gKHZvaWQpZGlzbWlzc0FsbElucHV0Vmlld0NvbnRy
b2xsZXJzOihCT09MKWFuaW1hdGVkCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uQ29udHJvbGxlciA9
IFdURk1vdmUoX2lucHV0TmF2aWdhdGlvblZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlbklucHV0
cyk7Ci0gICAgYXV0byBwcmVzZW50ZWRDb250cm9sbGVyID0gV1RGTW92ZShfcHJlc2VudGVkRnVs
bFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIpOworICAgIGF1dG8gbmF2aWdhdGlvbkNvbnRyb2xs
ZXIgPSBzdGQ6OmV4Y2hhbmdlKF9pbnB1dE5hdmlnYXRpb25WaWV3Q29udHJvbGxlckZvckZ1bGxT
Y3JlZW5JbnB1dHMsIG5pbCk7CiAKLSAgICBpZiAoIXByZXNlbnRlZENvbnRyb2xsZXIpCisgICAg
aWYgKCFzZWxmLl9pc1ByZXNlbnRpbmdGdWxsU2NyZWVuSW5wdXRWaWV3KSB7CisgICAgICAgIEFT
U0VSVCghbmF2aWdhdGlvbkNvbnRyb2xsZXIpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0g
ICAgaWYgKFtuYXZpZ2F0aW9uQ29udHJvbGxlciB2aWV3Q29udHJvbGxlcnNdLmxhc3RPYmplY3Qg
PT0gcHJlc2VudGVkQ29udHJvbGxlci5nZXQoKSkKLSAgICAgICAgW25hdmlnYXRpb25Db250cm9s
bGVyIHBvcFZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6YW5pbWF0ZWRdOwotICAgIGVsc2UKLSAgICAg
ICAgW3ByZXNlbnRlZENvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6YW5p
bWF0ZWQgY29tcGxldGlvbjpuaWxdOworICAgIGlmIChhdXRvIGNvbnRyb2xsZXIgPSBzdGQ6OmV4
Y2hhbmdlKF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciwgbmlsKSkgewor
ICAgICAgICBpZiAoW25hdmlnYXRpb25Db250cm9sbGVyIHZpZXdDb250cm9sbGVyc10ubGFzdE9i
amVjdCA9PSBjb250cm9sbGVyLmdldCgpKQorICAgICAgICAgICAgW25hdmlnYXRpb25Db250cm9s
bGVyIHBvcFZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6YW5pbWF0ZWRdOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBbY29udHJvbGxlciBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDphbmlt
YXRlZCBjb21wbGV0aW9uOm5pbF07CiAKLSAgICBbW3ByZXNlbnRlZENvbnRyb2xsZXIgdHJhbnNp
dGlvbkNvb3JkaW5hdG9yXSBhbmltYXRlQWxvbmdzaWRlVHJhbnNpdGlvbjpuaWwgY29tcGxldGlv
bjpbd2Vha1dlYlZpZXcgPSBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+KF93ZWJWaWV3KSwgY29udHJv
bGxlciA9IHByZXNlbnRlZENvbnRyb2xsZXJdIChpZCA8VUlWaWV3Q29udHJvbGxlclRyYW5zaXRp
b25Db29yZGluYXRvckNvbnRleHQ+KSB7Ci0gICAgICAgIGF1dG8gc3Ryb25nV2ViVmlldyA9IHdl
YWtXZWJWaWV3LmdldCgpOwotICAgICAgICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxl
Z2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW3N0cm9uZ1dlYlZp
ZXcgVUlEZWxlZ2F0ZV0pOwotICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWREaXNtaXNzRm9jdXNlZEVsZW1lbnRWaWV3Q29udHJv
bGxlcjopXSkKLSAgICAgICAgICAgIFt1aURlbGVnYXRlIF93ZWJWaWV3OnN0cm9uZ1dlYlZpZXcu
Z2V0KCkgZGlkRGlzbWlzc0ZvY3VzZWRFbGVtZW50Vmlld0NvbnRyb2xsZXI6Y29udHJvbGxlci5n
ZXQoKV07Ci0gICAgfV07CisgICAgICAgIFtbY29udHJvbGxlciB0cmFuc2l0aW9uQ29vcmRpbmF0
b3JdIGFuaW1hdGVBbG9uZ3NpZGVUcmFuc2l0aW9uOm5pbCBjb21wbGV0aW9uOlt3ZWFrV2ViVmll
dyA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oX3dlYlZpZXcpLCBjb250cm9sbGVyXSAoaWQgPFVJ
Vmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29vcmRpbmF0b3JDb250ZXh0PikgeworICAgICAgICAg
ICAgYXV0byBzdHJvbmdXZWJWaWV3ID0gd2Vha1dlYlZpZXcuZ2V0KCk7CisgICAgICAgICAgICBp
ZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJ
RGVsZWdhdGVQcml2YXRlPj4oW3N0cm9uZ1dlYlZpZXcgVUlEZWxlZ2F0ZV0pOworICAgICAgICAg
ICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6
ZGlkRGlzbWlzc0ZvY3VzZWRFbGVtZW50Vmlld0NvbnRyb2xsZXI6KV0pCisgICAgICAgICAgICAg
ICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c3Ryb25nV2ViVmlldy5nZXQoKSBkaWREaXNtaXNzRm9j
dXNlZEVsZW1lbnRWaWV3Q29udHJvbGxlcjpjb250cm9sbGVyLmdldCgpXTsKKyAgICAgICAgfV07
CisgICAgfQorCisjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisgICAgaWYgKGF1dG8g
Y29udHJvbGxlciA9IHN0ZDo6ZXhjaGFuZ2UoX3ByZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVy
LCBuaWwpKSB7CisgICAgICAgIGF1dG8gcHJlc2VudGVkVmlld0NvbnRyb2xsZXIgPSByZXRhaW5Q
dHIoW2NvbnRyb2xsZXIgcXVpY2tib2FyZFByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0ucHJlc2Vu
dGVkVmlld0NvbnRyb2xsZXIpOworICAgICAgICBbY29udHJvbGxlciBkaXNtaXNzV2l0aENvbXBs
ZXRpb246W3dlYWtXZWJWaWV3ID0gV2Vha09iakNQdHI8V0tXZWJWaWV3Pihfd2ViVmlldyksIHBy
ZXNlbnRlZFZpZXdDb250cm9sbGVyXSB7CisgICAgICAgICAgICBhdXRvIHN0cm9uZ1dlYlZpZXcg
PSB3ZWFrV2ViVmlldy5nZXQoKTsKKyAgICAgICAgICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2YXRl
PiB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+Pihbc3Ry
b25nV2ViVmlldyBVSURlbGVnYXRlXSk7CisgICAgICAgICAgICBpZiAoW3VpRGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWREaXNtaXNzRm9jdXNlZEVsZW1l
bnRWaWV3Q29udHJvbGxlcjopXSkKKyAgICAgICAgICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmll
dzpzdHJvbmdXZWJWaWV3LmdldCgpIGRpZERpc21pc3NGb2N1c2VkRWxlbWVudFZpZXdDb250cm9s
bGVyOnByZXNlbnRlZFZpZXdDb250cm9sbGVyLmdldCgpXTsKKyAgICAgICAgfV07CisgICAgfQor
I2VuZGlmIC8vIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQogCiAgICAgaWYgKF9zaG91bGRS
ZXN0b3JlRmlyc3RSZXNwb25kZXJTdGF0dXNBZnRlckxvc2luZ0ZvY3VzKSB7CiAgICAgICAgIF9z
aG91bGRSZXN0b3JlRmlyc3RSZXNwb25kZXJTdGF0dXNBZnRlckxvc2luZ0ZvY3VzID0gTk87CkBA
IC02Njg5LDYgKzY3ODUsMjMgQEAgLSAoQk9PTClzZWxlY3RNZW51OihXS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXIgKilzZWxlY3RNZW51IGhhc1NlbGVjdGVkT3B0aW8KICAgICByZXR1cm4g
c2VsZi5mb2N1c2VkU2VsZWN0RWxlbWVudE9wdGlvbnNbaW5kZXhdLmlzU2VsZWN0ZWQ7CiB9CiAK
KyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKKworI3ByYWdtYSBtYXJrIC0gUFVJQ1F1
aWNrYm9hcmRDb250cm9sbGVyRGVsZWdhdGUKKworLSAodm9pZClxdWlja2JvYXJkQ29udHJvbGxl
cjooUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyICopY29udHJvbGxlciB0ZXh0SW5wdXRWYWx1ZURp
ZENoYW5nZTooTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFRleHQKK3sKKyAgICBfcGFn
ZS0+c2V0VGV4dEFzeW5jKGF0dHJpYnV0ZWRUZXh0LnN0cmluZyk7CisgICAgW3NlbGYgZGlzbWlz
c1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckFuZFJldmVhbEZvY3VzZWRGb3JtT3ZlcmxheUlmTmVj
ZXNzYXJ5OmNvbnRyb2xsZXJdOworfQorCistICh2b2lkKXF1aWNrYm9hcmRDb250cm9sbGVyVGV4
dElucHV0VmFsdWVDYW5jZWxsZWQ6KFBVSUNRdWlja2JvYXJkQ29udHJvbGxlciAqKWNvbnRyb2xs
ZXIKK3sKKyAgICBbc2VsZiBkaXNtaXNzUXVpY2tib2FyZFZpZXdDb250cm9sbGVyQW5kUmV2ZWFs
Rm9jdXNlZEZvcm1PdmVybGF5SWZOZWNlc3Nhcnk6Y29udHJvbGxlcl07Cit9CisKKyNlbmRpZiAv
LyBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKKwogI2VuZGlmIC8vIFBMQVRGT1JNKFdBVENI
T1MpCiAKIC0gKHZvaWQpX3doZWVsQ2hhbmdlZFdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50CkBA
IC04NjMxLDcgKzg3NDQsNyBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJh
Y3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uRGlkRW5kOihpZCA8VUlEcgogCiAjaWYgUExBVEZP
Uk0oV0FUQ0hPUykKIAotLSAodm9pZClkaXNtaXNzUXVpY2tib2FyZFZpZXdDb250cm9sbGVyQW5k
UmV2ZWFsRm9jdXNlZEZvcm1PdmVybGF5SWZOZWNlc3Nhcnk6KFBVSUNRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXIgKilxdWlja2JvYXJkCistICh2b2lkKWRpc21pc3NRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXJBbmRSZXZlYWxGb2N1c2VkRm9ybU92ZXJsYXlJZk5lY2Vzc2FyeTooaWQpY29udHJvbGxl
cgogewogICAgIEJPT0wgc2hvdWxkUmV2ZWFsRm9jdXNPdmVybGF5ID0gTk87CiAgICAgLy8gSW4g
dGhlIGNhc2Ugd2hlcmUgdGhlcmUncyBub3RoaW5nIHRoZSB1c2VyIGNvdWxkIHBvdGVudGlhbGx5
IGRvIGJlc2lkZXMgZGlzbWlzcyB0aGUgb3ZlcmxheSwgd2UgY2FuIGp1c3QgYXV0b21hdGljYWxs
eSB3aXRob3V0IGFza2luZyB0aGUgZGVsZWdhdGUuCkBAIC04NjUyLDEyICs4NzY1LDQwIEBAIC0g
KHZvaWQpZGlzbWlzc1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckFuZFJldmVhbEZvY3VzZWRGb3Jt
T3ZlcmxheUlmTmVjZXNzYXJ5OihQCiAgICAgfSBlbHNlCiAgICAgICAgIF9wYWdlLT5ibHVyRm9j
dXNlZEVsZW1lbnQoKTsKIAorICAgIGJvb2wgc2hvdWxkRGlzbWlzc1ZpZXdDb250cm9sbGVyID0g
W2NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpVSVZpZXdDb250cm9sbGVyLmNsYXNzXQorI2lmIEhB
VkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorICAgICAgICAmJiAhX3ByZXNlbnRlZFF1aWNrYm9h
cmRDb250cm9sbGVyCisjZW5kaWYKKyAgICAgICAgJiYgY29udHJvbGxlciAhPSBfcHJlc2VudGVk
RnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXI7CiAgICAgLy8gVGhlIFF1aWNrYm9hcmQgdmll
dyBjb250cm9sbGVyIHBhc3NlZCBpbnRvIHRoaXMgZGVsZWdhdGUgbWV0aG9kIGlzIG5vdCBuZWNl
c3NhcmlseSB0aGUgdmlldyBjb250cm9sbGVyIHdlIG9yaWdpbmFsbHkgcHJlc2VudGVkOwogICAg
IC8vIHRoaXMgaGFwcGVucyBpbiB0aGUgY2FzZSB3aGVuIHRoZSB1c2VyIGNob29zZXMgYW4gaW5w
dXQgbWV0aG9kIChlLmcuIHNjcmliYmxlKSBhbmQgYSBuZXcgUXVpY2tib2FyZCB2aWV3IGNvbnRy
b2xsZXIgaXMgcHJlc2VudGVkLgotICAgIGlmIChxdWlja2JvYXJkICE9IF9wcmVzZW50ZWRGdWxs
U2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlcikKLSAgICAgICAgW3F1aWNrYm9hcmQgZGlzbWlzc1Zp
ZXdDb250cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKKyAgICBpZiAoc2hvdWxk
RGlzbWlzc1ZpZXdDb250cm9sbGVyKQorICAgICAgICBbKFVJVmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07
CisKKyAgICBbc2VsZiBkaXNtaXNzQWxsSW5wdXRWaWV3Q29udHJvbGxlcnM6Y29udHJvbGxlciA9
PSBfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXJdOworfQorCistIChVSVRl
eHRDb250ZW50VHlwZSl0ZXh0Q29udGVudFR5cGVGb3JRdWlja2JvYXJkCit7CisgICAgc3dpdGNo
IChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgeworICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkOgorICAgICAgICByZXR1cm4gVUlUZXh0Q29udGVudFR5
cGVQYXNzd29yZDsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpVUkw6CisgICAgICAgIHJl
dHVybiBVSVRleHRDb250ZW50VHlwZVVSTDsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpF
bWFpbDoKKyAgICAgICAgcmV0dXJuIFVJVGV4dENvbnRlbnRUeXBlRW1haWxBZGRyZXNzOworICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlBob25lOgorICAgICAgICByZXR1cm4gVUlUZXh0Q29u
dGVudFR5cGVUZWxlcGhvbmVOdW1iZXI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gVGhlIGVs
ZW1lbnQgdHlwZSBhbG9uZSBpcyBpbnN1ZmZpY2llbnQgdG8gaW5mZXIgY29udGVudCB0eXBlOyBm
YWxsIGJhY2sgdG8gYXV0b2ZpbGwgZGF0YS4KKyAgICAgICAgaWYgKGF1dG8gY29udGVudFR5cGUg
PSBjb250ZW50VHlwZUZyb21GaWVsZE5hbWUoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uYXV0
b2ZpbGxGaWVsZE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRUeXBlOworCisgICAg
ICAgIGlmIChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pc0F1dG9maWxsYWJsZVVzZXJuYW1l
RmllbGQpCisgICAgICAgICAgICByZXR1cm4gVUlUZXh0Q29udGVudFR5cGVVc2VybmFtZTsKIAot
ICAgIFtzZWxmIGRpc21pc3NBbGxJbnB1dFZpZXdDb250cm9sbGVyczpxdWlja2JvYXJkID09IF9w
cmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlcl07CisgICAgICAgIHJldHVybiBu
aWw7CisgICAgfQogfQogCiAjcHJhZ21hIG1hcmsgLSBQVUlDUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyRGVsZWdhdGUKQEAgLTg3NTUsMjUgKzg4OTYsNyBAQCAtIChXS051bWJlclBhZElucHV0TW9k
ZSludW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RW
aQogCiAtIChOU1N0cmluZyAqKXRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjoo
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCiB7Ci0gICAgc3dpdGNo
IChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewotICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkOgotICAgICAgICByZXR1cm4gVUlUZXh0Q29udGVudFR5
cGVQYXNzd29yZDsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpVUkw6Ci0gICAgICAgIHJl
dHVybiBVSVRleHRDb250ZW50VHlwZVVSTDsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpF
bWFpbDoKLSAgICAgICAgcmV0dXJuIFVJVGV4dENvbnRlbnRUeXBlRW1haWxBZGRyZXNzOwotICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlBob25lOgotICAgICAgICByZXR1cm4gVUlUZXh0Q29u
dGVudFR5cGVUZWxlcGhvbmVOdW1iZXI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgLy8gVGhlIGVs
ZW1lbnQgdHlwZSBhbG9uZSBpcyBpbnN1ZmZpY2llbnQgdG8gaW5mZXIgY29udGVudCB0eXBlOyBm
YWxsIGJhY2sgdG8gYXV0b2ZpbGwgZGF0YS4KLSAgICAgICAgaWYgKE5TU3RyaW5nICpjb250ZW50
VHlwZSA9IGNvbnRlbnRUeXBlRnJvbUZpZWxkTmFtZShfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bi5hdXRvZmlsbEZpZWxkTmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gY29udGVudFR5cGU7Ci0K
LSAgICAgICAgaWYgKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmlzQXV0b2ZpbGxhYmxlVXNl
cm5hbWVGaWVsZCkKLSAgICAgICAgICAgIHJldHVybiBVSVRleHRDb250ZW50VHlwZVVzZXJuYW1l
OwotCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQorICAgIHJldHVybiBzZWxmLnRleHRDb250
ZW50VHlwZUZvclF1aWNrYm9hcmQ7CiB9CiAKIC0gKE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAq
PiAqKXRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0
Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCkBAIC05MjYyLDExICs5Mzg1LDIzIEBAIC0gKFdL
Rm9ybVNlbGVjdENvbnRyb2wgKilzZWxlY3RDb250cm9sCiAtICh2b2lkKV9zaW11bGF0ZVRleHRF
bnRlcmVkOihOU1N0cmluZyAqKXRleHQKIHsKICNpZiBQTEFURk9STShXQVRDSE9TKQotICAgIGlm
IChbX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6
W1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGNsYXNzXV0pCisgICAgaWYgKFtfcHJlc2Vu
dGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpbV0tUZXh0SW5w
dXRMaXN0Vmlld0NvbnRyb2xsZXIgY2xhc3NdXSkgewogICAgICAgICBbKFdLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVy
LmdldCgpIGVudGVyVGV4dDp0ZXh0XTsKLSNlbHNlCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKKyAgICBpZiAoX3ByZXNlbnRlZFF1aWNr
Ym9hcmRDb250cm9sbGVyKSB7CisgICAgICAgIGlkIDxQVUlDUXVpY2tib2FyZENvbnRyb2xsZXJE
ZWxlZ2F0ZT4gZGVsZWdhdGUgPSBbX3ByZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVyIGRlbGVn
YXRlXTsKKyAgICAgICAgQVNTRVJUKGRlbGVnYXRlID09IHNlbGYpOworICAgICAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5n
OnRleHRdKTsKKyAgICAgICAgW2RlbGVnYXRlIHF1aWNrYm9hcmRDb250cm9sbGVyOl9wcmVzZW50
ZWRRdWlja2JvYXJkQ29udHJvbGxlci5nZXQoKSB0ZXh0SW5wdXRWYWx1ZURpZENoYW5nZTpzdHJp
bmcuZ2V0KCldOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIEhBVkUoUVVJQ0tC
T0FSRF9DT05UUk9MTEVSKQorI2VuZGlmIC8vIFBMQVRGT1JNKFdBVENIT1MpCisKICAgICBbc2Vs
ZiBpbnNlcnRUZXh0OnRleHRdOwotI2VuZGlmCiB9CiAKIC0gKHZvaWQpX3NpbXVsYXRlRWxlbWVu
dEFjdGlvbjooX1dLRWxlbWVudEFjdGlvblR5cGUpYWN0aW9uVHlwZSBhdExvY2F0aW9uOihDR1Bv
aW50KWxvY2F0aW9uCkBAIC05MzEzLDcgKzk0NDgsMTEgQEAgLSAoTlNTdHJpbmcgKil0ZXh0Q29u
dGVudFR5cGVGb3JUZXN0aW5nCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKICAgICBpZiAoW19wcmVz
ZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3NlbGYgdGV4
dENvbnRlbnRUeXBlRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlci5nZXQoKV07
Ci0jZW5kaWYKKyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKKyAgICBpZiAoX3ByZXNl
bnRlZFF1aWNrYm9hcmRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gW19wcmVzZW50ZWRRdWlj
a2JvYXJkQ29udHJvbGxlciB0ZXh0SW5wdXRDb250ZXh0XS50ZXh0Q29udGVudFR5cGU7CisjZW5k
aWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisjZW5kaWYgLy8gUExBVEZPUk0oV0FU
Q0hPUykKICAgICByZXR1cm4gc2VsZi50ZXh0SW5wdXRUcmFpdHMudGV4dENvbnRlbnRUeXBlOwog
fQogCkBAIC05MzI4LDEwICs5NDY3LDEwIEBAIC0gKE5TU3RyaW5nICopc2VsZWN0Rm9ybVBvcG92
ZXJUaXRsZQogLSAoTlNTdHJpbmcgKilmb3JtSW5wdXRMYWJlbAogewogI2lmIFBMQVRGT1JNKFdB
VENIT1MpCi0gICAgaWYgKF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlcikK
LSAgICAgICAgcmV0dXJuIFtzZWxmIGlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6KGlk
KV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlci5nZXQoKV07Ci0jZW5kaWYK
KyAgICByZXR1cm4gW3NlbGYgaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxlcjpfcHJlc2Vu
dGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCldOworI2Vsc2UKICAgICByZXR1
cm4gbmlsOworI2VuZGlmCiB9CiAKIC0gKHZvaWQpc2V0VGltZVBpY2tlclZhbHVlVG9Ib3VyOihO
U0ludGVnZXIpaG91ciBtaW51dGU6KE5TSW50ZWdlciltaW51dGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RW
aWV3Q29udHJvbGxlci5tbQppbmRleCAxZjAzNGRhNWEwYmE0Y2U0NzVmM2I2YTdiYTg4YTBkMGVj
YzRiNDQ4Li43NDljMWM3YmVjMzVjNWZjYmVlYTFjYmE0NjY3Y2VkMGYzZDcxYjk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCkBAIC02Niw3ICs2Niw5IEBAIC0gKE5TQXJy
YXkgKilhZGRpdGlvbmFsVHJheUJ1dHRvbnMKIAogICAgIFVJSW1hZ2UgKm51bWJlclBhZEJ1dHRv
bkljb24gPSBbUFVJQ1Jlc291cmNlcyBpbWFnZU5hbWVkOkAiUXVpY2tib2FyZEFkZFBob25lTnVt
YmVyIiBpbkJ1bmRsZTpbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUu
UGVwcGVyVUlDb3JlIl0gc2hvdWxkQ2FjaGU6WUVTXTsKIAorICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgYXV0byBudW1iZXJQYWRCdXR0b24gPSBhZG9wdE5TKFtb
UFVJQ1F1aWNrYm9hcmRMaXN0VHJheUJ1dHRvbiBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3Ra
ZXJvIHRpbnRDb2xvcjpuaWwgZGVmYXVsdEhlaWdodDpzZWxmLnNwZWNzLmRlZmF1bHRCdXR0b25I
ZWlnaHRdKTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBbbnVt
YmVyUGFkQnV0dG9uIHNldEltYWdlOm51bWJlclBhZEJ1dHRvbkljb24gZm9yU3RhdGU6VUlDb250
cm9sU3RhdGVOb3JtYWxdOwogICAgIFtudW1iZXJQYWRCdXR0b24gYWRkVGFyZ2V0OnNlbGYgYWN0
aW9uOkBzZWxlY3RvcihwcmVzZW50TnVtYmVyUGFkVmlld0NvbnRyb2xsZXIpIGZvckNvbnRyb2xF
dmVudHM6VUlDb250cm9sRXZlbnRUb3VjaFVwSW5zaWRlXTsKICAgICByZXR1cm4gQFsgbnVtYmVy
UGFkQnV0dG9uLmdldCgpIF07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNjliNjUzNGIyYWNmYzY2YmVlMmQ5MjI3Mzc2MzNkYWUxMzZiOTY4OC4u
ZDRmMmFkYTRmODJiOWVlMGU2OWQxYmIyYTMwMjQ1MTczYjRkNWUzNiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIx
LTAyLTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFt3YXRjaE9TXSBBZG9wdCBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgZm9yIHRleHQgaW5wdXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTY0OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc29t
ZSBzbWFsbCB0d2Vha3MgdG8gV2ViS2l0VGVzdFJ1bm5lciBpbiBzdXBwb3J0IG9mIHVzaW5nIGBQ
VUlDUXVpY2tib2FyZENvbnRyb2xsZXJgIGZvciB0ZXh0IGlucHV0LgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lckFwcC54Y2NvbmZp
ZzoKKworICAgICAgICBBZGp1c3QgdGhlIHRlc3QgaGFybmVzcyBvbiB3YXRjaE9TIHRvIGxpbmsg
YWdhaW5zdCBQZXBwZXJVSUNvcmUsIHNvIHRoYXQgd2UgY2FuIHJlZmVyZW5jZSB0aGUKKyAgICAg
ICAgYFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJgIGFuZCBgUFVJQ1F1aWNrYm9hcmRSZW1v
dGVWaWV3Q29udHJvbGxlcmAgY2xhc3NlcyBiZWxvdy4KKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbToKKyAgICAgICAgKGlzUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkUHJl
c2VudFZpZXdDb250cm9sbGVyOl0pOgorCisgICAgICAgIE92ZXJyaWRlIGAtcHJlc2VudFZpZXdD
b250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246YCBvbiB0aGUgdmlldyBjb250cm9sbGVyIGJl
bG93LCBhbmQgY2FsbCB0aGlzIG5ldyBtZXRob2QKKyAgICAgICAgb24gdGhlIGBUZXN0UnVubmVy
V0tXZWJWaWV3YCB3aGVuIGEgdmlldyBjb250cm9sbGVyIGlzIGZpbmlzaGVkIHByZXNlbnRpbmcu
IFdlIG5lZWQgdG8gZG8gdGhpcyB0byBlbnN1cmUgdGhhdAorICAgICAgICB0aGUgaW5wdXQgdmll
dyBwcmVzZW50YXRpb24gY2FsbGJhY2tzIGNvbnRpbnVlIHRvIHdvcmsgYWZ0ZXIgYWRvcHRpbmcg
YFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcmA7IHNlZSBXZWJLaXQKKyAgICAgICAgQ2hhbmdlTG9n
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0
Zm9ybVdlYlZpZXdJT1MubW06CisgICAgICAgICgtW1BsYXRmb3JtV2ViVmlld0NvbnRyb2xsZXIg
cHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVkOmNvbXBsZXRpb246XSk6CisKIDIwMjEtMDIt
MDkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJr
aXRzY21weV0gQ29ycmVjdGx5IHBhcnNlIGJyYW5jaCBjb21taXRzCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKaW5kZXggMjk0MmI3
YTc0OWRkZjc5ZTA1ZmU1YzMyYzJkM2Y3ZDRiM2M5ZTE4Zi4uYmEzMmE0NTlmNmE3YTlkZjM3Yjg3
NGJlMGMzZTEyYjAxOWI1MTI3NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9D
b25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Q29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMTM2LDQgKzEzNiw0IEBAIFdLX0lTX0NP
Q09BX1RPVUNIID0gJChXS19OT1RfJChXS19FTVBUWV8kKFdLX0NPQ09BX1RPVUNIKSkpOwogCiBI
RUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNs
dWRlICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlVGVzdFN1cHBvcnQgJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzICQoTkVYVF9ST09UKS91c3IvbG9j
YWwvaW5jbHVkZS9XZWJDb3JlVGVzdFN1cHBvcnQgJChIRUFERVJfU0VBUkNIX1BBVEhTXyQoV0tf
Q09DT0FfVE9VQ0gpKTsKIEhFQURFUl9TRUFSQ0hfUEFUSFNfID0gOwotSEVBREVSX1NFQVJDSF9Q
QVRIU19jb2NvYXRvdWNoID0gJChTUkNST09UKS8uLi8uLi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9pb3M7CitIRUFERVJfU0VBUkNIX1BBVEhTX2NvY29hdG91Y2ggPSAkKFNSQ1JPT1QpLy4u
Ly4uL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcyAkKFNSQ1JPT1QpLy4uLy4uL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3M7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXJBcHAueGNjb25maWcgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXJBcHAu
eGNjb25maWcKaW5kZXggNTI4ZjViYTA5NDRlYWE2NzkxODMyMDdiOTdjM2JiNjBmMzJlNDc4My4u
NDg4ZGY2NzQ2MjczZmZjMDEyMWQ4YjFhNTM2YjhkZDRiMGQ4ZDI3YyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyQXBwLnhj
Y29uZmlnCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0
VGVzdFJ1bm5lckFwcC54Y2NvbmZpZwpAQCAtMzEsNiArMzEsNyBAQCBQUk9EVUNUX0JVTkRMRV9J
REVOVElGSUVSID0gb3JnLndlYmtpdC4kKFBST0RVQ1RfTkFNRTpyZmMxMDM0aWRlbnRpZmllcik7
CiBHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKIAogT1RIRVJfTERGTEFHUyA9ICQo
aW5oZXJpdGVkKSAtbFdlYktpdFRlc3RSdW5uZXIgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1l
d29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIFF1
YXJ0ekNvcmUgLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1ld29yayBV
SUtpdCAtZnJhbWV3b3JrIFdlYktpdCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBH
cmFwaGljc1NlcnZpY2VzOworT1RIRVJfTERGTEFHU1tzZGs9d2F0Y2gqXSA9ICQoT1RIRVJfTERG
TEFHUykgLWZyYW1ld29yayBQZXBwZXJVSUNvcmUKIAogU1RSSVBfU1RZTEUgPSBkZWJ1Z2dpbmc7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldL
V2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJW
aWV3LmgKaW5kZXggZjU3MWU0ZGRkOGZjODliMzIzMWFkNjA4Nzg4NGRjMjkxMTBlYzVhZS4uMDZh
NWE2M2IzZGI5Y2Q5YTQxYjkxNGFlMmM5OTU4ZmVmOGI1NWRmYiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKQEAgLTU0LDYgKzU0
LDcgQEAKIC0gKHZvaWQpaW1tZWRpYXRlbHlEaXNtaXNzQ29udGV4dE1lbnVJZk5lZWRlZDsKIC0g
KHZvaWQpaW5zdGFsbEN1c3RvbU1lbnVBY3Rpb246KE5TU3RyaW5nICopbmFtZSBkaXNtaXNzZXNB
dXRvbWF0aWNhbGx5OihCT09MKWRpc21pc3Nlc0F1dG9tYXRpY2FsbHkgY2FsbGJhY2s6KGRpc3Bh
dGNoX2Jsb2NrX3QpY2FsbGJhY2s7CiAKKy0gKHZvaWQpX2RpZFByZXNlbnRWaWV3Q29udHJvbGxl
cjooVUlWaWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9sbGVyOwogLSAodm9pZCl6b29tVG9TY2Fs
ZTooZG91YmxlKXNjYWxlIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpYWNjZXNzaWJpbGl0
eVJldHJpZXZlU3BlYWtTZWxlY3Rpb25Db250ZW50V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2RpZEVuZFJvdGF0aW9uOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJW
aWV3Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3
Lm1tCmluZGV4IDU3MDZhN2IxMTViNTE0MjRmMmI2NWM4NGNhODFjODA4NDIwMzc4YzguLjcxYTYx
NDZhNzdiMWFhMDlkZjEwZTAwMjBmNTBiZWZjZTRkZDAxMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KQEAgLTQ5LDYgKzQ5
LDEwIEBAIC0gKHZvaWQpX3NjaGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlOwogQGVuZAog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShXQVRDSE9TKQorI2ltcG9ydCAiUGVwcGVyVUlDb3JlU1BJ
LmgiCisjZW5kaWYKKwogc3RydWN0IEN1c3RvbU1lbnVBY3Rpb25JbmZvIHsKICAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IG5hbWU7CiAgICAgQk9PTCBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5IHsgTk8g
fTsKQEAgLTUyNSw2ICs1MjksMjUgQEAgLSAoVUlWaWV3ICopY29udGVudFZpZXcKICAgICByZXR1
cm4gW3NlbGYgdmFsdWVGb3JLZXlQYXRoOkAiX2N1cnJlbnRDb250ZW50VmlldyJdOwogfQogCitz
dGF0aWMgYm9vbCBpc1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcihVSVZpZXdDb250cm9sbGVyICp2
aWV3Q29udHJvbGxlcikKK3sKKyNpZiBQTEFURk9STShXQVRDSE9TKQorICAgIGlmIChbdmlld0Nv
bnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyLmNsYXNz
XSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIp
CisgICAgaWYgKFt2aWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOlBVSUNRdWlja2JvYXJkUmVt
b3RlVmlld0NvbnRyb2xsZXIuY2xhc3NdKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZiAv
LyBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKKyNlbmRpZiAvLyBQTEFURk9STShXQVRDSE9T
KQorICAgIHJldHVybiBmYWxzZTsKK30KKworLSAodm9pZClfZGlkUHJlc2VudFZpZXdDb250cm9s
bGVyOihVSVZpZXdDb250cm9sbGVyICopdmlld0NvbnRyb2xsZXIKK3sKKyAgICBpZiAoaXNRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXIodmlld0NvbnRyb2xsZXIpKQorICAgICAgICBbc2VsZiBfaW52
b2tlU2hvd0tleWJvYXJkQ2FsbGJhY2tJZk5lY2Vzc2FyeV07Cit9CisKICNwcmFnbWEgbWFyayAt
IFdLVUlEZWxlZ2F0ZVByaXZhdGUKIAogLy8gSW4gZXh0cmEgem9vbSBtb2RlLCBmdWxsc2NyZWVu
IGZvcm0gY29udHJvbCBVSSB0YWtlcyBvbiB0aGUgc2FtZSByb2xlIGFzIGtleWJvYXJkcyBhbmQg
aW5wdXQgdmlldyBjb250cm9sbGVycwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
UGxhdGZvcm1XZWJWaWV3SU9TLm1tCmluZGV4IGY1NDhjZDExMDlhNjE4OWU0MWZkODQ3ZWExMTA1
NmM1NzQ3NThhYjcuLjAyMTExMWNlMTQ1NDVkMDAwNDQ5Y2QyZjljMDA0MzU1MjNhY2ZiYjUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0K
QEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFr
T2JqQ1B0ci5oPgpAQCAtMTc1LDYgKzE3NiwxOSBAQCAtICh2b2lkKXZpZXdXaWxsVHJhbnNpdGlv
blRvU2l6ZTooQ0dTaXplKXRvU2l6ZSB3aXRoVHJhbnNpdGlvbkNvb3JkaW5hdG9yOihpZCA8VQog
ICAgIH1dOwogfQogCistICh2b2lkKXByZXNlbnRWaWV3Q29udHJvbGxlcjooVUlWaWV3Q29udHJv
bGxlciAqKXZpZXdDb250cm9sbGVyIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb246
KHZvaWQoXikodm9pZCkpY29tcGxldGlvbgoreworICAgIGF1dG8gd2Vha1dlYlZpZXcgPSBXZWFr
T2JqQ1B0cjxUZXN0UnVubmVyV0tXZWJWaWV3PihXVFI6OlRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKSk7CisgICAgW3N1cGVyIHByZXNlbnRW
aWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlciBhbmltYXRlZDphbmltYXRlZCBjb21wbGV0aW9u
Olt3ZWFrV2ViVmlldywgY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSwgdmll
d0NvbnRyb2xsZXIgPSByZXRhaW5QdHIodmlld0NvbnRyb2xsZXIpXSB7CisgICAgICAgIGlmIChj
b21wbGV0aW9uKQorICAgICAgICAgICAgY29tcGxldGlvbigpOworCisgICAgICAgIGF1dG8gc3Ry
b25nV2ViVmlldyA9IHdlYWtXZWJWaWV3LmdldCgpOworICAgICAgICBpZiAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgPT0gc3Ry
b25nV2ViVmlldykKKyAgICAgICAgICAgIFtzdHJvbmdXZWJWaWV3IF9kaWRQcmVzZW50Vmlld0Nv
bnRyb2xsZXI6dmlld0NvbnRyb2xsZXIuZ2V0KCldOworICAgIH1dOworfQorCiBAZW5kCiAKIG5h
bWVzcGFjZSBXVFIgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDczOTFjNmYwODFhOTQ3MTNjZGZkYjAwNjFjN2MwMzg5OTY1
NmY5NjcuLmNjOTE2MGFmZDIwZjNiYmRmNmE5ZTk4OTY1YmEwNjU4YjZkYjY1M2IgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAyMS0wMi0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBbd2F0Y2hPU10gQWRvcHQgUFVJQ1F1aWNrYm9hcmRDb250cm9s
bGVyIGZvciB0ZXh0IGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjE2NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmFibGUgYFF1aWNrYm9hcmRDb250cm9sbGVyRm9yVGV4dElucHV0RW5hYmxl
ZGAsIG9uIHJlbGV2YW50IHZlcnNpb25zIG9mIHdhdGNoT1MuCisKKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3dhdGNob3MvZGVsZXRlLWNvbnRlbnQtaW4tdGV4dC1maWVsZC5odG1sOgorICAgICAgICAq
IGZhc3QvZm9ybXMvd2F0Y2hvcy9lZGl0LXRleHQtZmllbGQtY2FsbHMtaW5qZWN0ZWQtYnVuZGxl
Lmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy93YXRjaG9zL2Zvcm0tY29udHJvbC1sYWJlbC10
ZXh0Lmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy93YXRjaG9zL3RpbWUtcGlja2VyLXZhbHVl
LWNoYW5nZS5odG1sOgorICAgICAgICAqIGZhc3QvZm9ybXMvd2F0Y2hvcy91c2VybmFtZS10ZXh0
LWNvbnRlbnQtdHlwZS5odG1sOgorCiAyMDIxLTAyLTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzE2NjApOiBVbmFibGUg
dG8gaW50ZXJhY3Qgd2l0aCBwYWdlIGFmdGVyIGxvbmctcHJlc3NpbmcgaW1hZ2Ugb24gaW1hZ2Vz
Lmdvb2dsZS5jb20KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy9k
ZWxldGUtY29udGVudC1pbi10ZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3dhdGNob3MvZGVsZXRlLWNvbnRlbnQtaW4tdGV4dC1maWVsZC5odG1sCmluZGV4IGEwMGE5YzA2
Y2I2MzQ3YTM4NmZmMDZmY2ZmYjJlYzRmNDM2YjRkNDIuLmY2MTc1NTQwM2U2YmQ1NWIwNDIwZjQ2
NGZjN2ZjYzVlNTZlYzFkNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0
Y2hvcy9kZWxldGUtY29udGVudC1pbi10ZXh0LWZpZWxkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy93YXRjaG9zL2RlbGV0ZS1jb250ZW50LWluLXRleHQtZmllbGQuaHRtbApAQCAt
MSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVz
ZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIFF1aWNrYm9hcmRDb250cm9s
bGVyRm9yVGV4dElucHV0RW5hYmxlZD10cnVlIF0gLS0+CiA8aHRtbD4KIDxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogPGhlYWQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dhdGNob3MvZWRpdC10ZXh0LWZpZWxkLWNhbGxzLWlu
amVjdGVkLWJ1bmRsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93YXRjaG9zL2VkaXQt
dGV4dC1maWVsZC1jYWxscy1pbmplY3RlZC1idW5kbGUuaHRtbAppbmRleCAxMjJlZTBlOTk3MzQ4
YzlhODBkZGY0YmQ5MmEwYmRjMTBmNjFmYmE3Li44YTk1NTdjZTZiMjU5YjFiODNkNmRmMGExMjll
M2E2ZDk3OTkxNDNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dhdGNob3Mv
ZWRpdC10ZXh0LWZpZWxkLWNhbGxzLWluamVjdGVkLWJ1bmRsZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy9lZGl0LXRleHQtZmllbGQtY2FsbHMtaW5qZWN0ZWQtYnVu
ZGxlLmh0bWwKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1s
PiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBRdWlj
a2JvYXJkQ29udHJvbGxlckZvclRleHRJbnB1dEVuYWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiA8
bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoIj4KIDxoZWFk
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93YXRjaG9zL2Zvcm0tY29udHJv
bC1sYWJlbC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dhdGNob3MvZm9ybS1j
b250cm9sLWxhYmVsLXRleHQuaHRtbAppbmRleCA4MDhhMzJmOWFkMjVlYTkyY2Q5MzlmNTk1N2Vl
ZWUxODhiZTc4Mzk4Li4xYjRhMTZhMmE5ZjZkOTRkODY0NmY1NGM1NDZkMTY3NzhhNDRkMDdiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dhdGNob3MvZm9ybS1jb250cm9sLWxh
YmVsLXRleHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dhdGNob3MvZm9ybS1j
b250cm9sLWxhYmVsLXRleHQuaHRtbApAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBodG1sPiA8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgor
PCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3
cG9ydD10cnVlIFF1aWNrYm9hcmRDb250cm9sbGVyRm9yVGV4dElucHV0RW5hYmxlZD10cnVlIF0g
LS0+CiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Ut
d2lkdGgiPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dhdGNo
b3MvdGltZS1waWNrZXItdmFsdWUtY2hhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3dhdGNob3MvdGltZS1waWNrZXItdmFsdWUtY2hhbmdlLmh0bWwKaW5kZXggODMxYjg2MDdhMjlj
YzY5YjQxZTUwMGY4NmMzZWQxZTY3MGZhYTcyNS4uN2U1YWZkMmUwOGE4ZDBmMmY1Nzg5YjNjYjFl
YTgyYzRkMDdlMjZkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93YXRjaG9z
L3RpbWUtcGlja2VyLXZhbHVlLWNoYW5nZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvd2F0Y2hvcy90aW1lLXBpY2tlci12YWx1ZS1jaGFuZ2UuaHRtbApAQCAtMSw0ICsxLDQgQEAK
LTwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmll
d3BvcnQ9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIFF1aWNrYm9hcmRDb250cm9sbGVyRm9yVGV4dElu
cHV0RW5hYmxlZD10cnVlIF0gLS0+CiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250
ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3dhdGNob3MvdXNlcm5hbWUtdGV4dC1jb250ZW50LXR5cGUuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy91c2VybmFtZS10ZXh0LWNvbnRlbnQtdHlwZS5o
dG1sCmluZGV4IGExYzRmNzA1OWMxMmI0ZWUxMzYxMjEyOTM4OGE2YzU5YmU2NGQxMDAuLmZjMzg5
NGQ5ODQxNzhlOTdiOGMyODk2YTkzOThiMzA2NmY1OTYzNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy91c2VybmFtZS10ZXh0LWNvbnRlbnQtdHlwZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy91c2VybmFtZS10ZXh0LWNvbnRlbnQt
dHlwZS5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgUXVp
Y2tib2FyZENvbnRyb2xsZXJGb3JUZXh0SW5wdXRFbmFibGVkPXRydWUgXSAtLT4KIDxodG1sPgog
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCI+CiA8aGVh
ZD4K
</data>
<flag name="review"
          id="438164"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419847</attachid>
            <date>2021-02-10 08:29:25 -0800</date>
            <delta_ts>2021-02-10 09:08:04 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-221649-20210210082924.patch</filename>
            <type>text/plain</type>
            <size>50597</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5ZjZmYzEyODkzOTA3Y2RkODY0ZmY2
NzM4ZGM1OTU0MTkwNWMyY2IuLjYwNjg2MjE1OGRlN2U5OGRjNDIzZmRmMjA5ZmNjOGYzYjE4NmRk
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDItMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIEFkb3B0IFBVSUNRdWlja2Jv
YXJkQ29udHJvbGxlciBmb3IgdGV4dCBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhv
cnRvbi4KKworICAgICAgICBBZGQgYSBuZXcgaW50ZXJuYWwgc2V0dGluZy4gU2VlIG90aGVyIENo
YW5nZUxvZ3MgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisKIDIwMjEtMDItMDYgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBOb24tc3BlY2lhbCBV
UkxzIHNob3VsZCBoYXZlIGFuIG9wYXF1ZSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTdlNWVmMDIyNmJl
NmY0ODdjYzNlOGNhNjE1MmVlYzYzMTFjNWIwZC4uZTlkN2U4ZmRhNGY3YzZlZjg4YzkxYmI4MzNk
NmMwYzI1NzhkYjE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OSBAQAorMjAyMS0wMi0wOSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbd2F0Y2hPU10g
QWRvcHQgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGZvciB0ZXh0IGlucHV0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2NDkKKworICAgICAgICBS
ZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFJlZmFjdG9yIHRleHQgaW5wdXQgb24g
d2F0Y2hPUyB0byB1c2UgYFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcmAsIGluc3RlYWQgb2YgY3Vz
dG9tIFdlYktpdCBzdWJjbGFzc2VzIG9mCisgICAgICAgIGBQVUlDUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlcmAuIFRoaXMgbmV3IEFQSSBzZXJ2ZXMgdGhlIHNhbWUgcHVycG9zZSBhcyB0aGUg
Y3VycmVudCBsaXN0IHZpZXcgY29udHJvbGxlcgorICAgICAgICBzdWJjbGFzcywgYnkgcHJvdmlk
aW5nIGEgdmlldyB0aGF0IG9mZmVycyBvcHRpb25zIHRvIGRpY3RhdGUsIHNjcmliYmxlLCBhbmQg
Y2hvb3NlIHRleHQgc3VnZ2VzdGlvbnMuIFNlZSBiZWxvdworICAgICAgICBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgIEZvciB0aGUgdGltZSBiZWluZywgdGhpcyBuZXcgYFBVSUNRdWlja2Jv
YXJkQ29udHJvbGxlcmAgZG9lc24ndCBwcm92aWRlIGEgd2F5IHRvIHJlbmRlciBhIGN1c3RvbSBo
ZWFkZXIgdmlldworICAgICAgICBmb3IgdXMgdG8gc2hvdyB0aGUgZG9tYWluIG5hbWU7IHRvIGF2
b2lkIGludHJvZHVjaW5nIGEgc2VjdXJpdHkgb3IgcHJpdmFjeSBidWcgaW4gdGhlIGludGVyaW0s
IGd1YXJkIHRoaXMgYmVoaW5kCisgICAgICAgIGEgV2ViS2l0LWV4cG9zZWQgcnVudGltZS1lbmFi
bGVkIHNldHRpbmcgdGhhdCdzIG9mZiBieSBkZWZhdWx0LiBXZSBjYW4gcmVtb3ZlIHRoaXMgc2V0
dGluZyBhbmQgaW5zdGVhZCBqdXN0IHVzZQorICAgICAgICB0aGUgYEhBVkUoUVVJQ0tCT0FSRF9D
T05UUk9MTEVSKWAgYnVpbGQtdGltZSBmbGFnIG9uY2Ugc3VwcG9ydCBmb3IgdGhlIGN1c3RvbSBo
ZWFkZXIgdmlldyBpcyBjb21wbGV0ZS4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS93YXRjaG9z
L1BlcHBlclVJQ29yZVNQSS5oOgorCisgICAgICAgIEluY2x1ZGUgYSBjb3VwbGUgb2YgbmV3IGhl
YWRlcnMgaWYgYEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKWAgaXMgc2V0LgorCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKworICAgICAgICBB
ZGQgYSBgX3ByZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVyYCBpbnN0YW5jZSB2YXJpYWJsZSBp
ZiBgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpYCBpcyBzZXQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKworICAgICAgICBBZGQgcHJv
dG9jb2wgY29uZm9ybWFuY2UgdG8gYFBVSUNRdWlja2JvYXJkQ29udHJvbGxlckRlbGVnYXRlYC4K
KworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91cGRhdGVJbnRlcmFjdGlvblRpbnRDb2xvcjpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0aW50Q29sb3JEaWRDaGFuZ2VdKToKKworICAg
ICAgICBSZWZhY3RvciB0aGlzIHRvIHRha2UgYFVJVGV4dElucHV0VHJhaXRzYCwgaW5zdGVhZCBv
ZiB1c2luZyBgX3RyYWl0c2AuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0SW5wdXRU
cmFpdHNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfdXBkYXRlVGV4dElucHV0VHJhaXRz
Ol0pOgorCisgICAgICAgIFJlZmFjdG9yIHRoaXMgdG8gbW9kaWZ5IHRoZSBnaXZlbiBzZXQgb2Yg
dGV4dCBpbnB1dCB0cmFpdHMgZ2l2ZW4gY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaW5mb3JtYXRp
b24gc3RhdGUsCisgICAgICAgIHJhdGhlciB0aGFuIG9wZXJhdGluZyBvbiB0aGUgYF90cmFpdHNg
IGluc3RhbmNlIHZhcmlhYmxlLiBUaGlzIHJlZmFjdG9yaW5nIGFsbG93cyB1cyB0byBzaGFyZSBs
b2dpYyB3aGVuIHNldHRpbmcKKyAgICAgICAgdXAgdGV4dCBpbnB1dCB0cmFpdHMgb24gYm90aCBp
T1MgYW5kIHdhdGNoT1M7IGluIHRoZSBmb3JtZXIgY2FzZSwgd2UncmUgc2V0dGluZyB1cCBhIHNl
dCBvZiBjYWNoZWQgYF90cmFpdHNgIG9uCisgICAgICAgIHRoZSBjb250ZW50IHZpZXcsIGJ1dCBp
biB0aGUgbGF0dGVyIGNhc2UsIHdlJ3JlIG1vZGlmeWluZyBhIG5ld2x5IGNyZWF0ZWQgYFBVSUNU
ZXh0SW5wdXRDb250ZXh0YCB0aGF0IHdlJ2xsIHRoZW4KKyAgICAgICAgc2V0IG9uIHRoZSBgUFVJ
Q1F1aWNrYm9hcmRDb250cm9sbGVyYC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVh
dGVRdWlja2JvYXJkQ29udHJvbGxlcjpdKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9k
IHRvIGNyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXJgIHRo
YXQncyBzdWl0YWJsZSBmb3IgdGhlIGN1cnJlbnQKKyAgICAgICAgZm9jdXNlZCBlbGVtZW50J3Mg
c3RhdGUuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBwcmVzZW50Vmlld0NvbnRyb2xsZXJG
b3JDdXJyZW50Rm9jdXNlZEVsZW1lbnRdKToKKworICAgICAgICBQcmVzZW50IHRoZSB2aWV3IGNv
bnRyb2xsZXIgZm9yIHRoZSBmb2N1c2VkIGVsZW1lbnQsIGJ5IGVpdGhlciB1c2luZyBhIGN1c3Rv
bSBXZWJLaXQtb3duZWQKKyAgICAgICAgYFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
YCBzdWJjbGFzcywgb3IgYnkgdXNpbmcgYSBuZXcgYFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcmAg
d2l0aCBhIGN1c3RvbSB0ZXh0CisgICAgICAgIGlucHV0IGNvbnRleHQuIE5vdGUgdGhhdCBpbiB0
aGUgbGF0dGVyIGNhc2UsIHdlIG1heSBub3QgYmUgYWJsZSB0byBpbnZva2UgdGhlIFVJIGRlbGVn
YXRlIGhvb2sKKyAgICAgICAgYC1fd2ViVmlldzpkaWRQcmVzZW50Rm9jdXNlZEVsZW1lbnRWaWV3
Q29udHJvbGxlcjpgLCBzaW5jZSB0aGUgcHJlc2VudGluZyB2aWV3IGNvbnRyb2xsZXIncyB0cmFu
c2l0aW9uCisgICAgICAgIGNvb3JkaW5hdG9yIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0
IGluIHRoZSBzY2VuYXJpbyB3aGVyZSB3ZSdyZSBzcGlubmluZyB1cCB0aGUgUXVpY2tib2FyZCB2
aWV3IHNlcnZpY2UKKyAgICAgICAgZm9yIHRoZSBmaXJzdCB0aW1lLCBzaW5jZSB0aGUgY2FsbCB0
byBlc3RhYmxpc2ggdGhlIFhQQyBjb25uZWN0aW9uIGlzIGFzeW5jaHJvbm91cyBpbiBQZXBwZXJV
SUNvcmUsIGFuZCB3ZSBkb24ndAorICAgICAgICBhdHRlbXB0IHRvIHByZXNlbnQgdGhlIHJlbW90
ZSB2aWV3IGNvbnRyb2xsZXIgdW50aWwgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuIFRo
aXMgbWFrZXMgaXQgc28gdGhhdCB3ZQorICAgICAgICBjYW4ndCByZWx5IG9uIHRoZSBgLWRpZFBy
ZXNlbnRGb2N1c2VkRWxlbWVudFZpZXdDb250cm9sbGVyOmAgaG9vayBpbiBXZWJLaXRUZXN0UnVu
bmVyIHRvIGtub3cgd2hlbiBhCisgICAgICAgIGBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXJgIGhh
cyBmaW5pc2hlZCBwcmVzZW50aW5nLgorCisgICAgICAgIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHdl
IHRlYWNoIHRoZSB0ZXN0IGhhcm5lc3MgdG8gb3ZlcnJpZGUgYC1wcmVzZW50Vmlld0NvbnRyb2xs
ZXI6YW5pbWF0ZWQ6Y29tcGxldGlvbjpgIGFuZAorICAgICAgICBjYWxsIGludG8gdGhlIHRlc3Qg
cnVubmVyJ3MgYFdLV2ViVmlld2Agc3ViY2xhc3Mgd2hlbiBhIHJlbW90ZSBxdWlja2JvYXJkIGNv
bnRyb2xsZXIgaXMgZG9uZSBwcmVzZW50aW5nLiBJbiB0aGUKKyAgICAgICAgbG9uZ2VyIHRlcm0s
IHdlIHdpbGwgcmVxdWlyZSBTUEkgZnJvbSBQZXBwZXJVSUNvcmUgdG8gcHJlc2VudCBhIGBQVUlD
UXVpY2tib2FyZENvbnRyb2xsZXJgIHdpdGggYSBjb21wbGV0aW9uCisgICAgICAgIGJsb2NrLgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2lzUHJlc2VudGluZ0Z1bGxTY3JlZW5JbnB1dFZp
ZXddKToKKworICAgICAgICBBICJmdWxsIHNjcmVlbiBpbnB1dCB2aWV3IiBmb3IgdGhlIGZvY3Vz
ZWQgZWxlbWVudCBpcyBub3cgcHJlc2VudCBpZiBlaXRoZXIgYF9wcmVzZW50ZWRRdWlja2JvYXJk
Q29udHJvbGxlcmAgaXMKKyAgICAgICAgc2V0LCBvciBgX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1
dFZpZXdDb250cm9sbGVyYCBpcyBzZXQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaXNt
aXNzQWxsSW5wdXRWaWV3Q29udHJvbGxlcnM6XSk6CisKKyAgICAgICAgRGlzbWlzcyBlaXRoZXIg
dGhlIGN1cnJlbnRseSBwcmVzZW50ZWQgYF9wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJvbGxlcmAg
b3IKKyAgICAgICAgYF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlcmAsIGFu
ZCBpbnZva2UgdGhlIFVJIGRlbGVnYXRlIG1ldGhvZAorICAgICAgICBgLV93ZWJWaWV3OmRpZERp
c21pc3NGb2N1c2VkRWxlbWVudFZpZXdDb250cm9sbGVyOmAgd2hlbiBmaW5pc2hlZC4KKworICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IHF1aWNrYm9hcmRDb250cm9sbGVyOnRleHRJbnB1dFZhbHVl
RGlkQ2hhbmdlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHF1aWNrYm9hcmRDb250cm9s
bGVyVGV4dElucHV0VmFsdWVDYW5jZWxsZWQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
ZGlzbWlzc1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckFuZFJldmVhbEZvY3VzZWRGb3JtT3Zlcmxh
eUlmTmVjZXNzYXJ5Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRDb250ZW50VHlw
ZUZvclF1aWNrYm9hcmRdKToKKworICAgICAgICBSZWZhY3RvciBgLV91cGRhdGVUZXh0SW5wdXRU
cmFpdHM6YCB0byBjYWxsIGEgaGVscGVyIG1ldGhvZCAoYC10ZXh0Q29udGVudFR5cGVGb3JRdWlj
a2JvYXJkYCkgb24gd2F0Y2hPUyB0bworICAgICAgICBjb252ZXJ0IHRoZSBjdXJyZW50IGZvY3Vz
ZWQgZWxlbWVudCBpbmZvcm1hdGlvbiB0byBhIGBVSVRleHRDb250ZW50VHlwZWAuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyB0ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NpbXVsYXRlVGV4dEVudGVyZWQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dENvbnRlbnRUeXBlRm9yVGVzdGluZ10pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGZvcm1JbnB1dExhYmVsXSk6CisKKyAgICAgICAgVXBkYXRl
IGEgZmV3IGludGVybmFsIHRlc3RpbmcgaG9va3MgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdl
IGhhdmUgYSBgX3ByZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVyYCBpbnN0ZWFkCisgICAgICAg
IG9mIGEgYF9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlcmAuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfdXBkYXRlSW50ZXJhY3Rpb25UaW50Q29sb3JdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250
cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBhZGRp
dGlvbmFsVHJheUJ1dHRvbnNdKTogU3VwcHJlc3MgYSBkZXByZWNhdGlvbiB3YXJuaW5nLgorCiAy
MDIxLTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQgb2YgRHJhd1RvUERGQ2FsbGJh
Y2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IDI3ZjY1ZjdlYjFmZjVmZmU0Nzc5YzQxY2UxNDA4
YmZlZDJhZjI0MjguLjZkMDc2ODZlZmNkOGY3NDM4MjY0NWM2NWNkYTNlMWQ0NjA3ZTIyNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0lu
dGVybmFsLnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzSW50ZXJuYWwueWFtbApAQCAtNTk5LDYgKzU5OSwxNyBAQCBQcmVmaXhlZFdlYkF1ZGlv
RW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UKIAorUXVpY2tib2Fy
ZENvbnRyb2xsZXJGb3JUZXh0SW5wdXRFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVh
ZGFibGVOYW1lOiAiUXVpY2tib2FyZCBjb250cm9sbGVyIgorICBodW1hblJlYWRhYmxlRGVzY3Jp
cHRpb246ICJFbmFibGUgcXVpY2tib2FyZCBjb250cm9sbGVyIGZvciB0ZXh0IGlucHV0IgorICBj
b25kaXRpb246IEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorICB3ZWJjb3JlQmluZGluZzog
bm9uZQorICBleHBvc2VkOiBbIFdlYktpdCBdCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXQ6
CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiBSZXNvdXJjZUxvYWRTY2hlZHVsaW5nRW5hYmxlZDoK
ICAgdHlwZTogYm9vbAogICBodW1hblJlYWRhYmxlTmFtZTogIlJlc291cmNlIExvYWQgU2NoZWR1
bGluZyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVw
cGVyVUlDb3JlU1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBl
clVJQ29yZVNQSS5oCmluZGV4IDdhODNhY2FhYmFlNjgyYWFhMzgwN2MwZWE2NTliOWNhNjJiMWJh
MzMuLjhkN2NkMmViODFlZWEwYTliN2ZjNDIxZjY4YTIyN2JhNzZlNGIwMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvd2F0Y2hvcy9QZXBwZXJVSUNvcmVTUEkuaApA
QCAtNTUsNiArNTUsMTEgQEAKICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExp
c3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsLmg+CiAjZW5kaWYKIAorI2lmIEhBVkUoUVVJQ0tCT0FS
RF9DT05UUk9MTEVSKQorI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkQ29udHJv
bGxlci5oPgorI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkUmVtb3RlVmlld0Nv
bnRyb2xsZXIuaD4KKyNlbmRpZgorCiAjZWxzZSAvLyBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQog
CiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDVkNjgzMjY3YWUyNDVi
NGM3OWFlYThiODA2ZDU1ZmY2ZGUzYTYzMzEuLjc2MTUwNTgyMTVkMGRlOWFlMDA0ZWRjMzRjNmVl
OWNmNmZmNzI5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTExOSw2ICsxMTksMTMgQEAgY2xhc3MgV2Vi
UGFnZVByb3h5OwogQGNsYXNzIF9VSUxvb2t1cEdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIF9V
SUhpZ2hsaWdodFZpZXc7CiAKKyNpZiBQTEFURk9STShXQVRDSE9TKQorQGNsYXNzIFBVSUNRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXI7CisjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCitA
Y2xhc3MgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyOworI2VuZGlmCisjZW5kaWYKKwogI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uQWRkaXRpb25zQmVmb3JlLmg+CiAjZW5kaWYKQEAgLTQ1MCwxMiArNDU3
LDE1IEBAIHByaXZhdGU6CiAKICNpZiBQTEFURk9STShXQVRDSE9TKQogICAgIFJldGFpblB0cjxX
S0ZvY3VzZWRGb3JtQ29udHJvbFZpZXc+IF9mb2N1c2VkRm9ybUNvbnRyb2xWaWV3OwotICAgIFJl
dGFpblB0cjxVSVZpZXdDb250cm9sbGVyPiBfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0Nv
bnRyb2xsZXI7CisjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisgICAgUmV0YWluUHRy
PFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4gX3ByZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVy
OworI2VuZGlmIC8vIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorICAgIFJldGFpblB0cjxQ
VUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyPiBfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmll
d0NvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPFVJTmF2aWdhdGlvbkNvbnRyb2xsZXI+IF9pbnB1
dE5hdmlnYXRpb25WaWV3Q29udHJvbGxlckZvckZ1bGxTY3JlZW5JbnB1dHM7CiAKICAgICBCT09M
IF9zaG91bGRSZXN0b3JlRmlyc3RSZXNwb25kZXJTdGF0dXNBZnRlckxvc2luZ0ZvY3VzOwogICAg
IEJsb2NrUHRyPHZvaWQoKT4gX2FjdGl2ZUZvY3VzZWRTdGF0ZVJldGFpbkJsb2NrOwotI2VuZGlm
CisjZW5kaWYgLy8gUExBVEZPUk0oV0FUQ0hPUykKIAogI2lmIEVOQUJMRShQTEFURk9STV9EUklW
RU5fVEVYVF9DSEVDS0lORykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpUZXh0Q2hlY2tp
bmdDb250cm9sbGVyPiBfdGV4dENoZWNraW5nQ29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IGUzNGY0ZjJjNDhhNzc5YjNkYThlOGI3YjMwZmE5ZjU1NmY3YmE3NTkuLmZmZjQzMWFkZmY2NzFh
ZmIzNmMxYzQ2MmI2NTdjZGNhOGYwYmZjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTY2LDYgKzE2
NiwxMCBAQAogI2ltcG9ydCAiV0tXZWJFdmVudC5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShX
QVRDSE9TKQorI2ltcG9ydCAiUGVwcGVyVUlDb3JlU1BJLmgiCisjZW5kaWYKKwogI2ltcG9ydCA8
cGFsL2lvcy9NYW5hZ2VkQ29uZmlndXJhdGlvblNvZnRMaW5rLmg+CiAKICNpZiBIQVZFKExJTktf
UFJFVklFVykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCkBAIC0xODYsOSArMTkwLDE0IEBAIEBlbmQK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKKyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09O
VFJPTExFUikKK0BpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoUXVpY2tib2FyZENvbnRyb2xsZXJT
dXBwb3J0KSA8UFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyRGVsZWdhdGU+CitAZW5kCisjZW5kaWYg
Ly8gSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisKIEBpbnRlcmZhY2UgV0tDb250ZW50Vmll
dyAoV2F0Y2hTdXBwb3J0KSA8V0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3RGVsZWdhdGUsIFdLU2Vs
ZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlLCBXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlckRlbGVnYXRlPgogQGVuZAotI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oV0FUQ0hP
UykKIAogc3RhdGljIHZvaWQgKldLQ29udGVudFZpZXdLVk9UcmFuc2Zvcm1Db250ZXh0ID0gJldL
Q29udGVudFZpZXdLVk9UcmFuc2Zvcm1Db250ZXh0OwogCkBAIC0zNDQ1LDkgKzM0NTQsOSBAQCAt
IChVSUNvbG9yICopX2Nhc2NhZGVJbnRlcmFjdGlvblRpbnRDb2xvcgogICAgIHJldHVybiBbc2Vs
ZiBfaW5oZXJpdGVkSW50ZXJhY3Rpb25UaW50Q29sb3JdOwogfQogCi0tICh2b2lkKV91cGRhdGVJ
bnRlcmFjdGlvblRpbnRDb2xvcgorLSAodm9pZClfdXBkYXRlSW50ZXJhY3Rpb25UaW50Q29sb3I6
KFVJVGV4dElucHV0VHJhaXRzICopdHJhaXRzCiB7Ci0gICAgW190cmFpdHMgX3NldENvbG9yc1Rv
TWF0Y2hUaW50Q29sb3I6W3NlbGYgX2Nhc2NhZGVJbnRlcmFjdGlvblRpbnRDb2xvcl1dOworICAg
IFt0cmFpdHMgX3NldENvbG9yc1RvTWF0Y2hUaW50Q29sb3I6W3NlbGYgX2Nhc2NhZGVJbnRlcmFj
dGlvblRpbnRDb2xvcl1dOwogfQogCiAtICh2b2lkKXRpbnRDb2xvckRpZENoYW5nZQpAQCAtMzQ1
Nyw3ICszNDY2LDcgQEAgLSAodm9pZCl0aW50Q29sb3JEaWRDaGFuZ2UKICAgICBCT09MIHNob3Vs
ZFVwZGF0ZVRleHRTZWxlY3Rpb24gPSBzZWxmLmlzRmlyc3RSZXNwb25kZXIgJiYgW3NlbGYgY2Fu
U2hvd05vbkVtcHR5U2VsZWN0aW9uVmlld107CiAgICAgaWYgKHNob3VsZFVwZGF0ZVRleHRTZWxl
Y3Rpb24pCiAgICAgICAgIFtfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50IGRlYWN0aXZhdGVTZWxl
Y3Rpb25dOwotICAgIFtzZWxmIF91cGRhdGVJbnRlcmFjdGlvblRpbnRDb2xvcl07CisgICAgW3Nl
bGYgX3VwZGF0ZUludGVyYWN0aW9uVGludENvbG9yOl90cmFpdHMuZ2V0KCldOwogICAgIGlmIChz
aG91bGRVcGRhdGVUZXh0U2VsZWN0aW9uKQogICAgICAgICBbX3RleHRJbnRlcmFjdGlvbkFzc2lz
dGFudCBhY3RpdmF0ZVNlbGVjdGlvbl07CiB9CkBAIC01MTY0LDQ1ICs1MTczLDQ5IEBAIC0gKFVJ
VGV4dElucHV0VHJhaXRzICopdGV4dElucHV0VHJhaXRzCiAgICAgICAgIHJldHVybiBfdHJhaXRz
LmdldCgpOwogI2VuZGlmCiAKLSAgICBbX3RyYWl0cyBzZXRTZWN1cmVUZXh0RW50cnk6X2ZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlBh
c3N3b3JkIHx8IFtfZm9ybUlucHV0U2Vzc2lvbiBmb3JjZVNlY3VyZVRleHRFbnRyeV1dOwotICAg
IFtfdHJhaXRzIHNldFNob3J0Y3V0Q29udmVyc2lvblR5cGU6X2ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkID8gVUlUZXh0
U2hvcnRjdXRDb252ZXJzaW9uVHlwZU5vIDogVUlUZXh0U2hvcnRjdXRDb252ZXJzaW9uVHlwZURl
ZmF1bHRdOworICAgIFtzZWxmIF91cGRhdGVUZXh0SW5wdXRUcmFpdHM6X3RyYWl0cy5nZXQoKV07
CisgICAgcmV0dXJuIF90cmFpdHMuZ2V0KCk7Cit9CisKKy0gKHZvaWQpX3VwZGF0ZVRleHRJbnB1
dFRyYWl0czooaWQgPFVJVGV4dElucHV0VHJhaXRzPil0cmFpdHMKK3sKKyAgICB0cmFpdHMuc2Vj
dXJlVGV4dEVudHJ5ID0gX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0g
V2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkIHx8IFtfZm9ybUlucHV0U2Vzc2lvbiBmb3JjZVNl
Y3VyZVRleHRFbnRyeV07CiAKICAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmVudGVyS2V5SGludCkgewogICAgIGNhc2UgV2ViQ29yZTo6RW50ZXJLZXlIaW50OjpFbnRlcjoK
LSAgICAgICAgW190cmFpdHMgc2V0UmV0dXJuS2V5VHlwZTpVSVJldHVybktleURlZmF1bHRdOwor
ICAgICAgICB0cmFpdHMucmV0dXJuS2V5VHlwZSA9IFVJUmV0dXJuS2V5RGVmYXVsdDsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpFbnRlcktleUhpbnQ6OkRvbmU6Ci0gICAgICAg
IFtfdHJhaXRzIHNldFJldHVybktleVR5cGU6VUlSZXR1cm5LZXlEb25lXTsKKyAgICAgICAgdHJh
aXRzLnJldHVybktleVR5cGUgPSBVSVJldHVybktleURvbmU7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgV2ViQ29yZTo6RW50ZXJLZXlIaW50OjpHbzoKLSAgICAgICAgW190cmFpdHMgc2V0UmV0
dXJuS2V5VHlwZTpVSVJldHVybktleUdvXTsKKyAgICAgICAgdHJhaXRzLnJldHVybktleVR5cGUg
PSBVSVJldHVybktleUdvOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkNvcmU6OkVudGVy
S2V5SGludDo6TmV4dDoKLSAgICAgICAgW190cmFpdHMgc2V0UmV0dXJuS2V5VHlwZTpVSVJldHVy
bktleU5leHRdOworICAgICAgICB0cmFpdHMucmV0dXJuS2V5VHlwZSA9IFVJUmV0dXJuS2V5TmV4
dDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpFbnRlcktleUhpbnQ6OlNlYXJj
aDoKLSAgICAgICAgW190cmFpdHMgc2V0UmV0dXJuS2V5VHlwZTpVSVJldHVybktleVNlYXJjaF07
CisgICAgICAgIHRyYWl0cy5yZXR1cm5LZXlUeXBlID0gVUlSZXR1cm5LZXlTZWFyY2g7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6RW50ZXJLZXlIaW50OjpTZW5kOgotICAgICAg
ICBbX3RyYWl0cyBzZXRSZXR1cm5LZXlUeXBlOlVJUmV0dXJuS2V5U2VuZF07CisgICAgICAgIHRy
YWl0cy5yZXR1cm5LZXlUeXBlID0gVUlSZXR1cm5LZXlTZW5kOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OiB7CiAgICAgICAgIGlmICghX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZm9y
bUFjdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgICAgICBbX3RyYWl0cyBzZXRSZXR1cm5LZXlUeXBl
Ol9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRU
eXBlOjpTZWFyY2ggPyBVSVJldHVybktleVNlYXJjaCA6IFVJUmV0dXJuS2V5R29dOworICAgICAg
ICAgICAgdHJhaXRzLnJldHVybktleVR5cGUgPSBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5l
bGVtZW50VHlwZSA9PSBXZWJLaXQ6OklucHV0VHlwZTo6U2VhcmNoID8gVUlSZXR1cm5LZXlTZWFy
Y2ggOiBVSVJldHVybktleUdvOwogICAgIH0KICAgICB9CiAKLSAgICBpZiAoX2ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3Jk
IHx8IF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5w
dXRUeXBlOjpFbWFpbCB8fCBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9
PSBXZWJLaXQ6OklucHV0VHlwZTo6VVJMIHx8IF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmZv
cm1BY3Rpb24uY29udGFpbnMoImxvZ2luIikpIHsKLSAgICAgICAgW190cmFpdHMgc2V0QXV0b2Nh
cGl0YWxpemF0aW9uVHlwZTpVSVRleHRBdXRvY2FwaXRhbGl6YXRpb25UeXBlTm9uZV07Ci0gICAg
ICAgIFtfdHJhaXRzIHNldEF1dG9jb3JyZWN0aW9uVHlwZTpVSVRleHRBdXRvY29ycmVjdGlvblR5
cGVOb107Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW190cmFpdHMgc2V0QXV0b2NhcGl0YWxpemF0
aW9uVHlwZTp0b1VJVGV4dEF1dG9jYXBpdGFsaXplKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmF1dG9jYXBpdGFsaXplVHlwZSldOwotICAgICAgICBbX3RyYWl0cyBzZXRBdXRvY29ycmVjdGlv
blR5cGU6X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaXNBdXRvY29ycmVjdCA/IFVJVGV4dEF1
dG9jb3JyZWN0aW9uVHlwZVllcyA6IFVJVGV4dEF1dG9jb3JyZWN0aW9uVHlwZU5vXTsKLSAgICB9
CisgICAgQk9PTCBkaXNhYmxlQXV0b2NvcnJlY3RBbmRBdXRvY2FwaXRhbGl6ZSA9IF9mb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpQYXNz
d29yZCB8fCBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSA9PSBXZWJLaXQ6
OklucHV0VHlwZTo6RW1haWwKKyAgICAgICAgfHwgX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24u
ZWxlbWVudFR5cGUgPT0gV2ViS2l0OjpJbnB1dFR5cGU6OlVSTCB8fCBfZm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5mb3JtQWN0aW9uLmNvbnRhaW5zKCJsb2dpbiIpOworICAgIGlmIChbdHJhaXRz
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0QXV0b2NhcGl0YWxpemF0aW9uVHlwZTop
XSkKKyAgICAgICAgdHJhaXRzLmF1dG9jYXBpdGFsaXphdGlvblR5cGUgPSBkaXNhYmxlQXV0b2Nv
cnJlY3RBbmRBdXRvY2FwaXRhbGl6ZSA/IFVJVGV4dEF1dG9jYXBpdGFsaXphdGlvblR5cGVOb25l
IDogdG9VSVRleHRBdXRvY2FwaXRhbGl6ZShfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5hdXRv
Y2FwaXRhbGl6ZVR5cGUpOworICAgIGlmIChbdHJhaXRzIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2V0QXV0b2NvcnJlY3Rpb25UeXBlOildKQorICAgICAgICB0cmFpdHMuYXV0b2NvcnJl
Y3Rpb25UeXBlID0gZGlzYWJsZUF1dG9jb3JyZWN0QW5kQXV0b2NhcGl0YWxpemUgPyBVSVRleHRB
dXRvY29ycmVjdGlvblR5cGVObyA6IChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pc0F1dG9j
b3JyZWN0ID8gVUlUZXh0QXV0b2NvcnJlY3Rpb25UeXBlWWVzIDogVUlUZXh0QXV0b2NvcnJlY3Rp
b25UeXBlTm8pOwogCiAgICAgaWYgKCFfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pc1NwZWxs
Q2hlY2tpbmdFbmFibGVkKSB7Ci0gICAgICAgIFtfdHJhaXRzIHNldFNtYXJ0UXVvdGVzVHlwZTpV
SVRleHRTbWFydFF1b3Rlc1R5cGVOb107Ci0gICAgICAgIFtfdHJhaXRzIHNldFNtYXJ0RGFzaGVz
VHlwZTpVSVRleHRTbWFydERhc2hlc1R5cGVOb107CisgICAgICAgIHRyYWl0cy5zbWFydFF1b3Rl
c1R5cGUgPSBVSVRleHRTbWFydFF1b3Rlc1R5cGVObzsKKyAgICAgICAgdHJhaXRzLnNtYXJ0RGFz
aGVzVHlwZSA9IFVJVGV4dFNtYXJ0RGFzaGVzVHlwZU5vOwogICAgIH0KIAogICAgIHN3aXRjaCAo
X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uaW5wdXRNb2RlKSB7CkBAIC01MjEwLDE5ICs1MjIz
LDE5IEBAIC0gKFVJVGV4dElucHV0VHJhaXRzICopdGV4dElucHV0VHJhaXRzCiAgICAgY2FzZSBX
ZWJDb3JlOjpJbnB1dE1vZGU6OlVuc3BlY2lmaWVkOgogICAgICAgICBzd2l0Y2ggKF9mb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlKSB7CiAgICAgICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OlBob25lOgotICAgICAgICAgICAgW190cmFpdHMgc2V0S2V5Ym9hcmRUeXBlOlVJ
S2V5Ym9hcmRUeXBlUGhvbmVQYWRdOworICAgICAgICAgICAgdHJhaXRzLmtleWJvYXJkVHlwZSA9
IFVJS2V5Ym9hcmRUeXBlUGhvbmVQYWQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXZWJLaXQ6OklucHV0VHlwZTo6VVJMOgotICAgICAgICAgICAgW190cmFpdHMgc2V0S2V5Ym9h
cmRUeXBlOlVJS2V5Ym9hcmRUeXBlVVJMXTsKKyAgICAgICAgICAgIHRyYWl0cy5rZXlib2FyZFR5
cGUgPSBVSUtleWJvYXJkVHlwZVVSTDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbDoKLSAgICAgICAgICAgIFtfdHJhaXRzIHNldEtleWJv
YXJkVHlwZTpVSUtleWJvYXJkVHlwZUVtYWlsQWRkcmVzc107CisgICAgICAgICAgICB0cmFpdHMu
a2V5Ym9hcmRUeXBlID0gVUlLZXlib2FyZFR5cGVFbWFpbEFkZHJlc3M7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyOgotICAgICAgICAg
ICAgW190cmFpdHMgc2V0S2V5Ym9hcmRUeXBlOlVJS2V5Ym9hcmRUeXBlTnVtYmVyc0FuZFB1bmN0
dWF0aW9uXTsKKyAgICAgICAgICAgIHRyYWl0cy5rZXlib2FyZFR5cGUgPSBVSUtleWJvYXJkVHlw
ZU51bWJlcnNBbmRQdW5jdHVhdGlvbjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpOdW1iZXJQYWQ6Ci0gICAgICAgICAgICBbX3RyYWl0cyBzZXRL
ZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5cGVOdW1iZXJQYWRdOworICAgICAgICAgICAgdHJhaXRz
LmtleWJvYXJkVHlwZSA9IFVJS2V5Ym9hcmRUeXBlTnVtYmVyUGFkOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok5vbmU6CiAgICAgICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKQEAgLTUyNDAsNjYgKzUyNTMsNzUg
QEAgLSAoVUlUZXh0SW5wdXRUcmFpdHMgKil0ZXh0SW5wdXRUcmFpdHMKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9DT0xPUikKICAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6CiAj
ZW5kaWYKLSAgICAgICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJkVHlw
ZURlZmF1bHRdOworICAgICAgICAgICAgdHJhaXRzLmtleWJvYXJkVHlwZSA9IFVJS2V5Ym9hcmRU
eXBlRGVmYXVsdDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkNvcmU6
OklucHV0TW9kZTo6VGV4dDoKLSAgICAgICAgW190cmFpdHMgc2V0S2V5Ym9hcmRUeXBlOlVJS2V5
Ym9hcmRUeXBlRGVmYXVsdF07CisgICAgICAgIHRyYWl0cy5rZXlib2FyZFR5cGUgPSBVSUtleWJv
YXJkVHlwZURlZmF1bHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRN
b2RlOjpUZWxlcGhvbmU6Ci0gICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJv
YXJkVHlwZVBob25lUGFkXTsKKyAgICAgICAgdHJhaXRzLmtleWJvYXJkVHlwZSA9IFVJS2V5Ym9h
cmRUeXBlUGhvbmVQYWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRN
b2RlOjpVcmw6Ci0gICAgICAgIFtfdHJhaXRzIHNldEtleWJvYXJkVHlwZTpVSUtleWJvYXJkVHlw
ZVVSTF07CisgICAgICAgIHRyYWl0cy5rZXlib2FyZFR5cGUgPSBVSUtleWJvYXJkVHlwZVVSTDsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OkVtYWlsOgotICAg
ICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5cGVFbWFpbEFkZHJlc3Nd
OworICAgICAgICB0cmFpdHMua2V5Ym9hcmRUeXBlID0gVUlLZXlib2FyZFR5cGVFbWFpbEFkZHJl
c3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpOdW1lcmlj
OgotICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5cGVOdW1iZXJQ
YWRdOworICAgICAgICB0cmFpdHMua2V5Ym9hcmRUeXBlID0gVUlLZXlib2FyZFR5cGVOdW1iZXJQ
YWQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpEZWNpbWFs
OgotICAgICAgICBbX3RyYWl0cyBzZXRLZXlib2FyZFR5cGU6VUlLZXlib2FyZFR5cGVEZWNpbWFs
UGFkXTsKKyAgICAgICAgdHJhaXRzLmtleWJvYXJkVHlwZSA9IFVJS2V5Ym9hcmRUeXBlRGVjaW1h
bFBhZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OlNlYXJj
aDoKLSAgICAgICAgW190cmFpdHMgc2V0S2V5Ym9hcmRUeXBlOlVJS2V5Ym9hcmRUeXBlV2ViU2Vh
cmNoXTsKKyAgICAgICAgdHJhaXRzLmtleWJvYXJkVHlwZSA9IFVJS2V5Ym9hcmRUeXBlV2ViU2Vh
cmNoOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBbX3RyYWl0cyBzZXRUZXh0Q29udGVu
dFR5cGU6Y29udGVudFR5cGVGcm9tRmllbGROYW1lKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmF1dG9maWxsRmllbGROYW1lKV07CisjaWYgUExBVEZPUk0oV0FUQ0hPUykKKyAgICB0cmFpdHMu
dGV4dENvbnRlbnRUeXBlID0gc2VsZi50ZXh0Q29udGVudFR5cGVGb3JRdWlja2JvYXJkOworI2Vs
c2UKKyAgICB0cmFpdHMudGV4dENvbnRlbnRUeXBlID0gY29udGVudFR5cGVGcm9tRmllbGROYW1l
KF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmF1dG9maWxsRmllbGROYW1lKTsKKyNlbmRpZgog
Ci0gICAgc3dpdGNoIChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewot
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKLSAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYToKLSAgICAgICAgW190cmFpdHMgc2V0SXNTaW5nbGVM
aW5lRG9jdW1lbnQ6Tk9dOwotICAgICAgICBicmVhazsKKyAgICBhdXRvIHByaXZhdGVUcmFpdHMg
PSAoaWQgPFVJVGV4dElucHV0VHJhaXRzX1ByaXZhdGU+KXRyYWl0czsKKyAgICBpZiAoW3ByaXZh
dGVUcmFpdHMgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJc1NpbmdsZUxpbmVEb2N1
bWVudDopXSkgeworICAgICAgICBzd2l0Y2ggKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVs
ZW1lbnRUeXBlKSB7CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0
YWJsZToKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dEFyZWE6CisgICAgICAg
ICAgICBwcml2YXRlVHJhaXRzLmlzU2luZ2xlTGluZURvY3VtZW50ID0gTk87CisgICAgICAgICAg
ICBicmVhazsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpDb2xvcjoKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29sb3I6
CiAjZW5kaWYKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpEYXRlOgotICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6OkRhdGVUaW1lTG9jYWw6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6RHJhd2luZzoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpFbWFpbDoKLSAgICBjYXNl
IFdlYktpdDo6SW5wdXRUeXBlOjpNb250aDoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpO
dW1iZXI6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TnVtYmVyUGFkOgotICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6OlBhc3N3b3JkOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6
OlBob25lOgotICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNlYXJjaDoKLSAgICBjYXNlIFdl
YktpdDo6SW5wdXRUeXBlOjpTZWxlY3Q6Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4
dDoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgotICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OlVSTDoKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpXZWVrOgotICAgICAg
ICBbX3RyYWl0cyBzZXRJc1NpbmdsZUxpbmVEb2N1bWVudDpZRVNdOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgotICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZToKKyAgICAgICAgY2FzZSBXZWJLaXQ6Oklu
cHV0VHlwZTo6RGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
RHJhd2luZzoKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RW1haWw6CisgICAgICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok1vbnRoOgorICAgICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpOdW1iZXI6CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6Ok51bWJlclBh
ZDoKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6UGFzc3dvcmQ6CisgICAgICAgIGNh
c2UgV2ViS2l0OjpJbnB1dFR5cGU6OlBob25lOgorICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRU
eXBlOjpTZWFyY2g6CisgICAgICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdDoKKyAg
ICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dDoKKyAgICAgICAgY2FzZSBXZWJLaXQ6
OklucHV0VHlwZTo6VGltZToKKyAgICAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VVJMOgor
ICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpXZWVrOgorICAgICAgICAgICAgcHJpdmF0
ZVRyYWl0cy5pc1NpbmdsZUxpbmVEb2N1bWVudCA9IFlFUzsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICB9CiAKLSAgICBbc2VsZiBfdXBkYXRlSW50ZXJhY3Rpb25UaW50Q29s
b3JdOworICAgIGlmIChbcHJpdmF0ZVRyYWl0cyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNldFNob3J0Y3V0Q29udmVyc2lvblR5cGU6KV0pCisgICAgICAgIHByaXZhdGVUcmFpdHMuc2hv
cnRjdXRDb252ZXJzaW9uVHlwZSA9IF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRU
eXBlID09IFdlYktpdDo6SW5wdXRUeXBlOjpQYXNzd29yZCA/IFVJVGV4dFNob3J0Y3V0Q29udmVy
c2lvblR5cGVObyA6IFVJVGV4dFNob3J0Y3V0Q29udmVyc2lvblR5cGVEZWZhdWx0OwogCi0gICAg
cmV0dXJuIF90cmFpdHMuZ2V0KCk7CisgICAgaWYgKFt0cmFpdHMgaXNLaW5kT2ZDbGFzczpVSVRl
eHRJbnB1dFRyYWl0cy5jbGFzc10pCisgICAgICAgIFtzZWxmIF91cGRhdGVJbnRlcmFjdGlvblRp
bnRDb2xvcjooVUlUZXh0SW5wdXRUcmFpdHMgKil0cmFpdHNdOwogfQogCiAtIChVSVRleHRJbnRl
cmFjdGlvbkFzc2lzdGFudCAqKWludGVyYWN0aW9uQXNzaXN0YW50CkBAIC02NDQ1LDYgKzY0Njcs
MzEgQEAgLSAodm9pZClyZW1vdmVGb2N1c2VkRm9ybUNvbnRyb2xPdmVybGF5CiAgICAgW3NlbGYg
c2V0SW5wdXREZWxlZ2F0ZTpuaWxdOwogfQogCisjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xM
RVIpCisKKy0gKFJldGFpblB0cjxQVUlDUXVpY2tib2FyZENvbnRyb2xsZXI+KV9jcmVhdGVRdWlj
a2JvYXJkQ29udHJvbGxlcjooVUlWaWV3Q29udHJvbGxlciAqKXByZXNlbnRpbmdWaWV3Q29udHJv
bGxlcgoreworICAgIGF1dG8gcXVpY2tib2FyZENvbnRyb2xsZXIgPSBhZG9wdE5TKFtbUFVJQ1F1
aWNrYm9hcmRDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHN1Z2dlc3Rpb25z
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OltfZm9ybUlucHV0U2Vzc2lvbiBzdWdnZXN0aW9uc10uY291bnRdKTsKKyAgICBmb3Ig
KFVJVGV4dFN1Z2dlc3Rpb24gKnN1Z2dlc3Rpb24gaW4gW19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dl
c3Rpb25zXSkKKyAgICAgICAgW3N1Z2dlc3Rpb25zIGFkZE9iamVjdDpzdWdnZXN0aW9uLmlucHV0
VGV4dF07CisKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtbUFVJQ1RleHRJbnB1dENvbnRl
eHQgYWxsb2NdIGluaXRdKTsKKyAgICBbc2VsZiBfdXBkYXRlVGV4dElucHV0VHJhaXRzOmNvbnRl
eHQuZ2V0KCldOworICAgIFtjb250ZXh0IHNldFN1Z2dlc3Rpb25zOnN1Z2dlc3Rpb25zLmdldCgp
XTsKKyAgICBbY29udGV4dCBzZXRJbml0aWFsVGV4dDpfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bi52YWx1ZV07CisgICAgW2NvbnRleHQgc2V0QWNjZXB0c0Vtb2ppOllFU107CisgICAgW3F1aWNr
Ym9hcmRDb250cm9sbGVyIHNldFF1aWNrYm9hcmRQcmVzZW50aW5nVmlld0NvbnRyb2xsZXI6cHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyXTsKKyAgICBbcXVpY2tib2FyZENvbnRyb2xsZXIgc2V0RXhj
bHVkZWRGcm9tU2NyZWVuQ2FwdHVyZTpbY29udGV4dCBpc1NlY3VyZVRleHRFbnRyeV1dOworICAg
IFtxdWlja2JvYXJkQ29udHJvbGxlciBzZXRUZXh0SW5wdXRDb250ZXh0OmNvbnRleHQuZ2V0KCld
OworICAgIFtxdWlja2JvYXJkQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpzZWxmXTsKKworICAgIHJl
dHVybiBxdWlja2JvYXJkQ29udHJvbGxlcjsKK30KKworI2VuZGlmIC8vIEhBVkUoUVVJQ0tCT0FS
RF9DT05UUk9MTEVSKQorCiAtICh2b2lkKXByZXNlbnRWaWV3Q29udHJvbGxlckZvckN1cnJlbnRG
b2N1c2VkRWxlbWVudAogewogICAgIFtzZWxmIGRpc21pc3NBbGxJbnB1dFZpZXdDb250cm9sbGVy
czpOT107CkBAIC02NDcxLDEyICs2NTE4LDIzIEBAIC0gKHZvaWQpcHJlc2VudFZpZXdDb250cm9s
bGVyRm9yQ3VycmVudEZvY3VzZWRFbGVtZW50CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2Vi
S2l0OjpJbnB1dFR5cGU6Ok5vbmU6CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6CisgICAg
ZGVmYXVsdDogeworI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorICAgICAgICBpZiAo
X3BhZ2UtPnByZWZlcmVuY2VzKCkucXVpY2tib2FyZENvbnRyb2xsZXJGb3JUZXh0SW5wdXRFbmFi
bGVkKCkpIHsKKyAgICAgICAgICAgIF9wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJvbGxlciA9IFtz
ZWxmIF9jcmVhdGVRdWlja2JvYXJkQ29udHJvbGxlcjpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXJd
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBfcHJlc2Vu
dGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6c2VsZl0pOwogICAgICAg
ICBicmVhazsKICAgICB9CisgICAgfQogCi0gICAgQVNTRVJUKF9wcmVzZW50ZWRGdWxsU2NyZWVu
SW5wdXRWaWV3Q29udHJvbGxlcik7CisjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisg
ICAgQVNTRVJUX0lNUExJRVMoX3ByZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVyLCAhX3ByZXNl
bnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyKTsKKyAgICBBU1NFUlRfSU1QTElFUyhf
cHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIsICFfcHJlc2VudGVkUXVpY2ti
b2FyZENvbnRyb2xsZXIpOworI2VuZGlmIC8vIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQor
ICAgIEFTU0VSVChzZWxmLl9pc1ByZXNlbnRpbmdGdWxsU2NyZWVuSW5wdXRWaWV3KTsKICAgICBB
U1NFUlQocHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKTsKIAogICAgIGlmICghcHJlZmVyc01vZGFs
UHJlc2VudGF0aW9uICYmIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpb
VUlOYXZpZ2F0aW9uQ29udHJvbGxlciBjbGFzc11dKQpAQCAtNjQ4NCwxOSArNjU0MiwzMyBAQCAt
ICh2b2lkKXByZXNlbnRWaWV3Q29udHJvbGxlckZvckN1cnJlbnRGb2N1c2VkRWxlbWVudAogICAg
IGVsc2UKICAgICAgICAgX2lucHV0TmF2aWdhdGlvblZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVl
bklucHV0cyA9IG5pbDsKIAotICAgIC8vIFByZXNlbnQgdGhlIGlucHV0IHZpZXcgY29udHJvbGxl
ciBvbiBhbiBleGlzdGluZyBuYXZpZ2F0aW9uIHN0YWNrLCBpZiBwb3NzaWJsZS4gSWYgdGhlcmUg
aXMgbm8gbmF2aWdhdGlvbiBzdGFjayB3ZSBjYW4gdXNlLCBmYWxsIGJhY2sgdG8gcHJlc2VudGlu
ZyBtb2RhbGx5LgotICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB0aGUgSEkgc3BlY2lmaWNhdGlvbiAo
Zm9yIGNlcnRhaW4gc2NlbmFyaW9zKSBjYWxscyBmb3IgbmF2aWdhdGlvbi1zdHlsZSB2aWV3IGNv
bnRyb2xsZXIgcHJlc2VudGF0aW9uLCBidXQgV0tXZWJWaWV3IGNhbid0IG1ha2UgYW55IGd1YXJh
bnRlZXMKLSAgICAvLyBhYm91dCBjbGllbnRzJyB2aWV3IGNvbnRyb2xsZXIgaGllcmFyY2hpZXMs
IHNvIHdlIGNhbiBvbmx5IHRyeSBvdXIgYmVzdCB0byBhdm9pZCBwcmVzZW50aW5nIG1vZGFsbHku
IENsaWVudHMgY2FuIGltcGxpY2l0bHkgb3B0IGluIHRvIHNwZWNjZWQgYmVoYXZpb3IgYnkgdXNp
bmcKLSAgICAvLyBVSU5hdmlnYXRpb25Db250cm9sbGVyIHRvIHByZXNlbnQgdGhlIHdlYiB2aWV3
LgotICAgIGlmIChfaW5wdXROYXZpZ2F0aW9uVmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuSW5w
dXRzKQotICAgICAgICBbX2lucHV0TmF2aWdhdGlvblZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVl
bklucHV0cyBwdXNoVmlld0NvbnRyb2xsZXI6X3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdD
b250cm9sbGVyLmdldCgpIGFuaW1hdGVkOllFU107Ci0gICAgZWxzZQotICAgICAgICBbcHJlc2Vu
dGluZ1ZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjpfcHJlc2VudGVkRnVsbFNj
cmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmls
XTsKKyAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gY29udHJvbGxlcjsKKyAgICBpZiAo
X3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyKSB7CisgICAgICAgIC8vIFBy
ZXNlbnQgdGhlIGlucHV0IHZpZXcgY29udHJvbGxlciBvbiBhbiBleGlzdGluZyBuYXZpZ2F0aW9u
IHN0YWNrLCBpZiBwb3NzaWJsZS4gSWYgdGhlcmUgaXMgbm8gbmF2aWdhdGlvbiBzdGFjayB3ZSBj
YW4gdXNlLCBmYWxsIGJhY2sgdG8gcHJlc2VudGluZyBtb2RhbGx5LgorICAgICAgICAvLyBUaGlz
IGlzIGJlY2F1c2UgdGhlIEhJIHNwZWNpZmljYXRpb24gKGZvciBjZXJ0YWluIHNjZW5hcmlvcykg
Y2FsbHMgZm9yIG5hdmlnYXRpb24tc3R5bGUgdmlldyBjb250cm9sbGVyIHByZXNlbnRhdGlvbiwg
YnV0IFdLV2ViVmlldyBjYW4ndCBtYWtlIGFueSBndWFyYW50ZWVzCisgICAgICAgIC8vIGFib3V0
IGNsaWVudHMnIHZpZXcgY29udHJvbGxlciBoaWVyYXJjaGllcywgc28gd2UgY2FuIG9ubHkgdHJ5
IG91ciBiZXN0IHRvIGF2b2lkIHByZXNlbnRpbmcgbW9kYWxseS4gQ2xpZW50cyBjYW4gaW1wbGlj
aXRseSBvcHQgaW4gdG8gc3BlY2NlZCBiZWhhdmlvciBieSB1c2luZworICAgICAgICAvLyBVSU5h
dmlnYXRpb25Db250cm9sbGVyIHRvIHByZXNlbnQgdGhlIHdlYiB2aWV3LgorICAgICAgICBpZiAo
X2lucHV0TmF2aWdhdGlvblZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlbklucHV0cykKKyAgICAg
ICAgICAgIFtfaW5wdXROYXZpZ2F0aW9uVmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuSW5wdXRz
IHB1c2hWaWV3Q29udHJvbGxlcjpfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xs
ZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW3ByZXNl
bnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6X3ByZXNlbnRlZEZ1bGxT
Y3JlZW5JbnB1dFZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5p
bF07CisgICAgICAgIGNvbnRyb2xsZXIgPSBfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0Nv
bnRyb2xsZXIuZ2V0KCk7CisgICAgfQorCisjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIp
CisgICAgaWYgKF9wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJvbGxlcikgeworICAgICAgICBbX3By
ZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVyIHByZXNlbnRdOworICAgICAgICBjb250cm9sbGVy
ID0gW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3Q29udHJvbGxlcl07Cisg
ICAgfQorI2VuZGlmIC8vIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQogCiAgICAgLy8gUHJl
c2VudGluZyBhIGZ1bGxzY3JlZW4gaW5wdXQgdmlldyBjb250cm9sbGVyIGZ1bGx5IG9ic2N1cmVz
IHRoZSB3ZWIgdmlldy4gV2l0aG91dCB0YWtpbmcgdGhpcyB0b2tlbiwgdGhlIHdlYiBjb250ZW50
IHByb2Nlc3Mgd2lsbCBnZXQgYmFja2dyb3VuZGVkLgogICAgIF9wYWdlLT5wcm9jZXNzKCkuc3Rh
cnRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKTsKIAotICAgIFtwcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIudHJhbnNpdGlvbkNvb3JkaW5hdG9yIGFuaW1hdGVBbG9uZ3NpZGVU
cmFuc2l0aW9uOm5pbCBjb21wbGV0aW9uOlt3ZWFrV2ViVmlldyA9IFdlYWtPYmpDUHRyPFdLV2Vi
Vmlldz4oX3dlYlZpZXcpLCBjb250cm9sbGVyID0gX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZp
ZXdDb250cm9sbGVyXSAoaWQgPFVJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29vcmRpbmF0b3JD
b250ZXh0PikgeworICAgIC8vIEZJWE1FOiBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgZG9lcyBu
b3QgcHJlc2VudCBpdHMgdmlldyBjb250cm9sbGVyIGltbWVkaWF0ZWx5LCBzaW5jZSBpdCBhc3lu
Y2hyb25vdXNseQorICAgIC8vIGVzdGFibGlzaGVzIGEgY29ubmVjdGlvbiB0byBRdWlja2JvYXJk
Vmlld1NlcnZpY2UgYmVmb3JlIHByZXNlbnRpbmcgdGhlIHJlbW90ZSB2aWV3IGNvbnRyb2xsZXIu
CisgICAgLy8gRml4aW5nIHRoaXMgcmVxdWlyZXMgYSB2ZXJzaW9uIG9mIGAtW1BVSUNRdWlja2Jv
YXJkQ29udHJvbGxlciBwcmVzZW50XWAgdGhhdCB0YWtlcyBhIGNvbXBsZXRpb24gaGFuZGxlci4K
KyAgICBbcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyLnRyYW5zaXRpb25Db29yZGluYXRvciBhbmlt
YXRlQWxvbmdzaWRlVHJhbnNpdGlvbjpuaWwgY29tcGxldGlvbjpbd2Vha1dlYlZpZXcgPSBXZWFr
T2JqQ1B0cjxXS1dlYlZpZXc+KF93ZWJWaWV3KSwgY29udHJvbGxlcl0gKGlkIDxVSVZpZXdDb250
cm9sbGVyVHJhbnNpdGlvbkNvb3JkaW5hdG9yQ29udGV4dD4pIHsKICAgICAgICAgYXV0byBzdHJv
bmdXZWJWaWV3ID0gd2Vha1dlYlZpZXcuZ2V0KCk7CiAgICAgICAgIGlkIDxXS1VJRGVsZWdhdGVQ
cml2YXRlPiB1aURlbGVnYXRlID0gc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+
Pihbc3Ryb25nV2ViVmlldyBVSURlbGVnYXRlXSk7CiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFByZXNlbnRGb2N1c2VkRWxl
bWVudFZpZXdDb250cm9sbGVyOildKQpAQCAtNjUwNCwyNSArNjU3Niw0OSBAQCAtICh2b2lkKXBy
ZXNlbnRWaWV3Q29udHJvbGxlckZvckN1cnJlbnRGb2N1c2VkRWxlbWVudAogICAgIH1dOwogfQog
CistIChCT09MKV9pc1ByZXNlbnRpbmdGdWxsU2NyZWVuSW5wdXRWaWV3Cit7CisjaWYgSEFWRShR
VUlDS0JPQVJEX0NPTlRST0xMRVIpCisgICAgaWYgKF9wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuIFlFUzsKKyNlbmRpZiAvLyBIQVZFKFFVSUNLQk9BUkRfQ09O
VFJPTExFUikKKyAgICByZXR1cm4gX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9s
bGVyOworfQorCiAtICh2b2lkKWRpc21pc3NBbGxJbnB1dFZpZXdDb250cm9sbGVyczooQk9PTClh
bmltYXRlZAogewotICAgIGF1dG8gbmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBXVEZNb3ZlKF9pbnB1
dE5hdmlnYXRpb25WaWV3Q29udHJvbGxlckZvckZ1bGxTY3JlZW5JbnB1dHMpOwotICAgIGF1dG8g
cHJlc2VudGVkQ29udHJvbGxlciA9IFdURk1vdmUoX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZp
ZXdDb250cm9sbGVyKTsKKyAgICBhdXRvIG5hdmlnYXRpb25Db250cm9sbGVyID0gc3RkOjpleGNo
YW5nZShfaW5wdXROYXZpZ2F0aW9uVmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuSW5wdXRzLCBu
aWwpOwogCi0gICAgaWYgKCFwcmVzZW50ZWRDb250cm9sbGVyKQorICAgIGlmICghc2VsZi5faXNQ
cmVzZW50aW5nRnVsbFNjcmVlbklucHV0VmlldykgeworICAgICAgICBBU1NFUlQoIW5hdmlnYXRp
b25Db250cm9sbGVyKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGlmIChbbmF2aWdh
dGlvbkNvbnRyb2xsZXIgdmlld0NvbnRyb2xsZXJzXS5sYXN0T2JqZWN0ID09IHByZXNlbnRlZENv
bnRyb2xsZXIuZ2V0KCkpCi0gICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciBwb3BWaWV3Q29u
dHJvbGxlckFuaW1hdGVkOmFuaW1hdGVkXTsKLSAgICBlbHNlCi0gICAgICAgIFtwcmVzZW50ZWRD
b250cm9sbGVyIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOmFuaW1hdGVkIGNvbXBsZXRp
b246bmlsXTsKKyAgICBpZiAoYXV0byBjb250cm9sbGVyID0gc3RkOjpleGNoYW5nZShfcHJlc2Vu
dGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIsIG5pbCkpIHsKKyAgICAgICAgaWYgKFtu
YXZpZ2F0aW9uQ29udHJvbGxlciB2aWV3Q29udHJvbGxlcnNdLmxhc3RPYmplY3QgPT0gY29udHJv
bGxlci5nZXQoKSkKKyAgICAgICAgICAgIFtuYXZpZ2F0aW9uQ29udHJvbGxlciBwb3BWaWV3Q29u
dHJvbGxlckFuaW1hdGVkOmFuaW1hdGVkXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW2Nv
bnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6YW5pbWF0ZWQgY29tcGxldGlv
bjpuaWxdOwogCi0gICAgW1twcmVzZW50ZWRDb250cm9sbGVyIHRyYW5zaXRpb25Db29yZGluYXRv
cl0gYW5pbWF0ZUFsb25nc2lkZVRyYW5zaXRpb246bmlsIGNvbXBsZXRpb246W3dlYWtXZWJWaWV3
ID0gV2Vha09iakNQdHI8V0tXZWJWaWV3Pihfd2ViVmlldyksIGNvbnRyb2xsZXIgPSBwcmVzZW50
ZWRDb250cm9sbGVyXSAoaWQgPFVJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29vcmRpbmF0b3JD
b250ZXh0PikgewotICAgICAgICBhdXRvIHN0cm9uZ1dlYlZpZXcgPSB3ZWFrV2ViVmlldy5nZXQo
KTsKLSAgICAgICAgaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzdGF0aWNf
Y2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KFtzdHJvbmdXZWJWaWV3IFVJRGVsZWdhdGVd
KTsKLSAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGlkRGlzbWlzc0ZvY3VzZWRFbGVtZW50Vmlld0NvbnRyb2xsZXI6KV0pCi0gICAg
ICAgICAgICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzdHJvbmdXZWJWaWV3LmdldCgpIGRpZERpc21p
c3NGb2N1c2VkRWxlbWVudFZpZXdDb250cm9sbGVyOmNvbnRyb2xsZXIuZ2V0KCldOwotICAgIH1d
OworICAgICAgICBbW2NvbnRyb2xsZXIgdHJhbnNpdGlvbkNvb3JkaW5hdG9yXSBhbmltYXRlQWxv
bmdzaWRlVHJhbnNpdGlvbjpuaWwgY29tcGxldGlvbjpbd2Vha1dlYlZpZXcgPSBXZWFrT2JqQ1B0
cjxXS1dlYlZpZXc+KF93ZWJWaWV3KSwgY29udHJvbGxlcl0gKGlkIDxVSVZpZXdDb250cm9sbGVy
VHJhbnNpdGlvbkNvb3JkaW5hdG9yQ29udGV4dD4pIHsKKyAgICAgICAgICAgIGF1dG8gc3Ryb25n
V2ViVmlldyA9IHdlYWtXZWJWaWV3LmdldCgpOworICAgICAgICAgICAgaWQgPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+IHVpRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0
ZT4+KFtzdHJvbmdXZWJWaWV3IFVJRGVsZWdhdGVdKTsKKyAgICAgICAgICAgIGlmIChbdWlEZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZERpc21pc3NGb2N1
c2VkRWxlbWVudFZpZXdDb250cm9sbGVyOildKQorICAgICAgICAgICAgICAgIFt1aURlbGVnYXRl
IF93ZWJWaWV3OnN0cm9uZ1dlYlZpZXcuZ2V0KCkgZGlkRGlzbWlzc0ZvY3VzZWRFbGVtZW50Vmll
d0NvbnRyb2xsZXI6Y29udHJvbGxlci5nZXQoKV07CisgICAgICAgIH1dOworICAgIH0KKworI2lm
IEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorICAgIGlmIChhdXRvIGNvbnRyb2xsZXIgPSBz
dGQ6OmV4Y2hhbmdlKF9wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJvbGxlciwgbmlsKSkgeworICAg
ICAgICBhdXRvIHByZXNlbnRlZFZpZXdDb250cm9sbGVyID0gcmV0YWluUHRyKFtjb250cm9sbGVy
IHF1aWNrYm9hcmRQcmVzZW50aW5nVmlld0NvbnRyb2xsZXJdLnByZXNlbnRlZFZpZXdDb250cm9s
bGVyKTsKKyAgICAgICAgW2NvbnRyb2xsZXIgZGlzbWlzc1dpdGhDb21wbGV0aW9uOlt3ZWFrV2Vi
VmlldyA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oX3dlYlZpZXcpLCBwcmVzZW50ZWRWaWV3Q29u
dHJvbGxlcl0geworICAgICAgICAgICAgYXV0byBzdHJvbmdXZWJWaWV3ID0gd2Vha1dlYlZpZXcu
Z2V0KCk7CisgICAgICAgICAgICBpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9
IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPj4oW3N0cm9uZ1dlYlZpZXcgVUlE
ZWxlZ2F0ZV0pOworICAgICAgICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRGlzbWlzc0ZvY3VzZWRFbGVtZW50Vmlld0NvbnRyb2xs
ZXI6KV0pCisgICAgICAgICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c3Ryb25nV2ViVmll
dy5nZXQoKSBkaWREaXNtaXNzRm9jdXNlZEVsZW1lbnRWaWV3Q29udHJvbGxlcjpwcmVzZW50ZWRW
aWV3Q29udHJvbGxlci5nZXQoKV07CisgICAgICAgIH1dOworICAgIH0KKyNlbmRpZiAvLyBIQVZF
KFFVSUNLQk9BUkRfQ09OVFJPTExFUikKIAogICAgIGlmIChfc2hvdWxkUmVzdG9yZUZpcnN0UmVz
cG9uZGVyU3RhdHVzQWZ0ZXJMb3NpbmdGb2N1cykgewogICAgICAgICBfc2hvdWxkUmVzdG9yZUZp
cnN0UmVzcG9uZGVyU3RhdHVzQWZ0ZXJMb3NpbmdGb2N1cyA9IE5POwpAQCAtNjY4OSw2ICs2Nzg1
LDIzIEBAIC0gKEJPT0wpc2VsZWN0TWVudTooV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVy
ICopc2VsZWN0TWVudSBoYXNTZWxlY3RlZE9wdGlvCiAgICAgcmV0dXJuIHNlbGYuZm9jdXNlZFNl
bGVjdEVsZW1lbnRPcHRpb25zW2luZGV4XS5pc1NlbGVjdGVkOwogfQogCisjaWYgSEFWRShRVUlD
S0JPQVJEX0NPTlRST0xMRVIpCisKKyNwcmFnbWEgbWFyayAtIFBVSUNRdWlja2JvYXJkQ29udHJv
bGxlckRlbGVnYXRlCisKKy0gKHZvaWQpcXVpY2tib2FyZENvbnRyb2xsZXI6KFBVSUNRdWlja2Jv
YXJkQ29udHJvbGxlciAqKWNvbnRyb2xsZXIgdGV4dElucHV0VmFsdWVEaWRDaGFuZ2U6KE5TQXR0
cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRUZXh0Cit7CisgICAgX3BhZ2UtPnNldFRleHRBc3lu
YyhhdHRyaWJ1dGVkVGV4dC5zdHJpbmcpOworICAgIFtzZWxmIGRpc21pc3NRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXJBbmRSZXZlYWxGb2N1c2VkRm9ybU92ZXJsYXlJZk5lY2Vzc2FyeTpjb250cm9s
bGVyXTsKK30KKworLSAodm9pZClxdWlja2JvYXJkQ29udHJvbGxlclRleHRJbnB1dFZhbHVlQ2Fu
Y2VsbGVkOihQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgKiljb250cm9sbGVyCit7CisgICAgW3Nl
bGYgZGlzbWlzc1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckFuZFJldmVhbEZvY3VzZWRGb3JtT3Zl
cmxheUlmTmVjZXNzYXJ5OmNvbnRyb2xsZXJdOworfQorCisjZW5kaWYgLy8gSEFWRShRVUlDS0JP
QVJEX0NPTlRST0xMRVIpCisKICNlbmRpZiAvLyBQTEFURk9STShXQVRDSE9TKQogCiAtICh2b2lk
KV93aGVlbENoYW5nZWRXaXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudApAQCAtODYzMSw3ICs4NzQ0
LDcgQEAgLSAodm9pZClkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJh
Y3Rpb24gc2Vzc2lvbkRpZEVuZDooaWQgPFVJRHIKIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAK
LS0gKHZvaWQpZGlzbWlzc1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckFuZFJldmVhbEZvY3VzZWRG
b3JtT3ZlcmxheUlmTmVjZXNzYXJ5OihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopcXVp
Y2tib2FyZAorLSAodm9pZClkaXNtaXNzUXVpY2tib2FyZFZpZXdDb250cm9sbGVyQW5kUmV2ZWFs
Rm9jdXNlZEZvcm1PdmVybGF5SWZOZWNlc3Nhcnk6KGlkKWNvbnRyb2xsZXIKIHsKICAgICBCT09M
IHNob3VsZFJldmVhbEZvY3VzT3ZlcmxheSA9IE5POwogICAgIC8vIEluIHRoZSBjYXNlIHdoZXJl
IHRoZXJlJ3Mgbm90aGluZyB0aGUgdXNlciBjb3VsZCBwb3RlbnRpYWxseSBkbyBiZXNpZGVzIGRp
c21pc3MgdGhlIG92ZXJsYXksIHdlIGNhbiBqdXN0IGF1dG9tYXRpY2FsbHkgd2l0aG91dCBhc2tp
bmcgdGhlIGRlbGVnYXRlLgpAQCAtODY1MiwxMiArODc2NSw0MCBAQCAtICh2b2lkKWRpc21pc3NR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXJBbmRSZXZlYWxGb2N1c2VkRm9ybU92ZXJsYXlJZk5lY2Vz
c2FyeTooUAogICAgIH0gZWxzZQogICAgICAgICBfcGFnZS0+Ymx1ckZvY3VzZWRFbGVtZW50KCk7
CiAKKyAgICBib29sIHNob3VsZERpc21pc3NWaWV3Q29udHJvbGxlciA9IFtjb250cm9sbGVyIGlz
S2luZE9mQ2xhc3M6VUlWaWV3Q29udHJvbGxlci5jbGFzc10KKyNpZiBIQVZFKFFVSUNLQk9BUkRf
Q09OVFJPTExFUikKKyAgICAgICAgJiYgIV9wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJvbGxlcgor
I2VuZGlmCisgICAgICAgICYmIGNvbnRyb2xsZXIgIT0gX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1
dFZpZXdDb250cm9sbGVyOwogICAgIC8vIFRoZSBRdWlja2JvYXJkIHZpZXcgY29udHJvbGxlciBw
YXNzZWQgaW50byB0aGlzIGRlbGVnYXRlIG1ldGhvZCBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHZp
ZXcgY29udHJvbGxlciB3ZSBvcmlnaW5hbGx5IHByZXNlbnRlZDsKICAgICAvLyB0aGlzIGhhcHBl
bnMgaW4gdGhlIGNhc2Ugd2hlbiB0aGUgdXNlciBjaG9vc2VzIGFuIGlucHV0IG1ldGhvZCAoZS5n
LiBzY3JpYmJsZSkgYW5kIGEgbmV3IFF1aWNrYm9hcmQgdmlldyBjb250cm9sbGVyIGlzIHByZXNl
bnRlZC4KLSAgICBpZiAocXVpY2tib2FyZCAhPSBfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmll
d0NvbnRyb2xsZXIpCi0gICAgICAgIFtxdWlja2JvYXJkIGRpc21pc3NWaWV3Q29udHJvbGxlckFu
aW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CisgICAgaWYgKHNob3VsZERpc21pc3NWaWV3Q29u
dHJvbGxlcikKKyAgICAgICAgWyhVSVZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaXNtaXNz
Vmlld0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOworCisgICAgW3NlbGYg
ZGlzbWlzc0FsbElucHV0Vmlld0NvbnRyb2xsZXJzOmNvbnRyb2xsZXIgPT0gX3ByZXNlbnRlZEZ1
bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyXTsKK30KKworLSAoVUlUZXh0Q29udGVudFR5cGUp
dGV4dENvbnRlbnRUeXBlRm9yUXVpY2tib2FyZAoreworICAgIHN3aXRjaCAoX2ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKKyAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpQYXNzd29yZDoKKyAgICAgICAgcmV0dXJuIFVJVGV4dENvbnRlbnRUeXBlUGFzc3dvcmQ7Cisg
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VVJMOgorICAgICAgICByZXR1cm4gVUlUZXh0Q29u
dGVudFR5cGVVUkw7CisgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RW1haWw6CisgICAgICAg
IHJldHVybiBVSVRleHRDb250ZW50VHlwZUVtYWlsQWRkcmVzczsKKyAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpQaG9uZToKKyAgICAgICAgcmV0dXJuIFVJVGV4dENvbnRlbnRUeXBlVGVsZXBo
b25lTnVtYmVyOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRoZSBlbGVtZW50IHR5cGUgYWxv
bmUgaXMgaW5zdWZmaWNpZW50IHRvIGluZmVyIGNvbnRlbnQgdHlwZTsgZmFsbCBiYWNrIHRvIGF1
dG9maWxsIGRhdGEuCisgICAgICAgIGlmIChhdXRvIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGVG
cm9tRmllbGROYW1lKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmF1dG9maWxsRmllbGROYW1l
KSkKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50VHlwZTsKKworICAgICAgICBpZiAoX2ZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24uaXNBdXRvZmlsbGFibGVVc2VybmFtZUZpZWxkKQorICAgICAg
ICAgICAgcmV0dXJuIFVJVGV4dENvbnRlbnRUeXBlVXNlcm5hbWU7CiAKLSAgICBbc2VsZiBkaXNt
aXNzQWxsSW5wdXRWaWV3Q29udHJvbGxlcnM6cXVpY2tib2FyZCA9PSBfcHJlc2VudGVkRnVsbFNj
cmVlbklucHV0Vmlld0NvbnRyb2xsZXJdOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KIH0K
IAogI3ByYWdtYSBtYXJrIC0gUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlCkBA
IC04NzU1LDI1ICs4ODk2LDcgQEAgLSAoV0tOdW1iZXJQYWRJbnB1dE1vZGUpbnVtZXJpY0lucHV0
TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0VmkKIAogLSAoTlNTdHJp
bmcgKil0ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgogewotICAgIHN3aXRjaCAoX2ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKLSAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBl
OjpQYXNzd29yZDoKLSAgICAgICAgcmV0dXJuIFVJVGV4dENvbnRlbnRUeXBlUGFzc3dvcmQ7Ci0g
ICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VVJMOgotICAgICAgICByZXR1cm4gVUlUZXh0Q29u
dGVudFR5cGVVUkw7Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RW1haWw6Ci0gICAgICAg
IHJldHVybiBVSVRleHRDb250ZW50VHlwZUVtYWlsQWRkcmVzczsKLSAgICBjYXNlIFdlYktpdDo6
SW5wdXRUeXBlOjpQaG9uZToKLSAgICAgICAgcmV0dXJuIFVJVGV4dENvbnRlbnRUeXBlVGVsZXBo
b25lTnVtYmVyOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIFRoZSBlbGVtZW50IHR5cGUgYWxv
bmUgaXMgaW5zdWZmaWNpZW50IHRvIGluZmVyIGNvbnRlbnQgdHlwZTsgZmFsbCBiYWNrIHRvIGF1
dG9maWxsIGRhdGEuCi0gICAgICAgIGlmIChOU1N0cmluZyAqY29udGVudFR5cGUgPSBjb250ZW50
VHlwZUZyb21GaWVsZE5hbWUoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uYXV0b2ZpbGxGaWVs
ZE5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRUeXBlOwotCi0gICAgICAgIGlmIChf
Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pc0F1dG9maWxsYWJsZVVzZXJuYW1lRmllbGQpCi0g
ICAgICAgICAgICByZXR1cm4gVUlUZXh0Q29udGVudFR5cGVVc2VybmFtZTsKLQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIH0KKyAgICByZXR1cm4gc2VsZi50ZXh0Q29udGVudFR5cGVGb3JRdWlj
a2JvYXJkOwogfQogCiAtIChOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2Vz
dGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
ICopY29udHJvbGxlcgpAQCAtOTI2MiwxMSArOTM4NSwyMyBAQCAtIChXS0Zvcm1TZWxlY3RDb250
cm9sICopc2VsZWN0Q29udHJvbAogLSAodm9pZClfc2ltdWxhdGVUZXh0RW50ZXJlZDooTlNTdHJp
bmcgKil0ZXh0CiB7CiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKLSAgICBpZiAoW19wcmVzZW50ZWRG
dWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltXS1RleHRJbnB1dExp
c3RWaWV3Q29udHJvbGxlciBjbGFzc11dKQorICAgIGlmIChbX3ByZXNlbnRlZEZ1bGxTY3JlZW5J
bnB1dFZpZXdDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6W1dLVGV4dElucHV0TGlzdFZpZXdDb250
cm9sbGVyIGNsYXNzXV0pIHsKICAgICAgICAgWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxl
ciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlci5nZXQoKSBlbnRlclRl
eHQ6dGV4dF07Ci0jZWxzZQorICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgSEFWRShRVUlD
S0JPQVJEX0NPTlRST0xMRVIpCisgICAgaWYgKF9wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJvbGxl
cikgeworICAgICAgICBpZCA8UFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVn
YXRlID0gW19wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJvbGxlciBkZWxlZ2F0ZV07CisgICAgICAg
IEFTU0VSVChkZWxlZ2F0ZSA9PSBzZWxmKTsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0XSk7CisgICAg
ICAgIFtkZWxlZ2F0ZSBxdWlja2JvYXJkQ29udHJvbGxlcjpfcHJlc2VudGVkUXVpY2tib2FyZENv
bnRyb2xsZXIuZ2V0KCkgdGV4dElucHV0VmFsdWVEaWRDaGFuZ2U6c3RyaW5nLmdldCgpXTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExF
UikKKyNlbmRpZiAvLyBQTEFURk9STShXQVRDSE9TKQorCiAgICAgW3NlbGYgaW5zZXJ0VGV4dDp0
ZXh0XTsKLSNlbmRpZgogfQogCiAtICh2b2lkKV9zaW11bGF0ZUVsZW1lbnRBY3Rpb246KF9XS0Vs
ZW1lbnRBY3Rpb25UeXBlKWFjdGlvblR5cGUgYXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgpA
QCAtOTMxMyw3ICs5NDQ4LDExIEBAIC0gKE5TU3RyaW5nICopdGV4dENvbnRlbnRUeXBlRm9yVGVz
dGluZwogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgaWYgKFtfcHJlc2VudGVkRnVsbFNjcmVl
bklucHV0Vmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpbV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRDb250ZW50VHlwZUZv
ckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKilfcHJl
c2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCldOwotI2VuZGlmCisjaWYg
SEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisgICAgaWYgKF9wcmVzZW50ZWRRdWlja2JvYXJk
Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIFtfcHJlc2VudGVkUXVpY2tib2FyZENvbnRyb2xs
ZXIgdGV4dElucHV0Q29udGV4dF0udGV4dENvbnRlbnRUeXBlOworI2VuZGlmIC8vIEhBVkUoUVVJ
Q0tCT0FSRF9DT05UUk9MTEVSKQorI2VuZGlmIC8vIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgcmV0
dXJuIHNlbGYudGV4dElucHV0VHJhaXRzLnRleHRDb250ZW50VHlwZTsKIH0KIApAQCAtOTMyOCwx
MCArOTQ2NywxMCBAQCAtIChOU1N0cmluZyAqKXNlbGVjdEZvcm1Qb3BvdmVyVGl0bGUKIC0gKE5T
U3RyaW5nICopZm9ybUlucHV0TGFiZWwKIHsKICNpZiBQTEFURk9STShXQVRDSE9TKQotICAgIGlm
IChfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVy
biBbc2VsZiBpbnB1dExhYmVsVGV4dEZvclZpZXdDb250cm9sbGVyOihpZClfcHJlc2VudGVkRnVs
bFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCldOwotI2VuZGlmCisgICAgcmV0dXJuIFtz
ZWxmIGlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6X3ByZXNlbnRlZEZ1bGxTY3JlZW5J
bnB1dFZpZXdDb250cm9sbGVyLmdldCgpXTsKKyNlbHNlCiAgICAgcmV0dXJuIG5pbDsKKyNlbmRp
ZgogfQogCiAtICh2b2lkKXNldFRpbWVQaWNrZXJWYWx1ZVRvSG91cjooTlNJbnRlZ2VyKWhvdXIg
bWludXRlOihOU0ludGVnZXIpbWludXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIu
bW0KaW5kZXggMWYwMzRkYTVhMGJhNGNlNDc1ZjNiNmE3YmE4OGEwZDBlY2M0YjQ0OC4uNzQ5YzFj
N2JlYzM1YzVmY2JlZWExY2JhNDY2N2NlZDBmM2Q3MWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RW
aWV3Q29udHJvbGxlci5tbQpAQCAtNjYsNyArNjYsOSBAQCAtIChOU0FycmF5ICopYWRkaXRpb25h
bFRyYXlCdXR0b25zCiAKICAgICBVSUltYWdlICpudW1iZXJQYWRCdXR0b25JY29uID0gW1BVSUNS
ZXNvdXJjZXMgaW1hZ2VOYW1lZDpAIlF1aWNrYm9hcmRBZGRQaG9uZU51bWJlciIgaW5CdW5kbGU6
W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLlBlcHBlclVJQ29yZSJd
IHNob3VsZENhY2hlOllFU107CiAKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogICAgIGF1dG8gbnVtYmVyUGFkQnV0dG9uID0gYWRvcHROUyhbW1BVSUNRdWlja2JvYXJk
TGlzdFRyYXlCdXR0b24gYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyB0aW50Q29sb3I6
bmlsIGRlZmF1bHRIZWlnaHQ6c2VsZi5zcGVjcy5kZWZhdWx0QnV0dG9uSGVpZ2h0XSk7CisgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgW251bWJlclBhZEJ1dHRvbiBz
ZXRJbWFnZTpudW1iZXJQYWRCdXR0b25JY29uIGZvclN0YXRlOlVJQ29udHJvbFN0YXRlTm9ybWFs
XTsKICAgICBbbnVtYmVyUGFkQnV0dG9uIGFkZFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3Io
cHJlc2VudE51bWJlclBhZFZpZXdDb250cm9sbGVyKSBmb3JDb250cm9sRXZlbnRzOlVJQ29udHJv
bEV2ZW50VG91Y2hVcEluc2lkZV07CiAgICAgcmV0dXJuIEBbIG51bWJlclBhZEJ1dHRvbi5nZXQo
KSBdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDY5YjY1MzRiMmFjZmM2NmJlZTJkOTIyNzM3NjMzZGFlMTM2Yjk2ODguLjFhNmE5ZWE3MTM1ODIw
OTU4YmU2OWY2M2ZkMmI5OGYyMjRlN2M4ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMS0wMi0wOSAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbd2F0Y2hPU10gQWRv
cHQgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGZvciB0ZXh0IGlucHV0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2NDkKKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIE1ha2Ugc29tZSBzbWFsbCB0d2Vha3MgdG8g
V2ViS2l0VGVzdFJ1bm5lciBpbiBzdXBwb3J0IG9mIHVzaW5nIGBQVUlDUXVpY2tib2FyZENvbnRy
b2xsZXJgIGZvciB0ZXh0IGlucHV0LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvQ29u
ZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lckFwcC54Y2NvbmZpZzoKKworICAgICAgICBBZGp1
c3QgdGhlIHRlc3QgaGFybmVzcyBvbiB3YXRjaE9TIHRvIGxpbmsgYWdhaW5zdCBQZXBwZXJVSUNv
cmUsIHNvIHRoYXQgd2UgY2FuIHJlZmVyZW5jZSB0aGUKKyAgICAgICAgYFBVSUNRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXJgIGFuZCBgUFVJQ1F1aWNrYm9hcmRSZW1vdGVWaWV3Q29udHJvbGxlcmAg
Y2xhc3NlcyBiZWxvdy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1
bm5lcldLV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1
bm5lcldLV2ViVmlldy5tbToKKyAgICAgICAgKGlzUXVpY2tib2FyZFZpZXdDb250cm9sbGVyKToK
KyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkUHJlc2VudFZpZXdDb250cm9sbGVy
Ol0pOgorCisgICAgICAgIE92ZXJyaWRlIGAtcHJlc2VudFZpZXdDb250cm9sbGVyOmFuaW1hdGVk
OmNvbXBsZXRpb246YCBvbiB0aGUgdmlldyBjb250cm9sbGVyIGJlbG93LCBhbmQgY2FsbCB0aGlz
IG5ldyBtZXRob2QKKyAgICAgICAgb24gdGhlIGBUZXN0UnVubmVyV0tXZWJWaWV3YCB3aGVuIGEg
dmlldyBjb250cm9sbGVyIGlzIGZpbmlzaGVkIHByZXNlbnRpbmcuIFdlIG5lZWQgdG8gZG8gdGhp
cyB0byBlbnN1cmUgdGhhdAorICAgICAgICB0aGUgaW5wdXQgdmlldyBwcmVzZW50YXRpb24gY2Fs
bGJhY2tzIGNvbnRpbnVlIHRvIHdvcmsgYWZ0ZXIgYWRvcHRpbmcgYFBVSUNRdWlja2JvYXJkQ29u
dHJvbGxlcmA7IHNlZSBXZWJLaXQKKyAgICAgICAgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW06
CisgICAgICAgICgtW1BsYXRmb3JtV2ViVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9s
bGVyOmFuaW1hdGVkOmNvbXBsZXRpb246XSk6CisKIDIwMjEtMDItMDkgIEpvbmF0aGFuIEJlZGFy
ZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gQ29ycmVjdGx5
IHBhcnNlIGJyYW5jaCBjb21taXRzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0Nv
bmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKaW5kZXggMjk0MmI3YTc0OWRkZjc5ZTA1ZmU1YzMy
YzJkM2Y3ZDRiM2M5ZTE4Zi4uYmEzMmE0NTlmNmE3YTlkZjM3Yjg3NGJlMGMzZTEyYjAxOWI1MTI3
NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvQmFz
ZS54Y2NvbmZpZwpAQCAtMTM2LDQgKzEzNiw0IEBAIFdLX0lTX0NPQ09BX1RPVUNIID0gJChXS19O
T1RfJChXS19FTVBUWV8kKFdLX0NPQ09BX1RPVUNIKSkpOwogCiBIRUFERVJfU0VBUkNIX1BBVEhT
ID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9XZWJDb3JlVGVzdFN1cHBvcnQgJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIp
L0ZvcndhcmRpbmdIZWFkZXJzICQoTkVYVF9ST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJDb3Jl
VGVzdFN1cHBvcnQgJChIRUFERVJfU0VBUkNIX1BBVEhTXyQoV0tfQ09DT0FfVE9VQ0gpKTsKIEhF
QURFUl9TRUFSQ0hfUEFUSFNfID0gOwotSEVBREVSX1NFQVJDSF9QQVRIU19jb2NvYXRvdWNoID0g
JChTUkNST09UKS8uLi8uLi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3M7CitIRUFERVJf
U0VBUkNIX1BBVEhTX2NvY29hdG91Y2ggPSAkKFNSQ1JPT1QpLy4uLy4uL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL2lvcyAkKFNSQ1JPT1QpLy4uLy4uL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
c3BpL3dhdGNob3M7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3Vy
YXRpb25zL1dlYktpdFRlc3RSdW5uZXJBcHAueGNjb25maWcgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0NvbmZpZ3VyYXRpb25zL1dlYktpdFRlc3RSdW5uZXJBcHAueGNjb25maWcKaW5kZXggNTI4
ZjViYTA5NDRlYWE2NzkxODMyMDdiOTdjM2JiNjBmMzJlNDc4My4uNDg4ZGY2NzQ2MjczZmZjMDEy
MWQ4YjFhNTM2YjhkZDRiMGQ4ZDI3YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyQXBwLnhjY29uZmlnCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvV2ViS2l0VGVzdFJ1bm5lckFwcC54Y2Nv
bmZpZwpAQCAtMzEsNiArMzEsNyBAQCBQUk9EVUNUX0JVTkRMRV9JREVOVElGSUVSID0gb3JnLndl
YmtpdC4kKFBST0RVQ1RfTkFNRTpyZmMxMDM0aWRlbnRpZmllcik7CiBHQ0NfRU5BQkxFX09CSkNf
RVhDRVBUSU9OUyA9IFlFUzsKIAogT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbFdlYktp
dFRlc3RSdW5uZXIgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29y
ZSAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWZyYW1ld29y
ayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1ld29yayBVSUtpdCAtZnJhbWV3b3JrIFdl
YktpdCAtZnJhbWV3b3JrIEZvdW5kYXRpb24gLWZyYW1ld29yayBHcmFwaGljc1NlcnZpY2VzOwor
T1RIRVJfTERGTEFHU1tzZGs9d2F0Y2gqXSA9ICQoT1RIRVJfTERGTEFHUykgLWZyYW1ld29yayBQ
ZXBwZXJVSUNvcmUKIAogU1RSSVBfU1RZTEUgPSBkZWJ1Z2dpbmc7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKaW5kZXggZjU3MWU0
ZGRkOGZjODliMzIzMWFkNjA4Nzg4NGRjMjkxMTBlYzVhZS4uMDZhNWE2M2IzZGI5Y2Q5YTQxYjkx
NGFlMmM5OTU4ZmVmOGI1NWRmYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKQEAgLTU0LDYgKzU0LDcgQEAKIC0gKHZvaWQpaW1t
ZWRpYXRlbHlEaXNtaXNzQ29udGV4dE1lbnVJZk5lZWRlZDsKIC0gKHZvaWQpaW5zdGFsbEN1c3Rv
bU1lbnVBY3Rpb246KE5TU3RyaW5nICopbmFtZSBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5OihCT09M
KWRpc21pc3Nlc0F1dG9tYXRpY2FsbHkgY2FsbGJhY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY2FsbGJh
Y2s7CiAKKy0gKHZvaWQpX2RpZFByZXNlbnRWaWV3Q29udHJvbGxlcjooVUlWaWV3Q29udHJvbGxl
ciAqKXZpZXdDb250cm9sbGVyOwogLSAodm9pZCl6b29tVG9TY2FsZTooZG91YmxlKXNjYWxlIGFu
aW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVJldHJpZXZlU3BlYWtTZWxl
Y3Rpb25Db250ZW50V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2RpZEVuZFJvdGF0aW9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCmluZGV4IDU3MDZhN2Ix
MTViNTE0MjRmMmI2NWM4NGNhODFjODA4NDIwMzc4YzguLjcxYTYxNDZhNzdiMWFhMDlkZjEwZTAw
MjBmNTBiZWZjZTRkZDAxMDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KQEAgLTQ5LDYgKzQ5LDEwIEBAIC0gKHZvaWQpX3Nj
aGVkdWxlVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlOwogQGVuZAogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShXQVRDSE9TKQorI2ltcG9ydCAiUGVwcGVyVUlDb3JlU1BJLmgiCisjZW5kaWYKKwogc3Ry
dWN0IEN1c3RvbU1lbnVBY3Rpb25JbmZvIHsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG5hbWU7
CiAgICAgQk9PTCBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5IHsgTk8gfTsKQEAgLTUyNSw2ICs1Mjks
MjUgQEAgLSAoVUlWaWV3ICopY29udGVudFZpZXcKICAgICByZXR1cm4gW3NlbGYgdmFsdWVGb3JL
ZXlQYXRoOkAiX2N1cnJlbnRDb250ZW50VmlldyJdOwogfQogCitzdGF0aWMgYm9vbCBpc1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlcihVSVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlcikKK3sK
KyNpZiBQTEFURk9STShXQVRDSE9TKQorICAgIGlmIChbdmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZD
bGFzczpQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyLmNsYXNzXSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCisgICAgaWYgKFt2aWV3Q29u
dHJvbGxlciBpc0tpbmRPZkNsYXNzOlBVSUNRdWlja2JvYXJkUmVtb3RlVmlld0NvbnRyb2xsZXIu
Y2xhc3NdKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZiAvLyBIQVZFKFFVSUNLQk9BUkRf
Q09OVFJPTExFUikKKyNlbmRpZiAvLyBQTEFURk9STShXQVRDSE9TKQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworLSAodm9pZClfZGlkUHJlc2VudFZpZXdDb250cm9sbGVyOihVSVZpZXdDb250cm9s
bGVyICopdmlld0NvbnRyb2xsZXIKK3sKKyAgICBpZiAoaXNRdWlja2JvYXJkVmlld0NvbnRyb2xs
ZXIodmlld0NvbnRyb2xsZXIpKQorICAgICAgICBbc2VsZiBfaW52b2tlU2hvd0tleWJvYXJkQ2Fs
bGJhY2tJZk5lY2Vzc2FyeV07Cit9CisKICNwcmFnbWEgbWFyayAtIFdLVUlEZWxlZ2F0ZVByaXZh
dGUKIAogLy8gSW4gZXh0cmEgem9vbSBtb2RlLCBmdWxsc2NyZWVuIGZvcm0gY29udHJvbCBVSSB0
YWtlcyBvbiB0aGUgc2FtZSByb2xlIGFzIGtleWJvYXJkcyBhbmQgaW5wdXQgdmlldyBjb250cm9s
bGVycwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJW
aWV3SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9T
Lm1tCmluZGV4IGY1NDhjZDExMDlhNjE4OWU0MWZkODQ3ZWExMTA1NmM1NzQ3NThhYjcuLjAyMTEx
MWNlMTQ1NDVkMDAwNDQ5Y2QyZjljMDA0MzU1MjNhY2ZiYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+
CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgpAQCAtMTc1
LDYgKzE3NiwxOSBAQCAtICh2b2lkKXZpZXdXaWxsVHJhbnNpdGlvblRvU2l6ZTooQ0dTaXplKXRv
U2l6ZSB3aXRoVHJhbnNpdGlvbkNvb3JkaW5hdG9yOihpZCA8VQogICAgIH1dOwogfQogCistICh2
b2lkKXByZXNlbnRWaWV3Q29udHJvbGxlcjooVUlWaWV3Q29udHJvbGxlciAqKXZpZXdDb250cm9s
bGVyIGFuaW1hdGVkOihCT09MKWFuaW1hdGVkIGNvbXBsZXRpb246KHZvaWQoXikodm9pZCkpY29t
cGxldGlvbgoreworICAgIGF1dG8gd2Vha1dlYlZpZXcgPSBXZWFrT2JqQ1B0cjxUZXN0UnVubmVy
V0tXZWJWaWV3PihXVFI6OlRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygp
LT5wbGF0Zm9ybVZpZXcoKSk7CisgICAgW3N1cGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjp2aWV3
Q29udHJvbGxlciBhbmltYXRlZDphbmltYXRlZCBjb21wbGV0aW9uOlt3ZWFrV2ViVmlldywgY29t
cGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKSwgdmlld0NvbnRyb2xsZXIgPSByZXRh
aW5QdHIodmlld0NvbnRyb2xsZXIpXSB7CisgICAgICAgIGlmIChjb21wbGV0aW9uKQorICAgICAg
ICAgICAgY29tcGxldGlvbigpOworCisgICAgICAgIGF1dG8gc3Ryb25nV2ViVmlldyA9IHdlYWtX
ZWJWaWV3LmdldCgpOworICAgICAgICBpZiAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgPT0gc3Ryb25nV2ViVmlldykKKyAgICAg
ICAgICAgIFtzdHJvbmdXZWJWaWV3IF9kaWRQcmVzZW50Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRy
b2xsZXIuZ2V0KCldOworICAgIH1dOworfQorCiBAZW5kCiAKIG5hbWVzcGFjZSBXVFIgewpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDczOTFjNmYwODFhOTQ3MTNjZGZkYjAwNjFjN2MwMzg5OTY1NmY5NjcuLmNmY2QwNzczNGM5
MTBjZWVjMDE1MDI4YWUyMmMyNGIzMTQyYTJmYTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
MS0wMi0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBbd2F0Y2hPU10gQWRvcHQgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGZvciB0ZXh0IGlucHV0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2NDkK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEVuYWJsZSBgUXVp
Y2tib2FyZENvbnRyb2xsZXJGb3JUZXh0SW5wdXRFbmFibGVkYCwgb24gcmVsZXZhbnQgdmVyc2lv
bnMgb2Ygd2F0Y2hPUy4KKworICAgICAgICAqIGZhc3QvZm9ybXMvd2F0Y2hvcy9kZWxldGUtY29u
dGVudC1pbi10ZXh0LWZpZWxkLmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy93YXRjaG9zL2Vk
aXQtdGV4dC1maWVsZC1jYWxscy1pbmplY3RlZC1idW5kbGUuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2Zvcm1zL3dhdGNob3MvZm9ybS1jb250cm9sLWxhYmVsLXRleHQuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3dhdGNob3MvdGltZS1waWNrZXItdmFsdWUtY2hhbmdlLmh0bWw6CisgICAgICAg
ICogZmFzdC9mb3Jtcy93YXRjaG9zL3VzZXJuYW1lLXRleHQtY29udGVudC10eXBlLmh0bWw6CisK
IDIwMjEtMDItMDkgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjI3MTY2MCk6IFVuYWJsZSB0byBpbnRlcmFjdCB3aXRoIHBhZ2Ug
YWZ0ZXIgbG9uZy1wcmVzc2luZyBpbWFnZSBvbiBpbWFnZXMuZ29vZ2xlLmNvbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93YXRjaG9zL2RlbGV0ZS1jb250ZW50LWluLXRleHQt
ZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy9kZWxldGUtY29udGVu
dC1pbi10ZXh0LWZpZWxkLmh0bWwKaW5kZXggYTAwYTljMDZjYjYzNDdhMzg2ZmYwNmZjZmZiMmVj
NGY0MzZiNGQ0Mi4uZjYxNzU1NDAzZTZiZDU1YjA0MjBmNDY0ZmM3ZmNjNWU1NmVjMWQ1ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93YXRjaG9zL2RlbGV0ZS1jb250ZW50LWlu
LXRleHQtZmllbGQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dhdGNob3MvZGVs
ZXRlLWNvbnRlbnQtaW4tdGV4dC1maWVsZC5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBF
IGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVl
IF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4
aWJsZVZpZXdwb3J0PXRydWUgUXVpY2tib2FyZENvbnRyb2xsZXJGb3JUZXh0SW5wdXRFbmFibGVk
PXRydWUgXSAtLT4KIDxodG1sPgogPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRo
PWRldmljZS13aWR0aCI+CiA8aGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvd2F0Y2hvcy9lZGl0LXRleHQtZmllbGQtY2FsbHMtaW5qZWN0ZWQtYnVuZGxlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dhdGNob3MvZWRpdC10ZXh0LWZpZWxkLWNhbGxzLWluamVj
dGVkLWJ1bmRsZS5odG1sCmluZGV4IDEyMmVlMGU5OTczNDhjOWE4MGRkZjRiZDkyYTBiZGMxMGY2
MWZiYTcuLjhhOTU1N2NlNmIyNTliMWI4M2Q2ZGYwYTEyOWUzYTZkOTc5OTE0M2YgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy9lZGl0LXRleHQtZmllbGQtY2FsbHMt
aW5qZWN0ZWQtYnVuZGxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93YXRjaG9z
L2VkaXQtdGV4dC1maWVsZC1jYWxscy1pbmplY3RlZC1idW5kbGUuaHRtbApAQCAtMSw0ICsxLDQg
QEAKLTwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxl
Vmlld3BvcnQ9dHJ1ZSBdIC0tPgorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIFF1aWNrYm9hcmRDb250cm9sbGVyRm9yVGV4
dElucHV0RW5hYmxlZD10cnVlIF0gLS0+CiA8aHRtbD4KIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogPGhlYWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3dhdGNob3MvZm9ybS1jb250cm9sLWxhYmVsLXRleHQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy9mb3JtLWNvbnRyb2wtbGFiZWwtdGV4dC5odG1s
CmluZGV4IDgwOGEzMmY5YWQyNWVhOTJjZDkzOWY1OTU3ZWVlZTE4OGJlNzgzOTguLjFiNGExNmEy
YTlmNmQ5NGQ4NjQ2ZjU0YzU0NmQxNjc3OGE0NGQwN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvd2F0Y2hvcy9mb3JtLWNvbnRyb2wtbGFiZWwtdGV4dC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy9mb3JtLWNvbnRyb2wtbGFiZWwtdGV4dC5odG1s
CkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgUXVpY2tib2FyZENv
bnRyb2xsZXJGb3JUZXh0SW5wdXRFbmFibGVkPXRydWUgXSAtLT4KIDxodG1sPgogPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCI+CiA8aGVhZD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy90aW1lLXBpY2tlci12YWx1ZS1j
aGFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy90aW1lLXBpY2tlci12
YWx1ZS1jaGFuZ2UuaHRtbAppbmRleCA4MzFiODYwN2EyOWNjNjliNDFlNTAwZjg2YzNlZDFlNjcw
ZmFhNzI1Li43ZTVhZmQyZTA4YThkMGYyZjU3ODliM2NiMWVhODJjNGQwN2UyNmQ1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3dhdGNob3MvdGltZS1waWNrZXItdmFsdWUtY2hh
bmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93YXRjaG9zL3RpbWUtcGlja2Vy
LXZhbHVlLWNoYW5nZS5odG1sCkBAIC0xLDQgKzEsNCBAQAotPCFET0NUWVBFIGh0bWw+IDwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIF0gLS0+Cis8IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0
PXRydWUgUXVpY2tib2FyZENvbnRyb2xsZXJGb3JUZXh0SW5wdXRFbmFibGVkPXRydWUgXSAtLT4K
IDxodG1sPgogPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCI+CiA8aGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvd2F0Y2hvcy91
c2VybmFtZS10ZXh0LWNvbnRlbnQtdHlwZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93
YXRjaG9zL3VzZXJuYW1lLXRleHQtY29udGVudC10eXBlLmh0bWwKaW5kZXggYTFjNGY3MDU5YzEy
YjRlZTEzNjEyMTI5Mzg4YTZjNTliZTY0ZDEwMC4uZmMzODk0ZDk4NDE3OGU5N2I4YzI4OTZhOTM5
OGIzMDY2ZjU5NjM3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy93YXRjaG9z
L3VzZXJuYW1lLXRleHQtY29udGVudC10eXBlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy93YXRjaG9zL3VzZXJuYW1lLXRleHQtY29udGVudC10eXBlLmh0bWwKQEAgLTEsNCArMSw0
IEBACi08IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgXSAtLT4KKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBRdWlja2JvYXJkQ29udHJvbGxlckZvclRl
eHRJbnB1dEVuYWJsZWQ9dHJ1ZSBdIC0tPgogPGh0bWw+CiA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoIj4KIDxoZWFkPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>