<?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>236415</bug_id>
          
          <creation_ts>2022-02-09 16:28:22 -0800</creation_ts>
          <short_desc>[iOS] Add support for a &quot;markup image&quot; item in the callout bar when selecting a single image</short_desc>
          <delta_ts>2022-02-11 09:03:11 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236403</dependson>
    
    <dependson>236406</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>bdakin</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1839449</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-09 16:28:22 -0800</bug_when>
    <thetext>rdar://88714333</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839494</commentid>
    <comment_count>1</comment_count>
      <attachid>451478</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-09 18:35:49 -0800</bug_when>
    <thetext>Created attachment 451478
Depends on #236406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839761</commentid>
    <comment_count>2</comment_count>
      <attachid>451563</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-10 10:12:15 -0800</bug_when>
    <thetext>Created attachment 451563
Depends on #236406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839849</commentid>
    <comment_count>3</comment_count>
      <attachid>451585</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-10 11:37:15 -0800</bug_when>
    <thetext>Created attachment 451585
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839983</commentid>
    <comment_count>4</comment_count>
      <attachid>451608</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-10 15:01:45 -0800</bug_when>
    <thetext>Created attachment 451608
Fix iOS 15 build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840047</commentid>
    <comment_count>5</comment_count>
      <attachid>451619</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-10 16:44:23 -0800</bug_when>
    <thetext>Created attachment 451619
Actually fix iOS 15 build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840143</commentid>
    <comment_count>6</comment_count>
      <attachid>451619</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-02-10 20:02:03 -0800</bug_when>
    <thetext>Comment on attachment 451619
Actually fix iOS 15 build

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

&gt; Source/WebKit/ChangeLog:100
&gt; +        well, which does use custo menu items.

&quot;custo&quot;

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:248
&gt; +struct ImageAnalysisMarkupResults {

Consider `ImageAnalysisMarkupData` or `ImageAnalysisMarkupInformation`, since this really represents a single &quot;result&quot;.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:250
&gt; +    RetainPtr&lt;CGImageRef&gt; result;

Consider renaming to `image`. That name is used below when unpacking this struct.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:376
&gt; +static RetainPtr&lt;NSData&gt; transcode(CGImageRef image, CFStringRef typeIdentifier)

This helper can probably be reused in `provideDataForItem:` further down in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840363</commentid>
    <comment_count>7</comment_count>
      <attachid>451619</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-11 08:00:42 -0800</bug_when>
    <thetext>Comment on attachment 451619
Actually fix iOS 15 build

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

Thanks for the review!

&gt;&gt; Source/WebKit/ChangeLog:100
&gt;&gt; +        well, which does use custo menu items.
&gt; 
&gt; &quot;custo&quot;

Fixed!

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:248
&gt;&gt; +struct ImageAnalysisMarkupResults {
&gt; 
&gt; Consider `ImageAnalysisMarkupData` or `ImageAnalysisMarkupInformation`, since this really represents a single &quot;result&quot;.

Makes sense! Renamed to `ImageAnalysisMarkupData` (and renamed the corresponding ivar to `_imageAnalysisMarkupData`).

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:250
&gt;&gt; +    RetainPtr&lt;CGImageRef&gt; result;
&gt; 
&gt; Consider renaming to `image`. That name is used below when unpacking this struct.

👍🏻 Renamed to `image`.

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:376
&gt;&gt; +static RetainPtr&lt;NSData&gt; transcode(CGImageRef image, CFStringRef typeIdentifier)
&gt; 
&gt; This helper can probably be reused in `provideDataForItem:` further down in this file.

Hm…I think this patch already adjusts `-provideDataForItem:` to use this new helper function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840365</commentid>
    <comment_count>8</comment_count>
      <attachid>451699</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-11 08:06:59 -0800</bug_when>
    <thetext>Created attachment 451699
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840376</commentid>
    <comment_count>9</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-02-11 08:44:20 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #7)
&gt; Comment on attachment 451619 [details]
&gt; Actually fix iOS 15 build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451619&amp;action=review
&gt; 
&gt; Thanks for the review!
&gt; 
&gt; &gt;&gt; Source/WebKit/ChangeLog:100
&gt; &gt;&gt; +        well, which does use custo menu items.
&gt; &gt; 
&gt; &gt; &quot;custo&quot;
&gt; 
&gt; Fixed!
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:248
&gt; &gt;&gt; +struct ImageAnalysisMarkupResults {
&gt; &gt; 
&gt; &gt; Consider `ImageAnalysisMarkupData` or `ImageAnalysisMarkupInformation`, since this really represents a single &quot;result&quot;.
&gt; 
&gt; Makes sense! Renamed to `ImageAnalysisMarkupData` (and renamed the
&gt; corresponding ivar to `_imageAnalysisMarkupData`).
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:250
&gt; &gt;&gt; +    RetainPtr&lt;CGImageRef&gt; result;
&gt; &gt; 
&gt; &gt; Consider renaming to `image`. That name is used below when unpacking this struct.
&gt; 
&gt; 👍🏻 Renamed to `image`.
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:376
&gt; &gt;&gt; +static RetainPtr&lt;NSData&gt; transcode(CGImageRef image, CFStringRef typeIdentifier)
&gt; &gt; 
&gt; &gt; This helper can probably be reused in `provideDataForItem:` further down in this file.
&gt; 
&gt; Hm…I think this patch already adjusts `-provideDataForItem:` to use this new
&gt; helper function?

👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840385</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-11 09:03:08 -0800</bug_when>
    <thetext>Committed r289623 (247134@main): &lt;https://commits.webkit.org/247134@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451699.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451478</attachid>
            <date>2022-02-09 18:35:49 -0800</date>
            <delta_ts>2022-02-10 10:12:14 -0800</delta_ts>
            <desc>Depends on #236406</desc>
            <filename>bug-236415-20220209183548.patch</filename>
            <type>text/plain</type>
            <size>33743</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc0YjJiNWVmM2ZkNTI2
YTgwZWM4MjhjNDdmNjJiNGY2MDY2YzFiNS4uYjQwMDI1OWY1MDU0M2E1Yzc2YzdlZjZiNDkxYzM2
YWUwMzI3NDM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBz
dXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNhbGxvdXQgYmFyIHdoZW4g
c2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4NzE0MzMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IGEgY291cGxl
IG9mIGZ1bmN0aW9uczsgc2VlIFdlYktpdC9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAyMi0wMi0wOSAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBXS1dlYlZpZXc6IFdLVVJMU2NoZW1l
SGFuZGxlciDigJxyZXF1ZXN0IHRvIHRoZSBlbmQgb2YgdGhlIHJlc291cmNl4oCdIHByb2R1Y2Vz
IGFuIGludmFsaWQgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3YTcwYjk0OGZlMDc0MDY4NGJiNDhhMTcy
YjNjM2NhMDExOTIwOTguLmY4ODdjOTVmMDNmOGU0YWE4NWFlMDY2ZjQyYzI0MDBkNDA4NGZkNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIzIEBACisyMDIyLTAyLTEwICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciBh
ICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNhbGxvdXQgYmFyIHdoZW4gc2VsZWN0aW5nIGEg
c2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4NzE0MzMzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBv
cnQgZm9yIGEgbmV3ICJNYXJrdXAgSW1hZ2UiIGNhbGxvdXQgbWVudSBpdGVtLCB3aGljaCBpcyBv
bmx5IHNob3duIHdoZW4gdGhlIHVzZXIgaGFzCisgICAgICAgIHNlbGVjdGVkIGV4YWN0bHkgb25l
IGltYWdlLiBJZiB0aGUgaW1hZ2UgaXMgc3VpdGFibGUgZm9yICJNYXJrdXAgSW1hZ2UiICh0aGF0
IGlzLCB0aGUgcmVsZXZhbnQgVmlzaW9uS2l0IEFQSQorICAgICAgICByZXR1cm5zIGEgbm9uLW51
bGwgaW1hZ2UpLCB0aGVuIHdlIHNob3cgYSBuZXcgaXRlbSBpbiB0aGUgY2FsbG91dCBiYXIgd2hp
Y2gsIHdoZW4gYWN0aXZhdGVkLCByZXBsYWNlcyB0aGUKKyAgICAgICAgY3VycmVudCBzZWxlY3Rp
b24gd2l0aCB0aGUgaW1hZ2UgcmV0dXJuZWQgYnkgdGhlIGFmb3JlbWVudGlvbmVkIFZpc2lvbktp
dCBBUEkuCisKKyAgICAgICAgU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMubW06CisgICAgICAgIChXZWJL
aXQ6OmlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3RlbUZlYXR1cmVFbmFibGVkKToKKworICAgICAg
ICBBZGQgYSBuZXcgaGVscGVyIG1ldGhvZCB0byByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGNv
cnJlc3BvbmRpbmcgc3lzdGVtIGZlYXR1cmUgZmxhZyBpcyBlbmFibGVkLgorCisgICAgICAgICog
U2hhcmVkL0VkaXRvclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBv
c3RMYXlvdXREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0
ZTo6UG9zdExheW91dERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRl
Lmg6CisKKyAgICAgICAgQWRkIGFuIG9wdGlvbmFsIGBFbGVtZW50Q29udGV4dGAgdGhhdCdzIHBv
cHVsYXRlZCBvbmx5IGlmIHRoZSB1c2VyJ3Mgc2VsZWN0aW9uIHNwYW5zIGEgc2luZ2xlIEhUTUxJ
bWFnZUVsZW1lbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1Mu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBkaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW1hZ2VCaXRtYXApOgorCisgICAgICAgIEFkZCBhIG5ldyBhc3luYyBJUEMgbWVz
c2FnZSB0aGF0IGFsbG93cyB0aGUgVUkgcHJvY2VzcyB0byBncmFiIGEgU2hhcmVhYmxlQml0bWFw
IGhhbmRsZSAoYWxvbmcgd2l0aCB0aGUgTUlNRQorICAgICAgICB0eXBlIG9mIHRoZSBzb3VyY2Ug
aW1hZ2UpIGdpdmVuIGFuIEVsZW1lbnRDb250ZXh0IHRoYXQgaWRlbnRpZmllcyBhbiBpbWFnZSBl
bGVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisKKyAgICAgICAgQ2Fj
aGUgdGhlIGxhc3QgcmVzdWx0IGZyb20gcmVxdWVzdGluZyAiSW1hZ2UgTWFya3VwIiBkYXRhIGZy
b20gVmlzaW9uS2l0IGluIGBfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHNgLCBhbmQKKyAgICAg
ICAgdXNlIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBpbnZva2luZyB0aGUgbmV3IHNlbGVjdG9yLCBg
LXBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOmAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2Rl
KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRoYXQgdGFrZXMgYSBDR0ltYWdlUmVm
LCB0cmFuc2NvZGVzIGl0IHRvIHRoZSBnaXZlbiB1bmlmb3JtIHR5cGUgaWRlbnRpZmllciwgYW5k
IGZpbmFsbHkKKyAgICAgICAgcmV0dXJucyBhIGJsb2Igb2YgaW1hZ2UgZGF0YS4gVXNlZCBieSB0
aGUgdHdvIG5ldyBjYWxsIHNpdGVzIGZvciBJbWFnZSBNYXJrdXAgYmVsb3csIGFzIHdlbGwgYXMg
YW4gZXhpc3RpbmcgY2FsbAorICAgICAgICBzaXRlIGZvciBWaXN1YWwgTG9vayBVcCBpbiBgLXBy
b3ZpZGVEYXRhRm9ySXRlbTpgCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0YXJnZXRGb3JB
Y3Rpb246d2l0aFNlbmRlcjpdKToKKworICAgICAgICBBZGQgYSBjaGVjayBmb3IgdGhlIG5ldyBJ
bWFnZSBNYXJrdXAgYWN0aW9uIHNlbGVjdG9yLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
cmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5k
bGVyOl0pOgorCisgICAgICAgIFVzZSB0aGlzIGV4aXN0aW5nIFVJS2l0IGRlbGVnYXRlIGhvb2sg
dG8gZGVmZXIgY2FsbG91dCBiYXIgcHJlc2VudGF0aW9uIG9ubHkgaW4gdGhlIGNhc2Ugd2hlcmUg
YSBzaW5nbGUgaW1hZ2UKKyAgICAgICAgZWxlbWVudCBpcyBzZWxlY3RlZCwgc3VjaCB0aGF0IHdl
IG9ubHkgc2hvdyB0aGUgY2FsbG91dCBiYXIgaW4gdGhpcyBzY2VuYXJpbyBvbmNlIFZpc2lvbktp
dCBoYXMgZGV0ZXJtaW5lZAorICAgICAgICB3aGV0aGVyIG9yIG5vdCB0aGUgIkltYWdlIE1hcmt1
cCIgYWN0aW9uIGlzIHN1aXRhYmxlIGZvciB0aGUgZGF0YSBvZiB0aGUgc2VsZWN0ZWQgaW1hZ2Uu
CisKKyAgICAgICAgVGhlIGluaXRpYWwgcHVycG9zZSBvZiB0aGlzIGRlbGVnYXRlIGhvb2sgd2Fz
IHRvIGFsbG93IFdlYktpdCB0byBkZWZlciBjYWxsb3V0IGJhciBwcmVzZW50YXRpb24gZm9yIGEg
c2hvcnQsCisgICAgICAgIGhhcmQtY29kZWQgZGVsYXkgdG8gd2FpdCBmb3IgdGhlIHdlYiBwYWdl
IHRvIGxheW91dCBvdXQgb3IgYWRkIGNsaWNrYWJsZSBpdGVtcyB0aGF0IG1pZ2h0IHVuZGVybGFw
IHRoZSBjYWxsb3V0CisgICAgICAgIGJhcjsgYXMgc3VjaCwgd2Ugc3RpbGwgcGVyZm9ybSB0aGlz
IGxvZ2ljIHdpdGggYSBoYXJkLWNvZGVkIGRlbGF5IG9mIDI1MCBtcyAoaW5jbHVkaW5nIHdoYXRl
dmVyIHRpbWUgd2FzIHRha2VuCisgICAgICAgIGR1cmluZyBpbWFnZSBhbmFseXNpcykuCisKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBpbWFnZUFuYWx5c2lzTWFya3VwTWVudUl0ZW1zXSk6CisK
KyAgICAgICAgUmV0dXJuIHRoZSBuZXcgbWVudSBpdGVtIG9ubHkgaWYgdGhlIHN5c3RlbSBmZWF0
dXJlIGZsYWcgaXMgZW5hYmxlZCwgYW5kIHdlJ3ZlIHNlbGVjdGVkIGFuIGVkaXRhYmxlIGltYWdl
LiBOb3RlCisgICAgICAgIHRoYXQgdGhpcyBpbnRlbnRpb25hbGx5IGRvZXMgbm90IGNvbnN1bHQg
YF9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0c2AgdG8gZW5zdXJlIHRoYXQgdGhlIHN0YXRlIG9m
IGFkZGl0aW9uYWwKKyAgICAgICAgbWVudSBpdGVtcyBpbiB0aGUgc2hhcmVkIG1lbnUgY29udHJv
bGxlciBpcyBjb25zaXN0ZW50IGJldHdlZW4gTWFya3VwIEltYWdlIGFuZCBRdWljayBOb3RlLCBh
bmQgdXBkYXRlZCBpbiB0aGUKKyAgICAgICAgc2FtZSBsaWZlY3ljbGUgYXMgZWRpdG9yIHN0YXRl
IHVwZGF0ZXMuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtSW1hZ2VBbmFs
eXNpc01hcmt1cF0pOgorCisgICAgICAgIFRoaXMgaXMgY29uc3VsdGVkIHdoZW4gd2UncmUgYWN0
dWFsbHkgYWJvdXQgdG8gc2hvdyB0aGUgY2FsbG91dCBiYXIgYWN0aW9uIGZvciAiSW1hZ2UgTWFy
a3VwIiAoaW1wb3J0YW50bHksCisgICAgICAgIGFmdGVyIGNhbGxvdXQgYmFyIHByZXNlbnRhdGlv
biBkZWZlcnJhbCksIGFuZCBkZXBlbmRzIG9uIHRoZSBzdGF0ZSBvZiBgX2ltYWdlQW5hbHlzaXNN
YXJrdXBSZXN1bHRzYC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHBlcmZvcm1JbWFnZUFu
YWx5c2lzTWFya3VwOl0pOgorCisgICAgICAgIEFkZCBsb2dpYyB0byBoYW5kbGUgdGhlIG5ldyBh
Y3Rpb24gYnkgY2FsbGluZyBpbnRvIFdlYlBhZ2VQcm94eSB0byAoYmFzaWNhbGx5KSBwYXN0ZSB0
aGUgbW9kaWZpZWQgaW1hZ2UgZGF0YQorICAgICAgICBhZnRlciB0cmFuc2NvZGluZyBpdCB0byBt
YXRjaCB0aGUgaW1hZ2UgZWxlbWVudCdzIG9yaWdpbmFsIHNvdXJjZSB0eXBlLiBBZnRlciAjMjM2
NDA2LCB0aGlzIGNvZGVwYXRoIGlzIG5vdworICAgICAgICBhdmFpbGFibGUgb24gYWxsIENvY29h
IHBsYXRmb3JtcyAoYXMgb3Bwb3NlZCB0byBtYWNPUy1vbmx5KS4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGRvQWZ0ZXJDb21wdXRpbmdJbWFnZUFuYWx5c2lzUmVzdWx0c0Zvck1hcmt1cDpd
KToKKworICAgICAgICBVc2UgdGhlIG5ldyBgcmVxdWVzdEltYWdlQml0bWFwYCBJUEMgbWVzc2Fn
ZSB0byBncmFiIGEgYml0bWFwIGZvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGltYWdlLCBjYWxs
IG91dCB0bworICAgICAgICBWaXNpb25LaXQgdG8gcGVyZm9ybSBpbWFnZSBhbmFseXNpcywgYW5k
IHRoZW4gY2FjaGUgdGhlIHJlc3VsdGluZyBpbWFnZS4gQWZ0ZXIgYWxsIG9mIHRoaXMgaXMgZG9u
ZSwgd2UgcHJvY2VlZAorICAgICAgICB3aXRoIHNob3dpbmcgdGhlIGNhbGxvdXQgYmFyLgorCisg
ICAgICAgIEluIGEgZm9sbG93dXAsIHdlIHNob3VsZCBlbmZvcmNlIHNvbWUgKHJlYXNvbmFibGUp
IHVwcGVyIGJvdW5kIG9uIHRoZSBhbW91bnQgb2YgdGltZSBieSB3aGljaCB0aGUgY2FsbG91dCBi
YXIKKyAgICAgICAgY2FuIGJlIGRlbGF5ZWQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
c2VsZWN0aW9uQ2hhbmdlZF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldFVwQWRkaXRp
b25hbE1lbnVDb250cm9sbGVyQWN0aW9uc10pOgorCisgICAgICAgIFJlZmFjdG9yIGV4aXN0aW5n
IGxvZ2ljIGZvciBzdXBwbHlpbmcgYWRkaXRpb25hbCBjYWxsb3V0IGJhciBtZW51IGl0ZW1zLCBz
dWNoIHRoYXQgd2UgaW5zZXJ0IGl0ZW1zIChpZiBuZWVkZWQpCisgICAgICAgIGZvciBib3RoIFF1
aWNrIE5vdGUgYXMgd2VsbCBhcyBJbWFnZSBNYXJrdXAuCisKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBhcHBIaWdobGlnaHRNZW51SXRlbXNdKToKKworICAgICAgICBNYWtlIHRoaXMgcmV0dXJu
IGFuIGFycmF5IG9mIFVJTWVudUl0ZW1zLCB3aGljaCBhcmUgdGhlbiBjb21iaW5lZCB3aXRoIGFu
eSBtYXJrdXAgbWVudSBpdGVtcyB3aGVuIHNldHRpbmcgY3VzdG9tCisgICAgICAgIGl0ZW1zIG9u
IHRoZSBzaGFyZWQgbWVudSBjb250cm9sbGVyLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
cHJvdmlkZURhdGFGb3JJdGVtOl0pOgorCisgICAgICAgIEFkanVzdCB0aGlzIHRvIHVzZSB0aGUg
bmV3IGB0cmFuc2NvZGVgIGhlbHBlciBmdW5jdGlvbiwgZGVjbGFyZWQgYWJvdmUuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfc2V0VXBJbWFnZUFuYWx5c2lzXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX3RlYXJEb3duSW1hZ2VBbmFseXNpc10pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IHNldFVwQXBwSGlnaGxpZ2h0TWVudXNJZk5lZWRlZF0pOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cmVxdWVzdEltYWdlQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisK
KyAgICAgICAgQ29tcHV0ZSBhbmQgcG9wdWxhdGUgdGhlIG5ldyBgc2VsZWN0ZWRFZGl0YWJsZUlt
YWdlYCBlbGVtZW50IGNvbnRleHQ7IHRvIGFjaGlldmUgdGhpcywgd2UgdXNlIGBUZXh0SXRlcmF0
b3JgIHRvCisgICAgICAgIHNjYW4gZm9yIGFuIGltYWdlIGVsZW1lbnQsIGFuZCBiYWlsIGltbWVk
aWF0ZWx5IGlmIHdlIGVpdGhlciBmaW5kIGFueXRoaW5nIHRoYXQgaXMgbm90IGFuIGltYWdlLCBv
ciBmaW5kIG1vcmUKKyAgICAgICAgdGhhbiBvbmUgaW1hZ2UuCisKIDIwMjItMDItMDkgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBgV2Vi
UGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKClgIG9uIGlPUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggOWM3M2NlMmI2Zjgw
ZjFjMWRmNWM0N2Y3MjYxNDRkODNiN2I4NDE0Zi4uNDdlYTk4OWU5NmMzMDA0YWZjMzg4Y2FhN2Jh
ZjcwZDdiMmM2YmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogICAgIEltYWdlT2JzZXJ2ZXIqIGltYWdlT2Jz
ZXJ2ZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlT2JzZXJ2ZXI7IH0KICAgICB2b2lkIHNldElt
YWdlT2JzZXJ2ZXIoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9pbWFnZU9ic2VydmVyID0g
b2JzZXJ2ZXI7IH0KICAgICBVUkwgc291cmNlVVJMKCkgY29uc3Q7Ci0gICAgU3RyaW5nIG1pbWVU
eXBlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG1pbWVUeXBlKCkgY29uc3Q7
CiAgICAgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNvbnN0OwogCiAgICAgZW51
bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3VuZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGls
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lz
dHJ5LmgKaW5kZXggNGIwMTVhZmM5NWNhZjIzMDg2YTFjYmI2MWUzZTU2NGY3N2QwYjliYi4uMTRh
YjIyYjRjYzI4ZTc1MWRhNWEyODM2Yzc3M2I3ZjRlM2M5MTc3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCkBAIC0zNCw3ICszNCw3
IEBAIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+
JiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlCiBIYXNoU2V0PFN0cmluZz4mIGFkZGl0aW9uYWxT
dXBwb3J0ZWRJbWFnZVR5cGVzKCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFkZGl0aW9uYWxT
dXBwb3J0ZWRJbWFnZVR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhjb25zdCBT
dHJpbmcmKTsKLWJvb2wgaXNTdXBwb3J0ZWRJbWFnZVR5cGUoY29uc3QgU3RyaW5nJik7CitXRUJD
T1JFX0VYUE9SVCBib29sIGlzU3VwcG9ydGVkSW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYpOwogYm9v
bCBpc0dJRkltYWdlVHlwZShTdHJpbmdWaWV3KTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmgKaW5kZXggM2Ey
MzZhMjRjZGM4OTA0NDNmNGQ5MmI1YzZkYzA4N2JmYWY1ZmNiYi4uYWY3NTg4ZWI0MmExMTE5Mjkx
ZGE4ZjE4ZWQyZDhiYWFkMjEzMDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oCkBAIC01MCw2ICs1MCw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogYm9vbCBpc0xpdmVUZXh0QXZhaWxhYmxlQW5kRW5hYmxlZCgp
OwogYm9vbCB0ZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHNTeXN0ZW1GZWF0dXJlRW5hYmxlZCgp
OwogYm9vbCBpbWFnZUFuYWx5c2lzUXVldWVTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpOworYm9vbCBp
c0ltYWdlQW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpOwogCiBXZWJDb3JlOjpU
ZXh0UmVjb2duaXRpb25SZXN1bHQgbWFrZVRleHRSZWNvZ25pdGlvblJlc3VsdChDb2NvYUltYWdl
QW5hbHlzaXMgKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2Ev
VGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMubW0KaW5kZXggMDlmNDU3MjI5YTQwZTc0Y2I3NDZj
MGViZDYzZjNlZWE4ZmU3NzM2ZC4uNzFiMmUyNjIzMDY2NTk0OWQ4NWU0NWIyY2JmY2JlMDJlZjZj
NWExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2du
aXRpb25VdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9UZXh0
UmVjb2duaXRpb25VdGlsaXRpZXMubW0KQEAgLTE1MSw2ICsxNTEsMTUgQEAgYm9vbCBpbWFnZUFu
YWx5c2lzUXVldWVTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpCiAjZW5kaWYKIH0KIAorYm9vbCBpc0lt
YWdlQW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpCit7CisjaWYgRU5BQkxFKElN
QUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKICNlbmRpZgogCiBib29sIGlzTGl2ZVRleHRBdmFp
bGFibGVBbmRFbmFibGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRv
clN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcAppbmRleCA2
N2JkNmYxMmE1NTQ3MTg5ODQxMzQ2Y2RiNzVhODU1MDVmZjY3MDFhLi4zYzJhZTRlZWI1M2MzNzg2
N2EyMTJmNmVmMGRlNWVkN2FkNjgwOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FZGl0b3JTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUu
Y3BwCkBAIC0xNDUsNiArMTQ1LDcgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBjYXJl
dENvbG9yOwogICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uU3RhcnRJc0F0UGFyYWdyYXBoQm91bmRh
cnk7CiAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25FbmRJc0F0UGFyYWdyYXBoQm91bmRhcnk7Cisg
ICAgZW5jb2RlciA8PCBzZWxlY3RlZEVkaXRhYmxlSW1hZ2U7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25Cb3VuZGluZ1JlY3Q7CkBAIC0yMjgsNiAr
MjI5LDggQEAgYm9vbCBFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIFBvc3RMYXlvdXREYXRhJgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0aW9uRW5kSXNBdFBhcmFncmFwaEJv
dW5kYXJ5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnNlbGVjdGVkRWRpdGFibGVJbWFnZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5z
ZWxlY3Rpb25Cb3VuZGluZ1JlY3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
RWRpdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKaW5kZXgg
ZDI3Yjk1OTJhMTQ4NDFkZTBhNDEwMTRmNmQwNWQ3ZTY1NTU1ZDI0Ny4uMTMxZjllODEyMDdiOTE4
ZTNhMmEyZTUzZjhlODYzYzZlODRjNmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyVHlwZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udEF0dHJp
YnV0ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1dyaXRpbmdEaXJlY3Rpb24uaD4KQEAgLTEyNCw2ICsxMjUsNyBAQCBzdHJ1Y3QgRWRpdG9yU3Rh
dGUgewogICAgICAgICBib29sIGF0U3RhcnRPZlNlbnRlbmNlIHsgZmFsc2UgfTsKICAgICAgICAg
Ym9vbCBzZWxlY3Rpb25TdGFydElzQXRQYXJhZ3JhcGhCb3VuZGFyeSB7IGZhbHNlIH07CiAgICAg
ICAgIGJvb2wgc2VsZWN0aW9uRW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5IHsgZmFsc2UgfTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4gc2VsZWN0ZWRFZGl0
YWJsZUltYWdlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBXZWJDb3JlOjpJ
bnRSZWN0IHNlbGVjdGlvbkJvdW5kaW5nUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggYmFmNWIwYzk5ZDAxZjZjODFhNzUxZWY4
YTA4ZWM2ZGJkYTU0OTNmZC4uNzRlNzhlZDg4NjM0ZTg4ZGNhOGE3ZGUxMTYyMDM5YTEyMDkxZmZi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1Mu
bW0KQEAgLTE1MjgsOSArMTUyOCw3IEBAIC0gKHZvaWQpZGlkTW92ZVRvV2luZG93CiAgICAgX3Bh
Z2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6YWxsRmxh
Z3MoKSk7CiAgICAgX3BhZ2UtPndlYlZpZXdEaWRNb3ZlVG9XaW5kb3coKTsKIAotI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKLSAgICBbX2NvbnRlbnRWaWV3IHNldFVwQXBwSGlnaGxpZ2h0TWVu
dXNJZk5lZWRlZF07Ci0jZW5kaWYKKyAgICBbX2NvbnRlbnRWaWV3IHNldFVwQWRkaXRpb25hbE1l
bnVDb250cm9sbGVyQWN0aW9uc107CiB9CiAKIC0gKHZvaWQpX3NldE9wYXF1ZUludGVybmFsOihC
T09MKW9wYXF1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
OTQ5ZDg5YThjNDg4ZDU0NDliMzFlNzRiYzFmNDFmMDI2Zjc5MGJiZC4uOWVjNWVmZDI0ZjJjOTg3
MDMzNmI1MjYzZjIwNjQ1YWEzZmM0N2Y2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC04Nzk4LDYgKzg3OTgsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0
YXJ0SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICNlbmRpZiAvLyBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0SW1hZ2VC
aXRtYXAoY29uc3QgRWxlbWVudENvbnRleHQmIGVsZW1lbnRDb250ZXh0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29uc3QgU3RyaW5nJik+
JiYgY29tcGxldGlvbikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RJbWFnZUJpdG1hcChl
bGVtZW50Q29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbikpOworfQorCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKIE1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkmIFdlYlBhZ2VQcm94eTo6bWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIo
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiM2RhZGMwZDky
YTZlMTA4YjY0MTg1MTk5MDYxNGEyMTU5YmQ1NTk5Li5lZDIyOGUzMjY1NWE4MzFkZDY4NmNjODMx
M2YxMmQwMDVhNzMyNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMjA0NCw2ICsyMDQ0LDggQEAgcHVibGljOgogICAgIFdLUXVpY2tMb29rUHJldmlld0NvbnRy
b2xsZXIgKnF1aWNrTG9va1ByZXZpZXdDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9xdWlj
a0xvb2tQcmV2aWV3Q29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCiAKKyAgICB2b2lkIHJlcXVl
c3RJbWFnZUJpdG1hcChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKT4mJik7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBpc1F1YXJhbnRp
bmVkQW5kTm90VXNlckFwcHJvdmVkKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
aW5kZXggN2ZmN2E3ZjU4ODNmMzgyM2FjNTEzZTc2ZmIwZmY0MDc4MmQ5Mzc4Ny4uZjQxYjUyMzdm
ZjFkNmUzZDcwY2EyY2YyZjdkNjEzYTQ3YmU0ODM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMjQ1LDYg
KzI0NSwxMiBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIENHUmVjdCB0ZXh0
TGFzdFJlY3Q7CiB9OwogCitzdHJ1Y3QgSW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHMgeworICAg
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1lbnQ7CisgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IHJlc3VsdDsKKyAgICBTdHJpbmcgcHJlZmVycmVkTUlNRVR5cGU7Cit9OworCiBlbnVtIGNs
YXNzIFByb2NlZWRXaXRoVGV4dFNlbGVjdGlvbkluSW1hZ2UgOiBib29sIHsKICAgICBObywKICAg
ICBZZXMKQEAgLTUzMSw2ICs1MzcsOSBAQCB1c2luZyBJbWFnZUFuYWx5c2lzUmVxdWVzdElkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlQW5hbHlzaXNSZXF1ZXN0SWRlbgogI2VuZGlm
IC8vIFVTRShRVUlDS19MT09LKQogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAg
ICB1aW50MzJfdCBfZnVsbHNjcmVlblZpZGVvRXh0cmFjdGlvblJlcXVlc3RJZGVudGlmaWVyOwor
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgc3RkOjpvcHRpb25h
bDxXZWJLaXQ6OkltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzPiBfaW1hZ2VBbmFseXNpc01hcmt1
cFJlc3VsdHM7CisjZW5kaWYKIH0KIAogQGVuZApAQCAtNzczLDkgKzc4Miw3IEBAIEZPUl9FQUNI
X1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElP
Tl9GT1JfV0VCX1ZJRVcpCiAtIChXZWJDb3JlOjpEYXRhT3duZXJUeXBlKV9kYXRhT3duZXJGb3JQ
YXN0ZWJvYXJkOihXZWJLaXQ6OlBhc3RlYm9hcmRBY2Nlc3NJbnRlbnQpaW50ZW50OwogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0tICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0
TWVudXNJZk5lZWRlZDsKLSNlbmRpZgorLSAodm9pZClzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJv
bGxlckFjdGlvbnM7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAtICh2b2lkKV9lbmRJ
bWFnZUFuYWx5c2lzR2VzdHVyZURlZmVycmFsOihXZWJLaXQ6OlNob3VsZFByZXZlbnRHZXN0dXJl
cylzaG91bGRQcmV2ZW50R2VzdHVyZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBiNjAxNDg5Y2Q2NDdm
NmU0ZjYzZDNkMjQ1ZTZkNWI5MzEyMjhlZDI0Li40YzJhZTI5MzM5NmE2YzExZWUzNjAyNGM2ODA0
MDg5NWJlYThlMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTEyNyw2ICsxMjcsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRS
ZWNvZ25pdGlvblJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ub3VjaEFjdGlvbi5oPgorI2lt
cG9ydCA8V2ViQ29yZS9VVElSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9VVElVdGlsaXRp
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlQ0FMYXllckV4dHJhcy5oPgpAQCAtMzcyLDYgKzM3MywyNCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9zaG91bGRQcmV2ZW50VGV4dFNlbGVjdGlvbiB7IGZhbHNlIH07CiB9Owog
CisjaWYgRU5BQkxFKFFVSUNLX0xPT0spIHx8IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNF
TUVOVFMpCisKK3N0YXRpYyBSZXRhaW5QdHI8TlNEYXRhPiB0cmFuc2NvZGUoQ0dJbWFnZVJlZiBp
bWFnZSwgQ0ZTdHJpbmdSZWYgdHlwZUlkZW50aWZpZXIpCit7CisgICAgaWYgKCFpbWFnZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVE
YXRhIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFn
ZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoKF9fYnJpZGdlIENGTXV0YWJsZURhdGFSZWYpZGF0
YS5nZXQoKSwgdHlwZUlkZW50aWZpZXIsIDEsIG5pbCkpOworICAgIENHSW1hZ2VEZXN0aW5hdGlv
bkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBpbWFnZSwgbmlsKTsKKyAgICBpZiAoIUNHSW1h
Z2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgpKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHJldHVybiBkYXRhOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFFVSUNLX0xP
T0spIHx8IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisKICNlbmRpZiAvLyBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApAQCAtNDA3MSw2
ICs0MDkwLDEwIEBAIC0gKGlkKXRhcmdldEZvckFjdGlvbjooU0VMKWFjdGlvbiB3aXRoU2VuZGVy
OihpZClzZW5kZXIKICAgICAgICAgcmV0dXJuIHNlbGYuc2hvdWxkQWxsb3dBcHBIaWdobGlnaHRD
cmVhdGlvbiAmJiBfcGFnZS0+YXBwSGlnaGxpZ2h0c1Zpc2liaWxpdHkoKSA/IHNlbGYgOiBuaWw7
CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVpY2tO
b3RlV2l0aFJhbmdlOikpCiAgICAgICAgIHJldHVybiBzZWxmLnNob3VsZEFsbG93QXBwSGlnaGxp
Z2h0Q3JlYXRpb24gJiYgIV9wYWdlLT5hcHBIaWdobGlnaHRzVmlzaWJpbGl0eSgpID8gc2VsZiA6
IG5pbDsKKyNlbmRpZgorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisg
ICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KSkK
KyAgICAgICAgcmV0dXJuIHNlbGYuY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXAgPyBzZWxm
IDogbmlsOwogI2VuZGlmCiAgICAgcmV0dXJuIFtfd2ViVmlldyB0YXJnZXRGb3JBY3Rpb246YWN0
aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsKIH0KQEAgLTQ1OTcsMzYgKzQ2MjAsMTY4IEBAIC0gKHZv
aWQpcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoW3Nl
bGYgX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHNdIHx8IHNlbGYud2ViVmlldy5fZWRp
dGFibGUpIHsKKyAgICBpZiAoW3NlbGYgX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHNd
KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbIF0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlICE9
IFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGUgJiYgX2ZvY3VzZWRFbGVtZW50SW5m
b3JtYXRpb24uZWxlbWVudFR5cGUgIT0gV2ViS2l0OjpJbnB1dFR5cGU6OlRleHRBcmVhKSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbIF0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGF1dG8gcmVxdWVzdFJlY3RzVG9FdmFkZUlmTmVlZGVkID0gW3N0YXJ0VGltZSA9IEFwcHJv
eGltYXRlVGltZTo6bm93KCksIHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4o
c2VsZiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7Cisg
ICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0
cm9uZ1NlbGYpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oQFsgXSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KIAotICAgIC8vIEdpdmUgdGhlIHBhZ2Ugc29tZSB0aW1lIHRvIHBy
ZXNlbnQgY3VzdG9tIGVkaXRpbmcgVUkgYmVmb3JlIGF0dGVtcHRpbmcgdG8gZGV0ZWN0IGFuZCBl
dmFkZSBpdC4KLSAgICBhdXRvIGRlbGF5QmVmb3JlU2hvd2luZ0NhbGxvdXRCYXIgPSAwLjI1X3M7
Ci0gICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hBZnRlcihkZWxheUJlZm9yZVNob3dpbmdD
YWxsb3V0QmFyLCBbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciks
IHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZildICgpIG11dGFibGUg
ewotICAgICAgICBpZiAoIXdlYWtTZWxmKSB7CisgICAgICAgIGlmIChbc3Ryb25nU2VsZiB3ZWJW
aWV3XS5fZWRpdGFibGUpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb24oQFsgXSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFr
U2VsZi5nZXQoKTsKLSAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fcGFnZSkgeworICAgICAgICBh
dXRvIGZvY3VzZWRFbGVtZW50VHlwZSA9IHN0cm9uZ1NlbGYtPl9mb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uLmVsZW1lbnRUeXBlOworICAgICAgICBpZiAoZm9jdXNlZEVsZW1lbnRUeXBlICE9IFdl
YktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGUgJiYgZm9jdXNlZEVsZW1lbnRUeXBlICE9
IFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYSkgewogICAgICAgICAgICAgY29tcGxldGlvbihA
WyBdKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHN0cm9uZ1Nl
bGYtPl9wYWdlLT5yZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oW2NvbXBsZXRpb24g
PSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoYXV0byYgcmVjdHMpIHsKLSAgICAgICAgICAgIGNvbXBs
ZXRpb24oY3JlYXRlTlNBcnJheShyZWN0cykuZ2V0KCkpOworICAgICAgICAvLyBHaXZlIHRoZSBw
YWdlIHNvbWUgdGltZSB0byBwcmVzZW50IGN1c3RvbSBlZGl0aW5nIFVJIGJlZm9yZSBhdHRlbXB0
aW5nIHRvIGRldGVjdCBhbmQgZXZhZGUgaXQuCisgICAgICAgIGF1dG8gZGVsYXlCZWZvcmVTaG93
aW5nQ2FsbG91dEJhciA9IHN0ZDo6bWF4KDBfcywgMC4yNV9zIC0gKEFwcHJveGltYXRlVGltZTo6
bm93KCkgLSBzdGFydFRpbWUpKTsKKyAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hB
ZnRlcihkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyLCBbY29tcGxldGlvbiwgd2Vha1NlbGZd
ICgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0
KCk7CisgICAgICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uKEBbIF0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fcGFnZSkgeworICAgICAgICAgICAgICAgIGNv
bXBsZXRpb24oQFsgXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+cmVxdWVzdEV2YXNpb25SZWN0c0Fib3Zl
U2VsZWN0aW9uKFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKGF1dG8mIHJlY3Rz
KSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbihjcmVhdGVOU0FycmF5KHJlY3RzKS5nZXQo
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfTsKKworI2lmIEVOQUJMRShJ
TUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgW3NlbGYgZG9BZnRlckNvbXB1dGluZ0lt
YWdlQW5hbHlzaXNSZXN1bHRzRm9yTWFya3VwOldURk1vdmUocmVxdWVzdFJlY3RzVG9FdmFkZUlm
TmVlZGVkKV07CisjZWxzZQorICAgIHJlcXVlc3RSZWN0c1RvRXZhZGVJZk5lZWRlZCgpOworI2Vu
ZGlmCit9CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCistIChO
U0FycmF5PFVJTWVudUl0ZW0gKj4gKilpbWFnZUFuYWx5c2lzTWFya3VwTWVudUl0ZW1zCit7Cisg
ICAgaWYgKCFXZWJLaXQ6OmlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3RlbUZlYXR1cmVFbmFibGVk
KCkpCisgICAgICAgIHJldHVybiBAWyBdOworCisgICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgp
LmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhIHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5
b3V0RGF0YSgpLnNlbGVjdGVkRWRpdGFibGVJbWFnZSkKKyAgICAgICAgcmV0dXJuIEBbIF07CisK
KyAgICByZXR1cm4gQFsgYWRvcHROUyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6
V0VCX1VJX1NUUklORygiTWFya3VwIEltYWdlIiwgIkltYWdlIGFuYWx5c2lzIG1hcmt1cCBtZW51
IGl0ZW0iKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOildKS5n
ZXQoKSBdOworfQorCistIChCT09MKWNhblBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwCit7Cisg
ICAgaWYgKCFXZWJLaXQ6OmlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3RlbUZlYXR1cmVFbmFibGVk
KCkpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIGlmICghX2ltYWdlQW5hbHlzaXNNYXJrdXBS
ZXN1bHRzKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBhdXRvIFtlbGVtZW50Q29udGV4dCwg
aW1hZ2UsIHByZWZlcnJlZE1JTUVUeXBlXSA9ICpfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHM7
CisgICAgcmV0dXJuICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0
YSAmJiBlbGVtZW50Q29udGV4dCA9PSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0
YSgpLnNlbGVjdGVkRWRpdGFibGVJbWFnZTsKK30KKworLSAodm9pZClwZXJmb3JtSW1hZ2VBbmFs
eXNpc01hcmt1cDooaWQpc2VuZGVyCit7CisgICAgaWYgKCFzZWxmLmNhblBlcmZvcm1JbWFnZUFu
YWx5c2lzTWFya3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIFtlbGVtZW50Q29udGV4
dCwgaW1hZ2UsIHByZWZlcnJlZE1JTUVUeXBlXSA9ICpfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3Vs
dHM7CisgICAgYXV0byB0YXJnZXRUeXBlID0gUmV0YWluUHRyIHsgVVRUeXBlVElGRi5pZGVudGlm
aWVyIH07CisgICAgaWYgKCFwcmVmZXJyZWRNSU1FVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
TlNTdHJpbmcgKnByZWZlcnJlZFR5cGVJZGVudGlmaWVyID0gW1VUVHlwZSB0eXBlV2l0aE1JTUVU
eXBlOnByZWZlcnJlZE1JTUVUeXBlIGNvbmZvcm1pbmdUb1R5cGU6VVRUeXBlSW1hZ2VdLmlkZW50
aWZpZXI7CisgICAgICAgIGlmIChXZWJDb3JlOjppc1N1cHBvcnRlZEltYWdlVHlwZShwcmVmZXJy
ZWRUeXBlSWRlbnRpZmllcikpCisgICAgICAgICAgICB0YXJnZXRUeXBlID0gcHJlZmVycmVkVHlw
ZUlkZW50aWZpZXI7CisgICAgfQorCisgICAgaWYgKGF1dG8gZGF0YSA9IFdlYktpdDo6dHJhbnNj
b2RlKGltYWdlLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpdGFyZ2V0VHlwZS5nZXQoKSk7
IFtkYXRhIGxlbmd0aF0pCisgICAgICAgIF9wYWdlLT5yZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3Rl
Ym9hcmREYXRhKHsgU3RyaW5nIHsgdGFyZ2V0VHlwZS5nZXQoKSB9IH0sIHsgc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0gfSk7Cit9CisKKy0g
KHZvaWQpZG9BZnRlckNvbXB1dGluZ0ltYWdlQW5hbHlzaXNSZXN1bHRzRm9yTWFya3VwOihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpY29tcGxldGlvbgoreworICAgIGlmIChfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkgeworICAgICAgICBjb21wbGV0aW9u
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGVsZW1lbnRUb0FuYWx5emUg
PSBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLnNlbGVjdGVkRWRpdGFibGVJ
bWFnZTsKKyAgICBpZiAoX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzICYmIF9pbWFnZUFuYWx5
c2lzTWFya3VwUmVzdWx0cy0+ZWxlbWVudCA9PSBlbGVtZW50VG9BbmFseXplKSB7CisgICAgICAg
IGNvbXBsZXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9pbWFnZUFuYWx5
c2lzTWFya3VwUmVzdWx0cyA9IHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICghZWxlbWVudFRvQW5h
bHl6ZSkgeworICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBfcGFnZS0+cmVxdWVzdEltYWdlQml0bWFwKCplbGVtZW50VG9BbmFseXplLCBbY29udGV4
dCA9ICplbGVtZW50VG9BbmFseXplLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwg
d2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3PihzZWxmKV0oYXV0byYgaW1hZ2VE
YXRhLCBhdXRvJiBtaW1lVHlwZSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9
IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGF1dG8gaW1hZ2VCaXRtYXAgPSBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdl
RGF0YSk7CisgICAgICAgIGlmICghaW1hZ2VCaXRtYXApIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gY2dJ
bWFnZSA9IGltYWdlQml0bWFwLT5tYWtlQ0dJbWFnZSgpOworICAgICAgICBpZiAoIWNnSW1hZ2Up
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBDaGVjayB0byBzZWUgaWYgd2UgY2FuIGF2b2lkIHRo
aXMgZXh0cmEgdHJhbnNjb2Rpbmcgc3RlcCBvbmNlIFZpc2lvbktpdCBzdGFydHMgdXNpbmcgYG1l
ZGlhYW5hbHlzaXNkYCBmb3IgdGhpcy4KKyAgICAgICAgYXV0byB0aWZmRGF0YSA9IFdlYktpdDo6
dHJhbnNjb2RlKGNnSW1hZ2UuZ2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZilVVFR5cGVUSUZG
LmlkZW50aWZpZXIpOworICAgICAgICBpZiAoIVt0aWZmRGF0YSBsZW5ndGhdKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBSZXRhaW5QdHIgdHJhbnNjb2RlZEltYWdlID0gW1VJSW1hZ2UgaW1hZ2VXaXRoRGF0YTp0
aWZmRGF0YS5nZXQoKV07CisgICAgICAgIGlmICghdHJhbnNjb2RlZEltYWdlKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBXZWJLaXQ6OnJlcXVlc3RJbWFnZUFuYWx5c2lzTWFya3VwKFt0cmFuc2NvZGVkSW1hZ2Ug
Q0dJbWFnZV0sIFttaW1lVHlwZSwgY29udGV4dCwgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxl
dGlvbiksIHdlYWtTZWxmXShDR0ltYWdlUmVmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgICAgIGlmICghc3Ry
b25nU2VsZikgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXN1bHQpCisgICAg
ICAgICAgICAgICAgc3Ryb25nU2VsZi0+X2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzID0geyB7
IGNvbnRleHQsIHsgcmVzdWx0IH0sIG1pbWVUeXBlIH0gfTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBzdHJvbmdTZWxmLT5faW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHMgPSBz
dGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBjb21wbGV0aW9uKCk7CiAgICAgICAgIH0pOwogICAg
IH0pOwogfQogCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykK
KwogLSAodm9pZClzZWxlY3RQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX2F1dG9j
b3JyZWN0aW9uQ29udGV4dE5lZWRzVXBkYXRlID0gWUVTOwpAQCAtNzMxMywxMCArNzQ2OCw4IEBA
IC0gKHZvaWQpX3VwZGF0ZVNlbGVjdGlvbkFzc2lzdGFudFN1cHByZXNzaW9uU3RhdGUKIC0gKHZv
aWQpX3NlbGVjdGlvbkNoYW5nZWQKIHsKICAgICBfYXV0b2NvcnJlY3Rpb25Db250ZXh0TmVlZHNV
cGRhdGUgPSBZRVM7Ci0jaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotICAgIFtzZWxmIHNldFVw
QXBwSGlnaGxpZ2h0TWVudXNJZk5lZWRlZF07Ci0jZW5kaWYKIAorICAgIFtzZWxmIHNldFVwQWRk
aXRpb25hbE1lbnVDb250cm9sbGVyQWN0aW9uc107CiAgICAgW3NlbGYgX3VwZGF0ZVNlbGVjdGlv
bkFzc2lzdGFudFN1cHByZXNzaW9uU3RhdGVdOwogCiAgICAgX2NhY2hlZFNlbGVjdGVkVGV4dFJh
bmdlID0gbmlsOwpAQCAtOTYwMiwyMSArOTc1NSwzMyBAQCAtICh2b2lkKV9sb29rdXBHZXN0dXJl
UmVjb2duaXplZDooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB9CiAj
ZW5kaWYKIAorLSAodm9pZClzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlvbnMKK3sK
KyAgICBhdXRvIGFkZGl0aW9uYWxJdGVtcyA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5PFVJTWVu
dUl0ZW0gKj4gbmV3XSk7CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykK
KyAgICBbYWRkaXRpb25hbEl0ZW1zIGFkZE9iamVjdHNGcm9tQXJyYXk6c2VsZi5pbWFnZUFuYWx5
c2lzTWFya3VwTWVudUl0ZW1zXTsKKyNlbmRpZgorI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
KyAgICBbYWRkaXRpb25hbEl0ZW1zIGFkZE9iamVjdHNGcm9tQXJyYXk6c2VsZi5hcHBIaWdobGln
aHRNZW51SXRlbXNdOworI2VuZGlmCisgICAgW1tVSU1lbnVDb250cm9sbGVyIHNoYXJlZE1lbnVD
b250cm9sbGVyXSBzZXRNZW51SXRlbXM6YWRkaXRpb25hbEl0ZW1zLmdldCgpXTsKK30KKwogI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKIAotLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVz
SWZOZWVkZWQKKy0gKE5TQXJyYXk8VUlNZW51SXRlbSAqPiAqKWFwcEhpZ2hsaWdodE1lbnVJdGVt
cwogewogICAgIGlmICghX3BhZ2UtPnByZWZlcmVuY2VzKCkuYXBwSGlnaGxpZ2h0c0VuYWJsZWQo
KSB8fCAhc2VsZi53aW5kb3cgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFu
Z2UpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEBbIF07CiAgICAgCiAgICAgZm9y
IChVSU1lbnVJdGVtICptZW51SXRlbSBpbiBbW1VJTWVudUNvbnRyb2xsZXIgc2hhcmVkTWVudUNv
bnRyb2xsZXJdIG1lbnVJdGVtc10pIHsKICAgICAgICAgaWYgKFttZW51SXRlbSBhY3Rpb25dID09
IEBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOikg
fHwgW21lbnVJdGVtIGFjdGlvbl0gPT0gQHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1
aWNrTm90ZVdpdGhSYW5nZTopKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0
dXJuIEBbIF07CiAgICAgfQogICAgIAogICAgIGF1dG8gYWRkSGlnaGxpZ2h0Q3VycmVudFF1aWNr
Tm90ZUl0ZW0gPSBhZG9wdE5TKFtbVUlNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXZWJD
b3JlOjpjb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRUb0N1cnJlbnRRdWlja05vdGUoKSBh
Y3Rpb246QHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvckN1cnJlbnRRdWlja05vdGVXaXRoUmFu
Z2U6KV0pOwogICAgIGF1dG8gYWRkSGlnaGxpZ2h0TmV3UXVpY2tOb3RlSXRlbSA9IGFkb3B0TlMo
W1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRhZ0FkZEhpZ2hsaWdodFRvTmV3UXVpY2tOb3RlKCkgYWN0aW9uOkBzZWxlY3RvcihjcmVhdGVI
aWdobGlnaHRGb3JOZXdRdWlja05vdGVXaXRoUmFuZ2U6KV0pOwotICAgIFtbVUlNZW51Q29udHJv
bGxlciBzaGFyZWRNZW51Q29udHJvbGxlcl0gc2V0TWVudUl0ZW1zOkBbIGFkZEhpZ2hsaWdodEN1
cnJlbnRRdWlja05vdGVJdGVtLmdldCgpLCBhZGRIaWdobGlnaHROZXdRdWlja05vdGVJdGVtLmdl
dCgpIF1dOworICAgIHJldHVybiBAWyBhZGRIaWdobGlnaHRDdXJyZW50UXVpY2tOb3RlSXRlbS5n
ZXQoKSwgYWRkSGlnaGxpZ2h0TmV3UXVpY2tOb3RlSXRlbS5nZXQoKSBdOwogfQogCiAtICh2b2lk
KWNyZWF0ZUhpZ2hsaWdodEZvckN1cnJlbnRRdWlja05vdGVXaXRoUmFuZ2U6KGlkKXNlbmRlcgpA
QCAtMTAzMTUsMTQgKzEwNDgwLDcgQEAgLSAoaWQgPFFMUHJldmlld0l0ZW0+KXByZXZpZXdDb250
cm9sbGVyOihRTFByZXZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBwcmV2aWUKIC0gKE5TRGF0
YSAqKXByb3ZpZGVEYXRhRm9ySXRlbTooUUxJdGVtICopaXRlbQogewogICAgIEFTU0VSVChfdmlz
dWFsU2VhcmNoUHJldmlld0ltYWdlKTsKLQotICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRh
Q3JlYXRlTXV0YWJsZShOVUxMLCAwKSk7Ci0gICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0Q0Yo
Q0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoZGF0YS5nZXQoKSwgKF9fYnJpZGdlIENG
U3RyaW5nUmVmKVVUVHlwZVRJRkYuaWRlbnRpZmllciwgMSwgTlVMTCkpOwotICAgIENHSW1hZ2VE
ZXN0aW5hdGlvbkFkZEltYWdlKGRlc3RpbmF0aW9uLmdldCgpLCBbX3Zpc3VhbFNlYXJjaFByZXZp
ZXdJbWFnZSBDR0ltYWdlXSwgbmlsKTsKLSAgICBpZiAoIUNHSW1hZ2VEZXN0aW5hdGlvbkZpbmFs
aXplKGRlc3RpbmF0aW9uLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVy
biBkYXRhLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0cmFuc2Nv
ZGUoW192aXN1YWxTZWFyY2hQcmV2aWV3SW1hZ2UgQ0dJbWFnZV0sIChfX2JyaWRnZSBDRlN0cmlu
Z1JlZilVVFR5cGVUSUZGLmlkZW50aWZpZXIpLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNwcmFnbWEg
bWFyayAtIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZQpAQCAtMTAzODUsNiArMTA1NDMs
OSBAQCAtICh2b2lkKV9zZXRVcEltYWdlQW5hbHlzaXMKICNpZiBVU0UoVUlDT05URVhUTUVOVSkg
JiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0ZPUl9NQUNISU5FX1JFQURBQkxFX0NPREVTKQogICAg
IF9jb250ZXh0TWVudUZvck1hY2hpbmVSZWFkYWJsZUNvZGUuY2xlYXIoKTsKICNlbmRpZiAvLyBV
U0UoVUlDT05URVhUTUVOVSkgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0ZPUl9NQUNISU5FX1JF
QURBQkxFX0NPREVTKQorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisg
ICAgX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzID0gc3RkOjpudWxsb3B0OworI2VuZGlmCiB9
CiAKIC0gKHZvaWQpX3RlYXJEb3duSW1hZ2VBbmFseXNpcwpAQCAtMTA0MTAsNiArMTA1NzEsOSBA
QCAtICh2b2lkKV90ZWFyRG93bkltYWdlQW5hbHlzaXMKICAgICBfY29udGV4dE1lbnVGb3JNYWNo
aW5lUmVhZGFibGVDb2RlLmNsZWFyKCk7CiAjZW5kaWYgLy8gVVNFKFVJQ09OVEVYVE1FTlUpICYm
IEVOQUJMRShJTUFHRV9BTkFMWVNJU19GT1JfTUFDSElORV9SRUFEQUJMRV9DT0RFUykKICAgICBb
c2VsZiBfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlQW5hbHlzaXM6
V2ViS2l0OjpQcm9jZWVkV2l0aFRleHRTZWxlY3Rpb25JbkltYWdlOjpOb107CisjaWYgRU5BQkxF
KElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICBfaW1hZ2VBbmFseXNpc01hcmt1cFJl
c3VsdHMgPSBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKIH0KIAogLSAodm9pZClfY2FuY2VsSW1hZ2VB
bmFseXNpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBiNzkyYzJkNjliZGI1NjY2YTFjMjRiZGFkZTNmZDEwMzA3NWYxMGQ4Li44OTA5NzEwMWQ5
ZmExNzI5MGZiNDIxN2E0YzZjZTBjNjVjYmFmMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzc0Myw2ICs3NzQzLDQyIEBAIHZvaWQgV2Vi
UGFnZTo6c3RhcnRJbWFnZUFuYWx5c2lzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAordm9pZCBXZWJQYWdlOjpyZXF1ZXN0SW1h
Z2VCaXRtYXAoY29uc3QgRWxlbWVudENvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKT4mJiBjb21wbGV0aW9uKQoreworICAgIFJlZlB0ciBlbGVtZW50ID0gZWxlbWVudEZvckNv
bnRleHQoY29udGV4dCk7CisgICAgaWYgKCFlbGVtZW50KSB7CisgICAgICAgIGNvbXBsZXRpb24o
eyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogcmVuZGVyZXIg
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KGVsZW1lbnQtPnJlbmRlcmVyKCkpOworICAg
IGlmICghcmVuZGVyZXIpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJpdG1hcCA9IGNyZWF0ZVNoYXJlYWJsZUJpdG1h
cCgqcmVuZGVyZXIpOworICAgIGlmICghYml0bWFwKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9
LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgaGFuZGxlOworICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CisgICAgaWYg
KGhhbmRsZS5pc051bGwoKSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICBpZiAoYXV0byog
Y2FjaGVkSW1hZ2UgPSByZW5kZXJlci0+Y2FjaGVkSW1hZ2UoKSkgeworICAgICAgICBpZiAoYXV0
byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKSkKKyAgICAgICAgICAgIG1pbWVUeXBlID0g
aW1hZ2UtPm1pbWVUeXBlKCk7CisgICAgfQorICAgIEFTU0VSVCghbWltZVR5cGUuaXNFbXB0eSgp
KTsKKyAgICBjb21wbGV0aW9uKGhhbmRsZSwgbWltZVR5cGUpOworfQorCiAjaWYgRU5BQkxFKE1F
RElBX0NPTlRST0xTX0NPTlRFWFRfTUVOVVMpICYmIFVTRShVSUNPTlRFWFRNRU5VKQogdm9pZCBX
ZWJQYWdlOjpzaG93TWVkaWFDb250cm9sc0NvbnRleHRNZW51KEZsb2F0UmVjdCYmIHRhcmdldEZy
YW1lLCBWZWN0b3I8TWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbT4mJiBpdGVtcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpJRCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggNzRlYmM5M2EwYjQ1ZjYyNjIxZmQ3NjlmNWRhZDI4M2QwMmRmYjk4Yi4uMjBl
YjEwNjhmNDA0MGE3OGUyNTQ1ZmZlMzY3OTUyZjhhODZmYzE1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQ0MCw2ICsxNDQwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc3RhcnRJbWFnZUFuYWx5c2lzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7
CiAjZW5kaWYKIAorICAgIHZvaWQgcmVxdWVzdEltYWdlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpPiYmKTsKKwogI2lmIEhBVkUoVFJB
TlNMQVRJT05fVUlfU0VSVklDRVMpICYmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIHZvaWQg
aGFuZGxlQ29udGV4dE1lbnVUcmFuc2xhdGlvbihjb25zdCBXZWJDb3JlOjpUcmFuc2xhdGlvbkNv
bnRleHRNZW51SW5mbyYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA0MTgwZmVkMTIyOTM0MDYxYTY3
MzAwMzFlMmMyZGUyNGQyMTJiZTJmLi44ZjRlMjBjNzU4NzVkYTQzYWFiZTBlNjEyZTVhNzZhYTMw
MGJkOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTEyOCw2ICsxMjgsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZQogICAgIENsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoKSAtPiAoKSBB
c3luYwogI2VuZGlmCiAKKyAgICBSZXF1ZXN0SW1hZ2VCaXRtYXAoc3RydWN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0IGVsZW1lbnRDb250ZXh0KSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBpbWFnZSwgU3RyaW5nIG9yaWdpbmFsTUlNRVR5cGUpIEFzeW5jCisKICAgICBTZXRD
b250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkKIAogICAgIENvbm5lY3RJbnNw
ZWN0b3IoU3RyaW5nIHRhcmdldElkLCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVj
dGlvblR5cGUgY29ubmVjdGlvblR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDNkZGMyNjcxNzQ2OWQ2YWRiYTEyNDIx
MTM4YTYwMWNmNWJjMWM3ZTYuLmMzNTlmNDcyMWM4Y2ZhNmVkYWMzOGJjZDNlNjhkMmRjMThhM2Nk
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCkBAIC0zMjAsNiArMzIwLDI1IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1F
ZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3RlZFRleHRMZW5ndGggPSBzZWxlY3RlZFRleHQu
bGVuZ3RoKCk7CiAgICAgICAgICAgICBjb25zdCBpbnQgbWF4U2VsZWN0ZWRUZXh0TGVuZ3RoID0g
MjAwOwogICAgICAgICAgICAgcG9zdExheW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gc2VsZWN0
ZWRUZXh0LmxlZnQobWF4U2VsZWN0ZWRUZXh0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gZmlu
ZFNlbGVjdGVkRWRpdGFibGVJbWFnZUVsZW1lbnQgPSBbJl0oKSB7CisgICAgICAgICAgICAgICAg
UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGZvdW5kSW1hZ2U7CisgICAgICAgICAgICAgICAgaWYg
KCFyZXN1bHQuaXNDb250ZW50RWRpdGFibGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
b3VuZEltYWdlOworCisgICAgICAgICAgICAgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3Ig
eyAqc2VsZWN0ZWRSYW5nZSwgeyB9IH07ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZh
bmNlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kSW1hZ2UpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZvdW5kSW1hZ2UgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
Zm91bmRJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihpdGVyYXRvci5u
b2RlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kSW1hZ2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZvdW5kSW1hZ2U7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAoYXV0
byBpbWFnZUVsZW1lbnQgPSBmaW5kU2VsZWN0ZWRFZGl0YWJsZUltYWdlRWxlbWVudCgpKQorICAg
ICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGVkRWRpdGFibGVJbWFnZSA9IGNvbnRl
eHRGb3JFbGVtZW50KCppbWFnZUVsZW1lbnQpOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgZGlzYWxsb3cgcmVwbGFjZSB3aGVuIHRoZSBzdHJpbmcgY29udGFpbnMgb25s
eSBDSiBjaGFyYWN0ZXJzLgogICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2Vk
ID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFyZXN1bHQuaXNJblBhc3N3b3JkRmllbGQg
JiYgIXNlbGVjdGVkVGV4dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451563</attachid>
            <date>2022-02-10 10:12:15 -0800</date>
            <delta_ts>2022-02-10 11:37:14 -0800</delta_ts>
            <desc>Depends on #236406</desc>
            <filename>bug-236415-20220210101214.patch</filename>
            <type>text/plain</type>
            <size>35705</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc0YjJiNWVmM2ZkNTI2
YTgwZWM4MjhjNDdmNjJiNGY2MDY2YzFiNS4uYjQwMDI1OWY1MDU0M2E1Yzc2YzdlZjZiNDkxYzM2
YWUwMzI3NDM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBz
dXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNhbGxvdXQgYmFyIHdoZW4g
c2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4NzE0MzMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IGEgY291cGxl
IG9mIGZ1bmN0aW9uczsgc2VlIFdlYktpdC9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAyMi0wMi0wOSAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBXS1dlYlZpZXc6IFdLVVJMU2NoZW1l
SGFuZGxlciDigJxyZXF1ZXN0IHRvIHRoZSBlbmQgb2YgdGhlIHJlc291cmNl4oCdIHByb2R1Y2Vz
IGFuIGludmFsaWQgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3YTcwYjk0OGZlMDc0MDY4NGJiNDhhMTcy
YjNjM2NhMDExOTIwOTguLjEwYThhMWI1OTRmOWQ4ZjNmNzQ0OTBkYjMyMDhiNWVjMjQyMzEzMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisyMDIyLTAyLTEwICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciBh
ICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNhbGxvdXQgYmFyIHdoZW4gc2VsZWN0aW5nIGEg
c2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4NzE0MzMzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBv
cnQgZm9yIGEgbmV3ICJNYXJrdXAgSW1hZ2UiIGNhbGxvdXQgbWVudSBpdGVtLCB3aGljaCBpcyBv
bmx5IHNob3duIHdoZW4gdGhlIHVzZXIgaGFzCisgICAgICAgIHNlbGVjdGVkIGV4YWN0bHkgb25l
IGltYWdlLiBJZiB0aGUgaW1hZ2UgaXMgc3VpdGFibGUgZm9yICJNYXJrdXAgSW1hZ2UiICh0aGF0
IGlzLCB0aGUgcmVsZXZhbnQgVmlzaW9uS2l0IEFQSQorICAgICAgICByZXR1cm5zIGEgbm9uLW51
bGwgaW1hZ2UpLCB0aGVuIHdlIHNob3cgYSBuZXcgaXRlbSBpbiB0aGUgY2FsbG91dCBiYXIgd2hp
Y2gsIHdoZW4gYWN0aXZhdGVkLCByZXBsYWNlcyB0aGUKKyAgICAgICAgY3VycmVudCBzZWxlY3Rp
b24gd2l0aCB0aGUgaW1hZ2UgcmV0dXJuZWQgYnkgdGhlIGFmb3JlbWVudGlvbmVkIFZpc2lvbktp
dCBBUEkuCisKKyAgICAgICAgU2VlIGJlbG93IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAg
KiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQ
bGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMubW06CisgICAgICAgIChXZWJL
aXQ6OmlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3RlbUZlYXR1cmVFbmFibGVkKToKKworICAgICAg
ICBBZGQgYSBuZXcgaGVscGVyIG1ldGhvZCB0byByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGNv
cnJlc3BvbmRpbmcgc3lzdGVtIGZlYXR1cmUgZmxhZyBpcyBlbmFibGVkLgorCisgICAgICAgICog
U2hhcmVkL0VkaXRvclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBv
c3RMYXlvdXREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0
ZTo6UG9zdExheW91dERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRl
Lmg6CisKKyAgICAgICAgQWRkIGFuIG9wdGlvbmFsIGBFbGVtZW50Q29udGV4dGAgdGhhdCdzIHBv
cHVsYXRlZCBvbmx5IGlmIHRoZSB1c2VyJ3Mgc2VsZWN0aW9uIHNwYW5zIGEgc2luZ2xlIEhUTUxJ
bWFnZUVsZW1lbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1Mu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBkaWRNb3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0SW1hZ2VCaXRtYXApOgorCisgICAgICAgIEFkZCBhIG5ldyBhc3luYyBJUEMgbWVz
c2FnZSB0aGF0IGFsbG93cyB0aGUgVUkgcHJvY2VzcyB0byBncmFiIGEgU2hhcmVhYmxlQml0bWFw
IGhhbmRsZSAoYWxvbmcgd2l0aCB0aGUgTUlNRQorICAgICAgICB0eXBlIG9mIHRoZSBzb3VyY2Ug
aW1hZ2UpIGdpdmVuIGFuIEVsZW1lbnRDb250ZXh0IHRoYXQgaWRlbnRpZmllcyBhbiBpbWFnZSBl
bGVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisKKyAgICAgICAgQ2Fj
aGUgdGhlIGxhc3QgcmVzdWx0IGZyb20gcmVxdWVzdGluZyAiSW1hZ2UgTWFya3VwIiBkYXRhIGZy
b20gVmlzaW9uS2l0IGluIGBfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHNgLCBhbmQKKyAgICAg
ICAgdXNlIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBpbnZva2luZyB0aGUgbmV3IHNlbGVjdG9yLCBg
LXBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOmAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2Rl
KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRoYXQgdGFrZXMgYSBDR0ltYWdlUmVm
LCB0cmFuc2NvZGVzIGl0IHRvIHRoZSBnaXZlbiB1bmlmb3JtIHR5cGUgaWRlbnRpZmllciwgYW5k
IGZpbmFsbHkKKyAgICAgICAgcmV0dXJucyBhIGJsb2Igb2YgaW1hZ2UgZGF0YS4gVXNlZCBieSB0
aGUgdHdvIG5ldyBjYWxsIHNpdGVzIGZvciBJbWFnZSBNYXJrdXAgYmVsb3csIGFzIHdlbGwgYXMg
YW4gZXhpc3RpbmcgY2FsbAorICAgICAgICBzaXRlIGZvciBWaXN1YWwgTG9vayBVcCBpbiBgLXBy
b3ZpZGVEYXRhRm9ySXRlbTpgCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0YXJnZXRGb3JB
Y3Rpb246d2l0aFNlbmRlcjpdKToKKworICAgICAgICBBZGQgYSBjaGVjayBmb3IgdGhlIG5ldyBJ
bWFnZSBNYXJrdXAgYWN0aW9uIHNlbGVjdG9yLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
cmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5k
bGVyOl0pOgorCisgICAgICAgIFVzZSB0aGlzIGV4aXN0aW5nIFVJS2l0IGRlbGVnYXRlIGhvb2sg
dG8gZGVmZXIgY2FsbG91dCBiYXIgcHJlc2VudGF0aW9uIG9ubHkgaW4gdGhlIGNhc2Ugd2hlcmUg
YSBzaW5nbGUgaW1hZ2UKKyAgICAgICAgZWxlbWVudCBpcyBzZWxlY3RlZCwgc3VjaCB0aGF0IHdl
IG9ubHkgc2hvdyB0aGUgY2FsbG91dCBiYXIgaW4gdGhpcyBzY2VuYXJpbyBvbmNlIFZpc2lvbktp
dCBoYXMgZGV0ZXJtaW5lZAorICAgICAgICB3aGV0aGVyIG9yIG5vdCB0aGUgIkltYWdlIE1hcmt1
cCIgYWN0aW9uIGlzIHN1aXRhYmxlIGZvciB0aGUgZGF0YSBvZiB0aGUgc2VsZWN0ZWQgaW1hZ2Uu
CisKKyAgICAgICAgVGhlIGluaXRpYWwgcHVycG9zZSBvZiB0aGlzIGRlbGVnYXRlIGhvb2sgd2Fz
IHRvIGFsbG93IFdlYktpdCB0byBkZWZlciBjYWxsb3V0IGJhciBwcmVzZW50YXRpb24gZm9yIGEg
c2hvcnQsCisgICAgICAgIGhhcmQtY29kZWQgZGVsYXkgdG8gd2FpdCBmb3IgdGhlIHdlYiBwYWdl
IHRvIGxheW91dCBvdXQgb3IgYWRkIGNsaWNrYWJsZSBpdGVtcyB0aGF0IG1pZ2h0IHVuZGVybGFw
IHRoZSBjYWxsb3V0CisgICAgICAgIGJhcjsgYXMgc3VjaCwgd2Ugc3RpbGwgcGVyZm9ybSB0aGlz
IGxvZ2ljIHdpdGggYSBoYXJkLWNvZGVkIGRlbGF5IG9mIDI1MCBtcyAoaW5jbHVkaW5nIHdoYXRl
dmVyIHRpbWUgd2FzIHRha2VuCisgICAgICAgIGR1cmluZyBpbWFnZSBhbmFseXNpcykuCisKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyB1cGRhdGVJbWFnZUFuYWx5c2lzTWFya3VwTWVudUl0ZW1z
Ol0pOgorCisgICAgICAgIEFwcGVuZCB0aGUgbmV3IG1lbnUgaXRlbSBvbmx5IGlmIHRoZSBzeXN0
ZW0gZmVhdHVyZSBmbGFnIGlzIGVuYWJsZWQsIGFuZCB3ZSd2ZSBzZWxlY3RlZCBhbiBlZGl0YWJs
ZSBpbWFnZS4gTm90ZQorICAgICAgICB0aGF0IHRoaXMgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBj
b25zdWx0IGBfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHNgIHRvIGVuc3VyZSB0aGF0IHRoZSBz
dGF0ZSBvZiBhZGRpdGlvbmFsCisgICAgICAgIG1lbnUgaXRlbXMgaW4gdGhlIHNoYXJlZCBtZW51
IGNvbnRyb2xsZXIgaXMgY29uc2lzdGVudCBiZXR3ZWVuIE1hcmt1cCBJbWFnZSBhbmQgUXVpY2sg
Tm90ZSwgYW5kIHVwZGF0ZWQgaW4gdGhlCisgICAgICAgIHNhbWUgbGlmZWN5Y2xlIGFzIGVkaXRv
ciBzdGF0ZSB1cGRhdGVzLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUlt
YWdlQW5hbHlzaXNNYXJrdXBdKToKKworICAgICAgICBUaGlzIGlzIGNvbnN1bHRlZCB3aGVuIHdl
J3JlIGFjdHVhbGx5IGFib3V0IHRvIHNob3cgdGhlIGNhbGxvdXQgYmFyIGFjdGlvbiBmb3IgIklt
YWdlIE1hcmt1cCIgKGltcG9ydGFudGx5LAorICAgICAgICBhZnRlciBjYWxsb3V0IGJhciBwcmVz
ZW50YXRpb24gZGVmZXJyYWwpLCBhbmQgZGVwZW5kcyBvbiB0aGUgc3RhdGUgb2YgYF9pbWFnZUFu
YWx5c2lzTWFya3VwUmVzdWx0c2AuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBwZXJmb3Jt
SW1hZ2VBbmFseXNpc01hcmt1cDpdKToKKworICAgICAgICBBZGQgbG9naWMgdG8gaGFuZGxlIHRo
ZSBuZXcgYWN0aW9uIGJ5IGNhbGxpbmcgaW50byBXZWJQYWdlUHJveHkgdG8gKGJhc2ljYWxseSkg
cGFzdGUgdGhlIG1vZGlmaWVkIGltYWdlIGRhdGEKKyAgICAgICAgYWZ0ZXIgdHJhbnNjb2Rpbmcg
aXQgdG8gbWF0Y2ggdGhlIGltYWdlIGVsZW1lbnQncyBvcmlnaW5hbCBzb3VyY2UgdHlwZS4gQWZ0
ZXIgIzIzNjQwNiwgdGhpcyBjb2RlcGF0aCBpcyBub3cKKyAgICAgICAgYXZhaWxhYmxlIG9uIGFs
bCBDb2NvYSBwbGF0Zm9ybXMgKGFzIG9wcG9zZWQgdG8gbWFjT1Mtb25seSkuCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBkb0FmdGVyQ29tcHV0aW5nSW1hZ2VBbmFseXNpc1Jlc3VsdHNGb3JN
YXJrdXA6XSk6CisKKyAgICAgICAgVXNlIHRoZSBuZXcgYHJlcXVlc3RJbWFnZUJpdG1hcGAgSVBD
IG1lc3NhZ2UgdG8gZ3JhYiBhIGJpdG1hcCBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpbWFn
ZSwgY2FsbCBvdXQgdG8KKyAgICAgICAgVmlzaW9uS2l0IHRvIHBlcmZvcm0gaW1hZ2UgYW5hbHlz
aXMsIGFuZCB0aGVuIGNhY2hlIHRoZSByZXN1bHRpbmcgaW1hZ2UuIEFmdGVyIGFsbCBvZiB0aGlz
IGlzIGRvbmUsIHdlIHByb2NlZWQKKyAgICAgICAgd2l0aCBzaG93aW5nIHRoZSBjYWxsb3V0IGJh
ci4KKworICAgICAgICBJbiBhIGZvbGxvd3VwLCB3ZSBzaG91bGQgZW5mb3JjZSBzb21lIChyZWFz
b25hYmxlKSB1cHBlciBib3VuZCBvbiB0aGUgYW1vdW50IG9mIHRpbWUgYnkgd2hpY2ggdGhlIGNh
bGxvdXQgYmFyCisgICAgICAgIGNhbiBiZSBkZWxheWVkLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3NlbGVjdGlvbkNoYW5nZWRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRV
cEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlvbnNdKToKKworICAgICAgICBSZWZhY3RvciBl
eGlzdGluZyBsb2dpYyBmb3Igc3VwcGx5aW5nIGFkZGl0aW9uYWwgY2FsbG91dCBiYXIgbWVudSBp
dGVtcywgc3VjaCB0aGF0IHdlIHVwZGF0ZSBpdGVtcyBhcyBuZWVkZWQgZm9yCisgICAgICAgIGJv
dGggUXVpY2sgTm90ZSBhcyB3ZWxsIGFzIEltYWdlIE1hcmt1cC4gTm90ZSB0aGF0IHdlIG5lZWQg
dG8gcHJlc2VydmUgYW55IGV4aXN0aW5nIG1lbnUgaXRlbXMgaW4gdGhlIHNoYXJlZAorICAgICAg
ICBVSU1lbnVDb250cm9sbGVyLCBzaW5jZSB0aGUgV2ViS2l0IGNsaWVudCAoZS5nLiBNYWlsKSBt
YXkgaGF2ZSBhbHJlYWR5IHN1cHBsaWVkIGN1c3RvbSBtZW51IGl0ZW1zLiBUaGlzCisgICAgICAg
IGN1cnJlbnRseSBkb2VlcyBub3QgYWZmZWN0IFF1aWNrIE5vdGUgc2luY2UgdGhlIG9ubHkgaW50
ZXJuYWwgY2xpZW50IHRoYXQgZW5hYmxlcyBRdWljayBOb3RlIGlzIFNhZmFyaSwgd2hpY2gKKyAg
ICAgICAgZG9lcyBub3QgYXR0ZW1wdCB0byBhZGQgYW55IG9mIGl0cyBvd24gaXRlbXM7IGhvd2V2
ZXIsICJNYXJrdXAgSW1hZ2UiIG5lZWRzIHRvIGJlIGF2YWlsYWJsZSBpbiBNYWlsIG9uIGlPUyBh
cworICAgICAgICB3ZWxsLCB3aGljaCBkb2VzIHVzZSBjdXN0byBtZW51IGl0ZW1zLgorCisgICAg
ICAgIChmaW5kTWVudUl0ZW1XaXRoQWN0aW9uKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1
cGRhdGVBcHBIaWdobGlnaHRNZW51SXRlbXM6XSk6CisKKyAgICAgICAgTWFrZSB0aGlzIGFkanVz
dCB0aGUgZ2l2ZW4gbXV0YWJsZSBhcnJheSBvZiBVSU1lbnVJdGVtcywgd2hpY2ggYXJlIHRoZW4g
Y29tYmluZWQgd2l0aCBhbnkgbWFya3VwIG1lbnUgaXRlbXMKKyAgICAgICAgd2hlbiBzZXR0aW5n
IGN1c3RvbSBpdGVtcyBvbiB0aGUgc2hhcmVkIG1lbnUgY29udHJvbGxlci4KKworICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IHByb3ZpZGVEYXRhRm9ySXRlbTpdKToKKworICAgICAgICBBZGp1c3Qg
dGhpcyB0byB1c2UgdGhlIG5ldyBgdHJhbnNjb2RlYCBoZWxwZXIgZnVuY3Rpb24sIGRlY2xhcmVk
IGFib3ZlLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NldFVwSW1hZ2VBbmFseXNpc10p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90ZWFyRG93bkltYWdlQW5hbHlzaXNdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVkZWRdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RJbWFnZUJpdG1hcCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9y
U3RhdGUgY29uc3QpOgorCisgICAgICAgIENvbXB1dGUgYW5kIHBvcHVsYXRlIHRoZSBuZXcgYHNl
bGVjdGVkRWRpdGFibGVJbWFnZWAgZWxlbWVudCBjb250ZXh0OyB0byBhY2hpZXZlIHRoaXMsIHdl
IHVzZSBgVGV4dEl0ZXJhdG9yYCB0bworICAgICAgICBzY2FuIGZvciBhbiBpbWFnZSBlbGVtZW50
LCBhbmQgYmFpbCBpbW1lZGlhdGVseSBpZiB3ZSBlaXRoZXIgZmluZCBhbnl0aGluZyB0aGF0IGlz
IG5vdCBhbiBpbWFnZSwgb3IgZmluZCBtb3JlCisgICAgICAgIHRoYW4gb25lIGltYWdlLgorCiAy
MDIyLTAyLTA5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFN1cHBvcnQgYFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJk
RGF0YSgpYCBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmlu
ZGV4IDljNzNjZTJiNmY4MGYxYzFkZjVjNDdmNzI2MTQ0ZDgzYjdiODQxNGYuLjQ3ZWE5ODllOTZj
MzAwNGFmYzM4OGNhYTdiYWY3MGQ3YjJjNmJhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaApAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICBJbWFnZU9i
c2VydmVyKiBpbWFnZU9ic2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZU9ic2VydmVyOyB9
CiAgICAgdm9pZCBzZXRJbWFnZU9ic2VydmVyKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1f
aW1hZ2VPYnNlcnZlciA9IG9ic2VydmVyOyB9CiAgICAgVVJMIHNvdXJjZVVSTCgpIGNvbnN0Owot
ICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBt
aW1lVHlwZSgpIGNvbnN0OwogICAgIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBj
b25zdDsKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBTdHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFj
ZVRpbGUsIFJlcGVhdFRpbGUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9VVElSZWdpc3RyeS5oCmluZGV4IDRiMDE1YWZjOTVjYWYyMzA4NmExY2JiNjFlM2U1
NjRmNzdkMGI5YmIuLjE0YWIyMmI0Y2MyOGU3NTFkYTVhMjgzNmM3NzNiN2Y0ZTNjOTE3NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnku
aApAQCAtMzQsNyArMzQsNyBAQCBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZQogSGFzaFNldDxTdHJp
bmc+JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpOwogV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
OwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0Zv
clRlc3RpbmcoY29uc3QgU3RyaW5nJik7Ci1ib29sIGlzU3VwcG9ydGVkSW1hZ2VUeXBlKGNvbnN0
IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1N1cHBvcnRlZEltYWdlVHlwZShjb25z
dCBTdHJpbmcmKTsKIGJvb2wgaXNHSUZJbWFnZVR5cGUoU3RyaW5nVmlldyk7CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxp
dGllcy5oCmluZGV4IDNhMjM2YTI0Y2RjODkwNDQzZjRkOTJiNWM2ZGMwODdiZmFmNWZjYmIuLmFm
NzU4OGViNDJhMTExOTI5MWRhOGYxOGVkMmQ4YmFhZDIxMzA1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaApA
QCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGJvb2wgaXNMaXZlVGV4dEF2YWls
YWJsZUFuZEVuYWJsZWQoKTsKIGJvb2wgdGV4dFJlY29nbml0aW9uRW5oYW5jZW1lbnRzU3lzdGVt
RmVhdHVyZUVuYWJsZWQoKTsKIGJvb2wgaW1hZ2VBbmFseXNpc1F1ZXVlU3lzdGVtRmVhdHVyZUVu
YWJsZWQoKTsKK2Jvb2wgaXNJbWFnZUFuYWx5c2lzTWFya3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQo
KTsKIAogV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0IG1ha2VUZXh0UmVjb2duaXRpb25S
ZXN1bHQoQ29jb2FJbWFnZUFuYWx5c2lzICopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLm1tCmluZGV4IDA5ZjQ1
NzIyOWE0MGU3NGNiNzQ2YzBlYmQ2M2YzZWVhOGZlNzczNmQuLjcxYjJlMjYyMzA2NjU5NDlkODVl
NDViMmNiZmNiZTAyZWY2YzVhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLm1tCkBAIC0xNTEsNiArMTUxLDE1
IEBAIGJvb2wgaW1hZ2VBbmFseXNpc1F1ZXVlU3lzdGVtRmVhdHVyZUVuYWJsZWQoKQogI2VuZGlm
CiB9CiAKK2Jvb2wgaXNJbWFnZUFuYWx5c2lzTWFya3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKQor
eworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgcmV0dXJuIHRy
dWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiAjZW5kaWYKIAogYm9v
bCBpc0xpdmVUZXh0QXZhaWxhYmxlQW5kRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JT
dGF0ZS5jcHAKaW5kZXggNjdiZDZmMTJhNTU0NzE4OTg0MTM0NmNkYjc1YTg1NTA1ZmY2NzAxYS4u
M2MyYWU0ZWViNTNjMzc4NjdhMjEyZjZlZjBkZTVlZDdhZDY4MDhmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VkaXRvclN0YXRlLmNwcApAQCAtMTQ1LDYgKzE0NSw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6
OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGVuY29kZXIgPDwgY2FyZXRDb2xvcjsKICAgICBlbmNvZGVyIDw8IHNlbGVjdGlvblN0YXJ0SXNB
dFBhcmFncmFwaEJvdW5kYXJ5OwogICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uRW5kSXNBdFBhcmFn
cmFwaEJvdW5kYXJ5OworICAgIGVuY29kZXIgPDwgc2VsZWN0ZWRFZGl0YWJsZUltYWdlOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uQm91bmRpbmdS
ZWN0OwpAQCAtMjI4LDYgKzIyOSw4IEBAIGJvb2wgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRh
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQb3N0TGF5b3V0RGF0YSYKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNlbGVjdGlvbkVu
ZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3RlZEVkaXRhYmxlSW1hZ2UpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuc2VsZWN0aW9uQm91bmRpbmdSZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0
b3JTdGF0ZS5oCmluZGV4IGQyN2I5NTkyYTE0ODQxZGUwYTQxMDE0ZjZkMDVkN2U2NTU1NWQyNDcu
LjEzMWY5ZTgxMjA3YjkxOGUzYTJhMmU1M2Y4ZTg2M2M2ZTg0YzZjMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdG9yU3RhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Xcml0aW5nRGlyZWN0aW9uLmg+CkBAIC0xMjQsNiArMTI1LDcgQEAg
c3RydWN0IEVkaXRvclN0YXRlIHsKICAgICAgICAgYm9vbCBhdFN0YXJ0T2ZTZW50ZW5jZSB7IGZh
bHNlIH07CiAgICAgICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRJc0F0UGFyYWdyYXBoQm91bmRhcnkg
eyBmYWxzZSB9OwogICAgICAgICBib29sIHNlbGVjdGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFy
eSB7IGZhbHNlIH07CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRl
eHQ+IHNlbGVjdGVkRWRpdGFibGVJbWFnZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25Cb3VuZGluZ1JlY3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGJhZjViMGM5
OWQwMWY2YzgxYTc1MWVmOGEwOGVjNmRiZGE1NDkzZmQuLjc0ZTc4ZWQ4ODYzNGU4OGRjYThhN2Rl
MTE2MjAzOWExMjA5MWZmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0xNTI4LDkgKzE1MjgsNyBAQCAtICh2b2lkKWRpZE1vdmVU
b1dpbmRvdwogICAgIF9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OmFsbEZsYWdzKCkpOwogICAgIF9wYWdlLT53ZWJWaWV3RGlkTW92ZVRvV2luZG93
KCk7CiAKLSNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgW19jb250ZW50VmlldyBzZXRV
cEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVkZWRdOwotI2VuZGlmCisgICAgW19jb250ZW50VmlldyBz
ZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlvbnNdOwogfQogCiAtICh2b2lkKV9zZXRP
cGFxdWVJbnRlcm5hbDooQk9PTClvcGFxdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDk0OWQ4OWE4YzQ4OGQ1NDQ5YjMxZTc0YmMxZjQxZjAyNmY3OTBiYmQu
LjllYzVlZmQyNGYyYzk4NzAzMzZiNTI2M2YyMDY0NWFhM2ZjNDdmNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODc5OCw2ICs4Nzk4LDE2IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzdGFydEltYWdlQW5hbHlzaXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
KQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEltYWdlQml0bWFwKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYs
IGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb24pCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1
ZXN0SW1hZ2VCaXRtYXAoZWxlbWVudENvbnRleHQpLCBXVEZNb3ZlKGNvbXBsZXRpb24pKTsKK30K
KwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiBNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJveHk6Om1lZGlhS2V5U3lzdGVtUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggYjNkYWRjMGQ5MmE2ZTEwOGI2NDE4NTE5OTA2MTRhMjE1OWJkNTU5OS4uZTQ0ZDE4OTM3
ZjFiMmNiMTM0NWEwZjU5NDY3YjFlMzJhZTc4OTEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwNDQsNiArMjA0NCw4IEBAIHB1YmxpYzoKICAgICBXS1F1aWNr
TG9va1ByZXZpZXdDb250cm9sbGVyICpxdWlja0xvb2tQcmV2aWV3Q29udHJvbGxlcigpIGNvbnN0
IHsgcmV0dXJuIG1fcXVpY2tMb29rUHJldmlld0NvbnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgog
CisgICAgdm9pZCByZXF1ZXN0SW1hZ2VCaXRtYXAoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRl
eHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
JiwgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSk+JiYpOworCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGJvb2wgaXNRdWFyYW50aW5lZEFuZE5vdFVzZXJBcHByb3ZlZChjb25zdCBTdHJpbmcm
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDdmZjdhN2Y1ODgzZjM4MjNhYzUxM2U3NmZiMGZm
NDA3ODJkOTM3ODcuLmY0MWI1MjM3ZmYxZDZlM2Q3MGNhMmNmMmY3ZDYxM2E0N2JlNDgzNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmgKQEAgLTI0NSw2ICsyNDUsMTIgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25E
YXRhIHsKICAgICBDR1JlY3QgdGV4dExhc3RSZWN0OwogfTsKIAorc3RydWN0IEltYWdlQW5hbHlz
aXNNYXJrdXBSZXN1bHRzIHsKKyAgICBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Owor
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiByZXN1bHQ7CisgICAgU3RyaW5nIHByZWZlcnJlZE1J
TUVUeXBlOworfTsKKwogZW51bSBjbGFzcyBQcm9jZWVkV2l0aFRleHRTZWxlY3Rpb25JbkltYWdl
IDogYm9vbCB7CiAgICAgTm8sCiAgICAgWWVzCkBAIC01MzEsNiArNTM3LDkgQEAgdXNpbmcgSW1h
Z2VBbmFseXNpc1JlcXVlc3RJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZUFuYWx5
c2lzUmVxdWVzdElkZW4KICNlbmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKICNlbmRpZiAvLyBFTkFC
TEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdWludDMyX3QgX2Z1bGxzY3JlZW5WaWRlb0V4dHJhY3Rp
b25SZXF1ZXN0SWRlbnRpZmllcjsKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1F
TlRTKQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0
cz4gX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzOworI2VuZGlmCiB9CiAKIEBlbmQKQEAgLTc3
Myw5ICs3ODIsNyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xB
UkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAoV2ViQ29yZTo6RGF0YU93
bmVyVHlwZSlfZGF0YU93bmVyRm9yUGFzdGVib2FyZDooV2ViS2l0OjpQYXN0ZWJvYXJkQWNjZXNz
SW50ZW50KWludGVudDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAo
dm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVkZWQ7Ci0jZW5kaWYKKy0gKHZvaWQpc2V0
VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rpb25zOwogCiAjaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTKQogLSAodm9pZClfZW5kSW1hZ2VBbmFseXNpc0dlc3R1cmVEZWZlcnJhbDooV2ViS2l0
OjpTaG91bGRQcmV2ZW50R2VzdHVyZXMpc2hvdWxkUHJldmVudEdlc3R1cmVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggYjYwMTQ4OWNkNjQ3ZjZlNGY2M2QzZDI0NWU2ZDViOTMxMjI4ZWQyNC4uZDViMmRl
NjExODdiNmMzMGY1MzlkNjZhNWFjZjRlYjI5MDIyMmM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0x
MjcsNiArMTI3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UZXh0UmVjb2duaXRpb25SZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVG91Y2hBY3Rpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxl
Y3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5ZXJFeHRyYXMuaD4KQEAgLTM3
Miw2ICszNzMsMjQgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUHJldmVudFRleHRTZWxl
Y3Rpb24geyBmYWxzZSB9OwogfTsKIAorI2lmIEVOQUJMRShRVUlDS19MT09LKSB8fCBFTkFCTEUo
SU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCitzdGF0aWMgUmV0YWluUHRyPE5TRGF0YT4g
dHJhbnNjb2RlKENHSW1hZ2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIHR5cGVJZGVudGlmaWVyKQor
eworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIGRhdGEg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGVzdGlu
YXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKChfX2JyaWRn
ZSBDRk11dGFibGVEYXRhUmVmKWRhdGEuZ2V0KCksIHR5cGVJZGVudGlmaWVyLCAxLCBuaWwpKTsK
KyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2Us
IG5pbCk7CisgICAgaWYgKCFDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5n
ZXQoKSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gZGF0YTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShRVUlDS19MT09LKSB8fCBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5D
RU1FTlRTKQorCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKQEAgLTQwNzEsNiArNDA5MCwxMCBAQCAtIChpZCl0YXJnZXRGb3JBY3Rpb246
KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAgICAgICAgIHJldHVybiBzZWxmLnNo
b3VsZEFsbG93QXBwSGlnaGxpZ2h0Q3JlYXRpb24gJiYgX3BhZ2UtPmFwcEhpZ2hsaWdodHNWaXNp
YmlsaXR5KCkgPyBzZWxmIDogbmlsOwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKGNyZWF0
ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90ZVdpdGhSYW5nZTopKQogICAgICAgICByZXR1cm4gc2Vs
Zi5zaG91bGRBbGxvd0FwcEhpZ2hsaWdodENyZWF0aW9uICYmICFfcGFnZS0+YXBwSGlnaGxpZ2h0
c1Zpc2liaWxpdHkoKSA/IHNlbGYgOiBuaWw7CisjZW5kaWYKKyNpZiBFTkFCTEUoSU1BR0VfQU5B
TFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBlcmZvcm1J
bWFnZUFuYWx5c2lzTWFya3VwOikpCisgICAgICAgIHJldHVybiBzZWxmLmNhblBlcmZvcm1JbWFn
ZUFuYWx5c2lzTWFya3VwID8gc2VsZiA6IG5pbDsKICNlbmRpZgogICAgIHJldHVybiBbX3dlYlZp
ZXcgdGFyZ2V0Rm9yQWN0aW9uOmFjdGlvbiB3aXRoU2VuZGVyOnNlbmRlcl07CiB9CkBAIC00NTk3
LDM2ICs0NjIwLDE2OCBAQCAtICh2b2lkKXJlcXVlc3RSZWN0c1RvRXZhZGVGb3JTZWxlY3Rpb25D
b21tYW5kc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOUwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKFtzZWxmIF9zaG91bGRTdXBwcmVzc1NlbGVjdGlvbkNvbW1hbmRz
XSB8fCBzZWxmLndlYlZpZXcuX2VkaXRhYmxlKSB7CisgICAgaWYgKFtzZWxmIF9zaG91bGRTdXBw
cmVzc1NlbGVjdGlvbkNvbW1hbmRzXSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBd
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChfZm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi5lbGVtZW50VHlwZSAhPSBXZWJLaXQ6OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxl
ICYmIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlICE9IFdlYktpdDo6SW5w
dXRUeXBlOjpUZXh0QXJlYSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIHJlcXVlc3RSZWN0c1RvRXZhZGVJZk5lZWRl
ZCA9IFtzdGFydFRpbWUgPSBBcHByb3hpbWF0ZVRpbWU6Om5vdygpLCB3ZWFrU2VsZiA9IFdlYWtP
YmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBjb21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5n
ZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
KEBbIF0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAvLyBHaXZlIHRo
ZSBwYWdlIHNvbWUgdGltZSB0byBwcmVzZW50IGN1c3RvbSBlZGl0aW5nIFVJIGJlZm9yZSBhdHRl
bXB0aW5nIHRvIGRldGVjdCBhbmQgZXZhZGUgaXQuCi0gICAgYXV0byBkZWxheUJlZm9yZVNob3dp
bmdDYWxsb3V0QmFyID0gMC4yNV9zOwotICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoQWZ0
ZXIoZGVsYXlCZWZvcmVTaG93aW5nQ2FsbG91dEJhciwgW2NvbXBsZXRpb24gPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZp
ZXc+KHNlbGYpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrU2VsZikgeworICAgICAg
ICBpZiAoW3N0cm9uZ1NlbGYgd2ViVmlld10uX2VkaXRhYmxlKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uKEBbIF0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
YXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7Ci0gICAgICAgIGlmICghc3Ryb25nU2Vs
Zi0+X3BhZ2UpIHsKKyAgICAgICAgYXV0byBmb2N1c2VkRWxlbWVudFR5cGUgPSBzdHJvbmdTZWxm
LT5fZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZTsKKyAgICAgICAgaWYgKGZv
Y3VzZWRFbGVtZW50VHlwZSAhPSBXZWJLaXQ6OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxlICYm
IGZvY3VzZWRFbGVtZW50VHlwZSAhPSBXZWJLaXQ6OklucHV0VHlwZTo6VGV4dEFyZWEpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb24oQFsgXSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+cmVxdWVzdEV2YXNpb25SZWN0c0Fib3Zl
U2VsZWN0aW9uKFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKGF1dG8mIHJlY3Rz
KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uKGNyZWF0ZU5TQXJyYXkocmVjdHMpLmdldCgpKTsK
KyAgICAgICAgLy8gR2l2ZSB0aGUgcGFnZSBzb21lIHRpbWUgdG8gcHJlc2VudCBjdXN0b20gZWRp
dGluZyBVSSBiZWZvcmUgYXR0ZW1wdGluZyB0byBkZXRlY3QgYW5kIGV2YWRlIGl0LgorICAgICAg
ICBhdXRvIGRlbGF5QmVmb3JlU2hvd2luZ0NhbGxvdXRCYXIgPSBzdGQ6Om1heCgwX3MsIDAuMjVf
cyAtIChBcHByb3hpbWF0ZVRpbWU6Om5vdygpIC0gc3RhcnRUaW1lKSk7CisgICAgICAgIFdvcmtR
dWV1ZTo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoZGVsYXlCZWZvcmVTaG93aW5nQ2FsbG91dEJhciwg
W2NvbXBsZXRpb24sIHdlYWtTZWxmXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gc3Ry
b25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICAgICAgaWYgKCFzdHJvbmdTZWxmKSB7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbihAWyBdKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghc3Ryb25nU2VsZi0+X3BhZ2Up
IHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0pOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhZ2UtPnJl
cXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihbY29tcGxldGlvbiA9IFdURk1vdmUoY29t
cGxldGlvbildIChhdXRvJiByZWN0cykgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb24oY3Jl
YXRlTlNBcnJheShyZWN0cykuZ2V0KCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwor
ICAgIH07CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIFtz
ZWxmIGRvQWZ0ZXJDb21wdXRpbmdJbWFnZUFuYWx5c2lzUmVzdWx0c0Zvck1hcmt1cDpXVEZNb3Zl
KHJlcXVlc3RSZWN0c1RvRXZhZGVJZk5lZWRlZCldOworI2Vsc2UKKyAgICByZXF1ZXN0UmVjdHNU
b0V2YWRlSWZOZWVkZWQoKTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lT
X0VOSEFOQ0VNRU5UUykKKworLSAodm9pZCl1cGRhdGVJbWFnZUFuYWx5c2lzTWFya3VwTWVudUl0
ZW1zOihOU011dGFibGVBcnJheTxVSU1lbnVJdGVtICo+ICopdXBkYXRlZEl0ZW1zCit7CisgICAg
YXV0byBjdXJyZW50SXRlbSA9IGZpbmRNZW51SXRlbVdpdGhBY3Rpb24odXBkYXRlZEl0ZW1zLCBA
c2VsZWN0b3IocGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KSk7CisgICAgYXV0byYgZWRpdG9y
U3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKTsKKyAgICBpZiAoIVdlYktpdDo6aXNJbWFnZUFu
YWx5c2lzTWFya3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKSB8fCBlZGl0b3JTdGF0ZS5pc01pc3Np
bmdQb3N0TGF5b3V0RGF0YSB8fCAhZWRpdG9yU3RhdGUucG9zdExheW91dERhdGEoKS5zZWxlY3Rl
ZEVkaXRhYmxlSW1hZ2UpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVtKQorICAgICAgICAgICAg
W3VwZGF0ZWRJdGVtcyByZW1vdmVPYmplY3Q6Y3VycmVudEl0ZW1dOworICAgIH0gZWxzZSBpZiAo
IWN1cnJlbnRJdGVtKQorICAgICAgICBbdXBkYXRlZEl0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtb
VUlNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXRUJfVUlfU1RSSU5HKCJNYXJrdXAgSW1h
Z2UiLCAiSW1hZ2UgYW5hbHlzaXMgbWFya3VwIG1lbnUgaXRlbSIpIGFjdGlvbjpAc2VsZWN0b3Io
cGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KV0pLmdldCgpXTsKK30KKworLSAoQk9PTCljYW5Q
ZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cAoreworICAgIGlmICghV2ViS2l0Ojppc0ltYWdlQW5h
bHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gTk87CisK
KyAgICBpZiAoIV9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cykKKyAgICAgICAgcmV0dXJuIE5P
OworCisgICAgYXV0byBbZWxlbWVudENvbnRleHQsIGltYWdlLCBwcmVmZXJyZWRNSU1FVHlwZV0g
PSAqX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzOworICAgIHJldHVybiAhX3BhZ2UtPmVkaXRv
clN0YXRlKCkuaXNNaXNzaW5nUG9zdExheW91dERhdGEgJiYgZWxlbWVudENvbnRleHQgPT0gX3Bh
Z2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3RlZEVkaXRhYmxlSW1hZ2U7
Cit9CisKKy0gKHZvaWQpcGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KGlkKXNlbmRlcgorewor
ICAgIGlmICghc2VsZi5jYW5QZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBbZWxlbWVudENvbnRleHQsIGltYWdlLCBwcmVmZXJyZWRNSU1FVHlw
ZV0gPSAqX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzOworICAgIGF1dG8gdGFyZ2V0VHlwZSA9
IFJldGFpblB0ciB7IFVUVHlwZVRJRkYuaWRlbnRpZmllciB9OworICAgIGlmICghcHJlZmVycmVk
TUlNRVR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIE5TU3RyaW5nICpwcmVmZXJyZWRUeXBlSWRl
bnRpZmllciA9IFtVVFR5cGUgdHlwZVdpdGhNSU1FVHlwZTpwcmVmZXJyZWRNSU1FVHlwZSBjb25m
b3JtaW5nVG9UeXBlOlVUVHlwZUltYWdlXS5pZGVudGlmaWVyOworICAgICAgICBpZiAoV2ViQ29y
ZTo6aXNTdXBwb3J0ZWRJbWFnZVR5cGUocHJlZmVycmVkVHlwZUlkZW50aWZpZXIpKQorICAgICAg
ICAgICAgdGFyZ2V0VHlwZSA9IHByZWZlcnJlZFR5cGVJZGVudGlmaWVyOworICAgIH0KKworICAg
IGlmIChhdXRvIGRhdGEgPSBXZWJLaXQ6OnRyYW5zY29kZShpbWFnZS5nZXQoKSwgKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXRhcmdldFR5cGUuZ2V0KCkpOyBbZGF0YSBsZW5ndGhdKQorICAgICAgICBf
cGFnZS0+cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh7IFN0cmluZyB7IHRhcmdl
dFR5cGUuZ2V0KCkgfSB9LCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBieXRl
c10pLCBbZGF0YSBsZW5ndGhdIH0pOworfQorCistICh2b2lkKWRvQWZ0ZXJDb21wdXRpbmdJbWFn
ZUFuYWx5c2lzUmVzdWx0c0Zvck1hcmt1cDooQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKWNv
bXBsZXRpb24KK3sKKyAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNNaXNzaW5nUG9zdExh
eW91dERhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byBlbGVtZW50VG9BbmFseXplID0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9z
dExheW91dERhdGEoKS5zZWxlY3RlZEVkaXRhYmxlSW1hZ2U7CisgICAgaWYgKF9pbWFnZUFuYWx5
c2lzTWFya3VwUmVzdWx0cyAmJiBfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHMtPmVsZW1lbnQg
PT0gZWxlbWVudFRvQW5hbHl6ZSkgeworICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHMgPSBzdGQ6Om51
bGxvcHQ7CisKKyAgICBpZiAoIWVsZW1lbnRUb0FuYWx5emUpIHsKKyAgICAgICAgY29tcGxldGlv
bigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3BhZ2UtPnJlcXVlc3RJbWFnZUJp
dG1hcCgqZWxlbWVudFRvQW5hbHl6ZSwgW2NvbnRleHQgPSAqZWxlbWVudFRvQW5hbHl6ZSwgY29t
cGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbiksIHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tD
b250ZW50Vmlldz4oc2VsZildKGF1dG8mIGltYWdlRGF0YSwgYXV0byYgc291cmNlTUlNRVR5cGUp
IG11dGFibGUgeworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAg
ICAgICAgaWYgKCFzdHJvbmdTZWxmKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGltYWdlQml0bWFwID0g
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZURhdGEpOworICAgICAgICBpZiAo
IWltYWdlQml0bWFwKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZUJpdG1hcC0+
bWFrZUNHSW1hZ2UoKTsKKyAgICAgICAgaWYgKCFjZ0ltYWdlKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBG
SVhNRTogQ2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBhdm9pZCB0aGlzIGV4dHJhIHRyYW5zY29kaW5n
IHN0ZXAgb25jZSBWaXNpb25LaXQgc3RhcnRzIHVzaW5nIGBtZWRpYWFuYWx5c2lzZGAgZm9yIHRo
aXMuCisgICAgICAgIGF1dG8gdGlmZkRhdGEgPSBXZWJLaXQ6OnRyYW5zY29kZShjZ0ltYWdlLmdl
dCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5pZGVudGlmaWVyKTsKKyAgICAg
ICAgaWYgKCFbdGlmZkRhdGEgbGVuZ3RoXSkgeworICAgICAgICAgICAgY29tcGxldGlvbigpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmV0YWluUHRyIHRyYW5z
Y29kZWRJbWFnZSA9IFtVSUltYWdlIGltYWdlV2l0aERhdGE6dGlmZkRhdGEuZ2V0KCldOworICAg
ICAgICBpZiAoIXRyYW5zY29kZWRJbWFnZSkgeworICAgICAgICAgICAgY29tcGxldGlvbigpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgV2ViS2l0OjpyZXF1ZXN0
SW1hZ2VBbmFseXNpc01hcmt1cChbdHJhbnNjb2RlZEltYWdlIENHSW1hZ2VdLCBbc291cmNlTUlN
RVR5cGUsIGNvbnRleHQsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCB3ZWFrU2Vs
Zl0oQ0dJbWFnZVJlZiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBzdHJvbmdT
ZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICAgIHN0
cm9uZ1NlbGYtPl9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cyA9IHsgeyBjb250ZXh0LCB7IHJl
c3VsdCB9LCBzb3VyY2VNSU1FVHlwZSB9IH07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgc3Ryb25nU2VsZi0+X2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzID0gc3RkOjpudWxs
b3B0OworICAgICAgICAgICAgY29tcGxldGlvbigpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0K
IAorI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisKIC0gKHZv
aWQpc2VsZWN0UG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF9hdXRvY29ycmVjdGlv
bkNvbnRleHROZWVkc1VwZGF0ZSA9IFlFUzsKQEAgLTczMTMsMTAgKzc0NjgsOCBAQCAtICh2b2lk
KV91cGRhdGVTZWxlY3Rpb25Bc3Npc3RhbnRTdXBwcmVzc2lvblN0YXRlCiAtICh2b2lkKV9zZWxl
Y3Rpb25DaGFuZ2VkCiB7CiAgICAgX2F1dG9jb3JyZWN0aW9uQ29udGV4dE5lZWRzVXBkYXRlID0g
WUVTOwotI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAgICBbc2VsZiBzZXRVcEFwcEhpZ2hs
aWdodE1lbnVzSWZOZWVkZWRdOwotI2VuZGlmCiAKKyAgICBbc2VsZiBzZXRVcEFkZGl0aW9uYWxN
ZW51Q29udHJvbGxlckFjdGlvbnNdOwogICAgIFtzZWxmIF91cGRhdGVTZWxlY3Rpb25Bc3Npc3Rh
bnRTdXBwcmVzc2lvblN0YXRlXTsKIAogICAgIF9jYWNoZWRTZWxlY3RlZFRleHRSYW5nZSA9IG5p
bDsKQEAgLTk2MDIsMjEgKzk3NTUsNDcgQEAgLSAodm9pZClfbG9va3VwR2VzdHVyZVJlY29nbml6
ZWQ6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogfQogI2VuZGlmCiAK
Ky0gKHZvaWQpc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rpb25zCit7CisgICAgYXV0
byB1cGRhdGVkSXRlbXMgPSBhZG9wdE5TKFVJTWVudUNvbnRyb2xsZXIuc2hhcmVkTWVudUNvbnRy
b2xsZXIubWVudUl0ZW1zLm11dGFibGVDb3B5ID86IFtOU011dGFibGVBcnJheTxVSU1lbnVJdGVt
ICo+IG5ld10pOworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAg
W3NlbGYgdXBkYXRlSW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJdGVtczp1cGRhdGVkSXRlbXMuZ2V0
KCldOworI2VuZGlmCisjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQorICAgIFtzZWxmIHVwZGF0
ZUFwcEhpZ2hsaWdodE1lbnVJdGVtczp1cGRhdGVkSXRlbXMuZ2V0KCldOworI2VuZGlmCisgICAg
VUlNZW51Q29udHJvbGxlci5zaGFyZWRNZW51Q29udHJvbGxlci5tZW51SXRlbXMgPSB1cGRhdGVk
SXRlbXMuZ2V0KCk7Cit9CisKK3N0YXRpYyBVSU1lbnVJdGVtICpmaW5kTWVudUl0ZW1XaXRoQWN0
aW9uKE5TQXJyYXk8VUlNZW51SXRlbSAqPiAqaXRlbXMsIFNFTCBhY3Rpb24pCit7CisgICAgZm9y
IChVSU1lbnVJdGVtICppdGVtIGluIGl0ZW1zKSB7CisgICAgICAgIGlmIChpdGVtLmFjdGlvbiA9
PSBhY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CisgICAgcmV0dXJuIG5p
bDsKK30KKwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAotLSAodm9pZClzZXRVcEFwcEhp
Z2hsaWdodE1lbnVzSWZOZWVkZWQKKy0gKHZvaWQpdXBkYXRlQXBwSGlnaGxpZ2h0TWVudUl0ZW1z
OihOU011dGFibGVBcnJheTxVSU1lbnVJdGVtICo+ICopdXBkYXRlZEl0ZW1zCiB7Ci0gICAgaWYg
KCFfcGFnZS0+cHJlZmVyZW5jZXMoKS5hcHBIaWdobGlnaHRzRW5hYmxlZCgpIHx8ICFzZWxmLndp
bmRvdyB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSkKKyAgICBhdXRv
IGN1cnJlbnRRdWlja05vdGVJdGVtID0gZmluZE1lbnVJdGVtV2l0aEFjdGlvbih1cGRhdGVkSXRl
bXMsIEBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdl
OikpOworICAgIGF1dG8gbmV3UXVpY2tOb3RlSXRlbSA9IGZpbmRNZW51SXRlbVdpdGhBY3Rpb24o
dXBkYXRlZEl0ZW1zLCBAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVpY2tOb3RlV2l0
aFJhbmdlOikpOworCisgICAgaWYgKCFfcGFnZS0+cHJlZmVyZW5jZXMoKS5hcHBIaWdobGlnaHRz
RW5hYmxlZCgpIHx8ICFzZWxmLndpbmRvdyB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0
aW9uSXNSYW5nZSkgeworICAgICAgICBpZiAoY3VycmVudFF1aWNrTm90ZUl0ZW0pCisgICAgICAg
ICAgICBbdXBkYXRlZEl0ZW1zIHJlbW92ZU9iamVjdDpjdXJyZW50UXVpY2tOb3RlSXRlbV07Cisg
ICAgICAgIGlmIChuZXdRdWlja05vdGVJdGVtKQorICAgICAgICAgICAgW3VwZGF0ZWRJdGVtcyBy
ZW1vdmVPYmplY3Q6bmV3UXVpY2tOb3RlSXRlbV07CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBmb3IgKFVJTWVudUl0ZW0gKm1lbnVJdGVtIGluIFtbVUlNZW51Q29udHJvbGxlciBzaGFyZWRN
ZW51Q29udHJvbGxlcl0gbWVudUl0ZW1zXSkgewotICAgICAgICBpZiAoW21lbnVJdGVtIGFjdGlv
bl0gPT0gQHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvckN1cnJlbnRRdWlja05vdGVXaXRoUmFu
Z2U6KSB8fCBbbWVudUl0ZW0gYWN0aW9uXSA9PSBAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9y
TmV3UXVpY2tOb3RlV2l0aFJhbmdlOikpCi0gICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAotICAgIGF1dG8gYWRkSGlnaGxpZ2h0Q3VycmVudFF1aWNrTm90ZUl0ZW0gPSBhZG9wdE5TKFtb
VUlNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1U
YWdBZGRIaWdobGlnaHRUb0N1cnJlbnRRdWlja05vdGUoKSBhY3Rpb246QHNlbGVjdG9yKGNyZWF0
ZUhpZ2hsaWdodEZvckN1cnJlbnRRdWlja05vdGVXaXRoUmFuZ2U6KV0pOwotICAgIGF1dG8gYWRk
SGlnaGxpZ2h0TmV3UXVpY2tOb3RlSXRlbSA9IGFkb3B0TlMoW1tVSU1lbnVJdGVtIGFsbG9jXSBp
bml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3
UXVpY2tOb3RlKCkgYWN0aW9uOkBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05v
dGVXaXRoUmFuZ2U6KV0pOwotICAgIFtbVUlNZW51Q29udHJvbGxlciBzaGFyZWRNZW51Q29udHJv
bGxlcl0gc2V0TWVudUl0ZW1zOkBbIGFkZEhpZ2hsaWdodEN1cnJlbnRRdWlja05vdGVJdGVtLmdl
dCgpLCBhZGRIaWdobGlnaHROZXdRdWlja05vdGVJdGVtLmdldCgpIF1dOworCisgICAgaWYgKCFj
dXJyZW50UXVpY2tOb3RlSXRlbSkKKyAgICAgICAgW3VwZGF0ZWRJdGVtcyBhZGRPYmplY3Q6YWRv
cHROUyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6V2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVGFnQWRkSGlnaGxpZ2h0VG9DdXJyZW50UXVpY2tOb3RlKCkgYWN0aW9uOkBzZWxlY3Rv
cihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOildKS5nZXQoKV07
CisKKyAgICBpZiAoIW5ld1F1aWNrTm90ZUl0ZW0pCisgICAgICAgIFt1cGRhdGVkSXRlbXMgYWRk
T2JqZWN0OmFkb3B0TlMoW1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6
OmNvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3UXVpY2tOb3RlKCkgYWN0aW9uOkBz
ZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05vdGVXaXRoUmFuZ2U6KV0pLmdldCgp
XTsKIH0KIAogLSAodm9pZCljcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJh
bmdlOihpZClzZW5kZXIKQEAgLTEwMzE1LDE0ICsxMDQ5NCw3IEBAIC0gKGlkIDxRTFByZXZpZXdJ
dGVtPilwcmV2aWV3Q29udHJvbGxlcjooUUxQcmV2aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIg
cHJldmllCiAtIChOU0RhdGEgKilwcm92aWRlRGF0YUZvckl0ZW06KFFMSXRlbSAqKWl0ZW0KIHsK
ICAgICBBU1NFUlQoX3Zpc3VhbFNlYXJjaFByZXZpZXdJbWFnZSk7Ci0KLSAgICBhdXRvIGRhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoTlVMTCwgMCkpOwotICAgIGF1dG8gZGVzdGlu
YXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGRhdGEuZ2V0
KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZilVVFR5cGVUSUZGLmlkZW50aWZpZXIsIDEsIE5VTEwp
KTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgW192
aXN1YWxTZWFyY2hQcmV2aWV3SW1hZ2UgQ0dJbWFnZV0sIG5pbCk7Ci0gICAgaWYgKCFDR0ltYWdl
RGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSkpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0KLSAgICByZXR1cm4gZGF0YS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJu
IFdlYktpdDo6dHJhbnNjb2RlKFtfdmlzdWFsU2VhcmNoUHJldmlld0ltYWdlIENHSW1hZ2VdLCAo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5pZGVudGlmaWVyKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAjcHJhZ21hIG1hcmsgLSBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUKQEAg
LTEwMzg1LDYgKzEwNTU3LDkgQEAgLSAodm9pZClfc2V0VXBJbWFnZUFuYWx5c2lzCiAjaWYgVVNF
KFVJQ09OVEVYVE1FTlUpICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19GT1JfTUFDSElORV9SRUFE
QUJMRV9DT0RFUykKICAgICBfY29udGV4dE1lbnVGb3JNYWNoaW5lUmVhZGFibGVDb2RlLmNsZWFy
KCk7CiAjZW5kaWYgLy8gVVNFKFVJQ09OVEVYVE1FTlUpICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
U19GT1JfTUFDSElORV9SRUFEQUJMRV9DT0RFUykKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNf
RU5IQU5DRU1FTlRTKQorICAgIF9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cyA9IHN0ZDo6bnVs
bG9wdDsKKyNlbmRpZgogfQogCiAtICh2b2lkKV90ZWFyRG93bkltYWdlQW5hbHlzaXMKQEAgLTEw
NDEwLDYgKzEwNTg1LDkgQEAgLSAodm9pZClfdGVhckRvd25JbWFnZUFuYWx5c2lzCiAgICAgX2Nv
bnRleHRNZW51Rm9yTWFjaGluZVJlYWRhYmxlQ29kZS5jbGVhcigpOwogI2VuZGlmIC8vIFVTRShV
SUNPTlRFWFRNRU5VKSAmJiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRk9SX01BQ0hJTkVfUkVBREFC
TEVfQ09ERVMpCiAgICAgW3NlbGYgX2ludm9rZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRp
bmdJbWFnZUFuYWx5c2lzOldlYktpdDo6UHJvY2VlZFdpdGhUZXh0U2VsZWN0aW9uSW5JbWFnZTo6
Tm9dOworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgX2ltYWdl
QW5hbHlzaXNNYXJrdXBSZXN1bHRzID0gc3RkOjpudWxsb3B0OworI2VuZGlmCiB9CiAKIC0gKHZv
aWQpX2NhbmNlbEltYWdlQW5hbHlzaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggYjc5MmMyZDY5YmRiNTY2NmExYzI0YmRhZGUzZmQxMDMwNzVm
MTBkOC4uNzZkNmI3ZGVjNTY5MzNiMmM3YTU1OWVlZjRkOTEyYWFhZWFjNDgxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc3NDMsNiArNzc0
Myw0MiBAQCB2b2lkIFdlYlBhZ2U6OnN0YXJ0SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKK3ZvaWQgV2Vi
UGFnZTo6cmVxdWVzdEltYWdlQml0bWFwKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29u
c3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSk+JiYgY29tcGxldGlvbikKK3sKKyAgICBSZWZQdHIg
ZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KGNvbnRleHQpOworICAgIGlmICghZWxlbWVudCkg
eworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8qIHJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPihlbGVt
ZW50LT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIXJlbmRlcmVyKSB7CisgICAgICAgIGNvbXBsZXRp
b24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBiaXRtYXAg
PSBjcmVhdGVTaGFyZWFibGVCaXRtYXAoKnJlbmRlcmVyKTsKKyAgICBpZiAoIWJpdG1hcCkgewor
ICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBiaXRtYXAtPmNyZWF0ZUhh
bmRsZShoYW5kbGUpOworICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgbWlt
ZVR5cGU7CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdl
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCkpCisg
ICAgICAgICAgICBtaW1lVHlwZSA9IGltYWdlLT5taW1lVHlwZSgpOworICAgIH0KKyAgICBBU1NF
UlQoIW1pbWVUeXBlLmlzRW1wdHkoKSk7CisgICAgY29tcGxldGlvbihoYW5kbGUsIG1pbWVUeXBl
KTsKK30KKwogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0Uo
VUlDT05URVhUTUVOVSkKIHZvaWQgV2ViUGFnZTo6c2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVu
dShGbG9hdFJlY3QmJiB0YXJnZXRGcmFtZSwgVmVjdG9yPE1lZGlhQ29udHJvbHNDb250ZXh0TWVu
dUl0ZW0+JiYgaXRlbXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFDb250cm9sc0NvbnRl
eHRNZW51SXRlbTo6SUQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDc0ZWJjOTNhMGI0NWY2MjYyMWZkNzY5
ZjVkYWQyODNkMDJkZmI5OGIuLmRmYTcxNzliYzM1ZTYxMzBhODI4YTk5ZGQ3NjFkZGJmNWZjYzlj
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0
NDAsNiArMTQ0MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0SW1hZ2VBbmFseXNpcyhjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyAgICB2b2lkIHJlcXVlc3RJbWFnZUJp
dG1hcChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1J
TUVUeXBlKT4mJik7CisKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKSAmJiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKICAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51VHJhbnNsYXRpb24o
Y29uc3QgV2ViQ29yZTo6VHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8mKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggNDE4MGZlZDEyMjkzNDA2MWE2NzMwMDMxZTJjMmRlMjRkMjEyYmUyZi4uNTgxNzIz
NTBiMzE2YzlmY2RmZDk1ZDNiOTcwNzYxZDk0ZDY3MDMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMjgsNiAr
MTI4LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDbGVhclNlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudE92ZXJyaWRlKCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCisgICAgUmVxdWVzdElt
YWdlQml0bWFwKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCkg
LT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2UsIFN0cmluZyBzb3VyY2VN
SU1FVHlwZSkgQXN5bmMKKwogICAgIFNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250
cm9sbGVkKQogCiAgICAgQ29ubmVjdEluc3BlY3RvcihTdHJpbmcgdGFyZ2V0SWQsIEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggM2RkYzI2NzE3NDY5ZDZhZGJhMTI0MjExMzhhNjAxY2Y1YmMxYzdlNi4uMmExMWRjYTAyZTgy
YzA3YzBhZjQwMTk5M2U2MTBkMzVlZGRhNTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMyMCw2ICszMjAsMjUgQEAg
dm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9y
U3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGVk
VGV4dExlbmd0aCA9IHNlbGVjdGVkVGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgIGNvbnN0IGlu
dCBtYXhTZWxlY3RlZFRleHRMZW5ndGggPSAyMDA7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0
YS53b3JkQXRTZWxlY3Rpb24gPSBzZWxlY3RlZFRleHQubGVmdChtYXhTZWxlY3RlZFRleHRMZW5n
dGgpOworICAgICAgICAgICAgYXV0byBmaW5kU2VsZWN0ZWRFZGl0YWJsZUltYWdlRWxlbWVudCA9
IFsmXSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGZvdW5kSW1h
Z2U7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNDb250ZW50RWRpdGFibGUpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZEltYWdlOworCisgICAgICAgICAgICAgICAgZm9y
IChUZXh0SXRlcmF0b3IgaXRlcmF0b3IgeyAqc2VsZWN0ZWRSYW5nZSwgeyB9IH07ICFpdGVyYXRv
ci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGZvdW5kSW1hZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW1hZ2UgPSBudWxs
cHRyOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgZm91bmRJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxIVE1M
SW1hZ2VFbGVtZW50PihpdGVyYXRvci5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAo
IWZvdW5kSW1hZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kSW1hZ2U7CisgICAgICAgICAgICB9
OworCisgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUVsZW1lbnQgPSBmaW5kU2VsZWN0ZWRFZGl0
YWJsZUltYWdlRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVj
dGVkRWRpdGFibGVJbWFnZSA9IGNvbnRleHRGb3JFbGVtZW50KCppbWFnZUVsZW1lbnQpOwogICAg
ICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlzYWxsb3cgcmVwbGFjZSB3aGVu
IHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBDSiBjaGFyYWN0ZXJzLgogICAgICAgICBwb3N0TGF5
b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFy
ZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4dC5pc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzSFRNTFNwYWNlPigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451585</attachid>
            <date>2022-02-10 11:37:15 -0800</date>
            <delta_ts>2022-02-10 15:34:48 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-236415-20220210113714.patch</filename>
            <type>text/plain</type>
            <size>35835</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVkOTczNWRkMTA1OWQz
NGJmYTY0OTkwNTA4M2I1OWQxODUwY2EzZS4uZTZlZDEwMjdmZTcyNGE1NWQzMDM4ZDg5ZTAxNDRj
NGZjNTZhZmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBz
dXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNhbGxvdXQgYmFyIHdoZW4g
c2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4NzE0MzMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IGEgY291cGxl
IG9mIGZ1bmN0aW9uczsgc2VlIFdlYktpdC9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAyMi0wMi0xMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGBXZWJQYWdlUHJveHk6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoKWAgb24gaU9TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGYyNmUwMDhhNWQ4ODJkYTkwMDUyMDg4OTQ4Y2U3ZGZjZTY1NWRlMmUuLmM3YmUxMDYxZDU5MDAw
M2M0NzI3ZGJiZTliZjRiZjg5OWY5YzBjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisy
MDIyLTAyLTEwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNh
bGxvdXQgYmFyIHdoZW4gc2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4
NzE0MzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3ICJNYXJrdXAgSW1hZ2UiIGNh
bGxvdXQgbWVudSBpdGVtLCB3aGljaCBpcyBvbmx5IHNob3duIHdoZW4gdGhlIHVzZXIgaGFzCisg
ICAgICAgIHNlbGVjdGVkIGV4YWN0bHkgb25lIGltYWdlLiBJZiB0aGUgaW1hZ2UgaXMgc3VpdGFi
bGUgZm9yICJNYXJrdXAgSW1hZ2UiICh0aGF0IGlzLCB0aGUgcmVsZXZhbnQgVmlzaW9uS2l0IEFQ
SQorICAgICAgICByZXR1cm5zIGEgbm9uLW51bGwgaW1hZ2UpLCB0aGVuIHdlIHNob3cgYSBuZXcg
aXRlbSBpbiB0aGUgY2FsbG91dCBiYXIgd2hpY2gsIHdoZW4gYWN0aXZhdGVkLCByZXBsYWNlcyB0
aGUKKyAgICAgICAgY3VycmVudCBzZWxlY3Rpb24gd2l0aCB0aGUgaW1hZ2UgcmV0dXJuZWQgYnkg
dGhlIGFmb3JlbWVudGlvbmVkIFZpc2lvbktpdCBBUEkuCisKKyAgICAgICAgU2VlIGJlbG93IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRp
b25VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25V
dGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6OmlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3Rl
bUZlYXR1cmVFbmFibGVkKToKKworICAgICAgICBBZGQgYSBuZXcgaGVscGVyIG1ldGhvZCB0byBy
ZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgc3lzdGVtIGZlYXR1cmUgZmxh
ZyBpcyBlbmFibGVkLgorCisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisKKyAgICAgICAgQWRkIGFuIG9wdGlvbmFs
IGBFbGVtZW50Q29udGV4dGAgdGhhdCdzIHBvcHVsYXRlZCBvbmx5IGlmIHRoZSB1c2VyJ3Mgc2Vs
ZWN0aW9uIHNwYW5zIGEgc2luZ2xlIEhUTUxJbWFnZUVsZW1lbnQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBkaWRN
b3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0SW1hZ2VCaXRtYXApOgorCisgICAg
ICAgIEFkZCBhIG5ldyBhc3luYyBJUEMgbWVzc2FnZSB0aGF0IGFsbG93cyB0aGUgVUkgcHJvY2Vz
cyB0byBncmFiIGEgU2hhcmVhYmxlQml0bWFwIGhhbmRsZSAoYWxvbmcgd2l0aCB0aGUgTUlNRQor
ICAgICAgICB0eXBlIG9mIHRoZSBzb3VyY2UgaW1hZ2UpIGdpdmVuIGFuIEVsZW1lbnRDb250ZXh0
IHRoYXQgaWRlbnRpZmllcyBhbiBpbWFnZSBlbGVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmg6CisKKyAgICAgICAgQ2FjaGUgdGhlIGxhc3QgcmVzdWx0IGZyb20gcmVxdWVz
dGluZyAiSW1hZ2UgTWFya3VwIiBkYXRhIGZyb20gVmlzaW9uS2l0IGluIGBfaW1hZ2VBbmFseXNp
c01hcmt1cFJlc3VsdHNgLCBhbmQKKyAgICAgICAgdXNlIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBp
bnZva2luZyB0aGUgbmV3IHNlbGVjdG9yLCBgLXBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOmAu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0
aG9kIHRoYXQgdGFrZXMgYSBDR0ltYWdlUmVmLCB0cmFuc2NvZGVzIGl0IHRvIHRoZSBnaXZlbiB1
bmlmb3JtIHR5cGUgaWRlbnRpZmllciwgYW5kIGZpbmFsbHkKKyAgICAgICAgcmV0dXJucyBhIGJs
b2Igb2YgaW1hZ2UgZGF0YS4gVXNlZCBieSB0aGUgdHdvIG5ldyBjYWxsIHNpdGVzIGZvciBJbWFn
ZSBNYXJrdXAgYmVsb3csIGFzIHdlbGwgYXMgYW4gZXhpc3RpbmcgY2FsbAorICAgICAgICBzaXRl
IGZvciBWaXN1YWwgTG9vayBVcCBpbiBgLXByb3ZpZGVEYXRhRm9ySXRlbTpgCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyB0YXJnZXRGb3JBY3Rpb246d2l0aFNlbmRlcjpdKToKKworICAgICAg
ICBBZGQgYSBjaGVjayBmb3IgdGhlIG5ldyBJbWFnZSBNYXJrdXAgYWN0aW9uIHNlbGVjdG9yLgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlv
bkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorCisgICAgICAgIFVzZSB0aGlzIGV4
aXN0aW5nIFVJS2l0IGRlbGVnYXRlIGhvb2sgdG8gZGVmZXIgY2FsbG91dCBiYXIgcHJlc2VudGF0
aW9uIG9ubHkgaW4gdGhlIGNhc2Ugd2hlcmUgYSBzaW5nbGUgaW1hZ2UKKyAgICAgICAgZWxlbWVu
dCBpcyBzZWxlY3RlZCwgc3VjaCB0aGF0IHdlIG9ubHkgc2hvdyB0aGUgY2FsbG91dCBiYXIgaW4g
dGhpcyBzY2VuYXJpbyBvbmNlIFZpc2lvbktpdCBoYXMgZGV0ZXJtaW5lZAorICAgICAgICB3aGV0
aGVyIG9yIG5vdCB0aGUgIkltYWdlIE1hcmt1cCIgYWN0aW9uIGlzIHN1aXRhYmxlIGZvciB0aGUg
ZGF0YSBvZiB0aGUgc2VsZWN0ZWQgaW1hZ2UuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHVycG9z
ZSBvZiB0aGlzIGRlbGVnYXRlIGhvb2sgd2FzIHRvIGFsbG93IFdlYktpdCB0byBkZWZlciBjYWxs
b3V0IGJhciBwcmVzZW50YXRpb24gZm9yIGEgc2hvcnQsCisgICAgICAgIGhhcmQtY29kZWQgZGVs
YXkgdG8gd2FpdCBmb3IgdGhlIHdlYiBwYWdlIHRvIGxheW91dCBvdXQgb3IgYWRkIGNsaWNrYWJs
ZSBpdGVtcyB0aGF0IG1pZ2h0IHVuZGVybGFwIHRoZSBjYWxsb3V0CisgICAgICAgIGJhcjsgYXMg
c3VjaCwgd2Ugc3RpbGwgcGVyZm9ybSB0aGlzIGxvZ2ljIHdpdGggYSBoYXJkLWNvZGVkIGRlbGF5
IG9mIDI1MCBtcyAoaW5jbHVkaW5nIHdoYXRldmVyIHRpbWUgd2FzIHRha2VuCisgICAgICAgIGR1
cmluZyBpbWFnZSBhbmFseXNpcykuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1cGRhdGVJ
bWFnZUFuYWx5c2lzTWFya3VwTWVudUl0ZW1zOl0pOgorCisgICAgICAgIEFwcGVuZCB0aGUgbmV3
IG1lbnUgaXRlbSBvbmx5IGlmIHRoZSBzeXN0ZW0gZmVhdHVyZSBmbGFnIGlzIGVuYWJsZWQsIGFu
ZCB3ZSd2ZSBzZWxlY3RlZCBhbiBlZGl0YWJsZSBpbWFnZS4gTm90ZQorICAgICAgICB0aGF0IHRo
aXMgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBjb25zdWx0IGBfaW1hZ2VBbmFseXNpc01hcmt1cFJl
c3VsdHNgIHRvIGVuc3VyZSB0aGF0IHRoZSBzdGF0ZSBvZiBhZGRpdGlvbmFsCisgICAgICAgIG1l
bnUgaXRlbXMgaW4gdGhlIHNoYXJlZCBtZW51IGNvbnRyb2xsZXIgaXMgY29uc2lzdGVudCBiZXR3
ZWVuIE1hcmt1cCBJbWFnZSBhbmQgUXVpY2sgTm90ZSwgYW5kIHVwZGF0ZWQgaW4gdGhlCisgICAg
ICAgIHNhbWUgbGlmZWN5Y2xlIGFzIGVkaXRvciBzdGF0ZSB1cGRhdGVzLgorCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXBdKToKKworICAgICAg
ICBUaGlzIGlzIGNvbnN1bHRlZCB3aGVuIHdlJ3JlIGFjdHVhbGx5IGFib3V0IHRvIHNob3cgdGhl
IGNhbGxvdXQgYmFyIGFjdGlvbiBmb3IgIkltYWdlIE1hcmt1cCIgKGltcG9ydGFudGx5LAorICAg
ICAgICBhZnRlciBjYWxsb3V0IGJhciBwcmVzZW50YXRpb24gZGVmZXJyYWwpLCBhbmQgZGVwZW5k
cyBvbiB0aGUgc3RhdGUgb2YgYF9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0c2AuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cDpdKToKKworICAg
ICAgICBBZGQgbG9naWMgdG8gaGFuZGxlIHRoZSBuZXcgYWN0aW9uIGJ5IGNhbGxpbmcgaW50byBX
ZWJQYWdlUHJveHkgdG8gKGJhc2ljYWxseSkgcGFzdGUgdGhlIG1vZGlmaWVkIGltYWdlIGRhdGEK
KyAgICAgICAgYWZ0ZXIgdHJhbnNjb2RpbmcgaXQgdG8gbWF0Y2ggdGhlIGltYWdlIGVsZW1lbnQn
cyBvcmlnaW5hbCBzb3VyY2UgdHlwZS4gQWZ0ZXIgIzIzNjQwNiwgdGhpcyBjb2RlcGF0aCBpcyBu
b3cKKyAgICAgICAgYXZhaWxhYmxlIG9uIGFsbCBDb2NvYSBwbGF0Zm9ybXMgKGFzIG9wcG9zZWQg
dG8gbWFjT1Mtb25seSkuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkb0FmdGVyQ29tcHV0
aW5nSW1hZ2VBbmFseXNpc1Jlc3VsdHNGb3JNYXJrdXA6XSk6CisKKyAgICAgICAgVXNlIHRoZSBu
ZXcgYHJlcXVlc3RJbWFnZUJpdG1hcGAgSVBDIG1lc3NhZ2UgdG8gZ3JhYiBhIGJpdG1hcCBmb3Ig
dGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpbWFnZSwgY2FsbCBvdXQgdG8KKyAgICAgICAgVmlzaW9u
S2l0IHRvIHBlcmZvcm0gaW1hZ2UgYW5hbHlzaXMsIGFuZCB0aGVuIGNhY2hlIHRoZSByZXN1bHRp
bmcgaW1hZ2UuIEFmdGVyIGFsbCBvZiB0aGlzIGlzIGRvbmUsIHdlIHByb2NlZWQKKyAgICAgICAg
d2l0aCBzaG93aW5nIHRoZSBjYWxsb3V0IGJhci4KKworICAgICAgICBJbiBhIGZvbGxvd3VwLCB3
ZSBzaG91bGQgZW5mb3JjZSBzb21lIChyZWFzb25hYmxlKSB1cHBlciBib3VuZCBvbiB0aGUgYW1v
dW50IG9mIHRpbWUgYnkgd2hpY2ggdGhlIGNhbGxvdXQgYmFyCisgICAgICAgIGNhbiBiZSBkZWxh
eWVkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NlbGVjdGlvbkNoYW5nZWRdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlv
bnNdKToKKworICAgICAgICBSZWZhY3RvciBleGlzdGluZyBsb2dpYyBmb3Igc3VwcGx5aW5nIGFk
ZGl0aW9uYWwgY2FsbG91dCBiYXIgbWVudSBpdGVtcywgc3VjaCB0aGF0IHdlIHVwZGF0ZSBpdGVt
cyBhcyBuZWVkZWQgZm9yCisgICAgICAgIGJvdGggUXVpY2sgTm90ZSBhcyB3ZWxsIGFzIEltYWdl
IE1hcmt1cC4gTm90ZSB0aGF0IHdlIG5lZWQgdG8gcHJlc2VydmUgYW55IGV4aXN0aW5nIG1lbnUg
aXRlbXMgaW4gdGhlIHNoYXJlZAorICAgICAgICBVSU1lbnVDb250cm9sbGVyLCBzaW5jZSB0aGUg
V2ViS2l0IGNsaWVudCAoZS5nLiBNYWlsKSBtYXkgaGF2ZSBhbHJlYWR5IHN1cHBsaWVkIGN1c3Rv
bSBtZW51IGl0ZW1zLiBUaGlzCisgICAgICAgIGN1cnJlbnRseSBkb2VlcyBub3QgYWZmZWN0IFF1
aWNrIE5vdGUgc2luY2UgdGhlIG9ubHkgaW50ZXJuYWwgY2xpZW50IHRoYXQgZW5hYmxlcyBRdWlj
ayBOb3RlIGlzIFNhZmFyaSwgd2hpY2gKKyAgICAgICAgZG9lcyBub3QgYXR0ZW1wdCB0byBhZGQg
YW55IG9mIGl0cyBvd24gaXRlbXM7IGhvd2V2ZXIsICJNYXJrdXAgSW1hZ2UiIG5lZWRzIHRvIGJl
IGF2YWlsYWJsZSBpbiBNYWlsIG9uIGlPUyBhcworICAgICAgICB3ZWxsLCB3aGljaCBkb2VzIHVz
ZSBjdXN0byBtZW51IGl0ZW1zLgorCisgICAgICAgIChmaW5kTWVudUl0ZW1XaXRoQWN0aW9uKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1cGRhdGVBcHBIaWdobGlnaHRNZW51SXRlbXM6XSk6
CisKKyAgICAgICAgTWFrZSB0aGlzIGFkanVzdCB0aGUgZ2l2ZW4gbXV0YWJsZSBhcnJheSBvZiBV
SU1lbnVJdGVtcywgd2hpY2ggYXJlIHRoZW4gY29tYmluZWQgd2l0aCBhbnkgbWFya3VwIG1lbnUg
aXRlbXMKKyAgICAgICAgd2hlbiBzZXR0aW5nIGN1c3RvbSBpdGVtcyBvbiB0aGUgc2hhcmVkIG1l
bnUgY29udHJvbGxlci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHByb3ZpZGVEYXRhRm9y
SXRlbTpdKToKKworICAgICAgICBBZGp1c3QgdGhpcyB0byB1c2UgdGhlIG5ldyBgdHJhbnNjb2Rl
YCBoZWxwZXIgZnVuY3Rpb24sIGRlY2xhcmVkIGFib3ZlLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3NldFVwSW1hZ2VBbmFseXNpc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90
ZWFyRG93bkltYWdlQW5hbHlzaXNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcEFw
cEhpZ2hsaWdodE1lbnVzSWZOZWVkZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RJ
bWFnZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorCisgICAgICAgIENvbXB1
dGUgYW5kIHBvcHVsYXRlIHRoZSBuZXcgYHNlbGVjdGVkRWRpdGFibGVJbWFnZWAgZWxlbWVudCBj
b250ZXh0OyB0byBhY2hpZXZlIHRoaXMsIHdlIHVzZSBgVGV4dEl0ZXJhdG9yYCB0bworICAgICAg
ICBzY2FuIGZvciBhbiBpbWFnZSBlbGVtZW50LCBhbmQgYmFpbCBpbW1lZGlhdGVseSBpZiB3ZSBl
aXRoZXIgZmluZCBhbnl0aGluZyB0aGF0IGlzIG5vdCBhbiBpbWFnZSwgb3IgZmluZCBtb3JlCisg
ICAgICAgIHRoYW4gb25lIGltYWdlLgorCiAyMDIyLTAyLTEwICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYFdlYlBhZ2VQcm94eTo6cmVw
bGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSgpYCBvbiBpT1MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDljNzNjZTJiNmY4MGYxYzFkZjVjNDdmNzI2
MTQ0ZDgzYjdiODQxNGYuLjQ3ZWE5ODllOTZjMzAwNGFmYzM4OGNhYTdiYWY3MGQ3YjJjNmJhZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTUxLDcgKzE1
MSw3IEBAIHB1YmxpYzoKICAgICBJbWFnZU9ic2VydmVyKiBpbWFnZU9ic2VydmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZU9ic2VydmVyOyB9CiAgICAgdm9pZCBzZXRJbWFnZU9ic2VydmVyKElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1faW1hZ2VPYnNlcnZlciA9IG9ic2VydmVyOyB9CiAg
ICAgVVJMIHNvdXJjZVVSTCgpIGNvbnN0OwotICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogICAgIGxvbmcgbG9u
ZyBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCmluZGV4IDRi
MDE1YWZjOTVjYWYyMzA4NmExY2JiNjFlM2U1NjRmNzdkMGI5YmIuLjE0YWIyMmI0Y2MyOGU3NTFk
YTVhMjgzNmM3NzNiN2Y0ZTNjOTE3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNyBAQCBjb25zdCBNZW1v
cnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdFN1cHBv
cnRlZEltYWdlVHlwZQogSGFzaFNldDxTdHJpbmc+JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcygpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRp
dGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3RpbmcoY29uc3QgU3RyaW5nJik7Ci1ib29s
IGlzU3VwcG9ydGVkSW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1N1cHBvcnRlZEltYWdlVHlwZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNHSUZJbWFnZVR5
cGUoU3RyaW5nVmlldyk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oCmluZGV4IDNhMjM2YTI0Y2RjODkwNDQz
ZjRkOTJiNWM2ZGMwODdiZmFmNWZjYmIuLmFmNzU4OGViNDJhMTExOTI5MWRhOGYxOGVkMmQ4YmFh
ZDIxMzA1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJl
Y29nbml0aW9uVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9U
ZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaApAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGJvb2wgaXNMaXZlVGV4dEF2YWlsYWJsZUFuZEVuYWJsZWQoKTsKIGJvb2wgdGV4dFJl
Y29nbml0aW9uRW5oYW5jZW1lbnRzU3lzdGVtRmVhdHVyZUVuYWJsZWQoKTsKIGJvb2wgaW1hZ2VB
bmFseXNpc1F1ZXVlU3lzdGVtRmVhdHVyZUVuYWJsZWQoKTsKK2Jvb2wgaXNJbWFnZUFuYWx5c2lz
TWFya3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKTsKIAogV2ViQ29yZTo6VGV4dFJlY29nbml0aW9u
UmVzdWx0IG1ha2VUZXh0UmVjb2duaXRpb25SZXN1bHQoQ29jb2FJbWFnZUFuYWx5c2lzICopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlv
blV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0
aW9uVXRpbGl0aWVzLm1tCmluZGV4IDA5ZjQ1NzIyOWE0MGU3NGNiNzQ2YzBlYmQ2M2YzZWVhOGZl
NzczNmQuLjcxYjJlMjYyMzA2NjU5NDlkODVlNDViMmNiZmNiZTAyZWY2YzVhMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRp
bGl0aWVzLm1tCkBAIC0xNTEsNiArMTUxLDE1IEBAIGJvb2wgaW1hZ2VBbmFseXNpc1F1ZXVlU3lz
dGVtRmVhdHVyZUVuYWJsZWQoKQogI2VuZGlmCiB9CiAKK2Jvb2wgaXNJbWFnZUFuYWx5c2lzTWFy
a3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKQoreworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19F
TkhBTkNFTUVOVFMpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCiAjZW5kaWYKIAogYm9vbCBpc0xpdmVUZXh0QXZhaWxhYmxlQW5kRW5hYmxl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXggNjdiZDZmMTJhNTU0NzE4
OTg0MTM0NmNkYjc1YTg1NTA1ZmY2NzAxYS4uM2MyYWU0ZWViNTNjMzc4NjdhMjEyZjZlZjBkZTVl
ZDdhZDY4MDhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcApAQCAtMTQ1LDYg
KzE0NSw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY2FyZXRDb2xvcjsKICAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvblN0YXJ0SXNBdFBhcmFncmFwaEJvdW5kYXJ5OwogICAgIGVuY29k
ZXIgPDwgc2VsZWN0aW9uRW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5OworICAgIGVuY29kZXIgPDwg
c2VsZWN0ZWRFZGl0YWJsZUltYWdlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVu
Y29kZXIgPDwgc2VsZWN0aW9uQm91bmRpbmdSZWN0OwpAQCAtMjI4LDYgKzIyOSw4IEBAIGJvb2wg
RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBQb3N0TGF5b3V0RGF0YSYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnNlbGVjdGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3Rl
ZEVkaXRhYmxlSW1hZ2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0aW9uQm91bmRp
bmdSZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IGQyN2I5NTkyYTE0ODQx
ZGUwYTQxMDE0ZjZkMDVkN2U2NTU1NWQyNDcuLjEzMWY5ZTgxMjA3YjkxOGUzYTJhMmU1M2Y4ZTg2
M2M2ZTg0YzZjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllclR5
cGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWxl
bWVudENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Xcml0aW5nRGlyZWN0
aW9uLmg+CkBAIC0xMjQsNiArMTI1LDcgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICAgICAg
Ym9vbCBhdFN0YXJ0T2ZTZW50ZW5jZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgc2VsZWN0aW9u
U3RhcnRJc0F0UGFyYWdyYXBoQm91bmRhcnkgeyBmYWxzZSB9OwogICAgICAgICBib29sIHNlbGVj
dGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSB7IGZhbHNlIH07CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHNlbGVjdGVkRWRpdGFibGVJbWFnZTsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rp
b25Cb3VuZGluZ1JlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCmluZGV4IGJhZjViMGM5OWQwMWY2YzgxYTc1MWVmOGEwOGVjNmRiZGE1NDkz
ZmQuLjc0ZTc4ZWQ4ODYzNGU4OGRjYThhN2RlMTE2MjAzOWExMjA5MWZmYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0xNTI4LDkg
KzE1MjgsNyBAQCAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogICAgIF9wYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OmFsbEZsYWdzKCkpOwogICAgIF9w
YWdlLT53ZWJWaWV3RGlkTW92ZVRvV2luZG93KCk7CiAKLSNpZiBFTkFCTEUoQVBQX0hJR0hMSUdI
VFMpCi0gICAgW19jb250ZW50VmlldyBzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVkZWRdOwot
I2VuZGlmCisgICAgW19jb250ZW50VmlldyBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFj
dGlvbnNdOwogfQogCiAtICh2b2lkKV9zZXRPcGFxdWVJbnRlcm5hbDooQk9PTClvcGFxdWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDk0OWQ4OWE4YzQ4OGQ1
NDQ5YjMxZTc0YmMxZjQxZjAyNmY3OTBiYmQuLjllYzVlZmQyNGYyYzk4NzAzMzZiNTI2M2YyMDY0
NWFhM2ZjNDdmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtODc5OCw2ICs4Nzk4LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydEltYWdlQW5hbHlz
aXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FO
QUxZU0lTKQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEltYWdlQml0bWFwKGNvbnN0IEVs
ZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb24p
Cit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb24o
eyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0SW1hZ2VCaXRtYXAoZWxlbWVudENvbnRleHQp
LCBXVEZNb3ZlKGNvbXBsZXRpb24pKTsKK30KKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiBNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJv
eHk6Om1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjNkYWRjMGQ5MmE2ZTEwOGI2NDE4NTE5
OTA2MTRhMjE1OWJkNTU5OS4uZTQ0ZDE4OTM3ZjFiMmNiMTM0NWEwZjU5NDY3YjFlMzJhZTc4OTEw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwNDQsNiArMjA0
NCw4IEBAIHB1YmxpYzoKICAgICBXS1F1aWNrTG9va1ByZXZpZXdDb250cm9sbGVyICpxdWlja0xv
b2tQcmV2aWV3Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcXVpY2tMb29rUHJldmlld0Nv
bnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgogCisgICAgdm9pZCByZXF1ZXN0SW1hZ2VCaXRtYXAo
Y29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlw
ZSk+JiYpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgaXNRdWFyYW50aW5lZEFuZE5v
dFVzZXJBcHByb3ZlZChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDdm
ZjdhN2Y1ODgzZjM4MjNhYzUxM2U3NmZiMGZmNDA3ODJkOTM3ODcuLmY0MWI1MjM3ZmYxZDZlM2Q3
MGNhMmNmMmY3ZDYxM2E0N2JlNDgzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTI0NSw2ICsyNDUsMTIg
QEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBDR1JlY3QgdGV4dExhc3RSZWN0
OwogfTsKIAorc3RydWN0IEltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzIHsKKyAgICBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCBlbGVtZW50OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiByZXN1
bHQ7CisgICAgU3RyaW5nIHByZWZlcnJlZE1JTUVUeXBlOworfTsKKwogZW51bSBjbGFzcyBQcm9j
ZWVkV2l0aFRleHRTZWxlY3Rpb25JbkltYWdlIDogYm9vbCB7CiAgICAgTm8sCiAgICAgWWVzCkBA
IC01MzEsNiArNTM3LDkgQEAgdXNpbmcgSW1hZ2VBbmFseXNpc1JlcXVlc3RJZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxJbWFnZUFuYWx5c2lzUmVxdWVzdElkZW4KICNlbmRpZiAvLyBVU0Uo
UVVJQ0tfTE9PSykKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdWludDMy
X3QgX2Z1bGxzY3JlZW5WaWRlb0V4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcjsKKyNpZiBFTkFC
TEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpJbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cz4gX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRz
OworI2VuZGlmCiB9CiAKIEBlbmQKQEAgLTc3Myw5ICs3ODIsNyBAQCBGT1JfRUFDSF9QUklWQVRF
X1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dF
Ql9WSUVXKQogLSAoV2ViQ29yZTo6RGF0YU93bmVyVHlwZSlfZGF0YU93bmVyRm9yUGFzdGVib2Fy
ZDooV2ViS2l0OjpQYXN0ZWJvYXJkQWNjZXNzSW50ZW50KWludGVudDsKICNlbmRpZgogCi0jaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZO
ZWVkZWQ7Ci0jZW5kaWYKKy0gKHZvaWQpc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rp
b25zOwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogLSAodm9pZClfZW5kSW1hZ2VBbmFs
eXNpc0dlc3R1cmVEZWZlcnJhbDooV2ViS2l0OjpTaG91bGRQcmV2ZW50R2VzdHVyZXMpc2hvdWxk
UHJldmVudEdlc3R1cmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMTcyZDI1N2ZiODNlZjc5MjJlYjg5
MDNkNGEzNjI5ZTk0NzNiMWY4Ni4uYzE3NTQ3NWRkMGNjNjU2NmM3MWI4MzA2NzEyMjRhYTVhMTUw
NTZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMjcsNiArMTI3LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0UmVjb2duaXRp
b25SZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVG91Y2hBY3Rpb24uaD4KKyNpbXBvcnQgPFdl
YkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZUNBTGF5ZXJFeHRyYXMuaD4KQEAgLTM3Miw2ICszNzMsMjQgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2hvdWxkUHJldmVudFRleHRTZWxlY3Rpb24geyBmYWxzZSB9OwogfTsKIAorI2lmIEVO
QUJMRShRVUlDS19MT09LKSB8fCBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQor
CitzdGF0aWMgUmV0YWluUHRyPE5TRGF0YT4gdHJhbnNjb2RlKENHSW1hZ2VSZWYgaW1hZ2UsIENG
U3RyaW5nUmVmIHR5cGVJZGVudGlmaWVyKQoreworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBhdXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5h
dGlvbkNyZWF0ZVdpdGhEYXRhKChfX2JyaWRnZSBDRk11dGFibGVEYXRhUmVmKWRhdGEuZ2V0KCks
IHR5cGVJZGVudGlmaWVyLCAxLCBuaWwpKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFn
ZShkZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2UsIG5pbCk7CisgICAgaWYgKCFDR0ltYWdlRGVzdGlu
YXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICByZXR1cm4gZGF0YTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShRVUlDS19MT09LKSB8fCBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCiAjZW5kaWYgLy8gRU5BQkxFKElN
QUdFX0FOQUxZU0lTKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKQEAgLTQwNzEsNiArNDA5MCwx
MCBAQCAtIChpZCl0YXJnZXRGb3JBY3Rpb246KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2Vu
ZGVyCiAgICAgICAgIHJldHVybiBzZWxmLnNob3VsZEFsbG93QXBwSGlnaGxpZ2h0Q3JlYXRpb24g
JiYgX3BhZ2UtPmFwcEhpZ2hsaWdodHNWaXNpYmlsaXR5KCkgPyBzZWxmIDogbmlsOwogICAgIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90ZVdpdGhS
YW5nZTopKQogICAgICAgICByZXR1cm4gc2VsZi5zaG91bGRBbGxvd0FwcEhpZ2hsaWdodENyZWF0
aW9uICYmICFfcGFnZS0+YXBwSGlnaGxpZ2h0c1Zpc2liaWxpdHkoKSA/IHNlbGYgOiBuaWw7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIGlmIChh
Y3Rpb24gPT0gQHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOikpCisgICAgICAg
IHJldHVybiBzZWxmLmNhblBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwID8gc2VsZiA6IG5pbDsK
ICNlbmRpZgogICAgIHJldHVybiBbX3dlYlZpZXcgdGFyZ2V0Rm9yQWN0aW9uOmFjdGlvbiB3aXRo
U2VuZGVyOnNlbmRlcl07CiB9CkBAIC00NTk3LDM2ICs0NjIwLDE2OCBAQCAtICh2b2lkKXJlcXVl
c3RSZWN0c1RvRXZhZGVGb3JTZWxlY3Rpb25Db21tYW5kc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShOUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFtzZWxmIF9zaG91
bGRTdXBwcmVzc1NlbGVjdGlvbkNvbW1hbmRzXSB8fCBzZWxmLndlYlZpZXcuX2VkaXRhYmxlKSB7
CisgICAgaWYgKFtzZWxmIF9zaG91bGRTdXBwcmVzc1NlbGVjdGlvbkNvbW1hbmRzXSkgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihAWyBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSAhPSBXZWJLaXQ6
OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxlICYmIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmVsZW1lbnRUeXBlICE9IFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYSkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihAWyBdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRv
IHJlcXVlc3RSZWN0c1RvRXZhZGVJZk5lZWRlZCA9IFtzdGFydFRpbWUgPSBBcHByb3hpbWF0ZVRp
bWU6Om5vdygpLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBj
b21wbGV0aW9uID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBh
dXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxm
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0pOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAKLSAgICAvLyBHaXZlIHRoZSBwYWdlIHNvbWUgdGltZSB0byBwcmVzZW50IGN1
c3RvbSBlZGl0aW5nIFVJIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRldGVjdCBhbmQgZXZhZGUgaXQu
Ci0gICAgYXV0byBkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyID0gMC4yNV9zOwotICAgIFdv
cmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoZGVsYXlCZWZvcmVTaG93aW5nQ2FsbG91dEJh
ciwgW2NvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrU2Vs
ZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXSAoKSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKCF3ZWFrU2VsZikgeworICAgICAgICBpZiAoW3N0cm9uZ1NlbGYgd2ViVmlld10uX2Vk
aXRhYmxlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0
KCk7Ci0gICAgICAgIGlmICghc3Ryb25nU2VsZi0+X3BhZ2UpIHsKKyAgICAgICAgYXV0byBmb2N1
c2VkRWxlbWVudFR5cGUgPSBzdHJvbmdTZWxmLT5fZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5l
bGVtZW50VHlwZTsKKyAgICAgICAgaWYgKGZvY3VzZWRFbGVtZW50VHlwZSAhPSBXZWJLaXQ6Oklu
cHV0VHlwZTo6Q29udGVudEVkaXRhYmxlICYmIGZvY3VzZWRFbGVtZW50VHlwZSAhPSBXZWJLaXQ6
OklucHV0VHlwZTo6VGV4dEFyZWEpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb24oQFsgXSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzdHJvbmdTZWxmLT5fcGFn
ZS0+cmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKFtjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKGF1dG8mIHJlY3RzKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uKGNy
ZWF0ZU5TQXJyYXkocmVjdHMpLmdldCgpKTsKKyAgICAgICAgLy8gR2l2ZSB0aGUgcGFnZSBzb21l
IHRpbWUgdG8gcHJlc2VudCBjdXN0b20gZWRpdGluZyBVSSBiZWZvcmUgYXR0ZW1wdGluZyB0byBk
ZXRlY3QgYW5kIGV2YWRlIGl0LgorICAgICAgICBhdXRvIGRlbGF5QmVmb3JlU2hvd2luZ0NhbGxv
dXRCYXIgPSBzdGQ6Om1heCgwX3MsIDAuMjVfcyAtIChBcHByb3hpbWF0ZVRpbWU6Om5vdygpIC0g
c3RhcnRUaW1lKSk7CisgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoZGVs
YXlCZWZvcmVTaG93aW5nQ2FsbG91dEJhciwgW2NvbXBsZXRpb24sIHdlYWtTZWxmXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAg
ICAgICAgICAgaWYgKCFzdHJvbmdTZWxmKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbihA
WyBdKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmICghc3Ryb25nU2VsZi0+X3BhZ2UpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9u
KEBbIF0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgc3Ryb25nU2VsZi0+X3BhZ2UtPnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlv
bihbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChhdXRvJiByZWN0cykgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb24oY3JlYXRlTlNBcnJheShyZWN0cykuZ2V0KCkpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH07CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5B
TFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIFtzZWxmIGRvQWZ0ZXJDb21wdXRpbmdJbWFnZUFuYWx5
c2lzUmVzdWx0c0Zvck1hcmt1cDpXVEZNb3ZlKHJlcXVlc3RSZWN0c1RvRXZhZGVJZk5lZWRlZCld
OworI2Vsc2UKKyAgICByZXF1ZXN0UmVjdHNUb0V2YWRlSWZOZWVkZWQoKTsKKyNlbmRpZgorfQor
CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKworLSAodm9pZCl1cGRh
dGVJbWFnZUFuYWx5c2lzTWFya3VwTWVudUl0ZW1zOihOU011dGFibGVBcnJheTxVSU1lbnVJdGVt
ICo+ICopdXBkYXRlZEl0ZW1zCit7CisgICAgYXV0byBjdXJyZW50SXRlbSA9IGZpbmRNZW51SXRl
bVdpdGhBY3Rpb24odXBkYXRlZEl0ZW1zLCBAc2VsZWN0b3IocGVyZm9ybUltYWdlQW5hbHlzaXNN
YXJrdXA6KSk7CisgICAgYXV0byYgZWRpdG9yU3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKTsK
KyAgICBpZiAoIVdlYktpdDo6aXNJbWFnZUFuYWx5c2lzTWFya3VwU3lzdGVtRmVhdHVyZUVuYWJs
ZWQoKSB8fCAhc2VsZi53aW5kb3cgfHwgZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERh
dGEgfHwgIWVkaXRvclN0YXRlLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0ZWRFZGl0YWJsZUltYWdl
KSB7CisgICAgICAgIGlmIChjdXJyZW50SXRlbSkKKyAgICAgICAgICAgIFt1cGRhdGVkSXRlbXMg
cmVtb3ZlT2JqZWN0OmN1cnJlbnRJdGVtXTsKKyAgICB9IGVsc2UgaWYgKCFjdXJyZW50SXRlbSkK
KyAgICAgICAgW3VwZGF0ZWRJdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VJTWVudUl0ZW0gYWxs
b2NdIGluaXRXaXRoVGl0bGU6V0VCX1VJX1NUUklORygiTWFya3VwIEltYWdlIiwgIkltYWdlIGFu
YWx5c2lzIG1hcmt1cCBtZW51IGl0ZW0iKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFu
YWx5c2lzTWFya3VwOildKS5nZXQoKV07Cit9CisKKy0gKEJPT0wpY2FuUGVyZm9ybUltYWdlQW5h
bHlzaXNNYXJrdXAKK3sKKyAgICBpZiAoIVdlYktpdDo6aXNJbWFnZUFuYWx5c2lzTWFya3VwU3lz
dGVtRmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgaWYgKCFfaW1h
Z2VBbmFseXNpc01hcmt1cFJlc3VsdHMpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIGF1dG8g
W2VsZW1lbnRDb250ZXh0LCBpbWFnZSwgcHJlZmVycmVkTUlNRVR5cGVdID0gKl9pbWFnZUFuYWx5
c2lzTWFya3VwUmVzdWx0czsKKyAgICByZXR1cm4gIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzTWlz
c2luZ1Bvc3RMYXlvdXREYXRhICYmIGVsZW1lbnRDb250ZXh0ID09IF9wYWdlLT5lZGl0b3JTdGF0
ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0ZWRFZGl0YWJsZUltYWdlOworfQorCistICh2b2lk
KXBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOihpZClzZW5kZXIKK3sKKyAgICBpZiAoIXNlbGYu
Y2FuUGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gW2VsZW1lbnRDb250ZXh0LCBpbWFnZSwgcHJlZmVycmVkTUlNRVR5cGVdID0gKl9pbWFnZUFu
YWx5c2lzTWFya3VwUmVzdWx0czsKKyAgICBhdXRvIHRhcmdldFR5cGUgPSBSZXRhaW5QdHIgeyBV
VFR5cGVUSUZGLmlkZW50aWZpZXIgfTsKKyAgICBpZiAoIXByZWZlcnJlZE1JTUVUeXBlLmlzRW1w
dHkoKSkgeworICAgICAgICBOU1N0cmluZyAqcHJlZmVycmVkVHlwZUlkZW50aWZpZXIgPSBbVVRU
eXBlIHR5cGVXaXRoTUlNRVR5cGU6cHJlZmVycmVkTUlNRVR5cGUgY29uZm9ybWluZ1RvVHlwZTpV
VFR5cGVJbWFnZV0uaWRlbnRpZmllcjsKKyAgICAgICAgaWYgKFdlYkNvcmU6OmlzU3VwcG9ydGVk
SW1hZ2VUeXBlKHByZWZlcnJlZFR5cGVJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHRhcmdldFR5
cGUgPSBwcmVmZXJyZWRUeXBlSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICBpZiAoYXV0byBkYXRh
ID0gV2ViS2l0Ojp0cmFuc2NvZGUoaW1hZ2UuZ2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZil0
YXJnZXRUeXBlLmdldCgpKTsgW2RhdGEgbGVuZ3RoXSkKKyAgICAgICAgX3BhZ2UtPnJlcGxhY2VT
ZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoeyBTdHJpbmcgeyB0YXJnZXRUeXBlLmdldCgpIH0g
fSwgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVu
Z3RoXSB9KTsKK30KKworLSAodm9pZClkb0FmdGVyQ29tcHV0aW5nSW1hZ2VBbmFseXNpc1Jlc3Vs
dHNGb3JNYXJrdXA6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiljb21wbGV0aW9uCit7Cisg
ICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7Cisg
ICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
ZWxlbWVudFRvQW5hbHl6ZSA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCku
c2VsZWN0ZWRFZGl0YWJsZUltYWdlOworICAgIGlmIChfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3Vs
dHMgJiYgX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzLT5lbGVtZW50ID09IGVsZW1lbnRUb0Fu
YWx5emUpIHsKKyAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzID0gc3RkOjpudWxsb3B0OworCisgICAg
aWYgKCFlbGVtZW50VG9BbmFseXplKSB7CisgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIF9wYWdlLT5yZXF1ZXN0SW1hZ2VCaXRtYXAoKmVsZW1lbnRU
b0FuYWx5emUsIFtjb250ZXh0ID0gKmVsZW1lbnRUb0FuYWx5emUsIGNvbXBsZXRpb24gPSBXVEZN
b3ZlKGNvbXBsZXRpb24pLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNl
bGYpXShhdXRvJiBpbWFnZURhdGEsIGF1dG8mIHNvdXJjZU1JTUVUeXBlKSBtdXRhYmxlIHsKKyAg
ICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgIGlmICghc3Ry
b25nU2VsZikgeworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgYXV0byBpbWFnZUJpdG1hcCA9IFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VEYXRhKTsKKyAgICAgICAgaWYgKCFpbWFnZUJpdG1hcCkg
eworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byBjZ0ltYWdlID0gaW1hZ2VCaXRtYXAtPm1ha2VDR0ltYWdlKCk7
CisgICAgICAgIGlmICghY2dJbWFnZSkgeworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IENoZWNrIHRv
IHNlZSBpZiB3ZSBjYW4gYXZvaWQgdGhpcyBleHRyYSB0cmFuc2NvZGluZyBzdGVwIG9uY2UgVmlz
aW9uS2l0IHN0YXJ0cyB1c2luZyBgbWVkaWFhbmFseXNpc2RgIGZvciB0aGlzLgorICAgICAgICBh
dXRvIHRpZmZEYXRhID0gV2ViS2l0Ojp0cmFuc2NvZGUoY2dJbWFnZS5nZXQoKSwgKF9fYnJpZGdl
IENGU3RyaW5nUmVmKVVUVHlwZVRJRkYuaWRlbnRpZmllcik7CisgICAgICAgIGlmICghW3RpZmZE
YXRhIGxlbmd0aF0pIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJldGFpblB0ciB0cmFuc2NvZGVkSW1hZ2UgPSBb
VUlJbWFnZSBpbWFnZVdpdGhEYXRhOnRpZmZEYXRhLmdldCgpXTsKKyAgICAgICAgaWYgKCF0cmFu
c2NvZGVkSW1hZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdlYktpdDo6cmVxdWVzdEltYWdlQW5hbHlzaXNN
YXJrdXAoW3RyYW5zY29kZWRJbWFnZSBDR0ltYWdlXSwgW3NvdXJjZU1JTUVUeXBlLCBjb250ZXh0
LCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKSwgd2Vha1NlbGZdKENHSW1hZ2VSZWYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxm
LmdldCgpOworICAgICAgICAgICAgaWYgKCFzdHJvbmdTZWxmKSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGlvbigpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgICAgICBzdHJvbmdTZWxmLT5faW1h
Z2VBbmFseXNpc01hcmt1cFJlc3VsdHMgPSB7IHsgY29udGV4dCwgeyByZXN1bHQgfSwgc291cmNl
TUlNRVR5cGUgfSB9OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0cm9uZ1Nl
bGYtPl9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cyA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb24oKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKKyNlbmRpZiAvLyBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCiAtICh2b2lkKXNlbGVjdFBvc2l0
aW9uQXRQb2ludDooQ0dQb2ludClwb2ludCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfYXV0b2NvcnJlY3Rpb25Db250ZXh0TmVlZHNV
cGRhdGUgPSBZRVM7CkBAIC03MzEzLDEwICs3NDY4LDggQEAgLSAodm9pZClfdXBkYXRlU2VsZWN0
aW9uQXNzaXN0YW50U3VwcHJlc3Npb25TdGF0ZQogLSAodm9pZClfc2VsZWN0aW9uQ2hhbmdlZAog
ewogICAgIF9hdXRvY29ycmVjdGlvbkNvbnRleHROZWVkc1VwZGF0ZSA9IFlFUzsKLSNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCi0gICAgW3NlbGYgc2V0VXBBcHBIaWdobGlnaHRNZW51c0lmTmVl
ZGVkXTsKLSNlbmRpZgogCisgICAgW3NlbGYgc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJB
Y3Rpb25zXTsKICAgICBbc2VsZiBfdXBkYXRlU2VsZWN0aW9uQXNzaXN0YW50U3VwcHJlc3Npb25T
dGF0ZV07CiAKICAgICBfY2FjaGVkU2VsZWN0ZWRUZXh0UmFuZ2UgPSBuaWw7CkBAIC05NjAyLDIx
ICs5NzU1LDUxIEBAIC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNvZ25pemVkOihVSUdlc3R1cmVS
ZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRpZgogCistICh2b2lkKXNldFVw
QWRkaXRpb25hbE1lbnVDb250cm9sbGVyQWN0aW9ucworeworICAgIGF1dG8gdXBkYXRlZEl0ZW1z
ID0gYWRvcHROUyhVSU1lbnVDb250cm9sbGVyLnNoYXJlZE1lbnVDb250cm9sbGVyLm1lbnVJdGVt
cy5tdXRhYmxlQ29weSA/OiBbTlNNdXRhYmxlQXJyYXk8VUlNZW51SXRlbSAqPiBuZXddKTsKKyNp
ZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIFtzZWxmIHVwZGF0ZUlt
YWdlQW5hbHlzaXNNYXJrdXBNZW51SXRlbXM6dXBkYXRlZEl0ZW1zLmdldCgpXTsKKyNlbmRpZgog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKyAgICBbc2VsZiB1cGRhdGVBcHBIaWdobGlnaHRN
ZW51SXRlbXM6dXBkYXRlZEl0ZW1zLmdldCgpXTsKKyNlbmRpZgorICAgIFVJTWVudUNvbnRyb2xs
ZXIuc2hhcmVkTWVudUNvbnRyb2xsZXIubWVudUl0ZW1zID0gdXBkYXRlZEl0ZW1zLmdldCgpOwor
fQorCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykgfHwgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQogCi0tICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0TWVudXNJZk5lZWRlZAor
c3RhdGljIFVJTWVudUl0ZW0gKmZpbmRNZW51SXRlbVdpdGhBY3Rpb24oTlNBcnJheTxVSU1lbnVJ
dGVtICo+ICppdGVtcywgU0VMIGFjdGlvbikKIHsKLSAgICBpZiAoIV9wYWdlLT5wcmVmZXJlbmNl
cygpLmFwcEhpZ2hsaWdodHNFbmFibGVkKCkgfHwgIXNlbGYud2luZG93IHx8ICFfcGFnZS0+ZWRp
dG9yU3RhdGUoKS5zZWxlY3Rpb25Jc1JhbmdlKQorICAgIGZvciAoVUlNZW51SXRlbSAqaXRlbSBp
biBpdGVtcykgeworICAgICAgICBpZiAoaXRlbS5hY3Rpb24gPT0gYWN0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuIGl0ZW07CisgICAgfQorICAgIHJldHVybiBuaWw7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKSB8fCBFTkFCTEUoQVBQX0hJR0hMSUdI
VFMpCisKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKKy0gKHZvaWQpdXBkYXRlQXBwSGln
aGxpZ2h0TWVudUl0ZW1zOihOU011dGFibGVBcnJheTxVSU1lbnVJdGVtICo+ICopdXBkYXRlZEl0
ZW1zCit7CisgICAgYXV0byBjdXJyZW50UXVpY2tOb3RlSXRlbSA9IGZpbmRNZW51SXRlbVdpdGhB
Y3Rpb24odXBkYXRlZEl0ZW1zLCBAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1
aWNrTm90ZVdpdGhSYW5nZTopKTsKKyAgICBhdXRvIG5ld1F1aWNrTm90ZUl0ZW0gPSBmaW5kTWVu
dUl0ZW1XaXRoQWN0aW9uKHVwZGF0ZWRJdGVtcywgQHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZv
ck5ld1F1aWNrTm90ZVdpdGhSYW5nZTopKTsKKworICAgIGlmICghX3BhZ2UtPnByZWZlcmVuY2Vz
KCkuYXBwSGlnaGxpZ2h0c0VuYWJsZWQoKSB8fCAhc2VsZi53aW5kb3cgfHwgIV9wYWdlLT5lZGl0
b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRRdWlja05v
dGVJdGVtKQorICAgICAgICAgICAgW3VwZGF0ZWRJdGVtcyByZW1vdmVPYmplY3Q6Y3VycmVudFF1
aWNrTm90ZUl0ZW1dOworICAgICAgICBpZiAobmV3UXVpY2tOb3RlSXRlbSkKKyAgICAgICAgICAg
IFt1cGRhdGVkSXRlbXMgcmVtb3ZlT2JqZWN0Om5ld1F1aWNrTm90ZUl0ZW1dOwogICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgZm9yIChVSU1lbnVJdGVtICptZW51SXRlbSBpbiBbW1VJTWVudUNv
bnRyb2xsZXIgc2hhcmVkTWVudUNvbnRyb2xsZXJdIG1lbnVJdGVtc10pIHsKLSAgICAgICAgaWYg
KFttZW51SXRlbSBhY3Rpb25dID09IEBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50
UXVpY2tOb3RlV2l0aFJhbmdlOikgfHwgW21lbnVJdGVtIGFjdGlvbl0gPT0gQHNlbGVjdG9yKGNy
ZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90ZVdpdGhSYW5nZTopKQotICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICAKLSAgICBhdXRvIGFkZEhpZ2hsaWdodEN1cnJlbnRRdWlja05vdGVJ
dGVtID0gYWRvcHROUyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6V2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnQWRkSGlnaGxpZ2h0VG9DdXJyZW50UXVpY2tOb3RlKCkgYWN0aW9u
OkBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOild
KTsKLSAgICBhdXRvIGFkZEhpZ2hsaWdodE5ld1F1aWNrTm90ZUl0ZW0gPSBhZG9wdE5TKFtbVUlN
ZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdB
ZGRIaWdobGlnaHRUb05ld1F1aWNrTm90ZSgpIGFjdGlvbjpAc2VsZWN0b3IoY3JlYXRlSGlnaGxp
Z2h0Rm9yTmV3UXVpY2tOb3RlV2l0aFJhbmdlOildKTsKLSAgICBbW1VJTWVudUNvbnRyb2xsZXIg
c2hhcmVkTWVudUNvbnRyb2xsZXJdIHNldE1lbnVJdGVtczpAWyBhZGRIaWdobGlnaHRDdXJyZW50
UXVpY2tOb3RlSXRlbS5nZXQoKSwgYWRkSGlnaGxpZ2h0TmV3UXVpY2tOb3RlSXRlbS5nZXQoKSBd
XTsKKworICAgIGlmICghY3VycmVudFF1aWNrTm90ZUl0ZW0pCisgICAgICAgIFt1cGRhdGVkSXRl
bXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldl
YkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvQ3VycmVudFF1aWNrTm90ZSgp
IGFjdGlvbjpAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhS
YW5nZTopXSkuZ2V0KCldOworCisgICAgaWYgKCFuZXdRdWlja05vdGVJdGVtKQorICAgICAgICBb
dXBkYXRlZEl0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbVUlNZW51SXRlbSBhbGxvY10gaW5pdFdp
dGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRUb05ld1F1aWNr
Tm90ZSgpIGFjdGlvbjpAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVpY2tOb3RlV2l0
aFJhbmdlOildKS5nZXQoKV07CiB9CiAKIC0gKHZvaWQpY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVu
dFF1aWNrTm90ZVdpdGhSYW5nZTooaWQpc2VuZGVyCkBAIC0xMDMxNSwxNCArMTA0OTgsNyBAQCAt
IChpZCA8UUxQcmV2aWV3SXRlbT4pcHJldmlld0NvbnRyb2xsZXI6KFFMUHJldmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyIHByZXZpZQogLSAoTlNEYXRhICopcHJvdmlkZURhdGFGb3JJdGVtOihR
TEl0ZW0gKilpdGVtCiB7CiAgICAgQVNTRVJUKF92aXN1YWxTZWFyY2hQcmV2aWV3SW1hZ2UpOwot
Ci0gICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKE5VTEwsIDApKTsK
LSAgICBhdXRvIGRlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVX
aXRoRGF0YShkYXRhLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5pZGVu
dGlmaWVyLCAxLCBOVUxMKSk7Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGlu
YXRpb24uZ2V0KCksIFtfdmlzdWFsU2VhcmNoUHJldmlld0ltYWdlIENHSW1hZ2VdLCBuaWwpOwot
ICAgIGlmICghQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIGRhdGEuYnJpZGdpbmdBdXRvcmVsZWFz
ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRyYW5zY29kZShbX3Zpc3VhbFNlYXJjaFByZXZpZXdJ
bWFnZSBDR0ltYWdlXSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKVVUVHlwZVRJRkYuaWRlbnRpZmll
cikuYXV0b3JlbGVhc2UoKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV0tBY3Rpb25TaGVldEFzc2lz
dGFudERlbGVnYXRlCkBAIC0xMDM4NSw2ICsxMDU2MSw5IEBAIC0gKHZvaWQpX3NldFVwSW1hZ2VB
bmFseXNpcwogI2lmIFVTRShVSUNPTlRFWFRNRU5VKSAmJiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNf
Rk9SX01BQ0hJTkVfUkVBREFCTEVfQ09ERVMpCiAgICAgX2NvbnRleHRNZW51Rm9yTWFjaGluZVJl
YWRhYmxlQ29kZS5jbGVhcigpOwogI2VuZGlmIC8vIFVTRShVSUNPTlRFWFRNRU5VKSAmJiBFTkFC
TEUoSU1BR0VfQU5BTFlTSVNfRk9SX01BQ0hJTkVfUkVBREFCTEVfQ09ERVMpCisjaWYgRU5BQkxF
KElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICBfaW1hZ2VBbmFseXNpc01hcmt1cFJl
c3VsdHMgPSBzdGQ6Om51bGxvcHQ7CisjZW5kaWYKIH0KIAogLSAodm9pZClfdGVhckRvd25JbWFn
ZUFuYWx5c2lzCkBAIC0xMDQxMCw2ICsxMDU4OSw5IEBAIC0gKHZvaWQpX3RlYXJEb3duSW1hZ2VB
bmFseXNpcwogICAgIF9jb250ZXh0TWVudUZvck1hY2hpbmVSZWFkYWJsZUNvZGUuY2xlYXIoKTsK
ICNlbmRpZiAvLyBVU0UoVUlDT05URVhUTUVOVSkgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0ZP
Ul9NQUNISU5FX1JFQURBQkxFX0NPREVTKQogICAgIFtzZWxmIF9pbnZva2VBbGxBY3Rpb25zVG9Q
ZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VBbmFseXNpczpXZWJLaXQ6OlByb2NlZWRXaXRoVGV4dFNl
bGVjdGlvbkluSW1hZ2U6Ok5vXTsKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1F
TlRTKQorICAgIF9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cyA9IHN0ZDo6bnVsbG9wdDsKKyNl
bmRpZgogfQogCiAtICh2b2lkKV9jYW5jZWxJbWFnZUFuYWx5c2lzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGI3OTJjMmQ2OWJkYjU2NjZhMWMy
NGJkYWRlM2ZkMTAzMDc1ZjEwZDguLjc2ZDZiN2RlYzU2OTMzYjJjN2E1NTllZWY0ZDkxMmFhYWVh
YzQ4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC03NzQzLDYgKzc3NDMsNDIgQEAgdm9pZCBXZWJQYWdlOjpzdGFydEltYWdlQW5hbHlzaXMo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZ
U0lTKQogCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RJbWFnZUJpdG1hcChjb25zdCBFbGVtZW50Q29u
dGV4dCYgY29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc291cmNlTUlNRVR5cGUpPiYmIGNvbXBsZXRpb24p
Cit7CisgICAgUmVmUHRyIGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChjb250ZXh0KTsKKyAg
ICBpZiAoIWVsZW1lbnQpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJJbWFnZT4oZWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFyZW5kZXJlcikgewor
ICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gYml0bWFwID0gY3JlYXRlU2hhcmVhYmxlQml0bWFwKCpyZW5kZXJlcik7CisgICAg
aWYgKCFiaXRtYXApIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAg
Yml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKSB7
CisgICAgICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IHJlbmRl
cmVyLT5jYWNoZWRJbWFnZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZElt
YWdlLT5pbWFnZSgpKQorICAgICAgICAgICAgbWltZVR5cGUgPSBpbWFnZS0+bWltZVR5cGUoKTsK
KyAgICB9CisgICAgQVNTRVJUKCFtaW1lVHlwZS5pc0VtcHR5KCkpOworICAgIGNvbXBsZXRpb24o
aGFuZGxlLCBtaW1lVHlwZSk7Cit9CisKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVY
VF9NRU5VUykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCiB2b2lkIFdlYlBhZ2U6OnNob3dNZWRpYUNv
bnRyb2xzQ29udGV4dE1lbnUoRmxvYXRSZWN0JiYgdGFyZ2V0RnJhbWUsIFZlY3RvcjxNZWRpYUNv
bnRyb2xzQ29udGV4dE1lbnVJdGVtPiYmIGl0ZW1zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1l
ZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW06OklEKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3NGViYzkz
YTBiNDVmNjI2MjFmZDc2OWY1ZGFkMjgzZDAyZGZiOThiLi5kZmE3MTc5YmMzNWU2MTMwYTgyOGE5
OWRkNzYxZGRiZjVmY2M5YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xNDQwLDYgKzE0NDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydElt
YWdlQW5hbHlzaXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKICNlbmRpZgogCisgICAgdm9p
ZCByZXF1ZXN0SW1hZ2VCaXRtYXAoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VNSU1FVHlwZSk+JiYpOworCiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9T
RVJWSUNFUykgJiYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgdm9pZCBoYW5kbGVDb250ZXh0
TWVudVRyYW5zbGF0aW9uKGNvbnN0IFdlYkNvcmU6OlRyYW5zbGF0aW9uQ29udGV4dE1lbnVJbmZv
Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQxODBmZWQxMjI5MzQwNjFhNjczMDAzMWUyYzJkZTI0
ZDIxMmJlMmYuLjU4MTcyMzUwYjMxNmM5ZmNkZmQ5NWQzYjk3MDc2MWQ5NGQ2NzAzM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtMTI4LDYgKzEyOCw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ2xl
YXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZSgpIC0+ICgpIEFzeW5jCiAjZW5kaWYK
IAorICAgIFJlcXVlc3RJbWFnZUJpdG1hcChzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQg
ZWxlbWVudENvbnRleHQpIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdl
LCBTdHJpbmcgc291cmNlTUlNRVR5cGUpIEFzeW5jCisKICAgICBTZXRDb250cm9sbGVkQnlBdXRv
bWF0aW9uKGJvb2wgY29udHJvbGxlZCkKIAogICAgIENvbm5lY3RJbnNwZWN0b3IoU3RyaW5nIHRh
cmdldElkLCBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUgY29ubmVj
dGlvblR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCmluZGV4IDNkZGMyNjcxNzQ2OWQ2YWRiYTEyNDIxMTM4YTYwMWNmNWJjMWM3
ZTYuLjJhMTFkY2EwMmU4MmMwN2MwYWY0MDE5OTNlNjEwZDM1ZWRkYTU1OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0z
MjAsNiArMzIwLDI1IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFt
ZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS5zZWxlY3RlZFRleHRMZW5ndGggPSBzZWxlY3RlZFRleHQubGVuZ3RoKCk7CiAgICAg
ICAgICAgICBjb25zdCBpbnQgbWF4U2VsZWN0ZWRUZXh0TGVuZ3RoID0gMjAwOwogICAgICAgICAg
ICAgcG9zdExheW91dERhdGEud29yZEF0U2VsZWN0aW9uID0gc2VsZWN0ZWRUZXh0LmxlZnQobWF4
U2VsZWN0ZWRUZXh0TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gZmluZFNlbGVjdGVkRWRpdGFi
bGVJbWFnZUVsZW1lbnQgPSBbJl0geworICAgICAgICAgICAgICAgIFJlZlB0cjxIVE1MSW1hZ2VF
bGVtZW50PiBmb3VuZEltYWdlOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzQ29udGVu
dEVkaXRhYmxlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRJbWFnZTsKKworICAg
ICAgICAgICAgICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yIHsgKnNlbGVjdGVkUmFuZ2Us
IHsgfSB9OyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChmb3VuZEltYWdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZEltYWdlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvdW5kSW1hZ2UgPSBkeW5h
bWljRG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oaXRlcmF0b3Iubm9kZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFmb3VuZEltYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZEltYWdl
OworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VFbGVtZW50ID0g
ZmluZFNlbGVjdGVkRWRpdGFibGVJbWFnZUVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS5zZWxlY3RlZEVkaXRhYmxlSW1hZ2UgPSBjb250ZXh0Rm9yRWxlbWVudCgqaW1h
Z2VFbGVtZW50KTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpc2Fs
bG93IHJlcGxhY2Ugd2hlbiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgQ0ogY2hhcmFjdGVycy4K
ICAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRl
bnRFZGl0YWJsZSAmJiAhcmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQu
aXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsK
</data>
<flag name="commit-queue"
          id="478389"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451608</attachid>
            <date>2022-02-10 15:01:45 -0800</date>
            <delta_ts>2022-02-10 16:44:21 -0800</delta_ts>
            <desc>Fix iOS 15 build</desc>
            <filename>bug-236415-20220210150144.patch</filename>
            <type>text/plain</type>
            <size>35823</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVkOTczNWRkMTA1OWQz
NGJmYTY0OTkwNTA4M2I1OWQxODUwY2EzZS4uZTZlZDEwMjdmZTcyNGE1NWQzMDM4ZDg5ZTAxNDRj
NGZjNTZhZmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBz
dXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNhbGxvdXQgYmFyIHdoZW4g
c2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4NzE0MzMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IGEgY291cGxl
IG9mIGZ1bmN0aW9uczsgc2VlIFdlYktpdC9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAyMi0wMi0xMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGBXZWJQYWdlUHJveHk6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoKWAgb24gaU9TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGYyNmUwMDhhNWQ4ODJkYTkwMDUyMDg4OTQ4Y2U3ZGZjZTY1NWRlMmUuLmM3YmUxMDYxZDU5MDAw
M2M0NzI3ZGJiZTliZjRiZjg5OWY5YzBjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisy
MDIyLTAyLTEwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNh
bGxvdXQgYmFyIHdoZW4gc2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4
NzE0MzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3ICJNYXJrdXAgSW1hZ2UiIGNh
bGxvdXQgbWVudSBpdGVtLCB3aGljaCBpcyBvbmx5IHNob3duIHdoZW4gdGhlIHVzZXIgaGFzCisg
ICAgICAgIHNlbGVjdGVkIGV4YWN0bHkgb25lIGltYWdlLiBJZiB0aGUgaW1hZ2UgaXMgc3VpdGFi
bGUgZm9yICJNYXJrdXAgSW1hZ2UiICh0aGF0IGlzLCB0aGUgcmVsZXZhbnQgVmlzaW9uS2l0IEFQ
SQorICAgICAgICByZXR1cm5zIGEgbm9uLW51bGwgaW1hZ2UpLCB0aGVuIHdlIHNob3cgYSBuZXcg
aXRlbSBpbiB0aGUgY2FsbG91dCBiYXIgd2hpY2gsIHdoZW4gYWN0aXZhdGVkLCByZXBsYWNlcyB0
aGUKKyAgICAgICAgY3VycmVudCBzZWxlY3Rpb24gd2l0aCB0aGUgaW1hZ2UgcmV0dXJuZWQgYnkg
dGhlIGFmb3JlbWVudGlvbmVkIFZpc2lvbktpdCBBUEkuCisKKyAgICAgICAgU2VlIGJlbG93IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRp
b25VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25V
dGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6OmlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3Rl
bUZlYXR1cmVFbmFibGVkKToKKworICAgICAgICBBZGQgYSBuZXcgaGVscGVyIG1ldGhvZCB0byBy
ZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgc3lzdGVtIGZlYXR1cmUgZmxh
ZyBpcyBlbmFibGVkLgorCisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisKKyAgICAgICAgQWRkIGFuIG9wdGlvbmFs
IGBFbGVtZW50Q29udGV4dGAgdGhhdCdzIHBvcHVsYXRlZCBvbmx5IGlmIHRoZSB1c2VyJ3Mgc2Vs
ZWN0aW9uIHNwYW5zIGEgc2luZ2xlIEhUTUxJbWFnZUVsZW1lbnQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBkaWRN
b3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0SW1hZ2VCaXRtYXApOgorCisgICAg
ICAgIEFkZCBhIG5ldyBhc3luYyBJUEMgbWVzc2FnZSB0aGF0IGFsbG93cyB0aGUgVUkgcHJvY2Vz
cyB0byBncmFiIGEgU2hhcmVhYmxlQml0bWFwIGhhbmRsZSAoYWxvbmcgd2l0aCB0aGUgTUlNRQor
ICAgICAgICB0eXBlIG9mIHRoZSBzb3VyY2UgaW1hZ2UpIGdpdmVuIGFuIEVsZW1lbnRDb250ZXh0
IHRoYXQgaWRlbnRpZmllcyBhbiBpbWFnZSBlbGVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmg6CisKKyAgICAgICAgQ2FjaGUgdGhlIGxhc3QgcmVzdWx0IGZyb20gcmVxdWVz
dGluZyAiSW1hZ2UgTWFya3VwIiBkYXRhIGZyb20gVmlzaW9uS2l0IGluIGBfaW1hZ2VBbmFseXNp
c01hcmt1cFJlc3VsdHNgLCBhbmQKKyAgICAgICAgdXNlIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBp
bnZva2luZyB0aGUgbmV3IHNlbGVjdG9yLCBgLXBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOmAu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0
aG9kIHRoYXQgdGFrZXMgYSBDR0ltYWdlUmVmLCB0cmFuc2NvZGVzIGl0IHRvIHRoZSBnaXZlbiB1
bmlmb3JtIHR5cGUgaWRlbnRpZmllciwgYW5kIGZpbmFsbHkKKyAgICAgICAgcmV0dXJucyBhIGJs
b2Igb2YgaW1hZ2UgZGF0YS4gVXNlZCBieSB0aGUgdHdvIG5ldyBjYWxsIHNpdGVzIGZvciBJbWFn
ZSBNYXJrdXAgYmVsb3csIGFzIHdlbGwgYXMgYW4gZXhpc3RpbmcgY2FsbAorICAgICAgICBzaXRl
IGZvciBWaXN1YWwgTG9vayBVcCBpbiBgLXByb3ZpZGVEYXRhRm9ySXRlbTpgCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyB0YXJnZXRGb3JBY3Rpb246d2l0aFNlbmRlcjpdKToKKworICAgICAg
ICBBZGQgYSBjaGVjayBmb3IgdGhlIG5ldyBJbWFnZSBNYXJrdXAgYWN0aW9uIHNlbGVjdG9yLgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlv
bkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorCisgICAgICAgIFVzZSB0aGlzIGV4
aXN0aW5nIFVJS2l0IGRlbGVnYXRlIGhvb2sgdG8gZGVmZXIgY2FsbG91dCBiYXIgcHJlc2VudGF0
aW9uIG9ubHkgaW4gdGhlIGNhc2Ugd2hlcmUgYSBzaW5nbGUgaW1hZ2UKKyAgICAgICAgZWxlbWVu
dCBpcyBzZWxlY3RlZCwgc3VjaCB0aGF0IHdlIG9ubHkgc2hvdyB0aGUgY2FsbG91dCBiYXIgaW4g
dGhpcyBzY2VuYXJpbyBvbmNlIFZpc2lvbktpdCBoYXMgZGV0ZXJtaW5lZAorICAgICAgICB3aGV0
aGVyIG9yIG5vdCB0aGUgIkltYWdlIE1hcmt1cCIgYWN0aW9uIGlzIHN1aXRhYmxlIGZvciB0aGUg
ZGF0YSBvZiB0aGUgc2VsZWN0ZWQgaW1hZ2UuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHVycG9z
ZSBvZiB0aGlzIGRlbGVnYXRlIGhvb2sgd2FzIHRvIGFsbG93IFdlYktpdCB0byBkZWZlciBjYWxs
b3V0IGJhciBwcmVzZW50YXRpb24gZm9yIGEgc2hvcnQsCisgICAgICAgIGhhcmQtY29kZWQgZGVs
YXkgdG8gd2FpdCBmb3IgdGhlIHdlYiBwYWdlIHRvIGxheW91dCBvdXQgb3IgYWRkIGNsaWNrYWJs
ZSBpdGVtcyB0aGF0IG1pZ2h0IHVuZGVybGFwIHRoZSBjYWxsb3V0CisgICAgICAgIGJhcjsgYXMg
c3VjaCwgd2Ugc3RpbGwgcGVyZm9ybSB0aGlzIGxvZ2ljIHdpdGggYSBoYXJkLWNvZGVkIGRlbGF5
IG9mIDI1MCBtcyAoaW5jbHVkaW5nIHdoYXRldmVyIHRpbWUgd2FzIHRha2VuCisgICAgICAgIGR1
cmluZyBpbWFnZSBhbmFseXNpcykuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1cGRhdGVJ
bWFnZUFuYWx5c2lzTWFya3VwTWVudUl0ZW1zOl0pOgorCisgICAgICAgIEFwcGVuZCB0aGUgbmV3
IG1lbnUgaXRlbSBvbmx5IGlmIHRoZSBzeXN0ZW0gZmVhdHVyZSBmbGFnIGlzIGVuYWJsZWQsIGFu
ZCB3ZSd2ZSBzZWxlY3RlZCBhbiBlZGl0YWJsZSBpbWFnZS4gTm90ZQorICAgICAgICB0aGF0IHRo
aXMgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBjb25zdWx0IGBfaW1hZ2VBbmFseXNpc01hcmt1cFJl
c3VsdHNgIHRvIGVuc3VyZSB0aGF0IHRoZSBzdGF0ZSBvZiBhZGRpdGlvbmFsCisgICAgICAgIG1l
bnUgaXRlbXMgaW4gdGhlIHNoYXJlZCBtZW51IGNvbnRyb2xsZXIgaXMgY29uc2lzdGVudCBiZXR3
ZWVuIE1hcmt1cCBJbWFnZSBhbmQgUXVpY2sgTm90ZSwgYW5kIHVwZGF0ZWQgaW4gdGhlCisgICAg
ICAgIHNhbWUgbGlmZWN5Y2xlIGFzIGVkaXRvciBzdGF0ZSB1cGRhdGVzLgorCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXBdKToKKworICAgICAg
ICBUaGlzIGlzIGNvbnN1bHRlZCB3aGVuIHdlJ3JlIGFjdHVhbGx5IGFib3V0IHRvIHNob3cgdGhl
IGNhbGxvdXQgYmFyIGFjdGlvbiBmb3IgIkltYWdlIE1hcmt1cCIgKGltcG9ydGFudGx5LAorICAg
ICAgICBhZnRlciBjYWxsb3V0IGJhciBwcmVzZW50YXRpb24gZGVmZXJyYWwpLCBhbmQgZGVwZW5k
cyBvbiB0aGUgc3RhdGUgb2YgYF9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0c2AuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cDpdKToKKworICAg
ICAgICBBZGQgbG9naWMgdG8gaGFuZGxlIHRoZSBuZXcgYWN0aW9uIGJ5IGNhbGxpbmcgaW50byBX
ZWJQYWdlUHJveHkgdG8gKGJhc2ljYWxseSkgcGFzdGUgdGhlIG1vZGlmaWVkIGltYWdlIGRhdGEK
KyAgICAgICAgYWZ0ZXIgdHJhbnNjb2RpbmcgaXQgdG8gbWF0Y2ggdGhlIGltYWdlIGVsZW1lbnQn
cyBvcmlnaW5hbCBzb3VyY2UgdHlwZS4gQWZ0ZXIgIzIzNjQwNiwgdGhpcyBjb2RlcGF0aCBpcyBu
b3cKKyAgICAgICAgYXZhaWxhYmxlIG9uIGFsbCBDb2NvYSBwbGF0Zm9ybXMgKGFzIG9wcG9zZWQg
dG8gbWFjT1Mtb25seSkuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkb0FmdGVyQ29tcHV0
aW5nSW1hZ2VBbmFseXNpc1Jlc3VsdHNGb3JNYXJrdXA6XSk6CisKKyAgICAgICAgVXNlIHRoZSBu
ZXcgYHJlcXVlc3RJbWFnZUJpdG1hcGAgSVBDIG1lc3NhZ2UgdG8gZ3JhYiBhIGJpdG1hcCBmb3Ig
dGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpbWFnZSwgY2FsbCBvdXQgdG8KKyAgICAgICAgVmlzaW9u
S2l0IHRvIHBlcmZvcm0gaW1hZ2UgYW5hbHlzaXMsIGFuZCB0aGVuIGNhY2hlIHRoZSByZXN1bHRp
bmcgaW1hZ2UuIEFmdGVyIGFsbCBvZiB0aGlzIGlzIGRvbmUsIHdlIHByb2NlZWQKKyAgICAgICAg
d2l0aCBzaG93aW5nIHRoZSBjYWxsb3V0IGJhci4KKworICAgICAgICBJbiBhIGZvbGxvd3VwLCB3
ZSBzaG91bGQgZW5mb3JjZSBzb21lIChyZWFzb25hYmxlKSB1cHBlciBib3VuZCBvbiB0aGUgYW1v
dW50IG9mIHRpbWUgYnkgd2hpY2ggdGhlIGNhbGxvdXQgYmFyCisgICAgICAgIGNhbiBiZSBkZWxh
eWVkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NlbGVjdGlvbkNoYW5nZWRdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlv
bnNdKToKKworICAgICAgICBSZWZhY3RvciBleGlzdGluZyBsb2dpYyBmb3Igc3VwcGx5aW5nIGFk
ZGl0aW9uYWwgY2FsbG91dCBiYXIgbWVudSBpdGVtcywgc3VjaCB0aGF0IHdlIHVwZGF0ZSBpdGVt
cyBhcyBuZWVkZWQgZm9yCisgICAgICAgIGJvdGggUXVpY2sgTm90ZSBhcyB3ZWxsIGFzIEltYWdl
IE1hcmt1cC4gTm90ZSB0aGF0IHdlIG5lZWQgdG8gcHJlc2VydmUgYW55IGV4aXN0aW5nIG1lbnUg
aXRlbXMgaW4gdGhlIHNoYXJlZAorICAgICAgICBVSU1lbnVDb250cm9sbGVyLCBzaW5jZSB0aGUg
V2ViS2l0IGNsaWVudCAoZS5nLiBNYWlsKSBtYXkgaGF2ZSBhbHJlYWR5IHN1cHBsaWVkIGN1c3Rv
bSBtZW51IGl0ZW1zLiBUaGlzCisgICAgICAgIGN1cnJlbnRseSBkb2VlcyBub3QgYWZmZWN0IFF1
aWNrIE5vdGUgc2luY2UgdGhlIG9ubHkgaW50ZXJuYWwgY2xpZW50IHRoYXQgZW5hYmxlcyBRdWlj
ayBOb3RlIGlzIFNhZmFyaSwgd2hpY2gKKyAgICAgICAgZG9lcyBub3QgYXR0ZW1wdCB0byBhZGQg
YW55IG9mIGl0cyBvd24gaXRlbXM7IGhvd2V2ZXIsICJNYXJrdXAgSW1hZ2UiIG5lZWRzIHRvIGJl
IGF2YWlsYWJsZSBpbiBNYWlsIG9uIGlPUyBhcworICAgICAgICB3ZWxsLCB3aGljaCBkb2VzIHVz
ZSBjdXN0byBtZW51IGl0ZW1zLgorCisgICAgICAgIChmaW5kTWVudUl0ZW1XaXRoQWN0aW9uKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1cGRhdGVBcHBIaWdobGlnaHRNZW51SXRlbXM6XSk6
CisKKyAgICAgICAgTWFrZSB0aGlzIGFkanVzdCB0aGUgZ2l2ZW4gbXV0YWJsZSBhcnJheSBvZiBV
SU1lbnVJdGVtcywgd2hpY2ggYXJlIHRoZW4gY29tYmluZWQgd2l0aCBhbnkgbWFya3VwIG1lbnUg
aXRlbXMKKyAgICAgICAgd2hlbiBzZXR0aW5nIGN1c3RvbSBpdGVtcyBvbiB0aGUgc2hhcmVkIG1l
bnUgY29udHJvbGxlci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHByb3ZpZGVEYXRhRm9y
SXRlbTpdKToKKworICAgICAgICBBZGp1c3QgdGhpcyB0byB1c2UgdGhlIG5ldyBgdHJhbnNjb2Rl
YCBoZWxwZXIgZnVuY3Rpb24sIGRlY2xhcmVkIGFib3ZlLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3NldFVwSW1hZ2VBbmFseXNpc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90
ZWFyRG93bkltYWdlQW5hbHlzaXNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcEFw
cEhpZ2hsaWdodE1lbnVzSWZOZWVkZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RJ
bWFnZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorCisgICAgICAgIENvbXB1
dGUgYW5kIHBvcHVsYXRlIHRoZSBuZXcgYHNlbGVjdGVkRWRpdGFibGVJbWFnZWAgZWxlbWVudCBj
b250ZXh0OyB0byBhY2hpZXZlIHRoaXMsIHdlIHVzZSBgVGV4dEl0ZXJhdG9yYCB0bworICAgICAg
ICBzY2FuIGZvciBhbiBpbWFnZSBlbGVtZW50LCBhbmQgYmFpbCBpbW1lZGlhdGVseSBpZiB3ZSBl
aXRoZXIgZmluZCBhbnl0aGluZyB0aGF0IGlzIG5vdCBhbiBpbWFnZSwgb3IgZmluZCBtb3JlCisg
ICAgICAgIHRoYW4gb25lIGltYWdlLgorCiAyMDIyLTAyLTEwICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYFdlYlBhZ2VQcm94eTo6cmVw
bGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSgpYCBvbiBpT1MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDljNzNjZTJiNmY4MGYxYzFkZjVjNDdmNzI2
MTQ0ZDgzYjdiODQxNGYuLjQ3ZWE5ODllOTZjMzAwNGFmYzM4OGNhYTdiYWY3MGQ3YjJjNmJhZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTUxLDcgKzE1
MSw3IEBAIHB1YmxpYzoKICAgICBJbWFnZU9ic2VydmVyKiBpbWFnZU9ic2VydmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZU9ic2VydmVyOyB9CiAgICAgdm9pZCBzZXRJbWFnZU9ic2VydmVyKElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1faW1hZ2VPYnNlcnZlciA9IG9ic2VydmVyOyB9CiAg
ICAgVVJMIHNvdXJjZVVSTCgpIGNvbnN0OwotICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogICAgIGxvbmcgbG9u
ZyBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCmluZGV4IDRi
MDE1YWZjOTVjYWYyMzA4NmExY2JiNjFlM2U1NjRmNzdkMGI5YmIuLjE0YWIyMmI0Y2MyOGU3NTFk
YTVhMjgzNmM3NzNiN2Y0ZTNjOTE3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNyBAQCBjb25zdCBNZW1v
cnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdFN1cHBv
cnRlZEltYWdlVHlwZQogSGFzaFNldDxTdHJpbmc+JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcygpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRp
dGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3RpbmcoY29uc3QgU3RyaW5nJik7Ci1ib29s
IGlzU3VwcG9ydGVkSW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1N1cHBvcnRlZEltYWdlVHlwZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNHSUZJbWFnZVR5
cGUoU3RyaW5nVmlldyk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oCmluZGV4IDNhMjM2YTI0Y2RjODkwNDQz
ZjRkOTJiNWM2ZGMwODdiZmFmNWZjYmIuLmFmNzU4OGViNDJhMTExOTI5MWRhOGYxOGVkMmQ4YmFh
ZDIxMzA1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJl
Y29nbml0aW9uVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9U
ZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaApAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGJvb2wgaXNMaXZlVGV4dEF2YWlsYWJsZUFuZEVuYWJsZWQoKTsKIGJvb2wgdGV4dFJl
Y29nbml0aW9uRW5oYW5jZW1lbnRzU3lzdGVtRmVhdHVyZUVuYWJsZWQoKTsKIGJvb2wgaW1hZ2VB
bmFseXNpc1F1ZXVlU3lzdGVtRmVhdHVyZUVuYWJsZWQoKTsKK2Jvb2wgaXNJbWFnZUFuYWx5c2lz
TWFya3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKTsKIAogV2ViQ29yZTo6VGV4dFJlY29nbml0aW9u
UmVzdWx0IG1ha2VUZXh0UmVjb2duaXRpb25SZXN1bHQoQ29jb2FJbWFnZUFuYWx5c2lzICopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlv
blV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0
aW9uVXRpbGl0aWVzLm1tCmluZGV4IDA5ZjQ1NzIyOWE0MGU3NGNiNzQ2YzBlYmQ2M2YzZWVhOGZl
NzczNmQuLjcxYjJlMjYyMzA2NjU5NDlkODVlNDViMmNiZmNiZTAyZWY2YzVhMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRp
bGl0aWVzLm1tCkBAIC0xNTEsNiArMTUxLDE1IEBAIGJvb2wgaW1hZ2VBbmFseXNpc1F1ZXVlU3lz
dGVtRmVhdHVyZUVuYWJsZWQoKQogI2VuZGlmCiB9CiAKK2Jvb2wgaXNJbWFnZUFuYWx5c2lzTWFy
a3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKQoreworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19F
TkhBTkNFTUVOVFMpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCiAjZW5kaWYKIAogYm9vbCBpc0xpdmVUZXh0QXZhaWxhYmxlQW5kRW5hYmxl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXggNjdiZDZmMTJhNTU0NzE4
OTg0MTM0NmNkYjc1YTg1NTA1ZmY2NzAxYS4uM2MyYWU0ZWViNTNjMzc4NjdhMjEyZjZlZjBkZTVl
ZDdhZDY4MDhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcApAQCAtMTQ1LDYg
KzE0NSw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY2FyZXRDb2xvcjsKICAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvblN0YXJ0SXNBdFBhcmFncmFwaEJvdW5kYXJ5OwogICAgIGVuY29k
ZXIgPDwgc2VsZWN0aW9uRW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5OworICAgIGVuY29kZXIgPDwg
c2VsZWN0ZWRFZGl0YWJsZUltYWdlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVu
Y29kZXIgPDwgc2VsZWN0aW9uQm91bmRpbmdSZWN0OwpAQCAtMjI4LDYgKzIyOSw4IEBAIGJvb2wg
RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBQb3N0TGF5b3V0RGF0YSYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnNlbGVjdGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3Rl
ZEVkaXRhYmxlSW1hZ2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0aW9uQm91bmRp
bmdSZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IGQyN2I5NTkyYTE0ODQx
ZGUwYTQxMDE0ZjZkMDVkN2U2NTU1NWQyNDcuLjEzMWY5ZTgxMjA3YjkxOGUzYTJhMmU1M2Y4ZTg2
M2M2ZTg0YzZjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllclR5
cGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWxl
bWVudENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Xcml0aW5nRGlyZWN0
aW9uLmg+CkBAIC0xMjQsNiArMTI1LDcgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICAgICAg
Ym9vbCBhdFN0YXJ0T2ZTZW50ZW5jZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgc2VsZWN0aW9u
U3RhcnRJc0F0UGFyYWdyYXBoQm91bmRhcnkgeyBmYWxzZSB9OwogICAgICAgICBib29sIHNlbGVj
dGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSB7IGZhbHNlIH07CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHNlbGVjdGVkRWRpdGFibGVJbWFnZTsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rp
b25Cb3VuZGluZ1JlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCmluZGV4IGJhZjViMGM5OWQwMWY2YzgxYTc1MWVmOGEwOGVjNmRiZGE1NDkz
ZmQuLjc0ZTc4ZWQ4ODYzNGU4OGRjYThhN2RlMTE2MjAzOWExMjA5MWZmYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0xNTI4LDkg
KzE1MjgsNyBAQCAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogICAgIF9wYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OmFsbEZsYWdzKCkpOwogICAgIF9w
YWdlLT53ZWJWaWV3RGlkTW92ZVRvV2luZG93KCk7CiAKLSNpZiBFTkFCTEUoQVBQX0hJR0hMSUdI
VFMpCi0gICAgW19jb250ZW50VmlldyBzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVkZWRdOwot
I2VuZGlmCisgICAgW19jb250ZW50VmlldyBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFj
dGlvbnNdOwogfQogCiAtICh2b2lkKV9zZXRPcGFxdWVJbnRlcm5hbDooQk9PTClvcGFxdWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDk0OWQ4OWE4YzQ4OGQ1
NDQ5YjMxZTc0YmMxZjQxZjAyNmY3OTBiYmQuLjllYzVlZmQyNGYyYzk4NzAzMzZiNTI2M2YyMDY0
NWFhM2ZjNDdmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtODc5OCw2ICs4Nzk4LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydEltYWdlQW5hbHlz
aXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FO
QUxZU0lTKQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEltYWdlQml0bWFwKGNvbnN0IEVs
ZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb24p
Cit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb24o
eyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0SW1hZ2VCaXRtYXAoZWxlbWVudENvbnRleHQp
LCBXVEZNb3ZlKGNvbXBsZXRpb24pKTsKK30KKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiBNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJv
eHk6Om1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjNkYWRjMGQ5MmE2ZTEwOGI2NDE4NTE5
OTA2MTRhMjE1OWJkNTU5OS4uZTQ0ZDE4OTM3ZjFiMmNiMTM0NWEwZjU5NDY3YjFlMzJhZTc4OTEw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwNDQsNiArMjA0
NCw4IEBAIHB1YmxpYzoKICAgICBXS1F1aWNrTG9va1ByZXZpZXdDb250cm9sbGVyICpxdWlja0xv
b2tQcmV2aWV3Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcXVpY2tMb29rUHJldmlld0Nv
bnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgogCisgICAgdm9pZCByZXF1ZXN0SW1hZ2VCaXRtYXAo
Y29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlw
ZSk+JiYpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgaXNRdWFyYW50aW5lZEFuZE5v
dFVzZXJBcHByb3ZlZChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDdm
ZjdhN2Y1ODgzZjM4MjNhYzUxM2U3NmZiMGZmNDA3ODJkOTM3ODcuLmY0MWI1MjM3ZmYxZDZlM2Q3
MGNhMmNmMmY3ZDYxM2E0N2JlNDgzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTI0NSw2ICsyNDUsMTIg
QEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBDR1JlY3QgdGV4dExhc3RSZWN0
OwogfTsKIAorc3RydWN0IEltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzIHsKKyAgICBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCBlbGVtZW50OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiByZXN1
bHQ7CisgICAgU3RyaW5nIHByZWZlcnJlZE1JTUVUeXBlOworfTsKKwogZW51bSBjbGFzcyBQcm9j
ZWVkV2l0aFRleHRTZWxlY3Rpb25JbkltYWdlIDogYm9vbCB7CiAgICAgTm8sCiAgICAgWWVzCkBA
IC01MzEsNiArNTM3LDkgQEAgdXNpbmcgSW1hZ2VBbmFseXNpc1JlcXVlc3RJZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxJbWFnZUFuYWx5c2lzUmVxdWVzdElkZW4KICNlbmRpZiAvLyBVU0Uo
UVVJQ0tfTE9PSykKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdWludDMy
X3QgX2Z1bGxzY3JlZW5WaWRlb0V4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcjsKKyNpZiBFTkFC
TEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpJbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cz4gX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRz
OworI2VuZGlmCiB9CiAKIEBlbmQKQEAgLTc3Myw5ICs3ODIsNyBAQCBGT1JfRUFDSF9QUklWQVRF
X1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dF
Ql9WSUVXKQogLSAoV2ViQ29yZTo6RGF0YU93bmVyVHlwZSlfZGF0YU93bmVyRm9yUGFzdGVib2Fy
ZDooV2ViS2l0OjpQYXN0ZWJvYXJkQWNjZXNzSW50ZW50KWludGVudDsKICNlbmRpZgogCi0jaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZO
ZWVkZWQ7Ci0jZW5kaWYKKy0gKHZvaWQpc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rp
b25zOwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogLSAodm9pZClfZW5kSW1hZ2VBbmFs
eXNpc0dlc3R1cmVEZWZlcnJhbDooV2ViS2l0OjpTaG91bGRQcmV2ZW50R2VzdHVyZXMpc2hvdWxk
UHJldmVudEdlc3R1cmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMTcyZDI1N2ZiODNlZjc5MjJlYjg5
MDNkNGEzNjI5ZTk0NzNiMWY4Ni4uOGM0OTk0ZmZjMGM1OGNiNzBiYzk3ODVmNmUwMjUyMjJjYjJi
YzI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMjcsNiArMTI3LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0UmVjb2duaXRp
b25SZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVG91Y2hBY3Rpb24uaD4KKyNpbXBvcnQgPFdl
YkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZUNBTGF5ZXJFeHRyYXMuaD4KQEAgLTM3NCw2ICszNzUsMjQgQEAgcHJpdmF0ZToKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKIAorI2lmIEVOQUJMRShRVUlDS19MT09LKSB8
fCBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCitzdGF0aWMgUmV0YWluUHRy
PE5TRGF0YT4gdHJhbnNjb2RlKENHSW1hZ2VSZWYgaW1hZ2UsIENGU3RyaW5nUmVmIHR5cGVJZGVu
dGlmaWVyKQoreworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBh
dXRvIGRhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRh
KChfX2JyaWRnZSBDRk11dGFibGVEYXRhUmVmKWRhdGEuZ2V0KCksIHR5cGVJZGVudGlmaWVyLCAx
LCBuaWwpKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQo
KSwgaW1hZ2UsIG5pbCk7CisgICAgaWYgKCFDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0
aW5hdGlvbi5nZXQoKSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gZGF0YTsK
K30KKworI2VuZGlmIC8vIEVOQUJMRShRVUlDS19MT09LKSB8fCBFTkFCTEUoSU1BR0VfQU5BTFlT
SVNfRU5IQU5DRU1FTlRTKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogY29uc3RleHByIGZs
b2F0IGhpZ2hsaWdodERlbGF5ID0gMC4xMjsKQEAgLTQwNzEsNiArNDA5MCwxMCBAQCAtIChpZCl0
YXJnZXRGb3JBY3Rpb246KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAgICAgICAg
IHJldHVybiBzZWxmLnNob3VsZEFsbG93QXBwSGlnaGxpZ2h0Q3JlYXRpb24gJiYgX3BhZ2UtPmFw
cEhpZ2hsaWdodHNWaXNpYmlsaXR5KCkgPyBzZWxmIDogbmlsOwogICAgIGlmIChhY3Rpb24gPT0g
QHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90ZVdpdGhSYW5nZTopKQogICAg
ICAgICByZXR1cm4gc2VsZi5zaG91bGRBbGxvd0FwcEhpZ2hsaWdodENyZWF0aW9uICYmICFfcGFn
ZS0+YXBwSGlnaGxpZ2h0c1Zpc2liaWxpdHkoKSA/IHNlbGYgOiBuaWw7CisjZW5kaWYKKyNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOikpCisgICAgICAgIHJldHVybiBzZWxm
LmNhblBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwID8gc2VsZiA6IG5pbDsKICNlbmRpZgogICAg
IHJldHVybiBbX3dlYlZpZXcgdGFyZ2V0Rm9yQWN0aW9uOmFjdGlvbiB3aXRoU2VuZGVyOnNlbmRl
cl07CiB9CkBAIC00NTk3LDM2ICs0NjIwLDE2OCBAQCAtICh2b2lkKXJlcXVlc3RSZWN0c1RvRXZh
ZGVGb3JTZWxlY3Rpb25Db21tYW5kc1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOUwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFtzZWxmIF9zaG91bGRTdXBwcmVzc1Nl
bGVjdGlvbkNvbW1hbmRzXSB8fCBzZWxmLndlYlZpZXcuX2VkaXRhYmxlKSB7CisgICAgaWYgKFtz
ZWxmIF9zaG91bGRTdXBwcmVzc1NlbGVjdGlvbkNvbW1hbmRzXSkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihAWyBdKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChfZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSAhPSBXZWJLaXQ6OklucHV0VHlwZTo6
Q29udGVudEVkaXRhYmxlICYmIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBl
ICE9IFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYSkgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihAWyBdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIHJlcXVlc3RSZWN0
c1RvRXZhZGVJZk5lZWRlZCA9IFtzdGFydFRpbWUgPSBBcHByb3hpbWF0ZVRpbWU6Om5vdygpLCB3
ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpLCBjb21wbGV0aW9uID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICBhdXRvIHN0cm9uZ1Nl
bGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uKEBbIF0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAK
LSAgICAvLyBHaXZlIHRoZSBwYWdlIHNvbWUgdGltZSB0byBwcmVzZW50IGN1c3RvbSBlZGl0aW5n
IFVJIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRldGVjdCBhbmQgZXZhZGUgaXQuCi0gICAgYXV0byBk
ZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyID0gMC4yNV9zOwotICAgIFdvcmtRdWV1ZTo6bWFp
bigpLmRpc3BhdGNoQWZ0ZXIoZGVsYXlCZWZvcmVTaG93aW5nQ2FsbG91dEJhciwgW2NvbXBsZXRp
b24gPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCB3ZWFrU2VsZiA9IFdlYWtPYmpD
UHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFr
U2VsZikgeworICAgICAgICBpZiAoW3N0cm9uZ1NlbGYgd2ViVmlld10uX2VkaXRhYmxlKSB7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7Ci0gICAgICAg
IGlmICghc3Ryb25nU2VsZi0+X3BhZ2UpIHsKKyAgICAgICAgYXV0byBmb2N1c2VkRWxlbWVudFR5
cGUgPSBzdHJvbmdTZWxmLT5fZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZTsK
KyAgICAgICAgaWYgKGZvY3VzZWRFbGVtZW50VHlwZSAhPSBXZWJLaXQ6OklucHV0VHlwZTo6Q29u
dGVudEVkaXRhYmxlICYmIGZvY3VzZWRFbGVtZW50VHlwZSAhPSBXZWJLaXQ6OklucHV0VHlwZTo6
VGV4dEFyZWEpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb24oQFsgXSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+cmVxdWVzdEV2
YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0gKGF1dG8mIHJlY3RzKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uKGNyZWF0ZU5TQXJyYXko
cmVjdHMpLmdldCgpKTsKKyAgICAgICAgLy8gR2l2ZSB0aGUgcGFnZSBzb21lIHRpbWUgdG8gcHJl
c2VudCBjdXN0b20gZWRpdGluZyBVSSBiZWZvcmUgYXR0ZW1wdGluZyB0byBkZXRlY3QgYW5kIGV2
YWRlIGl0LgorICAgICAgICBhdXRvIGRlbGF5QmVmb3JlU2hvd2luZ0NhbGxvdXRCYXIgPSBzdGQ6
Om1heCgwX3MsIDAuMjVfcyAtIChBcHByb3hpbWF0ZVRpbWU6Om5vdygpIC0gc3RhcnRUaW1lKSk7
CisgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoZGVsYXlCZWZvcmVTaG93
aW5nQ2FsbG91dEJhciwgW2NvbXBsZXRpb24sIHdlYWtTZWxmXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICAgICAgaWYg
KCFzdHJvbmdTZWxmKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbihAWyBdKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghc3Ry
b25nU2VsZi0+X3BhZ2UpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0pOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3Ryb25n
U2VsZi0+X3BhZ2UtPnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihbY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbildIChhdXRvJiByZWN0cykgeworICAgICAgICAgICAgICAg
IGNvbXBsZXRpb24oY3JlYXRlTlNBcnJheShyZWN0cykuZ2V0KCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH07CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5D
RU1FTlRTKQorICAgIFtzZWxmIGRvQWZ0ZXJDb21wdXRpbmdJbWFnZUFuYWx5c2lzUmVzdWx0c0Zv
ck1hcmt1cDpXVEZNb3ZlKHJlcXVlc3RSZWN0c1RvRXZhZGVJZk5lZWRlZCldOworI2Vsc2UKKyAg
ICByZXF1ZXN0UmVjdHNUb0V2YWRlSWZOZWVkZWQoKTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxF
KElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKworLSAodm9pZCl1cGRhdGVJbWFnZUFuYWx5
c2lzTWFya3VwTWVudUl0ZW1zOihOU011dGFibGVBcnJheTxVSU1lbnVJdGVtICo+ICopdXBkYXRl
ZEl0ZW1zCit7CisgICAgYXV0byBjdXJyZW50SXRlbSA9IGZpbmRNZW51SXRlbVdpdGhBY3Rpb24o
dXBkYXRlZEl0ZW1zLCBAc2VsZWN0b3IocGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KSk7Cisg
ICAgYXV0byYgZWRpdG9yU3RhdGUgPSBfcGFnZS0+ZWRpdG9yU3RhdGUoKTsKKyAgICBpZiAoIVdl
YktpdDo6aXNJbWFnZUFuYWx5c2lzTWFya3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKSB8fCAhc2Vs
Zi53aW5kb3cgfHwgZWRpdG9yU3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEgfHwgIWVkaXRv
clN0YXRlLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0ZWRFZGl0YWJsZUltYWdlKSB7CisgICAgICAg
IGlmIChjdXJyZW50SXRlbSkKKyAgICAgICAgICAgIFt1cGRhdGVkSXRlbXMgcmVtb3ZlT2JqZWN0
OmN1cnJlbnRJdGVtXTsKKyAgICB9IGVsc2UgaWYgKCFjdXJyZW50SXRlbSkKKyAgICAgICAgW3Vw
ZGF0ZWRJdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRo
VGl0bGU6V0VCX1VJX1NUUklORygiTWFya3VwIEltYWdlIiwgIkltYWdlIGFuYWx5c2lzIG1hcmt1
cCBtZW51IGl0ZW0iKSBhY3Rpb246QHNlbGVjdG9yKHBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3Vw
OildKS5nZXQoKV07Cit9CisKKy0gKEJPT0wpY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXAK
K3sKKyAgICBpZiAoIVdlYktpdDo6aXNJbWFnZUFuYWx5c2lzTWFya3VwU3lzdGVtRmVhdHVyZUVu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgaWYgKCFfaW1hZ2VBbmFseXNpc01h
cmt1cFJlc3VsdHMpCisgICAgICAgIHJldHVybiBOTzsKKworICAgIGF1dG8gW2VsZW1lbnRDb250
ZXh0LCBpbWFnZSwgcHJlZmVycmVkTUlNRVR5cGVdID0gKl9pbWFnZUFuYWx5c2lzTWFya3VwUmVz
dWx0czsKKyAgICByZXR1cm4gIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhICYmIGVsZW1lbnRDb250ZXh0ID09IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlv
dXREYXRhKCkuc2VsZWN0ZWRFZGl0YWJsZUltYWdlOworfQorCistICh2b2lkKXBlcmZvcm1JbWFn
ZUFuYWx5c2lzTWFya3VwOihpZClzZW5kZXIKK3sKKyAgICBpZiAoIXNlbGYuY2FuUGVyZm9ybUlt
YWdlQW5hbHlzaXNNYXJrdXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gW2VsZW1lbnRD
b250ZXh0LCBpbWFnZSwgcHJlZmVycmVkTUlNRVR5cGVdID0gKl9pbWFnZUFuYWx5c2lzTWFya3Vw
UmVzdWx0czsKKyAgICBhdXRvIHRhcmdldFR5cGUgPSBSZXRhaW5QdHIgeyBVVFR5cGVUSUZGLmlk
ZW50aWZpZXIgfTsKKyAgICBpZiAoIXByZWZlcnJlZE1JTUVUeXBlLmlzRW1wdHkoKSkgeworICAg
ICAgICBOU1N0cmluZyAqcHJlZmVycmVkVHlwZUlkZW50aWZpZXIgPSBbVVRUeXBlIHR5cGVXaXRo
TUlNRVR5cGU6cHJlZmVycmVkTUlNRVR5cGUgY29uZm9ybWluZ1RvVHlwZTpVVFR5cGVJbWFnZV0u
aWRlbnRpZmllcjsKKyAgICAgICAgaWYgKFdlYkNvcmU6OmlzU3VwcG9ydGVkSW1hZ2VUeXBlKHBy
ZWZlcnJlZFR5cGVJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHRhcmdldFR5cGUgPSBwcmVmZXJy
ZWRUeXBlSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICBpZiAoYXV0byBkYXRhID0gV2ViS2l0Ojp0
cmFuc2NvZGUoaW1hZ2UuZ2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZil0YXJnZXRUeXBlLmdl
dCgpKTsgW2RhdGEgbGVuZ3RoXSkKKyAgICAgICAgX3BhZ2UtPnJlcGxhY2VTZWxlY3Rpb25XaXRo
UGFzdGVib2FyZERhdGEoeyBTdHJpbmcgeyB0YXJnZXRUeXBlLmdldCgpIH0gfSwgeyBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSB9KTsKK30K
KworLSAodm9pZClkb0FmdGVyQ29tcHV0aW5nSW1hZ2VBbmFseXNpc1Jlc3VsdHNGb3JNYXJrdXA6
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiljb21wbGV0aW9uCit7CisgICAgaWYgKF9wYWdl
LT5lZGl0b3JTdGF0ZSgpLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7CisgICAgICAgIGNvbXBs
ZXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZWxlbWVudFRvQW5h
bHl6ZSA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuc2VsZWN0ZWRFZGl0
YWJsZUltYWdlOworICAgIGlmIChfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHMgJiYgX2ltYWdl
QW5hbHlzaXNNYXJrdXBSZXN1bHRzLT5lbGVtZW50ID09IGVsZW1lbnRUb0FuYWx5emUpIHsKKyAg
ICAgICAgY29tcGxldGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX2ltYWdl
QW5hbHlzaXNNYXJrdXBSZXN1bHRzID0gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFlbGVtZW50
VG9BbmFseXplKSB7CisgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIF9wYWdlLT5yZXF1ZXN0SW1hZ2VCaXRtYXAoKmVsZW1lbnRUb0FuYWx5emUsIFtj
b250ZXh0ID0gKmVsZW1lbnRUb0FuYWx5emUsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRp
b24pLCB3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLQ29udGVudFZpZXc+KHNlbGYpXShhdXRvJiBp
bWFnZURhdGEsIGF1dG8mIHNvdXJjZU1JTUVUeXBlKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBz
dHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgIGlmICghc3Ryb25nU2VsZikgewor
ICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byBpbWFnZUJpdG1hcCA9IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpj
cmVhdGUoaW1hZ2VEYXRhKTsKKyAgICAgICAgaWYgKCFpbWFnZUJpdG1hcCkgeworICAgICAgICAg
ICAgY29tcGxldGlvbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgYXV0byBjZ0ltYWdlID0gaW1hZ2VCaXRtYXAtPm1ha2VDR0ltYWdlKCk7CisgICAgICAgIGlm
ICghY2dJbWFnZSkgeworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IENoZWNrIHRvIHNlZSBpZiB3ZSBj
YW4gYXZvaWQgdGhpcyBleHRyYSB0cmFuc2NvZGluZyBzdGVwIG9uY2UgVmlzaW9uS2l0IHN0YXJ0
cyB1c2luZyBgbWVkaWFhbmFseXNpc2RgIGZvciB0aGlzLgorICAgICAgICBhdXRvIHRpZmZEYXRh
ID0gV2ViS2l0Ojp0cmFuc2NvZGUoY2dJbWFnZS5nZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVm
KVVUVHlwZVRJRkYuaWRlbnRpZmllcik7CisgICAgICAgIGlmICghW3RpZmZEYXRhIGxlbmd0aF0p
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFJldGFpblB0ciB0cmFuc2NvZGVkSW1hZ2UgPSBbVUlJbWFnZSBpbWFn
ZVdpdGhEYXRhOnRpZmZEYXRhLmdldCgpXTsKKyAgICAgICAgaWYgKCF0cmFuc2NvZGVkSW1hZ2Up
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFdlYktpdDo6cmVxdWVzdEltYWdlQW5hbHlzaXNNYXJrdXAoW3RyYW5z
Y29kZWRJbWFnZSBDR0ltYWdlXSwgW3NvdXJjZU1JTUVUeXBlLCBjb250ZXh0LCBjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKSwgd2Vha1NlbGZdKENHSW1hZ2VSZWYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAg
ICAgICAgICAgaWYgKCFzdHJvbmdTZWxmKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbigp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKHJlc3VsdCkKKyAgICAgICAgICAgICAgICBzdHJvbmdTZWxmLT5faW1hZ2VBbmFseXNpc01h
cmt1cFJlc3VsdHMgPSB7IHsgY29udGV4dCwgeyByZXN1bHQgfSwgc291cmNlTUlNRVR5cGUgfSB9
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9pbWFnZUFu
YWx5c2lzTWFya3VwUmVzdWx0cyA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGNvbXBsZXRp
b24oKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorCiAtICh2b2lkKXNlbGVjdFBvc2l0aW9uQXRQb2ludDoo
Q0dQb2ludClwb2ludCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIKIHsKICAgICBfYXV0b2NvcnJlY3Rpb25Db250ZXh0TmVlZHNVcGRhdGUgPSBZRVM7
CkBAIC03MzEzLDEwICs3NDY4LDggQEAgLSAodm9pZClfdXBkYXRlU2VsZWN0aW9uQXNzaXN0YW50
U3VwcHJlc3Npb25TdGF0ZQogLSAodm9pZClfc2VsZWN0aW9uQ2hhbmdlZAogewogICAgIF9hdXRv
Y29ycmVjdGlvbkNvbnRleHROZWVkc1VwZGF0ZSA9IFlFUzsKLSNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCi0gICAgW3NlbGYgc2V0VXBBcHBIaWdobGlnaHRNZW51c0lmTmVlZGVkXTsKLSNlbmRp
ZgogCisgICAgW3NlbGYgc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rpb25zXTsKICAg
ICBbc2VsZiBfdXBkYXRlU2VsZWN0aW9uQXNzaXN0YW50U3VwcHJlc3Npb25TdGF0ZV07CiAKICAg
ICBfY2FjaGVkU2VsZWN0ZWRUZXh0UmFuZ2UgPSBuaWw7CkBAIC05NjAyLDIxICs5NzU1LDUxIEBA
IC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNvZ25pemVkOihVSUdlc3R1cmVSZWNvZ25pemVyICop
Z2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRpZgogCistICh2b2lkKXNldFVwQWRkaXRpb25hbE1l
bnVDb250cm9sbGVyQWN0aW9ucworeworICAgIGF1dG8gdXBkYXRlZEl0ZW1zID0gYWRvcHROUyhV
SU1lbnVDb250cm9sbGVyLnNoYXJlZE1lbnVDb250cm9sbGVyLm1lbnVJdGVtcy5tdXRhYmxlQ29w
eSA/OiBbTlNNdXRhYmxlQXJyYXk8VUlNZW51SXRlbSAqPiBuZXddKTsKKyNpZiBFTkFCTEUoSU1B
R0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIFtzZWxmIHVwZGF0ZUltYWdlQW5hbHlzaXNN
YXJrdXBNZW51SXRlbXM6dXBkYXRlZEl0ZW1zLmdldCgpXTsKKyNlbmRpZgogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKKyAgICBbc2VsZiB1cGRhdGVBcHBIaWdobGlnaHRNZW51SXRlbXM6dXBk
YXRlZEl0ZW1zLmdldCgpXTsKKyNlbmRpZgorICAgIFVJTWVudUNvbnRyb2xsZXIuc2hhcmVkTWVu
dUNvbnRyb2xsZXIubWVudUl0ZW1zID0gdXBkYXRlZEl0ZW1zLmdldCgpOworfQorCisjaWYgRU5B
QkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykgfHwgRU5BQkxFKEFQUF9ISUdITElHSFRT
KQogCi0tICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0TWVudXNJZk5lZWRlZAorc3RhdGljIFVJTWVu
dUl0ZW0gKmZpbmRNZW51SXRlbVdpdGhBY3Rpb24oTlNBcnJheTxVSU1lbnVJdGVtICo+ICppdGVt
cywgU0VMIGFjdGlvbikKIHsKLSAgICBpZiAoIV9wYWdlLT5wcmVmZXJlbmNlcygpLmFwcEhpZ2hs
aWdodHNFbmFibGVkKCkgfHwgIXNlbGYud2luZG93IHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5z
ZWxlY3Rpb25Jc1JhbmdlKQorICAgIGZvciAoVUlNZW51SXRlbSAqaXRlbSBpbiBpdGVtcykgewor
ICAgICAgICBpZiAoaXRlbS5hY3Rpb24gPT0gYWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGl0
ZW07CisgICAgfQorICAgIHJldHVybiBuaWw7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVNfRU5IQU5DRU1FTlRTKSB8fCBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKKyNpZiBF
TkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKKy0gKHZvaWQpdXBkYXRlQXBwSGlnaGxpZ2h0TWVudUl0
ZW1zOihOU011dGFibGVBcnJheTxVSU1lbnVJdGVtICo+ICopdXBkYXRlZEl0ZW1zCit7CisgICAg
YXV0byBjdXJyZW50UXVpY2tOb3RlSXRlbSA9IGZpbmRNZW51SXRlbVdpdGhBY3Rpb24odXBkYXRl
ZEl0ZW1zLCBAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhS
YW5nZTopKTsKKyAgICBhdXRvIG5ld1F1aWNrTm90ZUl0ZW0gPSBmaW5kTWVudUl0ZW1XaXRoQWN0
aW9uKHVwZGF0ZWRJdGVtcywgQHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvck5ld1F1aWNrTm90
ZVdpdGhSYW5nZTopKTsKKworICAgIGlmICghX3BhZ2UtPnByZWZlcmVuY2VzKCkuYXBwSGlnaGxp
Z2h0c0VuYWJsZWQoKSB8fCAhc2VsZi53aW5kb3cgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNl
bGVjdGlvbklzUmFuZ2UpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRRdWlja05vdGVJdGVtKQorICAg
ICAgICAgICAgW3VwZGF0ZWRJdGVtcyByZW1vdmVPYmplY3Q6Y3VycmVudFF1aWNrTm90ZUl0ZW1d
OworICAgICAgICBpZiAobmV3UXVpY2tOb3RlSXRlbSkKKyAgICAgICAgICAgIFt1cGRhdGVkSXRl
bXMgcmVtb3ZlT2JqZWN0Om5ld1F1aWNrTm90ZUl0ZW1dOwogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgZm9yIChVSU1lbnVJdGVtICptZW51SXRlbSBpbiBbW1VJTWVudUNvbnRyb2xsZXIgc2hh
cmVkTWVudUNvbnRyb2xsZXJdIG1lbnVJdGVtc10pIHsKLSAgICAgICAgaWYgKFttZW51SXRlbSBh
Y3Rpb25dID09IEBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0
aFJhbmdlOikgfHwgW21lbnVJdGVtIGFjdGlvbl0gPT0gQHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdo
dEZvck5ld1F1aWNrTm90ZVdpdGhSYW5nZTopKQotICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAKLSAgICBhdXRvIGFkZEhpZ2hsaWdodEN1cnJlbnRRdWlja05vdGVJdGVtID0gYWRvcHRO
UyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6V2ViQ29yZTo6Y29udGV4dE1lbnVJ
dGVtVGFnQWRkSGlnaGxpZ2h0VG9DdXJyZW50UXVpY2tOb3RlKCkgYWN0aW9uOkBzZWxlY3Rvcihj
cmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOildKTsKLSAgICBhdXRv
IGFkZEhpZ2hsaWdodE5ld1F1aWNrTm90ZUl0ZW0gPSBhZG9wdE5TKFtbVUlNZW51SXRlbSBhbGxv
Y10gaW5pdFdpdGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRU
b05ld1F1aWNrTm90ZSgpIGFjdGlvbjpAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVp
Y2tOb3RlV2l0aFJhbmdlOildKTsKLSAgICBbW1VJTWVudUNvbnRyb2xsZXIgc2hhcmVkTWVudUNv
bnRyb2xsZXJdIHNldE1lbnVJdGVtczpAWyBhZGRIaWdobGlnaHRDdXJyZW50UXVpY2tOb3RlSXRl
bS5nZXQoKSwgYWRkSGlnaGxpZ2h0TmV3UXVpY2tOb3RlSXRlbS5nZXQoKSBdXTsKKworICAgIGlm
ICghY3VycmVudFF1aWNrTm90ZUl0ZW0pCisgICAgICAgIFt1cGRhdGVkSXRlbXMgYWRkT2JqZWN0
OmFkb3B0TlMoW1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRl
eHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvQ3VycmVudFF1aWNrTm90ZSgpIGFjdGlvbjpAc2Vs
ZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdpdGhSYW5nZTopXSkuZ2V0
KCldOworCisgICAgaWYgKCFuZXdRdWlja05vdGVJdGVtKQorICAgICAgICBbdXBkYXRlZEl0ZW1z
IGFkZE9iamVjdDphZG9wdE5TKFtbVUlNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXZWJD
b3JlOjpjb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRUb05ld1F1aWNrTm90ZSgpIGFjdGlv
bjpAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVpY2tOb3RlV2l0aFJhbmdlOildKS5n
ZXQoKV07CiB9CiAKIC0gKHZvaWQpY3JlYXRlSGlnaGxpZ2h0Rm9yQ3VycmVudFF1aWNrTm90ZVdp
dGhSYW5nZTooaWQpc2VuZGVyCkBAIC0xMDMxNSwxNCArMTA0OTgsNyBAQCAtIChpZCA8UUxQcmV2
aWV3SXRlbT4pcHJldmlld0NvbnRyb2xsZXI6KFFMUHJldmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIHByZXZpZQogLSAoTlNEYXRhICopcHJvdmlkZURhdGFGb3JJdGVtOihRTEl0ZW0gKilpdGVt
CiB7CiAgICAgQVNTRVJUKF92aXN1YWxTZWFyY2hQcmV2aWV3SW1hZ2UpOwotCi0gICAgYXV0byBk
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKE5VTEwsIDApKTsKLSAgICBhdXRvIGRl
c3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YShkYXRh
LmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5pZGVudGlmaWVyLCAxLCBO
VUxMKSk7Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCks
IFtfdmlzdWFsU2VhcmNoUHJldmlld0ltYWdlIENHSW1hZ2VdLCBuaWwpOwotICAgIGlmICghQ0dJ
bWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgcmV0dXJuIGRhdGEuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRyYW5zY29kZShbX3Zpc3VhbFNlYXJjaFByZXZpZXdJbWFnZSBDR0ltYWdl
XSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKVVUVHlwZVRJRkYuaWRlbnRpZmllcikuYXV0b3JlbGVh
c2UoKTsKIH0KIAogI3ByYWdtYSBtYXJrIC0gV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRl
CkBAIC0xMDM4NSw2ICsxMDU2MSw5IEBAIC0gKHZvaWQpX3NldFVwSW1hZ2VBbmFseXNpcwogI2lm
IFVTRShVSUNPTlRFWFRNRU5VKSAmJiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRk9SX01BQ0hJTkVf
UkVBREFCTEVfQ09ERVMpCiAgICAgX2NvbnRleHRNZW51Rm9yTWFjaGluZVJlYWRhYmxlQ29kZS5j
bGVhcigpOwogI2VuZGlmIC8vIFVTRShVSUNPTlRFWFRNRU5VKSAmJiBFTkFCTEUoSU1BR0VfQU5B
TFlTSVNfRk9SX01BQ0hJTkVfUkVBREFCTEVfQ09ERVMpCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZ
U0lTX0VOSEFOQ0VNRU5UUykKKyAgICBfaW1hZ2VBbmFseXNpc01hcmt1cFJlc3VsdHMgPSBzdGQ6
Om51bGxvcHQ7CisjZW5kaWYKIH0KIAogLSAodm9pZClfdGVhckRvd25JbWFnZUFuYWx5c2lzCkBA
IC0xMDQxMCw2ICsxMDU4OSw5IEBAIC0gKHZvaWQpX3RlYXJEb3duSW1hZ2VBbmFseXNpcwogICAg
IF9jb250ZXh0TWVudUZvck1hY2hpbmVSZWFkYWJsZUNvZGUuY2xlYXIoKTsKICNlbmRpZiAvLyBV
U0UoVUlDT05URVhUTUVOVSkgJiYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0ZPUl9NQUNISU5FX1JF
QURBQkxFX0NPREVTKQogICAgIFtzZWxmIF9pbnZva2VBbGxBY3Rpb25zVG9QZXJmb3JtQWZ0ZXJQ
ZW5kaW5nSW1hZ2VBbmFseXNpczpXZWJLaXQ6OlByb2NlZWRXaXRoVGV4dFNlbGVjdGlvbkluSW1h
Z2U6Ok5vXTsKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIF9p
bWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cyA9IHN0ZDo6bnVsbG9wdDsKKyNlbmRpZgogfQogCiAt
ICh2b2lkKV9jYW5jZWxJbWFnZUFuYWx5c2lzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGI3OTJjMmQ2OWJkYjU2NjZhMWMyNGJkYWRlM2ZkMTAz
MDc1ZjEwZDguLjc2ZDZiN2RlYzU2OTMzYjJjN2E1NTllZWY0ZDkxMmFhYWVhYzQ4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NzQzLDYg
Kzc3NDMsNDIgQEAgdm9pZCBXZWJQYWdlOjpzdGFydEltYWdlQW5hbHlzaXMoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogCit2b2lk
IFdlYlBhZ2U6OnJlcXVlc3RJbWFnZUJpdG1hcChjb25zdCBFbGVtZW50Q29udGV4dCYgY29udGV4
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYs
IGNvbnN0IFN0cmluZyYgc291cmNlTUlNRVR5cGUpPiYmIGNvbXBsZXRpb24pCit7CisgICAgUmVm
UHRyIGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChjb250ZXh0KTsKKyAgICBpZiAoIWVsZW1l
bnQpIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4o
ZWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFyZW5kZXJlcikgeworICAgICAgICBjb21w
bGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gYml0
bWFwID0gY3JlYXRlU2hhcmVhYmxlQml0bWFwKCpyZW5kZXJlcik7CisgICAgaWYgKCFiaXRtYXAp
IHsKKyAgICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CisgICAgYml0bWFwLT5jcmVh
dGVIYW5kbGUoaGFuZGxlKTsKKyAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKSB7CisgICAgICAgIGNv
bXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5n
IG1pbWVUeXBlOworICAgIGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJ
bWFnZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgp
KQorICAgICAgICAgICAgbWltZVR5cGUgPSBpbWFnZS0+bWltZVR5cGUoKTsKKyAgICB9CisgICAg
QVNTRVJUKCFtaW1lVHlwZS5pc0VtcHR5KCkpOworICAgIGNvbXBsZXRpb24oaGFuZGxlLCBtaW1l
VHlwZSk7Cit9CisKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfQ09OVEVYVF9NRU5VUykgJiYg
VVNFKFVJQ09OVEVYVE1FTlUpCiB2b2lkIFdlYlBhZ2U6OnNob3dNZWRpYUNvbnRyb2xzQ29udGV4
dE1lbnUoRmxvYXRSZWN0JiYgdGFyZ2V0RnJhbWUsIFZlY3RvcjxNZWRpYUNvbnRyb2xzQ29udGV4
dE1lbnVJdGVtPiYmIGl0ZW1zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lZGlhQ29udHJvbHND
b250ZXh0TWVudUl0ZW06OklEKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3NGViYzkzYTBiNDVmNjI2MjFm
ZDc2OWY1ZGFkMjgzZDAyZGZiOThiLi5kZmE3MTc5YmMzNWU2MTMwYTgyOGE5OWRkNzYxZGRiZjVm
Y2M5YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xNDQwLDYgKzE0NDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydEltYWdlQW5hbHlzaXMo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKICNlbmRpZgogCisgICAgdm9pZCByZXF1ZXN0SW1h
Z2VCaXRtYXAoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VNSU1FVHlwZSk+JiYpOworCiAjaWYgSEFWRShUUkFOU0xBVElPTl9VSV9TRVJWSUNFUykgJiYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgdm9pZCBoYW5kbGVDb250ZXh0TWVudVRyYW5zbGF0
aW9uKGNvbnN0IFdlYkNvcmU6OlRyYW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvJik7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCmluZGV4IDQxODBmZWQxMjI5MzQwNjFhNjczMDAzMWUyYzJkZTI0ZDIxMmJlMmYuLjU4
MTcyMzUwYjMxNmM5ZmNkZmQ5NWQzYjk3MDc2MWQ5NGQ2NzAzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTI4
LDYgKzEyOCw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90
IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ2xlYXJTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnRPdmVycmlkZSgpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAorICAgIFJlcXVl
c3RJbWFnZUJpdG1hcChzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgZWxlbWVudENvbnRl
eHQpIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlLCBTdHJpbmcgc291
cmNlTUlNRVR5cGUpIEFzeW5jCisKICAgICBTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJvb2wg
Y29udHJvbGxlZCkKIAogICAgIENvbm5lY3RJbnNwZWN0b3IoU3RyaW5nIHRhcmdldElkLCBJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbDo6Q29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDNkZGMyNjcxNzQ2OWQ2YWRiYTEyNDIxMTM4YTYwMWNmNWJjMWM3ZTYuLjJhMTFkY2Ew
MmU4MmMwN2MwYWY0MDE5OTNlNjEwZDM1ZWRkYTU1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjAsNiArMzIwLDI1
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVk
aXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxl
Y3RlZFRleHRMZW5ndGggPSBzZWxlY3RlZFRleHQubGVuZ3RoKCk7CiAgICAgICAgICAgICBjb25z
dCBpbnQgbWF4U2VsZWN0ZWRUZXh0TGVuZ3RoID0gMjAwOwogICAgICAgICAgICAgcG9zdExheW91
dERhdGEud29yZEF0U2VsZWN0aW9uID0gc2VsZWN0ZWRUZXh0LmxlZnQobWF4U2VsZWN0ZWRUZXh0
TGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gZmluZFNlbGVjdGVkRWRpdGFibGVJbWFnZUVsZW1l
bnQgPSBbJl0geworICAgICAgICAgICAgICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBmb3Vu
ZEltYWdlOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRJbWFnZTsKKworICAgICAgICAgICAgICAg
IGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yIHsgKnNlbGVjdGVkUmFuZ2UsIHsgfSB9OyAhaXRl
cmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChmb3VuZEltYWdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEltYWdlID0g
bnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvdW5kSW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8
SFRNTEltYWdlRWxlbWVudD4oaXRlcmF0b3Iubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFmb3VuZEltYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZEltYWdlOworICAgICAgICAg
ICAgfTsKKworICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VFbGVtZW50ID0gZmluZFNlbGVjdGVk
RWRpdGFibGVJbWFnZUVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5z
ZWxlY3RlZEVkaXRhYmxlSW1hZ2UgPSBjb250ZXh0Rm9yRWxlbWVudCgqaW1hZ2VFbGVtZW50KTsK
ICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpc2FsbG93IHJlcGxhY2Ug
d2hlbiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgQ0ogY2hhcmFjdGVycy4KICAgICAgICAgcG9z
dExheW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAm
JiAhcmVzdWx0LmlzSW5QYXNzd29yZEZpZWxkICYmICFzZWxlY3RlZFRleHQuaXNBbGxTcGVjaWFs
Q2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451619</attachid>
            <date>2022-02-10 16:44:23 -0800</date>
            <delta_ts>2022-02-10 20:02:03 -0800</delta_ts>
            <desc>Actually fix iOS 15 build</desc>
            <filename>bug-236415-20220210164422.patch</filename>
            <type>text/plain</type>
            <size>35699</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVkOTczNWRkMTA1OWQz
NGJmYTY0OTkwNTA4M2I1OWQxODUwY2EzZS4uZTZlZDEwMjdmZTcyNGE1NWQzMDM4ZDg5ZTAxNDRj
NGZjNTZhZmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBz
dXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNhbGxvdXQgYmFyIHdoZW4g
c2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4NzE0MzMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IGEgY291cGxl
IG9mIGZ1bmN0aW9uczsgc2VlIFdlYktpdC9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAyMi0wMi0xMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGBXZWJQYWdlUHJveHk6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoKWAgb24gaU9TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGYyNmUwMDhhNWQ4ODJkYTkwMDUyMDg4OTQ4Y2U3ZGZjZTY1NWRlMmUuLmM3YmUxMDYxZDU5MDAw
M2M0NzI3ZGJiZTliZjRiZjg5OWY5YzBjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisy
MDIyLTAyLTEwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNh
bGxvdXQgYmFyIHdoZW4gc2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4
NzE0MzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3ICJNYXJrdXAgSW1hZ2UiIGNh
bGxvdXQgbWVudSBpdGVtLCB3aGljaCBpcyBvbmx5IHNob3duIHdoZW4gdGhlIHVzZXIgaGFzCisg
ICAgICAgIHNlbGVjdGVkIGV4YWN0bHkgb25lIGltYWdlLiBJZiB0aGUgaW1hZ2UgaXMgc3VpdGFi
bGUgZm9yICJNYXJrdXAgSW1hZ2UiICh0aGF0IGlzLCB0aGUgcmVsZXZhbnQgVmlzaW9uS2l0IEFQ
SQorICAgICAgICByZXR1cm5zIGEgbm9uLW51bGwgaW1hZ2UpLCB0aGVuIHdlIHNob3cgYSBuZXcg
aXRlbSBpbiB0aGUgY2FsbG91dCBiYXIgd2hpY2gsIHdoZW4gYWN0aXZhdGVkLCByZXBsYWNlcyB0
aGUKKyAgICAgICAgY3VycmVudCBzZWxlY3Rpb24gd2l0aCB0aGUgaW1hZ2UgcmV0dXJuZWQgYnkg
dGhlIGFmb3JlbWVudGlvbmVkIFZpc2lvbktpdCBBUEkuCisKKyAgICAgICAgU2VlIGJlbG93IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRp
b25VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25V
dGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6OmlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3Rl
bUZlYXR1cmVFbmFibGVkKToKKworICAgICAgICBBZGQgYSBuZXcgaGVscGVyIG1ldGhvZCB0byBy
ZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgc3lzdGVtIGZlYXR1cmUgZmxh
ZyBpcyBlbmFibGVkLgorCisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisKKyAgICAgICAgQWRkIGFuIG9wdGlvbmFs
IGBFbGVtZW50Q29udGV4dGAgdGhhdCdzIHBvcHVsYXRlZCBvbmx5IGlmIHRoZSB1c2VyJ3Mgc2Vs
ZWN0aW9uIHNwYW5zIGEgc2luZ2xlIEhUTUxJbWFnZUVsZW1lbnQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBkaWRN
b3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0SW1hZ2VCaXRtYXApOgorCisgICAg
ICAgIEFkZCBhIG5ldyBhc3luYyBJUEMgbWVzc2FnZSB0aGF0IGFsbG93cyB0aGUgVUkgcHJvY2Vz
cyB0byBncmFiIGEgU2hhcmVhYmxlQml0bWFwIGhhbmRsZSAoYWxvbmcgd2l0aCB0aGUgTUlNRQor
ICAgICAgICB0eXBlIG9mIHRoZSBzb3VyY2UgaW1hZ2UpIGdpdmVuIGFuIEVsZW1lbnRDb250ZXh0
IHRoYXQgaWRlbnRpZmllcyBhbiBpbWFnZSBlbGVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmg6CisKKyAgICAgICAgQ2FjaGUgdGhlIGxhc3QgcmVzdWx0IGZyb20gcmVxdWVz
dGluZyAiSW1hZ2UgTWFya3VwIiBkYXRhIGZyb20gVmlzaW9uS2l0IGluIGBfaW1hZ2VBbmFseXNp
c01hcmt1cFJlc3VsdHNgLCBhbmQKKyAgICAgICAgdXNlIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBp
bnZva2luZyB0aGUgbmV3IHNlbGVjdG9yLCBgLXBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOmAu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0
aG9kIHRoYXQgdGFrZXMgYSBDR0ltYWdlUmVmLCB0cmFuc2NvZGVzIGl0IHRvIHRoZSBnaXZlbiB1
bmlmb3JtIHR5cGUgaWRlbnRpZmllciwgYW5kIGZpbmFsbHkKKyAgICAgICAgcmV0dXJucyBhIGJs
b2Igb2YgaW1hZ2UgZGF0YS4gVXNlZCBieSB0aGUgdHdvIG5ldyBjYWxsIHNpdGVzIGZvciBJbWFn
ZSBNYXJrdXAgYmVsb3csIGFzIHdlbGwgYXMgYW4gZXhpc3RpbmcgY2FsbAorICAgICAgICBzaXRl
IGZvciBWaXN1YWwgTG9vayBVcCBpbiBgLXByb3ZpZGVEYXRhRm9ySXRlbTpgCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyB0YXJnZXRGb3JBY3Rpb246d2l0aFNlbmRlcjpdKToKKworICAgICAg
ICBBZGQgYSBjaGVjayBmb3IgdGhlIG5ldyBJbWFnZSBNYXJrdXAgYWN0aW9uIHNlbGVjdG9yLgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlv
bkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorCisgICAgICAgIFVzZSB0aGlzIGV4
aXN0aW5nIFVJS2l0IGRlbGVnYXRlIGhvb2sgdG8gZGVmZXIgY2FsbG91dCBiYXIgcHJlc2VudGF0
aW9uIG9ubHkgaW4gdGhlIGNhc2Ugd2hlcmUgYSBzaW5nbGUgaW1hZ2UKKyAgICAgICAgZWxlbWVu
dCBpcyBzZWxlY3RlZCwgc3VjaCB0aGF0IHdlIG9ubHkgc2hvdyB0aGUgY2FsbG91dCBiYXIgaW4g
dGhpcyBzY2VuYXJpbyBvbmNlIFZpc2lvbktpdCBoYXMgZGV0ZXJtaW5lZAorICAgICAgICB3aGV0
aGVyIG9yIG5vdCB0aGUgIkltYWdlIE1hcmt1cCIgYWN0aW9uIGlzIHN1aXRhYmxlIGZvciB0aGUg
ZGF0YSBvZiB0aGUgc2VsZWN0ZWQgaW1hZ2UuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHVycG9z
ZSBvZiB0aGlzIGRlbGVnYXRlIGhvb2sgd2FzIHRvIGFsbG93IFdlYktpdCB0byBkZWZlciBjYWxs
b3V0IGJhciBwcmVzZW50YXRpb24gZm9yIGEgc2hvcnQsCisgICAgICAgIGhhcmQtY29kZWQgZGVs
YXkgdG8gd2FpdCBmb3IgdGhlIHdlYiBwYWdlIHRvIGxheW91dCBvdXQgb3IgYWRkIGNsaWNrYWJs
ZSBpdGVtcyB0aGF0IG1pZ2h0IHVuZGVybGFwIHRoZSBjYWxsb3V0CisgICAgICAgIGJhcjsgYXMg
c3VjaCwgd2Ugc3RpbGwgcGVyZm9ybSB0aGlzIGxvZ2ljIHdpdGggYSBoYXJkLWNvZGVkIGRlbGF5
IG9mIDI1MCBtcyAoaW5jbHVkaW5nIHdoYXRldmVyIHRpbWUgd2FzIHRha2VuCisgICAgICAgIGR1
cmluZyBpbWFnZSBhbmFseXNpcykuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1cGRhdGVJ
bWFnZUFuYWx5c2lzTWFya3VwTWVudUl0ZW1zOl0pOgorCisgICAgICAgIEFwcGVuZCB0aGUgbmV3
IG1lbnUgaXRlbSBvbmx5IGlmIHRoZSBzeXN0ZW0gZmVhdHVyZSBmbGFnIGlzIGVuYWJsZWQsIGFu
ZCB3ZSd2ZSBzZWxlY3RlZCBhbiBlZGl0YWJsZSBpbWFnZS4gTm90ZQorICAgICAgICB0aGF0IHRo
aXMgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBjb25zdWx0IGBfaW1hZ2VBbmFseXNpc01hcmt1cFJl
c3VsdHNgIHRvIGVuc3VyZSB0aGF0IHRoZSBzdGF0ZSBvZiBhZGRpdGlvbmFsCisgICAgICAgIG1l
bnUgaXRlbXMgaW4gdGhlIHNoYXJlZCBtZW51IGNvbnRyb2xsZXIgaXMgY29uc2lzdGVudCBiZXR3
ZWVuIE1hcmt1cCBJbWFnZSBhbmQgUXVpY2sgTm90ZSwgYW5kIHVwZGF0ZWQgaW4gdGhlCisgICAg
ICAgIHNhbWUgbGlmZWN5Y2xlIGFzIGVkaXRvciBzdGF0ZSB1cGRhdGVzLgorCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXBdKToKKworICAgICAg
ICBUaGlzIGlzIGNvbnN1bHRlZCB3aGVuIHdlJ3JlIGFjdHVhbGx5IGFib3V0IHRvIHNob3cgdGhl
IGNhbGxvdXQgYmFyIGFjdGlvbiBmb3IgIkltYWdlIE1hcmt1cCIgKGltcG9ydGFudGx5LAorICAg
ICAgICBhZnRlciBjYWxsb3V0IGJhciBwcmVzZW50YXRpb24gZGVmZXJyYWwpLCBhbmQgZGVwZW5k
cyBvbiB0aGUgc3RhdGUgb2YgYF9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0c2AuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cDpdKToKKworICAg
ICAgICBBZGQgbG9naWMgdG8gaGFuZGxlIHRoZSBuZXcgYWN0aW9uIGJ5IGNhbGxpbmcgaW50byBX
ZWJQYWdlUHJveHkgdG8gKGJhc2ljYWxseSkgcGFzdGUgdGhlIG1vZGlmaWVkIGltYWdlIGRhdGEK
KyAgICAgICAgYWZ0ZXIgdHJhbnNjb2RpbmcgaXQgdG8gbWF0Y2ggdGhlIGltYWdlIGVsZW1lbnQn
cyBvcmlnaW5hbCBzb3VyY2UgdHlwZS4gQWZ0ZXIgIzIzNjQwNiwgdGhpcyBjb2RlcGF0aCBpcyBu
b3cKKyAgICAgICAgYXZhaWxhYmxlIG9uIGFsbCBDb2NvYSBwbGF0Zm9ybXMgKGFzIG9wcG9zZWQg
dG8gbWFjT1Mtb25seSkuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkb0FmdGVyQ29tcHV0
aW5nSW1hZ2VBbmFseXNpc1Jlc3VsdHNGb3JNYXJrdXA6XSk6CisKKyAgICAgICAgVXNlIHRoZSBu
ZXcgYHJlcXVlc3RJbWFnZUJpdG1hcGAgSVBDIG1lc3NhZ2UgdG8gZ3JhYiBhIGJpdG1hcCBmb3Ig
dGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpbWFnZSwgY2FsbCBvdXQgdG8KKyAgICAgICAgVmlzaW9u
S2l0IHRvIHBlcmZvcm0gaW1hZ2UgYW5hbHlzaXMsIGFuZCB0aGVuIGNhY2hlIHRoZSByZXN1bHRp
bmcgaW1hZ2UuIEFmdGVyIGFsbCBvZiB0aGlzIGlzIGRvbmUsIHdlIHByb2NlZWQKKyAgICAgICAg
d2l0aCBzaG93aW5nIHRoZSBjYWxsb3V0IGJhci4KKworICAgICAgICBJbiBhIGZvbGxvd3VwLCB3
ZSBzaG91bGQgZW5mb3JjZSBzb21lIChyZWFzb25hYmxlKSB1cHBlciBib3VuZCBvbiB0aGUgYW1v
dW50IG9mIHRpbWUgYnkgd2hpY2ggdGhlIGNhbGxvdXQgYmFyCisgICAgICAgIGNhbiBiZSBkZWxh
eWVkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NlbGVjdGlvbkNoYW5nZWRdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlv
bnNdKToKKworICAgICAgICBSZWZhY3RvciBleGlzdGluZyBsb2dpYyBmb3Igc3VwcGx5aW5nIGFk
ZGl0aW9uYWwgY2FsbG91dCBiYXIgbWVudSBpdGVtcywgc3VjaCB0aGF0IHdlIHVwZGF0ZSBpdGVt
cyBhcyBuZWVkZWQgZm9yCisgICAgICAgIGJvdGggUXVpY2sgTm90ZSBhcyB3ZWxsIGFzIEltYWdl
IE1hcmt1cC4gTm90ZSB0aGF0IHdlIG5lZWQgdG8gcHJlc2VydmUgYW55IGV4aXN0aW5nIG1lbnUg
aXRlbXMgaW4gdGhlIHNoYXJlZAorICAgICAgICBVSU1lbnVDb250cm9sbGVyLCBzaW5jZSB0aGUg
V2ViS2l0IGNsaWVudCAoZS5nLiBNYWlsKSBtYXkgaGF2ZSBhbHJlYWR5IHN1cHBsaWVkIGN1c3Rv
bSBtZW51IGl0ZW1zLiBUaGlzCisgICAgICAgIGN1cnJlbnRseSBkb2VlcyBub3QgYWZmZWN0IFF1
aWNrIE5vdGUgc2luY2UgdGhlIG9ubHkgaW50ZXJuYWwgY2xpZW50IHRoYXQgZW5hYmxlcyBRdWlj
ayBOb3RlIGlzIFNhZmFyaSwgd2hpY2gKKyAgICAgICAgZG9lcyBub3QgYXR0ZW1wdCB0byBhZGQg
YW55IG9mIGl0cyBvd24gaXRlbXM7IGhvd2V2ZXIsICJNYXJrdXAgSW1hZ2UiIG5lZWRzIHRvIGJl
IGF2YWlsYWJsZSBpbiBNYWlsIG9uIGlPUyBhcworICAgICAgICB3ZWxsLCB3aGljaCBkb2VzIHVz
ZSBjdXN0byBtZW51IGl0ZW1zLgorCisgICAgICAgIChmaW5kTWVudUl0ZW1XaXRoQWN0aW9uKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1cGRhdGVBcHBIaWdobGlnaHRNZW51SXRlbXM6XSk6
CisKKyAgICAgICAgTWFrZSB0aGlzIGFkanVzdCB0aGUgZ2l2ZW4gbXV0YWJsZSBhcnJheSBvZiBV
SU1lbnVJdGVtcywgd2hpY2ggYXJlIHRoZW4gY29tYmluZWQgd2l0aCBhbnkgbWFya3VwIG1lbnUg
aXRlbXMKKyAgICAgICAgd2hlbiBzZXR0aW5nIGN1c3RvbSBpdGVtcyBvbiB0aGUgc2hhcmVkIG1l
bnUgY29udHJvbGxlci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHByb3ZpZGVEYXRhRm9y
SXRlbTpdKToKKworICAgICAgICBBZGp1c3QgdGhpcyB0byB1c2UgdGhlIG5ldyBgdHJhbnNjb2Rl
YCBoZWxwZXIgZnVuY3Rpb24sIGRlY2xhcmVkIGFib3ZlLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3NldFVwSW1hZ2VBbmFseXNpc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90
ZWFyRG93bkltYWdlQW5hbHlzaXNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcEFw
cEhpZ2hsaWdodE1lbnVzSWZOZWVkZWRdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RJ
bWFnZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorCisgICAgICAgIENvbXB1
dGUgYW5kIHBvcHVsYXRlIHRoZSBuZXcgYHNlbGVjdGVkRWRpdGFibGVJbWFnZWAgZWxlbWVudCBj
b250ZXh0OyB0byBhY2hpZXZlIHRoaXMsIHdlIHVzZSBgVGV4dEl0ZXJhdG9yYCB0bworICAgICAg
ICBzY2FuIGZvciBhbiBpbWFnZSBlbGVtZW50LCBhbmQgYmFpbCBpbW1lZGlhdGVseSBpZiB3ZSBl
aXRoZXIgZmluZCBhbnl0aGluZyB0aGF0IGlzIG5vdCBhbiBpbWFnZSwgb3IgZmluZCBtb3JlCisg
ICAgICAgIHRoYW4gb25lIGltYWdlLgorCiAyMDIyLTAyLTEwICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgYFdlYlBhZ2VQcm94eTo6cmVw
bGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSgpYCBvbiBpT1MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDljNzNjZTJiNmY4MGYxYzFkZjVjNDdmNzI2
MTQ0ZDgzYjdiODQxNGYuLjQ3ZWE5ODllOTZjMzAwNGFmYzM4OGNhYTdiYWY3MGQ3YjJjNmJhZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTUxLDcgKzE1
MSw3IEBAIHB1YmxpYzoKICAgICBJbWFnZU9ic2VydmVyKiBpbWFnZU9ic2VydmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZU9ic2VydmVyOyB9CiAgICAgdm9pZCBzZXRJbWFnZU9ic2VydmVyKElt
YWdlT2JzZXJ2ZXIqIG9ic2VydmVyKSB7IG1faW1hZ2VPYnNlcnZlciA9IG9ic2VydmVyOyB9CiAg
ICAgVVJMIHNvdXJjZVVSTCgpIGNvbnN0OwotICAgIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogICAgIGxvbmcgbG9u
ZyBleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKIAogICAgIGVudW0gVGlsZVJ1bGUgeyBT
dHJldGNoVGlsZSwgUm91bmRUaWxlLCBTcGFjZVRpbGUsIFJlcGVhdFRpbGUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCmluZGV4IDRi
MDE1YWZjOTVjYWYyMzA4NmExY2JiNjFlM2U1NjRmNzdkMGI5YmIuLjE0YWIyMmI0Y2MyOGU3NTFk
YTVhMjgzNmM3NzNiN2Y0ZTNjOTE3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaApAQCAtMzQsNyArMzQsNyBAQCBjb25zdCBNZW1v
cnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdFN1cHBv
cnRlZEltYWdlVHlwZQogSGFzaFNldDxTdHJpbmc+JiBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcygpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZGRp
dGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3RpbmcoY29uc3QgU3RyaW5nJik7Ci1ib29s
IGlzU3VwcG9ydGVkSW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc1N1cHBvcnRlZEltYWdlVHlwZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNHSUZJbWFnZVR5
cGUoU3RyaW5nVmlldyk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oCmluZGV4IDNhMjM2YTI0Y2RjODkwNDQz
ZjRkOTJiNWM2ZGMwODdiZmFmNWZjYmIuLmFmNzU4OGViNDJhMTExOTI5MWRhOGYxOGVkMmQ4YmFh
ZDIxMzA1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJl
Y29nbml0aW9uVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9U
ZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaApAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGJvb2wgaXNMaXZlVGV4dEF2YWlsYWJsZUFuZEVuYWJsZWQoKTsKIGJvb2wgdGV4dFJl
Y29nbml0aW9uRW5oYW5jZW1lbnRzU3lzdGVtRmVhdHVyZUVuYWJsZWQoKTsKIGJvb2wgaW1hZ2VB
bmFseXNpc1F1ZXVlU3lzdGVtRmVhdHVyZUVuYWJsZWQoKTsKK2Jvb2wgaXNJbWFnZUFuYWx5c2lz
TWFya3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKTsKIAogV2ViQ29yZTo6VGV4dFJlY29nbml0aW9u
UmVzdWx0IG1ha2VUZXh0UmVjb2duaXRpb25SZXN1bHQoQ29jb2FJbWFnZUFuYWx5c2lzICopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlv
blV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0
aW9uVXRpbGl0aWVzLm1tCmluZGV4IDA5ZjQ1NzIyOWE0MGU3NGNiNzQ2YzBlYmQ2M2YzZWVhOGZl
NzczNmQuLjcxYjJlMjYyMzA2NjU5NDlkODVlNDViMmNiZmNiZTAyZWY2YzVhMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRp
bGl0aWVzLm1tCkBAIC0xNTEsNiArMTUxLDE1IEBAIGJvb2wgaW1hZ2VBbmFseXNpc1F1ZXVlU3lz
dGVtRmVhdHVyZUVuYWJsZWQoKQogI2VuZGlmCiB9CiAKK2Jvb2wgaXNJbWFnZUFuYWx5c2lzTWFy
a3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKQoreworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19F
TkhBTkNFTUVOVFMpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgorfQorCiAjZW5kaWYKIAogYm9vbCBpc0xpdmVUZXh0QXZhaWxhYmxlQW5kRW5hYmxl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKaW5kZXggNjdiZDZmMTJhNTU0NzE4
OTg0MTM0NmNkYjc1YTg1NTA1ZmY2NzAxYS4uM2MyYWU0ZWViNTNjMzc4NjdhMjEyZjZlZjBkZTVl
ZDdhZDY4MDhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmNwcApAQCAtMTQ1LDYg
KzE0NSw3IEBAIHZvaWQgRWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgY2FyZXRDb2xvcjsKICAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvblN0YXJ0SXNBdFBhcmFncmFwaEJvdW5kYXJ5OwogICAgIGVuY29k
ZXIgPDwgc2VsZWN0aW9uRW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5OworICAgIGVuY29kZXIgPDwg
c2VsZWN0ZWRFZGl0YWJsZUltYWdlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVu
Y29kZXIgPDwgc2VsZWN0aW9uQm91bmRpbmdSZWN0OwpAQCAtMjI4LDYgKzIyOSw4IEBAIGJvb2wg
RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBQb3N0TGF5b3V0RGF0YSYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnNlbGVjdGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3Rl
ZEVkaXRhYmxlSW1hZ2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0aW9uQm91bmRp
bmdSZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5oCmluZGV4IGQyN2I5NTkyYTE0ODQx
ZGUwYTQxMDE0ZjZkMDVkN2U2NTU1NWQyNDcuLjEzMWY5ZTgxMjA3YjkxOGUzYTJhMmU1M2Y4ZTg2
M2M2ZTg0YzZjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllclR5
cGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWxl
bWVudENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Xcml0aW5nRGlyZWN0
aW9uLmg+CkBAIC0xMjQsNiArMTI1LDcgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICAgICAg
Ym9vbCBhdFN0YXJ0T2ZTZW50ZW5jZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgc2VsZWN0aW9u
U3RhcnRJc0F0UGFyYWdyYXBoQm91bmRhcnkgeyBmYWxzZSB9OwogICAgICAgICBib29sIHNlbGVj
dGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSB7IGZhbHNlIH07CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IHNlbGVjdGVkRWRpdGFibGVJbWFnZTsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rp
b25Cb3VuZGluZ1JlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
aW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCmluZGV4IGJhZjViMGM5OWQwMWY2YzgxYTc1MWVmOGEwOGVjNmRiZGE1NDkz
ZmQuLjc0ZTc4ZWQ4ODYzNGU4OGRjYThhN2RlMTE2MjAzOWExMjA5MWZmYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0xNTI4LDkg
KzE1MjgsNyBAQCAtICh2b2lkKWRpZE1vdmVUb1dpbmRvdwogICAgIF9wYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OmFsbEZsYWdzKCkpOwogICAgIF9w
YWdlLT53ZWJWaWV3RGlkTW92ZVRvV2luZG93KCk7CiAKLSNpZiBFTkFCTEUoQVBQX0hJR0hMSUdI
VFMpCi0gICAgW19jb250ZW50VmlldyBzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVkZWRdOwot
I2VuZGlmCisgICAgW19jb250ZW50VmlldyBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFj
dGlvbnNdOwogfQogCiAtICh2b2lkKV9zZXRPcGFxdWVJbnRlcm5hbDooQk9PTClvcGFxdWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDk0OWQ4OWE4YzQ4OGQ1
NDQ5YjMxZTc0YmMxZjQxZjAyNmY3OTBiYmQuLjllYzVlZmQyNGYyYzk4NzAzMzZiNTI2M2YyMDY0
NWFhM2ZjNDdmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtODc5OCw2ICs4Nzk4LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydEltYWdlQW5hbHlz
aXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FO
QUxZU0lTKQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEltYWdlQml0bWFwKGNvbnN0IEVs
ZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb24p
Cit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb24o
eyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0SW1hZ2VCaXRtYXAoZWxlbWVudENvbnRleHQp
LCBXVEZNb3ZlKGNvbXBsZXRpb24pKTsKK30KKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiBNZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5JiBXZWJQYWdlUHJv
eHk6Om1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjNkYWRjMGQ5MmE2ZTEwOGI2NDE4NTE5
OTA2MTRhMjE1OWJkNTU5OS4uZTQ0ZDE4OTM3ZjFiMmNiMTM0NWEwZjU5NDY3YjFlMzJhZTc4OTEw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwNDQsNiArMjA0
NCw4IEBAIHB1YmxpYzoKICAgICBXS1F1aWNrTG9va1ByZXZpZXdDb250cm9sbGVyICpxdWlja0xv
b2tQcmV2aWV3Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fcXVpY2tMb29rUHJldmlld0Nv
bnRyb2xsZXIuZ2V0KCk7IH0KICNlbmRpZgogCisgICAgdm9pZCByZXF1ZXN0SW1hZ2VCaXRtYXAo
Y29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlw
ZSk+JiYpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgaXNRdWFyYW50aW5lZEFuZE5v
dFVzZXJBcHByb3ZlZChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDdm
ZjdhN2Y1ODgzZjM4MjNhYzUxM2U3NmZiMGZmNDA3ODJkOTM3ODcuLmY0MWI1MjM3ZmYxZDZlM2Q3
MGNhMmNmMmY3ZDYxM2E0N2JlNDgzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTI0NSw2ICsyNDUsMTIg
QEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBDR1JlY3QgdGV4dExhc3RSZWN0
OwogfTsKIAorc3RydWN0IEltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzIHsKKyAgICBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCBlbGVtZW50OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiByZXN1
bHQ7CisgICAgU3RyaW5nIHByZWZlcnJlZE1JTUVUeXBlOworfTsKKwogZW51bSBjbGFzcyBQcm9j
ZWVkV2l0aFRleHRTZWxlY3Rpb25JbkltYWdlIDogYm9vbCB7CiAgICAgTm8sCiAgICAgWWVzCkBA
IC01MzEsNiArNTM3LDkgQEAgdXNpbmcgSW1hZ2VBbmFseXNpc1JlcXVlc3RJZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxJbWFnZUFuYWx5c2lzUmVxdWVzdElkZW4KICNlbmRpZiAvLyBVU0Uo
UVVJQ0tfTE9PSykKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdWludDMy
X3QgX2Z1bGxzY3JlZW5WaWRlb0V4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcjsKKyNpZiBFTkFC
TEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0
OjpJbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cz4gX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRz
OworI2VuZGlmCiB9CiAKIEBlbmQKQEAgLTc3Myw5ICs3ODIsNyBAQCBGT1JfRUFDSF9QUklWQVRF
X1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dF
Ql9WSUVXKQogLSAoV2ViQ29yZTo6RGF0YU93bmVyVHlwZSlfZGF0YU93bmVyRm9yUGFzdGVib2Fy
ZDooV2ViS2l0OjpQYXN0ZWJvYXJkQWNjZXNzSW50ZW50KWludGVudDsKICNlbmRpZgogCi0jaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQotLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZO
ZWVkZWQ7Ci0jZW5kaWYKKy0gKHZvaWQpc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rp
b25zOwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogLSAodm9pZClfZW5kSW1hZ2VBbmFs
eXNpc0dlc3R1cmVEZWZlcnJhbDooV2ViS2l0OjpTaG91bGRQcmV2ZW50R2VzdHVyZXMpc2hvdWxk
UHJldmVudEdlc3R1cmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMTcyZDI1N2ZiODNlZjc5MjJlYjg5
MDNkNGEzNjI5ZTk0NzNiMWY4Ni4uYzE1OTUyNjMxNDExMTNmNzFlZTUyNGYxYWY2NGI3YjdjYTg1
NTVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xMjcsNiArMTI3LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvVGV4dEluZGljYXRvcldpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0UmVjb2duaXRp
b25SZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVG91Y2hBY3Rpb24uaD4KKyNpbXBvcnQgPFdl
YkNvcmUvVVRJUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
Q29yZUNBTGF5ZXJFeHRyYXMuaD4KQEAgLTM3Miw2ICszNzMsMjAgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc2hvdWxkUHJldmVudFRleHRTZWxlY3Rpb24geyBmYWxzZSB9OwogfTsKIAorc3RhdGlj
IFJldGFpblB0cjxOU0RhdGE+IHRyYW5zY29kZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1Jl
ZiB0eXBlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIGRlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVh
dGVXaXRoRGF0YSgoX19icmlkZ2UgQ0ZNdXRhYmxlRGF0YVJlZilkYXRhLmdldCgpLCB0eXBlSWRl
bnRpZmllciwgMSwgbmlsKSk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGlu
YXRpb24uZ2V0KCksIGltYWdlLCBuaWwpOworICAgIGlmICghQ0dJbWFnZURlc3RpbmF0aW9uRmlu
YWxpemUoZGVzdGluYXRpb24uZ2V0KCkpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0
dXJuIGRhdGE7Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApAQCAtNDA3MSw2ICs0MDg2LDEwIEBAIC0gKGlkKXRhcmdldEZvckFj
dGlvbjooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKICAgICAgICAgcmV0dXJuIHNl
bGYuc2hvdWxkQWxsb3dBcHBIaWdobGlnaHRDcmVhdGlvbiAmJiBfcGFnZS0+YXBwSGlnaGxpZ2h0
c1Zpc2liaWxpdHkoKSA/IHNlbGYgOiBuaWw7CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Io
Y3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVpY2tOb3RlV2l0aFJhbmdlOikpCiAgICAgICAgIHJldHVy
biBzZWxmLnNob3VsZEFsbG93QXBwSGlnaGxpZ2h0Q3JlYXRpb24gJiYgIV9wYWdlLT5hcHBIaWdo
bGlnaHRzVmlzaWJpbGl0eSgpID8gc2VsZiA6IG5pbDsKKyNlbmRpZgorI2lmIEVOQUJMRShJTUFH
RV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGVy
Zm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KSkKKyAgICAgICAgcmV0dXJuIHNlbGYuY2FuUGVyZm9y
bUltYWdlQW5hbHlzaXNNYXJrdXAgPyBzZWxmIDogbmlsOwogI2VuZGlmCiAgICAgcmV0dXJuIFtf
d2ViVmlldyB0YXJnZXRGb3JBY3Rpb246YWN0aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsKIH0KQEAg
LTQ1OTcsMzYgKzQ2MTYsMTY4IEBAIC0gKHZvaWQpcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVj
dGlvbkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoW3NlbGYgX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29t
bWFuZHNdIHx8IHNlbGYud2ViVmlldy5fZWRpdGFibGUpIHsKKyAgICBpZiAoW3NlbGYgX3Nob3Vs
ZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHNdKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KEBbIF0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKF9mb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlICE9IFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRp
dGFibGUgJiYgX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgIT0gV2ViS2l0
OjpJbnB1dFR5cGU6OlRleHRBcmVhKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbIF0p
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGF1dG8gcmVxdWVzdFJlY3RzVG9FdmFkZUlm
TmVlZGVkID0gW3N0YXJ0VGltZSA9IEFwcHJveGltYXRlVGltZTo6bm93KCksIHdlYWtTZWxmID0g
V2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtT
ZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb24oQFsgXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIC8vIEdp
dmUgdGhlIHBhZ2Ugc29tZSB0aW1lIHRvIHByZXNlbnQgY3VzdG9tIGVkaXRpbmcgVUkgYmVmb3Jl
IGF0dGVtcHRpbmcgdG8gZGV0ZWN0IGFuZCBldmFkZSBpdC4KLSAgICBhdXRvIGRlbGF5QmVmb3Jl
U2hvd2luZ0NhbGxvdXRCYXIgPSAwLjI1X3M7Ci0gICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0
Y2hBZnRlcihkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyLCBbY29tcGxldGlvbiA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250
ZW50Vmlldz4oc2VsZildICgpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtTZWxmKSB7Cisg
ICAgICAgIGlmIChbc3Ryb25nU2VsZiB3ZWJWaWV3XS5fZWRpdGFibGUpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb24oQFsgXSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgaWYgKCFzdHJv
bmdTZWxmLT5fcGFnZSkgeworICAgICAgICBhdXRvIGZvY3VzZWRFbGVtZW50VHlwZSA9IHN0cm9u
Z1NlbGYtPl9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlOworICAgICAgICBp
ZiAoZm9jdXNlZEVsZW1lbnRUeXBlICE9IFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFi
bGUgJiYgZm9jdXNlZEVsZW1lbnRUeXBlICE9IFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYSkg
ewogICAgICAgICAgICAgY29tcGxldGlvbihAWyBdKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHN0cm9uZ1NlbGYtPl9wYWdlLT5yZXF1ZXN0RXZhc2lvblJlY3Rz
QWJvdmVTZWxlY3Rpb24oW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoYXV0byYg
cmVjdHMpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb24oY3JlYXRlTlNBcnJheShyZWN0cykuZ2V0
KCkpOworICAgICAgICAvLyBHaXZlIHRoZSBwYWdlIHNvbWUgdGltZSB0byBwcmVzZW50IGN1c3Rv
bSBlZGl0aW5nIFVJIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRldGVjdCBhbmQgZXZhZGUgaXQuCisg
ICAgICAgIGF1dG8gZGVsYXlCZWZvcmVTaG93aW5nQ2FsbG91dEJhciA9IHN0ZDo6bWF4KDBfcywg
MC4yNV9zIC0gKEFwcHJveGltYXRlVGltZTo6bm93KCkgLSBzdGFydFRpbWUpKTsKKyAgICAgICAg
V29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hBZnRlcihkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0
QmFyLCBbY29tcGxldGlvbiwgd2Vha1NlbGZdICgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0
byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIXN0cm9uZ1Nl
bGYpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0pOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5f
cGFnZSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb24oQFsgXSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFn
ZS0+cmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKFtjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKGF1dG8mIHJlY3RzKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlv
bihjcmVhdGVOU0FycmF5KHJlY3RzKS5nZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfTsKKworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisg
ICAgW3NlbGYgZG9BZnRlckNvbXB1dGluZ0ltYWdlQW5hbHlzaXNSZXN1bHRzRm9yTWFya3VwOldU
Rk1vdmUocmVxdWVzdFJlY3RzVG9FdmFkZUlmTmVlZGVkKV07CisjZWxzZQorICAgIHJlcXVlc3RS
ZWN0c1RvRXZhZGVJZk5lZWRlZCgpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5B
TFlTSVNfRU5IQU5DRU1FTlRTKQorCistICh2b2lkKXVwZGF0ZUltYWdlQW5hbHlzaXNNYXJrdXBN
ZW51SXRlbXM6KE5TTXV0YWJsZUFycmF5PFVJTWVudUl0ZW0gKj4gKil1cGRhdGVkSXRlbXMKK3sK
KyAgICBhdXRvIGN1cnJlbnRJdGVtID0gZmluZE1lbnVJdGVtV2l0aEFjdGlvbih1cGRhdGVkSXRl
bXMsIEBzZWxlY3RvcihwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cDopKTsKKyAgICBhdXRvJiBl
ZGl0b3JTdGF0ZSA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpOworICAgIGlmICghV2ViS2l0Ojppc0lt
YWdlQW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpIHx8ICFzZWxmLndpbmRvdyB8
fCBlZGl0b3JTdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSB8fCAhZWRpdG9yU3RhdGUucG9z
dExheW91dERhdGEoKS5zZWxlY3RlZEVkaXRhYmxlSW1hZ2UpIHsKKyAgICAgICAgaWYgKGN1cnJl
bnRJdGVtKQorICAgICAgICAgICAgW3VwZGF0ZWRJdGVtcyByZW1vdmVPYmplY3Q6Y3VycmVudEl0
ZW1dOworICAgIH0gZWxzZSBpZiAoIWN1cnJlbnRJdGVtKQorICAgICAgICBbdXBkYXRlZEl0ZW1z
IGFkZE9iamVjdDphZG9wdE5TKFtbVUlNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXRUJf
VUlfU1RSSU5HKCJNYXJrdXAgSW1hZ2UiLCAiSW1hZ2UgYW5hbHlzaXMgbWFya3VwIG1lbnUgaXRl
bSIpIGFjdGlvbjpAc2VsZWN0b3IocGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KV0pLmdldCgp
XTsKK30KKworLSAoQk9PTCljYW5QZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cAoreworICAgIGlm
ICghV2ViS2l0Ojppc0ltYWdlQW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm4gTk87CisKKyAgICBpZiAoIV9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0
cykKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgYXV0byBbZWxlbWVudENvbnRleHQsIGltYWdl
LCBwcmVmZXJyZWRNSU1FVHlwZV0gPSAqX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzOworICAg
IHJldHVybiAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNNaXNzaW5nUG9zdExheW91dERhdGEgJiYg
ZWxlbWVudENvbnRleHQgPT0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5z
ZWxlY3RlZEVkaXRhYmxlSW1hZ2U7Cit9CisKKy0gKHZvaWQpcGVyZm9ybUltYWdlQW5hbHlzaXNN
YXJrdXA6KGlkKXNlbmRlcgoreworICAgIGlmICghc2VsZi5jYW5QZXJmb3JtSW1hZ2VBbmFseXNp
c01hcmt1cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBbZWxlbWVudENvbnRleHQsIGlt
YWdlLCBwcmVmZXJyZWRNSU1FVHlwZV0gPSAqX2ltYWdlQW5hbHlzaXNNYXJrdXBSZXN1bHRzOwor
ICAgIGF1dG8gdGFyZ2V0VHlwZSA9IFJldGFpblB0ciB7IFVUVHlwZVRJRkYuaWRlbnRpZmllciB9
OworICAgIGlmICghcHJlZmVycmVkTUlNRVR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIE5TU3Ry
aW5nICpwcmVmZXJyZWRUeXBlSWRlbnRpZmllciA9IFtVVFR5cGUgdHlwZVdpdGhNSU1FVHlwZTpw
cmVmZXJyZWRNSU1FVHlwZSBjb25mb3JtaW5nVG9UeXBlOlVUVHlwZUltYWdlXS5pZGVudGlmaWVy
OworICAgICAgICBpZiAoV2ViQ29yZTo6aXNTdXBwb3J0ZWRJbWFnZVR5cGUocHJlZmVycmVkVHlw
ZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IHByZWZlcnJlZFR5cGVJZGVu
dGlmaWVyOworICAgIH0KKworICAgIGlmIChhdXRvIGRhdGEgPSBXZWJLaXQ6OnRyYW5zY29kZShp
bWFnZS5nZXQoKSwgKF9fYnJpZGdlIENGU3RyaW5nUmVmKXRhcmdldFR5cGUuZ2V0KCkpOyBbZGF0
YSBsZW5ndGhdKQorICAgICAgICBfcGFnZS0+cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJk
RGF0YSh7IFN0cmluZyB7IHRhcmdldFR5cGUuZ2V0KCkgfSB9LCB7IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdIH0pOworfQorCistICh2b2lk
KWRvQWZ0ZXJDb21wdXRpbmdJbWFnZUFuYWx5c2lzUmVzdWx0c0Zvck1hcmt1cDooQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKWNvbXBsZXRpb24KK3sKKyAgICBpZiAoX3BhZ2UtPmVkaXRvclN0
YXRlKCkuaXNNaXNzaW5nUG9zdExheW91dERhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBlbGVtZW50VG9BbmFseXplID0gX3Bh
Z2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3RlZEVkaXRhYmxlSW1hZ2U7
CisgICAgaWYgKF9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cyAmJiBfaW1hZ2VBbmFseXNpc01h
cmt1cFJlc3VsdHMtPmVsZW1lbnQgPT0gZWxlbWVudFRvQW5hbHl6ZSkgeworICAgICAgICBjb21w
bGV0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfaW1hZ2VBbmFseXNpc01h
cmt1cFJlc3VsdHMgPSBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWVsZW1lbnRUb0FuYWx5emUp
IHsKKyAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
X3BhZ2UtPnJlcXVlc3RJbWFnZUJpdG1hcCgqZWxlbWVudFRvQW5hbHl6ZSwgW2NvbnRleHQgPSAq
ZWxlbWVudFRvQW5hbHl6ZSwgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbiksIHdlYWtT
ZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4oc2VsZildKGF1dG8mIGltYWdlRGF0YSwg
YXV0byYgc291cmNlTUlNRVR5cGUpIG11dGFibGUgeworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYg
PSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBhdXRvIGltYWdlQml0bWFwID0gV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFn
ZURhdGEpOworICAgICAgICBpZiAoIWltYWdlQml0bWFwKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNn
SW1hZ2UgPSBpbWFnZUJpdG1hcC0+bWFrZUNHSW1hZ2UoKTsKKyAgICAgICAgaWYgKCFjZ0ltYWdl
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICAvLyBGSVhNRTogQ2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBhdm9pZCB0
aGlzIGV4dHJhIHRyYW5zY29kaW5nIHN0ZXAgb25jZSBWaXNpb25LaXQgc3RhcnRzIHVzaW5nIGBt
ZWRpYWFuYWx5c2lzZGAgZm9yIHRoaXMuCisgICAgICAgIGF1dG8gdGlmZkRhdGEgPSBXZWJLaXQ6
OnRyYW5zY29kZShjZ0ltYWdlLmdldCgpLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElG
Ri5pZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFbdGlmZkRhdGEgbGVuZ3RoXSkgeworICAgICAg
ICAgICAgY29tcGxldGlvbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgUmV0YWluUHRyIHRyYW5zY29kZWRJbWFnZSA9IFtVSUltYWdlIGltYWdlV2l0aERhdGE6
dGlmZkRhdGEuZ2V0KCldOworICAgICAgICBpZiAoIXRyYW5zY29kZWRJbWFnZSkgeworICAgICAg
ICAgICAgY29tcGxldGlvbigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgV2ViS2l0OjpyZXF1ZXN0SW1hZ2VBbmFseXNpc01hcmt1cChbdHJhbnNjb2RlZEltYWdl
IENHSW1hZ2VdLCBbc291cmNlTUlNRVR5cGUsIGNvbnRleHQsIGNvbXBsZXRpb24gPSBXVEZNb3Zl
KGNvbXBsZXRpb24pLCB3ZWFrU2VsZl0oQ0dJbWFnZVJlZiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgICAgICBp
ZiAoIXN0cm9uZ1NlbGYpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzdWx0
KQorICAgICAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0
cyA9IHsgeyBjb250ZXh0LCB7IHJlc3VsdCB9LCBzb3VyY2VNSU1FVHlwZSB9IH07CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3Ryb25nU2VsZi0+X2ltYWdlQW5hbHlzaXNNYXJr
dXBSZXN1bHRzID0gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgY29tcGxldGlvbigpOwogICAg
ICAgICB9KTsKICAgICB9KTsKIH0KIAorI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19F
TkhBTkNFTUVOVFMpCisKIC0gKHZvaWQpc2VsZWN0UG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBv
aW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgog
ewogICAgIF9hdXRvY29ycmVjdGlvbkNvbnRleHROZWVkc1VwZGF0ZSA9IFlFUzsKQEAgLTczMTMs
MTAgKzc0NjQsOCBAQCAtICh2b2lkKV91cGRhdGVTZWxlY3Rpb25Bc3Npc3RhbnRTdXBwcmVzc2lv
blN0YXRlCiAtICh2b2lkKV9zZWxlY3Rpb25DaGFuZ2VkCiB7CiAgICAgX2F1dG9jb3JyZWN0aW9u
Q29udGV4dE5lZWRzVXBkYXRlID0gWUVTOwotI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKLSAg
ICBbc2VsZiBzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVkZWRdOwotI2VuZGlmCiAKKyAgICBb
c2VsZiBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlvbnNdOwogICAgIFtzZWxmIF91
cGRhdGVTZWxlY3Rpb25Bc3Npc3RhbnRTdXBwcmVzc2lvblN0YXRlXTsKIAogICAgIF9jYWNoZWRT
ZWxlY3RlZFRleHRSYW5nZSA9IG5pbDsKQEAgLTk2MDIsMjEgKzk3NTEsNTEgQEAgLSAodm9pZClf
bG9va3VwR2VzdHVyZVJlY29nbml6ZWQ6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVj
b2duaXplcgogfQogI2VuZGlmCiAKKy0gKHZvaWQpc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xs
ZXJBY3Rpb25zCit7CisgICAgYXV0byB1cGRhdGVkSXRlbXMgPSBhZG9wdE5TKFVJTWVudUNvbnRy
b2xsZXIuc2hhcmVkTWVudUNvbnRyb2xsZXIubWVudUl0ZW1zLm11dGFibGVDb3B5ID86IFtOU011
dGFibGVBcnJheTxVSU1lbnVJdGVtICo+IG5ld10pOworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
U19FTkhBTkNFTUVOVFMpCisgICAgW3NlbGYgdXBkYXRlSW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJ
dGVtczp1cGRhdGVkSXRlbXMuZ2V0KCldOworI2VuZGlmCisjaWYgRU5BQkxFKEFQUF9ISUdITElH
SFRTKQorICAgIFtzZWxmIHVwZGF0ZUFwcEhpZ2hsaWdodE1lbnVJdGVtczp1cGRhdGVkSXRlbXMu
Z2V0KCldOworI2VuZGlmCisgICAgVUlNZW51Q29udHJvbGxlci5zaGFyZWRNZW51Q29udHJvbGxl
ci5tZW51SXRlbXMgPSB1cGRhdGVkSXRlbXMuZ2V0KCk7Cit9CisKKyNpZiBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVNfRU5IQU5DRU1FTlRTKSB8fCBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKK3N0YXRp
YyBVSU1lbnVJdGVtICpmaW5kTWVudUl0ZW1XaXRoQWN0aW9uKE5TQXJyYXk8VUlNZW51SXRlbSAq
PiAqaXRlbXMsIFNFTCBhY3Rpb24pCit7CisgICAgZm9yIChVSU1lbnVJdGVtICppdGVtIGluIGl0
ZW1zKSB7CisgICAgICAgIGlmIChpdGVtLmFjdGlvbiA9PSBhY3Rpb24pCisgICAgICAgICAgICBy
ZXR1cm4gaXRlbTsKKyAgICB9CisgICAgcmV0dXJuIG5pbDsKK30KKworI2VuZGlmIC8vIEVOQUJM
RShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpIHx8IEVOQUJMRShBUFBfSElHSExJR0hUUykK
KwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAotLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdo
dE1lbnVzSWZOZWVkZWQKKy0gKHZvaWQpdXBkYXRlQXBwSGlnaGxpZ2h0TWVudUl0ZW1zOihOU011
dGFibGVBcnJheTxVSU1lbnVJdGVtICo+ICopdXBkYXRlZEl0ZW1zCiB7Ci0gICAgaWYgKCFfcGFn
ZS0+cHJlZmVyZW5jZXMoKS5hcHBIaWdobGlnaHRzRW5hYmxlZCgpIHx8ICFzZWxmLndpbmRvdyB8
fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSkKKyAgICBhdXRvIGN1cnJl
bnRRdWlja05vdGVJdGVtID0gZmluZE1lbnVJdGVtV2l0aEFjdGlvbih1cGRhdGVkSXRlbXMsIEBz
ZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOikpOwor
ICAgIGF1dG8gbmV3UXVpY2tOb3RlSXRlbSA9IGZpbmRNZW51SXRlbVdpdGhBY3Rpb24odXBkYXRl
ZEl0ZW1zLCBAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVpY2tOb3RlV2l0aFJhbmdl
OikpOworCisgICAgaWYgKCFfcGFnZS0+cHJlZmVyZW5jZXMoKS5hcHBIaWdobGlnaHRzRW5hYmxl
ZCgpIHx8ICFzZWxmLndpbmRvdyB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9uSXNS
YW5nZSkgeworICAgICAgICBpZiAoY3VycmVudFF1aWNrTm90ZUl0ZW0pCisgICAgICAgICAgICBb
dXBkYXRlZEl0ZW1zIHJlbW92ZU9iamVjdDpjdXJyZW50UXVpY2tOb3RlSXRlbV07CisgICAgICAg
IGlmIChuZXdRdWlja05vdGVJdGVtKQorICAgICAgICAgICAgW3VwZGF0ZWRJdGVtcyByZW1vdmVP
YmplY3Q6bmV3UXVpY2tOb3RlSXRlbV07CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmb3Ig
KFVJTWVudUl0ZW0gKm1lbnVJdGVtIGluIFtbVUlNZW51Q29udHJvbGxlciBzaGFyZWRNZW51Q29u
dHJvbGxlcl0gbWVudUl0ZW1zXSkgewotICAgICAgICBpZiAoW21lbnVJdGVtIGFjdGlvbl0gPT0g
QHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvckN1cnJlbnRRdWlja05vdGVXaXRoUmFuZ2U6KSB8
fCBbbWVudUl0ZW0gYWN0aW9uXSA9PSBAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVp
Y2tOb3RlV2l0aFJhbmdlOikpCi0gICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAg
IGF1dG8gYWRkSGlnaGxpZ2h0Q3VycmVudFF1aWNrTm90ZUl0ZW0gPSBhZG9wdE5TKFtbVUlNZW51
SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdBZGRI
aWdobGlnaHRUb0N1cnJlbnRRdWlja05vdGUoKSBhY3Rpb246QHNlbGVjdG9yKGNyZWF0ZUhpZ2hs
aWdodEZvckN1cnJlbnRRdWlja05vdGVXaXRoUmFuZ2U6KV0pOwotICAgIGF1dG8gYWRkSGlnaGxp
Z2h0TmV3UXVpY2tOb3RlSXRlbSA9IGFkb3B0TlMoW1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0
aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3UXVpY2tO
b3RlKCkgYWN0aW9uOkBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05vdGVXaXRo
UmFuZ2U6KV0pOwotICAgIFtbVUlNZW51Q29udHJvbGxlciBzaGFyZWRNZW51Q29udHJvbGxlcl0g
c2V0TWVudUl0ZW1zOkBbIGFkZEhpZ2hsaWdodEN1cnJlbnRRdWlja05vdGVJdGVtLmdldCgpLCBh
ZGRIaWdobGlnaHROZXdRdWlja05vdGVJdGVtLmdldCgpIF1dOworCisgICAgaWYgKCFjdXJyZW50
UXVpY2tOb3RlSXRlbSkKKyAgICAgICAgW3VwZGF0ZWRJdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhb
W1VJTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVt
VGFnQWRkSGlnaGxpZ2h0VG9DdXJyZW50UXVpY2tOb3RlKCkgYWN0aW9uOkBzZWxlY3RvcihjcmVh
dGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOildKS5nZXQoKV07CisKKyAg
ICBpZiAoIW5ld1F1aWNrTm90ZUl0ZW0pCisgICAgICAgIFt1cGRhdGVkSXRlbXMgYWRkT2JqZWN0
OmFkb3B0TlMoW1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRl
eHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3UXVpY2tOb3RlKCkgYWN0aW9uOkBzZWxlY3Rv
cihjcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05vdGVXaXRoUmFuZ2U6KV0pLmdldCgpXTsKIH0K
IAogLSAodm9pZCljcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0aFJhbmdlOihp
ZClzZW5kZXIKQEAgLTEwMzE1LDE0ICsxMDQ5NCw3IEBAIC0gKGlkIDxRTFByZXZpZXdJdGVtPilw
cmV2aWV3Q29udHJvbGxlcjooUUxQcmV2aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgcHJldmll
CiAtIChOU0RhdGEgKilwcm92aWRlRGF0YUZvckl0ZW06KFFMSXRlbSAqKWl0ZW0KIHsKICAgICBB
U1NFUlQoX3Zpc3VhbFNlYXJjaFByZXZpZXdJbWFnZSk7Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZU11dGFibGUoTlVMTCwgMCkpOwotICAgIGF1dG8gZGVzdGluYXRpb24g
PSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIChf
X2JyaWRnZSBDRlN0cmluZ1JlZilVVFR5cGVUSUZGLmlkZW50aWZpZXIsIDEsIE5VTEwpKTsKLSAg
ICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgW192aXN1YWxT
ZWFyY2hQcmV2aWV3SW1hZ2UgQ0dJbWFnZV0sIG5pbCk7Ci0gICAgaWYgKCFDR0ltYWdlRGVzdGlu
YXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICByZXR1cm4gZGF0YS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIFdlYktp
dDo6dHJhbnNjb2RlKFtfdmlzdWFsU2VhcmNoUHJldmlld0ltYWdlIENHSW1hZ2VdLCAoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5pZGVudGlmaWVyKS5hdXRvcmVsZWFzZSgpOwogfQog
CiAjcHJhZ21hIG1hcmsgLSBXS0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUKQEAgLTEwMzg1
LDYgKzEwNTU3LDkgQEAgLSAodm9pZClfc2V0VXBJbWFnZUFuYWx5c2lzCiAjaWYgVVNFKFVJQ09O
VEVYVE1FTlUpICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19GT1JfTUFDSElORV9SRUFEQUJMRV9D
T0RFUykKICAgICBfY29udGV4dE1lbnVGb3JNYWNoaW5lUmVhZGFibGVDb2RlLmNsZWFyKCk7CiAj
ZW5kaWYgLy8gVVNFKFVJQ09OVEVYVE1FTlUpICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19GT1Jf
TUFDSElORV9SRUFEQUJMRV9DT0RFUykKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5D
RU1FTlRTKQorICAgIF9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0cyA9IHN0ZDo6bnVsbG9wdDsK
KyNlbmRpZgogfQogCiAtICh2b2lkKV90ZWFyRG93bkltYWdlQW5hbHlzaXMKQEAgLTEwNDEwLDYg
KzEwNTg1LDkgQEAgLSAodm9pZClfdGVhckRvd25JbWFnZUFuYWx5c2lzCiAgICAgX2NvbnRleHRN
ZW51Rm9yTWFjaGluZVJlYWRhYmxlQ29kZS5jbGVhcigpOwogI2VuZGlmIC8vIFVTRShVSUNPTlRF
WFRNRU5VKSAmJiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRk9SX01BQ0hJTkVfUkVBREFCTEVfQ09E
RVMpCiAgICAgW3NlbGYgX2ludm9rZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFn
ZUFuYWx5c2lzOldlYktpdDo6UHJvY2VlZFdpdGhUZXh0U2VsZWN0aW9uSW5JbWFnZTo6Tm9dOwor
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgX2ltYWdlQW5hbHlz
aXNNYXJrdXBSZXN1bHRzID0gc3RkOjpudWxsb3B0OworI2VuZGlmCiB9CiAKIC0gKHZvaWQpX2Nh
bmNlbEltYWdlQW5hbHlzaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggYjc5MmMyZDY5YmRiNTY2NmExYzI0YmRhZGUzZmQxMDMwNzVmMTBkOC4u
NzZkNmI3ZGVjNTY5MzNiMmM3YTU1OWVlZjRkOTEyYWFhZWFjNDgxNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc3NDMsNiArNzc0Myw0MiBA
QCB2b2lkIFdlYlBhZ2U6OnN0YXJ0SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIpCiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKK3ZvaWQgV2ViUGFnZTo6
cmVxdWVzdEltYWdlQml0bWFwKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VNSU1FVHlwZSk+JiYgY29tcGxldGlvbikKK3sKKyAgICBSZWZQdHIgZWxlbWVu
dCA9IGVsZW1lbnRGb3JDb250ZXh0KGNvbnRleHQpOworICAgIGlmICghZWxlbWVudCkgeworICAg
ICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8qIHJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPihlbGVtZW50LT5y
ZW5kZXJlcigpKTsKKyAgICBpZiAoIXJlbmRlcmVyKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9
LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBiaXRtYXAgPSBjcmVh
dGVTaGFyZWFibGVCaXRtYXAoKnJlbmRlcmVyKTsKKyAgICBpZiAoIWJpdG1hcCkgeworICAgICAg
ICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBiaXRtYXAtPmNyZWF0ZUhhbmRsZSho
YW5kbGUpOworICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKKyAgICAgICAgY29tcGxldGlvbih7
IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgbWltZVR5cGU7
CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gcmVuZGVyZXItPmNhY2hlZEltYWdlKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCkpCisgICAgICAg
ICAgICBtaW1lVHlwZSA9IGltYWdlLT5taW1lVHlwZSgpOworICAgIH0KKyAgICBBU1NFUlQoIW1p
bWVUeXBlLmlzRW1wdHkoKSk7CisgICAgY29tcGxldGlvbihoYW5kbGUsIG1pbWVUeXBlKTsKK30K
KwogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01FTlVTKSAmJiBVU0UoVUlDT05U
RVhUTUVOVSkKIHZvaWQgV2ViUGFnZTo6c2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShGbG9h
dFJlY3QmJiB0YXJnZXRGcmFtZSwgVmVjdG9yPE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0+
JiYgaXRlbXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFDb250cm9sc0NvbnRleHRNZW51
SXRlbTo6SUQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDc0ZWJjOTNhMGI0NWY2MjYyMWZkNzY5ZjVkYWQy
ODNkMDJkZmI5OGIuLmRmYTcxNzliYzM1ZTYxMzBhODI4YTk5ZGQ3NjFkZGJmNWZjYzljMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NDAsNiAr
MTQ0MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0SW1hZ2VBbmFseXNpcyhjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyAgICB2b2lkIHJlcXVlc3RJbWFnZUJpdG1hcChj
b25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBl
KT4mJik7CisKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKSAmJiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKICAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51VHJhbnNsYXRpb24oY29uc3Qg
V2ViQ29yZTo6VHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8mKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5k
ZXggNDE4MGZlZDEyMjkzNDA2MWE2NzMwMDMxZTJjMmRlMjRkMjEyYmUyZi4uNTgxNzIzNTBiMzE2
YzlmY2RmZDk1ZDNiOTcwNzYxZDk0ZDY3MDMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMjgsNiArMTI4LDgg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudE92ZXJyaWRlKCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCisgICAgUmVxdWVzdEltYWdlQml0
bWFwKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCkgLT4gKFdl
YktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2UsIFN0cmluZyBzb3VyY2VNSU1FVHlw
ZSkgQXN5bmMKKwogICAgIFNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVk
KQogCiAgICAgQ29ubmVjdEluc3BlY3RvcihTdHJpbmcgdGFyZ2V0SWQsIEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggM2Rk
YzI2NzE3NDY5ZDZhZGJhMTI0MjExMzhhNjAxY2Y1YmMxYzdlNi4uMmExMWRjYTAyZTgyYzA3YzBh
ZjQwMTk5M2U2MTBkMzVlZGRhNTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMyMCw2ICszMjAsMjUgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUm
IHJlc3VsdCkgY29uc3QKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGVkVGV4dExl
bmd0aCA9IHNlbGVjdGVkVGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgIGNvbnN0IGludCBtYXhT
ZWxlY3RlZFRleHRMZW5ndGggPSAyMDA7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS53b3Jk
QXRTZWxlY3Rpb24gPSBzZWxlY3RlZFRleHQubGVmdChtYXhTZWxlY3RlZFRleHRMZW5ndGgpOwor
ICAgICAgICAgICAgYXV0byBmaW5kU2VsZWN0ZWRFZGl0YWJsZUltYWdlRWxlbWVudCA9IFsmXSB7
CisgICAgICAgICAgICAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGZvdW5kSW1hZ2U7Cisg
ICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNDb250ZW50RWRpdGFibGUpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmb3VuZEltYWdlOworCisgICAgICAgICAgICAgICAgZm9yIChUZXh0
SXRlcmF0b3IgaXRlcmF0b3IgeyAqc2VsZWN0ZWRSYW5nZSwgeyB9IH07ICFpdGVyYXRvci5hdEVu
ZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5k
SW1hZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW1hZ2UgPSBudWxscHRyOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgZm91bmRJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxIVE1MSW1hZ2VF
bGVtZW50PihpdGVyYXRvci5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5k
SW1hZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kSW1hZ2U7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICBpZiAoYXV0byBpbWFnZUVsZW1lbnQgPSBmaW5kU2VsZWN0ZWRFZGl0YWJsZUlt
YWdlRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGVkRWRp
dGFibGVJbWFnZSA9IGNvbnRleHRGb3JFbGVtZW50KCppbWFnZUVsZW1lbnQpOwogICAgICAgICB9
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlzYWxsb3cgcmVwbGFjZSB3aGVuIHRoZSBz
dHJpbmcgY29udGFpbnMgb25seSBDSiBjaGFyYWN0ZXJzLgogICAgICAgICBwb3N0TGF5b3V0RGF0
YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFyZXN1bHQu
aXNJblBhc3N3b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJz
PGlzSFRNTFNwYWNlPigpOwo=
</data>
<flag name="review"
          id="478403"
          type_id="1"
          status="+"
          setter="akeerthi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451699</attachid>
            <date>2022-02-11 08:06:59 -0800</date>
            <delta_ts>2022-02-11 09:03:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236415-20220211080658.patch</filename>
            <type>text/plain</type>
            <size>35660</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVkOTczNWRkMTA1OWQz
NGJmYTY0OTkwNTA4M2I1OWQxODUwY2EzZS4uN2NmZWUwYzU0MTI4ZDg2OGQyYmVmODY5MmZmZDk1
MjVlYTkxMzZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTEwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkZCBz
dXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNhbGxvdXQgYmFyIHdoZW4g
c2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4NzE0MzMzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRpdHlhIEtlZXJ0aGkuCisKKyAgICAgICAgRXhwb3J0IGEgY291cGxl
IG9mIGZ1bmN0aW9uczsgc2VlIFdlYktpdC9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaDoKKwogMjAyMi0wMi0xMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGBXZWJQYWdlUHJveHk6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoKWAgb24gaU9TCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGYyNmUwMDhhNWQ4ODJkYTkwMDUyMDg4OTQ4Y2U3ZGZjZTY1NWRlMmUuLmI5MTEzNzA0YTliZjY0
ZTc1ZjU2MmRjZDE5MWQ1OTkxMmIxZDBhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisy
MDIyLTAyLTEwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtpT1NdIEFkZCBzdXBwb3J0IGZvciBhICJtYXJrdXAgaW1hZ2UiIGl0ZW0gaW4gdGhlIGNh
bGxvdXQgYmFyIHdoZW4gc2VsZWN0aW5nIGEgc2luZ2xlIGltYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0MTUKKyAgICAgICAgcmRhcjovLzg4
NzE0MzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRpdHlhIEtlZXJ0aGkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3ICJNYXJrdXAgSW1hZ2UiIGNh
bGxvdXQgbWVudSBpdGVtLCB3aGljaCBpcyBvbmx5IHNob3duIHdoZW4gdGhlIHVzZXIgaGFzCisg
ICAgICAgIHNlbGVjdGVkIGV4YWN0bHkgb25lIGltYWdlLiBJZiB0aGUgaW1hZ2UgaXMgc3VpdGFi
bGUgZm9yICJNYXJrdXAgSW1hZ2UiICh0aGF0IGlzLCB0aGUgcmVsZXZhbnQgVmlzaW9uS2l0IEFQ
SQorICAgICAgICByZXR1cm5zIGEgbm9uLW51bGwgaW1hZ2UpLCB0aGVuIHdlIHNob3cgYSBuZXcg
aXRlbSBpbiB0aGUgY2FsbG91dCBiYXIgd2hpY2gsIHdoZW4gYWN0aXZhdGVkLCByZXBsYWNlcyB0
aGUKKyAgICAgICAgY3VycmVudCBzZWxlY3Rpb24gd2l0aCB0aGUgaW1hZ2UgcmV0dXJuZWQgYnkg
dGhlIGFmb3JlbWVudGlvbmVkIFZpc2lvbktpdCBBUEkuCisKKyAgICAgICAgU2VlIGJlbG93IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRp
b25VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25V
dGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6OmlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3Rl
bUZlYXR1cmVFbmFibGVkKToKKworICAgICAgICBBZGQgYSBuZXcgaGVscGVyIG1ldGhvZCB0byBy
ZXR1cm4gd2hldGhlciBvciBub3QgdGhlIGNvcnJlc3BvbmRpbmcgc3lzdGVtIGZlYXR1cmUgZmxh
ZyBpcyBlbmFibGVkLgorCisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OlBvc3RMYXlvdXREYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6UG9zdExheW91dERhdGE6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisKKyAgICAgICAgQWRkIGFuIG9wdGlvbmFs
IGBFbGVtZW50Q29udGV4dGAgdGhhdCdzIHBvcHVsYXRlZCBvbmx5IGlmIHRoZSB1c2VyJ3Mgc2Vs
ZWN0aW9uIHNwYW5zIGEgc2luZ2xlIEhUTUxJbWFnZUVsZW1lbnQuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBkaWRN
b3ZlVG9XaW5kb3ddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0SW1hZ2VCaXRtYXApOgorCisgICAg
ICAgIEFkZCBhIG5ldyBhc3luYyBJUEMgbWVzc2FnZSB0aGF0IGFsbG93cyB0aGUgVUkgcHJvY2Vz
cyB0byBncmFiIGEgU2hhcmVhYmxlQml0bWFwIGhhbmRsZSAoYWxvbmcgd2l0aCB0aGUgTUlNRQor
ICAgICAgICB0eXBlIG9mIHRoZSBzb3VyY2UgaW1hZ2UpIGdpdmVuIGFuIEVsZW1lbnRDb250ZXh0
IHRoYXQgaWRlbnRpZmllcyBhbiBpbWFnZSBlbGVtZW50LgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmg6CisKKyAgICAgICAgQ2FjaGUgdGhlIGxhc3QgcmVzdWx0IGZyb20gcmVxdWVz
dGluZyAiSW1hZ2UgTWFya3VwIiBkYXRhIGZyb20gVmlzaW9uS2l0IGluIGBfaW1hZ2VBbmFseXNp
c01hcmt1cFJlc3VsdHNgLCBhbmQKKyAgICAgICAgdXNlIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBp
bnZva2luZyB0aGUgbmV3IHNlbGVjdG9yLCBgLXBlcmZvcm1JbWFnZUFuYWx5c2lzTWFya3VwOmAu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6dHJhbnNjb2RlKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0
aG9kIHRoYXQgdGFrZXMgYSBDR0ltYWdlUmVmLCB0cmFuc2NvZGVzIGl0IHRvIHRoZSBnaXZlbiB1
bmlmb3JtIHR5cGUgaWRlbnRpZmllciwgYW5kIGZpbmFsbHkKKyAgICAgICAgcmV0dXJucyBhIGJs
b2Igb2YgaW1hZ2UgZGF0YS4gVXNlZCBieSB0aGUgdHdvIG5ldyBjYWxsIHNpdGVzIGZvciBJbWFn
ZSBNYXJrdXAgYmVsb3csIGFzIHdlbGwgYXMgYW4gZXhpc3RpbmcgY2FsbAorICAgICAgICBzaXRl
IGZvciBWaXN1YWwgTG9vayBVcCBpbiBgLXByb3ZpZGVEYXRhRm9ySXRlbTpgCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyB0YXJnZXRGb3JBY3Rpb246d2l0aFNlbmRlcjpdKToKKworICAgICAg
ICBBZGQgYSBjaGVjayBmb3IgdGhlIG5ldyBJbWFnZSBNYXJrdXAgYWN0aW9uIHNlbGVjdG9yLgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlv
bkNvbW1hbmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorCisgICAgICAgIFVzZSB0aGlzIGV4
aXN0aW5nIFVJS2l0IGRlbGVnYXRlIGhvb2sgdG8gZGVmZXIgY2FsbG91dCBiYXIgcHJlc2VudGF0
aW9uIG9ubHkgaW4gdGhlIGNhc2Ugd2hlcmUgYSBzaW5nbGUgaW1hZ2UKKyAgICAgICAgZWxlbWVu
dCBpcyBzZWxlY3RlZCwgc3VjaCB0aGF0IHdlIG9ubHkgc2hvdyB0aGUgY2FsbG91dCBiYXIgaW4g
dGhpcyBzY2VuYXJpbyBvbmNlIFZpc2lvbktpdCBoYXMgZGV0ZXJtaW5lZAorICAgICAgICB3aGV0
aGVyIG9yIG5vdCB0aGUgIkltYWdlIE1hcmt1cCIgYWN0aW9uIGlzIHN1aXRhYmxlIGZvciB0aGUg
ZGF0YSBvZiB0aGUgc2VsZWN0ZWQgaW1hZ2UuCisKKyAgICAgICAgVGhlIGluaXRpYWwgcHVycG9z
ZSBvZiB0aGlzIGRlbGVnYXRlIGhvb2sgd2FzIHRvIGFsbG93IFdlYktpdCB0byBkZWZlciBjYWxs
b3V0IGJhciBwcmVzZW50YXRpb24gZm9yIGEgc2hvcnQsCisgICAgICAgIGhhcmQtY29kZWQgZGVs
YXkgdG8gd2FpdCBmb3IgdGhlIHdlYiBwYWdlIHRvIGxheW91dCBvdXQgb3IgYWRkIGNsaWNrYWJs
ZSBpdGVtcyB0aGF0IG1pZ2h0IHVuZGVybGFwIHRoZSBjYWxsb3V0CisgICAgICAgIGJhcjsgYXMg
c3VjaCwgd2Ugc3RpbGwgcGVyZm9ybSB0aGlzIGxvZ2ljIHdpdGggYSBoYXJkLWNvZGVkIGRlbGF5
IG9mIDI1MCBtcyAoaW5jbHVkaW5nIHdoYXRldmVyIHRpbWUgd2FzIHRha2VuCisgICAgICAgIGR1
cmluZyBpbWFnZSBhbmFseXNpcykuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1cGRhdGVJ
bWFnZUFuYWx5c2lzTWFya3VwTWVudUl0ZW1zOl0pOgorCisgICAgICAgIEFwcGVuZCB0aGUgbmV3
IG1lbnUgaXRlbSBvbmx5IGlmIHRoZSBzeXN0ZW0gZmVhdHVyZSBmbGFnIGlzIGVuYWJsZWQsIGFu
ZCB3ZSd2ZSBzZWxlY3RlZCBhbiBlZGl0YWJsZSBpbWFnZS4gTm90ZQorICAgICAgICB0aGF0IHRo
aXMgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBjb25zdWx0IGBfaW1hZ2VBbmFseXNpc01hcmt1cFJl
c3VsdHNgIHRvIGVuc3VyZSB0aGF0IHRoZSBzdGF0ZSBvZiBhZGRpdGlvbmFsCisgICAgICAgIG1l
bnUgaXRlbXMgaW4gdGhlIHNoYXJlZCBtZW51IGNvbnRyb2xsZXIgaXMgY29uc2lzdGVudCBiZXR3
ZWVuIE1hcmt1cCBJbWFnZSBhbmQgUXVpY2sgTm90ZSwgYW5kIHVwZGF0ZWQgaW4gdGhlCisgICAg
ICAgIHNhbWUgbGlmZWN5Y2xlIGFzIGVkaXRvciBzdGF0ZSB1cGRhdGVzLgorCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXBdKToKKworICAgICAg
ICBUaGlzIGlzIGNvbnN1bHRlZCB3aGVuIHdlJ3JlIGFjdHVhbGx5IGFib3V0IHRvIHNob3cgdGhl
IGNhbGxvdXQgYmFyIGFjdGlvbiBmb3IgIkltYWdlIE1hcmt1cCIgKGltcG9ydGFudGx5LAorICAg
ICAgICBhZnRlciBjYWxsb3V0IGJhciBwcmVzZW50YXRpb24gZGVmZXJyYWwpLCBhbmQgZGVwZW5k
cyBvbiB0aGUgc3RhdGUgb2YgYF9pbWFnZUFuYWx5c2lzTWFya3VwUmVzdWx0c2AuCisKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cDpdKToKKworICAg
ICAgICBBZGQgbG9naWMgdG8gaGFuZGxlIHRoZSBuZXcgYWN0aW9uIGJ5IGNhbGxpbmcgaW50byBX
ZWJQYWdlUHJveHkgdG8gKGJhc2ljYWxseSkgcGFzdGUgdGhlIG1vZGlmaWVkIGltYWdlIGRhdGEK
KyAgICAgICAgYWZ0ZXIgdHJhbnNjb2RpbmcgaXQgdG8gbWF0Y2ggdGhlIGltYWdlIGVsZW1lbnQn
cyBvcmlnaW5hbCBzb3VyY2UgdHlwZS4gQWZ0ZXIgIzIzNjQwNiwgdGhpcyBjb2RlcGF0aCBpcyBu
b3cKKyAgICAgICAgYXZhaWxhYmxlIG9uIGFsbCBDb2NvYSBwbGF0Zm9ybXMgKGFzIG9wcG9zZWQg
dG8gbWFjT1Mtb25seSkuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkb0FmdGVyQ29tcHV0
aW5nSW1hZ2VBbmFseXNpc1Jlc3VsdHNGb3JNYXJrdXA6XSk6CisKKyAgICAgICAgVXNlIHRoZSBu
ZXcgYHJlcXVlc3RJbWFnZUJpdG1hcGAgSVBDIG1lc3NhZ2UgdG8gZ3JhYiBhIGJpdG1hcCBmb3Ig
dGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpbWFnZSwgY2FsbCBvdXQgdG8KKyAgICAgICAgVmlzaW9u
S2l0IHRvIHBlcmZvcm0gaW1hZ2UgYW5hbHlzaXMsIGFuZCB0aGVuIGNhY2hlIHRoZSByZXN1bHRp
bmcgaW1hZ2UuIEFmdGVyIGFsbCBvZiB0aGlzIGlzIGRvbmUsIHdlIHByb2NlZWQKKyAgICAgICAg
d2l0aCBzaG93aW5nIHRoZSBjYWxsb3V0IGJhci4KKworICAgICAgICBJbiBhIGZvbGxvd3VwLCB3
ZSBzaG91bGQgZW5mb3JjZSBzb21lIChyZWFzb25hYmxlKSB1cHBlciBib3VuZCBvbiB0aGUgYW1v
dW50IG9mIHRpbWUgYnkgd2hpY2ggdGhlIGNhbGxvdXQgYmFyCisgICAgICAgIGNhbiBiZSBkZWxh
eWVkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NlbGVjdGlvbkNoYW5nZWRdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxlckFjdGlv
bnNdKToKKworICAgICAgICBSZWZhY3RvciBleGlzdGluZyBsb2dpYyBmb3Igc3VwcGx5aW5nIGFk
ZGl0aW9uYWwgY2FsbG91dCBiYXIgbWVudSBpdGVtcywgc3VjaCB0aGF0IHdlIHVwZGF0ZSBpdGVt
cyBhcyBuZWVkZWQgZm9yCisgICAgICAgIGJvdGggUXVpY2sgTm90ZSBhcyB3ZWxsIGFzIEltYWdl
IE1hcmt1cC4gTm90ZSB0aGF0IHdlIG5lZWQgdG8gcHJlc2VydmUgYW55IGV4aXN0aW5nIG1lbnUg
aXRlbXMgaW4gdGhlIHNoYXJlZAorICAgICAgICBVSU1lbnVDb250cm9sbGVyLCBzaW5jZSB0aGUg
V2ViS2l0IGNsaWVudCAoZS5nLiBNYWlsKSBtYXkgaGF2ZSBhbHJlYWR5IHN1cHBsaWVkIGN1c3Rv
bSBtZW51IGl0ZW1zLiBUaGlzCisgICAgICAgIGN1cnJlbnRseSBkb2VlcyBub3QgYWZmZWN0IFF1
aWNrIE5vdGUgc2luY2UgdGhlIG9ubHkgaW50ZXJuYWwgY2xpZW50IHRoYXQgZW5hYmxlcyBRdWlj
ayBOb3RlIGlzIFNhZmFyaSwgd2hpY2gKKyAgICAgICAgZG9lcyBub3QgYXR0ZW1wdCB0byBhZGQg
YW55IG9mIGl0cyBvd24gaXRlbXM7IGhvd2V2ZXIsICJNYXJrdXAgSW1hZ2UiIG5lZWRzIHRvIGJl
IGF2YWlsYWJsZSBpbiBNYWlsIG9uIGlPUyBhcworICAgICAgICB3ZWxsLCB3aGljaCBkb2VzIHVz
ZSBjdXN0b20gbWVudSBpdGVtcy4KKworICAgICAgICAoZmluZE1lbnVJdGVtV2l0aEFjdGlvbik6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdXBkYXRlQXBwSGlnaGxpZ2h0TWVudUl0ZW1zOl0p
OgorCisgICAgICAgIE1ha2UgdGhpcyBhZGp1c3QgdGhlIGdpdmVuIG11dGFibGUgYXJyYXkgb2Yg
VUlNZW51SXRlbXMsIHdoaWNoIGFyZSB0aGVuIGNvbWJpbmVkIHdpdGggYW55IG1hcmt1cCBtZW51
IGl0ZW1zCisgICAgICAgIHdoZW4gc2V0dGluZyBjdXN0b20gaXRlbXMgb24gdGhlIHNoYXJlZCBt
ZW51IGNvbnRyb2xsZXIuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBwcm92aWRlRGF0YUZv
ckl0ZW06XSk6CisKKyAgICAgICAgQWRqdXN0IHRoaXMgdG8gdXNlIHRoZSBuZXcgYHRyYW5zY29k
ZWAgaGVscGVyIGZ1bmN0aW9uLCBkZWNsYXJlZCBhYm92ZS4KKworICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9zZXRVcEltYWdlQW5hbHlzaXNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
dGVhckRvd25JbWFnZUFuYWx5c2lzXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0VXBB
cHBIaWdobGlnaHRNZW51c0lmTmVlZGVkXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0
SW1hZ2VCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KToKKworICAgICAgICBDb21w
dXRlIGFuZCBwb3B1bGF0ZSB0aGUgbmV3IGBzZWxlY3RlZEVkaXRhYmxlSW1hZ2VgIGVsZW1lbnQg
Y29udGV4dDsgdG8gYWNoaWV2ZSB0aGlzLCB3ZSB1c2UgYFRleHRJdGVyYXRvcmAgdG8KKyAgICAg
ICAgc2NhbiBmb3IgYW4gaW1hZ2UgZWxlbWVudCwgYW5kIGJhaWwgaW1tZWRpYXRlbHkgaWYgd2Ug
ZWl0aGVyIGZpbmQgYW55dGhpbmcgdGhhdCBpcyBub3QgYW4gaW1hZ2UsIG9yIGZpbmQgbW9yZQor
ICAgICAgICB0aGFuIG9uZSBpbWFnZS4KKwogMjAyMi0wMi0xMCAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGBXZWJQYWdlUHJveHk6OnJl
cGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoKWAgb24gaU9TCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA5YzczY2UyYjZmODBmMWMxZGY1YzQ3Zjcy
NjE0NGQ4M2I3Yjg0MTRmLi40N2VhOTg5ZTk2YzMwMDRhZmMzODhjYWE3YmFmNzBkN2IyYzZiYWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTE1MSw3ICsx
NTEsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2VPYnNlcnZlciogaW1hZ2VPYnNlcnZlcigpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2VPYnNlcnZlcjsgfQogICAgIHZvaWQgc2V0SW1hZ2VPYnNlcnZlcihJ
bWFnZU9ic2VydmVyKiBvYnNlcnZlcikgeyBtX2ltYWdlT2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQog
ICAgIFVSTCBzb3VyY2VVUkwoKSBjb25zdDsKLSAgICBTdHJpbmcgbWltZVR5cGUoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbWltZVR5cGUoKSBjb25zdDsKICAgICBsb25nIGxv
bmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3Q7CiAKICAgICBlbnVtIFRpbGVSdWxlIHsg
U3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwgU3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuaAppbmRleCA0
YjAxNWFmYzk1Y2FmMjMwODZhMWNiYjYxZTNlNTY0Zjc3ZDBiOWJiLi4xNGFiMjJiNGNjMjhlNzUx
ZGE1YTI4MzZjNzczYjdmNGUzYzkxNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmgKQEAgLTM0LDcgKzM0LDcgQEAgY29uc3QgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4mIGRlZmF1bHRTdXBw
b3J0ZWRJbWFnZVR5cGUKIEhhc2hTZXQ8U3RyaW5nPiYgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXMoKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWRk
aXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYpOwotYm9v
bCBpc1N1cHBvcnRlZEltYWdlVHlwZShjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIGJv
b2wgaXNTdXBwb3J0ZWRJbWFnZVR5cGUoY29uc3QgU3RyaW5nJik7CiBib29sIGlzR0lGSW1hZ2VU
eXBlKFN0cmluZ1ZpZXcpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaAppbmRleCAzYTIzNmEyNGNkYzg5MDQ0
M2Y0ZDkyYjVjNmRjMDg3YmZhZjVmY2JiLi5hZjc1ODhlYjQyYTExMTkyOTFkYThmMThlZDJkOGJh
YWQyMTMwNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRS
ZWNvZ25pdGlvblV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2Ev
VGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBib29sIGlzTGl2ZVRleHRBdmFpbGFibGVBbmRFbmFibGVkKCk7CiBib29sIHRleHRS
ZWNvZ25pdGlvbkVuaGFuY2VtZW50c1N5c3RlbUZlYXR1cmVFbmFibGVkKCk7CiBib29sIGltYWdl
QW5hbHlzaXNRdWV1ZVN5c3RlbUZlYXR1cmVFbmFibGVkKCk7Citib29sIGlzSW1hZ2VBbmFseXNp
c01hcmt1cFN5c3RlbUZlYXR1cmVFbmFibGVkKCk7CiAKIFdlYkNvcmU6OlRleHRSZWNvZ25pdGlv
blJlc3VsdCBtYWtlVGV4dFJlY29nbml0aW9uUmVzdWx0KENvY29hSW1hZ2VBbmFseXNpcyAqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRp
b25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25p
dGlvblV0aWxpdGllcy5tbQppbmRleCAwOWY0NTcyMjlhNDBlNzRjYjc0NmMwZWJkNjNmM2VlYThm
ZTc3MzZkLi43MWIyZTI2MjMwNjY1OTQ5ZDg1ZTQ1YjJjYmZjYmUwMmVmNmM1YTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGll
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlvblV0
aWxpdGllcy5tbQpAQCAtMTUxLDYgKzE1MSwxNSBAQCBib29sIGltYWdlQW5hbHlzaXNRdWV1ZVN5
c3RlbUZlYXR1cmVFbmFibGVkKCkKICNlbmRpZgogfQogCitib29sIGlzSW1hZ2VBbmFseXNpc01h
cmt1cFN5c3RlbUZlYXR1cmVFbmFibGVkKCkKK3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNf
RU5IQU5DRU1FTlRTKQorICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKK30KKwogI2VuZGlmCiAKIGJvb2wgaXNMaXZlVGV4dEF2YWlsYWJsZUFuZEVuYWJs
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCmluZGV4IDY3YmQ2ZjEyYTU1NDcx
ODk4NDEzNDZjZGI3NWE4NTUwNWZmNjcwMWEuLjNjMmFlNGVlYjUzYzM3ODY3YTIxMmY2ZWYwZGU1
ZWQ3YWQ2ODA4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKQEAgLTE0NSw2
ICsxNDUsNyBAQCB2b2lkIEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZW5jb2RlKElQQzo6
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGNhcmV0Q29sb3I7CiAgICAg
ZW5jb2RlciA8PCBzZWxlY3Rpb25TdGFydElzQXRQYXJhZ3JhcGhCb3VuZGFyeTsKICAgICBlbmNv
ZGVyIDw8IHNlbGVjdGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeTsKKyAgICBlbmNvZGVyIDw8
IHNlbGVjdGVkRWRpdGFibGVJbWFnZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBl
bmNvZGVyIDw8IHNlbGVjdGlvbkJvdW5kaW5nUmVjdDsKQEAgLTIyOCw2ICsyMjksOCBAQCBib29s
IEVkaXRvclN0YXRlOjpQb3N0TGF5b3V0RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgUG9zdExheW91dERhdGEmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5zZWxlY3Rpb25FbmRJc0F0UGFyYWdyYXBoQm91bmRhcnkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2VsZWN0
ZWRFZGl0YWJsZUltYWdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNlbGVjdGlvbkJvdW5k
aW5nUmVjdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0ZS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvRWRpdG9yU3RhdGUuaAppbmRleCBkMjdiOTU5MmExNDg0
MWRlMGE0MTAxNGY2ZDA1ZDdlNjU1NTVkMjQ3Li4xMzFmOWU4MTIwN2I5MThlM2EyYTJlNTNmOGU4
NjNjNmU4NGM2YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0b3JTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRvclN0YXRlLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJU
eXBlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Vs
ZW1lbnRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV3JpdGluZ0RpcmVj
dGlvbi5oPgpAQCAtMTI0LDYgKzEyNSw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAg
IGJvb2wgYXRTdGFydE9mU2VudGVuY2UgeyBmYWxzZSB9OwogICAgICAgICBib29sIHNlbGVjdGlv
blN0YXJ0SXNBdFBhcmFncmFwaEJvdW5kYXJ5IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBzZWxl
Y3Rpb25FbmRJc0F0UGFyYWdyYXBoQm91bmRhcnkgeyBmYWxzZSB9OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0PiBzZWxlY3RlZEVkaXRhYmxlSW1hZ2U7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFdlYkNvcmU6OkludFJlY3Qgc2VsZWN0
aW9uQm91bmRpbmdSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbQppbmRleCBiYWY1YjBjOTlkMDFmNmM4MWE3NTFlZjhhMDhlYzZkYmRhNTQ5
M2ZkLi43NGU3OGVkODg2MzRlODhkY2E4YTdkZTExNjIwMzlhMTIwOTFmZmI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpAQCAtMTUyOCw5
ICsxNTI4LDcgQEAgLSAodm9pZClkaWRNb3ZlVG9XaW5kb3cKICAgICBfcGFnZS0+YWN0aXZpdHlT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjphbGxGbGFncygpKTsKICAgICBf
cGFnZS0+d2ViVmlld0RpZE1vdmVUb1dpbmRvdygpOwogCi0jaWYgRU5BQkxFKEFQUF9ISUdITElH
SFRTKQotICAgIFtfY29udGVudFZpZXcgc2V0VXBBcHBIaWdobGlnaHRNZW51c0lmTmVlZGVkXTsK
LSNlbmRpZgorICAgIFtfY29udGVudFZpZXcgc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJB
Y3Rpb25zXTsKIH0KIAogLSAodm9pZClfc2V0T3BhcXVlSW50ZXJuYWw6KEJPT0wpb3BhcXVlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5NDlkODlhOGM0ODhk
NTQ0OWIzMWU3NGJjMWY0MWYwMjZmNzkwYmJkLi45ZWM1ZWZkMjRmMmM5ODcwMzM2YjUyNjNmMjA2
NDVhYTNmYzQ3ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTg3OTgsNiArODc5OCwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRJbWFnZUFuYWx5
c2lzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9B
TkFMWVNJUykKIAordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RJbWFnZUJpdG1hcChjb25zdCBF
bGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9u
KQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9u
KHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEltYWdlQml0bWFwKGVsZW1lbnRDb250ZXh0
KSwgV1RGTW92ZShjb21wbGV0aW9uKSk7Cit9CisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eSYgV2ViUGFnZVBy
b3h5OjptZWRpYUtleVN5c3RlbVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIzZGFkYzBkOTJhNmUxMDhiNjQxODUx
OTkwNjE0YTIxNTliZDU1OTkuLmU0NGQxODkzN2YxYjJjYjEzNDVhMGY1OTQ2N2IxZTMyYWU3ODkx
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDQ0LDYgKzIw
NDQsOCBAQCBwdWJsaWM6CiAgICAgV0tRdWlja0xvb2tQcmV2aWV3Q29udHJvbGxlciAqcXVpY2tM
b29rUHJldmlld0NvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3F1aWNrTG9va1ByZXZpZXdD
b250cm9sbGVyLmdldCgpOyB9CiAjZW5kaWYKIAorICAgIHZvaWQgcmVxdWVzdEltYWdlQml0bWFw
KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIGNvbnN0IFN0cmluZyYgc291cmNlTUlNRVR5
cGUpPiYmKTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIGlzUXVhcmFudGluZWRBbmRO
b3RVc2VyQXBwcm92ZWQoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCA3
ZmY3YTdmNTg4M2YzODIzYWM1MTNlNzZmYjBmZjQwNzgyZDkzNzg3Li43YzE0MzBiOWVmOWFhYjY4
ZmI1YTc1ZThjNzM3ZTI4ZDJlOWU4MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0yNDUsNiArMjQ1LDEy
IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgQ0dSZWN0IHRleHRMYXN0UmVj
dDsKIH07CiAKK3N0cnVjdCBJbWFnZUFuYWx5c2lzTWFya3VwRGF0YSB7CisgICAgV2ViQ29yZTo6
RWxlbWVudENvbnRleHQgZWxlbWVudDsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7
CisgICAgU3RyaW5nIHByZWZlcnJlZE1JTUVUeXBlOworfTsKKwogZW51bSBjbGFzcyBQcm9jZWVk
V2l0aFRleHRTZWxlY3Rpb25JbkltYWdlIDogYm9vbCB7CiAgICAgTm8sCiAgICAgWWVzCkBAIC01
MzEsNiArNTM3LDkgQEAgdXNpbmcgSW1hZ2VBbmFseXNpc1JlcXVlc3RJZGVudGlmaWVyID0gT2Jq
ZWN0SWRlbnRpZmllcjxJbWFnZUFuYWx5c2lzUmVxdWVzdElkZW4KICNlbmRpZiAvLyBVU0UoUVVJ
Q0tfTE9PSykKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdWludDMyX3Qg
X2Z1bGxzY3JlZW5WaWRlb0V4dHJhY3Rpb25SZXF1ZXN0SWRlbnRpZmllcjsKKyNpZiBFTkFCTEUo
SU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJ
bWFnZUFuYWx5c2lzTWFya3VwRGF0YT4gX2ltYWdlQW5hbHlzaXNNYXJrdXBEYXRhOworI2VuZGlm
CiB9CiAKIEBlbmQKQEAgLTc3Myw5ICs3ODIsNyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVO
VFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQog
LSAoV2ViQ29yZTo6RGF0YU93bmVyVHlwZSlfZGF0YU93bmVyRm9yUGFzdGVib2FyZDooV2ViS2l0
OjpQYXN0ZWJvYXJkQWNjZXNzSW50ZW50KWludGVudDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQotLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVkZWQ7Ci0j
ZW5kaWYKKy0gKHZvaWQpc2V0VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rpb25zOwogCiAj
aWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogLSAodm9pZClfZW5kSW1hZ2VBbmFseXNpc0dlc3R1
cmVEZWZlcnJhbDooV2ViS2l0OjpTaG91bGRQcmV2ZW50R2VzdHVyZXMpc2hvdWxkUHJldmVudEdl
c3R1cmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMTcyZDI1N2ZiODNlZjc5MjJlYjg5MDNkNGEzNjI5
ZTk0NzNiMWY4Ni4uMDAxOGY4MWJiNDVhOGVjMGJkYmNhNjAwYTkyNzk2YmI3NGMzZjQ0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCkBAIC0xMjcsNiArMTI3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dElu
ZGljYXRvcldpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0UmVjb2duaXRpb25SZXN1bHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVG91Y2hBY3Rpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVRJ
UmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVRJVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUNBTGF5
ZXJFeHRyYXMuaD4KQEAgLTM3Miw2ICszNzMsMjAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hv
dWxkUHJldmVudFRleHRTZWxlY3Rpb24geyBmYWxzZSB9OwogfTsKIAorc3RhdGljIFJldGFpblB0
cjxOU0RhdGE+IHRyYW5zY29kZShDR0ltYWdlUmVmIGltYWdlLCBDRlN0cmluZ1JlZiB0eXBlSWRl
bnRpZmllcikKK3sKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
YXV0byBkYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIGRlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0
YSgoX19icmlkZ2UgQ0ZNdXRhYmxlRGF0YVJlZilkYXRhLmdldCgpLCB0eXBlSWRlbnRpZmllciwg
MSwgbmlsKSk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0
KCksIGltYWdlLCBuaWwpOworICAgIGlmICghQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoZGVz
dGluYXRpb24uZ2V0KCkpKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIGRhdGE7
Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApAQCAtNDA3MSw2ICs0MDg2LDEwIEBAIC0gKGlkKXRhcmdldEZvckFjdGlvbjooU0VM
KWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKICAgICAgICAgcmV0dXJuIHNlbGYuc2hvdWxk
QWxsb3dBcHBIaWdobGlnaHRDcmVhdGlvbiAmJiBfcGFnZS0+YXBwSGlnaGxpZ2h0c1Zpc2liaWxp
dHkoKSA/IHNlbGYgOiBuaWw7CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoY3JlYXRlSGln
aGxpZ2h0Rm9yTmV3UXVpY2tOb3RlV2l0aFJhbmdlOikpCiAgICAgICAgIHJldHVybiBzZWxmLnNo
b3VsZEFsbG93QXBwSGlnaGxpZ2h0Q3JlYXRpb24gJiYgIV9wYWdlLT5hcHBIaWdobGlnaHRzVmlz
aWJpbGl0eSgpID8gc2VsZiA6IG5pbDsKKyNlbmRpZgorI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
U19FTkhBTkNFTUVOVFMpCisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocGVyZm9ybUltYWdl
QW5hbHlzaXNNYXJrdXA6KSkKKyAgICAgICAgcmV0dXJuIHNlbGYuY2FuUGVyZm9ybUltYWdlQW5h
bHlzaXNNYXJrdXAgPyBzZWxmIDogbmlsOwogI2VuZGlmCiAgICAgcmV0dXJuIFtfd2ViVmlldyB0
YXJnZXRGb3JBY3Rpb246YWN0aW9uIHdpdGhTZW5kZXI6c2VuZGVyXTsKIH0KQEAgLTQ1OTcsMzYg
KzQ2MTYsMTY4IEBAIC0gKHZvaWQpcmVxdWVzdFJlY3RzVG9FdmFkZUZvclNlbGVjdGlvbkNvbW1h
bmRzV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoW3NlbGYgX3Nob3VsZFN1cHByZXNzU2VsZWN0aW9uQ29tbWFuZHNdIHx8
IHNlbGYud2ViVmlldy5fZWRpdGFibGUpIHsKKyAgICBpZiAoW3NlbGYgX3Nob3VsZFN1cHByZXNz
U2VsZWN0aW9uQ29tbWFuZHNdKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbIF0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKF9mb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uLmVsZW1lbnRUeXBlICE9IFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGUgJiYg
X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUgIT0gV2ViS2l0OjpJbnB1dFR5
cGU6OlRleHRBcmVhKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEBbIF0pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIGF1dG8gcmVxdWVzdFJlY3RzVG9FdmFkZUlmTmVlZGVkID0g
W3N0YXJ0VGltZSA9IEFwcHJveGltYXRlVGltZTo6bm93KCksIHdlYWtTZWxmID0gV2Vha09iakNQ
dHI8V0tDb250ZW50Vmlldz4oc2VsZiksIGNvbXBsZXRpb24gPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgp
OworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb24oQFsg
XSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIC8vIEdpdmUgdGhlIHBh
Z2Ugc29tZSB0aW1lIHRvIHByZXNlbnQgY3VzdG9tIGVkaXRpbmcgVUkgYmVmb3JlIGF0dGVtcHRp
bmcgdG8gZGV0ZWN0IGFuZCBldmFkZSBpdC4KLSAgICBhdXRvIGRlbGF5QmVmb3JlU2hvd2luZ0Nh
bGxvdXRCYXIgPSAwLjI1X3M7Ci0gICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2hBZnRlcihk
ZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyLCBbY29tcGxldGlvbiA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlciksIHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50Vmlldz4o
c2VsZildICgpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtTZWxmKSB7CisgICAgICAgIGlm
IChbc3Ryb25nU2VsZiB3ZWJWaWV3XS5fZWRpdGFibGUpIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b24oQFsgXSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRv
IHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKLSAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5f
cGFnZSkgeworICAgICAgICBhdXRvIGZvY3VzZWRFbGVtZW50VHlwZSA9IHN0cm9uZ1NlbGYtPl9m
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmVsZW1lbnRUeXBlOworICAgICAgICBpZiAoZm9jdXNl
ZEVsZW1lbnRUeXBlICE9IFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGUgJiYgZm9j
dXNlZEVsZW1lbnRUeXBlICE9IFdlYktpdDo6SW5wdXRUeXBlOjpUZXh0QXJlYSkgewogICAgICAg
ICAgICAgY29tcGxldGlvbihAWyBdKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIHN0cm9uZ1NlbGYtPl9wYWdlLT5yZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxl
Y3Rpb24oW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoYXV0byYgcmVjdHMpIHsK
LSAgICAgICAgICAgIGNvbXBsZXRpb24oY3JlYXRlTlNBcnJheShyZWN0cykuZ2V0KCkpOworICAg
ICAgICAvLyBHaXZlIHRoZSBwYWdlIHNvbWUgdGltZSB0byBwcmVzZW50IGN1c3RvbSBlZGl0aW5n
IFVJIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGRldGVjdCBhbmQgZXZhZGUgaXQuCisgICAgICAgIGF1
dG8gZGVsYXlCZWZvcmVTaG93aW5nQ2FsbG91dEJhciA9IHN0ZDo6bWF4KDBfcywgMC4yNV9zIC0g
KEFwcHJveGltYXRlVGltZTo6bm93KCkgLSBzdGFydFRpbWUpKTsKKyAgICAgICAgV29ya1F1ZXVl
OjptYWluKCkuZGlzcGF0Y2hBZnRlcihkZWxheUJlZm9yZVNob3dpbmdDYWxsb3V0QmFyLCBbY29t
cGxldGlvbiwgd2Vha1NlbGZdICgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBzdHJvbmdT
ZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uKEBbIF0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFzdHJvbmdTZWxmLT5fcGFnZSkgewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb24oQFsgXSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdHJvbmdTZWxmLT5fcGFnZS0+cmVxdWVz
dEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0
aW9uKV0gKGF1dG8mIHJlY3RzKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbihjcmVhdGVO
U0FycmF5KHJlY3RzKS5nZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fTsKKworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgW3NlbGYg
ZG9BZnRlckNvbXB1dGluZ0ltYWdlQW5hbHlzaXNSZXN1bHRzRm9yTWFya3VwOldURk1vdmUocmVx
dWVzdFJlY3RzVG9FdmFkZUlmTmVlZGVkKV07CisjZWxzZQorICAgIHJlcXVlc3RSZWN0c1RvRXZh
ZGVJZk5lZWRlZCgpOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5I
QU5DRU1FTlRTKQorCistICh2b2lkKXVwZGF0ZUltYWdlQW5hbHlzaXNNYXJrdXBNZW51SXRlbXM6
KE5TTXV0YWJsZUFycmF5PFVJTWVudUl0ZW0gKj4gKil1cGRhdGVkSXRlbXMKK3sKKyAgICBhdXRv
IGN1cnJlbnRJdGVtID0gZmluZE1lbnVJdGVtV2l0aEFjdGlvbih1cGRhdGVkSXRlbXMsIEBzZWxl
Y3RvcihwZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cDopKTsKKyAgICBhdXRvJiBlZGl0b3JTdGF0
ZSA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpOworICAgIGlmICghV2ViS2l0Ojppc0ltYWdlQW5hbHlz
aXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpIHx8ICFzZWxmLndpbmRvdyB8fCBlZGl0b3JT
dGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSB8fCAhZWRpdG9yU3RhdGUucG9zdExheW91dERh
dGEoKS5zZWxlY3RlZEVkaXRhYmxlSW1hZ2UpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRJdGVtKQor
ICAgICAgICAgICAgW3VwZGF0ZWRJdGVtcyByZW1vdmVPYmplY3Q6Y3VycmVudEl0ZW1dOworICAg
IH0gZWxzZSBpZiAoIWN1cnJlbnRJdGVtKQorICAgICAgICBbdXBkYXRlZEl0ZW1zIGFkZE9iamVj
dDphZG9wdE5TKFtbVUlNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXRUJfVUlfU1RSSU5H
KCJNYXJrdXAgSW1hZ2UiLCAiSW1hZ2UgYW5hbHlzaXMgbWFya3VwIG1lbnUgaXRlbSIpIGFjdGlv
bjpAc2VsZWN0b3IocGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KV0pLmdldCgpXTsKK30KKwor
LSAoQk9PTCljYW5QZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cAoreworICAgIGlmICghV2ViS2l0
Ojppc0ltYWdlQW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm4gTk87CisKKyAgICBpZiAoIV9pbWFnZUFuYWx5c2lzTWFya3VwRGF0YSkKKyAgICAgICAg
cmV0dXJuIE5POworCisgICAgYXV0byBbZWxlbWVudENvbnRleHQsIGltYWdlLCBwcmVmZXJyZWRN
SU1FVHlwZV0gPSAqX2ltYWdlQW5hbHlzaXNNYXJrdXBEYXRhOworICAgIHJldHVybiAhX3BhZ2Ut
PmVkaXRvclN0YXRlKCkuaXNNaXNzaW5nUG9zdExheW91dERhdGEgJiYgZWxlbWVudENvbnRleHQg
PT0gX3BhZ2UtPmVkaXRvclN0YXRlKCkucG9zdExheW91dERhdGEoKS5zZWxlY3RlZEVkaXRhYmxl
SW1hZ2U7Cit9CisKKy0gKHZvaWQpcGVyZm9ybUltYWdlQW5hbHlzaXNNYXJrdXA6KGlkKXNlbmRl
cgoreworICAgIGlmICghc2VsZi5jYW5QZXJmb3JtSW1hZ2VBbmFseXNpc01hcmt1cCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBbZWxlbWVudENvbnRleHQsIGltYWdlLCBwcmVmZXJyZWRN
SU1FVHlwZV0gPSAqX2ltYWdlQW5hbHlzaXNNYXJrdXBEYXRhOworICAgIGF1dG8gdGFyZ2V0VHlw
ZSA9IFJldGFpblB0ciB7IFVUVHlwZVRJRkYuaWRlbnRpZmllciB9OworICAgIGlmICghcHJlZmVy
cmVkTUlNRVR5cGUuaXNFbXB0eSgpKSB7CisgICAgICAgIE5TU3RyaW5nICpwcmVmZXJyZWRUeXBl
SWRlbnRpZmllciA9IFtVVFR5cGUgdHlwZVdpdGhNSU1FVHlwZTpwcmVmZXJyZWRNSU1FVHlwZSBj
b25mb3JtaW5nVG9UeXBlOlVUVHlwZUltYWdlXS5pZGVudGlmaWVyOworICAgICAgICBpZiAoV2Vi
Q29yZTo6aXNTdXBwb3J0ZWRJbWFnZVR5cGUocHJlZmVycmVkVHlwZUlkZW50aWZpZXIpKQorICAg
ICAgICAgICAgdGFyZ2V0VHlwZSA9IHByZWZlcnJlZFR5cGVJZGVudGlmaWVyOworICAgIH0KKwor
ICAgIGlmIChhdXRvIGRhdGEgPSBXZWJLaXQ6OnRyYW5zY29kZShpbWFnZS5nZXQoKSwgKF9fYnJp
ZGdlIENGU3RyaW5nUmVmKXRhcmdldFR5cGUuZ2V0KCkpOyBbZGF0YSBsZW5ndGhdKQorICAgICAg
ICBfcGFnZS0+cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh7IFN0cmluZyB7IHRh
cmdldFR5cGUuZ2V0KCkgfSB9LCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihbZGF0YSBi
eXRlc10pLCBbZGF0YSBsZW5ndGhdIH0pOworfQorCistICh2b2lkKWRvQWZ0ZXJDb21wdXRpbmdJ
bWFnZUFuYWx5c2lzUmVzdWx0c0Zvck1hcmt1cDooQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KWNvbXBsZXRpb24KK3sKKyAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNNaXNzaW5nUG9z
dExheW91dERhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbigpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byBlbGVtZW50VG9BbmFseXplID0gX3BhZ2UtPmVkaXRvclN0YXRlKCku
cG9zdExheW91dERhdGEoKS5zZWxlY3RlZEVkaXRhYmxlSW1hZ2U7CisgICAgaWYgKF9pbWFnZUFu
YWx5c2lzTWFya3VwRGF0YSAmJiBfaW1hZ2VBbmFseXNpc01hcmt1cERhdGEtPmVsZW1lbnQgPT0g
ZWxlbWVudFRvQW5hbHl6ZSkgeworICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBfaW1hZ2VBbmFseXNpc01hcmt1cERhdGEgPSBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoIWVsZW1lbnRUb0FuYWx5emUpIHsKKyAgICAgICAgY29tcGxldGlvbigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3BhZ2UtPnJlcXVlc3RJbWFnZUJpdG1hcCgq
ZWxlbWVudFRvQW5hbHl6ZSwgW2NvbnRleHQgPSAqZWxlbWVudFRvQW5hbHl6ZSwgY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbiksIHdlYWtTZWxmID0gV2Vha09iakNQdHI8V0tDb250ZW50
Vmlldz4oc2VsZildKGF1dG8mIGltYWdlRGF0YSwgYXV0byYgc291cmNlTUlNRVR5cGUpIG11dGFi
bGUgeworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAg
aWYgKCFzdHJvbmdTZWxmKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGltYWdlQml0bWFwID0gV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZURhdGEpOworICAgICAgICBpZiAoIWltYWdl
Qml0bWFwKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNnSW1hZ2UgPSBpbWFnZUJpdG1hcC0+bWFrZUNH
SW1hZ2UoKTsKKyAgICAgICAgaWYgKCFjZ0ltYWdlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTog
Q2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBhdm9pZCB0aGlzIGV4dHJhIHRyYW5zY29kaW5nIHN0ZXAg
b25jZSBWaXNpb25LaXQgc3RhcnRzIHVzaW5nIGBtZWRpYWFuYWx5c2lzZGAgZm9yIHRoaXMuCisg
ICAgICAgIGF1dG8gdGlmZkRhdGEgPSBXZWJLaXQ6OnRyYW5zY29kZShjZ0ltYWdlLmdldCgpLCAo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5pZGVudGlmaWVyKTsKKyAgICAgICAgaWYg
KCFbdGlmZkRhdGEgbGVuZ3RoXSkgeworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmV0YWluUHRyIHRyYW5zY29kZWRJ
bWFnZSA9IFtVSUltYWdlIGltYWdlV2l0aERhdGE6dGlmZkRhdGEuZ2V0KCldOworICAgICAgICBp
ZiAoIXRyYW5zY29kZWRJbWFnZSkgeworICAgICAgICAgICAgY29tcGxldGlvbigpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgV2ViS2l0OjpyZXF1ZXN0SW1hZ2VB
bmFseXNpc01hcmt1cChbdHJhbnNjb2RlZEltYWdlIENHSW1hZ2VdLCBbc291cmNlTUlNRVR5cGUs
IGNvbnRleHQsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCB3ZWFrU2VsZl0oQ0dJ
bWFnZVJlZiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byBzdHJvbmdTZWxmID0g
d2Vha1NlbGYuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICAgIHN0cm9uZ1Nl
bGYtPl9pbWFnZUFuYWx5c2lzTWFya3VwRGF0YSA9IHsgeyBjb250ZXh0LCB7IHJlc3VsdCB9LCBz
b3VyY2VNSU1FVHlwZSB9IH07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3Ry
b25nU2VsZi0+X2ltYWdlQW5hbHlzaXNNYXJrdXBEYXRhID0gc3RkOjpudWxsb3B0OworICAgICAg
ICAgICAgY29tcGxldGlvbigpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KIAorI2VuZGlmIC8v
IEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisKIC0gKHZvaWQpc2VsZWN0UG9z
aXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIF9hdXRvY29ycmVjdGlvbkNvbnRleHROZWVk
c1VwZGF0ZSA9IFlFUzsKQEAgLTczMTMsMTAgKzc0NjQsOCBAQCAtICh2b2lkKV91cGRhdGVTZWxl
Y3Rpb25Bc3Npc3RhbnRTdXBwcmVzc2lvblN0YXRlCiAtICh2b2lkKV9zZWxlY3Rpb25DaGFuZ2Vk
CiB7CiAgICAgX2F1dG9jb3JyZWN0aW9uQ29udGV4dE5lZWRzVXBkYXRlID0gWUVTOwotI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKLSAgICBbc2VsZiBzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZO
ZWVkZWRdOwotI2VuZGlmCiAKKyAgICBbc2VsZiBzZXRVcEFkZGl0aW9uYWxNZW51Q29udHJvbGxl
ckFjdGlvbnNdOwogICAgIFtzZWxmIF91cGRhdGVTZWxlY3Rpb25Bc3Npc3RhbnRTdXBwcmVzc2lv
blN0YXRlXTsKIAogICAgIF9jYWNoZWRTZWxlY3RlZFRleHRSYW5nZSA9IG5pbDsKQEAgLTk2MDIs
MjEgKzk3NTEsNTEgQEAgLSAodm9pZClfbG9va3VwR2VzdHVyZVJlY29nbml6ZWQ6KFVJR2VzdHVy
ZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogfQogI2VuZGlmCiAKKy0gKHZvaWQpc2V0
VXBBZGRpdGlvbmFsTWVudUNvbnRyb2xsZXJBY3Rpb25zCit7CisgICAgYXV0byB1cGRhdGVkSXRl
bXMgPSBhZG9wdE5TKFVJTWVudUNvbnRyb2xsZXIuc2hhcmVkTWVudUNvbnRyb2xsZXIubWVudUl0
ZW1zLm11dGFibGVDb3B5ID86IFtOU011dGFibGVBcnJheTxVSU1lbnVJdGVtICo+IG5ld10pOwor
I2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgW3NlbGYgdXBkYXRl
SW1hZ2VBbmFseXNpc01hcmt1cE1lbnVJdGVtczp1cGRhdGVkSXRlbXMuZ2V0KCldOworI2VuZGlm
CisjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQorICAgIFtzZWxmIHVwZGF0ZUFwcEhpZ2hsaWdo
dE1lbnVJdGVtczp1cGRhdGVkSXRlbXMuZ2V0KCldOworI2VuZGlmCisgICAgVUlNZW51Q29udHJv
bGxlci5zaGFyZWRNZW51Q29udHJvbGxlci5tZW51SXRlbXMgPSB1cGRhdGVkSXRlbXMuZ2V0KCk7
Cit9CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKSB8fCBFTkFCTEUo
QVBQX0hJR0hMSUdIVFMpCisKK3N0YXRpYyBVSU1lbnVJdGVtICpmaW5kTWVudUl0ZW1XaXRoQWN0
aW9uKE5TQXJyYXk8VUlNZW51SXRlbSAqPiAqaXRlbXMsIFNFTCBhY3Rpb24pCit7CisgICAgZm9y
IChVSU1lbnVJdGVtICppdGVtIGluIGl0ZW1zKSB7CisgICAgICAgIGlmIChpdGVtLmFjdGlvbiA9
PSBhY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CisgICAgcmV0dXJuIG5p
bDsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpIHx8
IEVOQUJMRShBUFBfSElHSExJR0hUUykKKwogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAot
LSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVkZWQKKy0gKHZvaWQpdXBkYXRlQXBw
SGlnaGxpZ2h0TWVudUl0ZW1zOihOU011dGFibGVBcnJheTxVSU1lbnVJdGVtICo+ICopdXBkYXRl
ZEl0ZW1zCiB7Ci0gICAgaWYgKCFfcGFnZS0+cHJlZmVyZW5jZXMoKS5hcHBIaWdobGlnaHRzRW5h
YmxlZCgpIHx8ICFzZWxmLndpbmRvdyB8fCAhX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0aW9u
SXNSYW5nZSkKKyAgICBhdXRvIGN1cnJlbnRRdWlja05vdGVJdGVtID0gZmluZE1lbnVJdGVtV2l0
aEFjdGlvbih1cGRhdGVkSXRlbXMsIEBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50
UXVpY2tOb3RlV2l0aFJhbmdlOikpOworICAgIGF1dG8gbmV3UXVpY2tOb3RlSXRlbSA9IGZpbmRN
ZW51SXRlbVdpdGhBY3Rpb24odXBkYXRlZEl0ZW1zLCBAc2VsZWN0b3IoY3JlYXRlSGlnaGxpZ2h0
Rm9yTmV3UXVpY2tOb3RlV2l0aFJhbmdlOikpOworCisgICAgaWYgKCFfcGFnZS0+cHJlZmVyZW5j
ZXMoKS5hcHBIaWdobGlnaHRzRW5hYmxlZCgpIHx8ICFzZWxmLndpbmRvdyB8fCAhX3BhZ2UtPmVk
aXRvclN0YXRlKCkuc2VsZWN0aW9uSXNSYW5nZSkgeworICAgICAgICBpZiAoY3VycmVudFF1aWNr
Tm90ZUl0ZW0pCisgICAgICAgICAgICBbdXBkYXRlZEl0ZW1zIHJlbW92ZU9iamVjdDpjdXJyZW50
UXVpY2tOb3RlSXRlbV07CisgICAgICAgIGlmIChuZXdRdWlja05vdGVJdGVtKQorICAgICAgICAg
ICAgW3VwZGF0ZWRJdGVtcyByZW1vdmVPYmplY3Q6bmV3UXVpY2tOb3RlSXRlbV07CiAgICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBmb3IgKFVJTWVudUl0ZW0gKm1lbnVJdGVtIGluIFtbVUlNZW51
Q29udHJvbGxlciBzaGFyZWRNZW51Q29udHJvbGxlcl0gbWVudUl0ZW1zXSkgewotICAgICAgICBp
ZiAoW21lbnVJdGVtIGFjdGlvbl0gPT0gQHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvckN1cnJl
bnRRdWlja05vdGVXaXRoUmFuZ2U6KSB8fCBbbWVudUl0ZW0gYWN0aW9uXSA9PSBAc2VsZWN0b3Io
Y3JlYXRlSGlnaGxpZ2h0Rm9yTmV3UXVpY2tOb3RlV2l0aFJhbmdlOikpCi0gICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAotICAgIGF1dG8gYWRkSGlnaGxpZ2h0Q3VycmVudFF1aWNrTm90
ZUl0ZW0gPSBhZG9wdE5TKFtbVUlNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRUb0N1cnJlbnRRdWlja05vdGUoKSBhY3Rp
b246QHNlbGVjdG9yKGNyZWF0ZUhpZ2hsaWdodEZvckN1cnJlbnRRdWlja05vdGVXaXRoUmFuZ2U6
KV0pOwotICAgIGF1dG8gYWRkSGlnaGxpZ2h0TmV3UXVpY2tOb3RlSXRlbSA9IGFkb3B0TlMoW1tV
SU1lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRh
Z0FkZEhpZ2hsaWdodFRvTmV3UXVpY2tOb3RlKCkgYWN0aW9uOkBzZWxlY3RvcihjcmVhdGVIaWdo
bGlnaHRGb3JOZXdRdWlja05vdGVXaXRoUmFuZ2U6KV0pOwotICAgIFtbVUlNZW51Q29udHJvbGxl
ciBzaGFyZWRNZW51Q29udHJvbGxlcl0gc2V0TWVudUl0ZW1zOkBbIGFkZEhpZ2hsaWdodEN1cnJl
bnRRdWlja05vdGVJdGVtLmdldCgpLCBhZGRIaWdobGlnaHROZXdRdWlja05vdGVJdGVtLmdldCgp
IF1dOworCisgICAgaWYgKCFjdXJyZW50UXVpY2tOb3RlSXRlbSkKKyAgICAgICAgW3VwZGF0ZWRJ
dGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW1VJTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6
V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQWRkSGlnaGxpZ2h0VG9DdXJyZW50UXVpY2tOb3Rl
KCkgYWN0aW9uOkBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JDdXJyZW50UXVpY2tOb3RlV2l0
aFJhbmdlOildKS5nZXQoKV07CisKKyAgICBpZiAoIW5ld1F1aWNrTm90ZUl0ZW0pCisgICAgICAg
IFt1cGRhdGVkSXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tVSU1lbnVJdGVtIGFsbG9jXSBpbml0
V2l0aFRpdGxlOldlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3UXVp
Y2tOb3RlKCkgYWN0aW9uOkBzZWxlY3RvcihjcmVhdGVIaWdobGlnaHRGb3JOZXdRdWlja05vdGVX
aXRoUmFuZ2U6KV0pLmdldCgpXTsKIH0KIAogLSAodm9pZCljcmVhdGVIaWdobGlnaHRGb3JDdXJy
ZW50UXVpY2tOb3RlV2l0aFJhbmdlOihpZClzZW5kZXIKQEAgLTEwMzE1LDE0ICsxMDQ5NCw3IEBA
IC0gKGlkIDxRTFByZXZpZXdJdGVtPilwcmV2aWV3Q29udHJvbGxlcjooUUxQcmV2aWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIgcHJldmllCiAtIChOU0RhdGEgKilwcm92aWRlRGF0YUZvckl0ZW06
KFFMSXRlbSAqKWl0ZW0KIHsKICAgICBBU1NFUlQoX3Zpc3VhbFNlYXJjaFByZXZpZXdJbWFnZSk7
Ci0KLSAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoTlVMTCwgMCkp
OwotICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0
ZVdpdGhEYXRhKGRhdGEuZ2V0KCksIChfX2JyaWRnZSBDRlN0cmluZ1JlZilVVFR5cGVUSUZGLmlk
ZW50aWZpZXIsIDEsIE5VTEwpKTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0
aW5hdGlvbi5nZXQoKSwgW192aXN1YWxTZWFyY2hQcmV2aWV3SW1hZ2UgQ0dJbWFnZV0sIG5pbCk7
Ci0gICAgaWYgKCFDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSkp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gZGF0YS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dHJhbnNjb2RlKFtfdmlzdWFsU2VhcmNoUHJldmll
d0ltYWdlIENHSW1hZ2VdLCAoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpVVRUeXBlVElGRi5pZGVudGlm
aWVyKS5hdXRvcmVsZWFzZSgpOwogfQogCiAjcHJhZ21hIG1hcmsgLSBXS0FjdGlvblNoZWV0QXNz
aXN0YW50RGVsZWdhdGUKQEAgLTEwMzg1LDYgKzEwNTU3LDkgQEAgLSAodm9pZClfc2V0VXBJbWFn
ZUFuYWx5c2lzCiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpICYmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
U19GT1JfTUFDSElORV9SRUFEQUJMRV9DT0RFUykKICAgICBfY29udGV4dE1lbnVGb3JNYWNoaW5l
UmVhZGFibGVDb2RlLmNsZWFyKCk7CiAjZW5kaWYgLy8gVVNFKFVJQ09OVEVYVE1FTlUpICYmIEVO
QUJMRShJTUFHRV9BTkFMWVNJU19GT1JfTUFDSElORV9SRUFEQUJMRV9DT0RFUykKKyNpZiBFTkFC
TEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIF9pbWFnZUFuYWx5c2lzTWFya3Vw
RGF0YSA9IHN0ZDo6bnVsbG9wdDsKKyNlbmRpZgogfQogCiAtICh2b2lkKV90ZWFyRG93bkltYWdl
QW5hbHlzaXMKQEAgLTEwNDEwLDYgKzEwNTg1LDkgQEAgLSAodm9pZClfdGVhckRvd25JbWFnZUFu
YWx5c2lzCiAgICAgX2NvbnRleHRNZW51Rm9yTWFjaGluZVJlYWRhYmxlQ29kZS5jbGVhcigpOwog
I2VuZGlmIC8vIFVTRShVSUNPTlRFWFRNRU5VKSAmJiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRk9S
X01BQ0hJTkVfUkVBREFCTEVfQ09ERVMpCiAgICAgW3NlbGYgX2ludm9rZUFsbEFjdGlvbnNUb1Bl
cmZvcm1BZnRlclBlbmRpbmdJbWFnZUFuYWx5c2lzOldlYktpdDo6UHJvY2VlZFdpdGhUZXh0U2Vs
ZWN0aW9uSW5JbWFnZTo6Tm9dOworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVO
VFMpCisgICAgX2ltYWdlQW5hbHlzaXNNYXJrdXBEYXRhID0gc3RkOjpudWxsb3B0OworI2VuZGlm
CiB9CiAKIC0gKHZvaWQpX2NhbmNlbEltYWdlQW5hbHlzaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYjc5MmMyZDY5YmRiNTY2NmExYzI0YmRh
ZGUzZmQxMDMwNzVmMTBkOC4uNzZkNmI3ZGVjNTY5MzNiMmM3YTU1OWVlZjRkOTEyYWFhZWFjNDgx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTc3NDMsNiArNzc0Myw0MiBAQCB2b2lkIFdlYlBhZ2U6OnN0YXJ0SW1hZ2VBbmFseXNpcyhjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMp
CiAKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEltYWdlQml0bWFwKGNvbnN0IEVsZW1lbnRDb250ZXh0
JiBjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VNSU1FVHlwZSk+JiYgY29tcGxldGlvbikKK3sK
KyAgICBSZWZQdHIgZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KGNvbnRleHQpOworICAgIGlm
ICghZWxlbWVudCkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8qIHJlbmRlcmVyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRl
ckltYWdlPihlbGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIXJlbmRlcmVyKSB7CisgICAg
ICAgIGNvbXBsZXRpb24oeyB9LCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBiaXRtYXAgPSBjcmVhdGVTaGFyZWFibGVCaXRtYXAoKnJlbmRlcmVyKTsKKyAgICBpZiAo
IWJpdG1hcCkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgeyB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKKyAgICBiaXRt
YXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOworICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbih7IH0sIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBTdHJpbmcgbWltZVR5cGU7CisgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gcmVuZGVyZXIt
PmNhY2hlZEltYWdlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2Ut
PmltYWdlKCkpCisgICAgICAgICAgICBtaW1lVHlwZSA9IGltYWdlLT5taW1lVHlwZSgpOworICAg
IH0KKyAgICBBU1NFUlQoIW1pbWVUeXBlLmlzRW1wdHkoKSk7CisgICAgY29tcGxldGlvbihoYW5k
bGUsIG1pbWVUeXBlKTsKK30KKwogI2lmIEVOQUJMRShNRURJQV9DT05UUk9MU19DT05URVhUX01F
TlVTKSAmJiBVU0UoVUlDT05URVhUTUVOVSkKIHZvaWQgV2ViUGFnZTo6c2hvd01lZGlhQ29udHJv
bHNDb250ZXh0TWVudShGbG9hdFJlY3QmJiB0YXJnZXRGcmFtZSwgVmVjdG9yPE1lZGlhQ29udHJv
bHNDb250ZXh0TWVudUl0ZW0+JiYgaXRlbXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVkaWFD
b250cm9sc0NvbnRleHRNZW51SXRlbTo6SUQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDc0ZWJjOTNhMGI0
NWY2MjYyMWZkNzY5ZjVkYWQyODNkMDJkZmI5OGIuLmRmYTcxNzliYzM1ZTYxMzBhODI4YTk5ZGQ3
NjFkZGJmNWZjYzljMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTE0NDAsNiArMTQ0MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0SW1hZ2VB
bmFseXNpcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyAgICB2b2lkIHJl
cXVlc3RJbWFnZUJpdG1hcChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU1JTUVUeXBlKT4mJik7CisKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJ
Q0VTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICB2b2lkIGhhbmRsZUNvbnRleHRNZW51
VHJhbnNsYXRpb24oY29uc3QgV2ViQ29yZTo6VHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8mKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggNDE4MGZlZDEyMjkzNDA2MWE2NzMwMDMxZTJjMmRlMjRkMjEy
YmUyZi4uNTgxNzIzNTBiMzE2YzlmY2RmZDk1ZDNiOTcwNzYxZDk0ZDY3MDMzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC0xMjgsNiArMTI4LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDbGVhclNl
cnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCisg
ICAgUmVxdWVzdEltYWdlQml0bWFwKHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVt
ZW50Q29udGV4dCkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2UsIFN0
cmluZyBzb3VyY2VNSU1FVHlwZSkgQXN5bmMKKwogICAgIFNldENvbnRyb2xsZWRCeUF1dG9tYXRp
b24oYm9vbCBjb250cm9sbGVkKQogCiAgICAgQ29ubmVjdEluc3BlY3RvcihTdHJpbmcgdGFyZ2V0
SWQsIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsOjpDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9u
VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggM2RkYzI2NzE3NDY5ZDZhZGJhMTI0MjExMzhhNjAxY2Y1YmMxYzdlNi4u
MmExMWRjYTAyZTgyYzA3YzBhZjQwMTk5M2U2MTBkMzVlZGRhNTU5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMyMCw2
ICszMjAsMjUgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBm
cmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnNlbGVjdGVkVGV4dExlbmd0aCA9IHNlbGVjdGVkVGV4dC5sZW5ndGgoKTsKICAgICAgICAg
ICAgIGNvbnN0IGludCBtYXhTZWxlY3RlZFRleHRMZW5ndGggPSAyMDA7CiAgICAgICAgICAgICBw
b3N0TGF5b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBzZWxlY3RlZFRleHQubGVmdChtYXhTZWxl
Y3RlZFRleHRMZW5ndGgpOworICAgICAgICAgICAgYXV0byBmaW5kU2VsZWN0ZWRFZGl0YWJsZUlt
YWdlRWxlbWVudCA9IFsmXSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1l
bnQ+IGZvdW5kSW1hZ2U7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNDb250ZW50RWRp
dGFibGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZEltYWdlOworCisgICAgICAg
ICAgICAgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IgeyAqc2VsZWN0ZWRSYW5nZSwgeyB9
IH07ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGZvdW5kSW1hZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5k
SW1hZ2UgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZm91bmRJbWFnZSA9IGR5bmFtaWNE
b3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihpdGVyYXRvci5ub2RlKCkpOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWZvdW5kSW1hZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kSW1hZ2U7Cisg
ICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUVsZW1lbnQgPSBmaW5k
U2VsZWN0ZWRFZGl0YWJsZUltYWdlRWxlbWVudCgpKQorICAgICAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLnNlbGVjdGVkRWRpdGFibGVJbWFnZSA9IGNvbnRleHRGb3JFbGVtZW50KCppbWFnZUVs
ZW1lbnQpOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlzYWxsb3cg
cmVwbGFjZSB3aGVuIHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBDSiBjaGFyYWN0ZXJzLgogICAg
ICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVk
aXRhYmxlICYmICFyZXN1bHQuaXNJblBhc3N3b3JkRmllbGQgJiYgIXNlbGVjdGVkVGV4dC5pc0Fs
bFNwZWNpYWxDaGFyYWN0ZXJzPGlzSFRNTFNwYWNlPigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>