<?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>226267</bug_id>
          
          <creation_ts>2021-05-26 07:52:35 -0700</creation_ts>
          <short_desc>Refactor some data detector code in WebCore::Frame</short_desc>
          <delta_ts>2021-05-27 13:26:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>226227</dependson>
          <blocked>226274</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763898</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-26 07:52:35 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763926</commentid>
    <comment_count>1</comment_count>
      <attachid>429763</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-26 08:33:47 -0700</bug_when>
    <thetext>Created attachment 429763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764416</commentid>
    <comment_count>2</comment_count>
      <attachid>429763</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2021-05-27 11:06:40 -0700</bug_when>
    <thetext>Comment on attachment 429763
Patch

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

&gt; Source/WebCore/editing/cocoa/DataDetection.h:44
&gt; +class HTMLElement;

Nit: T &lt; i

&gt; Source/WebCore/editing/cocoa/DataDetection.h:49
&gt; +#if ENABLE(IMAGE_EXTRACTION)
&gt; +struct ImageExtractionDataDetectorInfo;
&gt; +#endif

Nit: I think it&apos;s preferable to remove the `#if` here since the forward declaration is harmless even when `ENABLE(IMAGE_EXTRACTION)` is false.

&gt; Source/WebCore/page/Frame.h:104
&gt; +#if ENABLE(DATA_DETECTION)
&gt; +class DataDetectionResultsStorage;
&gt; +#endif

Nit: ditto

&gt; Source/WebCore/page/cocoa/DataDetectionResultsStorage.h:43
&gt; +    DataDetectionResultsStorage() = default;
&gt; +    ~DataDetectionResultsStorage() = default;

Nit: I think the compiler will generate a default constructor and destructor without you having to declare them.

Note that you also get a default copy constructor. Do you want to `WTF_MAKE_NONCOPYABLE` this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764419</commentid>
    <comment_count>3</comment_count>
      <attachid>429763</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-05-27 11:14:42 -0700</bug_when>
    <thetext>Comment on attachment 429763
Patch

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

r=me as well :)

&gt; Source/WebCore/page/Frame.cpp:112
&gt; +#include &quot;DataDetectionResultsStorage.h&quot;

I&apos;d remove the `#if` here since everything in the file has the same `#if`.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:273
&gt; +#include &lt;WebCore/DataDetectionResultsStorage.h&gt;

ditto

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:156
&gt; +#if ENABLE(DATA_DETECTION)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764424</commentid>
    <comment_count>4</comment_count>
      <attachid>429763</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-27 11:21:56 -0700</bug_when>
    <thetext>Comment on attachment 429763
Patch

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

&gt;&gt; Source/WebCore/editing/cocoa/DataDetection.h:44
&gt;&gt; +class HTMLElement;
&gt; 
&gt; Nit: T &lt; i

Fixed!

&gt;&gt; Source/WebCore/editing/cocoa/DataDetection.h:49
&gt;&gt; +#endif
&gt; 
&gt; Nit: I think it&apos;s preferable to remove the `#if` here since the forward declaration is harmless even when `ENABLE(IMAGE_EXTRACTION)` is false.

Sounds good! Removed the guard.

&gt;&gt; Source/WebCore/page/Frame.cpp:112
&gt;&gt; +#include &quot;DataDetectionResultsStorage.h&quot;
&gt; 
&gt; I&apos;d remove the `#if` here since everything in the file has the same `#if`.

👍🏻

&gt;&gt; Source/WebCore/page/Frame.h:104
&gt;&gt; +#endif
&gt; 
&gt; Nit: ditto

Fixed!

&gt;&gt; Source/WebCore/page/cocoa/DataDetectionResultsStorage.h:43
&gt;&gt; +    ~DataDetectionResultsStorage() = default;
&gt; 
&gt; Nit: I think the compiler will generate a default constructor and destructor without you having to declare them.
&gt; 
&gt; Note that you also get a default copy constructor. Do you want to `WTF_MAKE_NONCOPYABLE` this?

Good catch! Removed the ctor/dtor definitions here, and added `WTF_MAKE_NONCOPYABLE(DataDetectionResultsStorage)` above.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:273
&gt;&gt; +#include &lt;WebCore/DataDetectionResultsStorage.h&gt;
&gt; 
&gt; ditto

I&apos;m not actually sure this will work, since DataDetectionResultsStorage.h (which is in a cocoa directory in WebCore) would need to be added to the Headers.cmake list to be exported. I&apos;ll see what the bots think!

&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:156
&gt;&gt; +#if ENABLE(DATA_DETECTION)
&gt; 
&gt; ditto

Sounds good! Removed the #if (this is Cocoa-specific code so this should be safe to import).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764434</commentid>
    <comment_count>5</comment_count>
      <attachid>429906</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-27 11:43:16 -0700</bug_when>
    <thetext>Created attachment 429906
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764453</commentid>
    <comment_count>6</comment_count>
      <attachid>429911</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-05-27 12:26:40 -0700</bug_when>
    <thetext>Created attachment 429911
Fix GTK/WPE build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764472</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-27 13:25:10 -0700</bug_when>
    <thetext>Committed r278175 (238218@main): &lt;https://commits.webkit.org/238218@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429911.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764474</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-27 13:26:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78584057&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429763</attachid>
            <date>2021-05-26 08:33:47 -0700</date>
            <delta_ts>2021-05-27 11:43:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226267-20210526083346.patch</filename>
            <type>text/plain</type>
            <size>26868</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQzOThmYTBiNTRlNDRj
MDA1MWE4ZThmOTBlZjdmMTUzNDAzMzUxZC4uYzJmNGZlYWM2Zjg1YjkxMDE5ZTM5MzFkMjVhMjE1
ZjkwOWNmMmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA1LTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHNv
bWUgZGF0YSBkZXRlY3RvciBjb2RlIGluIFdlYkNvcmU6OkZyYW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBwcmVwYXJhdGlvbiBmb3Igc3VwcG9y
dGluZyBkYXRhIGRldGVjdGlvbiBpbiBpbWFnZSBvdmVybGF5cywgdGhpcyBwYXRjaCByZWZhY3Rv
cnMgc29tZSBleGlzdGluZyBkYXRhIGRldGVjdG9yCisgICAgICAgIGxvZ2ljIGluc2lkZSAoYW5k
IGFkamFjZW50IHRvKSBGcmFtZS4gU2VlIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6Y2Fu
UHJlc2VudERhdGFEZXRlY3RvcnNVSUZvckVsZW1lbnQpOgorCisgICAgICAgIFVzZSBEYXRhRGV0
ZWN0aW9uUmVzdWx0c1N0b3JhZ2UgaW5zdGVhZCBvZiBncmFiYmluZyB0aGUgYXJyYXkgb2Ygc2Nh
bm5lciByZXN1bHRzIGRpcmVjdGx5IGZyb20gRnJhbWUuCisKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFEZXRlY3Rpb246OmNyZWF0ZUVsZW1lbnRGb3JJbWFnZU92ZXJsYXkpOgorCisgICAgICAgIEFk
ZCBhIGhlbHBlciBtZXRob2QgdG8gY3JlYXRlIGEgZGF0YSBkZXRlY3RvciBlbGVtZW50IGZvciBp
bWFnZSBvdmVybGF5czsgdGhpcyBncmFicyBhIHNjYW5uZXIgcmVzdWx0IGZyb20gdGhlCisgICAg
ICAgIGdpdmVuIEltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm8sIGFkZHMgaXQgdG8gdGhl
IGVsZW1lbnQncyBkb2N1bWVudCdzIGZyYW1lLCBhbmQgdGhlbiBzZXRzIHRoZSBuZXdseQorICAg
ICAgICBjcmVhdGVkIGVsZW1lbnQncyAieC1hcHBsZS1kYXRhLWRldGVjdG9ycy1yZXN1bHQiIGF0
dHJpYnV0ZSB0byB0aGUgbmV3IGlkZW50aWZpZXIgdmFsdWUuIFRoZSBtYWluIHJlYXNvbiB3ZSBk
bworICAgICAgICB0aGlzIGlzIHRvIGF2b2lkIGhhdmluZyBIVE1MRWxlbWVudCBkaXJlY3RseSBo
YW5kbGUgRERTY2FubmVyUmVzdWx0IChhbmQgaW5zdGVhZCBkZWxlZ2F0ZSBvdXQgdG8gcGxhdGZv
cm0tCisgICAgICAgIHNwZWNpZmljIGhlbHBlcnMgaW4gRGF0YURldGVjdGlvbikuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
Ojp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KToKKworICAgICAgICBVc2UgdGhlIG5l
dyBoZWxwZXIgZnVuY3Rpb24gYWJvdmUuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9y
VGhpc0ZyYW1lKToKKworICAgICAgICBVc2UgRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlIGlu
c3RlYWQgb2Ygc2V0dGluZyB0aGUgYXJyYXkgb2Ygc2Nhbm5lciByZXN1bHRzIGRpcmVjdGx5IG9u
IEZyYW1lLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZGF0YURldGVjdGlvblJlc3VsdHMpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKwor
ICAgICAgICBXZSBjdXJyZW50bHkgc3RvcmUgYSBsaXN0IG9mIGRvY3VtZW50LXdpZGUgZGF0YSBk
ZXRlY3Rpb24gcmVzdWx0cyAoT2JqZWN0aXZlLUMgRERTY2FubmVyUmVzdWx0IG9iamVjdHMpCisg
ICAgICAgIGRpcmVjdGx5IG9uIEZyYW1lLiBGb3IgaW1hZ2Ugb3ZlcmxheXMsIEkgbmVlZCB0byBz
dG9yZSBhIG1hcCBvZiBpZGVudGlmaWVycyB0byBzY2FubmVyIHJlc3VsdHMgaW4gYSBzaW1pbGFy
CisgICAgICAgIGZhc2hpb24uIFJhdGhlciB0aGFuIGFkZCBtb3JlIE9iamVjdGl2ZS1DIGNvZGUg
b24gRnJhbWUsIGl0J3MgYmV0dGVyIHRvIGluc3RlYWQgbW92ZSB0aGlzIGxvZ2ljIG91dCBpbnRv
IGEKKyAgICAgICAgc2VwYXJhdGUgQysrIGNsYXNzLCBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3Jh
Z2UsIHRoYXQgd3JhcHMgYm90aCB0aGUgZG9jdW1lbnQtbGV2ZWwgYXJyYXkgb2YgRERTY2FubmVy
UmVzdWx0cywKKyAgICAgICAgYXMgd2VsbCBhcyB0aGUgbmV3IG1hcCBvZiBJbWFnZU92ZXJsYXlE
YXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllciA9PiBERFNjYW5uZXJSZXN1bHQgc3BlY2lmaWNh
bGx5IGZvciBkYXRhCisgICAgICAgIGRldGVjdG9yIHJlc3VsdHMgaW5zaWRlIGltYWdlIG92ZXJs
YXlzLgorCisgICAgICAgICogcGFnZS9jb2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2Uu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9u
LmguCisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2U6OnNldERv
Y3VtZW50TGV2ZWxSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb25SZXN1
bHRzU3RvcmFnZTo6ZG9jdW1lbnRMZXZlbFJlc3VsdHMgY29uc3QpOgorCisgICAgICAgIE1vdmUg
dGhlIGV4aXN0aW5nIGBtX2RhdGFEZXRlY3Rpb25SZXN1bHRzYCBOU0FycmF5IG9uIEZyYW1lIG91
dCBpbnRvIHRoZSBzdG9yYWdlIGhlbHBlciBjbGFzcywgYXMKKyAgICAgICAgYG1fZG9jdW1lbnRM
ZXZlbFJlc3VsdHNgLiBBcyBpdHMgbmFtZSBzdWdnZXN0cywgdGhpcyBhcnJheSBzdG9yZXMgZGF0
YSBkZXRlY3Rpb24gcmVzdWx0cyBnYXRoZXJlZCBieSBydW5uaW5nCisgICAgICAgIGRhdGEgZGV0
ZWN0aW9uIG92ZXIgdGhlIGVudGlyZSBkb2N1bWVudC4KKworICAgICAgICAoV2ViQ29yZTo6RGF0
YURldGVjdGlvblJlc3VsdHNTdG9yYWdlOjppbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZTo6YWRkSW1h
Z2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdCk6CisKKyAgICAgICAgQWRkIGEgbmV3IG1hcCBv
ZiBJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllciB0byBERFNjYW5uZXJS
ZXN1bHQgZm9yIHN0b3Jpbmcgc2Nhbm5lciByZXN1bHRzCisgICAgICAgIHNwZWNpZmljIHRvIGlt
YWdlIG92ZXJsYXkgY29udGVudC4gVXNpbmcgYSBzZXBhcmF0ZSBkYXRhIHN0cnVjdHVyZSBoZXJl
IHByZXZlbnRzIGltYWdlIG92ZXJsYXkgZGF0YSBkZXRlY3RvcgorICAgICAgICByZXN1bHRzIGZy
b20gZ2V0dGluZyBibG93biBhd2F5IHdoZW4gZG9jdW1lbnQtbGV2ZWwgZGF0YSBkZXRlY3Rpb24g
ZmluaXNoZXMgYW5kIHNldHMgZG9jdW1lbnQtd2lkZSByZXN1bHRzIG9uCisgICAgICAgIHRoZSBm
cmFtZS4KKworICAgICAgICAqIHBhZ2UvY29jb2EvSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJl
c3VsdElkZW50aWZpZXIuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIGFuIGlkZW50aWZpZXIgdHlw
ZSB0aGF0IHdlIGNhbiB1c2UgdG8gbG9vayB1cCBkYXRhIGRldGVjdGlvbiByZXN1bHRzIGluIGlt
YWdlIG92ZXJsYXkgZWxlbWVudHMgaW4gRnJhbWUncworICAgICAgICBkYXRhIGRldGVjdGlvbiBy
ZXN1bHQgc3RvcmFnZS4KKwogMjAyMS0wNS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFN1cHBvcnQgcGFpbnRpbmcgZGF0YSBkZXRl
Y3RvciBoaWdobGlnaHRzIGluc2lkZSBpbWFnZSBvdmVybGF5cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MTMwZGQw
YmFiZTg3MmI5ZjU0ZWZhYTIyYzJiNzhlOTU4ZjkzZjBmLi43Mjc1Y2RlY2UxNGMxZjhjYzEzZDRk
ZDJmNGQ3ZDgzMjI0NDBmMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTA1LTI1
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFj
dG9yIHNvbWUgZGF0YSBkZXRlY3RvciBjb2RlIGluIFdlYkNvcmU6OkZyYW1lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyNjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZWUgV2ViQ29yZS9DaGFuZ2VM
b2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVtb3ZlRGF0YURldGVjdGVkTGlu
a3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlY3REYXRhSW5BbGxGcmFtZXMpOgor
CisgICAgICAgIFVzZSBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UgaW5zdGVhZCBvZiBzZXR0
aW5nIHRoZSBhcnJheSBvZiBzY2FubmVyIHJlc3VsdHMgZGlyZWN0bHkgb24gRnJhbWUuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OmRhdGFEZXRlY3RvckxpbmtQb3NpdGlvbkluZm9ybWF0aW9uKToKKwogMjAyMS0wNS0y
NCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nvb3Jk
aW5hdGVkR3JhcGhpY3NdIEhhbmRsZSBudWxsIG5hdGl2ZSBzdXJmYWNlIGhhbmRsZSBmb3Igc3Vy
ZmFjZWxlc3MgcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGI5Y2NhN2Q2M2NmOTY3NjQ3MTM2ZWIyY2QzZWMyOGRl
MzM1ZmE2ZS4uZTgxMzQ2MTk2Y2VlZTE5NzA1Y2Q4ODJjY2Y0ZmNhMzE5ZmJkZjhiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NTMzNyw2ICs1MzM3LDggQEAKIAkJRjQ0MEU3N0IyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2Fy
ZEl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NDBFNzcwMjMzRDk0RDQwMDYzRjlBQiAvKiBDbGlwYm9hcmRJdGVtLmggKi87IH07CiAJCUY0NDBF
NzdEMjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlwYm9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDBFNzcyMjMzRDk0RDUwMDYzRjlBQiAvKiBDbGlw
Ym9hcmQuaCAqLzsgfTsKIAkJRjQ0MkMzNTkyM0UzQUREMjAwNDk5NTgyIC8qIENvbXBvc2l0aW9u
SGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDQyQzM1NzIzRTNBQzUxMDA0OTk1ODIgLyogQ29tcG9zaXRpb25IaWdobGlnaHQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDQ2RURERjI2
NURBRkUzMDAzMURBOEYgLyogRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQ2RURERDI2NURBRTNGMDAz
MURBOEYgLyogRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0NkVERTEyNjVEQjFFNTAwMzFEQThG
IC8qIEltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQ2RURFMDI2NURCMUU1MDAz
MURBOEYgLyogSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDRBNUY1OTFG
RUQzOEYyMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEE1RjU3MUZFRDM4MzAwMDdGNTk0
NCAvKiBMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NEVCQkQ5MURCNUQyMTQwMDI3NzMzNCAvKiBTdGF0
aWNSYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ0RUJCRDgxREI1RDIxNDAwMjc3MzM0IC8qIFN0YXRpY1JhbmdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ1Nzc1Q0UyNDE0MzdENTAwMkRG
MUEwIC8qIElubGluZVBhdGhEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDU3NzVDRDI0MTQzN0Q1MDAyREYxQTAgLyogSW5saW5lUGF0aERhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY4
MDksNiArMTY4MTEsOCBAQAogCQlGNDQwRTc3NzIzM0Q5NEQ3MDA2M0Y5QUIgLyogQ2xpcGJvYXJk
SXRlbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2xpcGJvYXJkSXRlbS5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDI4NTBCMjE0MDQxMjUwMENDREEyMiAvKiBGb250
QXR0cmlidXRlQ2hhbmdlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250QXR0cmlidXRlQ2hh
bmdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDJDMzU3MjNFM0FDNTEw
MDQ5OTU4MiAvKiBDb21wb3NpdGlvbkhpZ2hsaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wb3Np
dGlvbkhpZ2hsaWdodC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQ2RURERDI2
NURBRTNGMDAzMURBOEYgLyogRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNDQ2RURFMDI2NURCMUU1MDAzMURBOEYgLyogSW1hZ2VPdmVybGF5RGF0YURl
dGVjdGlvblJlc3VsdElkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VPdmVybGF5RGF0
YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ0QTVGNTcxRkVEMzgzMDAwN0Y1OTQ0IC8qIExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY0NEVCQkQ2MURCNUQxQjYwMDI3NzMzNCAvKiBTdGF0aWNSYW5nZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3RhdGljUmFuZ2UuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDRFQkJEODFEQjVEMjE0MDAyNzczMzQgLyogU3RhdGljUmFuZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljUmFuZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxODkzLDYgKzIxODk3LDggQEAKIAkJNUQ1OTc1QjUx
OTYzNjJCRTAwRDAwODc4IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQlGNDQ2RURERDI2NURBRTNGMDAzMURBOEYgLyogRGF0YURldGVjdGlv
blJlc3VsdHNTdG9yYWdlLmggKi8sCisJCQkJRjQ0NkVERTAyNjVEQjFFNTAwMzFEQThGIC8qIElt
YWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVyLmggKi8sCiAJCQkJNDEzRTAw
N0IxREIwRTcwNzAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2VDb2NvYS5tbSAqLywKIAkJCQlBRDVB
MEMyMjFERUNBMzdFMDA3MDcwNTQgLyogUGVyZm9ybWFuY2VMb2dnaW5nQ29jb2EubW0gKi8sCiAJ
CQkJQURGRTJCNTQxQkQ1RjQxMjAwREFCNDU3IC8qIFJlc291cmNlVXNhZ2VPdmVybGF5Q29jb2Eu
bW0gKi8sCkBAIC0zMjE5OSw2ICszMjIwNSw3IEBACiAJCQkJOTdCQzZBMzIxNTA1RjA4MTAwMUI3
NEFDIC8qIERhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkUyMzQ4MEQxOEE5
ODcxNDAwRTRCNkU4IC8qIERhdGFDdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1MjI3REYxMUMz
QzZERjEwMEY1RUQ1NCAvKiBEYXRhRGV0ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQ2
RURERjI2NURBRkUzMDAzMURBOEYgLyogRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNEIyQTkwOTI2NTAzMEJBMDA5RTcyODYgLyogRGF0YURldGVjdG9y
SGlnaGxpZ2h0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNTMzNTI1NjA1QTU2MDAyOEM1OTIg
LyogRGF0YURldGVjdG9yVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTU4QjQ1QkEyMEFEMDdE
RDAwOTkxMDI1IC8qIERhdGFMaXN0QnV0dG9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
Mjk3OCw2ICszMjk4NSw3IEBACiAJCQkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUE1OTMxMTUyNTI1RDAwMDM2RUU1MSAv
KiBJbWFnZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDgyNDM0QjI2MEMzMzA2
MDAyMjQ5N0MgLyogSW1hZ2VPdmVybGF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RjQ0NkVERTEyNjVEQjFFNTAwMzFEQThGIC8qIEltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1
bHRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4
MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MUEyRjNG
MTdEN0QzQUUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RGF0YURldGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLmgKaW5kZXggZGVmZjg2ZjdhY2I3NTc3NWNhZjBjZGE1Y2I3N2RiZjJkZmM4YTU1Yy4uN2Nk
OGY5NTM4NWViMzIwNjI1ZTNhZGViYjNiMDBkNzNjNWNkNzMyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLmgKQEAgLTM5LDkgKzM5LDE1IEBAIE9CSkNf
Q0xBU1MgTlNEaWN0aW9uYXJ5OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3Vt
ZW50OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgUXVh
bGlmaWVkTmFtZTsKIAorI2lmIEVOQUJMRShJTUFHRV9FWFRSQUNUSU9OKQorc3RydWN0IEltYWdl
RXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm87CisjZW5kaWYKKwogc3RydWN0IERldGVjdGVkSXRl
bSB7CiAgICAgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dDsKICAgICBG
bG9hdFJlY3QgYm91bmRpbmdCb3g7CkBAIC02Myw2ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGJvb2wgcmVxdWlyZXNFeHRlbmRlZENvbnRleHQoRWxlbWVudCYp
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBzdGF0aWMgUmVm
PEhUTUxFbGVtZW50PiBjcmVhdGVFbGVtZW50Rm9ySW1hZ2VPdmVybGF5KERvY3VtZW50JiwgY29u
c3QgSW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbyYpOworI2VuZGlmCisKICAgICBzdGF0
aWMgY29uc3QgU3RyaW5nJiBkYXRhRGV0ZWN0b3JVUkxQcm90b2NvbCgpOwogICAgIHN0YXRpYyBi
b29sIGlzRGF0YURldGVjdG9yVVJMKGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBib29sIGlzRGF0
YURldGVjdG9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCAyMWU3NDRjOGM5NzkzMTRi
NWIzNGIxYThkY2M5NjUyODBlOTQyNzI3Li4wZWQ4MjlkZjM2NzQyMDk0MGY4NjA5MmI2ODE1MjAx
N2EyNzYwNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0
aW9uLm1tCkBAIC0zMiwxNCArMzIsMTcgQEAKICNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24u
aCIKICNpbXBvcnQgIkNvbG9yQ29udmVyc2lvbi5oIgogI2ltcG9ydCAiQ29sb3JTZXJpYWxpemF0
aW9uLmgiCisjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCIKICNpbXBvcnQg
IkVkaXRpbmcuaCIKICNpbXBvcnQgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW1wb3J0
ICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIkhU
TUxBbmNob3JFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MRGl2RWxlbWVudC5oIgogI2ltcG9ydCAi
SFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2lt
cG9ydCAiSGl0VGVzdFJlc3VsdC5oIgorI2ltcG9ydCAiSW1hZ2VFeHRyYWN0aW9uUmVzdWx0Lmgi
CiAjaW1wb3J0ICJOb2RlTGlzdC5oIgogI2ltcG9ydCAiTm9kZVRyYXZlcnNhbC5oIgogI2ltcG9y
dCAiUXVhbGlmaWVkTmFtZS5oIgpAQCAtMTk3LDcgKzIwMCwxMiBAQCBib29sIERhdGFEZXRlY3Rp
b246OmNhblByZXNlbnREYXRhRGV0ZWN0b3JzVUlGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgYXV0byYgcmVzdWx0QXR0cmlidXRlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNfcmVzdWx0QXR0cik7CiAgICAgaWYg
KHJlc3VsdEF0dHJpYnV0ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBO
U0FycmF5ICpyZXN1bHRzID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rp
b25SZXN1bHRzKCk7CisKKyAgICBhdXRvKiBkYXRhRGV0ZWN0aW9uUmVzdWx0cyA9IGVsZW1lbnQu
ZG9jdW1lbnQoKS5mcmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0c0lmRXhpc3RzKCk7CisgICAg
aWYgKCFkYXRhRGV0ZWN0aW9uUmVzdWx0cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
TlNBcnJheSAqcmVzdWx0cyA9IGRhdGFEZXRlY3Rpb25SZXN1bHRzLT5kb2N1bWVudExldmVsUmVz
dWx0cygpOwogICAgIGlmICghcmVzdWx0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02
NzksNiArNjg3LDIwIEBAIGJvb2wgRGF0YURldGVjdGlvbjo6aXNEYXRhRGV0ZWN0b3JFbGVtZW50
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGlzPEhUTUxBbmNob3JFbGVtZW50
PihlbGVtZW50KSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnQuYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFfZGV0ZWN0b3JzQXR0ciksICJ0cnVlIik7
CiB9CiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKworUmVmPEhUTUxFbGVtZW50PiBE
YXRhRGV0ZWN0aW9uOjpjcmVhdGVFbGVtZW50Rm9ySW1hZ2VPdmVybGF5KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgSW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbyYgaW5mbykKK3sKKyAg
ICBhdXRvIGNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAg
IGlmIChhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC5mcmFtZSgpKSkgeworICAgICAg
ICBhdXRvIHJlc3VsdElkZW50aWZpZXIgPSBmcmFtZS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKS5h
ZGRJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0KGluZm8ucmVzdWx0LmdldCgpKTsKKyAg
ICAgICAgY29udGFpbmVyLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHhfYXBw
bGVfZGF0YV9kZXRlY3RvcnNfcmVzdWx0QXR0ciwgU3RyaW5nOjpudW1iZXIocmVzdWx0SWRlbnRp
Zmllci50b1VJbnQ2NCgpKSk7CisgICAgfQorICAgIHJldHVybiBjb250YWluZXI7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMDJiNTc5ODhl
NDdkYjQ5ZjA5ZjY0YWQ0Y2QzODQwNWFiMjE4YTk2NS4uOTYzZTU4YjU3ODE3MWM1Y2E4YmE4NzEy
ZTlhMmYzNDJkMDIwODE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTg4
LDYgKzg4LDEwIEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0cnkuaCIKICNlbmRpZgogCisj
aWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorI2luY2x1ZGUgIkRhdGFEZXRlY3Rpb24uaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChIVE1MRWxlbWVudCk7CkBAIC0xNDgzLDcgKzE0ODcsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1
cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJl
c3VsdAogICAgICAgICBpZiAoZGF0YURldGVjdG9yLm5vcm1hbGl6ZWRRdWFkcy5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGRhdGFEZXRlY3RvckNvbnRh
aW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgICAgIGF1dG8g
ZGF0YURldGVjdG9yQ29udGFpbmVyID0gRGF0YURldGVjdGlvbjo6Y3JlYXRlRWxlbWVudEZvcklt
YWdlT3ZlcmxheShkb2N1bWVudCgpLCBkYXRhRGV0ZWN0b3IpOwogICAgICAgICBkYXRhRGV0ZWN0
b3JDb250YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFz
c05hbWUoKSk7CiAgICAgICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZGF0YURldGVjdG9yQ29u
dGFpbmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZTkzN2Nm
ZTkxNzY2NjJlZGRjZmMzOGYyYTFjMDY2ZTA4OGM5NTRlMS4uODJkMTZkNjk1MmZkNzllZjU3NzIw
OWI2MTVhZjFmM2RmYzljMDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0xNDIsNiArMTQyLDcgQEAKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbmNs
dWRlICJEYXRhRGV0ZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9y
YWdlLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yNTc1LDkgKzI1
NzYsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUo
KQogICAgICAgICAgICAgYXV0byBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICAg
ICAgICAgIGF1dG8gdHlwZXMgPSBPcHRpb25TZXQ8RGF0YURldGVjdG9yVHlwZT4geyBtX2ZyYW1l
LnNldHRpbmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSB9OwogICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50ICYmIHR5cGVzKSB7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9u
UmVzdWx0cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoKmRvY3VtZW50KSwgdHlwZXMsIG1fY2xpZW50LT5kYXRhRGV0ZWN0
aW9uQ29udGV4dCgpKSk7CisgICAgICAgICAgICAgICAgYXV0byBkb2N1bWVudExldmVsUmVzdWx0
cyA9IHJldGFpblB0cihEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmRvY3VtZW50KSwgdHlwZXMsIG1fY2xpZW50LT5kYXRh
RGV0ZWN0aW9uQ29udGV4dCgpKSk7CisgICAgICAgICAgICAgICAgbV9mcmFtZS5kYXRhRGV0ZWN0
aW9uUmVzdWx0cygpLnNldERvY3VtZW50TGV2ZWxSZXN1bHRzKGRvY3VtZW50TGV2ZWxSZXN1bHRz
LmdldCgpKTsKICAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQotICAg
ICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9u
KG1fZnJhbWUuZGF0YURldGVjdGlvblJlc3VsdHMoKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24oZG9jdW1lbnRMZXZlbFJlc3Vs
dHMuZ2V0KCkpOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDI0ZWFlYjNm
MjVjODQzOGNiY2U3N2ZiZDcxZjc3NmI0YTRhYmJmYTcuLmM4MWU1ZTI2MTFkNzZkNWJjN2M0ZGVj
OTkxZWM3Y2I0N2I5NTNmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDgsNiArMTA4LDEw
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KIAorI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKyNpbmNsdWRl
ICJEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBGcmFtZTo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEx
MjksNiArMTEzMywxNyBAQCBib29sIEZyYW1lOjphcmVQbHVnaW5zRW5hYmxlZCgpCiAgICAgcmV0
dXJuIHNldHRpbmdzKCkuYXJlUGx1Z2luc0VuYWJsZWQoKTsKIH0KIAorI2lmIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKKworRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlJiBGcmFtZTo6ZGF0YURl
dGVjdGlvblJlc3VsdHMoKQoreworICAgIGlmICghbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cykKKyAg
ICAgICAgbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cyA9IG1ha2VVbmlxdWU8RGF0YURldGVjdGlvblJl
c3VsdHNTdG9yYWdlPigpOworICAgIHJldHVybiAqbV9kYXRhRGV0ZWN0aW9uUmVzdWx0czsKK30K
KworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA4YzQ0NzQ2ZjYxOTVjOThiNzY2
N2EzYmJmMjY0ZWYyNGYyZjdiMGI4Li4zMTNiNTYxZmY2NGE4MzI1ZTYyNzFlYmI5OGU4MjM5Yzc0
ZjllZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC05OSw2ICs5OSwxMCBAQCBjbGFzcyBXaWRnZXQ7
CiAKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIAorI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKK2Ns
YXNzIERhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIGVudW0gewogICAgIE92ZXJmbG93U2Nyb2xsTm9uZSA9IDAsCkBAIC0yMjQs
OCArMjI4LDggQEAgcHVibGljOgogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFu
Z2VkKCk7CiAgICAgCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQotICAgIHZvaWQgc2V0RGF0
YURldGVjdGlvblJlc3VsdHMoTlNBcnJheSAqcmVzdWx0cykgeyBtX2RhdGFEZXRlY3Rpb25SZXN1
bHRzID0gcmVzdWx0czsgfQotICAgIE5TQXJyYXkgKmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5nZXQoKTsgfQorICAgIERhdGFEZXRl
Y3Rpb25SZXN1bHRzU3RvcmFnZSogZGF0YURldGVjdGlvblJlc3VsdHNJZkV4aXN0cygpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvblJlc3VsdHMuZ2V0KCk7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UmIGRhdGFEZXRlY3Rpb25SZXN1bHRzKCk7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zNDgsNyArMzUyLDcgQEAg
cHJpdmF0ZToKICAgICBVbmlxdWVSZWY8U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CiAKICNp
ZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCi0gICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURl
dGVjdGlvblJlc3VsdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFEZXRlY3Rpb25SZXN1bHRz
U3RvcmFnZT4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0czsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgdm9pZCBiZXR0ZXJBcHByb3hpbWF0ZU5vZGUoY29uc3QgSW50UG9pbnQm
IHRlc3RQb2ludCwgY29uc3QgTm9kZVF1YWxpZmllciYsIE5vZGUqJiBiZXN0LCBOb2RlKiBmYWls
ZWROb2RlLCBJbnRQb2ludCYgYmVzdFBvaW50LCBJbnRSZWN0JiBiZXN0UmVjdCwgY29uc3QgSW50
UmVjdCYgdGVzdFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9E
YXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
RGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTVjOTg1NGFmOWIzY2Ew
NjNjNzE4ODZjYzI0ZTAyN2I1ZWRlYjY2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgKQEAgLTAsMCArMSw2
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERBVEFfREVURUNU
SU9OKQorCisjaW5jbHVkZSAiSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworT0JKQ19DTEFTUyBERFNjYW5uZXJSZXN1bHQ7CitPQkpDX0NMQVNTIE5TQXJyYXk7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdl
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBEYXRhRGV0ZWN0
aW9uUmVzdWx0c1N0b3JhZ2UoKSA9IGRlZmF1bHQ7CisgICAgfkRhdGFEZXRlY3Rpb25SZXN1bHRz
U3RvcmFnZSgpID0gZGVmYXVsdDsKKworICAgIHZvaWQgc2V0RG9jdW1lbnRMZXZlbFJlc3VsdHMo
TlNBcnJheSAqcmVzdWx0cykgeyBtX2RvY3VtZW50TGV2ZWxSZXN1bHRzID0gcmVzdWx0czsgfQor
ICAgIE5TQXJyYXkgKmRvY3VtZW50TGV2ZWxSZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1
bWVudExldmVsUmVzdWx0cy5nZXQoKTsgfQorCisgICAgRERTY2FubmVyUmVzdWx0ICppbWFnZU92
ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0KEltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1faW1hZ2VPdmVybGF5UmVzdWx0cy5nZXQo
aWRlbnRpZmllcikuZ2V0KCk7IH0KKyAgICBJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0
SWRlbnRpZmllciBhZGRJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0KEREU2Nhbm5lclJl
c3VsdCAqcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXV0byBuZXdJZGVudGlmaWVyID0gSW1hZ2VP
dmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgICAg
IG1faW1hZ2VPdmVybGF5UmVzdWx0cy5zZXQobmV3SWRlbnRpZmllciwgcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIG5ld0lkZW50aWZpZXI7CisgICAgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0
cjxOU0FycmF5PiBtX2RvY3VtZW50TGV2ZWxSZXN1bHRzOworICAgIEhhc2hNYXA8SW1hZ2VPdmVy
bGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIsIFJldGFpblB0cjxERFNjYW5uZXJSZXN1
bHQ+PiBtX2ltYWdlT3ZlcmxheVJlc3VsdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL0ltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHRJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL0ltYWdlT3ZlcmxheURhdGFEZXRlY3Rp
b25SZXN1bHRJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdlNzU4YzhkMWU3OWYzODhjZWVhMjNh
N2M3OGNkODAwNjk0YzI5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIuaApAQCAtMCww
ICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2VudW0gSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50
aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHRJZGVu
dGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0
SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDBhNzZlNzI5ZmUwMzdiNTFhNzM1YTZkMjc3ZTZhNjM1MTc0MWM1
YzMuLjJlMDc4ODhhNzU1NzUyMDM2MzNmOGI3ZTc4NjY4NzI4NTBmNGQwYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNzAsNiArMjcwLDcg
QEAKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbmNsdWRlICJEYXRhRGV0ZWN0aW9u
UmVzdWx0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2Uu
aD4KICNlbmRpZgogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtNDAyNCwyMSArNDAyNSwzMCBAQCB2
b2lkIFdlYlBhZ2U6OnJlbW92ZURhdGFEZXRlY3RlZExpbmtzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgRGF0YURldGVjdGlvbgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
RGF0YURldGVjdGlvbjo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3NJbkRvY3VtZW50KCpkb2N1bWVu
dCk7Ci0gICAgICAgIGZyYW1lLT5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhudWxscHRyKTsKKwor
ICAgICAgICBpZiAoYXV0byogcmVzdWx0cyA9IGZyYW1lLT5kYXRhRGV0ZWN0aW9uUmVzdWx0c0lm
RXhpc3RzKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJdCBzZWVtcyBvZGQgdGhhdCB3ZSdy
ZSBjbGVhcmluZyBvdXQgYWxsIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHMgaGVyZSwKKyAgICAgICAg
ICAgIC8vIGluc3RlYWQgb2Ygb25seSBkYXRhIGRldGVjdG9ycyB0aGF0IGNvcnJlc3BvbmQgdG8g
bGlua3MuCisgICAgICAgICAgICByZXN1bHRzLT5zZXREb2N1bWVudExldmVsUmVzdWx0cyh7IH0p
OworICAgICAgICB9CiAgICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgbV9wYWdlLT5tYWlu
RnJhbWUoKS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpIH0pOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGV0ZWN0RGF0YUluQWxsRnJhbWVzKHVpbnQ2NF90
IHR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBEYXRhRGV0ZWN0aW9uUmVzdWx0IG1haW5G
cmFtZVJlc3VsdDsKICAgICBhdXRvIGRhdGFEZXRlY3RvclR5cGVzID0gT3B0aW9uU2V0PERhdGFE
ZXRlY3RvclR5cGU+Ojpmcm9tUmF3KHR5cGVzKTsKICAgICBmb3IgKGF1dG8gZnJhbWUgPSBtYWtl
UmVmUHRyKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihm
cmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgZnJhbWUtPnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKERhdGFEZXRl
Y3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cygqZG9jdW1lbnQpLCBkYXRhRGV0ZWN0b3JUeXBlcywgbV9kYXRhRGV0ZWN0aW9uQ29udGV4dC5n
ZXQoKSkpOworICAgICAgICBhdXRvIHJlc3VsdHMgPSByZXRhaW5QdHIoRGF0YURldGVjdGlvbjo6
ZGV0ZWN0Q29udGVudEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1
bWVudCksIGRhdGFEZXRlY3RvclR5cGVzLCBtX2RhdGFEZXRlY3Rpb25Db250ZXh0LmdldCgpKSk7
CisgICAgICAgIGZyYW1lLT5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpLnNldERvY3VtZW50TGV2ZWxS
ZXN1bHRzKHJlc3VsdHMuZ2V0KCkpOworICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkp
CisgICAgICAgICAgICBtYWluRnJhbWVSZXN1bHQucmVzdWx0cyA9IFdURk1vdmUocmVzdWx0cyk7
CiAgICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgbV9wYWdlLT5tYWluRnJhbWUoKS5kYXRh
RGV0ZWN0aW9uUmVzdWx0cygpIH0pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobWFp
bkZyYW1lUmVzdWx0KSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IGZkOWZiOGI0YjAzMmRjNzI2NzMxOWZjNGZiMDg5YmIxYWYzN2M3MmUuLjIzYWI0MjAx
NGZhZjNmMzQ5MmZmOGNhNDgwMWY2ZDEwYTgyNmRiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xNTMsNiArMTUzLDEw
IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Byb21pc2VkQXR0YWNobWVudEluZm8uaD4KICNlbmRpZgog
CisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0
aW9uUmVzdWx0c1N0b3JhZ2UuaD4KKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBXZWJQYWdlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQs
IC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNo
YW5uZWwsICIlcCAtIFdlYlBhZ2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCkBAIC0y
NzQ4LDcgKzI3NTIsOCBAQCBzdGF0aWMgdm9pZCBkYXRhRGV0ZWN0b3JMaW5rUG9zaXRpb25JbmZv
cm1hdGlvbihFbGVtZW50JiBlbGVtZW50LCBJbnRlcmFjdGlvbkluZgogICAgIGluZm8uaXNEYXRh
RGV0ZWN0b3JMaW5rID0gdHJ1ZTsKICAgICBjb25zdCBpbnQgZGF0YURldGVjdGlvbkV4dGVuZGVk
Q29udGV4dExlbmd0aCA9IDM1MDsKICAgICBpbmZvLmRhdGFEZXRlY3RvcklkZW50aWZpZXIgPSBE
YXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0b3JJZGVudGlmaWVyKGVsZW1lbnQpOwotICAgIGluZm8u
ZGF0YURldGVjdG9yUmVzdWx0cyA9IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5kYXRhRGV0
ZWN0aW9uUmVzdWx0cygpOworICAgIGlmIChhdXRvKiByZXN1bHRzID0gZWxlbWVudC5kb2N1bWVu
dCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rpb25SZXN1bHRzSWZFeGlzdHMoKSkKKyAgICAgICAgaW5m
by5kYXRhRGV0ZWN0b3JSZXN1bHRzID0gcmVzdWx0cy0+ZG9jdW1lbnRMZXZlbFJlc3VsdHMoKTsK
IAogICAgIGlmICghRGF0YURldGVjdGlvbjo6cmVxdWlyZXNFeHRlbmRlZENvbnRleHQoZWxlbWVu
dCkpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429906</attachid>
            <date>2021-05-27 11:43:16 -0700</date>
            <delta_ts>2021-05-27 12:26:12 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-226267-20210527114316.patch</filename>
            <type>text/plain</type>
            <size>26713</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDUxNzg1M2YxZjY0NGY0
MjFkMjNlYjBkMTliM2Q1MjIzZTQ5MmYyNi4uY2YxNWNkMGMyNTQxNGMwNDJjZjA0NGQ0OWE1ZTkx
ZjcwZDViOTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA1LTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHNv
bWUgZGF0YSBkZXRlY3RvciBjb2RlIGluIFdlYkNvcmU6OkZyYW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmR5IEVzdGVzIGFuZCBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgSW4gcHJlcGFyYXRp
b24gZm9yIHN1cHBvcnRpbmcgZGF0YSBkZXRlY3Rpb24gaW4gaW1hZ2Ugb3ZlcmxheXMsIHRoaXMg
cGF0Y2ggcmVmYWN0b3JzIHNvbWUgZXhpc3RpbmcgZGF0YSBkZXRlY3RvcgorICAgICAgICBsb2dp
YyBpbnNpZGUgKGFuZCBhZGphY2VudCB0bykgRnJhbWUuIFNlZSBjb21tZW50cyBiZWxvdyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFE
ZXRlY3Rpb246OmNhblByZXNlbnREYXRhRGV0ZWN0b3JzVUlGb3JFbGVtZW50KToKKworICAgICAg
ICBVc2UgRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlIGluc3RlYWQgb2YgZ3JhYmJpbmcgdGhl
IGFycmF5IG9mIHNjYW5uZXIgcmVzdWx0cyBkaXJlY3RseSBmcm9tIEZyYW1lLgorCisgICAgICAg
IChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpjcmVhdGVFbGVtZW50Rm9ySW1hZ2VPdmVybGF5KToK
KworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIGNyZWF0ZSBhIGRhdGEgZGV0ZWN0b3Ig
ZWxlbWVudCBmb3IgaW1hZ2Ugb3ZlcmxheXM7IHRoaXMgZ3JhYnMgYSBzY2FubmVyIHJlc3VsdCBm
cm9tIHRoZQorICAgICAgICBnaXZlbiBJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJbmZvLCBh
ZGRzIGl0IHRvIHRoZSBlbGVtZW50J3MgZG9jdW1lbnQncyBmcmFtZSwgYW5kIHRoZW4gc2V0cyB0
aGUgbmV3bHkKKyAgICAgICAgY3JlYXRlZCBlbGVtZW50J3MgIngtYXBwbGUtZGF0YS1kZXRlY3Rv
cnMtcmVzdWx0IiBhdHRyaWJ1dGUgdG8gdGhlIG5ldyBpZGVudGlmaWVyIHZhbHVlLiBUaGUgbWFp
biByZWFzb24gd2UgZG8KKyAgICAgICAgdGhpcyBpcyB0byBhdm9pZCBoYXZpbmcgSFRNTEVsZW1l
bnQgZGlyZWN0bHkgaGFuZGxlIEREU2Nhbm5lclJlc3VsdCAoYW5kIGluc3RlYWQgZGVsZWdhdGUg
b3V0IHRvIHBsYXRmb3JtLQorICAgICAgICBzcGVjaWZpYyBoZWxwZXJzIGluIERhdGFEZXRlY3Rp
b24pLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisKKyAgICAg
ICAgVXNlIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9uIGFib3ZlLgorCisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xv
YWRDb21wbGV0ZUZvclRoaXNGcmFtZSk6CisKKyAgICAgICAgVXNlIERhdGFEZXRlY3Rpb25SZXN1
bHRzU3RvcmFnZSBpbnN0ZWFkIG9mIHNldHRpbmcgdGhlIGFycmF5IG9mIHNjYW5uZXIgcmVzdWx0
cyBkaXJlY3RseSBvbiBGcmFtZS4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OmRhdGFEZXRlY3Rpb25SZXN1bHRzKToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmg6CisKKyAgICAgICAgV2UgY3VycmVudGx5IHN0b3JlIGEgbGlzdCBvZiBkb2N1bWVu
dC13aWRlIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHMgKE9iamVjdGl2ZS1DIEREU2Nhbm5lclJlc3Vs
dCBvYmplY3RzKQorICAgICAgICBkaXJlY3RseSBvbiBGcmFtZS4gRm9yIGltYWdlIG92ZXJsYXlz
LCBJIG5lZWQgdG8gc3RvcmUgYSBtYXAgb2YgaWRlbnRpZmllcnMgdG8gc2Nhbm5lciByZXN1bHRz
IGluIGEgc2ltaWxhcgorICAgICAgICBmYXNoaW9uLiBSYXRoZXIgdGhhbiBhZGQgbW9yZSBPYmpl
Y3RpdmUtQyBjb2RlIG9uIEZyYW1lLCBpdCdzIGJldHRlciB0byBpbnN0ZWFkIG1vdmUgdGhpcyBs
b2dpYyBvdXQgaW50byBhCisgICAgICAgIHNlcGFyYXRlIEMrKyBjbGFzcywgRGF0YURldGVjdGlv
blJlc3VsdHNTdG9yYWdlLCB0aGF0IHdyYXBzIGJvdGggdGhlIGRvY3VtZW50LWxldmVsIGFycmF5
IG9mIEREU2Nhbm5lclJlc3VsdHMsCisgICAgICAgIGFzIHdlbGwgYXMgdGhlIG5ldyBtYXAgb2Yg
SW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIgPT4gRERTY2FubmVyUmVz
dWx0IHNwZWNpZmljYWxseSBmb3IgZGF0YQorICAgICAgICBkZXRlY3RvciByZXN1bHRzIGluc2lk
ZSBpbWFnZSBvdmVybGF5cy4KKworICAgICAgICAqIHBhZ2UvY29jb2EvRGF0YURldGVjdGlvblJl
c3VsdHNTdG9yYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RGF0YURldGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvblJlc3VsdHNT
dG9yYWdlOjpzZXREb2N1bWVudExldmVsUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
RGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2U6OmRvY3VtZW50TGV2ZWxSZXN1bHRzIGNvbnN0KToKKwor
ICAgICAgICBNb3ZlIHRoZSBleGlzdGluZyBgbV9kYXRhRGV0ZWN0aW9uUmVzdWx0c2AgTlNBcnJh
eSBvbiBGcmFtZSBvdXQgaW50byB0aGUgc3RvcmFnZSBoZWxwZXIgY2xhc3MsIGFzCisgICAgICAg
IGBtX2RvY3VtZW50TGV2ZWxSZXN1bHRzYC4gQXMgaXRzIG5hbWUgc3VnZ2VzdHMsIHRoaXMgYXJy
YXkgc3RvcmVzIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHMgZ2F0aGVyZWQgYnkgcnVubmluZworICAg
ICAgICBkYXRhIGRldGVjdGlvbiBvdmVyIHRoZSBlbnRpcmUgZG9jdW1lbnQuCisKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZTo6aW1hZ2VPdmVybGF5RGF0YURl
dGVjdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0
b3JhZ2U6OmFkZEltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHQpOgorCisgICAgICAgIEFk
ZCBhIG5ldyBtYXAgb2YgSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIg
dG8gRERTY2FubmVyUmVzdWx0IGZvciBzdG9yaW5nIHNjYW5uZXIgcmVzdWx0cworICAgICAgICBz
cGVjaWZpYyB0byBpbWFnZSBvdmVybGF5IGNvbnRlbnQuIFVzaW5nIGEgc2VwYXJhdGUgZGF0YSBz
dHJ1Y3R1cmUgaGVyZSBwcmV2ZW50cyBpbWFnZSBvdmVybGF5IGRhdGEgZGV0ZWN0b3IKKyAgICAg
ICAgcmVzdWx0cyBmcm9tIGdldHRpbmcgYmxvd24gYXdheSB3aGVuIGRvY3VtZW50LWxldmVsIGRh
dGEgZGV0ZWN0aW9uIGZpbmlzaGVzIGFuZCBzZXRzIGRvY3VtZW50LXdpZGUgcmVzdWx0cyBvbgor
ICAgICAgICB0aGUgZnJhbWUuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL0ltYWdlT3ZlcmxheURh
dGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVyLmg6IEFkZGVkLgorCisgICAgICAgIEFkZCBhbiBp
ZGVudGlmaWVyIHR5cGUgdGhhdCB3ZSBjYW4gdXNlIHRvIGxvb2sgdXAgZGF0YSBkZXRlY3Rpb24g
cmVzdWx0cyBpbiBpbWFnZSBvdmVybGF5IGVsZW1lbnRzIGluIEZyYW1lJ3MKKyAgICAgICAgZGF0
YSBkZXRlY3Rpb24gcmVzdWx0IHN0b3JhZ2UuCisKIDIwMjEtMDUtMjcgIEFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNDQ0MzQpIERpc3BhdGNo
IGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5nZWQgb24gdGhlIG1haW4gZnJhbWUgb25seQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA5YjQ5ODhiZWI2MmZlODIxNjZiMDA1NmQ5OTdhNWI0NmI5NDNlZGFhLi5mNTQzMmRh
MDg4Yzc1MDdkMWQ4NGExOWFkZmE4NjZlYmMwNDE1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDIxLTA1LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZmFjdG9yIHNvbWUgZGF0YSBkZXRlY3RvciBjb2RlIGluIFdlYkNvcmU6OkZy
YW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYy
NjcKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzIGFuZCBEZXZpbiBSb3Vzc28uCisK
KyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlbW92ZURhdGFEZXRlY3RlZExpbmtzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZGV0ZWN0RGF0YUluQWxsRnJhbWVzKToKKworICAgICAgICBVc2UgRGF0YURldGVjdGlvblJl
c3VsdHNTdG9yYWdlIGluc3RlYWQgb2Ygc2V0dGluZyB0aGUgYXJyYXkgb2Ygc2Nhbm5lciByZXN1
bHRzIGRpcmVjdGx5IG9uIEZyYW1lLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpkYXRhRGV0ZWN0b3JMaW5rUG9zaXRp
b25JbmZvcm1hdGlvbik6CisKIDIwMjEtMDUtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgdmFsaWRhdGlvbiB3aGVu
IHJlYWRpbmcgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXI6OndhaXRpbmdTdGF0dXMgaW4g
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkY2U2Yzc2M2ZlOGRiN2U3M2QyMDYyNGZjZDQ0
MDlhYTJhZjNiNmY2Li45OTUwOTMyMmEyYmJkYTYxOWNjMjNhOTIwNjRhNGMzOTY5Y2E1ZjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01MzM3LDYgKzUzMzcsOCBAQAogCQlGNDQwRTc3QjIzM0Q5NEQ3MDA2M0Y5QUIgLyogQ2xp
cGJvYXJkSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ0MEU3NzAyMzNEOTRENDAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCAqLzsgfTsKIAkJ
RjQ0MEU3N0QyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MEU3NzIyMzNEOTRENTAwNjNGOUFCIC8q
IENsaXBib2FyZC5oICovOyB9OwogCQlGNDQyQzM1OTIzRTNBREQyMDA0OTk1ODIgLyogQ29tcG9z
aXRpb25IaWdobGlnaHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDJDMzU3MjNFM0FDNTEwMDQ5OTU4MiAvKiBDb21wb3NpdGlvbkhpZ2hsaWdodC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0NDZF
RERGMjY1REFGRTMwMDMxREE4RiAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDZFREREMjY1REFF
M0YwMDMxREE4RiAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDQ2RURFMTI2NURCMUU1MDAz
MURBOEYgLyogSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDZFREUwMjY1REIx
RTUwMDMxREE4RiAvKiBJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NEE1
RjU5MUZFRDM4RjIwMDdGNTk0NCAvKiBMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0QTVGNTcxRkVEMzgzMDAw
N0Y1OTQ0IC8qIExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ0RUJCRDkxREI1RDIxNDAwMjc3MzM0IC8q
IFN0YXRpY1JhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDRFQkJEODFEQjVEMjE0MDAyNzczMzQgLyogU3RhdGljUmFuZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDU3NzVDRTI0MTQzN0Q1
MDAyREYxQTAgLyogSW5saW5lUGF0aERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTc3NUNEMjQxNDM3RDUwMDJERjFBMCAvKiBJbmxpbmVQYXRo
RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xNjgwNiw2ICsxNjgwOCw4IEBACiAJCUY0NDBFNzc3MjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlw
Ym9hcmRJdGVtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDbGlwYm9hcmRJdGVtLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0Mjg1MEIyMTQwNDEyNTAwQ0NEQTIyIC8q
IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRBdHRyaWJ1
dGVDaGFuZ2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MkMzNTcyM0Uz
QUM1MTAwNDk5NTgyIC8qIENvbXBvc2l0aW9uSGlnaGxpZ2h0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBvc2l0aW9uSGlnaGxpZ2h0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDZF
REREMjY1REFFM0YwMDMxREE4RiAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0NDZFREUwMjY1REIxRTUwMDMxREE4RiAvKiBJbWFnZU92ZXJsYXlE
YXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZU92ZXJs
YXlEYXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RUJCRDYxREI1RDFCNjAwMjc3MzM0IC8qIFN0YXRpY1Jh
bmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdGF0aWNSYW5nZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NEVCQkQ4MURCNUQyMTQwMDI3NzMzNCAvKiBTdGF0aWNS
YW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNSYW5nZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4ODgsNiArMjE4OTIsOCBAQAogCQk1RDU5
NzVCNTE5NjM2MkJFMDBEMDA4NzggLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUY0NDZFREREMjY1REFFM0YwMDMxREE4RiAvKiBEYXRhRGV0
ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCAqLywKKwkJCQlGNDQ2RURFMDI2NURCMUU1MDAzMURBOEYg
LyogSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIuaCAqLywKIAkJCQk0
MTNFMDA3QjFEQjBFNzA3MDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZUNvY29hLm1tICovLAogCQkJ
CUFENUEwQzIyMURFQ0EzN0UwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmdDb2NvYS5tbSAq
LywKIAkJCQlBREZFMkI1NDFCRDVGNDEyMDBEQUI0NTcgLyogUmVzb3VyY2VVc2FnZU92ZXJsYXlD
b2NvYS5tbSAqLywKQEAgLTMyMTkzLDYgKzMyMTk5LDcgQEAKIAkJCQk5N0JDNkEzMjE1MDVGMDgx
MDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTIzNDgw
RDE4QTk4NzE0MDBFNEI2RTggLyogRGF0YUN1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUyMjdE
RjExQzNDNkRGMTAwRjVFRDU0IC8qIERhdGFEZXRlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUY0NDZFRERGMjY1REFGRTMwMDMxREE4RiAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUY0QjJBOTA5MjY1MDMwQkEwMDlFNzI4NiAvKiBEYXRhRGV0
ZWN0b3JIaWdobGlnaHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE1MzM1MjU2MDVBNTYwMDI4
QzU5MiAvKiBEYXRhRGV0ZWN0b3JUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNThCNDVCQTIw
QUQwN0REMDA5OTEwMjUgLyogRGF0YUxpc3RCdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTMyOTcwLDYgKzMyOTc3LDcgQEAKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQwODEgLyog
SW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzExNTI1MjVEMDAwMzZF
RTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUY0ODI0MzRCMjYw
QzMzMDYwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNDQ2RURFMTI2NURCMUU1MDAzMURBOEYgLyogSW1hZ2VPdmVybGF5RGF0YURldGVjdGlv
blJlc3VsdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyMjgzRjBFMjMwQjI2OEMw
MEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUx
QTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01v
ZGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24uaAppbmRleCBkZWZmODZmN2FjYjc1Nzc1Y2FmMGNkYTVjYjc3ZGJmMmRmYzhhNTVj
Li5lNzZhNmE4ZWM5NzMyNDQ0OWZhNWJjNGZhMzZjZGY1YWQ5YjBjMGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtMzksOCArMzksMTEgQEAg
T0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFz
cyBRdWFsaWZpZWROYW1lOworc3RydWN0IEltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm87
CiAKIHN0cnVjdCBEZXRlY3RlZEl0ZW0gewogICAgIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+
IGFjdGlvbkNvbnRleHQ7CkBAIC02Myw2ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgcmVxdWlyZXNFeHRlbmRlZENvbnRleHQoRWxlbWVudCYpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBzdGF0aWMgUmVmPEhUTUxF
bGVtZW50PiBjcmVhdGVFbGVtZW50Rm9ySW1hZ2VPdmVybGF5KERvY3VtZW50JiwgY29uc3QgSW1h
Z2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbyYpOworI2VuZGlmCisKICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nJiBkYXRhRGV0ZWN0b3JVUkxQcm90b2NvbCgpOwogICAgIHN0YXRpYyBib29sIGlz
RGF0YURldGVjdG9yVVJMKGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBib29sIGlzRGF0YURldGVj
dG9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCAyMWU3NDRjOGM5NzkzMTRiNWIzNGIx
YThkY2M5NjUyODBlOTQyNzI3Li4wZWQ4MjlkZjM2NzQyMDk0MGY4NjA5MmI2ODE1MjAxN2EyNzYw
NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1t
CkBAIC0zMiwxNCArMzIsMTcgQEAKICNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNp
bXBvcnQgIkNvbG9yQ29udmVyc2lvbi5oIgogI2ltcG9ydCAiQ29sb3JTZXJpYWxpemF0aW9uLmgi
CisjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCIKICNpbXBvcnQgIkVkaXRp
bmcuaCIKICNpbXBvcnQgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJFbGVt
ZW50VHJhdmVyc2FsLmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIkhUTUxBbmNo
b3JFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MRGl2RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5h
bWVzLmgiCiAjaW1wb3J0ICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2ltcG9ydCAi
SGl0VGVzdFJlc3VsdC5oIgorI2ltcG9ydCAiSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmgiCiAjaW1w
b3J0ICJOb2RlTGlzdC5oIgogI2ltcG9ydCAiTm9kZVRyYXZlcnNhbC5oIgogI2ltcG9ydCAiUXVh
bGlmaWVkTmFtZS5oIgpAQCAtMTk3LDcgKzIwMCwxMiBAQCBib29sIERhdGFEZXRlY3Rpb246OmNh
blByZXNlbnREYXRhRGV0ZWN0b3JzVUlGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
YXV0byYgcmVzdWx0QXR0cmlidXRlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNfcmVzdWx0QXR0cik7CiAgICAgaWYgKHJlc3Vs
dEF0dHJpYnV0ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBOU0FycmF5
ICpyZXN1bHRzID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rpb25SZXN1
bHRzKCk7CisKKyAgICBhdXRvKiBkYXRhRGV0ZWN0aW9uUmVzdWx0cyA9IGVsZW1lbnQuZG9jdW1l
bnQoKS5mcmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0c0lmRXhpc3RzKCk7CisgICAgaWYgKCFk
YXRhRGV0ZWN0aW9uUmVzdWx0cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlNBcnJh
eSAqcmVzdWx0cyA9IGRhdGFEZXRlY3Rpb25SZXN1bHRzLT5kb2N1bWVudExldmVsUmVzdWx0cygp
OwogICAgIGlmICghcmVzdWx0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02NzksNiAr
Njg3LDIwIEBAIGJvb2wgRGF0YURldGVjdGlvbjo6aXNEYXRhRGV0ZWN0b3JFbGVtZW50KGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGlzPEhUTUxBbmNob3JFbGVtZW50PihlbGVt
ZW50KSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFfZGV0ZWN0b3JzQXR0ciksICJ0cnVlIik7CiB9CiAK
KyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKworUmVmPEhUTUxFbGVtZW50PiBEYXRhRGV0
ZWN0aW9uOjpjcmVhdGVFbGVtZW50Rm9ySW1hZ2VPdmVybGF5KERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgSW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbyYgaW5mbykKK3sKKyAgICBhdXRv
IGNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGlmIChh
dXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC5mcmFtZSgpKSkgeworICAgICAgICBhdXRv
IHJlc3VsdElkZW50aWZpZXIgPSBmcmFtZS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKS5hZGRJbWFn
ZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0KGluZm8ucmVzdWx0LmdldCgpKTsKKyAgICAgICAg
Y29udGFpbmVyLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHhfYXBwbGVfZGF0
YV9kZXRlY3RvcnNfcmVzdWx0QXR0ciwgU3RyaW5nOjpudW1iZXIocmVzdWx0SWRlbnRpZmllci50
b1VJbnQ2NCgpKSk7CisgICAgfQorICAgIHJldHVybiBjb250YWluZXI7Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMDJiNTc5ODhlNDdkYjQ5
ZjA5ZjY0YWQ0Y2QzODQwNWFiMjE4YTk2NS4uOTYzZTU4YjU3ODE3MWM1Y2E4YmE4NzEyZTlhMmYz
NDJkMDIwODE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTg4LDYgKzg4
LDEwIEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0cnkuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKERBVEFfREVURUNUSU9OKQorI2luY2x1ZGUgIkRhdGFEZXRlY3Rpb24uaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChIVE1M
RWxlbWVudCk7CkBAIC0xNDgzLDcgKzE0ODcsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVX
aXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdAog
ICAgICAgICBpZiAoZGF0YURldGVjdG9yLm5vcm1hbGl6ZWRRdWFkcy5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGRhdGFEZXRlY3RvckNvbnRhaW5lciA9
IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgICAgIGF1dG8gZGF0YURl
dGVjdG9yQ29udGFpbmVyID0gRGF0YURldGVjdGlvbjo6Y3JlYXRlRWxlbWVudEZvckltYWdlT3Zl
cmxheShkb2N1bWVudCgpLCBkYXRhRGV0ZWN0b3IpOwogICAgICAgICBkYXRhRGV0ZWN0b3JDb250
YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUo
KSk7CiAgICAgICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZGF0YURldGVjdG9yQ29udGFpbmVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZTkzN2NmZTkxNzY2
NjJlZGRjZmMzOGYyYTFjMDY2ZTA4OGM5NTRlMS4uODJkMTZkNjk1MmZkNzllZjU3NzIwOWI2MTVh
ZjFmM2RmYzljMDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0x
NDIsNiArMTQyLDcgQEAKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbmNsdWRlICJE
YXRhRGV0ZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgi
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yNTc1LDkgKzI1NzYsMTAg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAg
ICAgICAgICAgYXV0byBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICAgICAgICAg
IGF1dG8gdHlwZXMgPSBPcHRpb25TZXQ8RGF0YURldGVjdG9yVHlwZT4geyBtX2ZyYW1lLnNldHRp
bmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSB9OwogICAgICAgICAgICAgaWYgKGRvY3VtZW50ICYm
IHR5cGVzKSB7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0
cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoKmRvY3VtZW50KSwgdHlwZXMsIG1fY2xpZW50LT5kYXRhRGV0ZWN0aW9uQ29u
dGV4dCgpKSk7CisgICAgICAgICAgICAgICAgYXV0byBkb2N1bWVudExldmVsUmVzdWx0cyA9IHJl
dGFpblB0cihEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoKmRvY3VtZW50KSwgdHlwZXMsIG1fY2xpZW50LT5kYXRhRGV0ZWN0
aW9uQ29udGV4dCgpKSk7CisgICAgICAgICAgICAgICAgbV9mcmFtZS5kYXRhRGV0ZWN0aW9uUmVz
dWx0cygpLnNldERvY3VtZW50TGV2ZWxSZXN1bHRzKGRvY3VtZW50TGV2ZWxSZXN1bHRzLmdldCgp
KTsKICAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKG1fZnJh
bWUuZGF0YURldGVjdGlvblJlc3VsdHMoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24oZG9jdW1lbnRMZXZlbFJlc3VsdHMuZ2V0
KCkpOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDI0ZWFlYjNmMjVjODQz
OGNiY2U3N2ZiZDcxZjc3NmI0YTRhYmJmYTcuLjZkMWQ2Y2QzZWU0OGM5ZDI5NzY1MGY1ODQ3ZjNm
ZWMyMzcwMzNmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRE9N
V2luZG93LmgiCisjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRUaW1lbGluZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VHlwZS5oIgogI2lu
Y2x1ZGUgIkVkaXRpbmcuaCIKQEAgLTExMjksNiArMTEzMCwxNyBAQCBib29sIEZyYW1lOjphcmVQ
bHVnaW5zRW5hYmxlZCgpCiAgICAgcmV0dXJuIHNldHRpbmdzKCkuYXJlUGx1Z2luc0VuYWJsZWQo
KTsKIH0KIAorI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKworRGF0YURldGVjdGlvblJlc3Vs
dHNTdG9yYWdlJiBGcmFtZTo6ZGF0YURldGVjdGlvblJlc3VsdHMoKQoreworICAgIGlmICghbV9k
YXRhRGV0ZWN0aW9uUmVzdWx0cykKKyAgICAgICAgbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cyA9IG1h
a2VVbmlxdWU8RGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlPigpOworICAgIHJldHVybiAqbV9k
YXRhRGV0ZWN0aW9uUmVzdWx0czsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApp
bmRleCA4YzQ0NzQ2ZjYxOTVjOThiNzY2N2EzYmJmMjY0ZWYyNGYyZjdiMGI4Li42ZjlmMmVkOTQy
MmJiMzljNDRmYTMzOTdjZTg4NjQ0ZThmNzEyZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC02OCw2
ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CiBjbGFzcyBET01X
aW5kb3c7CitjbGFzcyBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2U7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIEVkaXRvcjsKIGNsYXNzIEVsZW1lbnQ7CkBAIC0yMjQsOCArMjI1LDggQEAgcHVi
bGljOgogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgCiAj
aWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQotICAgIHZvaWQgc2V0RGF0YURldGVjdGlvblJlc3Vs
dHMoTlNBcnJheSAqcmVzdWx0cykgeyBtX2RhdGFEZXRlY3Rpb25SZXN1bHRzID0gcmVzdWx0czsg
fQotICAgIE5TQXJyYXkgKmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhRGV0ZWN0aW9uUmVzdWx0cy5nZXQoKTsgfQorICAgIERhdGFEZXRlY3Rpb25SZXN1bHRzU3Rv
cmFnZSogZGF0YURldGVjdGlvblJlc3VsdHNJZkV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YURldGVjdGlvblJlc3VsdHMuZ2V0KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBEYXRhRGV0ZWN0
aW9uUmVzdWx0c1N0b3JhZ2UmIGRhdGFEZXRlY3Rpb25SZXN1bHRzKCk7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zNDgsNyArMzQ5LDcgQEAgcHJpdmF0ZToKICAgICBV
bmlxdWVSZWY8U2NyaXB0Q29udHJvbGxlcj4gbV9zY3JpcHQ7CiAKICNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCi0gICAgUmV0YWluUHRyPE5TQXJyYXk+IG1fZGF0YURldGVjdGlvblJlc3VsdHM7
CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZT4gbV9kYXRh
RGV0ZWN0aW9uUmVzdWx0czsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dm9pZCBiZXR0ZXJBcHByb3hpbWF0ZU5vZGUoY29uc3QgSW50UG9pbnQmIHRlc3RQb2ludCwgY29u
c3QgTm9kZVF1YWxpZmllciYsIE5vZGUqJiBiZXN0LCBOb2RlKiBmYWlsZWROb2RlLCBJbnRQb2lu
dCYgYmVzdFBvaW50LCBJbnRSZWN0JiBiZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgdGVzdFJlY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9EYXRhRGV0ZWN0aW9uUmVz
dWx0c1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvRGF0YURldGVjdGlvblJl
c3VsdHNTdG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU3MTI3MjQxNDIyYzAzMWQ4YzY5Zjk5ZTZjNDBh
MDMwZTRlNjE0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
RGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorCisjaW5jbHVk
ZSAiSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBERFNjYW5uZXJSZXN1bHQ7CitPQkpDX0NM
QVNTIE5TQXJyYXk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGF0YURldGVjdGlv
blJlc3VsdHNTdG9yYWdlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhRGV0ZWN0aW9u
UmVzdWx0c1N0b3JhZ2UpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIERhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZSgpID0gZGVmYXVsdDsKKworICAgIHZvaWQg
c2V0RG9jdW1lbnRMZXZlbFJlc3VsdHMoTlNBcnJheSAqcmVzdWx0cykgeyBtX2RvY3VtZW50TGV2
ZWxSZXN1bHRzID0gcmVzdWx0czsgfQorICAgIE5TQXJyYXkgKmRvY3VtZW50TGV2ZWxSZXN1bHRz
KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudExldmVsUmVzdWx0cy5nZXQoKTsgfQorCisgICAg
RERTY2FubmVyUmVzdWx0ICppbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0KEltYWdlT3Zl
cmxheURhdGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1f
aW1hZ2VPdmVybGF5UmVzdWx0cy5nZXQoaWRlbnRpZmllcikuZ2V0KCk7IH0KKyAgICBJbWFnZU92
ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllciBhZGRJbWFnZU92ZXJsYXlEYXRhRGV0
ZWN0aW9uUmVzdWx0KEREU2Nhbm5lclJlc3VsdCAqcmVzdWx0KQorICAgIHsKKyAgICAgICAgYXV0
byBuZXdJZGVudGlmaWVyID0gSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZp
ZXI6OmdlbmVyYXRlKCk7CisgICAgICAgIG1faW1hZ2VPdmVybGF5UmVzdWx0cy5zZXQobmV3SWRl
bnRpZmllciwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIG5ld0lkZW50aWZpZXI7CisgICAgfQor
Citwcml2YXRlOgorICAgIFJldGFpblB0cjxOU0FycmF5PiBtX2RvY3VtZW50TGV2ZWxSZXN1bHRz
OworICAgIEhhc2hNYXA8SW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIs
IFJldGFpblB0cjxERFNjYW5uZXJSZXN1bHQ+PiBtX2ltYWdlT3ZlcmxheVJlc3VsdHM7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJ
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL0ltYWdlT3ZlcmxheURh
dGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29h
L0ltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODdlNzU4YzhkMWU3OWYzODhjZWVhMjNhN2M3OGNkODAwNjk0YzI5NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJl
c3VsdElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0
SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gSW1hZ2VPdmVybGF5
RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIEltYWdlT3Zlcmxh
eURhdGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZU92
ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRhYTM1M2Y1MGVkODRk
NGMxMDBkOGMwMGQ0YWU2N2EyYTFlMjI4YTkuLjIzY2YxNWU5ODZhZDg0YjFiN2E0OGM2NjRiMWQx
ODA3NjE5Zjc2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC0xNTgsNiArMTU4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRhY3RzUmVx
dWVzdERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRE9NUGFzdGVBY2Nlc3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YVRyYW5z
ZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgpAQCAtNDAzNiwyMSArNDAzNywzMCBA
QCB2b2lkIFdlYlBhZ2U6OnJlbW92ZURhdGFEZXRlY3RlZExpbmtzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRGF0YURldGVjdGlvbgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgRGF0YURldGVjdGlvbjo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3NJbkRvY3VtZW50KCpkb2N1
bWVudCk7Ci0gICAgICAgIGZyYW1lLT5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0cyhudWxscHRyKTsK
KworICAgICAgICBpZiAoYXV0byogcmVzdWx0cyA9IGZyYW1lLT5kYXRhRGV0ZWN0aW9uUmVzdWx0
c0lmRXhpc3RzKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJdCBzZWVtcyBvZGQgdGhhdCB3
ZSdyZSBjbGVhcmluZyBvdXQgYWxsIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHMgaGVyZSwKKyAgICAg
ICAgICAgIC8vIGluc3RlYWQgb2Ygb25seSBkYXRhIGRldGVjdG9ycyB0aGF0IGNvcnJlc3BvbmQg
dG8gbGlua3MuCisgICAgICAgICAgICByZXN1bHRzLT5zZXREb2N1bWVudExldmVsUmVzdWx0cyh7
IH0pOworICAgICAgICB9CiAgICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgbV9wYWdlLT5t
YWluRnJhbWUoKS5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpIH0pOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGV0ZWN0RGF0YUluQWxsRnJhbWVzKHVpbnQ2
NF90IHR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1
bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBEYXRhRGV0ZWN0aW9uUmVzdWx0IG1h
aW5GcmFtZVJlc3VsdDsKICAgICBhdXRvIGRhdGFEZXRlY3RvclR5cGVzID0gT3B0aW9uU2V0PERh
dGFEZXRlY3RvclR5cGU+Ojpmcm9tUmF3KHR5cGVzKTsKICAgICBmb3IgKGF1dG8gZnJhbWUgPSBt
YWtlUmVmUHRyKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0
cihmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgZnJhbWUtPnNldERhdGFEZXRlY3Rpb25SZXN1bHRzKERhdGFE
ZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cygqZG9jdW1lbnQpLCBkYXRhRGV0ZWN0b3JUeXBlcywgbV9kYXRhRGV0ZWN0aW9uQ29udGV4
dC5nZXQoKSkpOworICAgICAgICBhdXRvIHJlc3VsdHMgPSByZXRhaW5QdHIoRGF0YURldGVjdGlv
bjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpk
b2N1bWVudCksIGRhdGFEZXRlY3RvclR5cGVzLCBtX2RhdGFEZXRlY3Rpb25Db250ZXh0LmdldCgp
KSk7CisgICAgICAgIGZyYW1lLT5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpLnNldERvY3VtZW50TGV2
ZWxSZXN1bHRzKHJlc3VsdHMuZ2V0KCkpOworICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1l
KCkpCisgICAgICAgICAgICBtYWluRnJhbWVSZXN1bHQucmVzdWx0cyA9IFdURk1vdmUocmVzdWx0
cyk7CiAgICAgfQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgbV9wYWdlLT5tYWluRnJhbWUoKS5k
YXRhRGV0ZWN0aW9uUmVzdWx0cygpIH0pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
bWFpbkZyYW1lUmVzdWx0KSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IGZkOWZiOGI0YjAzMmRjNzI2NzMxOWZjNGZiMDg5YmIxYWYzN2M3MmUuLjNhYzM2
ZDg2NDcyYzA3YjE4N2I5YTQ2OWE2MzAzMThjZjlkMDdkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC02OSw2ICs2OSw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRlbnRDaGFuZ2VPYnNlcnZlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9ET01UaW1lckhvbGRpbmdUYW5rLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFEZXRl
Y3Rpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVu
dExvYWRlci5oPgpAQCAtMjc0OCw3ICsyNzQ5LDggQEAgc3RhdGljIHZvaWQgZGF0YURldGVjdG9y
TGlua1Bvc2l0aW9uSW5mb3JtYXRpb24oRWxlbWVudCYgZWxlbWVudCwgSW50ZXJhY3Rpb25JbmYK
ICAgICBpbmZvLmlzRGF0YURldGVjdG9yTGluayA9IHRydWU7CiAgICAgY29uc3QgaW50IGRhdGFE
ZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGggPSAzNTA7CiAgICAgaW5mby5kYXRhRGV0ZWN0
b3JJZGVudGlmaWVyID0gRGF0YURldGVjdGlvbjo6ZGF0YURldGVjdG9ySWRlbnRpZmllcihlbGVt
ZW50KTsKLSAgICBpbmZvLmRhdGFEZXRlY3RvclJlc3VsdHMgPSBlbGVtZW50LmRvY3VtZW50KCku
ZnJhbWUoKS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKTsKKyAgICBpZiAoYXV0byogcmVzdWx0cyA9
IGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0c0lmRXhpc3Rz
KCkpCisgICAgICAgIGluZm8uZGF0YURldGVjdG9yUmVzdWx0cyA9IHJlc3VsdHMtPmRvY3VtZW50
TGV2ZWxSZXN1bHRzKCk7CiAKICAgICBpZiAoIURhdGFEZXRlY3Rpb246OnJlcXVpcmVzRXh0ZW5k
ZWRDb250ZXh0KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429911</attachid>
            <date>2021-05-27 12:26:40 -0700</date>
            <delta_ts>2021-05-27 13:25:12 -0700</delta_ts>
            <desc>Fix GTK/WPE build</desc>
            <filename>bug-226267-20210527122639.patch</filename>
            <type>text/plain</type>
            <size>26724</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDUxNzg1M2YxZjY0NGY0
MjFkMjNlYjBkMTliM2Q1MjIzZTQ5MmYyNi4uY2YxNWNkMGMyNTQxNGMwNDJjZjA0NGQ0OWE1ZTkx
ZjcwZDViOTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTA1LTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHNv
bWUgZGF0YSBkZXRlY3RvciBjb2RlIGluIFdlYkNvcmU6OkZyYW1lCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbmR5IEVzdGVzIGFuZCBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgSW4gcHJlcGFyYXRp
b24gZm9yIHN1cHBvcnRpbmcgZGF0YSBkZXRlY3Rpb24gaW4gaW1hZ2Ugb3ZlcmxheXMsIHRoaXMg
cGF0Y2ggcmVmYWN0b3JzIHNvbWUgZXhpc3RpbmcgZGF0YSBkZXRlY3RvcgorICAgICAgICBsb2dp
YyBpbnNpZGUgKGFuZCBhZGphY2VudCB0bykgRnJhbWUuIFNlZSBjb21tZW50cyBiZWxvdyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5oOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFE
ZXRlY3Rpb246OmNhblByZXNlbnREYXRhRGV0ZWN0b3JzVUlGb3JFbGVtZW50KToKKworICAgICAg
ICBVc2UgRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlIGluc3RlYWQgb2YgZ3JhYmJpbmcgdGhl
IGFycmF5IG9mIHNjYW5uZXIgcmVzdWx0cyBkaXJlY3RseSBmcm9tIEZyYW1lLgorCisgICAgICAg
IChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpjcmVhdGVFbGVtZW50Rm9ySW1hZ2VPdmVybGF5KToK
KworICAgICAgICBBZGQgYSBoZWxwZXIgbWV0aG9kIHRvIGNyZWF0ZSBhIGRhdGEgZGV0ZWN0b3Ig
ZWxlbWVudCBmb3IgaW1hZ2Ugb3ZlcmxheXM7IHRoaXMgZ3JhYnMgYSBzY2FubmVyIHJlc3VsdCBm
cm9tIHRoZQorICAgICAgICBnaXZlbiBJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJbmZvLCBh
ZGRzIGl0IHRvIHRoZSBlbGVtZW50J3MgZG9jdW1lbnQncyBmcmFtZSwgYW5kIHRoZW4gc2V0cyB0
aGUgbmV3bHkKKyAgICAgICAgY3JlYXRlZCBlbGVtZW50J3MgIngtYXBwbGUtZGF0YS1kZXRlY3Rv
cnMtcmVzdWx0IiBhdHRyaWJ1dGUgdG8gdGhlIG5ldyBpZGVudGlmaWVyIHZhbHVlLiBUaGUgbWFp
biByZWFzb24gd2UgZG8KKyAgICAgICAgdGhpcyBpcyB0byBhdm9pZCBoYXZpbmcgSFRNTEVsZW1l
bnQgZGlyZWN0bHkgaGFuZGxlIEREU2Nhbm5lclJlc3VsdCAoYW5kIGluc3RlYWQgZGVsZWdhdGUg
b3V0IHRvIHBsYXRmb3JtLQorICAgICAgICBzcGVjaWZpYyBoZWxwZXJzIGluIERhdGFEZXRlY3Rp
b24pLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRWxlbWVudDo6dXBkYXRlV2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdCk6CisKKyAgICAg
ICAgVXNlIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9uIGFib3ZlLgorCisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xv
YWRDb21wbGV0ZUZvclRoaXNGcmFtZSk6CisKKyAgICAgICAgVXNlIERhdGFEZXRlY3Rpb25SZXN1
bHRzU3RvcmFnZSBpbnN0ZWFkIG9mIHNldHRpbmcgdGhlIGFycmF5IG9mIHNjYW5uZXIgcmVzdWx0
cyBkaXJlY3RseSBvbiBGcmFtZS4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OmRhdGFEZXRlY3Rpb25SZXN1bHRzKToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmg6CisKKyAgICAgICAgV2UgY3VycmVudGx5IHN0b3JlIGEgbGlzdCBvZiBkb2N1bWVu
dC13aWRlIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHMgKE9iamVjdGl2ZS1DIEREU2Nhbm5lclJlc3Vs
dCBvYmplY3RzKQorICAgICAgICBkaXJlY3RseSBvbiBGcmFtZS4gRm9yIGltYWdlIG92ZXJsYXlz
LCBJIG5lZWQgdG8gc3RvcmUgYSBtYXAgb2YgaWRlbnRpZmllcnMgdG8gc2Nhbm5lciByZXN1bHRz
IGluIGEgc2ltaWxhcgorICAgICAgICBmYXNoaW9uLiBSYXRoZXIgdGhhbiBhZGQgbW9yZSBPYmpl
Y3RpdmUtQyBjb2RlIG9uIEZyYW1lLCBpdCdzIGJldHRlciB0byBpbnN0ZWFkIG1vdmUgdGhpcyBs
b2dpYyBvdXQgaW50byBhCisgICAgICAgIHNlcGFyYXRlIEMrKyBjbGFzcywgRGF0YURldGVjdGlv
blJlc3VsdHNTdG9yYWdlLCB0aGF0IHdyYXBzIGJvdGggdGhlIGRvY3VtZW50LWxldmVsIGFycmF5
IG9mIEREU2Nhbm5lclJlc3VsdHMsCisgICAgICAgIGFzIHdlbGwgYXMgdGhlIG5ldyBtYXAgb2Yg
SW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIgPT4gRERTY2FubmVyUmVz
dWx0IHNwZWNpZmljYWxseSBmb3IgZGF0YQorICAgICAgICBkZXRlY3RvciByZXN1bHRzIGluc2lk
ZSBpbWFnZSBvdmVybGF5cy4KKworICAgICAgICAqIHBhZ2UvY29jb2EvRGF0YURldGVjdGlvblJl
c3VsdHNTdG9yYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RGF0YURldGVjdGlvbi5oLgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvblJlc3VsdHNT
dG9yYWdlOjpzZXREb2N1bWVudExldmVsUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
RGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2U6OmRvY3VtZW50TGV2ZWxSZXN1bHRzIGNvbnN0KToKKwor
ICAgICAgICBNb3ZlIHRoZSBleGlzdGluZyBgbV9kYXRhRGV0ZWN0aW9uUmVzdWx0c2AgTlNBcnJh
eSBvbiBGcmFtZSBvdXQgaW50byB0aGUgc3RvcmFnZSBoZWxwZXIgY2xhc3MsIGFzCisgICAgICAg
IGBtX2RvY3VtZW50TGV2ZWxSZXN1bHRzYC4gQXMgaXRzIG5hbWUgc3VnZ2VzdHMsIHRoaXMgYXJy
YXkgc3RvcmVzIGRhdGEgZGV0ZWN0aW9uIHJlc3VsdHMgZ2F0aGVyZWQgYnkgcnVubmluZworICAg
ICAgICBkYXRhIGRldGVjdGlvbiBvdmVyIHRoZSBlbnRpcmUgZG9jdW1lbnQuCisKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZTo6aW1hZ2VPdmVybGF5RGF0YURl
dGVjdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0
b3JhZ2U6OmFkZEltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHQpOgorCisgICAgICAgIEFk
ZCBhIG5ldyBtYXAgb2YgSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIg
dG8gRERTY2FubmVyUmVzdWx0IGZvciBzdG9yaW5nIHNjYW5uZXIgcmVzdWx0cworICAgICAgICBz
cGVjaWZpYyB0byBpbWFnZSBvdmVybGF5IGNvbnRlbnQuIFVzaW5nIGEgc2VwYXJhdGUgZGF0YSBz
dHJ1Y3R1cmUgaGVyZSBwcmV2ZW50cyBpbWFnZSBvdmVybGF5IGRhdGEgZGV0ZWN0b3IKKyAgICAg
ICAgcmVzdWx0cyBmcm9tIGdldHRpbmcgYmxvd24gYXdheSB3aGVuIGRvY3VtZW50LWxldmVsIGRh
dGEgZGV0ZWN0aW9uIGZpbmlzaGVzIGFuZCBzZXRzIGRvY3VtZW50LXdpZGUgcmVzdWx0cyBvbgor
ICAgICAgICB0aGUgZnJhbWUuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL0ltYWdlT3ZlcmxheURh
dGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVyLmg6IEFkZGVkLgorCisgICAgICAgIEFkZCBhbiBp
ZGVudGlmaWVyIHR5cGUgdGhhdCB3ZSBjYW4gdXNlIHRvIGxvb2sgdXAgZGF0YSBkZXRlY3Rpb24g
cmVzdWx0cyBpbiBpbWFnZSBvdmVybGF5IGVsZW1lbnRzIGluIEZyYW1lJ3MKKyAgICAgICAgZGF0
YSBkZXRlY3Rpb24gcmVzdWx0IHN0b3JhZ2UuCisKIDIwMjEtMDUtMjcgIEFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNDQ0MzQpIERpc3BhdGNo
IGludHJpbnNpY0NvbnRlbnRzU2l6ZUNoYW5nZWQgb24gdGhlIG1haW4gZnJhbWUgb25seQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA5YjQ5ODhiZWI2MmZlODIxNjZiMDA1NmQ5OTdhNWI0NmI5NDNlZGFhLi5mNTQzMmRh
MDg4Yzc1MDdkMWQ4NGExOWFkZmE4NjZlYmMwNDE1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDIxLTA1LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZmFjdG9yIHNvbWUgZGF0YSBkZXRlY3RvciBjb2RlIGluIFdlYkNvcmU6OkZy
YW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYy
NjcKKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzIGFuZCBEZXZpbiBSb3Vzc28uCisK
KyAgICAgICAgU2VlIFdlYkNvcmUvQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlbW92ZURhdGFEZXRlY3RlZExpbmtzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZGV0ZWN0RGF0YUluQWxsRnJhbWVzKToKKworICAgICAgICBVc2UgRGF0YURldGVjdGlvblJl
c3VsdHNTdG9yYWdlIGluc3RlYWQgb2Ygc2V0dGluZyB0aGUgYXJyYXkgb2Ygc2Nhbm5lciByZXN1
bHRzIGRpcmVjdGx5IG9uIEZyYW1lLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpkYXRhRGV0ZWN0b3JMaW5rUG9zaXRp
b25JbmZvcm1hdGlvbik6CisKIDIwMjEtMDUtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgdmFsaWRhdGlvbiB3aGVu
IHJlYWRpbmcgRGlzcGxheUxpc3RTaGFyZWRNZW1vcnlIZWFkZXI6OndhaXRpbmdTdGF0dXMgaW4g
RGlzcGxheUxpc3RSZWFkZXJIYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkY2U2Yzc2M2ZlOGRiN2U3M2QyMDYyNGZjZDQ0
MDlhYTJhZjNiNmY2Li45OTUwOTMyMmEyYmJkYTYxOWNjMjNhOTIwNjRhNGMzOTY5Y2E1ZjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01MzM3LDYgKzUzMzcsOCBAQAogCQlGNDQwRTc3QjIzM0Q5NEQ3MDA2M0Y5QUIgLyogQ2xp
cGJvYXJkSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ0MEU3NzAyMzNEOTRENDAwNjNGOUFCIC8qIENsaXBib2FyZEl0ZW0uaCAqLzsgfTsKIAkJ
RjQ0MEU3N0QyMzNEOTRENzAwNjNGOUFCIC8qIENsaXBib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MEU3NzIyMzNEOTRENTAwNjNGOUFCIC8q
IENsaXBib2FyZC5oICovOyB9OwogCQlGNDQyQzM1OTIzRTNBREQyMDA0OTk1ODIgLyogQ29tcG9z
aXRpb25IaWdobGlnaHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDJDMzU3MjNFM0FDNTEwMDQ5OTU4MiAvKiBDb21wb3NpdGlvbkhpZ2hsaWdodC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0NDZF
RERGMjY1REFGRTMwMDMxREE4RiAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDZFREREMjY1REFF
M0YwMDMxREE4RiAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDQ2RURFMTI2NURCMUU1MDAz
MURBOEYgLyogSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDZFREUwMjY1REIx
RTUwMDMxREE4RiAvKiBJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0NEE1
RjU5MUZFRDM4RjIwMDdGNTk0NCAvKiBMZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0QTVGNTcxRkVEMzgzMDAw
N0Y1OTQ0IC8qIExlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ0RUJCRDkxREI1RDIxNDAwMjc3MzM0IC8q
IFN0YXRpY1JhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDRFQkJEODFEQjVEMjE0MDAyNzczMzQgLyogU3RhdGljUmFuZ2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDU3NzVDRTI0MTQzN0Q1
MDAyREYxQTAgLyogSW5saW5lUGF0aERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTc3NUNEMjQxNDM3RDUwMDJERjFBMCAvKiBJbmxpbmVQYXRo
RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xNjgwNiw2ICsxNjgwOCw4IEBACiAJCUY0NDBFNzc3MjMzRDk0RDcwMDYzRjlBQiAvKiBDbGlw
Ym9hcmRJdGVtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDbGlwYm9hcmRJdGVtLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0Mjg1MEIyMTQwNDEyNTAwQ0NEQTIyIC8q
IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRBdHRyaWJ1
dGVDaGFuZ2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0MkMzNTcyM0Uz
QUM1MTAwNDk5NTgyIC8qIENvbXBvc2l0aW9uSGlnaGxpZ2h0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bXBvc2l0aW9uSGlnaGxpZ2h0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDZF
REREMjY1REFFM0YwMDMxREE4RiAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0NDZFREUwMjY1REIxRTUwMDMxREE4RiAvKiBJbWFnZU92ZXJsYXlE
YXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZU92ZXJs
YXlEYXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNDRBNUY1NzFGRUQzODMwMDA3RjU5NDQgLyogTGVnYWN5TlNQYXN0ZWJvYXJkVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5TlNQYXN0ZWJvYXJkVHlwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RUJCRDYxREI1RDFCNjAwMjc3MzM0IC8qIFN0YXRpY1Jh
bmdlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTdGF0aWNSYW5nZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NEVCQkQ4MURCNUQyMTQwMDI3NzMzNCAvKiBTdGF0aWNS
YW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGF0aWNSYW5nZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE4ODgsNiArMjE4OTIsOCBAQAogCQk1RDU5
NzVCNTE5NjM2MkJFMDBEMDA4NzggLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUY0NDZFREREMjY1REFFM0YwMDMxREE4RiAvKiBEYXRhRGV0
ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCAqLywKKwkJCQlGNDQ2RURFMDI2NURCMUU1MDAzMURBOEYg
LyogSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIuaCAqLywKIAkJCQk0
MTNFMDA3QjFEQjBFNzA3MDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZUNvY29hLm1tICovLAogCQkJ
CUFENUEwQzIyMURFQ0EzN0UwMDcwNzA1NCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmdDb2NvYS5tbSAq
LywKIAkJCQlBREZFMkI1NDFCRDVGNDEyMDBEQUI0NTcgLyogUmVzb3VyY2VVc2FnZU92ZXJsYXlD
b2NvYS5tbSAqLywKQEAgLTMyMTkzLDYgKzMyMTk5LDcgQEAKIAkJCQk5N0JDNkEzMjE1MDVGMDgx
MDAxQjc0QUMgLyogRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCRTIzNDgw
RDE4QTk4NzE0MDBFNEI2RTggLyogRGF0YUN1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzUyMjdE
RjExQzNDNkRGMTAwRjVFRDU0IC8qIERhdGFEZXRlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUY0NDZFRERGMjY1REFGRTMwMDMxREE4RiAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUY0QjJBOTA5MjY1MDMwQkEwMDlFNzI4NiAvKiBEYXRhRGV0
ZWN0b3JIaWdobGlnaHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE1MzM1MjU2MDVBNTYwMDI4
QzU5MiAvKiBEYXRhRGV0ZWN0b3JUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNThCNDVCQTIw
QUQwN0REMDA5OTEwMjUgLyogRGF0YUxpc3RCdXR0b25FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTMyOTcwLDYgKzMyOTc3LDcgQEAKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQwODEgLyog
SW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzExNTI1MjVEMDAwMzZF
RTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUY0ODI0MzRCMjYw
QzMzMDYwMDIyNDk3QyAvKiBJbWFnZU92ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNDQ2RURFMTI2NURCMUU1MDAzMURBOEYgLyogSW1hZ2VPdmVybGF5RGF0YURldGVjdGlv
blJlc3VsdElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyMjgzRjBFMjMwQjI2OEMw
MEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUx
QTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01v
ZGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9EYXRhRGV0ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFE
ZXRlY3Rpb24uaAppbmRleCBkZWZmODZmN2FjYjc1Nzc1Y2FmMGNkYTVjYjc3ZGJmMmRmYzhhNTVj
Li5lNzZhNmE4ZWM5NzMyNDQ0OWZhNWJjNGZhMzZjZGY1YWQ5YjBjMGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24uaApAQCAtMzksOCArMzksMTEgQEAg
T0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFz
cyBRdWFsaWZpZWROYW1lOworc3RydWN0IEltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3RvckluZm87
CiAKIHN0cnVjdCBEZXRlY3RlZEl0ZW0gewogICAgIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+
IGFjdGlvbkNvbnRleHQ7CkBAIC02Myw2ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGJvb2wgcmVxdWlyZXNFeHRlbmRlZENvbnRleHQoRWxlbWVudCYpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKyAgICBzdGF0aWMgUmVmPEhUTUxF
bGVtZW50PiBjcmVhdGVFbGVtZW50Rm9ySW1hZ2VPdmVybGF5KERvY3VtZW50JiwgY29uc3QgSW1h
Z2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbyYpOworI2VuZGlmCisKICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nJiBkYXRhRGV0ZWN0b3JVUkxQcm90b2NvbCgpOwogICAgIHN0YXRpYyBib29sIGlz
RGF0YURldGVjdG9yVVJMKGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBib29sIGlzRGF0YURldGVj
dG9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQppbmRleCAyMWU3NDRjOGM5NzkzMTRiNWIzNGIx
YThkY2M5NjUyODBlOTQyNzI3Li4wZWQ4MjlkZjM2NzQyMDk0MGY4NjA5MmI2ODE1MjAxN2EyNzYw
NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1t
CkBAIC0zMiwxNCArMzIsMTcgQEAKICNpbXBvcnQgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNp
bXBvcnQgIkNvbG9yQ29udmVyc2lvbi5oIgogI2ltcG9ydCAiQ29sb3JTZXJpYWxpemF0aW9uLmgi
CisjaW1wb3J0ICJEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCIKICNpbXBvcnQgIkVkaXRp
bmcuaCIKICNpbXBvcnQgIkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgiCiAjaW1wb3J0ICJFbGVt
ZW50VHJhdmVyc2FsLmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIkhUTUxBbmNo
b3JFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MRGl2RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5h
bWVzLmgiCiAjaW1wb3J0ICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2ltcG9ydCAi
SGl0VGVzdFJlc3VsdC5oIgorI2ltcG9ydCAiSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmgiCiAjaW1w
b3J0ICJOb2RlTGlzdC5oIgogI2ltcG9ydCAiTm9kZVRyYXZlcnNhbC5oIgogI2ltcG9ydCAiUXVh
bGlmaWVkTmFtZS5oIgpAQCAtMTk3LDcgKzIwMCwxMiBAQCBib29sIERhdGFEZXRlY3Rpb246OmNh
blByZXNlbnREYXRhRGV0ZWN0b3JzVUlGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
YXV0byYgcmVzdWx0QXR0cmlidXRlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHhfYXBwbGVfZGF0YV9kZXRlY3RvcnNfcmVzdWx0QXR0cik7CiAgICAgaWYgKHJlc3Vs
dEF0dHJpYnV0ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBOU0FycmF5
ICpyZXN1bHRzID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rpb25SZXN1
bHRzKCk7CisKKyAgICBhdXRvKiBkYXRhRGV0ZWN0aW9uUmVzdWx0cyA9IGVsZW1lbnQuZG9jdW1l
bnQoKS5mcmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0c0lmRXhpc3RzKCk7CisgICAgaWYgKCFk
YXRhRGV0ZWN0aW9uUmVzdWx0cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTlNBcnJh
eSAqcmVzdWx0cyA9IGRhdGFEZXRlY3Rpb25SZXN1bHRzLT5kb2N1bWVudExldmVsUmVzdWx0cygp
OwogICAgIGlmICghcmVzdWx0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02NzksNiAr
Njg3LDIwIEBAIGJvb2wgRGF0YURldGVjdGlvbjo6aXNEYXRhRGV0ZWN0b3JFbGVtZW50KGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGlzPEhUTUxBbmNob3JFbGVtZW50PihlbGVt
ZW50KSAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbih4X2FwcGxlX2RhdGFfZGV0ZWN0b3JzQXR0ciksICJ0cnVlIik7CiB9CiAK
KyNpZiBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKworUmVmPEhUTUxFbGVtZW50PiBEYXRhRGV0
ZWN0aW9uOjpjcmVhdGVFbGVtZW50Rm9ySW1hZ2VPdmVybGF5KERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgSW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbyYgaW5mbykKK3sKKyAgICBhdXRv
IGNvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGlmIChh
dXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC5mcmFtZSgpKSkgeworICAgICAgICBhdXRv
IHJlc3VsdElkZW50aWZpZXIgPSBmcmFtZS0+ZGF0YURldGVjdGlvblJlc3VsdHMoKS5hZGRJbWFn
ZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0KGluZm8ucmVzdWx0LmdldCgpKTsKKyAgICAgICAg
Y29udGFpbmVyLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHhfYXBwbGVfZGF0
YV9kZXRlY3RvcnNfcmVzdWx0QXR0ciwgU3RyaW5nOjpudW1iZXIocmVzdWx0SWRlbnRpZmllci50
b1VJbnQ2NCgpKSk7CisgICAgfQorICAgIHJldHVybiBjb250YWluZXI7Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoSU1BR0VfRVhUUkFDVElPTikKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMDJiNTc5ODhlNDdkYjQ5
ZjA5ZjY0YWQ0Y2QzODQwNWFiMjE4YTk2NS4uOTYzZTU4YjU3ODE3MWM1Y2E4YmE4NzEyZTlhMmYz
NDJkMDIwODE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTg4LDYgKzg4
LDEwIEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uR2VvbWV0cnkuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKERBVEFfREVURUNUSU9OKQorI2luY2x1ZGUgIkRhdGFEZXRlY3Rpb24uaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChIVE1M
RWxlbWVudCk7CkBAIC0xNDgzLDcgKzE0ODcsNyBAQCB2b2lkIEhUTUxFbGVtZW50Ojp1cGRhdGVX
aXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdAog
ICAgICAgICBpZiAoZGF0YURldGVjdG9yLm5vcm1hbGl6ZWRRdWFkcy5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGRhdGFEZXRlY3RvckNvbnRhaW5lciA9
IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgICAgIGF1dG8gZGF0YURl
dGVjdG9yQ29udGFpbmVyID0gRGF0YURldGVjdGlvbjo6Y3JlYXRlRWxlbWVudEZvckltYWdlT3Zl
cmxheShkb2N1bWVudCgpLCBkYXRhRGV0ZWN0b3IpOwogICAgICAgICBkYXRhRGV0ZWN0b3JDb250
YWluZXItPmNsYXNzTGlzdCgpLmFkZChpbWFnZU92ZXJsYXlEYXRhRGV0ZWN0b3JDbGFzc05hbWUo
KSk7CiAgICAgICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoZGF0YURldGVjdG9yQ29udGFpbmVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZTkzN2NmZTkxNzY2
NjJlZGRjZmMzOGYyYTFjMDY2ZTA4OGM5NTRlMS4uODJkMTZkNjk1MmZkNzllZjU3NzIwOWI2MTVh
ZjFmM2RmYzljMDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0x
NDIsNiArMTQyLDcgQEAKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbmNsdWRlICJE
YXRhRGV0ZWN0aW9uLmgiCisjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgi
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yNTc1LDkgKzI1NzYsMTAg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAg
ICAgICAgICAgYXV0byBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICAgICAgICAg
IGF1dG8gdHlwZXMgPSBPcHRpb25TZXQ8RGF0YURldGVjdG9yVHlwZT4geyBtX2ZyYW1lLnNldHRp
bmdzKCkuZGF0YURldGVjdG9yVHlwZXMoKSB9OwogICAgICAgICAgICAgaWYgKGRvY3VtZW50ICYm
IHR5cGVzKSB7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZS5zZXREYXRhRGV0ZWN0aW9uUmVzdWx0
cyhEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlQ29udGVudHMoKmRvY3VtZW50KSwgdHlwZXMsIG1fY2xpZW50LT5kYXRhRGV0ZWN0aW9uQ29u
dGV4dCgpKSk7CisgICAgICAgICAgICAgICAgYXV0byBkb2N1bWVudExldmVsUmVzdWx0cyA9IHJl
dGFpblB0cihEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoKmRvY3VtZW50KSwgdHlwZXMsIG1fY2xpZW50LT5kYXRhRGV0ZWN0
aW9uQ29udGV4dCgpKSk7CisgICAgICAgICAgICAgICAgbV9mcmFtZS5kYXRhRGV0ZWN0aW9uUmVz
dWx0cygpLnNldERvY3VtZW50TGV2ZWxSZXN1bHRzKGRvY3VtZW50TGV2ZWxSZXN1bHRzLmdldCgp
KTsKICAgICAgICAgICAgICAgICBpZiAobV9mcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKG1fZnJh
bWUuZGF0YURldGVjdGlvblJlc3VsdHMoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5kaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24oZG9jdW1lbnRMZXZlbFJlc3VsdHMuZ2V0
KCkpOwogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDI0ZWFlYjNmMjVjODQz
OGNiY2U3N2ZiZDcxZjc3NmI0YTRhYmJmYTcuLmM4MWU1ZTI2MTFkNzZkNWJjN2M0ZGVjOTkxZWM3
Y2I0N2I5NTNmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIAorI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKyNpbmNsdWRlICJEYXRh
RGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCIKKyNlbmRpZgorCiAjZGVmaW5lIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lG
KGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBGcmFtZTo6IiBmbXQs
IHRoaXMsICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMjksNiAr
MTEzMywxNyBAQCBib29sIEZyYW1lOjphcmVQbHVnaW5zRW5hYmxlZCgpCiAgICAgcmV0dXJuIHNl
dHRpbmdzKCkuYXJlUGx1Z2luc0VuYWJsZWQoKTsKIH0KIAorI2lmIEVOQUJMRShEQVRBX0RFVEVD
VElPTikKKworRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlJiBGcmFtZTo6ZGF0YURldGVjdGlv
blJlc3VsdHMoKQoreworICAgIGlmICghbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cykKKyAgICAgICAg
bV9kYXRhRGV0ZWN0aW9uUmVzdWx0cyA9IG1ha2VVbmlxdWU8RGF0YURldGVjdGlvblJlc3VsdHNT
dG9yYWdlPigpOworICAgIHJldHVybiAqbV9kYXRhRGV0ZWN0aW9uUmVzdWx0czsKK30KKworI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA4YzQ0NzQ2ZjYxOTVjOThiNzY2N2EzYmJm
MjY0ZWYyNGYyZjdiMGI4Li42ZjlmMmVkOTQyMmJiMzljNDRmYTMzOTdjZTg4NjQ0ZThmNzEyZDBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29sb3I7CiBjbGFzcyBET01XaW5kb3c7CitjbGFzcyBEYXRhRGV0ZWN0aW9uUmVz
dWx0c1N0b3JhZ2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVkaXRvcjsKIGNsYXNzIEVsZW1l
bnQ7CkBAIC0yMjQsOCArMjI1LDggQEAgcHVibGljOgogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQotICAg
IHZvaWQgc2V0RGF0YURldGVjdGlvblJlc3VsdHMoTlNBcnJheSAqcmVzdWx0cykgeyBtX2RhdGFE
ZXRlY3Rpb25SZXN1bHRzID0gcmVzdWx0czsgfQotICAgIE5TQXJyYXkgKmRhdGFEZXRlY3Rpb25S
ZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5nZXQoKTsgfQor
ICAgIERhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZSogZGF0YURldGVjdGlvblJlc3VsdHNJZkV4
aXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YURldGVjdGlvblJlc3VsdHMuZ2V0KCk7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UmIGRhdGFEZXRlY3Rp
b25SZXN1bHRzKCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zNDgs
NyArMzQ5LDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8U2NyaXB0Q29udHJvbGxlcj4gbV9z
Y3JpcHQ7CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCi0gICAgUmV0YWluUHRyPE5TQXJy
YXk+IG1fZGF0YURldGVjdGlvblJlc3VsdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFEZXRl
Y3Rpb25SZXN1bHRzU3RvcmFnZT4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0czsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdm9pZCBiZXR0ZXJBcHByb3hpbWF0ZU5vZGUoY29u
c3QgSW50UG9pbnQmIHRlc3RQb2ludCwgY29uc3QgTm9kZVF1YWxpZmllciYsIE5vZGUqJiBiZXN0
LCBOb2RlKiBmYWlsZWROb2RlLCBJbnRQb2ludCYgYmVzdFBvaW50LCBJbnRSZWN0JiBiZXN0UmVj
dCwgY29uc3QgSW50UmVjdCYgdGVzdFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jb2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU3
MTI3MjQxNDIyYzAzMWQ4YzY5Zjk5ZTZjNDBhMDMwZTRlNjE0NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlLmgK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQorCisjaW5jbHVkZSAiSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJl
c3VsdElkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFT
UyBERFNjYW5uZXJSZXN1bHQ7CitPQkpDX0NMQVNTIE5TQXJyYXk7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRGF0YURldGVjdGlvblJlc3VsdHNTdG9yYWdlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEYXRhRGV0ZWN0aW9uUmVzdWx0c1N0b3JhZ2UpOworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIERhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFn
ZSgpID0gZGVmYXVsdDsKKworICAgIHZvaWQgc2V0RG9jdW1lbnRMZXZlbFJlc3VsdHMoTlNBcnJh
eSAqcmVzdWx0cykgeyBtX2RvY3VtZW50TGV2ZWxSZXN1bHRzID0gcmVzdWx0czsgfQorICAgIE5T
QXJyYXkgKmRvY3VtZW50TGV2ZWxSZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudExl
dmVsUmVzdWx0cy5nZXQoKTsgfQorCisgICAgRERTY2FubmVyUmVzdWx0ICppbWFnZU92ZXJsYXlE
YXRhRGV0ZWN0aW9uUmVzdWx0KEltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHRJZGVudGlm
aWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1faW1hZ2VPdmVybGF5UmVzdWx0cy5nZXQoaWRlbnRp
ZmllcikuZ2V0KCk7IH0KKyAgICBJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRp
ZmllciBhZGRJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0KEREU2Nhbm5lclJlc3VsdCAq
cmVzdWx0KQorICAgIHsKKyAgICAgICAgYXV0byBuZXdJZGVudGlmaWVyID0gSW1hZ2VPdmVybGF5
RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgICAgIG1faW1h
Z2VPdmVybGF5UmVzdWx0cy5zZXQobmV3SWRlbnRpZmllciwgcmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuIG5ld0lkZW50aWZpZXI7CisgICAgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBtX2RvY3VtZW50TGV2ZWxSZXN1bHRzOworICAgIEhhc2hNYXA8SW1hZ2VPdmVybGF5RGF0
YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIsIFJldGFpblB0cjxERFNjYW5uZXJSZXN1bHQ+PiBt
X2ltYWdlT3ZlcmxheVJlc3VsdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL0ltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL0ltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1
bHRJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdlNzU4YzhkMWU3OWYzODhjZWVhMjNhN2M3OGNk
ODAwNjk0YzI5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
SW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJ
T04pCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2VudW0gSW1hZ2VPdmVybGF5RGF0YURldGVjdGlvblJlc3VsdElkZW50aWZpZXJU
eXBlIHsgfTsKK3VzaW5nIEltYWdlT3ZlcmxheURhdGFEZXRlY3Rpb25SZXN1bHRJZGVudGlmaWVy
ID0gT2JqZWN0SWRlbnRpZmllcjxJbWFnZU92ZXJsYXlEYXRhRGV0ZWN0aW9uUmVzdWx0SWRlbnRp
ZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDRhYTM1M2Y1MGVkODRkNGMxMDBkOGMwMGQ0YWU2N2EyYTFlMjI4YTkuLmQz
ZWQ4NjkwNWVlNzE3MmU5NzI3OWUzMWFmYzU5MmQ2ZGY1ZDdiZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzAsNiArMzMwLDcgQEAKIAog
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFEZXRlY3Rp
b24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RhdGFEZXRlY3Rpb25SZXN1bHRzU3RvcmFnZS5oPgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCkBAIC00MDM2LDIx
ICs0MDM3LDMwIEBAIHZvaWQgV2ViUGFnZTo6cmVtb3ZlRGF0YURldGVjdGVkTGlua3MoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uCiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICBEYXRhRGV0ZWN0aW9uOjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rc0luRG9j
dW1lbnQoKmRvY3VtZW50KTsKLSAgICAgICAgZnJhbWUtPnNldERhdGFEZXRlY3Rpb25SZXN1bHRz
KG51bGxwdHIpOworCisgICAgICAgIGlmIChhdXRvKiByZXN1bHRzID0gZnJhbWUtPmRhdGFEZXRl
Y3Rpb25SZXN1bHRzSWZFeGlzdHMoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEl0IHNlZW1z
IG9kZCB0aGF0IHdlJ3JlIGNsZWFyaW5nIG91dCBhbGwgZGF0YSBkZXRlY3Rpb24gcmVzdWx0cyBo
ZXJlLAorICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiBvbmx5IGRhdGEgZGV0ZWN0b3JzIHRoYXQg
Y29ycmVzcG9uZCB0byBsaW5rcy4KKyAgICAgICAgICAgIHJlc3VsdHMtPnNldERvY3VtZW50TGV2
ZWxSZXN1bHRzKHsgfSk7CisgICAgICAgIH0KICAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIo
eyBtX3BhZ2UtPm1haW5GcmFtZSgpLmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgfSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkZXRlY3REYXRhSW5BbGxG
cmFtZXModWludDY0X3QgdHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YURl
dGVjdGlvblJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIERhdGFEZXRlY3Rp
b25SZXN1bHQgbWFpbkZyYW1lUmVzdWx0OwogICAgIGF1dG8gZGF0YURldGVjdG9yVHlwZXMgPSBP
cHRpb25TZXQ8RGF0YURldGVjdG9yVHlwZT46OmZyb21SYXcodHlwZXMpOwogICAgIGZvciAoYXV0
byBmcmFtZSA9IG1ha2VSZWZQdHIoJm1fcGFnZS0+bWFpbkZyYW1lKCkpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGF1dG8gZG9jdW1lbnQg
PSBtYWtlUmVmUHRyKGZyYW1lLT5kb2N1bWVudCgpKTsKICAgICAgICAgaWYgKCFkb2N1bWVudCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBmcmFtZS0+c2V0RGF0YURldGVjdGlvblJl
c3VsdHMoRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UobWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudCksIGRhdGFEZXRlY3RvclR5cGVzLCBtX2RhdGFEZXRl
Y3Rpb25Db250ZXh0LmdldCgpKSk7CisgICAgICAgIGF1dG8gcmVzdWx0cyA9IHJldGFpblB0cihE
YXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMoKmRvY3VtZW50KSwgZGF0YURldGVjdG9yVHlwZXMsIG1fZGF0YURldGVjdGlvbkNv
bnRleHQuZ2V0KCkpKTsKKyAgICAgICAgZnJhbWUtPmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkuc2V0
RG9jdW1lbnRMZXZlbFJlc3VsdHMocmVzdWx0cy5nZXQoKSk7CisgICAgICAgIGlmIChmcmFtZS0+
aXNNYWluRnJhbWUoKSkKKyAgICAgICAgICAgIG1haW5GcmFtZVJlc3VsdC5yZXN1bHRzID0gV1RG
TW92ZShyZXN1bHRzKTsKICAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoeyBtX3BhZ2UtPm1h
aW5GcmFtZSgpLmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgfSk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShtYWluRnJhbWVSZXN1bHQpKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggZmQ5ZmI4YjRiMDMyZGM3MjY3MzE5ZmM0ZmIwODliYjFhZjM3
YzcyZS4uM2FjMzZkODY0NzJjMDdiMTg3YjlhNDY5YTYzMDMxOGNmOWQwN2Q3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAg
LTY5LDYgKzY5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29udGVudENoYW5nZU9ic2VydmVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVRpbWVySG9sZGluZ1RhbmsuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGF0YURldGVjdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uUmVzdWx0
c1N0b3JhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RvY3VtZW50TG9hZGVyLmg+CkBAIC0yNzQ4LDcgKzI3NDksOCBAQCBzdGF0aWMgdm9pZCBk
YXRhRGV0ZWN0b3JMaW5rUG9zaXRpb25JbmZvcm1hdGlvbihFbGVtZW50JiBlbGVtZW50LCBJbnRl
cmFjdGlvbkluZgogICAgIGluZm8uaXNEYXRhRGV0ZWN0b3JMaW5rID0gdHJ1ZTsKICAgICBjb25z
dCBpbnQgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCA9IDM1MDsKICAgICBpbmZv
LmRhdGFEZXRlY3RvcklkZW50aWZpZXIgPSBEYXRhRGV0ZWN0aW9uOjpkYXRhRGV0ZWN0b3JJZGVu
dGlmaWVyKGVsZW1lbnQpOwotICAgIGluZm8uZGF0YURldGVjdG9yUmVzdWx0cyA9IGVsZW1lbnQu
ZG9jdW1lbnQoKS5mcmFtZSgpLT5kYXRhRGV0ZWN0aW9uUmVzdWx0cygpOworICAgIGlmIChhdXRv
KiByZXN1bHRzID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPmRhdGFEZXRlY3Rpb25SZXN1
bHRzSWZFeGlzdHMoKSkKKyAgICAgICAgaW5mby5kYXRhRGV0ZWN0b3JSZXN1bHRzID0gcmVzdWx0
cy0+ZG9jdW1lbnRMZXZlbFJlc3VsdHMoKTsKIAogICAgIGlmICghRGF0YURldGVjdGlvbjo6cmVx
dWlyZXNFeHRlbmRlZENvbnRleHQoZWxlbWVudCkpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>