<?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>234350</bug_id>
          
          <creation_ts>2021-12-15 09:08:55 -0800</creation_ts>
          <short_desc>Many call sites use makeNeverDestroyed, but could instead take advantage of the NeverDestroyed deduction guide</short_desc>
          <delta_ts>2021-12-16 17:30:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234412</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824379</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-15 09:08:55 -0800</bug_when>
    <thetext>Many call sites use makeNeverDestroyed, but could instead take advantage of the NeverDestroyed deduction guide</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824484</commentid>
    <comment_count>1</comment_count>
      <attachid>447271</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-15 12:28:00 -0800</bug_when>
    <thetext>Created attachment 447271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824499</commentid>
    <comment_count>2</comment_count>
      <attachid>447277</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-15 12:44:27 -0800</bug_when>
    <thetext>Created attachment 447277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824551</commentid>
    <comment_count>3</comment_count>
      <attachid>447287</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-15 14:41:01 -0800</bug_when>
    <thetext>Created attachment 447287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824583</commentid>
    <comment_count>4</comment_count>
      <attachid>447298</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-15 16:43:15 -0800</bug_when>
    <thetext>Created attachment 447298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824597</commentid>
    <comment_count>5</comment_count>
      <attachid>447287</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-15 17:03:47 -0800</bug_when>
    <thetext>Comment on attachment 447287
Patch

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

r=me, but it should probably build on all the bots first.

&gt; Source/WebCore/Modules/mediasession/MediaSession.cpp:80
&gt; +    static constexpr SortedArrayMap map { mappings };

Nice.

&gt; Source/WebCore/page/DebugPageOverlays.cpp:155
&gt; +    static NeverDestroyed regionColors { MemoryCompactLookupOnlyRobinHoodHashMap&lt;String, SRGBA&lt;uint8_t&gt;&gt; { {

This should really be converted to a SortedArrayMap at some point.

&gt; Source/WebCore/page/PerformanceUserTiming.cpp:46
&gt; +    static NeverDestroyed map = MemoryCompactLookupOnlyRobinHoodHashMap&lt;String, NavigationTimingFunction&gt; {

Can this use a SortedArrayMap as well? (not sure what would happen with the member function pointers).

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:376
&gt; +    static NeverDestroyed map = MemoryCompactLookupOnlyRobinHoodHashSet&lt;AtomString&gt; {

I wonder if the AtomicString hashing optimization is actually faster than a SortedArraySet here. (it would be good to have a rough feeling of where the cutoff is).

&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1767
&gt; +    static NeverDestroyed propertyKeyName = [] {

If this is only used on apple platforms (e.g. not on Windows), it might make sense to convert this objective-c and use @[] which is even more constant.

&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:559
&gt;          HashSet&lt;String, ASCIICaseInsensitiveHash&gt; types;

I think this could be simplified to:

static NeverDestroyed types = HashSet&lt;String, ASCIICaseInsensitiveHash&gt; {
#if ENABLE(VP9)
        &quot;video/webm&quot;;
#endif
#if ENABLE(VORBIS) || ENABLE(OPUS)
        &quot;audio/webm&quot;;
#endif
    };


or something thereabouts.

That said, the only user of this just iterates the whole set, so it could just be a Span of a constexpr array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824601</commentid>
    <comment_count>6</comment_count>
      <attachid>447287</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-15 17:09:34 -0800</bug_when>
    <thetext>Comment on attachment 447287
Patch

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

&gt;&gt; Source/WebCore/page/DebugPageOverlays.cpp:155
&gt;&gt; +    static NeverDestroyed regionColors { MemoryCompactLookupOnlyRobinHoodHashMap&lt;String, SRGBA&lt;uint8_t&gt;&gt; { {
&gt; 
&gt; This should really be converted to a SortedArrayMap at some point.

I thought to myself: Need to look at every use of MemoryCompactLookupOnlyRobinHoodHashMap, at least, to see if SortedArrayMap is better suited. I worry that the hashing may still be a little faster, so it’s not always an automatic win, but the sorted array will definitely use less memory. Probably will change many of them.

&gt;&gt; Source/WebCore/page/PerformanceUserTiming.cpp:46
&gt;&gt; +    static NeverDestroyed map = MemoryCompactLookupOnlyRobinHoodHashMap&lt;String, NavigationTimingFunction&gt; {
&gt; 
&gt; Can this use a SortedArrayMap as well? (not sure what would happen with the member function pointers).

It absolutely can. Should work fine with those pointers. The reason I didn’t do the conversion was my uncertainty mentioned above.

&gt;&gt; Source/WebCore/platform/graphics/FontCascade.cpp:376
&gt;&gt; +    static NeverDestroyed map = MemoryCompactLookupOnlyRobinHoodHashSet&lt;AtomString&gt; {
&gt; 
&gt; I wonder if the AtomicString hashing optimization is actually faster than a SortedArraySet here. (it would be good to have a rough feeling of where the cutoff is).

Great insight. I would indeed love to use SortedArraySet instead if it’s a win.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:1767
&gt;&gt; +    static NeverDestroyed propertyKeyName = [] {
&gt; 
&gt; If this is only used on apple platforms (e.g. not on Windows), it might make sense to convert this objective-c and use @[] which is even more constant.

I think it’s used only on Windows.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/SourceBufferParserWebM.cpp:559
&gt;&gt;          HashSet&lt;String, ASCIICaseInsensitiveHash&gt; types;
&gt; 
&gt; I think this could be simplified to:
&gt; 
&gt; static NeverDestroyed types = HashSet&lt;String, ASCIICaseInsensitiveHash&gt; {
&gt; #if ENABLE(VP9)
&gt;         &quot;video/webm&quot;;
&gt; #endif
&gt; #if ENABLE(VORBIS) || ENABLE(OPUS)
&gt;         &quot;audio/webm&quot;;
&gt; #endif
&gt;     };
&gt; 
&gt; 
&gt; or something thereabouts.
&gt; 
&gt; That said, the only user of this just iterates the whole set, so it could just be a Span of a constexpr array.

Both great points. I will come back and improve this after landing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824773</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-16 08:54:27 -0800</bug_when>
    <thetext>Committed r287138 (?): &lt;https://commits.webkit.org/r287138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824774</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-16 08:55:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/86578814&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447271</attachid>
            <date>2021-12-15 12:28:00 -0800</date>
            <delta_ts>2021-12-15 12:57:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234350-20211215122759.patch</filename>
            <type>text/plain</type>
            <size>161979</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFkZTI5MzJmYmUyOTJkYjUxMmVlMTY0
MzRiNGQ4NWMyYTMzODlmYjUuLjZjNTRiZWNlM2U3ZDExYjA1YTI4NjkxMzhhNGMzZjYyYTE2N2Iw
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1hbnkgY2FsbCBzaXRlcyB1c2UgbWFrZU5ldmVyRGVzdHJv
eWVkLCBidXQgY291bGQgaW5zdGVhZCB0YWtlIGFkdmFudGFnZSBvZiB0aGUgTmV2ZXJEZXN0cm95
ZWQgZGVkdWN0aW9uIGd1aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9OZXZlckRlc3Ryb3llZC5oOgorICAgICAgICAoV1RGOjptYWtlTmV2
ZXJEZXN0cm95ZWQpOiBEZWxldGVkLgorCisgICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0
b3IpOiBVc2UgZGVkdWN0aW9uIGd1aWRlLgorCiAyMDIxLTEyLTE1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEFkb3B0IC1bTlNTY3JlZW4gc2FmZUFy
ZWFJbnNldHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAzMTZlNzFmMDk0MDYwOTVhZDI2MjdlY2VkNzAyZWYz
NmUyZGZlNi4uYzdlOTk3YjlkNDJiZTU5MmU2OTA4NjE0MDBkMTE4Yjk5M2YzYjJmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4NSBAQAorMjAyMS0xMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFueSBjYWxsIHNpdGVzIHVzZSBtYWtlTmV2ZXJEZXN0cm95
ZWQsIGJ1dCBjb3VsZCBpbnN0ZWFkIHRha2UgYWR2YW50YWdlIG9mIHRoZSBOZXZlckRlc3Ryb3ll
ZCBkZWR1Y3Rpb24gZ3VpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omluc3RhbGxlZENETUZhY3Rvcmllcyk6IFVzZSBOZXZlckRlc3Ry
b3llZCBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSBtYWtlTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKTogVXNlIFNvcnRlZEFy
cmF5TWFwLCBvYnZpYXRpbmcgdGhlIG5lZWQgZm9yCisgICAgICAgIGFueSB1c2Ugb2YgTmV2ZXJE
ZXN0cm95ZWQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUgY29uc3QpOiBVc2UgU3BhbiBpbnN0ZWFkIG9mCisg
ICAgICAgIFZlY3RvciwgYWxsb3dpbmcgdXMgdG8gdXNlIGNvbnN0ZXhwciBhcnJheXMgcmF0aGVy
IHRoYW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIGEgVmVjdG9yLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVO
YW1lc10pOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAg
ICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IERpdHRvLgorICAgICAgICAocHJpbnRXcmFwcGVy
RmFjdG9yeUNwcEZpbGUpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omh0bWxFbGVtZW50RXF1aXZhbGVudHMpOiBSZXR1cm4g
YSBTcGFuIGluc3RlYWQgb2YgYSBWZWN0b3ImLAorICAgICAgICBhbGxvd2luZyB1cyB0byB1c2Ug
Y29uc3QgYXJyYXlzIHJhdGhlciB0aGFuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBhIFZlY3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6Omh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cyk6IERpdHRvLgorCisg
ICAgICAgICogZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNFbGVtZW50Rm9yRm9ybWF0QmxvY2spOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGVk
aXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1l
bnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHJvaGliaXRl
ZFBhcmFncmFwaENoaWxkKTogVXNlIGRlZHVjdGlvbiwgYWxzbyBjaGFuZ2UgdGhlIHRhZ3MgYXJy
YXkKKyAgICAgICAgdG8gYmUgYSBjb25zdGV4cHIgYXJyYXkgc28gd2UgZG9uJ3QgaGF2ZSB0byB1
c2UgcmVhZC93cml0ZSBtZW1vcnkgZm9yIGl0LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tOgorICAgICAgICAoV2ViRGVmYXVsdEZvbnQpOiBVc2UgZGVkdWN0aW9u
LgorICAgICAgICAoZGVmYXVsdFBhcmFncmFwaFN0eWxlKTogRGl0dG8uCisgICAgICAgICogaHRt
bC9BdXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWVsZE5hbWVNYXApOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKTogVXNlIGRlZHVjdGlvbiwgYWxz
byBjaGFuZ2UKKyAgICAgICAgdGhlIG5hbWVzIGFycmF5IHRvIGJlIGEgY29uc3RleHByIGFycmF5
IHNvIHdlIGRvbid0IGhhdmUgdG8gdXNlIHJlYWQvd3JpdGUgbWVtb3J5IGZvciBpdC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6IFVzZSBzdGQ6OmFycmF5IGRl
ZHVjdGlvbgorICAgICAgICBzbyB3ZSBkb24ndCBoYXZlIHRvIHdyaXRlIG91dCB0aGUgTGF6eU5l
dmVyRGVzdHJveWVkIHR5cGUgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1
cmUpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZFBhZ2VVUkwpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvdWNoRXZlbnRSZWdpb25Db2xvcnMpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1Bl
cmZvcm1hbmNlVXNlclRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdGVkTWFy
a05hbWVzVG9OYXZpZ2F0aW9uVGltaW5nRnVuY3Rpb25NYXApOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZCk6IFVzZSBTcGFuIGluc3RlYWQgb2YgVmVjdG9yLCBhbGxvd2luZyB1cyB0byB1c2UgY29uc3Rl
eHByIGFycmF5cworICAgICAgICByYXRoZXIgdGhuYSBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgYSBW
ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjptYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKTogRGl0dG8uIEFsc28g
dXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5TZWN1cmVTY2hlbWVzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVt
ZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXMpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZ3hDb21w
aWxlclNlcnZpY2VzKTogVXNlIFNwYW4gaW5zdGVhZCBvZiBhIFZlY3RvciYsIGFsbG93aW5nIHVz
CisgICAgICAgIHRvIHVzZSBhIGNvbnN0ZXhwciBhcnJheSByYXRoZXIgdGhhbiBhbGxvY2F0aW5n
IG1lbW9yeSBmb3IgYSB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjphZ3hDb21waWxlckNsYXNz
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2Uu
aDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXApOiBVc2Ug
ZGVkdWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3Rl
bmVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjptZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0
Zm9ybUNvbW1hbmQpOiBVc2UgU29ydGVkQXJyYXlNYXAsIG92YnZpYXRpbmcgdGhlCisgICAgICAg
IG5lZWQgZm9yIGFueSB1c2Ugb2YgTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Om9ic2VydmVkRXZl
bnROYW1lcyk6IFJldHVybiBhIFNwYW4KKyAgICAgICAgaW5zdGVhZCBvZiBhIFZlY3RvciYsIGFs
bG93aW5nIHVzIHRvIHVzZSBhbiBhcnJheSByYXRoZXIgdGhhbiBhbGxvY2F0aW5nCisgICAgICAg
IG1lbW9yeSBmb3IgYSBWZWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcm94eUZhY3Rvcnk6OnJlZ2lz
dGVyZWRGYWN0b3JpZXMpOiBVc2UgZGVkdWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXNlQmFja3NsYXNoQXNZ
ZW5TaWduRm9yRmFtaWx5KTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGggY29uc3QpOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnN0YWxsZWRGYWN0b3JpZXMpOiBVc2UgTmV2ZXJEZXN0cm95ZWQgZGlyZWN0bHksIG5vdCBt
YWtlTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXpl
Lmg6IEFkZGVkIGNvbnN0ZXhwciBzbyBtYW55IG9wZXJhdGlvbnMgY2FuIGJlIGRvbmUKKyAgICAg
ICAgYXQgY29tcGlsZSB0aW1lIGFzIG5lZWRlZDsgbWFpbmx5IHRoaXMgd2FzIHNvIHdlIGNhbiBt
YWtlIGEgY29uc3RleHByIGFycmF5IG9mCisgICAgICAgIHRoZXNlIHNpemVzLiBUaGlzIHNhbWUg
ZW5oYW5jZW1lbnQgY2FuIGJlIGFwcGxpZWQgdG8gb3RoZXIgdHlwZXMsIGJ1dCBqdXN0IGRpZAor
ICAgICAgICBpdCBoZXJlIGZvciBub3cuIEFsc28gZml4ZWQgcmV0dXJuIHZhbHVlcyBmb3IgbWlu
L21heERpbWVuc2lvbiB0aGF0IHdlcmUgYWNjaWRlbnRhbGx5CisgICAgICAgIHJldHVybmluZyBm
bG9hdCwgaHVydGluZyBwZXJmb3JtYW5jZSBiZWNhdXNlIG9mIHRoZSByb3VuZCB0cmlwIGludCB0
byBmbG9hdCwKKyAgICAgICAgYWxzbyBub3QgY2xlYW5seSByb3VuZCB0cmlwcGluZyB2ZXJ5IGxh
cmdlIGFuZCBzbWFsbCB2YWx1ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3RhdGljTUlNRVR5cGVMaXN0
KTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVm
YXVsdFN1cHBvcnRlZEltYWdlVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpt
YXRjaFN5c3RlbUZvbnRVc2UpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OndlYm1NSU1FVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZFZpZGVvQ29kZWNzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRBdWRp
b0NvZGVjcyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0
ZXJzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmYWN0b3Jp
ZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlOjpzdGFuZGFyZFZpZGVvU2l6ZXMpOiBVc2UgYSBjb25zdGV4cHIKKyAgICAgICAg
Z2xvYmFsIGFycmF5IGluc3RlYWQgb2YgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSB2ZWN0b3Ig
Zm9yIHRoaXMuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6
c3VwcG9ydHNDYXB0dXJlU2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTdXBwb3J0ZWRTaXplQW5kRnJhbWVSYXRlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2UuaDogUmVtb3ZlZCB0aGUgZGVjbGFyYXRpb24KKyAgICAgICAgb2YgdGhlIHN0YW5kYXJkVmlk
ZW9TaXplcywgd2hpY2ggd2FzIG5ldmVyIHVzZWQgb3V0c2lkZSB0aGUgZmlsZS9jbGFzcyBzbwor
ICAgICAgICBkaWQgbm90IGhhdmUgdG8gYmUgYSBwdWJsaWMgbWVtYmVyIGZ1bmN0aW9uLiBJZiB3
ZSBkbyBmaW5kIHdlIG5lZWQgdGhpcworICAgICAgICB3ZSBjYW4gYWx3YXlzIHR1cm4gaXQgYmFj
ayBpbnRvIGEgZnVuY3Rpb24sIGJ1dCBvbmUgdGhhdCByZXR1cm5zIGEgU3Bhbi4KKworICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZGV2aWNlcyk6IFVzZSBkZWR1Y3Rpb24uCisgICAgICAgIChXZWJDb3Jl
OjpkZXZpY2VNYXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjptaWNyb3Bob25lRGV2aWNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNwZWFrZXJEZXZpY2VzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmlkZW9E
ZXZpY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6ZGlzcGxheURldmljZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1pbWVUeXBlQ2FjaGUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvblF1
ZXVlRm9yQXN5bmNDbGllbnRzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3JlOjp0b2tlbml6ZXJGb3JTdHJpbmcp
OiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uIGNvbnN0
KTogVXNlCisgICAgICAgIE5ldmVyRGVzdHJveWVkIGRpcmVjdGx5IGluc3RlYWQgb2YgbWFrZU5l
dmVyRGVzdHJveWVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDb2NvYTo6Y2FjaGVkU3lzdGVtRm9udERlc2Ny
aXB0aW9uIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50Ojppc1N1cHBvcnRl
ZEF0dHJpYnV0ZSk6IFVzZSBkZWR1Y3Rpb24uCisKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVOYW1lVG9DU1NQcm9wZXJ0eUlE
TWFwKTogVXNlIGEgY29uc3RleHByIGFycmF5CisgICAgICAgIGluc3RlYWQgb2YgYSBjb25zdCBv
bmUgdGhhdCBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQgYXQgcnVudGltZS4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VsZW1lbnQ6OmFuaW1hdGFibGVBdHRyaWJ1dGVGb3JOYW1lKTogRGl0dG8sIGFsc28g
dXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNzc1Byb3BlcnR5
SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKTogVXNlIGRlZHVjdGlvbi4KKworICAgICAgICAqIHN2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVs
ZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKiB4
bWwvWFBhdGhGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bmN0aW9u
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WFBhdGg6OnBhcnNlQXhpc05hbWUpOiBEaXR0by4KKwogMjAyMS0xMi0xNSAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBZG9wdCAt
W05TU2NyZWVuIHNhZmVBcmVhSW5zZXRzXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZDRhNWI5OTUzM2MzZTJkYTE2
MDdhZDViZWUwZTQxNTJhOTM4OTY3Li41NGI5OWM5ZWU2NDZhNWM0OTc4ODExZGEwZjc4MWUwMGQ4
ZjUxNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTEyLTE1ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYW55IGNhbGwgc2l0ZXMgdXNlIG1ha2VO
ZXZlckRlc3Ryb3llZCwgYnV0IGNvdWxkIGluc3RlYWQgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIE5l
dmVyRGVzdHJveWVkIGRlZHVjdGlvbiBndWlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJp
ZXMpOgorICAgICAgICBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpleHBlY3RlZFRhYmxlQW5kSW5kZXhR
dWVyaWVzKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2Vy
Q2hlY2tzLm1tOgorICAgICAgICAoV2ViS2l0OjpnZXRBcHBCb3VuZERvbWFpbnNUZXN0aW5nKTog
RGl0dG8uCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKTogTWFrZSB0aGlz
IG1vcmUgZ2VuZXJpYyBzbyBpdCB3b3JrcyB3aXRoCisgICAgICAgIG90aGVyIGtpbmRzIG9mIGNv
bGxlY3Rpb25zLCBub3QganVzdCBWZWN0b3IuIEFsc28gcmlnaHQtc2l6ZSB0aGUgVmVjdG9yIHRo
aXMKKyAgICAgICAgcmV0dXJucyByYXRoZXIgdGhhbiBsZXR0aW5nIGl0IGdyb3cgb3JnYW5pY2Fs
bHkuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFu
ZGxlc0ZvckZpbGVzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCk6IERpdHRv
LiBBbHNvIHVwZGF0ZSB0aGlzCisgICAgICAgIGZ1bmN0aW9uIHRvIHRha2UgYSBTcGFuIG9yIGFu
IGluaXRpYWxpemVyX2xpc3QgaW5zdGVhZCBvZiBhIFZlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5l
bnRseSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4gQWxzbyBjb3JyZWN0ZWQgc29tZSB1bnVzdWFsCisgICAgICAgIHVz
ZSBvZiAjaWYgdG8gc2hhcmUgYSBzaW5nbGUgZGVjbGFyYXRpb24gb2Ygc29tZSBmdW5jdGlvbnMg
Zm9yIGJvdGggZW5hYmxlZAorICAgICAgICBhbmQgZGlzYWJsZWQgU0FOREJPWF9FWFRFTlNJT05T
LgorCisgICAgICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpub25Ccm93c2VyU2VydmljZXMpOiBVc2UgZGVkdWN0aW9uLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmF0dGFjaG1l
bnRFbGVtZW50U2VydmljZXMpOiBSZXR1cm4gYSBTcGFuLCBhbGxvd2luZyB1cyB0byB1c2UgYQor
ICAgICAgICBjb25zdGV4cHIgb2J2aWF0aW5nIHRoZSBuZWVkIGZvciBtZW1vcnkgYWxsb2NhdGlv
biBvciByZWFkL3dyaXRlIG1lbW9yeSwKKyAgICAgICAgKFdlYktpdDo6Z3B1SU9LaXRDbGFzc2Vz
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmdwdU1hY2hTZXJ2aWNlcyk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjptZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKTogRGl0dG8uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjptdXRhYmxl
U3RhdGUpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHN1cHBvcnRlZFBh
c3RlYm9hcmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb25dKTogRGl0dG8uCisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6bXV0YWJsZVN0
YXRlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OnRlbXBvcmFyeVBERkRpcmVjdG9yeVBhdGgpOiBEaXR0by4KKwog
MjAyMS0xMi0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBBZG9wdCAtW05TU2NyZWVuIHNhZmVBcmVhSW5zZXRzXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDhjZTM2MzBjMmI4ZmUyMDJlNzk4ZjZlM2I0YWZjZTZmYjBiNzMxY2UuLjQ0
ZTk5ZWQzNzcyYzIxZWFmMDU3ZTliMzE5M2E2ZDE3NDQzYmE1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMi0xNSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFueSBjYWxsIHNpdGVzIHVzZSBtYWtlTmV2ZXJE
ZXN0cm95ZWQsIGJ1dCBjb3VsZCBpbnN0ZWFkIHRha2UgYWR2YW50YWdlIG9mIHRoZSBOZXZlckRl
c3Ryb3llZCBkZWR1Y3Rpb24gZ3VpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAg
ICh3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSk6IFVzZSBkZWR1Y3Rpb24uCisg
ICAgICAgICh3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSk6CisgICAgICAgICogTWlz
Yy9XZWJOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9yYW5nZU9m
VVJMU2NoZW1lXSk6IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToK
KyAgICAgICAgKCtbV2ViRGF0YVNvdXJjZSBfcmVwVHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9u
Ol0pOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAg
KCtbV2ViRnJhbWVWaWV3IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOl0pOiBEaXR0
by4KKwogMjAyMS0xMi0xNCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL05ldmVyRGVzdHJveWVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5o
CmluZGV4IGJlZjM3ZGYxMDFlZGI3OTllZDc3MjRiYmIwNmRhOWYxOGQ1MGRkMzIuLjJmMjY0NGZh
ZDE1NjMzOTJlYjRhMDY1NWY3Y2NkYzgzNzNlYzg5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL05ldmVyRGVzdHJveWVkLmgKKysrIGIvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQu
aApAQCAtMTA0LDggKzEwNCw2IEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVk
X3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0eXBlIG1f
c3RvcmFnZTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFjY2Vzc1RyYWl0
cyA9IEFueVRocmVhZHNBY2Nlc3NUcmFpdHM+IE5ldmVyRGVzdHJveWVkPFQsIEFjY2Vzc1RyYWl0
cz4gbWFrZU5ldmVyRGVzdHJveWVkKFQmJik7Ci0KIC8vIEZJWE1FOiBJdCdzIG1lc3N5IHRvIGhh
dmUgdG8gcmVwZWF0IHRoZSB3aG9sZSBjbGFzcyBqdXN0IHRvIG1ha2UgdGhpcyAibGF6eSIgdmVy
c2lvbi4KIC8vIFNob3VsZCByZXZpc2l0IGNsaWVudHMgdG8gc2VlIGlmIHdlIHJlYWxseSBuZWVk
IHRoaXMsIGFuZCBwZXJoYXBzIHVzZSB0ZW1wbGF0ZXMgdG8KIC8vIHNoYXJlIG1vcmUgb2YgdGhl
IGNvZGUgd2l0aCB0aGUgbWFpbiBOZXZlckRlc3Ryb3llZCBhYm92ZS4KQEAgLTE4MSwyMyArMTc5
LDE0IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IE5ldmVyRGVzdHJveWVkKFQp
IC0+IE5ldmVyRGVzdHJveWVkPFQ+OwogCi0vLyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24s
IHJlbHlpbmcgaW5zdGVhZCBvbiB0aGUgZGVkdWN0aW9uIGd1aWRlIGZvciBOZXZlckRlc3Ryb3ll
ZCBhYm92ZS4KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFjY2Vzc1RyYWl0cz4gaW5s
aW5lIE5ldmVyRGVzdHJveWVkPFQsIEFjY2Vzc1RyYWl0cz4gbWFrZU5ldmVyRGVzdHJveWVkKFQm
JiBhcmd1bWVudCkKLXsKLSAgICByZXR1cm4gc3RkOjpmb3J3YXJkPFQ+KGFyZ3VtZW50KTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVzaW5nIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZCA9
IE5ldmVyRGVzdHJveWVkPFQsIE1haW5UaHJlYWRBY2Nlc3NUcmFpdHM+OwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdXNpbmcgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkID0gTmV2ZXJEZXN0cm95ZWQ8
VCwgTWFpblRocmVhZEFjY2Vzc1RyYWl0cz47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci11c2lu
ZyBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkID0gTGF6eU5ldmVyRGVzdHJveWVkPFQsIE1h
aW5UaHJlYWRBY2Nlc3NUcmFpdHM+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdXNpbmcgTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZCA9IExhenlOZXZlckRlc3Ryb3llZDxULCBNYWluVGhyZWFk
QWNjZXNzVHJhaXRzPjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGOwogCiB1c2luZyBXVEY6OkxhenlO
ZXZlckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6TmV2ZXJEZXN0cm95ZWQ7Ci11c2luZyBXVEY6Om1h
a2VOZXZlckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6TWFpblRocmVhZE5ldmVyRGVzdHJveWVkOwog
dXNpbmcgV1RGOjpNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkOwogdXNpbmcgV1RGOjpBbnlU
aHJlYWRzQWNjZXNzVHJhaXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9T
dHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3Bw
CmluZGV4IDFlMjM2NDcxNGY4Yjc4MGE0NzEwNmNiMDkyZWI4N2ViMzEyZTRhZWMuLjlmNDBjMDVj
MzRmMzY3NWE3MDFmNzExOWJjNDE0NjVmNWIyYjAxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2Nm
L1N0cmluZ0ltcGxDRi5jcHAKQEAgLTEwNiwxMCArMTA2LDEwIEBAIG5hbWVzcGFjZSBTdHJpbmdX
cmFwcGVyQ0ZBbGxvY2F0b3IgewogCiAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
cigpCiAgICAgewotICAgICAgICBzdGF0aWMgYXV0byBhbGxvY2F0b3IgPSBtYWtlTmV2ZXJEZXN0
cm95ZWQoW10geworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYWxsb2NhdG9yID0gW10g
ewogICAgICAgICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxwdHIs
IHJldGFpbiwgcmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0ZSwg
ZGVhbGxvY2F0ZSwgcHJlZmVycmVkU2l6ZSB9OwogICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZBbGxvY2F0b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpKTsKLSAgICAgICAgfSgpKTsKKyAg
ICAgICAgfSgpOwogICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmdldCgpLmdldCgpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggMjk4MjM3NTFkNGM1OTQyNjcwOGFiODY0YWI0YWNh
MWU5NDY5NTAyZC4uMWYxYmVjN2MzMzQyNGZlMDg0Mjc1NDhmMDcyY2M3ZGZkMTJmZDBjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE0uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyB2b2lkIHBsYXRmb3Jt
UmVnaXN0ZXJGYWN0b3JpZXMoVmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+JiBmYWN0b3JpZXMpCiAK
IHN0YXRpYyBWZWN0b3I8TGVnYWN5Q0RNRmFjdG9yeT4mIGluc3RhbGxlZENETUZhY3Rvcmllcygp
CiB7Ci0gICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZDxWZWN0b3I8TGVn
YWN5Q0RNRmFjdG9yeT4+KHsgfSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxM
ZWdhY3lDRE1GYWN0b3J5Pj4gY2RtczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgcmVnaXN0
ZXJEZWZhdWx0czsKICAgICBzdGQ6OmNhbGxfb25jZShyZWdpc3RlckRlZmF1bHRzLCBbJl0gewog
ICAgICAgICBwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKGNkbXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMzlj
Y2MxNGUyMWI4ZjdhYTY2ODIzOTVmZmMxMGYyY2M4MGRhNmVlOC4uZTA3NzIwODQ1NWUxN2NkZjc2
Y2RjZGRmOGI5MzA3MTkzYmQ4ZTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgog
I2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFw
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsMjcgKzY2LDE5IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKQogCiBzdGF0aWMgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25B
Y3Rpb24oTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0
byBjb21tYW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgdXNpbmcgQWN0
aW9uVG9Db21tYW5kTWFwID0gSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIEludEhhc2g8TWVkaWFTZXNzaW9u
QWN0aW9uPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxNZWRpYVNlc3Npb25BY3Rpb24+PjsK
LQotICAgICAgICByZXR1cm4gQWN0aW9uVG9Db21tYW5kTWFwIHsKLSAgICAgICAgICAgIHsgTWVk
aWFTZXNzaW9uQWN0aW9uOjpQbGF5LCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQg
fSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpQYXVzZSwgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlBhdXNlQ29tbWFuZCB9LAotICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rp
b246OlNlZWtmb3J3YXJkLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5k
IH0sCi0gICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2JhY2t3YXJkLCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCB9LAotICAgICAgICAgICAgeyBN
ZWRpYVNlc3Npb25BY3Rpb246OlByZXZpb3VzdHJhY2ssIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
cmV2aW91c1RyYWNrQ29tbWFuZCB9LAotICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246
Ok5leHR0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwKLSAg
ICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTdG9wLCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U3RvcENvbW1hbmQgfSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVr
dG8sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCB9
LAotICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNraXBhZCwgUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwKLSAgICAgICAgfTsKLSAgICB9KCkpOwotCi0g
ICAgYXV0byBpdCA9IGNvbW1hbmRNYXAuZ2V0KCkuZmluZChhY3Rpb24pOwotICAgIGlmIChpdCAh
PSBjb21tYW5kTWFwLmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwotCi0g
ICAgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQ7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OnBhaXI8TWVkaWFTZXNzaW9uQWN0aW9uLCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiBtYXBwaW5nc1tdIHsKKyAgICAgICAgeyBNZWRp
YVNlc3Npb25BY3Rpb246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9
LAorICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2UsIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpQYXVzZUNvbW1hbmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWti
YWNrd2FyZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQgfSwKKyAg
ICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtmb3J3YXJkLCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIH0sCisgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9u
OjpQcmV2aW91c3RyYWNrLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1h
bmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246Ok5leHR0cmFjaywgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25B
Y3Rpb246OlNraXBhZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwK
KyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTdG9wQ29tbWFuZCB9LAorICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla3RvLCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQgfSwKKyAg
ICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgbWFwIHsgbWFwcGluZ3Mg
fTsKKyAgICByZXR1cm4gbWFwLmdldChhY3Rpb24sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0Nv
bW1hbmQpOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbW1hbmRBcmd1bWVudD4+IHBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vzc2lvbkFj
dGlvbihjb25zdCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzJiBhY3Rpb25EZXRhaWxzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKaW5kZXggNTI2MGM2N2E4NWRhZmQxZDY5N2NjMGQ4MDYyOTJiMzEwZjUy
MTI1ZS4uY2M3OWRlYjIzMWRmZjI3ZWE5MjU1ZTRhZWM5NzQ5Nzg2YzBiNGYxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCkBAIC0zMjE0LDE4ICszMjE0LDE4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdAogICAgIC8vIHRo
b3NlIGNoaWxkIGVsZW1lbnRzIGFyZSBhbHNvIHByZXNlbnRhdGlvbmFsLiBGb3IgZXhhbXBsZSwg
PGxpPiBiZWNvbWVzIHByZXNlbnRhdGlvbmFsIGZyb20gPHVsPi4KICAgICAvLyBodHRwOi8vd3d3
LnczLm9yZy9XQUkvUEYvYXJpYS9jb21wbGV0ZSNwcmVzZW50YXRpb24KIAotICAgIGNvbnN0IFZl
Y3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+KiBwYXJlbnRUYWdzOworICAgIFNwYW48Y29u
c3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lPiogY29uc3Q+IHBh
cmVudFRhZ3M7CiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewogICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RJdGVtOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJr
ZXI6IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGF1dG8gbGlzdEl0ZW1QYXJlbnRzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+IHsgJmRsVGFnLmdl
dCgpLCAmb2xUYWcuZ2V0KCksICZ1bFRhZy5nZXQoKSB9KTsKLSAgICAgICAgcGFyZW50VGFncyA9
ICZsaXN0SXRlbVBhcmVudHMuZ2V0KCk7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjph
cnJheSBsaXN0SXRlbVBhcmVudHMgeyAmZGxUYWcsICZvbFRhZywgJnVsVGFnIH07CisgICAgICAg
IHBhcmVudFRhZ3MgPSBsaXN0SXRlbVBhcmVudHM7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbDoKICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpDZWxsOiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBhdXRvIHRhYmxlQ2VsbFBhcmVu
dHMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lKj4g
eyAmdGFibGVUYWcuZ2V0KCkgfSk7Ci0gICAgICAgIHBhcmVudFRhZ3MgPSAmdGFibGVDZWxsUGFy
ZW50cy5nZXQoKTsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHRhYmxlQ2Vs
bFBhcmVudHMgeyAmdGFibGVUYWcgfTsKKyAgICAgICAgcGFyZW50VGFncyA9IHRhYmxlQ2VsbFBh
cmVudHM7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMzI0NCw3ICsz
MjQ0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhlcml0c1ByZXNlbnRh
dGlvbmFsUm9sZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIG5hdGl2ZSB0YWcgb2YgdGhlIHBhcmVu
dCBlbGVtZW50IG1hdGNoZXMgYW4gYWNjZXB0YWJsZSBuYW1lLCB0aGVuIHJldHVybgogICAgICAg
ICAvLyBiYXNlZCBvbiBpdHMgcHJlc2VudGF0aW9uYWwgc3RhdHVzLgogICAgICAgICBhdXRvJiBu
YW1lID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLnRhZ1FOYW1lKCk7Ci0gICAgICAgIGlmIChz
dGQ6OmFueV9vZihwYXJlbnRUYWdzLT5iZWdpbigpLCBwYXJlbnRUYWdzLT5lbmQoKSwgWyZuYW1l
XSAoYXV0byogcG9zc2libGVOYW1lKSB7IHJldHVybiAqcG9zc2libGVOYW1lID09IG5hbWU7IH0p
KQorICAgICAgICBpZiAoc3RkOjphbnlfb2YocGFyZW50VGFncy5iZWdpbigpLCBwYXJlbnRUYWdz
LmVuZCgpLCBbJm5hbWVdIChhdXRvKiBwb3NzaWJsZU5hbWUpIHsgcmV0dXJuIHBvc3NpYmxlTmFt
ZS0+Z2V0KCkgPT0gbmFtZTsgfSkpCiAgICAgICAgICAgICByZXR1cm4gcGFyZW50LT5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWw7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDE5M2RmZmRjZjYwMDBiZjFi
NDVlMzkwZTJlYzQ0NzFmOTI5YjZlNjAuLjNkNTJjY2ZjZmFiMWU5NzkzODJjZDM2N2JkNDNiOTZi
NGRlNWI3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0x
MzM0LDcgKzEzMzQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0ZSwKICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5SGlnaGVzdEVkaXRhYmxlQW5jZXN0b3JBdHRyaWJ1dGUsCiAgICAgXTsK
LSAgICBzdGF0aWMgYXV0byBpbmNyZW1lbnRvckF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW5jcmVtZW50b3JBdHRycyA9IFtdIHsKICAg
ICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRCdXR0b25BdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRCdXR0b25B
dHRyaWJ1dGVdOwpAQCAtMTM0MiwxNCArMTM0MiwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5TWluVmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7
Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byBhbmNob3JBdHRycyA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBhbmNob3JBdHRy
cyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlMaW5rUmVs
YXRpb25zaGlwVHlwZUF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAg
fSgpKTsKKyAgICB9KCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0Fy
cmF5Pj4gY29tbW9uTWVudUF0dHJzID0gQFsKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0
dHJpYnV0ZSwKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRl
LApAQCAtMTM1OSw3ICsxMzU5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAogICAgICAgICBO
U0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAogICAgIF07Ci0gICAgc3RhdGljIGF1dG8gd2Vi
QXJlYUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgd2ViQXJlYUF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgp
LmdldCgpXSk7CiAgICAgICAgIC8vIFdlYkFyZWFzIHNob3VsZCBub3QgZXhwb3NlIEFYU3Vicm9s
ZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U3Vicm9s
ZUF0dHJpYnV0ZV07CkBAIC0xMzc2LDggKzEzNzYsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVdlYlNlc3Npb25JREF0dHJpYnV0ZV07
CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byB0
ZXh0QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQgdGV4dEF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVz
LmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eU51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV07CkBAIC0xMzkxLDI0
ICsxMzkxLDI0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFs
dWVBdXRvZmlsbGVkQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9
KCkpOwotICAgIHN0YXRpYyBhdXRvIGxpc3RBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBsaXN0QXR0cnMgPSBbXSB7CiAg
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJl
bkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVt
cEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gbGlzdEJveEF0dHJzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGxp
c3RCb3hBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6bGlzdEF0dHJzLmdldCgpLmdldCgpXSk7
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJl
cXVpcmVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBB
cnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHJhbmdlQXR0cnMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgcmFuZ2VB
dHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVl
QXR0cmlidXRlXTsKQEAgLTE0MTYsMjQgKzE0MTYsMjQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIHJl
dHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byBtZW51QmFyQXR0cnMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgbWVudUJhckF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnMu
Z2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25BdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAg
c3RhdGljIGF1dG8gbWVudUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1lbnVBdHRycyA9IFtdIHsKICAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6Y29tbW9uTWVudUF0dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRs
ZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJh
eTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIG1lbnVJdGVtQXR0cnMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWVudUl0
ZW1BdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzLmdldCgpLmdldCgp
XSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb25BdHRyaWJ1dGVdOwpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVNlcnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV07CiAg
ICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gbWVudUJ1dHRvbkF0dHJzID0gQFsK
ICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLApAQCAtMTQ2MiwyOSArMTQ2MiwyOSBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5VGl0bGVBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmli
dXRlLAogICAgIF07Ci0gICAgc3RhdGljIGF1dG8gY29udHJvbEF0dHJzID0gbWFrZU5ldmVyRGVz
dHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgY29udHJvbEF0dHJzID0gW10g
ewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVx
dWlyZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9
KCkpOwotICAgIHN0YXRpYyBhdXRvIGJ1dHRvbkF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGJ1dHRvbkF0dHJzID0gW10g
ewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIC8vIEJ1
dHRvbnMgc2hvdWxkIG5vdCBleHBvc2UgQVhWYWx1ZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1v
dmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJp
YnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMg
YXV0byBjb21ib0JveEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGNvbWJvQm94QXR0cnMgPSBbXSB7CiAgICAgICAgIGF1
dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OmNvbnRyb2xBdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAg
ICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHRhYmxlQXR0
cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQgdGFibGVBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQo
KS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlS
b3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwpAQCAtMTQ5OSwyMSArMTQ5OSwyMSBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkNvdW50QXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJvd0NvdW50QXR0cmlidXRlXTsK
ICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHRh
YmxlUm93QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgdGFibGVSb3dBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1w
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0
cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0g
ICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byB0YWJsZUNvbEF0dHJzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHRhYmxlQ29sQXR0
cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Vmlz
aWJsZVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7
Ci0gICAgc3RhdGljIGF1dG8gdGFibGVDZWxsQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdGFibGVDZWxsQXR0cnMgPSBb
XSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4
UmFuZ2VBdHRyaWJ1dGVdOwpAQCAtMTUyMiwxOCArMTUyMiwxOCBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5QVJJQUNvbHVtbkluZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJvd0luZGV4QXR0cmlidXRlXTsKICAgICAgICAg
cmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIGdyb3VwQXR0cnMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgZ3JvdXBBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5n
ZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRs
ZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgp
KTsKLSAgICBzdGF0aWMgYXV0byBpbnB1dEltYWdlQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
W10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW5wdXRJbWFnZUF0dHJz
ID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTpidXR0b25BdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOwogICAg
ICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gcGFzc3dv
cmRGaWVsZEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIHBhc3N3b3JkRmllbGRBdHRycyA9IFtdIHsKICAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKQEAgLTE1
NDEsMjMgKzE1NDEsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVyVmFs
dWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlWYWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5Owot
ICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gdGFiTGlzdEF0dHJzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHRhYkxpc3RBdHRy
cyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRh
dGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAg
ICBzdGF0aWMgYXV0byBvdXRsaW5lQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
IH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgb3V0bGluZUF0dHJzID0gW10gewogICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25BdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAg
c3RhdGljIGF1dG8gb3V0bGluZVJvd0F0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAg
ICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG91dGxpbmVSb3dBdHRycyA9IFtdIHsK
ICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGFibGVSb3dBdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlSb3dB
dHRyaWJ1dGVdOwpAQCAtMTU2NSwyNyArMTU2NSwyNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgcmVtb3ZlT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBB
cnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHNjcm9sbFZpZXdBdHRycyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBz
Y3JvbGxWaWV3QXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0
KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVu
dHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwogICAgICAg
ICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gaW1hZ2VBdHRy
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZCBpbWFnZUF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgp
LmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUlt
YWdlT3ZlcmxheUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5RW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsK
ICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHZp
ZGVvQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQgdmlkZW9BdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRl
cy5nZXQoKS5nZXQoKV0pOwogICAgICAgICAvLyBUaGlzIHNob3VsZCByZXByZXNlbnQgdGhlIFVS
TCBvZiB0aGUgdmlkZW8gY29udGVudCwgbm90IHRoZSBwb3N0ZXIuCiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVy
biB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAKICAgICBOU0FycmF5ICpvYmplY3RB
dHRyaWJ1dGVzID0gYXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1l
cy5wbAppbmRleCA2ZDcwZGZiZjAwZWZlMzYyMGI4Y2VmNjkwYTlkYTE5M2VjYzVmMTMwLi45YjI0
N2ZiNzQ3OTNkYzVlMTA1ODhkNmNkZTBhZWEyYWFhNzhiMjk4IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9u
YW1lcy5wbApAQCAtMTAzNSw3ICsxMDM1LDcgQEAgRU5ECiAKIHN0YXRpYyAkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5IGZpbmQkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudENvbnN0cnVjdG9yRnVuY3Rpb24oY29uc3QgQXRvbVN0cmluZyYgbG9jYWxO
YW1lKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChj
cmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcCgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQgbWFwID0gY3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUZhY3RvcnlNYXAo
KTsKICAgICByZXR1cm4gbWFwLmdldCgpLmdldChsb2NhbE5hbWUpOwogfQogCkBAIC0xMzA5LDcg
KzEzMDksNyBAQCBFTkQKIAogSlNET01PYmplY3QqIGNyZWF0ZUpTJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50PiYmIGVsZW1lbnQpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gZnVuY3Rpb25zID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZSRwYXJhbWV0ZXJze25hbWVz
cGFjZX1XcmFwcGVyTWFwKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBmdW5jdGlvbnMg
PSBjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlck1hcCgpOwogICAgIGlmIChhdXRv
IGZ1bmN0aW9uID0gZnVuY3Rpb25zLmdldCgpLmdldChlbGVtZW50LT5sb2NhbE5hbWUoKSkpCiAg
ICAgICAgIHJldHVybiBmdW5jdGlvbihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudCkpOwog
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggNzJlMjc5OWRk
NDJkNDVlMGE1NjU2YWMzMjAzMTJkM2JjMzdiMTQwOC4uODU1ODA3ZTJjMjA5YjBiMzE0ZWFkODhk
NDYxOGQ1Y2ZhZjM3NzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cApAQCAtOTQ5LDkgKzk0OSw5IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5s
aW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgUmVmCiAgICAgcmV0dXJu
IGNvbmZsaWN0czsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3Rvcjxjb25zdCBIVE1MRWxlbWVudEVx
dWl2YWxlbnQqPiYgaHRtbEVsZW1lbnRFcXVpdmFsZW50cygpCitzdGF0aWMgU3Bhbjxjb25zdCBI
VE1MRWxlbWVudEVxdWl2YWxlbnQqIGNvbnN0PiBodG1sRWxlbWVudEVxdWl2YWxlbnRzKCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgYXV0byBlcXVpdmFsZW50cyA9IG1ha2VOZXZlckRlc3Ryb3llZChW
ZWN0b3I8Y29uc3QgSFRNTEVsZW1lbnRFcXVpdmFsZW50Kj4geworICAgIHN0YXRpYyBjb25zdCBI
VE1MRWxlbWVudEVxdWl2YWxlbnQqIGNvbnN0IGVxdWl2YWxlbnRzW10gPSB7CiAgICAgICAgIG5l
dyBIVE1MRm9udFdlaWdodEVxdWl2YWxlbnQoSFRNTE5hbWVzOjpiVGFnKSwKICAgICAgICAgbmV3
IEhUTUxGb250V2VpZ2h0RXF1aXZhbGVudChIVE1MTmFtZXM6OnN0cm9uZ1RhZyksCiAKQEAgLTk2
MywxMSArOTYzLDEwIEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8Y29uc3QgSFRNTEVsZW1lbnRFcXVp
dmFsZW50Kj4mIGh0bWxFbGVtZW50RXF1aXZhbGVudHMoKQogICAgICAgICBuZXcgSFRNTFRleHRE
ZWNvcmF0aW9uRXF1aXZhbGVudChDU1NWYWx1ZVVuZGVybGluZSwgSFRNTE5hbWVzOjp1VGFnKSwK
ICAgICAgICAgbmV3IEhUTUxUZXh0RGVjb3JhdGlvbkVxdWl2YWxlbnQoQ1NTVmFsdWVMaW5lVGhy
b3VnaCwgSFRNTE5hbWVzOjpzVGFnKSwKICAgICAgICAgbmV3IEhUTUxUZXh0RGVjb3JhdGlvbkVx
dWl2YWxlbnQoQ1NTVmFsdWVMaW5lVGhyb3VnaCwgSFRNTE5hbWVzOjpzdHJpa2VUYWcpLAotICAg
IH0pOworICAgIH07CiAgICAgcmV0dXJuIGVxdWl2YWxlbnRzOwogfQogCi0KIGJvb2wgRWRpdGlu
Z1N0eWxlOjpjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mRWxlbWVudChIVE1MRWxlbWVudCYg
ZWxlbWVudCwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSwgU2hvdWxkRXh0cmFjdE1hdGNo
aW5nU3R5bGUgc2hvdWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUpIGNvbnN0CiB7CiAgICAgaWYgKGlz
RW1wdHkoKSkKQEAgLTk4NCw5ICs5ODMsOSBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3Rz
V2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIEVkaQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3Rvcjxjb25zdCBIVE1MQXR0cmli
dXRlRXF1aXZhbGVudCo+JiBodG1sQXR0cmlidXRlRXF1aXZhbGVudHMoKQorc3RhdGljIFNwYW48
Y29uc3QgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQqIGNvbnN0PiBodG1sQXR0cmlidXRlRXF1aXZh
bGVudHMoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGVxdWl2YWxlbnRzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudCo+IHsKKyAgICBz
dGF0aWMgY29uc3QgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQqIGNvbnN0IGVxdWl2YWxlbnRzW10g
PSB7CiAgICAgICAgIC8vIGVsZW1lbnRJc1N0eWxlZFNwYW5PckhUTUxFcXVpdmFsZW50IGRlcGVu
ZHMgb24gdGhlIGZhY3QgZWFjaCBIVE1MQXR0cml1dGVFcXVpdmFsZW50IG1hdGNoZXMgZXhhY3Rs
eSBvbmUgYXR0cmlidXRlCiAgICAgICAgIC8vIG9mIGV4YWN0bHkgb25lIGVsZW1lbnQgZXhjZXB0
IGRpckF0dHIuCiAgICAgICAgIG5ldyBIVE1MQXR0cmlidXRlRXF1aXZhbGVudChDU1NQcm9wZXJ0
eUNvbG9yLCBIVE1MTmFtZXM6OmZvbnRUYWcsIEhUTUxOYW1lczo6Y29sb3JBdHRyKSwKQEAgLTk5
NSw3ICs5OTQsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPGNvbnN0IEhUTUxBdHRyaWJ1dGVFcXVp
dmFsZW50Kj4mIGh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cygpCiAKICAgICAgICAgbmV3IEhUTUxB
dHRyaWJ1dGVFcXVpdmFsZW50KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBIVE1MTmFtZXM6OmRpckF0
dHIpLAogICAgICAgICBuZXcgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQoQ1NTUHJvcGVydHlVbmlj
b2RlQmlkaSwgSFRNTE5hbWVzOjpkaXJBdHRyKSwKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVy
biBlcXVpdmFsZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
b3JtYXRCbG9ja0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9j
a0NvbW1hbmQuY3BwCmluZGV4IDlkYmE1MGE4MDkyZWI4NzMwYWUyMzFjMTMxMTAzMTYzMzAzMWZm
MjcuLjJlMTA1ODI2MWZmNTY3M2UyMDJhMmNhZmRkYTNkMDEwZjY0NTkzMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKQEAgLTEyMyw3ICsxMjMs
NyBAQCBFbGVtZW50KiBGb3JtYXRCbG9ja0NvbW1hbmQ6OmVsZW1lbnRGb3JGb3JtYXRCbG9ja0Nv
bW1hbmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaQogCiBib29sIGlzRWxlbWVudEZvckZvcm1hdEJs
b2NrKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gYmxvY2tUYWdzID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaFNldDxRdWFsaWZpZWROYW1lPiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkIGJsb2NrVGFncyA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxR
dWFsaWZpZWROYW1lPiB7CiAgICAgICAgIGFkZHJlc3NUYWcsCiAgICAgICAgIGFydGljbGVUYWcs
CiAgICAgICAgIGFzaWRlVGFnLApAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgaXNFbGVtZW50Rm9y
Rm9ybWF0QmxvY2soY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKICAgICAgICAgcFRhZywK
ICAgICAgICAgcHJlVGFnLAogICAgICAgICBzZWN0aW9uVGFnLAotICAgIH0pOworICAgIH07CiAg
ICAgcmV0dXJuIGJsb2NrVGFncy5nZXQoKS5jb250YWlucyh0YWdOYW1lKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5kZXggNjYxNDA3
ZTE0NTI0Y2YyYTEzZmVhMzY1NTEzZDc5YWJlNTNlNjlkMy4uMzNlOTYwNWQ1ZjA3MmI2MWZjYTdj
NWFkOTk3NzRjODU2ZTkzYjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFJlbW92ZUZvcm1hdENvbW1hbmQ6
OlJlbW92ZUZvcm1hdENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBzdGF0aWMgYm9vbCBp
c0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gZWxlbWVudHMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFF1YWxpZmllZE5hbWU+IHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZWxlbWVudHMgPSBNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gewogICAgICAgICBhY3JvbnltVGFnLAog
ICAgICAgICBiVGFnLAogICAgICAgICBiZG9UYWcsCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBi
b29sIGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQoY29uc3QgRWxlbWVudCogZWxlbWVu
dCkKICAgICAgICAgdHRUYWcsCiAgICAgICAgIHVUYWcsCiAgICAgICAgIHZhclRhZywKLSAgICB9
KTsKKyAgICB9OwogICAgIHJldHVybiBlbGVtZW50cy5nZXQoKS5jb250YWlucyhlbGVtZW50LT50
YWdRTmFtZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBlN2ZmMjY1NDVkZGI3NDY1NGYwMjk0OWRmMGQ0YzQ4
YjhlNDcxMDEwLi5jMjRiZWZmNWNiNGVhNzRmMGQ1ZDJjM2I1NjZiZGI2ZmRmYjVjNmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cApAQCAtNzI1LDYzICs3MjUsNjMgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVt
b3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKIAogc3RhdGlj
IGJvb2wgaXNQcm9oaWJpdGVkUGFyYWdyYXBoQ2hpbGQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkK
IHsKLSAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcvcmF3LWZpbGUvNTdhYmU2
ZDNjYjYwL2VkaXRpbmcuaHRtbCNwcm9oaWJpdGVkLXBhcmFncmFwaC1jaGlsZAotICAgIHN0YXRp
YyBjb25zdCBhdXRvIGxvY2FsTmFtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAg
ICBzdGF0aWMgY29uc3QgSFRNTFF1YWxpZmllZE5hbWUqIGNvbnN0IHRhZ3NbXSA9IHsKLSAgICAg
ICAgICAgICZhZGRyZXNzVGFnLmdldCgpLAotICAgICAgICAgICAgJmFydGljbGVUYWcuZ2V0KCks
Ci0gICAgICAgICAgICAmYXNpZGVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmYmxvY2txdW90ZVRh
Zy5nZXQoKSwKLSAgICAgICAgICAgICZjYXB0aW9uVGFnLmdldCgpLAotICAgICAgICAgICAgJmNl
bnRlclRhZy5nZXQoKSwKLSAgICAgICAgICAgICZjb2xUYWcuZ2V0KCksCi0gICAgICAgICAgICAm
Y29sZ3JvdXBUYWcuZ2V0KCksCi0gICAgICAgICAgICAmZGRUYWcuZ2V0KCksCi0gICAgICAgICAg
ICAmZGV0YWlsc1RhZy5nZXQoKSwKLSAgICAgICAgICAgICZkaXJUYWcuZ2V0KCksCi0gICAgICAg
ICAgICAmZGl2VGFnLmdldCgpLAotICAgICAgICAgICAgJmRsVGFnLmdldCgpLAotICAgICAgICAg
ICAgJmR0VGFnLmdldCgpLAotICAgICAgICAgICAgJmZpZWxkc2V0VGFnLmdldCgpLAotICAgICAg
ICAgICAgJmZpZ2NhcHRpb25UYWcuZ2V0KCksCi0gICAgICAgICAgICAmZmlndXJlVGFnLmdldCgp
LAotICAgICAgICAgICAgJmZvb3RlclRhZy5nZXQoKSwKLSAgICAgICAgICAgICZmb3JtVGFnLmdl
dCgpLAotICAgICAgICAgICAgJmgxVGFnLmdldCgpLAotICAgICAgICAgICAgJmgyVGFnLmdldCgp
LAotICAgICAgICAgICAgJmgzVGFnLmdldCgpLAotICAgICAgICAgICAgJmg0VGFnLmdldCgpLAot
ICAgICAgICAgICAgJmg1VGFnLmdldCgpLAotICAgICAgICAgICAgJmg2VGFnLmdldCgpLAotICAg
ICAgICAgICAgJmhlYWRlclRhZy5nZXQoKSwKLSAgICAgICAgICAgICZoZ3JvdXBUYWcuZ2V0KCks
Ci0gICAgICAgICAgICAmaHJUYWcuZ2V0KCksCi0gICAgICAgICAgICAmbGlUYWcuZ2V0KCksCi0g
ICAgICAgICAgICAmbGlzdGluZ1RhZy5nZXQoKSwKLSAgICAgICAgICAgICZtYWluVGFnLmdldCgp
LCAvLyBNaXNzaW5nIGluIHRoZSBzcGVjaWZpY2F0aW9uLgotICAgICAgICAgICAgJm1lbnVUYWcu
Z2V0KCksCi0gICAgICAgICAgICAmbmF2VGFnLmdldCgpLAotICAgICAgICAgICAgJm9sVGFnLmdl
dCgpLAotICAgICAgICAgICAgJnBUYWcuZ2V0KCksCi0gICAgICAgICAgICAmcGxhaW50ZXh0VGFn
LmdldCgpLAotICAgICAgICAgICAgJnByZVRhZy5nZXQoKSwKLSAgICAgICAgICAgICZzZWN0aW9u
VGFnLmdldCgpLAotICAgICAgICAgICAgJnN1bW1hcnlUYWcuZ2V0KCksCi0gICAgICAgICAgICAm
dGFibGVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdGJvZHlUYWcuZ2V0KCksCi0gICAgICAgICAg
ICAmdGRUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdGZvb3RUYWcuZ2V0KCksCi0gICAgICAgICAg
ICAmdGhUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdGhlYWRUYWcuZ2V0KCksCi0gICAgICAgICAg
ICAmdHJUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdWxUYWcuZ2V0KCksCi0gICAgICAgICAgICAm
eG1wVGFnLmdldCgpLAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBsb2NhbE5hbWVzID0gW10g
eworICAgICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcvcmF3LWZpbGUvNTdh
YmU2ZDNjYjYwL2VkaXRpbmcuaHRtbCNwcm9oaWJpdGVkLXBhcmFncmFwaC1jaGlsZAorICAgICAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgdGFncyB7CisgICAgICAgICAgICAmYWRkcmVz
c1RhZywKKyAgICAgICAgICAgICZhcnRpY2xlVGFnLAorICAgICAgICAgICAgJmFzaWRlVGFnLAor
ICAgICAgICAgICAgJmJsb2NrcXVvdGVUYWcsCisgICAgICAgICAgICAmY2FwdGlvblRhZywKKyAg
ICAgICAgICAgICZjZW50ZXJUYWcsCisgICAgICAgICAgICAmY29sVGFnLAorICAgICAgICAgICAg
JmNvbGdyb3VwVGFnLAorICAgICAgICAgICAgJmRkVGFnLAorICAgICAgICAgICAgJmRldGFpbHNU
YWcsCisgICAgICAgICAgICAmZGlyVGFnLAorICAgICAgICAgICAgJmRpdlRhZywKKyAgICAgICAg
ICAgICZkbFRhZywKKyAgICAgICAgICAgICZkdFRhZywKKyAgICAgICAgICAgICZmaWVsZHNldFRh
ZywKKyAgICAgICAgICAgICZmaWdjYXB0aW9uVGFnLAorICAgICAgICAgICAgJmZpZ3VyZVRhZywK
KyAgICAgICAgICAgICZmb290ZXJUYWcsCisgICAgICAgICAgICAmZm9ybVRhZywKKyAgICAgICAg
ICAgICZoMVRhZywKKyAgICAgICAgICAgICZoMlRhZywKKyAgICAgICAgICAgICZoM1RhZywKKyAg
ICAgICAgICAgICZoNFRhZywKKyAgICAgICAgICAgICZoNVRhZywKKyAgICAgICAgICAgICZoNlRh
ZywKKyAgICAgICAgICAgICZoZWFkZXJUYWcsCisgICAgICAgICAgICAmaGdyb3VwVGFnLAorICAg
ICAgICAgICAgJmhyVGFnLAorICAgICAgICAgICAgJmxpVGFnLAorICAgICAgICAgICAgJmxpc3Rp
bmdUYWcsCisgICAgICAgICAgICAmbWFpblRhZywgLy8gTWlzc2luZyBpbiB0aGUgc3BlY2lmaWNh
dGlvbi4KKyAgICAgICAgICAgICZtZW51VGFnLAorICAgICAgICAgICAgJm5hdlRhZywKKyAgICAg
ICAgICAgICZvbFRhZywKKyAgICAgICAgICAgICZwVGFnLAorICAgICAgICAgICAgJnBsYWludGV4
dFRhZywKKyAgICAgICAgICAgICZwcmVUYWcsCisgICAgICAgICAgICAmc2VjdGlvblRhZywKKyAg
ICAgICAgICAgICZzdW1tYXJ5VGFnLAorICAgICAgICAgICAgJnRhYmxlVGFnLAorICAgICAgICAg
ICAgJnRib2R5VGFnLAorICAgICAgICAgICAgJnRkVGFnLAorICAgICAgICAgICAgJnRmb290VGFn
LAorICAgICAgICAgICAgJnRoVGFnLAorICAgICAgICAgICAgJnRoZWFkVGFnLAorICAgICAgICAg
ICAgJnRyVGFnLAorICAgICAgICAgICAgJnVsVGFnLAorICAgICAgICAgICAgJnhtcFRhZywKICAg
ICAgICAgfTsKICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0
PEF0b21TdHJpbmc+IHNldDsKICAgICAgICAgZm9yIChhdXRvJiB0YWcgOiB0YWdzKQotICAgICAg
ICAgICAgc2V0LmFkZCh0YWctPmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIHNldC5hZGQodGFn
LT5nZXQoKS5sb2NhbE5hbWUoKSk7CiAgICAgICAgIHJldHVybiBzZXQ7Ci0gICAgfSgpKTsKKyAg
ICB9KCk7CiAgICAgcmV0dXJuIGxvY2FsTmFtZXMuZ2V0KCkuY29udGFpbnMobmFtZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAw
NzgyNDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3Li5kZjI0ZGEyYzgxNWViMzEz
MDYwYzc4YTRjMTJiZTI3ODIzYzk4MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC00MTYsMTIgKzQxNiwxMiBAQCBBdHRyaWJ1dGVkU3Ry
aW5nIEhUTUxDb252ZXJ0ZXI6OmNvbnZlcnQoKQogLy8gUmV0dXJucyB0aGUgZm9udCB0byBiZSB1
c2VkIGlmIHRoZSBOU0ZvbnRBdHRyaWJ1dGVOYW1lIGRvZXNuJ3QgZXhpc3QKIHN0YXRpYyBOU0Zv
bnQgKldlYkRlZmF1bHRGb250KCkKIHsKLSAgICBzdGF0aWMgYXV0byBkZWZhdWx0Rm9udCA9IG1h
a2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGRlZmF1bHRG
b250ID0gW10gewogICAgICAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTpA
IkhlbHZldGljYSIgc2l6ZToxMl07CiAgICAgICAgIGlmICghZm9udCkKICAgICAgICAgICAgIGZv
bnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6MTJdOwotICAgICAgICByZXR1cm4gcmV0YWlu
UHRyKGZvbnQpOwotICAgIH0oKSk7CisgICAgICAgIHJldHVybiBSZXRhaW5QdHIgeyBmb250IH07
CisgICAgfSgpOwogICAgIHJldHVybiBkZWZhdWx0Rm9udC5nZXQoKS5nZXQoKTsKIH0KICNlbmRp
ZgpAQCAtNTE4LDEzICs1MTgsMTMgQEAgc3RhdGljIFBsYXRmb3JtRm9udCAqX2ZvbnRGb3JOYW1l
QW5kU2l6ZShOU1N0cmluZyAqZm9udE5hbWUsIENHRmxvYXQgc2l6ZSwgTlNNdXQKIAogc3RhdGlj
IE5TUGFyYWdyYXBoU3R5bGUgKmRlZmF1bHRQYXJhZ3JhcGhTdHlsZSgpCiB7Ci0gICAgc3RhdGlj
IGF1dG8gZGVmYXVsdFBhcmFncmFwaFN0eWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAg
ICAgICAgYXV0byBkZWZhdWx0UGFyYWdyYXBoU3R5bGUgPSBhZG9wdE5TKFtbUGxhdGZvcm1OU1Bh
cmFncmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0gbXV0YWJsZUNvcHldKTsKLSAgICAg
ICAgW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSBzZXREZWZhdWx0VGFiSW50ZXJ2YWw6MzZdOwotICAg
ICAgICBbZGVmYXVsdFBhcmFncmFwaFN0eWxlIHNldFRhYlN0b3BzOkBbXV07Ci0gICAgICAgIHJl
dHVybiBkZWZhdWx0UGFyYWdyYXBoU3R5bGU7Ci0gICAgfSgpKTsKLSAgICByZXR1cm4gZGVmYXVs
dFBhcmFncmFwaFN0eWxlLmdldCgpLmdldCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBz
dHlsZSA9IFtdIHsKKyAgICAgICAgYXV0byBzdHlsZSA9IGFkb3B0TlMoW1tQbGF0Zm9ybU5TUGFy
YWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0eWxlXSBtdXRhYmxlQ29weV0pOworICAgICAg
ICBbc3R5bGUgc2V0RGVmYXVsdFRhYkludGVydmFsOjM2XTsKKyAgICAgICAgW3N0eWxlIHNldFRh
YlN0b3BzOkBbXV07CisgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICB9KCk7CisgICAgcmV0dXJu
IHN0eWxlLmdldCgpLmdldCgpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWU+IEhUTUxDb252ZXJ0ZXJD
YWNoZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9BdXRvZmlsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAppbmRleCAw
ZTczZDI5YTIzNTIzNjllMWQ5NTlmZjllY2NlOTU3ODRlZjkyNjVkLi5jMDNlMDNmNjIwNGU2MmRl
NTU3NTI2ZTUxMGE2MzZkNzE5YTk5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0F1dG9maWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcApAQCAt
NTIsMTQgKzUyLDE0IEBAIHN0cnVjdCBBdXRvZmlsbEluZm8gewogCiBzdGF0aWMgY29uc3QgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsIEF1dG9maWxs
SW5mbz4mIGZpZWxkTmFtZU1hcCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gbWFwID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gW10g
ewogICAgICAgICBzdHJ1Y3QgTWFwRW50cnkgewogICAgICAgICAgICAgQVNDSUlMaXRlcmFsIG5h
bWU7CiAgICAgICAgICAgICBBdXRvZmlsbEluZm8gdmFsdWU7CiAgICAgICAgIH07Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7CisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgTWFwRW50cnkgZW50cmllc1tdID0gewogICAgICAgICAgICAgeyAib2ZmIl9zLCB7IEF1
dG9maWxsRmllbGROYW1lOjpOb25lLCBBdXRvZmlsbENhdGVnb3J5OjpPZmYgfSB9LAotICAgICAg
ICAgICAgeyAib24iX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6Ok5vbmUsICBBdXRvZmlsbENhdGVn
b3J5OjpBdXRvbWF0aWMgfSB9LAorICAgICAgICAgICAgeyAib24iX3MsIHsgQXV0b2ZpbGxGaWVs
ZE5hbWU6Ok5vbmUsIEF1dG9maWxsQ2F0ZWdvcnk6OkF1dG9tYXRpYyB9IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpOYW1lLCBBdXRvZmlsbENhdGVnb3J5
OjpOb3JtYWwgfSB9LAogICAgICAgICAgICAgeyAiaG9ub3JpZmljLXByZWZpeCJfcywgeyBBdXRv
ZmlsbEZpZWxkTmFtZTo6SG9ub3JpZmljUHJlZml4LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwg
fSB9LAogICAgICAgICAgICAgeyAiZ2l2ZW4tbmFtZSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6
R2l2ZW5OYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LApAQCAtMTE5LDcgKzExOSw3
IEBAIHN0YXRpYyBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8
QXRvbVN0cmluZywgQXV0b2ZpbGxJbmZvPiYKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVu
dHJpZXMpCiAgICAgICAgICAgICBtYXAuYWRkKGVudHJ5Lm5hbWUsIGVudHJ5LnZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1cm4gbWFwOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggMTNjYjA2NzMxOWM4NDhk
NjI5NTEyYTkwODI2NDY5OGFlNzdkZjM1Ny4uNzE2NmQxZDM3N2ZhYjY3YTA5ZGEwMDljNjFlYjEx
YmE1MTgxMWJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMTc2LDY0
ICsxNzYsNjMgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnJlbW92ZVdpbmRvd05hbWVkSXRlbShjb25z
dCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYgaXQKIAogYm9vbCBIVE1MRG9jdW1lbnQ6
OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZVNl
dCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHNl
dCA9IFtdIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIGluIEhU
TUwgNC4wMSB3aXRoIHZhbHVlcyBtYXJrZWQgYXMgIltDSV0iIG9yIGNhc2UtaW5zZW5zaXRpdmUK
ICAgICAgICAgLy8gTW96aWxsYSB0cmVhdHMgYWxsIG90aGVyIHZhbHVlcyBhcyBjYXNlLXNlbnNp
dGl2ZSwgdGh1cyBzbyBkbyB3ZS4KLSAgICAgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUq
IGNvbnN0IG5hbWVzW10gPSB7Ci0gICAgICAgICAgICAmYWNjZXB0X2NoYXJzZXRBdHRyLmdldCgp
LAotICAgICAgICAgICAgJmFjY2VwdEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmYWxpZ25BdHRy
LmdldCgpLAotICAgICAgICAgICAgJmFsaW5rQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZheGlz
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZiZ2NvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAgICAg
ICZjaGFyc2V0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZjaGVja2VkQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZjbGVhckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmY29kZXR5cGVBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJmNvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZjb21wYWN0
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZkZWNsYXJlQXR0ci5nZXQoKSwKLSAgICAgICAgICAg
ICZkZWZlckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZGlyQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZkaXNhYmxlZEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZW5jdHlwZUF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmZmFjZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZnJhbWVBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJmhyZWZsYW5nQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZodHRw
X2VxdWl2QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZsYW5nQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZsYW5ndWFnZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmbGlua0F0dHIuZ2V0KCksCi0g
ICAgICAgICAgICAmbWVkaWFBdHRyLmdldCgpLAotICAgICAgICAgICAgJm1ldGhvZEF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmbXVsdGlwbGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJm5vaHJl
ZkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmbm9yZXNpemVBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJm5vc2hhZGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJm5vd3JhcEF0dHIuZ2V0KCksCi0g
ICAgICAgICAgICAmcmVhZG9ubHlBdHRyLmdldCgpLAotICAgICAgICAgICAgJnJlbEF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmcmV2QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZydWxlc0F0dHIu
Z2V0KCksCi0gICAgICAgICAgICAmc2NvcGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJnNjcm9s
bGluZ0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmc2VsZWN0ZWRBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJnNoYXBlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZ0YXJnZXRBdHRyLmdldCgpLAot
ICAgICAgICAgICAgJnRleHRBdHRyLmdldCgpLAotICAgICAgICAgICAgJnR5cGVBdHRyLmdldCgp
LAotICAgICAgICAgICAgJnZhbGlnbkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmdmFsdWV0eXBl
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZ2bGlua0F0dHIuZ2V0KCksCisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgc3RkOjphcnJheSBuYW1lcyB7CisgICAgICAgICAgICAmYWNjZXB0X2NoYXJz
ZXRBdHRyLAorICAgICAgICAgICAgJmFjY2VwdEF0dHIsCisgICAgICAgICAgICAmYWxpZ25BdHRy
LAorICAgICAgICAgICAgJmFsaW5rQXR0ciwKKyAgICAgICAgICAgICZheGlzQXR0ciwKKyAgICAg
ICAgICAgICZiZ2NvbG9yQXR0ciwKKyAgICAgICAgICAgICZjaGFyc2V0QXR0ciwKKyAgICAgICAg
ICAgICZjaGVja2VkQXR0ciwKKyAgICAgICAgICAgICZjbGVhckF0dHIsCisgICAgICAgICAgICAm
Y29kZXR5cGVBdHRyLAorICAgICAgICAgICAgJmNvbG9yQXR0ciwKKyAgICAgICAgICAgICZjb21w
YWN0QXR0ciwKKyAgICAgICAgICAgICZkZWNsYXJlQXR0ciwKKyAgICAgICAgICAgICZkZWZlckF0
dHIsCisgICAgICAgICAgICAmZGlyQXR0ciwKKyAgICAgICAgICAgICZkaXNhYmxlZEF0dHIsCisg
ICAgICAgICAgICAmZW5jdHlwZUF0dHIsCisgICAgICAgICAgICAmZmFjZUF0dHIsCisgICAgICAg
ICAgICAmZnJhbWVBdHRyLAorICAgICAgICAgICAgJmhyZWZsYW5nQXR0ciwKKyAgICAgICAgICAg
ICZodHRwX2VxdWl2QXR0ciwKKyAgICAgICAgICAgICZsYW5nQXR0ciwKKyAgICAgICAgICAgICZs
YW5ndWFnZUF0dHIsCisgICAgICAgICAgICAmbGlua0F0dHIsCisgICAgICAgICAgICAmbWVkaWFB
dHRyLAorICAgICAgICAgICAgJm1ldGhvZEF0dHIsCisgICAgICAgICAgICAmbXVsdGlwbGVBdHRy
LAorICAgICAgICAgICAgJm5vaHJlZkF0dHIsCisgICAgICAgICAgICAmbm9yZXNpemVBdHRyLAor
ICAgICAgICAgICAgJm5vc2hhZGVBdHRyLAorICAgICAgICAgICAgJm5vd3JhcEF0dHIsCisgICAg
ICAgICAgICAmcmVhZG9ubHlBdHRyLAorICAgICAgICAgICAgJnJlbEF0dHIsCisgICAgICAgICAg
ICAmcmV2QXR0ciwKKyAgICAgICAgICAgICZydWxlc0F0dHIsCisgICAgICAgICAgICAmc2NvcGVB
dHRyLAorICAgICAgICAgICAgJnNjcm9sbGluZ0F0dHIsCisgICAgICAgICAgICAmc2VsZWN0ZWRB
dHRyLAorICAgICAgICAgICAgJnNoYXBlQXR0ciwKKyAgICAgICAgICAgICZ0YXJnZXRBdHRyLAor
ICAgICAgICAgICAgJnRleHRBdHRyLAorICAgICAgICAgICAgJnR5cGVBdHRyLAorICAgICAgICAg
ICAgJnZhbGlnbkF0dHIsCisgICAgICAgICAgICAmdmFsdWV0eXBlQXR0ciwKKyAgICAgICAgICAg
ICZ2bGlua0F0dHIsCiAgICAgICAgIH07CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPiBzZXQ7CiAgICAgICAgIGZvciAoYXV0byogbmFt
ZSA6IG5hbWVzKQotICAgICAgICAgICAgc2V0LmFkZChuYW1lLT5sb2NhbE5hbWUoKSk7CisgICAg
ICAgICAgICBzZXQuYWRkKG5hbWUtPmdldCgpLmxvY2FsTmFtZSgpKTsKICAgICAgICAgcmV0dXJu
IHNldDsKLSAgICB9KCkpOwotCisgICAgfSgpOwogICAgIGJvb2wgaXNQb3NzaWJsZUhUTUxBdHRy
ID0gIWF0dHJpYnV0ZU5hbWUuaGFzUHJlZml4KCkgJiYgYXR0cmlidXRlTmFtZS5uYW1lc3BhY2VV
UkkoKS5pc051bGwoKTsKLSAgICByZXR1cm4gIWlzUG9zc2libGVIVE1MQXR0ciB8fCAhY2FzZUlu
c2Vuc2l0aXZlQXR0cmlidXRlU2V0LmdldCgpLmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUubG9jYWxO
YW1lKCkpOworICAgIHJldHVybiAhaXNQb3NzaWJsZUhUTUxBdHRyIHx8ICFzZXQuZ2V0KCkuY29u
dGFpbnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CiB9CiAKIGJvb2wgSFRNTERvY3VtZW50
Ojppc0ZyYW1lU2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXgg
Y2Y2N2RjNTQzNDQzZjE0ZDliNTczOTNmNGUzZjY5NTY4MDJhODNlZS4uMmFkZmY4ZmU4NWQ5MzY3
ODAyOTVjMjM5NWNlMzUxOWUzODE4NDQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKQEAgLTI2OSw3ICsyNjksNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBIVE1MRWxlbWVudDo6ZXZl
bnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZAogICAgICAgICAg
ICAgbWFwLmFkZChhdHRyaWJ1dGVOYW1lLmltcGwoKSwgZXZlbnROYW1lKTsKICAgICAgICAgfSk7
CiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugc3BlY2lhbCBjYXNlcy4gVGhlc2UgYXJl
IG5vdCBpbiBJREwgd2l0aCBbRXZlbnRIYW5kbGVyXSBidXQgd2VyZSBoaXN0b3JpY2FsbHkgaW4g
dGhpcyBtYXAuCi0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+KiB0YWJsZVtdID0geworICAgICAgICBzdGF0aWMgY29u
c3RleHByIHN0ZDo6YXJyYXkgdGFibGUgewogICAgICAgICAgICAgJm9uYXV0b2NvbXBsZXRlQXR0
ciwKICAgICAgICAgICAgICZvbmF1dG9jb21wbGV0ZWVycm9yQXR0ciwKICAgICAgICAgICAgICZv
bmJlZm9yZWxvYWRBdHRyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cAppbmRleCBlYzZhZjY2ZGE0MzNmYTFlYzAzNDgxMGZkMjk1MzA4YzA0ZmQ5MGQxLi4wMDM0YjIz
MmIxZWJkYjNlNDJmNDU5NmEzZDMyMWYyMDczZjU1MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnJlbmRlckZhbGxiYWNrQ29udGVudCgpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBw
cmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBFbGVtZW50JiBjaGlsZCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgYXV0byBtb3N0S25vd25UYWdzID0gbWFrZU5ldmVyRGVzdHJveWVk
KFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbW9zdEtub3duVGFncyA9IFtdIHsKICAg
ICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFF1YWxpZmllZE5h
bWU+IHNldDsKICAgICAgICAgYXV0byogdGFncyA9IEhUTUxOYW1lczo6Z2V0SFRNTFRhZ3MoKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBIVE1MTmFtZXM6OkhUTUxUYWdzQ291bnQ7
IGkrKykgewpAQCAtMzc3LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwcmV2ZW50c1Bh
cmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBFbGVtZW50JiBjaGlsZCkKICAgICAgICAgICAg
IHNldC5hZGQodGFnKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc2V0OwotICAgIH0oKSk7
CisgICAgfSgpOwogICAgIHJldHVybiBtb3N0S25vd25UYWdzLmdldCgpLmNvbnRhaW5zKGNoaWxk
LnRhZ1FOYW1lKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggZTNiMGQ5
OWQwMGE0NTA2N2M1MjY2NGNkMjhmZTdmYzA0MTJhZGZiNS4uYjY1NjliYWQzNzhlMDBjNDI1MDI1
M2VkNzMwNWJjMThjYTA1ZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMTQ5
LDcgKzE0OSw3IEBAIHN0YXRpYyBJbnB1dFR5cGVGYWN0b3J5TWFwIGNyZWF0ZUlucHV0VHlwZUZh
Y3RvcnlNYXAoKQogUmVmPElucHV0VHlwZT4gSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZU5hbWUpCiB7CiAgICAgaWYgKCF0
eXBlTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGF1dG8gZmFjdG9yeU1h
cCA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKCkpOworICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZmFjdG9yeU1hcCA9IGNyZWF0ZUlucHV0VHlwZUZh
Y3RvcnlNYXAoKTsKICAgICAgICAgYXV0byYmIFtjb25kaXRpb25hbCwgZmFjdG9yeV0gPSBmYWN0
b3J5TWFwLmdldCgpLmdldCh0eXBlTmFtZSk7CiAgICAgICAgIGlmIChmYWN0b3J5ICYmICghY29u
ZGl0aW9uYWwgfHwgc3RkOjppbnZva2UoY29uZGl0aW9uYWwsIGVsZW1lbnQuZG9jdW1lbnQoKS5z
ZXR0aW5ncygpKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFjdG9yeShlbGVtZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA2YWU1MjY1OTdjZDI4NjMxYmU3
OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2Li40MzMyZDY5MWJiZjgyNmE3Yzg3ZWE4M2EzMTdlOTYxMTVh
MjA0OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzgs
MTAgKzIzOCwxMCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gYmxvY2tlZFBhZ2VVUkwgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10gKCkgLT4gVVJMIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYmxvY2tl
ZFBhZ2VVUkwgPSBbXSAoKSAtPiBVUkwgewogICAgICAgICBhdXRvIHdlYkNvcmVCdW5kbGUgPSBD
RkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2ViQ29yZSIp
KTsKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwod2ViQ29y
ZUJ1bmRsZSwgQ0ZTVFIoIkNvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZSIpLCBDRlNUUigiaHRtbCIp
LCBudWxscHRyKSkuZ2V0KCk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIGJsb2Nr
ZWRQYWdlVVJMOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFn
ZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
CmluZGV4IGI1OTY1ZjU2YTQ5YTk1ZTAyYzhmMDc5NWRlY2NlOGZhZjExYmE2YWMuLmM2NDA4OTgz
NTQ0ODZmM2Q5ZDZlNjdkYzY4MTg5YmUwYjMxNDFkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RGVidWdQYWdlT3ZlcmxheXMuY3BwCkBAIC0xNTIsMTggKzE1MiwxNiBAQCBib29sIE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIAogc3RhdGljIGNvbnN0IE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFNSR0JBPHVpbnQ4
X3Q+PiYgdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8g
cmVnaW9uQ29sb3JzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgcmV0dXJuIE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFNSR0JBPHVpbnQ4
X3Q+PiB7IHsKLSAgICAgICAgICAgIHsgInRvdWNoc3RhcnQiX3MsIHsgMTkxLCAxOTEsIDYzLCA1
MCB9IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaG1vdmUiX3MsIHsgODAsIDIwNCwgMjQ1LCA1MCB9
IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGVuZCJfcywgeyAxOTEsIDYzLCAxMjcsIDUwIH0gfSwK
LSAgICAgICAgICAgIHsgInRvdWNoZm9yY2VjaGFuZ2UiX3MsIHsgNjMsIDYzLCAxOTEsIDUwIH0g
fSwKLSAgICAgICAgICAgIHsgIndoZWVsIl9zLCB7IDI1NSwgMTI4LCAwLCA1MCB9IH0sCi0gICAg
ICAgICAgICB7ICJtb3VzZWRvd24iX3MsIHsgODAsIDI0NSwgODAsIDUwIH0gfSwKLSAgICAgICAg
ICAgIHsgIm1vdXNlbW92ZSJfcywgeyAyNDUsIDI0NSwgODAsIDUwIH0gfSwKLSAgICAgICAgICAg
IHsgIm1vdXNldXAiX3MsIHsgODAsIDI0NSwgMTc2LCA1MCB9IH0KLSAgICAgICAgfSB9OwotICAg
IH0oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHJlZ2lvbkNvbG9ycyB7IE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFNSR0JBPHVpbnQ4X3Q+PiB7
IHsKKyAgICAgICAgeyAidG91Y2hzdGFydCJfcywgeyAxOTEsIDE5MSwgNjMsIDUwIH0gfSwKKyAg
ICAgICAgeyAidG91Y2htb3ZlIl9zLCB7IDgwLCAyMDQsIDI0NSwgNTAgfSB9LAorICAgICAgICB7
ICJ0b3VjaGVuZCJfcywgeyAxOTEsIDYzLCAxMjcsIDUwIH0gfSwKKyAgICAgICAgeyAidG91Y2hm
b3JjZWNoYW5nZSJfcywgeyA2MywgNjMsIDE5MSwgNTAgfSB9LAorICAgICAgICB7ICJ3aGVlbCJf
cywgeyAyNTUsIDEyOCwgMCwgNTAgfSB9LAorICAgICAgICB7ICJtb3VzZWRvd24iX3MsIHsgODAs
IDI0NSwgODAsIDUwIH0gfSwKKyAgICAgICAgeyAibW91c2Vtb3ZlIl9zLCB7IDI0NSwgMjQ1LCA4
MCwgNTAgfSB9LAorICAgICAgICB7ICJtb3VzZXVwIl9zLCB7IDgwLCAyNDUsIDE3NiwgNTAgfSB9
LAorICAgIH0gfSB9OwogICAgIHJldHVybiByZWdpb25Db2xvcnM7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAppbmRleCBjNmFmMGQ5ODIwMWYx
NmM2NDVkZWI2N2Y5MTI0OGI1MDk2YmFkMDk3Li5kZTM3ZmMyMDU5MTRmMTNiMjM2ZDBmM2E5OTg3
YmFjYTJlZWMzM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
VXNlclRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJU
aW1pbmcuY3BwCkBAIC00Myw4ICs0Myw3IEBAIHVzaW5nIE5hdmlnYXRpb25UaW1pbmdGdW5jdGlv
biA9IHVuc2lnbmVkIGxvbmcgbG9uZyAoUGVyZm9ybWFuY2VUaW1pbmc6OiopKCkgY29uCiBzdGF0
aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywg
TmF2aWdhdGlvblRpbWluZ0Z1bmN0aW9uPiYgcmVzdHJpY3RlZE1hcmtOYW1lc1RvTmF2aWdhdGlv
blRpbWluZ0Z1bmN0aW9uTWFwKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0g
ICAgc3RhdGljIGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkPE1lbW9yeUNvbXBhY3RMb29r
dXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIE5hdmlnYXRpb25UaW1pbmdGdW5jdGlvbj4+
KHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gTWVtb3J5Q29tcGFjdExvb2t1cE9u
bHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgTmF2aWdhdGlvblRpbWluZ0Z1bmN0aW9uPiB7CiAg
ICAgICAgIHsgImNvbm5lY3RFbmQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCB9
LAogICAgICAgICB7ICJjb25uZWN0U3RhcnQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVj
dFN0YXJ0IH0sCiAgICAgICAgIHsgImRvbUNvbXBsZXRlIl9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6
OmRvbUNvbXBsZXRlIH0sCkBAIC02Niw4ICs2NSw3IEBAIHN0YXRpYyBjb25zdCBNZW1vcnlDb21w
YWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBOYXZpZ2F0aW9uVGltaW5nRnVu
CiAgICAgICAgIHsgInNlY3VyZUNvbm5lY3Rpb25TdGFydCJfcywgJlBlcmZvcm1hbmNlVGltaW5n
OjpzZWN1cmVDb25uZWN0aW9uU3RhcnQgfSwKICAgICAgICAgeyAidW5sb2FkRXZlbnRFbmQiX3Ms
ICZQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRFbmQgfSwKICAgICAgICAgeyAidW5sb2Fk
RXZlbnRTdGFydCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudFN0YXJ0IH0sCi0g
ICAgfSk7Ci0gICAgCisgICAgfTsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggZDE1NjE3ODU2
NDI5MTMwOWZmYTY5YjQ4YWZiMjM0OGUxYTZhMDk3Mi4uNDAyODUzYzQ4OTUyMzJmZjUzZGYyYzIz
ODczMjAyOTllNWZjM2RkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVn
YWN5U2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtNDQsMjEgKzQ0LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIEZJWE1FOiBVUkxTY2hlbWVzTWFwIGlzIGEgcGVjdWxpYXIgdHlwZSBuYW1lIGdpdmVu
IHRoYXQgaXQgaXMgYSBzZXQuCiAKIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBidWlsdGlu
TG9jYWxVUkxTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5T
ZWN1cmVTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hl
bWVzV2l0aFVuaXF1ZU9yaWdpbnMoKTsKLXN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVp
bHRpbkVtcHR5RG9jdW1lbnRTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKTsKLXN0YXRpYyBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcygpOworc3RhdGljIFNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2VjdXJlU2NoZW1lcygpOworc3RhdGljIFNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCk7
CitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5FbXB0eURvY3VtZW50U2No
ZW1lcygpOworc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluQ2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCk7CitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVy
YWw+IGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKTsKIAotdXNpbmcgU3RyaW5nVmVjdG9yRnVu
Y3Rpb24gPSBjb25zdCBWZWN0b3I8U3RyaW5nPiYgKCopKCk7Cit1c2luZyBBU0NJSUxpdGVyYWxT
cGFuRnVuY3Rpb24gPSBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gKCopKCk7CiAKLXN0YXRpYyB2
b2lkIGFkZChVUkxTY2hlbWVzTWFwJiBzZXQsIFN0cmluZ1ZlY3RvckZ1bmN0aW9uIGZ1bmN0aW9u
KQorc3RhdGljIHZvaWQgYWRkKFVSTFNjaGVtZXNNYXAmIHNldCwgQVNDSUlMaXRlcmFsU3BhbkZ1
bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIGZvciAoYXV0byYgc2NoZW1lIDogZnVuY3Rpb24oKSkK
ICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwogfQogCi1zdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJM
U2NoZW1lc01hcD4gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiAoKmZ1bmN0aW9uKSgpKQorc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChBU0NJSUxpdGVyYWxTcGFuRnVuY3Rpb24gZnVu
Y3Rpb24pCiB7CiAgICAgVVJMU2NoZW1lc01hcCBzZXQ7CiAgICAgYWRkKHNldCwgZnVuY3Rpb24p
OwpAQCAtNjksOCArNjksOCBAQCBzdGF0aWMgTG9jayBzY2hlbWVSZWdpc3RyeUxvY2s7CiAKIHN0
YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBhbGxCdWlsdGluU2NoZW1lcygpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBTdHJpbmdWZWN0b3JGdW5jdGlvbiBmdW5jdGlvbnNbXSB7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIHNjaGVtZXMgPSBbXSB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uIGZ1bmN0aW9uc1tdIHsKICAgICAgICAgICAgIGJ1
aWx0aW5TZWN1cmVTY2hlbWVzLAogICAgICAgICAgICAgYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVl
T3JpZ2lucywKICAgICAgICAgICAgIGJ1aWx0aW5FbXB0eURvY3VtZW50U2NoZW1lcywKQEAgLTk3
LDI2ICs5NywyNSBAQCBzdGF0aWMgY29uc3QgVVJMU2NoZW1lc01hcCYgYWxsQnVpbHRpblNjaGVt
ZXMoKQogICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9Owog
ICAgICAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkp
CiAgICAgICAgICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwotCi0gICAgICAgICAgICBmb3IgKGF1
dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25zKQotICAgICAgICAgICAgICAgIGFkZChzZXQsIGZ1bmN0
aW9uKTsKICAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25z
KQorICAgICAgICAgICAgYWRkKHNldCwgZnVuY3Rpb24pOwogICAgICAgICBmb3IgKGF1dG8mIHNj
aGVtZSA6IG90aGVyU2NoZW1lcykKICAgICAgICAgICAgIHNldC5hZGQoc2NoZW1lKTsKICAgICAg
ICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1cm4gc2NoZW1lczsK
IH0KIAogc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMo
KSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNj
aGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1l
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChVUkxTY2hlbWVzTWFwIHsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQgc2NoZW1lcyA9IFVSTFNjaGVtZXNNYXAgewogICAgICAgICAiZmlsZSJfcywKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgImFwcGxld2ViZGF0YSJfcywKICNlbmRpZgotICAg
IH0pOworICAgIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAgLTEzNCwxMCArMTMzLDkg
QEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKSBXVEZf
UkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3QKICAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2No
ZW1lczsKIH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkg
V1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQorc3RhdGljIFNwYW48Y29uc3Qg
QVNDSUlMaXRlcmFsPiBidWlsdGluU2VjdXJlU2NoZW1lcygpCiB7Ci0gICAgQVNTRVJUKHNjaGVt
ZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9
IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmFycmF5IHNjaGVtZXMgewogICAgICAgICAiaHR0cHMiX3MsCiAgICAgICAgICJhYm91
dCJfcywKICAgICAgICAgImRhdGEiX3MsCkBAIC0xNDUsNyArMTQzLDcgQEAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1l
UmVnaXN0cnlMb2MKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICAgICAg
InJlc291cmNlIl9zLAogI2VuZGlmCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc2NoZW1l
czsKIH0KIApAQCAtMTU2LDE2ICsxNTQsMTUgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNlY3Vy
ZVNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiAgICAgcmV0
dXJuIHNlY3VyZVNjaGVtZXM7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVp
bHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJl
Z2lzdHJ5TG9jaykKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucygpCiB7Ci0gICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5p
c0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNj
aGVtZXMgewogICAgICAgICAiYWJvdXQiX3MsCiAgICAgICAgICJqYXZhc2NyaXB0Il9zLAogICAg
ICAgICAvLyBUaGlzIGlzIGFuIGludGVudGlvbmFsIGRpZmZlcmVuY2UgZnJvbSB0aGUgYmVoYXZp
b3IgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBjYWxscyBmb3IuCiAgICAgICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKICAgICAgICAgImRhdGEi
X3MsCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIApAQCAtMTc2LDEw
ICsxNzMsOSBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cgogICAgIHJldHVybiBzY2hlbWVzV2l0
aFVuaXF1ZU9yaWdpbnM7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluRW1wdHlE
b2N1bWVudFNjaGVtZXMoKQorc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGlu
RW1wdHlEb2N1bWVudFNjaGVtZXMoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8
U3RyaW5nPiB7ICJhYm91dCJfcyB9KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkg
c2NoZW1lcyB7ICJhYm91dCJfcyB9OwogICAgIHJldHVybiBzY2hlbWVzOwogfQogCkBAIC0xOTcs
MTAgKzE5Myw5IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzRm9yYmlkZGVuRnJvbURv
bWFpblJlbGF4YXRpb24oKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1jb25zdCBWZWN0b3I8
U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpIFdURl9S
RVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJ
TGl0ZXJhbD4gYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCiB7Ci0g
ICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0
IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7ICJibG9i
Il9zIH0pOworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBzY2hlbWVzIHsgImJsb2Ii
X3MgfTsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIApAQCAtMjYzLDEwICsyNTgsOSBAQCBzdGF0
aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVC
cm93c2luZygpCiAgICAgcmV0dXJuIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2
YXRlQnJvd3Npbmc7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluQ09SU0VuYWJs
ZWRTY2hlbWVzKCkKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNPUlNF
bmFibGVkU2NoZW1lcygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0
aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+
IHsgImh0dHAiX3MsICJodHRwcyJfcyB9KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJy
YXkgc2NoZW1lcyB7ICJodHRwIl9zLCAiaHR0cHMiX3MgfTsKICAgICByZXR1cm4gc2NoZW1lczsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRl
eCA0OGUyMGNmNDdjOTI4YmNkMGY3ZmVhOTIxMDA0MTc0MTc1ZDQ2ZTNjLi4zMDAzZWUwMzU5MzBm
M2E2YjFkYTY0NTA5MWRkMWMzMjNiMzhlNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMTkzLDggKzE5Myw4IEBAIGNvbnN0ZXhwciBDb21w
YXJhYmxlTGV0dGVyc0xpdGVyYWwgc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlQXJyYXlbXSA9
IHsKIAogSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBl
UmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkKIHsKLSAgICBzdGF0aWMgYXV0
byBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0g
ICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4geworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0eXBlcyA9IFtdIHsKKyAgICAgICAgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gdHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8U3RyaW5nPiB7CiAgICAgICAgICAgICAidGV4dC9odG1sIl9zLAogICAgICAgICAgICAgInRl
eHQveG1sIl9zLAogICAgICAgICAgICAgInRleHQveHNsIl9zLApAQCAtMjE3LDI1ICsyMTcsMjUg
QEAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVn
aXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUkKICAgICAgICAgLy8gVGhpcyBjYW4gcmVzdWx0IGlu
IGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGllcy4KICAgICAgICAgfTsKICAgICAg
ICAgZm9yIChhdXRvJiB0eXBlIDogc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlQXJyYXkpCi0g
ICAgICAgICAgICBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy5hZGQodHlwZS5saXRlcmFsKTsK
KyAgICAgICAgICAgIHR5cGVzLmFkZCh0eXBlLmxpdGVyYWwpOwogI2lmIEVOQUJMRShXRUJfQVJD
SElWRSkgfHwgRU5BQkxFKE1IVE1MKQotICAgICAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJL
bm93bkFyY2hpdmVNSU1FVHlwZXMoc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMpOworICAgICAg
ICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXModHlwZXMpOwog
I2VuZGlmCi0gICAgICAgIHJldHVybiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKLSAgICB9
KCkpOwotICAgIHJldHVybiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKKyAgICAgICAgcmV0
dXJuIHR5cGVzOworICAgIH0oKTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CiAKIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5Ojpz
dXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc3VwcG9y
dGVkTWVkaWFNSU1FVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBzdXBwb3J0ZWRNZWRpYU1JTUVU
eXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdHlwZXMgPSBbXSB7CisgICAgICAgIEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHR5cGVzOwogI2lmIEVOQUJM
RShWSURFTykKLSAgICAgICAgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKHN1cHBvcnRl
ZE1lZGlhTUlNRVR5cGVzKTsKKyAgICAgICAgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVz
KHR5cGVzKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7
Ci0gICAgfSgpKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CisgICAgICAg
IHJldHVybiB0eXBlczsKKyAgICB9KCk7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiBjb25zdGV4
cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHBkZk1JTUVUeXBlQXJyYXlbXSA9IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3Bw
CmluZGV4IDc2NmJjMmIwMGEzOTBmZjhmZjY0Yjc3ZmYwZjFjNWY3YzYxZTk0ZTUuLjE2Nzk5MTFi
NTg3ZjQxMzdiZDdkN2NjODBmYjYyNTM5NTA0Y2M1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcApAQCAtNTgsMjAgKzU4
LDE4IEBAIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkKICAgICByZXR1cm4gKmhh
c0FHWENvbXBpbGVyU2VydmljZTsKIH0KIAotY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGFn
eENvbXBpbGVyU2VydmljZXMoKQorU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGFneENvbXBpbGVy
U2VydmljZXMoKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0YXRpYyBj
b25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVy
YWw+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2VydmljZXMgewogICAgICAg
ICAiY29tLmFwcGxlLkFHWENvbXBpbGVyU2VydmljZSJfcywKICAgICAgICAgImNvbS5hcHBsZS5B
R1hDb21waWxlclNlcnZpY2UtUzJBOCJfcwotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIHNl
cnZpY2VzOwogfQogCi1jb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgYWd4Q29tcGlsZXJDbGFz
c2VzKCkKK1NwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBhZ3hDb21waWxlckNsYXNzZXMoKQogewot
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIGlva2l0
Q2xhc3NlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IGNsYXNzZXMgewogICAgICAgICAiQUdYQ29tbWFu
ZFF1ZXVlIl9zLAogICAgICAgICAiQUdYRGV2aWNlIl9zLAogICAgICAgICAiQUdYU2hhcmVkVXNl
ckNsaWVudCJfcywKQEAgLTgyLDggKzgwLDggQEAgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4m
IGFneENvbXBpbGVyQ2xhc3NlcygpCiAgICAgICAgICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudCJf
cywKICAgICAgICAgIklPQWNjZWxTaGFyZWRVc2VyQ2xpZW50MiJfcywKICAgICAgICAgIklPQWNj
ZWxTdWJtaXR0ZXIyIl9zLAotICAgIH0pOwotICAgIHJldHVybiBpb2tpdENsYXNzZXM7CisgICAg
fTsKKyAgICByZXR1cm4gY2xhc3NlczsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuaAppbmRleCBlNmJkNTdhZGM5MGExZWRh
OGRhNjQxN2MzMDk2OWEyMzRhZjBiMTM3Li42NTZjMWU3YjlmYjgwOTYwZDQ5ZDE4ZmE4OTkwZTJi
NGY5ZDk5ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hD
b21waWxlclNlcnZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hD
b21waWxlclNlcnZpY2UuaApAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRlc3Rpbmco
KTsKLVdFQkNPUkVfRVhQT1JUIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBhZ3hDb21waWxl
clNlcnZpY2VzKCk7Ci1XRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYg
YWd4Q29tcGlsZXJDbGFzc2VzKCk7CitXRUJDT1JFX0VYUE9SVCBTcGFuPGNvbnN0IEFTQ0lJTGl0
ZXJhbD4gYWd4Q29tcGlsZXJTZXJ2aWNlcygpOworV0VCQ09SRV9FWFBPUlQgU3Bhbjxjb25zdCBB
U0NJSUxpdGVyYWw+IGFneENvbXBpbGVyQ2xhc3NlcygpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQppbmRl
eCAwZTJmYmExYmUxMDY3NTRjZjY3OWYwNzY4MzQ5NTBiYWUzZWU0NzlkLi4xYWI2ODQ3ZjhhMzg0
OTdkNDIzYWJmNTQ2ZWE3N2I2ZGEyOTk4NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaFNldDxTdHJpbmc+PiYgZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkKIHsKLSAgICBzdGF0
aWMgYXV0byBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAgPSBb
XSB7CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJp
bmcsIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+PiBtYXA7
CiAKICAgICAgICAgYXV0byBhZGRFeHRlbnNpb24gPSBbJl0oY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikgewpAQCAtNzMsNyArNzMsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAKICAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCkpOworICAgIH0oKTsKIAogICAgIHJldHVy
biBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCmluZGV4
IGYzMDhhOGQyY2E4ZTk4ZmJjYmZiMDllNzQ0ZDczN2VmZDRiNmE5ZjMuLjQ1NGE0YjZmYmUxNzAy
YzZkZTk2MWUzMGFhZDc3ZTNmMDgzNzg4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCkBAIC0z
MSwzNyArMzEsMzMgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAKKyNpbXBvcnQgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgorCiAjaW1wb3J0ICJNZWRp
YVJlbW90ZVNvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHN0ZDo6
b3B0aW9uYWw8TVJNZWRpYVJlbW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRm
b3JtQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
IGNvbW1hbmQpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZl
ckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHVzaW5nIENvbW1hbmRUb0FjdGlvbk1hcCA9IEhhc2hN
YXA8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgTVJNZWRp
YVJlbW90ZUNvbW1hbmQsIFdURjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj47Ci0KLSAgICAgICAgcmV0dXJu
IENvbW1hbmRUb0FjdGlvbk1hcCB7Ci0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpQbGF5Q29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5IH0sCi0gICAgICAgICAgICB7
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
UGF1c2UgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0b3BDb21tYW5k
LCBNUk1lZGlhUmVtb3RlQ29tbWFuZFN0b3AgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kVG9n
Z2xlUGxheVBhdXNlIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdp
blNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5SZXdpbmQg
fSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2Fy
ZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kIH0sCi0gICAgICAgICAgICB7
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCwgTVJNZWRp
YVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21t
YW5kRW5kRmFzdEZvcndhcmQgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtU
b1BsYXliYWNrUG9zaXRpb24gfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlNraXBGb3J3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCB9LAot
ICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCwg
TVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQgfSwKLSAgICAgICAgICAgIHsgUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kTmV4
dFRyYWNrIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1Ry
YWNrQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrIH0sCi0gICAgICAg
IH07Ci0gICAgfSgpKTsKLQotICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZpbmQoY29t
bWFuZCk7Ci0gICAgaWYgKGl0ICE9IGNvbW1hbmRNYXAuZ2V0KCkuZW5kKCkpCi0gICAgICAgIHJl
dHVybiB7IGl0LT52YWx1ZSB9OwotCi0gICAgcmV0dXJuIHsgfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6cGFpcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZD4gbWFwcGluZ3NbXSA9IHsKKyAgICAgICAgeyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9
LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsIE1STWVkaWFS
ZW1vdGVDb21tYW5kUGF1c2UgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3Rv
cENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU3RvcCB9LAorICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFu
ZFRvZ2dsZVBsYXlQYXVzZSB9LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdp
blNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5SZXdpbmQg
fSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29t
bWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRSZXdpbmQgfSwKKyAgICAgICAgeyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kQmVnaW5GYXN0Rm9yd2FyZCB9LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kRmFzdEZv
cndhcmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQ
b3NpdGlvbkNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlv
biB9LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQs
IE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lw
QmFja3dhcmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29t
bWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2sgfSwKKyAgICAgICAgeyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
UHJldmlvdXNUcmFjayB9LAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJh
eU1hcCBtYXAgeyBtYXBwaW5ncyB9OworICAgIGlmIChhdXRvKiB2YWx1ZSA9IG1hcC50cnlHZXQo
Y29tbWFuZCkpCisgICAgICAgIHJldHVybiAqdmFsdWU7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hPiBSZW1v
dGVDb21tYW5kTGlzdGVuZXJDb2NvYTo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVu
dCYgY2xpZW50KQpAQCAtMTQwLDcgKzEzNiw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29h
OjpSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllCiAK
ICAgICAgICAgTE9HKE1lZGlhLCAiUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lckNvY29hIC0gcmVjZWl2ZWQgY29tbWFuZCAldSIsIGNvbW1hbmQpOwogCi0g
ICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxh
dGZvcm1Db21tYW5kIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZCB9OworICAgICAg
ICBhdXRvIHBsYXRmb3JtQ29tbWFuZCB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQg
fTsKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCBh
cmd1bWVudDsKICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzIHN0YXR1
cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IGQ5MjVkMDVmYTFkYzBhMGNkYWZlYjdjNjZiMTdj
ZjMwODk0OWNmOWQuLjc3ZDE1N2UzNjMyNzZlNmYxZmE5NTFlOGEyZTc0MGZhZjkyZTU3ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGNvbnN0
IFZlY3RvcjxBdG9tU3RyaW5nPiYgb2JzZXJ2ZWRFdmVudE5hbWVzKCk7CisgICAgc3RhdGljIFNw
YW48Y29uc3QgQXRvbVN0cmluZz4gb2JzZXJ2ZWRFdmVudE5hbWVzKCk7CiAgICAgY29uc3QgQXRv
bVN0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4g
bV92aWRlb0VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDFh
NTI2YzgzM2YzOGEzYzIwNjM2OWRjOTdiY2M3NzZlZTM1YTA1ZTAuLjZiNWUxZGQzNTg3MmJhMDNi
ZjVhMWViMTg3NzVkMjA1OWIxNGU3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
Lm1tCkBAIC0xNzgsMTAgKzE3OCwxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpzZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcgogICAgICAg
ICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsKIH0K
IAotY29uc3QgVmVjdG9yPEF0b21TdHJpbmc+JiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKK1NwYW48Y29uc3QgQXRvbVN0cmluZz4gVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Om9ic2VydmVkRXZlbnROYW1lcygpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGF1dG8gbmFtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPEF0b21T
dHJpbmc+IHsgZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50IH0pOwotICAgIHJldHVybiBuYW1lczsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbmFtZXMgPSBzdGQ6OmFycmF5IHsgZXZlbnROYW1l
cygpLnJlc2l6ZUV2ZW50IH07CisgICAgcmV0dXJuIG5hbWVzLmdldCgpOwogfQogCiBjb25zdCBB
dG9tU3RyaW5nJiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmNwcAppbmRleCA0YmE3NWJmMDBkOWY3MTNiNWFmYmJhNzkzNDAxOTcxNmNkOGYwMzgyLi45
YzcwNTU1YjM1ODg1NDFhNmU0NGJlMWJkMjRjZTJmNzM5YWI4NDVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC00Miw3
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmVjdG9yPENETVByb3h5RmFjdG9yeSo+
JiBDRE1Qcm94eUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKQogewotICAgIHN0YXRpYyBh
dXRvIGZhY3RvcmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9y
aWVzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBmYWN0b3JpZXMgPSBwbGF0Zm9ybVJl
Z2lzdGVyRmFjdG9yaWVzKCk7CiAgICAgcmV0dXJuIGZhY3RvcmllczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDdhZjk3
ODZmZWUyMzk4ZmIwMzhjYjljNDg5NWE3OTdkYzk3ZTFhMmIuLjRjMWRmZGNkYjk5N2ZiZmE1MDBj
YWFkMTliOGZiMDdkZDZhM2Q0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGJvb2wgdXNl
QmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkKIHsK
ICAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHN0
YXRpYyBjb25zdCBhdXRvIHNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkIHNldCA9IFtdIHsKICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9u
bHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKICAgICAgICAgYXV0byBhZGQgPSBb
JnNldF0gKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcj4gdW5p
Y29kZU5hbWUpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG5hbWVMZW5ndGggPSBzdHJsZW4obmFt
ZSk7CkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBib29sIHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZv
ckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIGFkZCgiTVMgTWluY2hv
IiwgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDY2MEUsIDB4NjcxRCB9KTsKICAgICAgICAg
YWRkKCJNZWlyeW8iLCB7IDB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4MzBBQSB9KTsKICAgICAg
ICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1cm4gc2V0LmdldCgp
LmNvbnRhaW5zKGZhbWlseSk7CiB9CiAKQEAgLTM3Myw3ICszNzMsNyBAQCBib29sIEZvbnRDYXNj
YWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGgoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ry
b3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4g
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBtYXAgPSBNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4gewogICAgICAgICAiQW1lcmljYW4gVHlwZXdy
aXRlciJfcywKICAgICAgICAgIkFyaWFsIEhlYnJldyJfcywKICAgICAgICAgIkNoYWxrYm9hcmQi
X3MsCkBAIC00MDgsNyArNDA4LDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6aGFzVmFsaWRBdmVyYWdl
Q2hhcldpZHRoKCkgY29uc3QKICAgICAgICAgIiNIZWFkTGluZUEiX3MsCiAgICAgICAgICIjUENN
eXVuZ2pvIl9zLAogICAgICAgICAiI1BpbEdpIl9zLAotICAgIH0pOworICAgIH07CiAgICAgcmV0
dXJuICFtYXAuZ2V0KCkuY29udGFpbnMoZmFtaWx5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggN2M1NDk0N2Y0ZDgx
NDA4NTU5Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OS4uNzNlZmNhMmFkZDEyMTA3Yzg3MmFiYTdmZmI1
ZGFmNzMxOTBiNjc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIHBsYXRmb3Jt
UmVnaXN0ZXJGYWN0b3JpZXMoRmFjdG9yeVZlY3RvciYgZmFjdG9yaWVzKQogCiBzdGF0aWMgRmFj
dG9yeVZlY3RvciYgaW5zdGFsbGVkRmFjdG9yaWVzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBmYWN0
b3JpZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8RmFjdG9yeVZlY3Rvcj4oeyB9KTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8RmFjdG9yeVZlY3Rvcj4gZmFjdG9yaWVzOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyByZWdpc3RlckRlZmF1bHRzOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHJlZ2lz
dGVyRGVmYXVsdHMsIFsmXSB7CiAgICAgICAgIHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFj
dG9yaWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAppbmRl
eCA1ZWY4NzZmOWYzODY5OTA3NTMzY2FiODcwMTQ0MGYyNjVhYzA2ZmViLi41NTY2ZWJiZjEzYjdi
ZjVjMzk5MmFjZGQ4NjdhNTNiODIzM2M5ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI3ByYWdtYSBvbmNlCkBAIC02NywyNCArNjcsMjQgQEAgY2xhc3MgRmxvYXRTaXplOwog
CiBjbGFzcyBJbnRTaXplIHsKIHB1YmxpYzoKLSAgICBJbnRTaXplKCkgOiBtX3dpZHRoKDApLCBt
X2hlaWdodCgwKSB7IH0KLSAgICBJbnRTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgOiBtX3dp
ZHRoKHdpZHRoKSwgbV9oZWlnaHQoaGVpZ2h0KSB7IH0KKyAgICBjb25zdGV4cHIgSW50U2l6ZSgp
ID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgSW50U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
IDogbV93aWR0aCh3aWR0aCksIG1faGVpZ2h0KGhlaWdodCkgeyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgSW50U2l6ZShjb25zdCBGbG9hdFNpemUmKTsgLy8gZG9uJ3QgZG8gdGhpcyBp
bXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKLSAgICAKLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVp
Z2h0OyB9CiAKLSAgICBmbG9hdCBtaW5EaW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBzdGQ6Om1p
bihtX3dpZHRoLCBtX2hlaWdodCk7IH0KLSAgICBmbG9hdCBtYXhEaW1lbnNpb24oKSBjb25zdCB7
IHJldHVybiBzdGQ6Om1heChtX3dpZHRoLCBtX2hlaWdodCk7IH0KKyAgICBjb25zdGV4cHIgaW50
IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIGNvbnN0ZXhwciBpbnQgaGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKworICAgIGNvbnN0ZXhwciBpbnQgbWlu
RGltZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4obV93aWR0aCwgbV9oZWlnaHQpOyB9
CisgICAgY29uc3RleHByIGludCBtYXhEaW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBzdGQ6Om1h
eChtX3dpZHRoLCBtX2hlaWdodCk7IH0KIAogICAgIHZvaWQgc2V0V2lkdGgoaW50IHdpZHRoKSB7
IG1fd2lkdGggPSB3aWR0aDsgfQogICAgIHZvaWQgc2V0SGVpZ2h0KGludCBoZWlnaHQpIHsgbV9o
ZWlnaHQgPSBoZWlnaHQ7IH0KIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
d2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9Ci0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7
IHJldHVybiAhbV93aWR0aCAmJiAhbV9oZWlnaHQ7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KKyAg
ICBjb25zdGV4cHIgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbV93aWR0aCAmJiAhbV9o
ZWlnaHQ7IH0KKworICAgIGNvbnN0ZXhwciBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihtX2hl
aWdodCk7IH0KIAotICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1faGVpZ2h0KTsgfQot
ICAgIAogICAgIHZvaWQgZXhwYW5kKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICB7CiAgICAg
ICAgIG1fd2lkdGggKz0gd2lkdGg7CkBAIC0xMDIsMTggKzEwMiwxOCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fd2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRo
KSAqIHdpZHRoU2NhbGUpOwogICAgICAgICBtX2hlaWdodCA9IHN0YXRpY19jYXN0PGludD4oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1faGVpZ2h0KSAqIGhlaWdodFNjYWxlKTsKICAgICB9Ci0gICAgCisK
ICAgICB2b2lkIHNjYWxlKGZsb2F0IHNjYWxlKQogICAgIHsKICAgICAgICAgdGhpcy0+c2NhbGUo
c2NhbGUsIHNjYWxlKTsKICAgICB9CiAKLSAgICBJbnRTaXplIGV4cGFuZGVkVG8oY29uc3QgSW50
U2l6ZSYgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIEludFNpemUgZXhwYW5kZWRUbyhjb25z
dCBJbnRTaXplJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBJbnRTaXplKHN0
ZDo6bWF4KG1fd2lkdGgsIG90aGVyLm1fd2lkdGgpLCBzdGQ6Om1heChtX2hlaWdodCwgb3RoZXIu
bV9oZWlnaHQpKTsKICAgICB9CiAKLSAgICBJbnRTaXplIHNocnVua1RvKGNvbnN0IEludFNpemUm
IG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBJbnRTaXplIHNocnVua1RvKGNvbnN0IEludFNp
emUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEludFNpemUoc3RkOjptaW4o
bV93aWR0aCwgb3RoZXIubV93aWR0aCksIHN0ZDo6bWluKG1faGVpZ2h0LCBvdGhlci5tX2hlaWdo
dCkpOwogICAgIH0KQEAgLTEzMyw4ICsxMzMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBJbnRTaXplIGNvbnN0cmFpbmVkQmV0d2Vlbihjb25zdCBJbnRTaXplJiBtaW4sIGNvbnN0
IEludFNpemUmIG1heCkgY29uc3Q7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IENyYXNo
T25PdmVyZmxvdz4KLSAgICBDaGVja2VkPHVuc2lnbmVkLCBUPiBhcmVhKCkgY29uc3QKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUID0gQ3Jhc2hPbk92ZXJmbG93PiBDaGVja2VkPHVuc2lnbmVkLCBU
PiBhcmVhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBDaGVja2VkPHVuc2lnbmVkLCBU
PihhYnMobV93aWR0aCkpICogYWJzKG1faGVpZ2h0KTsKICAgICB9CkBAIC0xNDQsMTIgKzE0Mywx
MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYWJzKG1f
d2lkdGgpKSAqIGFicyhtX2hlaWdodCk7CiAgICAgfQogCi0gICAgaW50IGRpYWdvbmFsTGVuZ3Ro
U3F1YXJlZCgpIGNvbnN0CisgICAgY29uc3RleHByIGludCBkaWFnb25hbExlbmd0aFNxdWFyZWQo
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fd2lkdGggKiBtX3dpZHRoICsgbV9oZWln
aHQgKiBtX2hlaWdodDsKICAgICB9CiAKLSAgICBJbnRTaXplIHRyYW5zcG9zZWRTaXplKCkgY29u
c3QKKyAgICBjb25zdGV4cHIgSW50U2l6ZSB0cmFuc3Bvc2VkU2l6ZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gSW50U2l6ZShtX2hlaWdodCwgbV93aWR0aCk7CiAgICAgfQpAQCAtMTc3
LDcgKzE3Niw4IEBAIHB1YmxpYzoKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3Qo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBpbnQgbV93aWR0aCwgbV9oZWlnaHQ7CisgICAgaW50
IG1fd2lkdGggeyAwIH07CisgICAgaW50IG1faGVpZ2h0IHsgMCB9OwogfTsKIAogaW5saW5lIElu
dFNpemUmIG9wZXJhdG9yKz0oSW50U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYgYikKQEAgLTE5NCwy
NyArMTk0LDI3IEBAIGlubGluZSBJbnRTaXplJiBvcGVyYXRvci09KEludFNpemUmIGEsIGNvbnN0
IEludFNpemUmIGIpCiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBJbnRTaXplIG9wZXJhdG9y
Kyhjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQorY29uc3RleHByIEludFNpemUg
b3BlcmF0b3IrKGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCiB7CiAgICAgcmV0
dXJuIEludFNpemUoYS53aWR0aCgpICsgYi53aWR0aCgpLCBhLmhlaWdodCgpICsgYi5oZWlnaHQo
KSk7CiB9CiAKLWlubGluZSBJbnRTaXplIG9wZXJhdG9yLShjb25zdCBJbnRTaXplJiBhLCBjb25z
dCBJbnRTaXplJiBiKQorY29uc3RleHByIEludFNpemUgb3BlcmF0b3ItKGNvbnN0IEludFNpemUm
IGEsIGNvbnN0IEludFNpemUmIGIpCiB7CiAgICAgcmV0dXJuIEludFNpemUoYS53aWR0aCgpIC0g
Yi53aWR0aCgpLCBhLmhlaWdodCgpIC0gYi5oZWlnaHQoKSk7CiB9CiAKLWlubGluZSBJbnRTaXpl
IG9wZXJhdG9yLShjb25zdCBJbnRTaXplJiBzaXplKQorY29uc3RleHByIEludFNpemUgb3BlcmF0
b3ItKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIEludFNpemUoLXNpemUud2lk
dGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCitjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCiB7CiAgICAgcmV0dXJuIGEud2lk
dGgoKSA9PSBiLndpZHRoKCkgJiYgYS5oZWlnaHQoKSA9PSBiLmhlaWdodCgpOwogfQogCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCitj
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUm
IGIpCiB7CiAgICAgcmV0dXJuIGEud2lkdGgoKSAhPSBiLndpZHRoKCkgfHwgYS5oZWlnaHQoKSAh
PSBiLmhlaWdodCgpOwogfQpAQCAtMjI0LDE2ICsyMjQsMTMgQEAgV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEludFNpemUm
KTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7CisKIHRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OkludFNpemU+OwogdGVtcGxhdGU8PiBzdHJ1
Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpJbnRTaXplPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZT4gc3RydWN0IExvZ0FyZ3VtZW50OwotdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxX
ZWJDb3JlOjpJbnRTaXplPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNpemUudG9KU09OU3Ry
aW5nKCk7Ci0gICAgfQordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKK3Rl
bXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkludFNpemU+IHsKKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIHsgcmV0dXJu
IHNpemUudG9KU09OU3RyaW5nKCk7IH0KIH07Ci19CiAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggYzk5OGQ5ZjY0
NzBlODBmOGQ0Y2RkNWUxMjY2ZjA1YjEyYmQ2MTA5ZS4uNDgxMWJlNzliNTk1N2RmOTAyNDNiMzJl
MTU0NDkwODE1ZjBhMzE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTEwOTUsNyArMTA5NSw3IEBAIFdURkxvZ0No
YW5uZWwmIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0
CiAKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnN0YXRpY01JTUVUeXBlTGlzdCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZCBjYWNoZSA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKICAg
ICAgICAgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIl9zLAogICAgICAgICAiYXBwbGlj
YXRpb24veC1tcGVndXJsIl9zLAogICAgICAgICAiYXVkaW8vM2dwcCJfcywKQEAgLTExMjcsNyAr
MTEyNyw3IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246CiAgICAgICAgICJ2aWRlby94LW00diJf
cywKICAgICAgICAgInZpZGVvL3gtbXBlZyJfcywKICAgICAgICAgInZpZGVvL3gtbXBnIl9zLAot
ICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApp
bmRleCA5Y2M4NGFjNDI2MzhjMjg1MWQxOTFlYWRjM2E1MDgzZGI4MjFiNjcxLi43N2RjMmU3ODI0
OTQ2MDI2MTU0YTEwYzU0NjBjYmUyNjg4Mzc5NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTE3
NjQsMTIgKzE3NjQsMTAgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCkKIHsK
ICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCVwKSIsIHRoaXMp
OwogCi0gICAgc3RhdGljIGF1dG8gcHJvcGVydHlLZXlOYW1lID0gbWFrZU5ldmVyRGVzdHJveWVk
KFtdIHsKLSAgICAgICAgY29uc3Qgdm9pZCoga2V5TmFtZXNbXSA9IHsKLSAgICAgICAgICAgIEFW
Q0ZBc3NldFByb3BlcnR5UGxheWFibGUKLSAgICAgICAgfTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgcHJvcGVydHlLZXlOYW1lID0gW10geworICAgICAgICBjb25zdCB2b2lkKiBrZXlOYW1l
c1tdID0geyBBVkNGQXNzZXRQcm9wZXJ0eVBsYXlhYmxlIH07CiAgICAgICAgIHJldHVybiBhZG9w
dENGKENGQXJyYXlDcmVhdGUoMCwga2V5TmFtZXMsIHN0ZDo6c2l6ZShrZXlOYW1lcyksICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICB9KCkpOworICAgIH0oKTsKIAogICAgIEFWQ0ZBc3Nl
dExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0
eUtleU5hbWUuZ2V0KCkuZ2V0KCksIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2Fs
bGJhY2tDb250ZXh0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcAppbmRleCAyZmMxODc5NjRjNDMxZDFh
OTczNDkyN2JhZDQwNmVkOWY2YjRmZjY3Li42OTk5MDRhZjIzZGExNzk4NmNkNWM3ODc3OWExMjBi
NGQyNjY2YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcApAQCAtNTAsOCArNTAsNyBAQCBTdHJpbmcgcHJl
ZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBp
ZiAodHlwZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgc3RhdGlj
IGNvbnN0IGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZCBtYXAgPSBIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
IHsKICAgICAgICAgeyAicHVibGljLmh0bWwiX3MsICJodG1sIl9zIH0sCiAgICAgICAgIHsgInB1
YmxpYy5qcGVnIl9zLCAianBlZyJfcyB9LAogICAgICAgICB7ICJwdWJsaWMuanBlZy0yMDAwIl9z
LCAianAyIl9zIH0sCkBAIC03Nyw3ICs3Niw3IEBAIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25G
b3JJbWFnZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICB7ICJjb20ubmV0c2NhcGUu
amF2YXNjcmlwdC1zb3VyY2UiX3MsICJqcyJfcyB9LAogICAgICAgICB7ICJjb20uc2dpLnNnaS1p
bWFnZSJfcywgInNnaSJfcyB9LAogICAgICAgICB7ICJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2Ui
X3MsICJ0Z2EiX3MgfSwKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBtYXAuZ2V0KCkuZ2V0
KHR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9VVElSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9VVElSZWdpc3RyeS5jcHAKaW5kZXggYTQ3MDI0NDBlZGZiMDMyMmZlYWY3Y2Q5MWI2ZWFkNDA3
YjNjOTIwYS4uNDZmNjk0MTdmZDI2ZjMxNTRjMDQ5YWRkN2I5NWZkMDdkNDQ0ZmQ0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNw
cApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBkZWZhdWx0U3VwcG9ydGVk
SW1hZ2VUeXBlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gZGVmYXVsdFN1cHBvcnRlZElt
YWdlVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZCBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcyA9IFtdIHsKICAgICAgICAgSGFzaFNldDxT
dHJpbmc+IGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzID0gewogICAgICAgICAgICAgImNvbS5j
b21wdXNlcnZlLmdpZiJfcywKICAgICAgICAgICAgICJjb20ubWljcm9zb2Z0LmJtcCJfcywKQEAg
LTc1LDcgKzc1LDcgQEAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNo
U2V0PFN0cmluZz4mIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGUKICAgICAgICAgICAgICAgICBm
aWx0ZXJlZC5hZGQoaW1hZ2VUeXBlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmlsdGVy
ZWQ7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAKICAgICByZXR1cm4gZGVmYXVsdFN1cHBvcnRlZElt
YWdlVHlwZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKaW5kZXggNWE0ZWNlNjky
ODFhN2Y2NjFjMjUzZmY3OTU2NTY3MTc3OTk4Y2RhMC4uZTVhZjNkZTZiMjM3OTBjYWIyNDQ3Nzlk
Y2I0ZTBmOGZlYzE1Mzc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcApAQCAtODIs
MTEgKzgyLDExIEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxTeXN0ZW1Gb250S2luZD4g
bWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0IEF0b21TdHJpbmcmCiAgICAgYXV0byBjb21wYXJlQXNQ
b2ludGVyID0gW10oY29uc3QgQXRvbVN0cmluZyYgbGhzLCBjb25zdCBBdG9tU3RyaW5nJiByaHMp
IHsKICAgICAgICAgcmV0dXJuIGxocy5pbXBsKCkgPCByaHMuaW1wbCgpOwogICAgIH07Ci0gICAg
c3RhdGljIGF1dG8gc3RyaW5ncyA9IG1ha2VOZXZlckRlc3Ryb3llZChbJmNvbXBhcmVBc1BvaW50
ZXJdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3RyaW5ncyA9IFsmY29tcGFyZUFzUG9p
bnRlcl0gewogICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRBcnJheTxBdG9tU3RyaW5nPihz
dHlsZXMpOwogICAgICAgICBzdGQ6OnNvcnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwg
Y29tcGFyZUFzUG9pbnRlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSgpKTsKKyAg
ICB9KCk7CiAgICAgaWYgKHN0ZDo6YmluYXJ5X3NlYXJjaChzdHJpbmdzLmdldCgpLmJlZ2luKCks
IHN0cmluZ3MuZ2V0KCkuZW5kKCksIHN0cmluZywgY29tcGFyZUFzUG9pbnRlcikpCiAgICAgICAg
IHJldHVybiBTeXN0ZW1Gb250S2luZDo6VGV4dFN0eWxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCmluZGV4IGRlNmRlYmUyYmQ0Y2ExMzYwNDBmYzBjM2E0NWRjNGVhMzlmNDg5
ZDAuLjhmNWU4NzkwZjJmZTEwYmExMjNmMTNmMjAzY2M3ZTMxZWNhOTFkZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01NTUsMjAgKzU1NSwxNiBAQCBwcml2YXRlOgog
CiBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6d2VibU1JTUVUeXBlcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gdHlw
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
IHR5cGVzID0gW10gewogICAgICAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiB0eXBlczsKLQogI2lmIEVOQUJMRShWUDkpCiAgICAgICAgIHR5cGVzLmFkZCgidmlk
ZW8vd2VibSIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZPUkJJUykgfHwgRU5BQkxFKE9QVVMpCiAg
ICAgICAgIHR5cGVzLmFkZCgiYXVkaW8vd2VibSIpOwogI2VuZGlmCi0KICAgICAgICAgcmV0dXJu
IHR5cGVzOwotICAgIH0oKSk7Ci0KKyAgICB9KCk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCkBA
IC0xNTMzLDEzICsxNTI5LDEzIEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TWlu
aW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQgZHVyYXRpb24pCiAKIGNvbnN0IE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpzdXBwb3J0ZWRWaWRlb0NvZGVjcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gY29kZWNz
ID0gbWFrZU5ldmVyRGVzdHJveWVkPE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aFNldDxTdHJpbmc+Pih7ICJWX1ZQOCJfcywgIlZfVlA5Il9zIH0pOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZCBjb2RlY3MgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hT
ZXQ8U3RyaW5nPiB7ICJWX1ZQOCJfcywgIlZfVlA5Il9zIH07CiAgICAgcmV0dXJuIGNvZGVjczsK
IH0KIAogY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmlu
Zz4mIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZEF1ZGlvQ29kZWNzKCkKIHsKLSAg
ICBzdGF0aWMgYXV0byBjb2RlY3MgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8TWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4+KHsgIkFfVk9SQklTIl9zLCAiQV9PUFVT
Il9zIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBjb2RlY3MgPSBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiB7ICJBX1ZPUkJJUyJfcywgIkFfT1BV
UyJfcyB9OwogICAgIHJldHVybiBjb2RlY3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4IGVhMmU4NjEzNDM1YWFkZmI4YTM4OGMwYzZlNWZl
YWU1YWJmMWI0N2UuLmQxZWFkYWRmOWRjYmZiOTM0NWEyMmVkODA0ODExMWVhNGM0MmNjY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtMTE2LDkg
KzExNiw5IEBAIHN0YXRpYyBGb250Q2FzY2FkZSBjYXNjYWRlRm9yU3lzdGVtRm9udChDR0Zsb2F0
IHNpemUpCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhFbGVtZW50JiBsaW5r
RWxlbWVudCwgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFRleHRJbmRpY2F0b3JEYXRh
JiBpbmRpY2F0b3JEYXRhLCBGb250UmVuZGVyaW5nTW9kZSwgZmxvYXQpCiB7CiAgICAgLy8gRklY
TUU6IE1vc3Qgb2YgdGhpcyBjYW4gZ28gYXdheSBvbmNlIHdlIGNhbiB1c2UgVUlVUkxEcmFnUHJl
dmlld1ZpZXcgdW5jb25kaXRpb25hbGx5LgotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGRyYWdJ
bWFnZVBhZGRpbmcgPSAxMDsKLSAgICBzdGF0aWMgY29uc3QgYXV0byB0aXRsZUZvbnRDYXNjYWRl
ID0gbWFrZU5ldmVyRGVzdHJveWVkKGNhc2NhZGVGb3JTeXN0ZW1Gb250KDE2KSk7Ci0gICAgc3Rh
dGljIGNvbnN0IGF1dG8gdXJsRm9udENhc2NhZGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY2FzY2Fk
ZUZvclN5c3RlbUZvbnQoMTQpKTsKKyAgICBjb25zdGV4cHIgQ0dGbG9hdCBkcmFnSW1hZ2VQYWRk
aW5nID0gMTA7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkIHRpdGxlRm9udENhc2Nh
ZGUgPSBjYXNjYWRlRm9yU3lzdGVtRm9udCgxNik7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVz
dHJveWVkIHVybEZvbnRDYXNjYWRlID0gY2FzY2FkZUZvclN5c3RlbUZvbnQoMTQpOwogCiAgICAg
U3RyaW5nIHRvcFN0cmluZyh0aXRsZS5zdHJpcFdoaXRlU3BhY2UoKSk7CiAgICAgU3RyaW5nIGJv
dHRvbVN0cmluZyhbKE5TVVJMICopdXJsIGFic29sdXRlU3RyaW5nXSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJh
cy5tbQppbmRleCA2YjI4NGEwNGJiYzVkY2FjYzY4NDA5Y2YxMDBmZDY2MzFiNzE4MGE5Li40NmZi
MjhlODE1MjQzYjBlODQ3YzA3MjNlMTc2YjdjYzJmNmEwMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMu
bW0KQEAgLTQyLDExICs0MiwxMSBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJp
bmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKE5TQXR0cmlidXRlZAogewogICAgIE5T
UmFuZ2UgYXR0YWNobWVudFJhbmdlOwogICAgIE5TU3RyaW5nICpvcmlnaW5hbFN0cmluZyA9IFth
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107Ci0gICAgc3RhdGljIGF1dG8gYXR0YWNobWVudENoYXJT
dHJpbmcgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZCBhdHRhY2htZW50Q2hhclN0cmluZyA9IFtdIHsKICAgICAgICAgdW5pY2hhciBjaGFyc1syXSA9
IHsgTlNBdHRhY2htZW50Q2hhcmFjdGVyLCAwIH07CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ2hhcmFjdGVyczpjaGFycyBsZW5ndGg6MV0pOwotICAg
IH0oKSk7Ci0gICAgCisgICAgfSgpOworCiAgICAgYXR0YWNobWVudFJhbmdlID0gW29yaWdpbmFs
U3RyaW5nIHJhbmdlT2ZTdHJpbmc6YXR0YWNobWVudENoYXJTdHJpbmcuZ2V0KCkuZ2V0KCldOwog
ICAgIGlmIChhdHRhY2htZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiBhdHRhY2ht
ZW50UmFuZ2UubGVuZ3RoID4gMCkgewogICAgICAgICBhdXRvIG5ld0F0dHJpYnV0ZWRTdHJpbmcg
PSBhZG9wdE5TKFthdHRyaWJ1dGVkU3RyaW5nIG11dGFibGVDb3B5V2l0aFpvbmU6TlVMTF0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcApp
bmRleCAwNTBjZGY5ZmM1MzIwMmQ4MTAwYmVmNzMyMzM3NTliNjc0YmM3OGE2Li5mZWQ1YmYzMTkz
ZmU1M2VmNDEwZDgyODk1MTQ5M2M5NmEwMGNjMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0
aWMgRmFjdG9yeVZlY3RvciBkZWZhdWx0RmFjdG9yaWVzKCkKIAogc3RhdGljIEZhY3RvcnlWZWN0
b3ImIGZhY3RvcmllcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gZmFjdG9yaWVzID0gbWFrZU5ldmVy
RGVzdHJveWVkPEZhY3RvcnlWZWN0b3I+KGRlZmF1bHRGYWN0b3JpZXMoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkIGZhY3RvcmllcyA9IGRlZmF1bHRGYWN0b3JpZXMoKTsKICAgICByZXR1
cm4gZmFjdG9yaWVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5k
ZXggOGVhNjE0NzIxZDMwMjNhOGJiMTIwNGJkOTE4MmY2MDQyNmI0MTY5ZC4uNTllYzM2ZTUyOTdm
OWIzNGI4MjRkM2JhZWE3MjYxNGUxNTQ2Yzk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJl
U291cmNlLmNwcApAQCAtOTcsNTQgKzk3LDQzIEBAIHZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVT
b3VyY2U6OnNldFN1cHBvcnRlZFByZXNldHMoY29uc3QgVmVjdG9yPFJlZjxWaWRlb1ByZXNlCiAg
ICAgfQogfQogCi1jb25zdCBWZWN0b3I8SW50U2l6ZT4mIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291
cmNlOjpzdGFuZGFyZFZpZGVvU2l6ZXMoKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNpemVz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgc3RhdGljIEludFNpemUgdmlkZW9T
aXplc1tdID0gewotICAgICAgICAgICAgeyAxMTIsIDExMiB9LAotICAgICAgICAgICAgeyAxNjAs
IDE2MCB9LAotICAgICAgICAgICAgeyAxNjAsIDEyMCB9LCAvLyA0OjMsIFFRVkdBCi0gICAgICAg
ICAgICB7IDE3NiwgMTQ0IH0sIC8vIDQ6MywgUUNJRgotICAgICAgICAgICAgeyAxOTIsIDE5MiB9
LAotICAgICAgICAgICAgeyAxOTIsIDExMiB9LCAvLyAxNjo5Ci0gICAgICAgICAgICB7IDE5Miwg
MTQ0IH0sIC8vIDM6NAotICAgICAgICAgICAgeyAyNDAsIDI0MCB9LAotICAgICAgICAgICAgeyAy
NDAsIDE2MCB9LCAvLyAzOjIsIEhRVkdBCi0gICAgICAgICAgICB7IDMyMCwgMzIwIH0sCi0gICAg
ICAgICAgICB7IDMyMCwgMTgwIH0sIC8vIDE2OjkKLSAgICAgICAgICAgIHsgMzIwLCAyNDAgfSwg
Ly8gNDozLCBRVkdBCi0gICAgICAgICAgICB7IDM1MiwgMjg4IH0sIC8vIENJRgotICAgICAgICAg
ICAgeyA0ODAsIDI3MiB9LCAvLyAxNjo5Ci0gICAgICAgICAgICB7IDQ4MCwgMzYwIH0sIC8vIDQ6
MwotICAgICAgICAgICAgeyA0ODAsIDQ4MCB9LAotICAgICAgICAgICAgeyA2NDAsIDY0MCB9LAot
ICAgICAgICAgICAgeyA2NDAsIDM2MCB9LCAvLyAxNjo5LCAzNjBwIG5IRAotICAgICAgICAgICAg
eyA2NDAsIDQ4MCB9LCAvLyA0OjMKLSAgICAgICAgICAgIHsgNzIwLCA3MjAgfSwKLSAgICAgICAg
ICAgIHsgODAwLCA2MDAgfSwgLy8gNDozLCBTVkdBCi0gICAgICAgICAgICB7IDk2MCwgNTQwIH0s
IC8vIDE2OjksIHFIRAotICAgICAgICAgICAgeyAxMDI0LCA2MDAgfSwgLy8gMTY6OSwgV1NWR0EK
LSAgICAgICAgICAgIHsgMTAyNCwgNzY4IH0sIC8vIDQ6MywgWEdBCi0gICAgICAgICAgICB7IDEy
ODAsIDk2MCB9LCAvLyA0OjMKLSAgICAgICAgICAgIHsgMTI4MCwgMTAyNCB9LCAvLyA1OjQsIFNY
R0EKLSAgICAgICAgICAgIHsgMTI4MCwgNzIwIH0sIC8vIDE2OjksIFdYR0EKLSAgICAgICAgICAg
IHsgMTM2NiwgNzY4IH0sIC8vIDE2OjksIEhECi0gICAgICAgICAgICB7IDE2MDAsIDEyMDB9LCAv
LyA0OjMsIFVYR0EKLSAgICAgICAgICAgIHsgMTkyMCwgMTA4MCB9LCAvLyAxNjo5LCAxMDgwcCBG
SEQKLSAgICAgICAgICAgIHsgMjU2MCwgMTQ0MCB9LCAvLyAxNjo5LCBRSEQKLSAgICAgICAgICAg
IHsgMjU5MiwgMTkzNiB9LAotICAgICAgICAgICAgeyAzMjY0LCAyNDQ4IH0sIC8vIDM6NAotICAg
ICAgICAgICAgeyAzODQwLCAyMTYwIH0sIC8vIDE2OjksIDRLIFVIRAotICAgICAgICB9OwotICAg
ICAgICBWZWN0b3I8SW50U2l6ZT4gc2l6ZXM7Ci0gICAgICAgIGZvciAoYXV0byYgc2l6ZSA6IHZp
ZGVvU2l6ZXMpCi0gICAgICAgICAgICBzaXplcy5hcHBlbmQoc2l6ZSk7CitzdGF0aWMgY29uc3Rl
eHByIEludFNpemUgc3RhbmRhcmRWaWRlb1NpemVzW10gPSB7CisgICAgeyAxMTIsIDExMiB9LAor
ICAgIHsgMTYwLCAxNjAgfSwKKyAgICB7IDE2MCwgMTIwIH0sIC8vIDQ6MywgUVFWR0EKKyAgICB7
IDE3NiwgMTQ0IH0sIC8vIDQ6MywgUUNJRgorICAgIHsgMTkyLCAxOTIgfSwKKyAgICB7IDE5Miwg
MTEyIH0sIC8vIDE2OjkKKyAgICB7IDE5MiwgMTQ0IH0sIC8vIDM6NAorICAgIHsgMjQwLCAyNDAg
fSwKKyAgICB7IDI0MCwgMTYwIH0sIC8vIDM6MiwgSFFWR0EKKyAgICB7IDMyMCwgMzIwIH0sCisg
ICAgeyAzMjAsIDE4MCB9LCAvLyAxNjo5CisgICAgeyAzMjAsIDI0MCB9LCAvLyA0OjMsIFFWR0EK
KyAgICB7IDM1MiwgMjg4IH0sIC8vIENJRgorICAgIHsgNDgwLCAyNzIgfSwgLy8gMTY6OQorICAg
IHsgNDgwLCAzNjAgfSwgLy8gNDozCisgICAgeyA0ODAsIDQ4MCB9LAorICAgIHsgNjQwLCA2NDAg
fSwKKyAgICB7IDY0MCwgMzYwIH0sIC8vIDE2OjksIDM2MHAgbkhECisgICAgeyA2NDAsIDQ4MCB9
LCAvLyA0OjMKKyAgICB7IDcyMCwgNzIwIH0sCisgICAgeyA4MDAsIDYwMCB9LCAvLyA0OjMsIFNW
R0EKKyAgICB7IDk2MCwgNTQwIH0sIC8vIDE2OjksIHFIRAorICAgIHsgMTAyNCwgNjAwIH0sIC8v
IDE2OjksIFdTVkdBCisgICAgeyAxMDI0LCA3NjggfSwgLy8gNDozLCBYR0EKKyAgICB7IDEyODAs
IDk2MCB9LCAvLyA0OjMKKyAgICB7IDEyODAsIDEwMjQgfSwgLy8gNTo0LCBTWEdBCisgICAgeyAx
MjgwLCA3MjAgfSwgLy8gMTY6OSwgV1hHQQorICAgIHsgMTM2NiwgNzY4IH0sIC8vIDE2OjksIEhE
CisgICAgeyAxNjAwLCAxMjAwIH0sIC8vIDQ6MywgVVhHQQorICAgIHsgMTkyMCwgMTA4MCB9LCAv
LyAxNjo5LCAxMDgwcCBGSEQKKyAgICB7IDI1NjAsIDE0NDAgfSwgLy8gMTY6OSwgUUhECisgICAg
eyAyNTkyLCAxOTM2IH0sCisgICAgeyAzMjY0LCAyNDQ4IH0sIC8vIDM6NAorICAgIHsgMzg0MCwg
MjE2MCB9LCAvLyAxNjo5LCA0SyBVSEQKK307CiAKLSAgICAgICAgcmV0dXJuIHNpemVzOwotICAg
IH0oKSk7Ci0KLSAgICByZXR1cm4gc2l6ZXMuZ2V0KCk7Ci19CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VmFsdWVUeXBlPgogc3RhdGljIHZvaWQgdXBkYXRlTWluTWF4KFZhbHVlVHlwZSYgbWluLCBWYWx1
ZVR5cGUmIG1heCwgVmFsdWVUeXBlIHZhbHVlKQogewpAQCAtMjE4LDcgKzIwNyw3IEBAIGJvb2wg
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OnN1cHBvcnRzQ2FwdHVyZVNpemUoc3RkOjpvcHRp
b25hbDxpbnQ+IHdpZHRoLCBzCiAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IHdpZHRoLnZhbHVl
KCksIGhlaWdodC52YWx1ZSgpIH0pOwogCiAgICAgaWYgKHdpZHRoKSB7Ci0gICAgICAgIGZvciAo
YXV0byYgc2l6ZSA6IHN0YW5kYXJkVmlkZW9TaXplcygpKSB7CisgICAgICAgIGZvciAoYXV0byYg
c2l6ZSA6IHN0YW5kYXJkVmlkZW9TaXplcykgewogICAgICAgICAgICAgaWYgKHdpZHRoLnZhbHVl
KCkgPT0gc2l6ZS53aWR0aCgpICYmIGZ1bmN0aW9uKHsgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpIH0pKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMjYs
NyArMjE1LDcgQEAgYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNDYXB0
dXJlU2l6ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHMKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGZvciAoYXV0byYgc2l6ZSA6IHN0YW5kYXJkVmlkZW9TaXplcygpKSB7
CisgICAgZm9yIChhdXRvJiBzaXplIDogc3RhbmRhcmRWaWRlb1NpemVzKSB7CiAgICAgICAgIGlm
IChoZWlnaHQudmFsdWUoKSA9PSBzaXplLmhlaWdodCgpICYmIGZ1bmN0aW9uKHsgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpIH0pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMzE2LDcgKzMwNSw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2U6OkNhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBSZWFsdGltZVZpZGVvCiAgICAgICAgICAgICAg
ICAgcmVzaXplU2l6ZSA9IHsgcmVxdWVzdGVkV2lkdGgudmFsdWUoKSwgcmVxdWVzdGVkSGVpZ2h0
LnZhbHVlKCkgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGZvciAoYXV0byYgc3RhbmRhcmRTaXplIDogc3RhbmRhcmRWaWRlb1NpemVzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgc3RhbmRhcmRTaXplIDogc3RhbmRhcmRWaWRlb1NpemVzKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YW5kYXJkU2l6ZS53aWR0aCgpID4gcHJlc2V0LT5zaXplLndp
ZHRoKCkgfHwgc3RhbmRhcmRTaXplLmhlaWdodCgpID4gcHJlc2V0LT5zaXplLmhlaWdodCgpKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAoKHJlcXVlc3Rl
ZFdpZHRoICYmIHJlcXVlc3RlZFdpZHRoLnZhbHVlKCkgIT0gc3RhbmRhcmRTaXplLndpZHRoKCkp
IHx8IChyZXF1ZXN0ZWRIZWlnaHQgJiYgcmVxdWVzdGVkSGVpZ2h0LnZhbHVlKCkgIT0gc3RhbmRh
cmRTaXplLmhlaWdodCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDg1
M2IwYjI4M2U5MDFhMGJhNGM5NThmMWRkNzVkYTg2YTRmMzkxMzEuLjg2YzJhNGI0YWFkOTU2NGMw
MTRhOGIyMmE4MDQyM2NjYmVmMzAzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2Uu
aApAQCAtNzMsNyArNzMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVDYXBhYmlsaXRp
ZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpOwogCiAgICAgdm9pZCBkaXNwYXRj
aE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpWaWRlb1NhbXBs
ZU1ldGFkYXRhKTsKLSAgICBjb25zdCBWZWN0b3I8SW50U2l6ZT4mIHN0YW5kYXJkVmlkZW9TaXpl
cygpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBDYXB0dXJlU2l6ZUFuZEZyYW1lUmF0ZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IGM3MWY4NmEzYzI4Y2Q1ZGViZmQyZWQ4MWU3
NmY1ODU1ODliMGM4NmIuLmIwMDIxMGZjYjlkZjUzMDEwYTg0NjBlOGQzMjY0Y2EyNmZhODhiYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC0yMjksMjEgKzIyOSwxOCBAQCBwcml2
YXRlOgogCiBzdGF0aWMgVmVjdG9yPE1vY2tNZWRpYURldmljZT4mIGRldmljZXMoKQogewotICAg
IHN0YXRpYyBhdXRvIGRldmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBy
ZXR1cm4gZGVmYXVsdERldmljZXMoKTsKLSAgICB9KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZCBkZXZpY2VzID0gZGVmYXVsdERldmljZXMoKTsKICAgICByZXR1cm4gZGV2aWNlczsKIH0K
IAogc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBNb2NrTWVkaWFEZXZpY2U+JiBkZXZpY2VNYXAoKQog
ewotICAgIHN0YXRpYyBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIG1hcCA9IFtdIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIE1v
Y2tNZWRpYURldmljZT4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIGRldmljZSA6IGRldmljZXMo
KSkKICAgICAgICAgICAgIG1hcC5hZGQoZGV2aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKLQog
ICAgICAgICByZXR1cm4gbWFwOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBtYXA7
CiB9CiAKQEAgLTM5Niw1NyArMzkzLDUzIEBAIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4g
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyCiAKIFZl
Y3RvcjxDYXB0dXJlRGV2aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Om1pY3Jv
cGhvbmVEZXZpY2VzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBtaWNyb3Bob25lRGV2aWNlcyA9IG1h
a2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1pY3JvcGhv
bmVEZXZpY2VzID0gW10gewogICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gbWljcm9waG9u
ZURldmljZXM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcygpKSB7
CiAgICAgICAgICAgICBpZiAoZGV2aWNlLmlzTWljcm9waG9uZSgpKQogICAgICAgICAgICAgICAg
IG1pY3JvcGhvbmVEZXZpY2VzLmFwcGVuZCh0b0NhcHR1cmVEZXZpY2UoZGV2aWNlKSk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG1pY3JvcGhvbmVEZXZpY2VzOwotICAgIH0oKSk7Ci0KKyAg
ICB9KCk7CiAgICAgcmV0dXJuIG1pY3JvcGhvbmVEZXZpY2VzOwogfQogCiBWZWN0b3I8Q2FwdHVy
ZURldmljZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzcGVha2VyRGV2aWNlcygp
CiB7Ci0gICAgc3RhdGljIGF1dG8gc3BlYWtlckRldmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
W10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBzcGVha2VyRGV2aWNlcyA9IFtdIHsKICAg
ICAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IHNwZWFrZXJEZXZpY2VzOwogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGRldmljZSA6IGRldmljZXMoKSkgewogICAgICAgICAgICAgaWYgKGRldmlj
ZS5pc1NwZWFrZXIoKSkKICAgICAgICAgICAgICAgICBzcGVha2VyRGV2aWNlcy5hcHBlbmQodG9D
YXB0dXJlRGV2aWNlKGRldmljZSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBzcGVha2Vy
RGV2aWNlczsKLSAgICB9KCkpOwotCisgICAgfSgpOwogICAgIHJldHVybiBzcGVha2VyRGV2aWNl
czsKIH0KIAogVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6dmlkZW9EZXZpY2VzKCkKIHsKLSAgICBzdGF0aWMgYXV0byB2aWRlb0RldmljZXMgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB2aWRlb0Rl
dmljZXMgPSBbXSB7CiAgICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiB2aWRlb0RldmljZXM7
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcygpKSB7CiAgICAgICAg
ICAgICBpZiAoZGV2aWNlLmlzQ2FtZXJhKCkpCiAgICAgICAgICAgICAgICAgdmlkZW9EZXZpY2Vz
LmFwcGVuZCh0b0NhcHR1cmVEZXZpY2UoZGV2aWNlKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHZpZGVvRGV2aWNlczsKLSAgICB9KCkpOwotCisgICAgfSgpOwogICAgIHJldHVybiB2aWRl
b0RldmljZXM7CiB9CiAKIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OmRpc3BsYXlEZXZpY2VzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBkaXNwbGF5
RGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkIGRpc3BsYXlEZXZpY2VzID0gW10gewogICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4g
ZGlzcGxheURldmljZXM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNl
cygpKSB7CiAgICAgICAgICAgICBpZiAoZGV2aWNlLmlzRGlzcGxheSgpKQogICAgICAgICAgICAg
ICAgIGRpc3BsYXlEZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIGRldmljZS5wZXJzaXN0ZW50SWQpLnZh
bHVlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBkaXNwbGF5RGV2aWNlczsKLSAgICB9
KCkpOwotCisgICAgfSgpOwogICAgIHJldHVybiBkaXNwbGF5RGV2aWNlczsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA5ZGQyYjBiNWI5NWE1
MDVhMzkyYWJhOTQ4ODJmMDUzMWYzNjVlOTBiLi5lOTQzZjg2ZDhiOGE0YmYxM2E0NDA4YjZhNGU0
ZGQwNzIwMTZmYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmNwcApAQCAtNjMsMTAgKzYzLDEwIEBAIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0CiAvLyBGSVhN
RTogV2hhdCBkb2VzIHRoZSB3b3JkICJjYWNoZSIgbWVhbiBoZXJlPwogc3RhdGljIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lVHlwZUNhY2hlKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIGNhY2hlID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4gewogICAgICAgICAidmlkZW8vbW9jayIsCiAgICAgICAgICJhdWRpby9tb2NrIiwKLSAgICB9
KTsKKyAgICB9OwogICAgIHJldHVybiBjYWNoZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCAy
YjE5YTNiODYxMDc1YTUwNjkxNzFiZGI3YTMzMDkyZmMyNzY5YWY2Li41NjllOGI4OTQ1MjM2ZTFk
ZDJjNTIyODVkYjU2ODI5MmZmYzkyOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNzIsMTIgKzcy
LDEyIEBAIHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVuCiAKIHN0YXRpYyBOU09wZXJhdGlvblF1ZXVl
ICpvcGVyYXRpb25RdWV1ZUZvckFzeW5jQ2xpZW50cygpCiB7Ci0gICAgc3RhdGljIGF1dG8gcXVl
dWUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBx
dWV1ZSA9IFtdIHsKICAgICAgICAgYXV0byBxdWV1ZSA9IGFkb3B0TlMoW1tOU09wZXJhdGlvblF1
ZXVlIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIC8vIERlZmF1bHQgY29uY3VycmVudCBvcGVyYXRp
b24gY291bnQgZGVwZW5kcyBvbiBjdXJyZW50IHN5c3RlbSB3b3JrbG9hZCwgYnV0IGRlbGVnYXRl
IG1ldGhvZHMgYXJlIG1vc3RseSBpZGxpbmcgaW4gSVBDLCBzbyB3ZSBjYW4gcnVuIGFzIG1hbnkg
YXMgbmVlZGVkLgogICAgICAgICBbcXVldWUgc2V0TWF4Q29uY3VycmVudE9wZXJhdGlvbkNvdW50
Ok5TT3BlcmF0aW9uUXVldWVEZWZhdWx0TWF4Q29uY3VycmVudE9wZXJhdGlvbkNvdW50XTsKICAg
ICAgICAgcmV0dXJuIHF1ZXVlOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBxdWV1
ZS5nZXQoKS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbQppbmRleCBlMTk0MDA5NTE3ZGEyN2FmMzEyM2FmYTA2ZDRi
N2ExZmM1MmM1NTJlLi5mMTNjMzNlYmRjMmVmY2FhNDhkMzFkNjcwNzIzMmIwNzIyYTg0ZjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmll
cy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmll
cy5tbQpAQCAtNzEsMTEgKzcxLDExIEBAIHN0YXRpYyBib29sIGlzQW1iaWd1b3VzQm91bmRhcnlD
aGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiAKIHN0YXRpYyBDRlN0cmluZ1Rva2VuaXplclJl
ZiB0b2tlbml6ZXJGb3JTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogewotICAgIHN0YXRpYyBhdXRv
IGxvY2FsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIGNvbnN0IE5ldmVy
RGVzdHJveWVkIGxvY2FsZSA9IFtdIHsKICAgICAgICAgY29uc3QgY2hhciogbG9jYWxJRCA9IGN1
cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwogICAgICAgICBhdXRvIGN1cnJlbnRMb2NhbGVJRCA9
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGxvY2FsSUQpLCBzdHJsZW4obG9jYWxJ
RCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAg
ICAgICAgIHJldHVybiBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGN1cnJlbnRMb2NhbGVJRC5nZXQoKSkpOwotICAgIH0oKSk7CisgICAgfSgpOwogCiAgICAgaWYg
KCFsb2NhbGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggMWRjMTRjYzU1OTRhZThkOWJhZWVhMDU4Yzlk
MzZjM2I4MGUzOGE2MS4uNDU0ZTY0YzZiZmE3NWZhZmMyZWU5MWU3NWNkYzJmYzQ4ZTZjZDYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0xMzkxLDggKzEz
OTEsNyBAQCBhdXRvIFJlbmRlclRoZW1lOjpjb2xvckNhY2hlKE9wdGlvblNldDxTdHlsZUNvbG9y
T3B0aW9ucz4gb3B0aW9ucykgY29uc3QgLT4gQ29sbwogCiBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JiBSZW5kZXJUaGVtZTo6Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgc3lz
dGVtRm9udElEKSBjb25zdAogewotICAgIHN0YXRpYyBhdXRvIGZvbnREZXNjcmlwdGlvbnMgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQ8c3RkOjphcnJheTxGb250Q2FzY2FkZURlc2NyaXB0aW9uLCAxMD4+
KHsgfSk7Ci0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjphcnJheTxGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uLCAxMD4+IGZvbnREZXNjcmlwdGlvbnM7CiAgICAgc3dpdGNoIChzeXN0ZW1G
b250SUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQ2FwdGlvbjoKICAgICAgICAgcmV0dXJuIGZvbnRE
ZXNjcmlwdGlvbnMuZ2V0KClbMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNvY29hLm1tCmluZGV4IDRiMTNiNWZiM2Q3YWUzY2E0MDgxOTdjMWQxMWJjZTMxMTVhZDg2
NmYuLjFhNjY3MzIyNzIyYWQzOGZjMTUxNGJiYjExOWVkY2UzYThlZjczZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0yMzYsNyArMjM2LDcg
QEAgU3RyaW5nIFJlbmRlclRoZW1lQ29jb2E6Om1lZGlhQ29udHJvbHNGb3JtYXR0ZWRTdHJpbmdG
b3JEdXJhdGlvbihjb25zdCBkb3VibGUgZHUKIAogRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVu
ZGVyVGhlbWVDb2NvYTo6Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgdmFs
dWVJRCkgY29uc3QKIHsKLSAgICBzdGF0aWMgYXV0byBmb250RGVzY3JpcHRpb25zID0gbWFrZU5l
dmVyRGVzdHJveWVkPHN0ZDo6YXJyYXk8Rm9udENhc2NhZGVEZXNjcmlwdGlvbiwgMTc+Pih7IH0p
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OmFycmF5PEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24sIDE3Pj4gZm9udERlc2NyaXB0aW9uczsKIAogICAgIEFTU0VSVChzdGQ6OmFsbF9vZihz
dGQ6OmJlZ2luKGZvbnREZXNjcmlwdGlvbnMuZ2V0KCkpLCBzdGQ6OmVuZChmb250RGVzY3JpcHRp
b25zLmdldCgpKSwgW10oYXV0byYgZGVzY3JpcHRpb24pIHsKICAgICAgICAgcmV0dXJuICFkZXNj
cmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwCmluZGV4IDM3MTFkOGJmNWY4NzViMjNlMmE2MzVlNjBlYWE3MGE2OGYzYWEx
MmMuLmM2OTJiNDA3NDJjMzc3Zjk5ZjBjODk0ZmI2MjU3YjYyYzQzZjQzZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8VW5pdEJlemllcj4+IHBhcnNlS2V5U3BsaW5lcyhT
dHJpbmdWaWV3IHN0cmluZykKIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBzdGF0aWMg
Y29uc3QgYXV0byBzdXBwb3J0ZWRBdHRyaWJ1dGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3VwcG9ydGVkQXR0cmlidXRlcyA9IFtdIHsKICAg
ICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFF1YWxpZmllZE5h
bWU+IHNldDsKICAgICAgICAgU1ZHVGVzdHM6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoc2V0KTsK
ICAgICAgICAgc2V0LmFkZCh7CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBTVkdBbmltYXRpb25F
bGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKICAgICAgICAgICAgIFNWR05hbWVzOjpieUF0dHIuZ2V0KCksCiAgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm4gc2V0OwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihh
dHRyTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCBjODY4MzMzZTgz
NmNiN2U0ZTBiMjQ4Yzk3NzQyZjU0OTNiZTFkZGQ3Li5mM2ZmZTY0ZjFhNGQyN2Q5NTY1ZGFiNjY3
NmJkMmQ0YTZiYzRmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC03MCw4MSAr
NzAsODEgQEAgc3RhdGljIE5FVkVSX0lOTElORSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8QXRvbVN0cmluZywgQ1NTUHJvcGUKICAgICB1c2luZyBuYW1lc3BhY2UgU1ZH
TmFtZXM7CiAKICAgICAvLyBUaGlzIGxpc3Qgc2hvdWxkIGluY2x1ZGUgYWxsIGJhc2UgQ1NTIGFu
ZCBTVkcgQ1NTIHByb3BlcnRpZXMgd2hpY2ggYXJlIGV4cG9zZWQgYXMgU1ZHIFhNTCBhdHRyaWJ1
dGVzLgotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCBhdHRyaWJ1dGVOYW1l
c1tdID0gewotICAgICAgICAmYWxpZ25tZW50X2Jhc2VsaW5lQXR0ci5nZXQoKSwKLSAgICAgICAg
JmJhc2VsaW5lX3NoaWZ0QXR0ci5nZXQoKSwKLSAgICAgICAgJmJ1ZmZlcmVkX3JlbmRlcmluZ0F0
dHIuZ2V0KCksCi0gICAgICAgICZjbGlwQXR0ci5nZXQoKSwKLSAgICAgICAgJmNsaXBfcGF0aEF0
dHIuZ2V0KCksCi0gICAgICAgICZjbGlwX3J1bGVBdHRyLmdldCgpLAotICAgICAgICAmU1ZHTmFt
ZXM6OmNvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAgJmNvbG9yX2ludGVycG9sYXRpb25BdHRyLmdl
dCgpLAotICAgICAgICAmY29sb3JfaW50ZXJwb2xhdGlvbl9maWx0ZXJzQXR0ci5nZXQoKSwKLSAg
ICAgICAgJmN1cnNvckF0dHIuZ2V0KCksCi0gICAgICAgICZjeEF0dHIuZ2V0KCksCi0gICAgICAg
ICZjeUF0dHIuZ2V0KCksCi0gICAgICAgICZTVkdOYW1lczo6ZGlyZWN0aW9uQXR0ci5nZXQoKSwK
LSAgICAgICAgJmRpc3BsYXlBdHRyLmdldCgpLAotICAgICAgICAmZG9taW5hbnRfYmFzZWxpbmVB
dHRyLmdldCgpLAotICAgICAgICAmZmlsbEF0dHIuZ2V0KCksCi0gICAgICAgICZmaWxsX29wYWNp
dHlBdHRyLmdldCgpLAotICAgICAgICAmZmlsbF9ydWxlQXR0ci5nZXQoKSwKLSAgICAgICAgJmZp
bHRlckF0dHIuZ2V0KCksCi0gICAgICAgICZmbG9vZF9jb2xvckF0dHIuZ2V0KCksCi0gICAgICAg
ICZmbG9vZF9vcGFjaXR5QXR0ci5nZXQoKSwKLSAgICAgICAgJmZvbnRfZmFtaWx5QXR0ci5nZXQo
KSwKLSAgICAgICAgJmZvbnRfc2l6ZUF0dHIuZ2V0KCksCi0gICAgICAgICZmb250X3N0cmV0Y2hB
dHRyLmdldCgpLAotICAgICAgICAmZm9udF9zdHlsZUF0dHIuZ2V0KCksCi0gICAgICAgICZmb250
X3ZhcmlhbnRBdHRyLmdldCgpLAotICAgICAgICAmZm9udF93ZWlnaHRBdHRyLmdldCgpLAotICAg
ICAgICAmZ2x5cGhfb3JpZW50YXRpb25faG9yaXpvbnRhbEF0dHIuZ2V0KCksCi0gICAgICAgICZn
bHlwaF9vcmllbnRhdGlvbl92ZXJ0aWNhbEF0dHIuZ2V0KCksCi0gICAgICAgICZpbWFnZV9yZW5k
ZXJpbmdBdHRyLmdldCgpLAotICAgICAgICAmU1ZHTmFtZXM6OmhlaWdodEF0dHIuZ2V0KCksCi0g
ICAgICAgICZrZXJuaW5nQXR0ci5nZXQoKSwKLSAgICAgICAgJmxldHRlcl9zcGFjaW5nQXR0ci5n
ZXQoKSwKLSAgICAgICAgJmxpZ2h0aW5nX2NvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAgJm1hcmtl
cl9lbmRBdHRyLmdldCgpLAotICAgICAgICAmbWFya2VyX21pZEF0dHIuZ2V0KCksCi0gICAgICAg
ICZtYXJrZXJfc3RhcnRBdHRyLmdldCgpLAotICAgICAgICAmbWFza0F0dHIuZ2V0KCksCi0gICAg
ICAgICZtYXNrX3R5cGVBdHRyLmdldCgpLAotICAgICAgICAmb3BhY2l0eUF0dHIuZ2V0KCksCi0g
ICAgICAgICZvdmVyZmxvd0F0dHIuZ2V0KCksCi0gICAgICAgICZwYWludF9vcmRlckF0dHIuZ2V0
KCksCi0gICAgICAgICZwb2ludGVyX2V2ZW50c0F0dHIuZ2V0KCksCi0gICAgICAgICZyQXR0ci5n
ZXQoKSwKLSAgICAgICAgJnJ4QXR0ci5nZXQoKSwKLSAgICAgICAgJnJ5QXR0ci5nZXQoKSwKLSAg
ICAgICAgJnNoYXBlX3JlbmRlcmluZ0F0dHIuZ2V0KCksCi0gICAgICAgICZzdG9wX2NvbG9yQXR0
ci5nZXQoKSwKLSAgICAgICAgJnN0b3Bfb3BhY2l0eUF0dHIuZ2V0KCksCi0gICAgICAgICZzdHJv
a2VBdHRyLmdldCgpLAotICAgICAgICAmc3Ryb2tlX2Rhc2hhcnJheUF0dHIuZ2V0KCksCi0gICAg
ICAgICZzdHJva2VfZGFzaG9mZnNldEF0dHIuZ2V0KCksCi0gICAgICAgICZzdHJva2VfbGluZWNh
cEF0dHIuZ2V0KCksCi0gICAgICAgICZzdHJva2VfbGluZWpvaW5BdHRyLmdldCgpLAotICAgICAg
ICAmc3Ryb2tlX21pdGVybGltaXRBdHRyLmdldCgpLAotICAgICAgICAmc3Ryb2tlX29wYWNpdHlB
dHRyLmdldCgpLAotICAgICAgICAmc3Ryb2tlX3dpZHRoQXR0ci5nZXQoKSwKLSAgICAgICAgJnRl
eHRfYW5jaG9yQXR0ci5nZXQoKSwKLSAgICAgICAgJnRleHRfZGVjb3JhdGlvbkF0dHIuZ2V0KCks
Ci0gICAgICAgICZ0ZXh0X3JlbmRlcmluZ0F0dHIuZ2V0KCksCi0gICAgICAgICZ1bmljb2RlX2Jp
ZGlBdHRyLmdldCgpLAotICAgICAgICAmdmVjdG9yX2VmZmVjdEF0dHIuZ2V0KCksCi0gICAgICAg
ICZ2aXNpYmlsaXR5QXR0ci5nZXQoKSwKLSAgICAgICAgJlNWR05hbWVzOjp3aWR0aEF0dHIuZ2V0
KCksCi0gICAgICAgICZ3b3JkX3NwYWNpbmdBdHRyLmdldCgpLAotICAgICAgICAmd3JpdGluZ19t
b2RlQXR0ci5nZXQoKSwKLSAgICAgICAgJnhBdHRyLmdldCgpLAotICAgICAgICAmeUF0dHIuZ2V0
KCksCisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IGF0dHJpYnV0ZU5hbWVzIHsKKyAg
ICAgICAgJmFsaWdubWVudF9iYXNlbGluZUF0dHIsCisgICAgICAgICZiYXNlbGluZV9zaGlmdEF0
dHIsCisgICAgICAgICZidWZmZXJlZF9yZW5kZXJpbmdBdHRyLAorICAgICAgICAmY2xpcEF0dHIs
CisgICAgICAgICZjbGlwX3BhdGhBdHRyLAorICAgICAgICAmY2xpcF9ydWxlQXR0ciwKKyAgICAg
ICAgJlNWR05hbWVzOjpjb2xvckF0dHIsCisgICAgICAgICZjb2xvcl9pbnRlcnBvbGF0aW9uQXR0
ciwKKyAgICAgICAgJmNvbG9yX2ludGVycG9sYXRpb25fZmlsdGVyc0F0dHIsCisgICAgICAgICZj
dXJzb3JBdHRyLAorICAgICAgICAmY3hBdHRyLAorICAgICAgICAmY3lBdHRyLAorICAgICAgICAm
U1ZHTmFtZXM6OmRpcmVjdGlvbkF0dHIsCisgICAgICAgICZkaXNwbGF5QXR0ciwKKyAgICAgICAg
JmRvbWluYW50X2Jhc2VsaW5lQXR0ciwKKyAgICAgICAgJmZpbGxBdHRyLAorICAgICAgICAmZmls
bF9vcGFjaXR5QXR0ciwKKyAgICAgICAgJmZpbGxfcnVsZUF0dHIsCisgICAgICAgICZmaWx0ZXJB
dHRyLAorICAgICAgICAmZmxvb2RfY29sb3JBdHRyLAorICAgICAgICAmZmxvb2Rfb3BhY2l0eUF0
dHIsCisgICAgICAgICZmb250X2ZhbWlseUF0dHIsCisgICAgICAgICZmb250X3NpemVBdHRyLAor
ICAgICAgICAmZm9udF9zdHJldGNoQXR0ciwKKyAgICAgICAgJmZvbnRfc3R5bGVBdHRyLAorICAg
ICAgICAmZm9udF92YXJpYW50QXR0ciwKKyAgICAgICAgJmZvbnRfd2VpZ2h0QXR0ciwKKyAgICAg
ICAgJmdseXBoX29yaWVudGF0aW9uX2hvcml6b250YWxBdHRyLAorICAgICAgICAmZ2x5cGhfb3Jp
ZW50YXRpb25fdmVydGljYWxBdHRyLAorICAgICAgICAmaW1hZ2VfcmVuZGVyaW5nQXR0ciwKKyAg
ICAgICAgJlNWR05hbWVzOjpoZWlnaHRBdHRyLAorICAgICAgICAma2VybmluZ0F0dHIsCisgICAg
ICAgICZsZXR0ZXJfc3BhY2luZ0F0dHIsCisgICAgICAgICZsaWdodGluZ19jb2xvckF0dHIsCisg
ICAgICAgICZtYXJrZXJfZW5kQXR0ciwKKyAgICAgICAgJm1hcmtlcl9taWRBdHRyLAorICAgICAg
ICAmbWFya2VyX3N0YXJ0QXR0ciwKKyAgICAgICAgJm1hc2tBdHRyLAorICAgICAgICAmbWFza190
eXBlQXR0ciwKKyAgICAgICAgJm9wYWNpdHlBdHRyLAorICAgICAgICAmb3ZlcmZsb3dBdHRyLAor
ICAgICAgICAmcGFpbnRfb3JkZXJBdHRyLAorICAgICAgICAmcG9pbnRlcl9ldmVudHNBdHRyLAor
ICAgICAgICAmckF0dHIsCisgICAgICAgICZyeEF0dHIsCisgICAgICAgICZyeUF0dHIsCisgICAg
ICAgICZzaGFwZV9yZW5kZXJpbmdBdHRyLAorICAgICAgICAmc3RvcF9jb2xvckF0dHIsCisgICAg
ICAgICZzdG9wX29wYWNpdHlBdHRyLAorICAgICAgICAmc3Ryb2tlQXR0ciwKKyAgICAgICAgJnN0
cm9rZV9kYXNoYXJyYXlBdHRyLAorICAgICAgICAmc3Ryb2tlX2Rhc2hvZmZzZXRBdHRyLAorICAg
ICAgICAmc3Ryb2tlX2xpbmVjYXBBdHRyLAorICAgICAgICAmc3Ryb2tlX2xpbmVqb2luQXR0ciwK
KyAgICAgICAgJnN0cm9rZV9taXRlcmxpbWl0QXR0ciwKKyAgICAgICAgJnN0cm9rZV9vcGFjaXR5
QXR0ciwKKyAgICAgICAgJnN0cm9rZV93aWR0aEF0dHIsCisgICAgICAgICZ0ZXh0X2FuY2hvckF0
dHIsCisgICAgICAgICZ0ZXh0X2RlY29yYXRpb25BdHRyLAorICAgICAgICAmdGV4dF9yZW5kZXJp
bmdBdHRyLAorICAgICAgICAmdW5pY29kZV9iaWRpQXR0ciwKKyAgICAgICAgJnZlY3Rvcl9lZmZl
Y3RBdHRyLAorICAgICAgICAmdmlzaWJpbGl0eUF0dHIsCisgICAgICAgICZTVkdOYW1lczo6d2lk
dGhBdHRyLAorICAgICAgICAmd29yZF9zcGFjaW5nQXR0ciwKKyAgICAgICAgJndyaXRpbmdfbW9k
ZUF0dHIsCisgICAgICAgICZ4QXR0ciwKKyAgICAgICAgJnlBdHRyLAogICAgIH07CiAKICAgICBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgQ1NTUHJv
cGVydHlJRD4gbWFwOwogCiAgICAgZm9yIChhdXRvJiBuYW1lIDogYXR0cmlidXRlTmFtZXMpIHsK
LSAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lID0gbmFtZS0+bG9jYWxOYW1lKCk7
CisgICAgICAgIGF1dG8mIGxvY2FsTmFtZSA9IG5hbWUtPmdldCgpLmxvY2FsTmFtZSgpOwogICAg
ICAgICBtYXAuYWRkKGxvY2FsTmFtZSwgY3NzUHJvcGVydHlJRChsb2NhbE5hbWUpKTsKICAgICB9
CiAKQEAgLTcxMywxMDkgKzcxMywxMDkgQEAgY29uc3QgUmVuZGVyU3R5bGUqIFNWR0VsZW1lbnQ6
OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIAogUXVhbGlm
aWVkTmFtZSBTVkdFbGVtZW50OjphbmltYXRhYmxlQXR0cmlidXRlRm9yTmFtZShjb25zdCBBdG9t
U3RyaW5nJiBsb2NhbE5hbWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gYW5pbWF0YWJsZUF0
dHJpYnV0ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBzdGF0aWMgY29uc3Qg
UXVhbGlmaWVkTmFtZSogY29uc3QgbmFtZXNbXSA9IHsKLSAgICAgICAgICAgICZIVE1MTmFtZXM6
OmNsYXNzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6YW1wbGl0dWRlQXR0ci5n
ZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6YXppbXV0aEF0dHIuZ2V0KCksCi0gICAgICAg
ICAgICAmU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNW
R05hbWVzOjpiaWFzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6Y2xpcFBhdGhV
bml0c0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmN4QXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6Y3lBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
OjpkaWZmdXNlQ29uc3RhbnRBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpkaXZp
c29yQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZHhBdHRyLmdldCgpLAotICAg
ICAgICAgICAgJlNWR05hbWVzOjpkeUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6
OmVkZ2VNb2RlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZWxldmF0aW9uQXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZXhwb25lbnRBdHRyLmdldCgpLAotICAg
ICAgICAgICAgJlNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjpmeEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmZ5QXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6aGVpZ2h0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdO
YW1lczo6aW4yQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6aW5BdHRyLmdldCgp
LAotICAgICAgICAgICAgJlNWR05hbWVzOjppbnRlcmNlcHRBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjprMUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmsyQXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6azNBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjprNEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Omtlcm5l
bE1hdHJpeEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIuZ2V0KCksCi0gICAgICAg
ICAgICAmU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdO
YW1lczo6bWFya2VyV2lkdGhBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjptYXNr
Q29udGVudFVuaXRzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6bWFza1VuaXRz
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6bWV0aG9kQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6bW9kZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFt
ZXM6Om51bU9jdGF2ZXNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpvZmZzZXRB
dHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpvcGVyYXRvckF0dHIuZ2V0KCksCi0g
ICAgICAgICAgICAmU1ZHTmFtZXM6Om9yZGVyQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdO
YW1lczo6b3JpZW50QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cGF0aExlbmd0
aEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNB
dHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ci5n
ZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6cG9pbnRzQXRYQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZT
VkdOYW1lczo6cG9pbnRzQXRZQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cG9p
bnRzQXRaQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
LmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmU1ZHTmFtZXM6OnJhZGl1c0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OnJBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpyZWZYQXR0ci5n
ZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cmVmWUF0dHIuZ2V0KCksCi0gICAgICAgICAg
ICAmU1ZHTmFtZXM6OnJlc3VsdEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnJv
dGF0ZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnJ4QXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6cnlBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
OjpzY2FsZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnNlZWRBdHRyLmdldCgp
LAotICAgICAgICAgICAgJlNWR05hbWVzOjpzbG9wZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OnNwYWNpbmdBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpzcGVj
dWxhckNvbnN0YW50QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6c3BlY3VsYXJF
eHBvbmVudEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05h
bWVzOjpzdXJmYWNlU2NhbGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp0YWJs
ZVZhbHVlc0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnRhcmdldEF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnRhcmdldFhBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjp0YXJnZXRZQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6
dHJhbnNmb3JtQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6dHlwZUF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnZhbHVlc0F0dHIuZ2V0KCksCi0gICAgICAgICAg
ICAmU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp3
aWR0aEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OngxQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6eDJBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
Ojp4QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnkxQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZTVkdOYW1lczo6eTJBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp5QXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnpBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNW
R05hbWVzOjpocmVmQXR0ci5nZXQoKSwKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYW5pbWF0
YWJsZUF0dHJpYnV0ZXMgPSBbXSB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJh
eSBuYW1lcyB7CisgICAgICAgICAgICAmSFRNTE5hbWVzOjpjbGFzc0F0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmF6aW11
dGhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwKKyAgICAg
ICAgICAgICZTVkdOYW1lczo6Ymlhc0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmNsaXBQ
YXRoVW5pdHNBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpjeEF0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6OmN5QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZGlmZnVzZUNvbnN0
YW50QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZGl2aXNvckF0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6OmR4QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZHlBdHRyLAorICAg
ICAgICAgICAgJlNWR05hbWVzOjplZGdlTW9kZUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6
OmVsZXZhdGlvbkF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwKKyAg
ICAgICAgICAgICZTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsCisgICAg
ICAgICAgICAmU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1l
czo6ZnhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpmeUF0dHIsCisgICAgICAgICAgICAm
U1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
Z3JhZGllbnRVbml0c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmhlaWdodEF0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6OmluMkF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6Omlu
QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6aW50ZXJjZXB0QXR0ciwKKyAgICAgICAgICAg
ICZTVkdOYW1lczo6azFBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjprMkF0dHIsCisgICAg
ICAgICAgICAmU1ZHTmFtZXM6OmszQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6azRBdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjprZXJuZWxNYXRyaXhBdHRyLAorICAgICAgICAgICAg
JlNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
bGVuZ3RoQWRqdXN0QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bGltaXRpbmdDb25lQW5n
bGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLAorICAgICAg
ICAgICAgJlNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6
Om1hcmtlcldpZHRoQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0
c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6Om1ldGhvZEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6Om1vZGVBdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6b2Zmc2V0QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6b3BlcmF0b3JBdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjpvcmRlckF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6Om9yaWVudEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLAor
ICAgICAgICAgICAgJlNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ciwKKyAgICAgICAg
ICAgICZTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6OnBhdHRlcm5Vbml0c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnBvaW50c0F0WEF0
dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsCisgICAgICAgICAgICAm
U1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnByZXNlcnZl
QWxwaGFBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLAorICAgICAgICAg
ICAgJlNWR05hbWVzOjpyYWRpdXNBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpyQXR0ciwK
KyAgICAgICAgICAgICZTVkdOYW1lczo6cmVmWEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6
OnJlZllBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpyZXN1bHRBdHRyLAorICAgICAgICAg
ICAgJlNWR05hbWVzOjpyb3RhdGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpyeEF0dHIs
CisgICAgICAgICAgICAmU1ZHTmFtZXM6OnJ5QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
c2NhbGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzZWVkQXR0ciwKKyAgICAgICAgICAg
ICZTVkdOYW1lczo6c2xvcGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzcGFjaW5nQXR0
ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIsCisgICAgICAg
ICAgICAmU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLAorICAgICAgICAgICAgJlNWR05h
bWVzOjpzcHJlYWRNZXRob2RBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzdGFydE9mZnNl
dEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsCisgICAgICAg
ICAgICAmU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
c3VyZmFjZVNjYWxlQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjp0YXJnZXRBdHRyLAorICAgICAgICAgICAgJlNWR05h
bWVzOjp0YXJnZXRYQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6dGFyZ2V0WUF0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6OnR5cGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp2YWx1ZXNBdHRyLAorICAgICAg
ICAgICAgJlNWR05hbWVzOjp2aWV3Qm94QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6d2lk
dGhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp4MUF0dHIsCisgICAgICAgICAgICAmU1ZH
TmFtZXM6OngyQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6eEF0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVz
Ojp5MUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnkyQXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6eUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JB
dHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp6QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1l
czo6aHJlZkF0dHIsCiAgICAgICAgIH07CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiBtYXA7CiAgICAgICAg
IGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKSB7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1hcC5hZGQobmFtZS0+bG9jYWxOYW1lKCksICpuYW1lKTsKKyAgICAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbWFwLmFkZChuYW1lLT5nZXQoKS5sb2NhbE5hbWUoKSwgKm5hbWUpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbWFwOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJl
dHVybiBhbmltYXRhYmxlQXR0cmlidXRlcy5nZXQoKS5nZXQobG9jYWxOYW1lKTsKIH0KIApAQCAt
ODY0LDcgKzg2NCw3IEBAIENTU1Byb3BlcnR5SUQgU1ZHRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZv
clNWR0F0dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICBpZiAoIWF0dHJOYW1l
Lm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlJbnZh
bGlkOwogCi0gICAgc3RhdGljIGNvbnN0IGF1dG8gcHJvcGVydGllcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChjcmVhdGVBdHRyaWJ1dGVOYW1lVG9DU1NQcm9wZXJ0eUlETWFwKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZCBwcm9wZXJ0aWVzID0gY3JlYXRlQXR0cmlidXRlTmFtZVRvQ1NTUHJv
cGVydHlJRE1hcCgpOwogICAgIHJldHVybiBwcm9wZXJ0aWVzLmdldCgpLmdldChhdHRyTmFtZS5s
b2NhbE5hbWUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAKaW5kZXggNGU0YzM5MTUxNWVmOTEyMTBhM2YyNTY1NTEyYzhlNzU4ZWQ3
MjYyMi4uOWRlYTA3ZTM5NmEwOWM1MzQxMWM0NWQ2MzljNWRhZTJkMDk3NGNhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTQ1Nyw3
ICs0NTcsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpwYXJzZUJlZ2luT3JFbmQoY29uc3QgU3Ry
aW5nJiBwYXJzZVN0cmluZywgQmVnaW5PckVuZCBiZWdpbgogCiBib29sIFNWR1NNSUxFbGVtZW50
Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
LSAgICBzdGF0aWMgY29uc3QgYXV0byBzdXBwb3J0ZWRBdHRyaWJ1dGVzID0gbWFrZU5ldmVyRGVz
dHJveWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxRdWFsaWZpZWRO
YW1lPiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gewog
ICAgICAgICBTVkdOYW1lczo6YmVnaW5BdHRyLAogICAgICAgICBTVkdOYW1lczo6ZW5kQXR0ciwK
ICAgICAgICAgU1ZHTmFtZXM6OmR1ckF0dHIsCkBAIC00NjgsNyArNDY4LDcgQEAgYm9vbCBTVkdT
TUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAgICAgICAgIFNWR05hbWVzOjphdHRyaWJ1dGVOYW1lQXR0ciwKICAgICAgICAgU1ZH
TmFtZXM6OmhyZWZBdHRyLAogICAgICAgICBYTGlua05hbWVzOjpocmVmQXR0ciwKLSAgICB9KTsK
KyAgICB9OwogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNW
R0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IGNlMWM2NTE3MzVkMTY5NGJjNzNlNmNiNGJhZjczYzhm
OTM5YzQwODQuLjMyMmUzYmUwZjc1ZGQwZjQ3YzUxZjgzNTE1M2EyMGNjYzdkZDkzMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtNzE1LDcgKzcxNSw3IEBAIHN0YXRp
YyBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBGdW5jdGlv
bk1hcFZhbHVlPiBjcmVhdGVGCiAKIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gRnVuY3Rpb246
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIG51bUFyZ3VtZW50cykKIHsKLSAg
ICBzdGF0aWMgY29uc3QgYXV0byBmdW5jdGlvbk1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVh
dGVGdW5jdGlvbk1hcCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZnVuY3Rpb25NYXAg
PSBjcmVhdGVGdW5jdGlvbk1hcCgpOwogCiAgICAgYXV0byBpdCA9IGZ1bmN0aW9uTWFwLmdldCgp
LmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ID09IGZ1bmN0aW9uTWFwLmdldCgpLmVuZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFBhcnNlci5jcHAKaW5kZXggY2UyZDA4MTUyYzZiZDI1MGNjZTg5MTg2Yjkw
ODBiODdjZmQzNjE1Yi4uZTMxNTY1ZWJlNzhkOWJmZGFjYzBmNmExZWEwYTU3MmU4NTYyYjg5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGlj
IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4
aXM+IGNyZWF0ZUF4aXNOYW0KIAogc3RhdGljIGJvb2wgcGFyc2VBeGlzTmFtZShjb25zdCBTdHJp
bmcmIG5hbWUsIFN0ZXA6OkF4aXMmIHR5cGUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gYXhp
c05hbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZUF4aXNOYW1lc01hcCgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQgYXhpc05hbWVzID0gY3JlYXRlQXhpc05hbWVzTWFwKCk7CiAg
ICAgYXV0byBpdCA9IGF4aXNOYW1lcy5nZXQoKS5maW5kKG5hbWUpOwogICAgIGlmIChpdCA9PSBh
eGlzTmFtZXMuZ2V0KCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDM1
NWJiODRmY2JhN2Q2ZWFiYWE5NzUyMDIyNzZiZTlhYjNlNmZmYjcuLjAxYjc1ZTQ4N2FlNDUyZmJh
NGRmNjkwOGU3MGNlNzlmNjQ4NTkyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHN0YXRp
YyBib29sIG5lZWRzTmV3Q3JlYXRlVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiBzY2hlbWEpCiAK
IGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRh
YmxlQW5kSW5kZXhQYWlyPiYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmV4
cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKQogewotICAgIHN0YXRpYyBhdXRvIGV4cGVjdGVk
VGFibGVBbmRJbmRleFF1ZXJpZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+IHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyA9IE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5k
ZXhQYWlyPiB7CiAgICAgICAgIHsgIk9ic2VydmVkRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8
U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZU9ic2VydmVkRG9tYWluLCBzdGQ6
Om51bGxvcHQpIH0sCiAgICAgICAgIHsgIlRvcExldmVsRG9tYWlucyJfcywgc3RkOjptYWtlX3Bh
aXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRvcExldmVsRG9tYWlucywg
c3RkOjpudWxsb3B0KSB9LAogICAgICAgICB7ICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURv
bWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+Pihj
cmVhdGVTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMsIHN0cmlwSW5kZXhRdWVyeVRv
TWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWlucykpIH0sCkBAIC0yNjYsOCArMjY2LDcgQEAgY29uc3QgTWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBSZXNv
dXIKICAgICAgICAgeyAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVV
bmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pKSB9LAogICAgICAgICB7ICJT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywg
c3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkpIH0sCiAgICAgICAgIHsgIk9wZXJhdGluZ0Rh
dGVzIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3Jl
YXRlT3BlcmF0aW5nRGF0ZXMsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVh
dGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzKSkgfSwKLSAgICB9KTsKLSAgICAKKyAgICB9Owog
ICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmNwcAppbmRleCA3YTJjODUwZDE5NmIzZjZlNzUyOWYyMWMyZjBhYzEzZWQzOGZhNjRm
Li45MDMwMjJmYTBmOTI1OWM4ZTc0MDY5MDUxMjM1NGFkNWM0YzkyYmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YXRhYmFzZS5jcHAKQEAgLTEwMCwxMSArMTAwLDExIEBAIERhdGFiYXNlOjp+RGF0YWJhc2UoKQog
CiBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBU
YWJsZUFuZEluZGV4UGFpcj4mIERhdGFiYXNlOjpleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVz
KCkKIHsKLSAgICBzdGF0aWMgYXV0byBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxT
dHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGV4
cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4gewogICAgICAgICB7ICJQQ01P
YnNlcnZlZERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxT
dHJpbmc+PihjcmVhdGVQQ01PYnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0KSB9LAogICAgICAg
ICB7ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3Bh
aXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3Jl
YXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCiAg
ICAgICAgIHsgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZUF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNy
ZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgfSwKLSAg
ICB9KTsKKyAgICB9OwogCiAgICAgcmV0dXJuIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJv
d3NlckNoZWNrcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93
c2VyQ2hlY2tzLm1tCmluZGV4IDE1YmI0NjVlMGY5YzIxOGNjMWE0NjZiZjdkOTkzNDVjZWQwODUw
YzcuLmE4MmNhNmQ3N2NlOTg3Mjk5MDVmMDAxM2FhN2I3YWExMzRiZTY1YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1t
CkBAIC01NSw5ICs1NSw5IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGluZyhjb25zCiAgICAgaWYgKGJ1bmRs
ZUlELmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgc3RhdGlj
IGF1dG8gYXBwQm91bmREb21haW5MaXN0ID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBh
Y3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYXBwQm91bmREb21h
aW5MaXN0ID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywg
VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gewogICAgICAgICB7ImluQXBwQnJv
d3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiB7IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcoIjEyNy4wLjAuMSIpIH19LAotICAgIH0pOworICAgIH07
CiAKICAgICBhdXRvIGFwcEJvdW5kRG9tYWluSXRlciA9IGFwcEJvdW5kRG9tYWluTGlzdC0+Zmlu
ZChidW5kbGVJRCk7CiAgICAgaWYgKGFwcEJvdW5kRG9tYWluSXRlciAhPSBhcHBCb3VuZERvbWFp
bkxpc3QtPmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2Fu
ZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJv
eEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IGFjMmUzNDc5OTdkZjkyNGI5NzY1MTIwMmQ3OWExZWQ3
ZDlmMWE2MWUuLmVjYzliOTg4Y2MzOWVlODkyMzA3NzlkZDUzYzJlYTBjMTA4NmZkOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2Eu
bW0KQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZQogICAgIEhhbmRs
ZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIAotICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRl
KHBhdGgudXRmOCgpLmRhdGEoKSwgdHlwZSwgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9u
OjpGbGFnczo6RG9Ob3RDYW5vbmljYWxpemUpOworICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKHBhdGgudXRmOCgpLmRhdGEoKSwgdHlw
ZSwgc3RkOjpudWxsb3B0LCBGbGFnczo6RG9Ob3RDYW5vbmljYWxpemUpOwogICAgIGlmICghaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBj
cmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMzIsMjEgKzIzMiwyMSBAQCBhdXRv
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUg
dHlwZSkgLT4gc3RkOjpvcHRpbwogICAgIHJldHVybiBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2
aW5nUGF0aChyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24ocGF0aCksIHR5cGUpOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKGNvbnN0IFZlY3RvcjxUPiYgcmVzb3Vy
Y2VzLCBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4oY29u
c3QgVCYpPiYmIGNyZWF0ZUZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvbiwg
dHlwZW5hbWUgRnVuY3Rpb24+IHN0YXRpYyBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKGNvbnN0IENvbGxlY3Rpb24mIHJlc291cmNlcywg
Y29uc3QgRnVuY3Rpb24mIGNyZWF0ZUZ1bmN0aW9uKQogewogICAgIFZlY3RvcjxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IGhhbmRsZUFycmF5OworICAgIGhhbmRsZUFycmF5LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoc3RkOjpzaXplKHJlc291cmNlcykpOwogICAgIGZvciAoY29uc3QgYXV0byYg
cmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gY3JlYXRl
RnVuY3Rpb24ocmVzb3VyY2UpKQotICAgICAgICAgICAgaGFuZGxlQXJyYXkuYXBwZW5kKFdURk1v
dmUoKmhhbmRsZSkpOworICAgICAgICAgICAgaGFuZGxlQXJyYXkudW5jaGVja2VkQXBwZW5kKFdU
Rk1vdmUoKmhhbmRsZSkpOwogICAgIH0KICAgICByZXR1cm4gaGFuZGxlQXJyYXk7CiB9CiAKIGF1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlM
aXRlcmFsIGxvZ0xhYmVsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpIC0+IFZlY3RvcjxI
YW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXM8U3RyaW5nPihw
YXRocywgWyZsb2dMYWJlbF0gKGNvbnN0IFN0cmluZyYgcGF0aCkgewotICAgICAgICBhdXRvIGhh
bmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJj
ZXMocGF0aHMsIFsmbG9nTGFiZWxdIChjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAgYXV0
byBoYW5kbGUgPSBjcmVhdGVIYW5kbGUocGF0aCwgVHlwZTo6UmVhZE9ubHkpOwogICAgICAgICBp
ZiAoIWhhbmRsZSkgewogICAgICAgICAgICAgLy8gVGhpcyBjYW4gbGVnaXRpbWF0ZWx5IGZhaWwg
aWYgYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZSBpcyBkZWxldGVkIGFmdGVyIHRoZSBm
aWxlIHdhcyBjaG9zZW4uCiAgICAgICAgICAgICAvLyBXZSBhbHNvIGhhdmUgcmVwb3J0cyBvZiBj
YXNlcyB3aGVyZSB0aGlzIGxpa2VseSBmYWlscyBmb3Igc29tZSB1bmtub3duIHJlYXNvbiwgPHJk
YXI6Ly9wcm9ibGVtLzEwMTU2NzEwPi4KQEAgLTI2Miw3ICsyNjIsNyBAQCBhdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgpIC0+CiAgICAgU3RyaW5nIHJlc29sdmVkUGF0aCA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpOwogICAgIGlmIChyZXNvbHZl
ZFBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJu
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHJlc29s
dmVkUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKTsKKyAgICByZXR1cm4g
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZWRQYXRoLCBUeXBlOjpSZWFk
V3JpdGUpOwogfQogCiBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBv
cmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25h
bDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PgpAQCAtMzIzLDE1ICszMjMsMjAgQEAgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBz
ZXJ2aWNlLCBzdGQ6Om9wdGkKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRv
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3Rv
cjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBh
dWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVk
aXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KIHsKLSAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlczxBU0NJSUxpdGVyYWw+KHNlcnZpY2Vz
LCBbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJSUxpdGVyYWwmIHNlcnZpY2UpIC0+IHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPiB7Ci0gICAgICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2VuLCBmbGFn
cyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoc2VydmljZXMsIFthdWRp
dFRva2VuLCBmbGFnc10gKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlvbmFsPEhh
bmRsZT4geworICAgICAgICBhdXRvIGhhbmRsZSA9IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
c2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFuZGxlKTsKICAg
ICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9KTsKIH0KIAorYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgoreworICAg
IHJldHVybiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuIHsgc2VydmljZXMuYmVnaW4o
KSwgc2VydmljZXMuc2l6ZSgpIH0sIGF1ZGl0VG9rZW4sIGZsYWdzKTsKK30KKwogYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4KIHsKICAgICBIYW5kbGUgaGFuZGxlOwpAQCAtMzYwLDEwICszNjUsMTAgQEAgYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0
ZXJhbCBpb0tpdENsYXMKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25z
dCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxI
YW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNz
RXh0ZW5zaW9ucyhTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3Mp
IC0+IFZlY3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJj
ZXM8QVNDSUlMaXRlcmFsPihpb2tpdENsYXNzZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0
IEFTQ0lJTGl0ZXJhbCYgaW9raXRDbGFzcykgewotICAgICAgICBhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oaW9raXRDbGFz
cywgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3Vy
Y2VzKGlva2l0Q2xhc3NlcywgW2F1ZGl0VG9rZW4sIGZsYWdzXSAoQVNDSUlMaXRlcmFsIGlva2l0
Q2xhc3MpIHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNz
RXh0ZW5zaW9uKGlva2l0Q2xhc3MsIGF1ZGl0VG9rZW4sIGZsYWdzKTsKICAgICAgICAgQVNTRVJU
KGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBoYW5kbGU7CiAgICAgfSk7CkBAIC00MzUsNyArNDQw
LDcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgVmVj
dG9yPEhhbmRsZT4mIGhhbmRsZUFycmF5KQogICAgICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBib29sIG9rID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CisgICAgICAgIGJvb2wg
b2sgPSBjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKICAgICAgICAgQVNTRVJUKG9rKTsKICAg
ICAgICAgYWxsU3VjY2VlZGVkICY9IG9rOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRi
b3hFeHRlbnNpb24uaAppbmRleCA0Y2I1YmU3MTAwOTRiNzBkOTVhNzg5M2E4NWM3MzMxMjQ4M2Ex
Mzg1Li41ZGRhMzBjZDdmNjE3OWY4MzhjOTBkYzJhZjU3ODNiYTUyMWU2ZTkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC05MiwxMCArOTIsMTEgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yR2VuZXJp
Y0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3MpOwogI2lmIEhBVkUoQVVESVRf
VE9LRU4pCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2Vu
X3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBWZWN0
b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChjb25zdCBWZWN0b3I8QVNDSUlM
aXRlcmFsPiYgc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNl
dDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNl
cywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdz
OjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1h
Y2hMb29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2Vydmlj
ZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFn
czo6RGVmYXVsdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5k
bGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCk7
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJT0tpdENs
YXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRp
YyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoY29u
c3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0
aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKFNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAjZW5kaWYKICAg
ICB+U2FuZGJveEV4dGVuc2lvbigpOwogCkBAIC0xMTcsMTggKzExOCwyMyBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogCitTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpOworU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIHBhdGgpOworU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJl
Y3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7CisKICNpZiAhRU5B
QkxFKFNBTkRCT1hfRVhURU5TSU9OUykKKwogaW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZTo6SGFuZGxlKCkgeyB9CiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjp+SGFuZGxl
KCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdCB7IH0KLWlubGluZSBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JikgeyByZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHsgfTsgfQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU6OmRlY29kZShJUEM6OkRlY29kZXImKSB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUg
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUm
JikgeyByZXR1cm4gbnVsbHB0cjsgfQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7
IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JikgLT4gVmVjdG9yPEhhbmRsZT4geyByZXR1cm4geyB9OyB9CiBpbmxpbmUgYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJp
bmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsg
fQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVy
biBIYW5kbGUgeyB9OyB9Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgLypwcmVmaXgqLywgVHlwZSkgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6Om9wdGlv
bmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgc3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5n
PiB7IEhhbmRsZSB7IH0sIFN0cmluZyB7IH0gfSB9OyB9Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCAvKmV4
dGVuc2lvbkNsYXNzKi8pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUg
eyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWly
PEhhbmRsZSwgU3RyaW5nPj4geyByZXR1cm4gc3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPiB7IH07
IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNF
eHRlbnNpb24oQVNDSUlMaXRlcmFsKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4g
SGFuZGxlIHsgfTsgfQogaW5saW5lIFNhbmRib3hFeHRlbnNpb246On5TYW5kYm94RXh0ZW5zaW9u
KCkgeyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2UoKSB7IHJldHVybiB0
cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkgeyByZXR1cm4g
dHJ1ZTsgfQpAQCAtMTM4LDEwICsxNDQsNyBAQCBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgVmVjdG9yPEhhbmRsZT4mKSB7IHJldHVybgogaW5s
aW5lIFN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkgeyByZXR1cm4gcGF0aDsgfQogaW5saW5lIFN0cmluZyByZXNvbHZlUGF0aEZvclNhbmRi
b3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKSB7IHJldHVybiBwYXRoOyB9CiBpbmxpbmUg
U3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQotI2Vsc2UKLVN0cmluZyBz
dHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJp
bmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1T
dHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBwYXRoKTsKKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBjYTM1N2FkZTg4MTJiMWUyYWQ3YmQ0MzMzMTFjNzA0NTJkNDhkYTc1Li43MTcxMDM2NDI5
NmJlNzQyYTgzMTJmYzAwODM2ZmY5YThmNTk2ODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtODUsMTEgKzg1LDExIEBAIHN0YXRp
YyBib29sIHNob3VsZENyZWF0ZUFwcGxlQ2FtZXJhU2VydmljZVNhbmRib3hFeHRlbnNpb24oKQog
c3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBub25Ccm93c2VyU2VydmljZXMoKQog
ewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNl
cnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQgc2VydmljZXMgPSBWZWN0b3I8QVNDSUlMaXRlcmFsPiB7CiAg
ICAgICAgICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLAogICAgICAgICAiY29tLmFwcGxlLlBv
d2VyTWFuYWdlbWVudC5jb250cm9sIl9zLAogICAgICAgICAiY29tLmFwcGxlLmZyb250Ym9hcmQu
c3lzdGVtYXBwc2VydmljZXMiX3MKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBzZXJ2aWNl
czsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggMTIwYjkwNDg3MmJkZjI4ODAxN2U3NzA4YzYzMjdlNTU2YWU0ZDI1Ny4uMWU1NTU5OWFmZWZj
NDRlMWQ0NGJiZWI3MTQzZDExZGE2ZjczNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04MDQ5LDIzICs4MDQ5LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0
ZXJtaW5hCiB9CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKSAmJiBQTEFURk9STShD
T0NPQSkKLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgYXR0YWNobWVudEVsZW1l
bnRTZXJ2aWNlcygpCitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGF0dGFjaG1lbnRF
bGVtZW50U2VydmljZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6YXJyYXkgewogICAgICAgICAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgICAgICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9z
LAogI2VuZGlmCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc2VydmljZXM7CiB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVy
YWw+JiBncHVJT0tpdENsYXNzZXMoKQorc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBn
cHVJT0tpdENsYXNzZXMoKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0
YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJ
SUxpdGVyYWw+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2VydmljZXMgewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICJBR1hEZXZpY2VVc2VyQ2xpZW50Il9z
LAogICAgICAgICAiSU9HUFUiX3MsCkBAIC04MDkyLDI3ICs4MDkxLDI1IEBAIHN0YXRpYyBjb25z
dCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgZ3B1SU9LaXRDbGFzc2VzKCkKICNpZiBQTEFURk9STShN
QUMpICYmIENQVShBUk02NCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgIklPU3Vy
ZmFjZUFjY2VsZXJhdG9yQ2xpZW50Il9zLAogI2VuZGlmCi0gICAgfSk7CisgICAgfTsKICAgICBy
ZXR1cm4gc2VydmljZXM7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYg
Z3B1TWFjaFNlcnZpY2VzKCkKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gZ3B1TWFj
aFNlcnZpY2VzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBzdGF0aWMg
Y29uc3QgYXV0byBzZXJ2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRl
cmFsPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNlcnZpY2VzIHsKICAgICAg
ICAgImNvbS5hcHBsZS5NVExDb21waWxlclNlcnZpY2UiX3MsCiAjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICAgICAgImNvbS5hcHBsZS5jdm1zU2VydiJfcywK
ICNlbmRpZgotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIHNlcnZpY2VzOwogfQogCiAvLyBG
SVhNRSgyMDc3MTYpOiBUaGUgZm9sbG93aW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gdGhlIEdQ
VSBwcm9jZXNzIGlzIGNvbXBsZXRlLgotc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+
JiBtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMoKQorc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRl
cmFsPiBtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMoKQogewotICAgIEFTU0VSVChpc01haW5SdW5M
b29wKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJy
YXkgc2VydmljZXMgewogICAgICAgICAiY29tLmFwcGxlLmF1ZGlvLkF1ZGlvQ29tcG9uZW50UHJl
ZnMiX3MsICJjb20uYXBwbGUuYXVkaW8uQXVkaW9Db21wb25lbnRSZWdpc3RyYXIiX3MsCiAgICAg
ICAgICJjb20uYXBwbGUuYXVkaW8uQXVkaW9RdWV1ZVNlcnZlciJfcywgImNvbS5hcHBsZS5jb3Jl
bWVkaWEuZW5kcG9pbnQueHBjIl9zLAogICAgICAgICAiY29tLmFwcGxlLmNvcmVtZWRpYS5yb3V0
ZWRpc2NvdmVyZXIueHBjIl9zLCAiY29tLmFwcGxlLmNvcmVtZWRpYS5yb3V0aW5nY29udGV4dC54
cGMiX3MsCkBAIC04MTQ0LDIwICs4MTQxLDIwIEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlM
aXRlcmFsPiYgbWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCkKICAgICAgICAgImNvbS5hcHBsZS5j
b3JlbWVkaWEuc2FtcGxlYnVmZmVyY29uc3VtZXIueHBjIl9zLAogI2VuZGlmCiAjZW5kaWYKLSAg
ICB9KTsKKyAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0KIAotc3RhdGljIGNvbnN0IFZl
Y3RvcjxBU0NJSUxpdGVyYWw+JiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKQorc3RhdGljIFNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKQogewotICAg
IHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxB
U0NJSUxpdGVyYWw+IHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQotI2lmIENQVShBUk02NCkKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcyB7CisjaWYgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpKSAmJiBDUFUoQVJNNjQpCiAgICAgICAgICJBcHBsZUFWRFVzZXJDbGllbnQi
X3MsCiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQog
ICAgICAgICAiUm9vdERvbWFpblVzZXJDbGllbnQiX3MsCiAjZW5kaWYKLSAgICB9KTsKKyAgICB9
OwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCmluZGV4IDA0NzM1ZGRkYmUxMmVjZWU1YjVjYjNl
ODM2ODk3ZDQ4YmQwYTlmNDUuLjdhZmE2YTMxOTc5YWViNTE3NTdhY2Q2YTExNjQ0NzIxOWU4YzBl
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0K
QEAgLTQxLDEyICs0MSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIFRl
eHRDaGVja2VyU3RhdGUmIG11dGFibGVTdGF0ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFRleHRDaGVja2VyU3RhdGU+IHN0YXRlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3RhdGUgPSBbXSB7CiAgICAgICAgIFRleHRDaGVja2Vy
U3RhdGUgaW5pdGlhbFN0YXRlOwogICAgICAgICBpbml0aWFsU3RhdGUuaXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQgPSBUZXh0Q2hlY2tlcjo6aXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0FsbG93ZWQoKTsKICAgICAgICAgaW5pdGlhbFN0YXRlLmlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gaW5pdGlhbFN0YXRlOwotICAgIH0oKSk7CisgICAg
fSgpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMTJmM2ExNWE0
M2I4YWM0ZDE1MWZmMzAzYzNjNWY3N2QxMzUzMGNiZS4uNDNmOTliMGMwMzQwZTA0YTUxNmI1Mjdk
YzBlMmMyMGRhNzMwZmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zNDMxLDIxICszNDMxLDIxIEBA
IC0gKE5TQXJyYXkgKilzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNGb3JDdXJyZW50U2VsZWN0aW9u
CiAgICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzTm9uZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIHN0YXRpYyBhdXRvIHBsYWluVGV4dFR5cGVzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgcGxhaW5UZXh0VHlwZXMg
PSBbXSB7CiAgICAgICAgIGF1dG8gcGxhaW5UZXh0VHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiAgICAgICAgIFtwbGFpblRleHRUeXBlcyBhZGRPYmplY3Q6KGlkKWtVVFR5cGVVUkxdOwogQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIFtwbGFpblRleHRUeXBlcyBh
ZGRPYmplY3RzRnJvbUFycmF5OlVJUGFzdGVib2FyZFR5cGVMaXN0U3RyaW5nXTsKICAgICAgICAg
cmV0dXJuIHBsYWluVGV4dFR5cGVzOwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gcmljaFR5
cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIHJpY2hUeXBlcyA9IFtdIHsKICAgICAgICAgYXV0byByaWNoVHlwZXMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgW3JpY2hUeXBlcyBh
ZGRPYmplY3Q6V2ViQ29yZTo6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICBbcmljaFR5
cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6VUlQYXN0ZWJvYXJkVHlwZUxpc3RJbWFnZV07CiAgICAg
ICAgIFtyaWNoVHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpwbGFpblRleHRUeXBlcy5nZXQoKS5n
ZXQoKV07CiAgICAgICAgIHJldHVybiByaWNoVHlwZXM7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAK
ICAgICByZXR1cm4gKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudFJpY2hseUVkaXRhYmxl
KSA/IHJpY2hUeXBlcy5nZXQoKS5nZXQoKSA6IHBsYWluVGV4dFR5cGVzLmdldCgpLmdldCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCmluZGV4
IDRjYzIyZGYwMzA4MjUwYmUyNTA2MTYyMTJjNTgwMzA3ZTIwMzEwMjIuLjE2ZDY4MzhlNTQ4ZTA0
MzJmYmQxOGY4ZDRkMmFkZTFjMmMxMDhmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVGV4dENoZWNrZXJNYWMubW0KQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGJvb2wgc2hv
dWxkQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkJlRW5hYmxlZCgpCiAKIHN0YXRpYyBUZXh0Q2hl
Y2tlclN0YXRlJiBtdXRhYmxlU3RhdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxU
ZXh0Q2hlY2tlclN0YXRlPiBzdGF0ZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIHN0YXRlID0gW10gewogICAgICAgICBUZXh0Q2hlY2tlclN0YXRl
IGluaXRpYWxTdGF0ZTsKICAgICAgICAgaW5pdGlhbFN0YXRlLmlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9v
bEZvcktleTpXZWJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRdICYmIFRleHRDaGVja2Vy
Ojppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nQWxsb3dlZCgpOwogICAgICAgICBpbml0aWFsU3Rh
dGUuaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gYm9vbEZvcktleTpXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkXTsKQEAgLTk5
LDcgKzk5LDcgQEAgc3RhdGljIFRleHRDaGVja2VyU3RhdGUmIG11dGFibGVTdGF0ZSgpCiAgICAg
ICAgIGluaXRpYWxTdGF0ZS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkID0gc2hv
dWxkQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkJlRW5hYmxlZCgpOwogICAgICAgICBpbml0aWFs
U3RhdGUuaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWRdOwogICAgICAgICByZXR1cm4gaW5pdGlhbFN0YXRlOwotICAgIH0oKSk7CisgICAg
fSgpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYjRjZWFlZTY3MzljMDM1NDE1YmUyODJkYzRi
OTY4NDVjZjFlYTc5MC4uYTZmOGZjYTliNjY5YmMwYTU3MDdiMjMxODBhZGMxNWY2ZjJhN2NhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC00MTcsMTYgKzQxNywxNCBAQCBDQUxheWVyICpXZWJQYWdlUHJveHk6OmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdAogCiBzdGF0aWMgTlNTdHJpbmcgKnRlbXBvcmFyeVBE
RkRpcmVjdG9yeVBhdGgoKQogewotICAgIHN0YXRpYyBhdXRvIHRlbXBvcmFyeVBERkRpcmVjdG9y
eVBhdGggPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBOU1N0cmluZyAqdGVtcG9y
YXJ5RGlyZWN0b3J5VGVtcGxhdGUgPSBbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXRQREZzLVhYWFhYWCJdOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCBwYXRoID0gW10geworICAgICAgICBhdXRvIHRlbXBvcmFyeURpcmVjdG9y
eVRlbXBsYXRlID0gW05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0UERGcy1YWFhYWFgiXTsKICAgICAgICAgQ1N0cmluZyB0ZW1wbGF0
ZVJlcHJlc2VudGF0aW9uID0gW3RlbXBvcmFyeURpcmVjdG9yeVRlbXBsYXRlIGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbl07Ci0KICAgICAgICAgaWYgKG1rZHRlbXAodGVtcGxhdGVSZXByZXNlbnRh
dGlvbi5tdXRhYmxlRGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b246dGVtcGxhdGVSZXByZXNlbnRhdGlvbi5kYXRhKCkgbGVuZ3RoOnRlbXBsYXRlUmVwcmVzZW50
YXRpb24ubGVuZ3RoKCldIGNvcHldKTsKICAgICAgICAgcmV0dXJuIFJldGFpblB0cjxpZD4geyB9
OwotICAgIH0oKSk7Ci0KLSAgICByZXR1cm4gdGVtcG9yYXJ5UERGRGlyZWN0b3J5UGF0aC5nZXQo
KS5nZXQoKTsKKyAgICB9KCk7CisgICAgcmV0dXJuIHBhdGguZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0
YXRpYyBOU1N0cmluZyAqcGF0aFRvUERGT25EaXNrKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFz
dGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0
ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDc4ODU3NzQzODc3NmYyYTk3ODQwNGRlYmVmZWRiMDVjYzBh
Y2Q0MGYuLmU1YjQ0NGJmYTVjMjg3MjgzODdjNzIzMzI4MjkxYTgyMDNkMWIyNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFz
Lm1tCkBAIC03MSwzMiArNzEsMzAgQEAgKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFibGVUeXBlc0Zv
clVSTAogICAgIHJldHVybiB0eXBlczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5
cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSAodm9pZCkKK3N0YXRpYyBOU0FycmF5ICp3cml0YWJs
ZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpCiB7Ci0gICAgc3RhdGljIGF1dG8gdHlwZXMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0eXBl
cyA9IFtdIHsKICAgICAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzOmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsK
ICAgICAgICAgW3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6W05TUGFzdGVib2FyZCBfd2ViX3dy
aXRhYmxlVHlwZXNGb3JVUkxdXTsKICAgICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7Cisg
ICAgfSgpOwogICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAotc3RhdGljIE5TQXJy
YXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSAodm9pZCkKK3N0YXRpYyBOU0Fy
cmF5ICp3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSgpCiB7Ci0gICAgc3RhdGljIGF1
dG8gdHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBhdXRvIHR5cGVzID0g
YWRvcHROUyhbX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKCkgbXV0YWJsZUNv
cHldKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdHlwZXMgPSBbXSB7CisgICAgICAgIGF1
dG8gdHlwZXMgPSBhZG9wdE5TKFt3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgp
IG11dGFibGVDb3B5XSk7CiAgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6bGVnYWN5UlRGRFBhc3Rl
Ym9hcmRUeXBlKCldOwogICAgICAgICBbdHlwZXMgYWRkT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRU
eXBlXTsKICAgICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJl
dHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFibGVU
eXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooQk9PTCloYXNBcmNoaXZlCiB7Ci0gICAgcmV0
dXJuIGhhc0FyY2hpdmUgCi0gICAgICAgID8gX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNo
aXZlKCkKLSAgICAgICAgOiBfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91dEFyY2hpdmUoKTsK
KyAgICByZXR1cm4gaGFzQXJjaGl2ZSA/IHdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZl
KCkgOiB3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpOwogfQogCiArIChOU0Fy
cmF5ICopX3dlYl9kcmFnVHlwZXNGb3JVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYk5TVVJMRXh0cmFzLm1tCmluZGV4IDkyYTczN2QzYjU0MDVhYjM3NjAwNzFlYTU1NjQy
MWUyODUzNjEwZDEuLjU2ZTEzNjcwMzA5ZTI5ZjE3NzM5Zjg2ZjU1NmFlYTc2MjhkNjUyNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQpAQCAt
MjIzLDE1ICsyMjMsMTUgQEAgLShOU1JhbmdlKV93ZWJraXRfcmFuZ2VPZlVSTFNjaGVtZQogICAg
IE5TUmFuZ2UgY29sb24gPSBbc2VsZiByYW5nZU9mU3RyaW5nOkAiOiJdOwogICAgIGlmIChjb2xv
bi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGNvbG9uLmxvY2F0aW9uID4gMCkgewogICAgICAg
ICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xvbi5sb2NhdGlvbn07Ci0gICAgICAgIHN0YXRpYyBh
dXRvIGludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldCA9
IFtdIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgVGhpcyBzdHVmZiBpcyB2ZXJ5IGV4
cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdIei4gIElmIG5vdCBjYWNoZWQgaXQgc3dh
bXBzCiAgICAgICAgICAgICAgZXZlcnl0aGluZyBlbHNlIHdoZW4gYWRkaW5nIGl0ZW1zIHRvIHRo
ZSBhdXRvY29tcGxldGUgREIuICBNYWtlcyBtZSB3b25kZXIgaWYgd2UKICAgICAgICAgICAgICBl
dmVuIG5lZWQgdG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVyIHNldCBoZXJlLgogICAgICAgICAgICAg
Ki8KICAgICAgICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hhcmFjdGVycyA9IEAiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkr
Li0iOwotICAgICAgICAgICAgcmV0dXJuIHJldGFpblB0cihbW05TQ2hhcmFjdGVyU2V0IGNoYXJh
Y3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGludmVy
dGVkU2V0XSk7Ci0gICAgICAgIH0oKSk7CisgICAgICAgICAgICByZXR1cm4gUmV0YWluUHRyIHsg
W1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2Vw
dGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0gfTsKKyAgICAgICAgfSgpOwogICAgICAgICBO
U1JhbmdlIGlsbGVnYWxzID0gW3NlbGYgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aW52ZXJzZVNj
aGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKICAg
ICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgICAgICBy
ZXR1cm4gc2NoZW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCmluZGV4IDgzZTg1OTE0MzQ1ZWE3Y2I4NDFkOTlmZDFmYjY2NmQ4Y2NmMDMw
MjYuLjVlYjVkNmExOWU2ZDkxZmNiM2JmYzgxY2NhOTFlYzdlMGU1NmM0MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTI3MCw3
ICsyNzAsNyBAQCAtICh2b2lkKV9yZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUKIAogKyAoTlNNdXRh
YmxlRGljdGlvbmFyeSAqKV9yZXBUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246KEJPT0wpYWxs
b3dJbWFnZVR5cGVPbWlzc2lvbgogewotICAgIHN0YXRpYyBhdXRvIHJlcFR5cGVzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgcmVwVHlwZXMgPSBb
XSB7CiAgICAgICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOwogICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyh0eXBlcy5nZXQoKSwgW1dl
YkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTsKICAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3ModHlwZXMu
Z2V0KCksIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gY2xhc3NdLCBbV2ViSFRNTFJlcHJlc2VudGF0
aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk7CkBAIC0yODcsNyArMjg3LDcgQEAgKyAoTlNN
dXRhYmxlRGljdGlvbmFyeSAqKV9yZXBUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246KEJPT0wp
YWxsb3dJbWFnZVR5cGVPbWkKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0eXBl
czsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICBzdGF0aWMgQk9PTCBhZGRlZEltYWdlVHlwZXMg
PSBOTzsKICAgICBpZiAoIWFkZGVkSW1hZ2VUeXBlcyAmJiAhYWxsb3dJbWFnZVR5cGVPbWlzc2lv
bikgewogICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyhyZXBUeXBlcy5nZXQoKS5nZXQoKSwgW1dl
YkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXNdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZVZpZXcubW0KaW5kZXggNzNlZjg2Y2JlZGM2NmNiNTUyOGJhNTY5N2FlZjM1NjQ1
YmQ0ZDQ0Ny4uZGMzYjUwMGU1OGMzNTI2ZjY4ZTQ0OGJmODIxMThkZDM1MDk5MjkzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KQEAgLTI0
MCw3ICsyNDAsNyBAQCAtIChmbG9hdClfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2UKIAogKyAo
TlNNdXRhYmxlRGljdGlvbmFyeSAqKV92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOihC
T09MKWFsbG93SW1hZ2VUeXBlT21pc3Npb24KIHsKLSAgICBzdGF0aWMgYXV0byB2aWV3VHlwZXMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB2aWV3
VHlwZXMgPSBbXSB7CiAgICAgICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyh0eXBlcy5n
ZXQoKSwgW1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3IHN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzXSk7CiAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHR5cGVzLmdldCgpLCBbV2Vi
SFRNTFZpZXcgY2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdKTsK
QEAgLTI1Nyw3ICsyNTcsNyBAQCArIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3ZpZXdUeXBlc0Fs
bG93SW1hZ2VUeXBlT21pc3Npb246KEJPT0wpYWxsb3dJbWFnZVR5cGVPbQogI2VuZGlmCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHN0
YXRpYyBCT09MIGFkZGVkSW1hZ2VUeXBlcyA9IE5POwogICAgIGlmICghYWRkZWRJbWFnZVR5cGVz
ICYmICFhbGxvd0ltYWdlVHlwZU9taXNzaW9uKSB7CiAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNz
KHZpZXdUeXBlcy5nZXQoKS5nZXQoKSwgW1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjEyNTQ1ODQ3ZGM0ZTZiYjk0NzBjMDA0YmM0NzE1MDQ3
YWNlYzFjMC4uNzI2NThkZmMwMmRlNzFjNWVkM2YwNDcyZmM2OWQxZmUzNTVhOWUzZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDIxLTEyLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBNYW55IGNhbGwgc2l0ZXMgdXNlIG1ha2VOZXZlckRlc3Ryb3llZCwgYnV0IGNvdWxkIGluc3Rl
YWQgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIE5ldmVyRGVzdHJveWVkIGRlZHVjdGlvbiBndWlkZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzUwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChmb250QWxsb3dMaXN0KTog
VXNlIGRlZHVjdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ldmVy
RGVzdHJveWVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBSZW1vdmUgdGVz
dHMgb2YgbWFrZU5ldmVyRGVzdHJveWVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bGlzdCk6
IFVzZSBkZWR1Y3Rpb24uCisKIDIwMjEtMTItMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9u
IGFuZCBVVEYtOCBjb252ZXJzaW9uIHdoZW4gY2FsbGluZyBERkFCeXRlY29kZUludGVycHJldGVy
OjppbnRlcnByZXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpp
bmRleCBmMzM5YTQzMzNjMGE5MGY1YTRkZTNlZTZmN2M3MDg2ZTc2MDE4ZmM1Li4wZDhlZmYwOWMx
Y2MyNDlkZDNjODMzOTJlYTgxOWZjZDM2ZTJlYzhhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC00NTQsNyArNDU0LDcgQEAgc3RhdGljIE5TU2V0ICph
bGxvd2VkRm9udEZhbWlseVNldCgpCiAKIHN0YXRpYyBOU0FycmF5ICpmb250QWxsb3dMaXN0KCkK
IHsKLSAgICBzdGF0aWMgYXV0byBhdmFpbGFibGVGb250cyA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGF2YWlsYWJsZUZvbnRzID0gW10gewogICAg
ICAgICBhdXRvIGF2YWlsYWJsZUZvbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmZvbnRGYW1pbHkgaW4gYWxsb3dlZEZv
bnRGYW1pbHlTZXQoKSkgewogICAgICAgICAgICAgTlNBcnJheSogZm9udHNGb3JGYW1pbHkgPSBb
W05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJlcnNPZkZvbnRG
YW1pbHk6Zm9udEZhbWlseV07CkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGljIE5TQXJyYXkgKmZv
bnRBbGxvd0xpc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBh
dmFpbGFibGVGb250czsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1cm4gYXZhaWxhYmxl
Rm9udHMuZ2V0KCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL05ldmVyRGVzdHJveWVkLmNwcAppbmRleCAwMzliYzExZGIwM2I3YWU2ZTVkZmU5MzdkZDI2
YzFlY2I3ZGJjMzg1Li4wMWNjMGFlZWNhNTk4MmM5YTc2MDBkNDY5ZDUzOTZkYTgyYWVmNDI3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OZXZlckRlc3Ryb3llZC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3Bw
CkBAIC00MCw5ICs0MCw2IEBAIFRFU1QoV1RGX05ldmVyRGVzdHJveWVkLCBDb25zdHJ1Y3QpCiAg
ICAgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB4KCJuYW1lIik7IFVO
VVNFRF9QQVJBTSh4KTsgfQogICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIAotICAgIHsgc3RhdGljIGF1dG8geCA9IG1ha2VOZXZlckRl
c3Ryb3llZChMaWZlY3ljbGVMb2dnZXIgeyAibmFtZSIgfSk7IFVOVVNFRF9QQVJBTSh4KTsgfQot
ICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIG1vdmUtY29uc3RydWN0KG5hbWUpIGRl
c3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotCiAgICAgewogICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB4KCJuYW1lIik7CiAg
ICAgICAgIExpZmVjeWNsZUxvZ2dlciBsID0geC5nZXQoKTsKQEAgLTU0LDIwICs1MSw2IEBAIFRF
U1QoV1RGX05ldmVyRGVzdHJveWVkLCBDb25zdHJ1Y3QpCiAgICAgeyBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB4IHsgW10geyByZXR1cm4gTGlmZWN5Y2xlTG9nZ2VyIHsg
Im5hbWUiIH07IH0oKSB9OyBVTlVTRURfUEFSQU0oeCk7IH0KICAgICBBU1NFUlRfU1RSRVEoImNv
bnN0cnVjdChuYW1lKSBtb3ZlLWNvbnN0cnVjdChuYW1lKSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAotICAgIHsKLSAgICAgICAgc3RhdGljIGF1dG8geCA9
IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgICAgICBMaWZlY3ljbGVMb2dnZXIgbCB7
ICJuYW1lIiB9OwotICAgICAgICAgICAgbC5zZXROYW1lKCJ4Iik7Ci0gICAgICAgICAgICByZXR1
cm4gbDsKLSAgICAgICAgfSgpKTsKLSAgICAgICAgQVNTRVJUX1NUUkVRKHguZ2V0KCkubmFtZSwg
IngiKTsKLSAgICB9Ci0jaWYgQ09NUElMRVIoTVNWQykgJiYgIWRlZmluZWQoTkRFQlVHKQotICAg
IEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0
KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgbW92ZS1jb25zdHJ1Y3QoeCkgZGVzdHJ1Y3QoPGRlZmF1
bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9TVFJFUSgi
Y29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0KHgpIGRlc3RydWN0KDxk
ZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotI2VuZGlmCi0KICAgICB7CiAgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dnZXI+IHg7CiAgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dnZXI+IHkgeyBXVEZNb3ZlKHgpIH07CkBA
IC04NCwyNSArNjcsMTEgQEAgVEVTVChXVEZfTmV2ZXJEZXN0cm95ZWQsIENvbnN0cnVjdCkKIAog
ICAgIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyPiB4IHsg
W10geyByZXR1cm4gTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgeyAibmFtZSIgfTsgfSgpIH07IFVO
VVNFRF9QQVJBTSh4KTsgfQogICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIG1vdmUt
Y29uc3RydWN0KG5hbWUpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwotCi0gICAgewotICAgICAgICBzdGF0aWMgYXV0byB4ID0gbWFrZU5ldmVyRGVzdHJveWVk
KFtdIHsKLSAgICAgICAgICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwgeyAibmFtZSIgfTsK
LSAgICAgICAgICAgIGwuc2V0TmFtZSgieCIpOwotICAgICAgICAgICAgcmV0dXJuIGw7Ci0gICAg
ICAgIH0oKSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICB9Ci0jaWYgQ09NUElMRVIo
TVNWQykgJiYgIWRlZmluZWQoTkRFQlVHKQotICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5h
bWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgbW92
ZS1jb25zdHJ1Y3QoeCkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7Ci0jZWxzZQotICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgp
IG1vdmUtY29uc3RydWN0KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBWZWN0b3I8aW50PiYgbGlzdCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8geCA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8aW50
PiB7IDEsIDIsIDMgfSk7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkIHggPSBWZWN0
b3I8aW50PiB7IDEsIDIsIDMgfSk7CiAgICAgcmV0dXJuIHg7CiB9CiAK
</data>
<flag name="commit-queue"
          id="472863"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447277</attachid>
            <date>2021-12-15 12:44:27 -0800</date>
            <delta_ts>2021-12-15 14:40:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234350-20211215124426.patch</filename>
            <type>text/plain</type>
            <size>161978</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFkZTI5MzJmYmUyOTJkYjUxMmVlMTY0
MzRiNGQ4NWMyYTMzODlmYjUuLjZjNTRiZWNlM2U3ZDExYjA1YTI4NjkxMzhhNGMzZjYyYTE2N2Iw
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1hbnkgY2FsbCBzaXRlcyB1c2UgbWFrZU5ldmVyRGVzdHJv
eWVkLCBidXQgY291bGQgaW5zdGVhZCB0YWtlIGFkdmFudGFnZSBvZiB0aGUgTmV2ZXJEZXN0cm95
ZWQgZGVkdWN0aW9uIGd1aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9OZXZlckRlc3Ryb3llZC5oOgorICAgICAgICAoV1RGOjptYWtlTmV2
ZXJEZXN0cm95ZWQpOiBEZWxldGVkLgorCisgICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0
b3IpOiBVc2UgZGVkdWN0aW9uIGd1aWRlLgorCiAyMDIxLTEyLTE1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEFkb3B0IC1bTlNTY3JlZW4gc2FmZUFy
ZWFJbnNldHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAzMTZlNzFmMDk0MDYwOTVhZDI2MjdlY2VkNzAyZWYz
NmUyZGZlNi4uYzdlOTk3YjlkNDJiZTU5MmU2OTA4NjE0MDBkMTE4Yjk5M2YzYjJmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4NSBAQAorMjAyMS0xMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFueSBjYWxsIHNpdGVzIHVzZSBtYWtlTmV2ZXJEZXN0cm95
ZWQsIGJ1dCBjb3VsZCBpbnN0ZWFkIHRha2UgYWR2YW50YWdlIG9mIHRoZSBOZXZlckRlc3Ryb3ll
ZCBkZWR1Y3Rpb24gZ3VpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omluc3RhbGxlZENETUZhY3Rvcmllcyk6IFVzZSBOZXZlckRlc3Ry
b3llZCBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSBtYWtlTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKTogVXNlIFNvcnRlZEFy
cmF5TWFwLCBvYnZpYXRpbmcgdGhlIG5lZWQgZm9yCisgICAgICAgIGFueSB1c2Ugb2YgTmV2ZXJE
ZXN0cm95ZWQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUgY29uc3QpOiBVc2UgU3BhbiBpbnN0ZWFkIG9mCisg
ICAgICAgIFZlY3RvciwgYWxsb3dpbmcgdXMgdG8gdXNlIGNvbnN0ZXhwciBhcnJheXMgcmF0aGVy
IHRoYW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIGEgVmVjdG9yLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVO
YW1lc10pOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAg
ICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IERpdHRvLgorICAgICAgICAocHJpbnRXcmFwcGVy
RmFjdG9yeUNwcEZpbGUpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omh0bWxFbGVtZW50RXF1aXZhbGVudHMpOiBSZXR1cm4g
YSBTcGFuIGluc3RlYWQgb2YgYSBWZWN0b3ImLAorICAgICAgICBhbGxvd2luZyB1cyB0byB1c2Ug
Y29uc3QgYXJyYXlzIHJhdGhlciB0aGFuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBhIFZlY3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6Omh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cyk6IERpdHRvLgorCisg
ICAgICAgICogZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNFbGVtZW50Rm9yRm9ybWF0QmxvY2spOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGVk
aXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1l
bnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHJvaGliaXRl
ZFBhcmFncmFwaENoaWxkKTogVXNlIGRlZHVjdGlvbiwgYWxzbyBjaGFuZ2UgdGhlIHRhZ3MgYXJy
YXkKKyAgICAgICAgdG8gYmUgYSBjb25zdGV4cHIgYXJyYXkgc28gd2UgZG9uJ3QgaGF2ZSB0byB1
c2UgcmVhZC93cml0ZSBtZW1vcnkgZm9yIGl0LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tOgorICAgICAgICAoV2ViRGVmYXVsdEZvbnQpOiBVc2UgZGVkdWN0aW9u
LgorICAgICAgICAoZGVmYXVsdFBhcmFncmFwaFN0eWxlKTogRGl0dG8uCisgICAgICAgICogaHRt
bC9BdXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWVsZE5hbWVNYXApOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKTogVXNlIGRlZHVjdGlvbiwgYWxz
byBjaGFuZ2UKKyAgICAgICAgdGhlIG5hbWVzIGFycmF5IHRvIGJlIGEgY29uc3RleHByIGFycmF5
IHNvIHdlIGRvbid0IGhhdmUgdG8gdXNlIHJlYWQvd3JpdGUgbWVtb3J5IGZvciBpdC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6IFVzZSBzdGQ6OmFycmF5IGRl
ZHVjdGlvbgorICAgICAgICBzbyB3ZSBkb24ndCBoYXZlIHRvIHdyaXRlIG91dCB0aGUgTGF6eU5l
dmVyRGVzdHJveWVkIHR5cGUgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1
cmUpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZFBhZ2VVUkwpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvdWNoRXZlbnRSZWdpb25Db2xvcnMpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1Bl
cmZvcm1hbmNlVXNlclRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdGVkTWFy
a05hbWVzVG9OYXZpZ2F0aW9uVGltaW5nRnVuY3Rpb25NYXApOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZCk6IFVzZSBTcGFuIGluc3RlYWQgb2YgVmVjdG9yLCBhbGxvd2luZyB1cyB0byB1c2UgY29uc3Rl
eHByIGFycmF5cworICAgICAgICByYXRoZXIgdGhuYSBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgYSBW
ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjptYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKTogRGl0dG8uIEFsc28g
dXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5TZWN1cmVTY2hlbWVzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVt
ZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXMpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZ3hDb21w
aWxlclNlcnZpY2VzKTogVXNlIFNwYW4gaW5zdGVhZCBvZiBhIFZlY3RvciYsIGFsbG93aW5nIHVz
CisgICAgICAgIHRvIHVzZSBhIGNvbnN0ZXhwciBhcnJheSByYXRoZXIgdGhhbiBhbGxvY2F0aW5n
IG1lbW9yeSBmb3IgYSB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjphZ3hDb21waWxlckNsYXNz
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2Uu
aDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXApOiBVc2Ug
ZGVkdWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3Rl
bmVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjptZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0
Zm9ybUNvbW1hbmQpOiBVc2UgU29ydGVkQXJyYXlNYXAsIG92YnZpYXRpbmcgdGhlCisgICAgICAg
IG5lZWQgZm9yIGFueSB1c2Ugb2YgTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Om9ic2VydmVkRXZl
bnROYW1lcyk6IFJldHVybiBhIFNwYW4KKyAgICAgICAgaW5zdGVhZCBvZiBhIFZlY3RvciYsIGFs
bG93aW5nIHVzIHRvIHVzZSBhbiBhcnJheSByYXRoZXIgdGhhbiBhbGxvY2F0aW5nCisgICAgICAg
IG1lbW9yeSBmb3IgYSBWZWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcm94eUZhY3Rvcnk6OnJlZ2lz
dGVyZWRGYWN0b3JpZXMpOiBVc2UgZGVkdWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXNlQmFja3NsYXNoQXNZ
ZW5TaWduRm9yRmFtaWx5KTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGggY29uc3QpOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnN0YWxsZWRGYWN0b3JpZXMpOiBVc2UgTmV2ZXJEZXN0cm95ZWQgZGlyZWN0bHksIG5vdCBt
YWtlTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXpl
Lmg6IEFkZGVkIGNvbnN0ZXhwciBzbyBtYW55IG9wZXJhdGlvbnMgY2FuIGJlIGRvbmUKKyAgICAg
ICAgYXQgY29tcGlsZSB0aW1lIGFzIG5lZWRlZDsgbWFpbmx5IHRoaXMgd2FzIHNvIHdlIGNhbiBt
YWtlIGEgY29uc3RleHByIGFycmF5IG9mCisgICAgICAgIHRoZXNlIHNpemVzLiBUaGlzIHNhbWUg
ZW5oYW5jZW1lbnQgY2FuIGJlIGFwcGxpZWQgdG8gb3RoZXIgdHlwZXMsIGJ1dCBqdXN0IGRpZAor
ICAgICAgICBpdCBoZXJlIGZvciBub3cuIEFsc28gZml4ZWQgcmV0dXJuIHZhbHVlcyBmb3IgbWlu
L21heERpbWVuc2lvbiB0aGF0IHdlcmUgYWNjaWRlbnRhbGx5CisgICAgICAgIHJldHVybmluZyBm
bG9hdCwgaHVydGluZyBwZXJmb3JtYW5jZSBiZWNhdXNlIG9mIHRoZSByb3VuZCB0cmlwIGludCB0
byBmbG9hdCwKKyAgICAgICAgYWxzbyBub3QgY2xlYW5seSByb3VuZCB0cmlwcGluZyB2ZXJ5IGxh
cmdlIGFuZCBzbWFsbCB2YWx1ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3RhdGljTUlNRVR5cGVMaXN0
KTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVm
YXVsdFN1cHBvcnRlZEltYWdlVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpt
YXRjaFN5c3RlbUZvbnRVc2UpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OndlYm1NSU1FVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZFZpZGVvQ29kZWNzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRBdWRp
b0NvZGVjcyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0
ZXJzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmYWN0b3Jp
ZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlOjpzdGFuZGFyZFZpZGVvU2l6ZXMpOiBVc2UgYSBjb25zdGV4cHIKKyAgICAgICAg
Z2xvYmFsIGFycmF5IGluc3RlYWQgb2YgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSB2ZWN0b3Ig
Zm9yIHRoaXMuCisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6
c3VwcG9ydHNDYXB0dXJlU2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2U6OmJlc3RTdXBwb3J0ZWRTaXplQW5kRnJhbWVSYXRlKTogRGl0dG8u
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2UuaDogUmVtb3ZlZCB0aGUgZGVjbGFyYXRpb24KKyAgICAgICAgb2YgdGhlIHN0YW5kYXJkVmlk
ZW9TaXplcywgd2hpY2ggd2FzIG5ldmVyIHVzZWQgb3V0c2lkZSB0aGUgZmlsZS9jbGFzcyBzbwor
ICAgICAgICBkaWQgbm90IGhhdmUgdG8gYmUgYSBwdWJsaWMgbWVtYmVyIGZ1bmN0aW9uLiBJZiB3
ZSBkbyBmaW5kIHdlIG5lZWQgdGhpcworICAgICAgICB3ZSBjYW4gYWx3YXlzIHR1cm4gaXQgYmFj
ayBpbnRvIGEgZnVuY3Rpb24sIGJ1dCBvbmUgdGhhdCByZXR1cm5zIGEgU3Bhbi4KKworICAgICAg
ICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZGV2aWNlcyk6IFVzZSBkZWR1Y3Rpb24uCisgICAgICAgIChXZWJDb3Jl
OjpkZXZpY2VNYXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjptaWNyb3Bob25lRGV2aWNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNwZWFrZXJEZXZpY2VzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6dmlkZW9E
ZXZpY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6ZGlzcGxheURldmljZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1pbWVUeXBlQ2FjaGUpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdGlvblF1
ZXVlRm9yQXN5bmNDbGllbnRzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMv
VGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3JlOjp0b2tlbml6ZXJGb3JTdHJpbmcp
OiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uIGNvbnN0
KTogVXNlCisgICAgICAgIE5ldmVyRGVzdHJveWVkIGRpcmVjdGx5IGluc3RlYWQgb2YgbWFrZU5l
dmVyRGVzdHJveWVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDb2NvYTo6Y2FjaGVkU3lzdGVtRm9udERlc2Ny
aXB0aW9uIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50Ojppc1N1cHBvcnRl
ZEF0dHJpYnV0ZSk6IFVzZSBkZWR1Y3Rpb24uCisKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVOYW1lVG9DU1NQcm9wZXJ0eUlE
TWFwKTogVXNlIGEgY29uc3RleHByIGFycmF5CisgICAgICAgIGluc3RlYWQgb2YgYSBjb25zdCBv
bmUgdGhhdCBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQgYXQgcnVudGltZS4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0VsZW1lbnQ6OmFuaW1hdGFibGVBdHRyaWJ1dGVGb3JOYW1lKTogRGl0dG8sIGFsc28g
dXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNzc1Byb3BlcnR5
SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKTogVXNlIGRlZHVjdGlvbi4KKworICAgICAgICAqIHN2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVs
ZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKiB4
bWwvWFBhdGhGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bmN0aW9u
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WFBhdGg6OnBhcnNlQXhpc05hbWUpOiBEaXR0by4KKwogMjAyMS0xMi0xNSAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBZG9wdCAt
W05TU2NyZWVuIHNhZmVBcmVhSW5zZXRzXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZDRhNWI5OTUzM2MzZTJkYTE2
MDdhZDViZWUwZTQxNTJhOTM4OTY3Li41NGI5OWM5ZWU2NDZhNWM0OTc4ODExZGEwZjc4MWUwMGQ4
ZjUxNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTEyLTE1ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYW55IGNhbGwgc2l0ZXMgdXNlIG1ha2VO
ZXZlckRlc3Ryb3llZCwgYnV0IGNvdWxkIGluc3RlYWQgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIE5l
dmVyRGVzdHJveWVkIGRlZHVjdGlvbiBndWlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJp
ZXMpOgorICAgICAgICBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpleHBlY3RlZFRhYmxlQW5kSW5kZXhR
dWVyaWVzKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2Vy
Q2hlY2tzLm1tOgorICAgICAgICAoV2ViS2l0OjpnZXRBcHBCb3VuZERvbWFpbnNUZXN0aW5nKTog
RGl0dG8uCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKTogTWFrZSB0aGlz
IG1vcmUgZ2VuZXJpYyBzbyBpdCB3b3JrcyB3aXRoCisgICAgICAgIG90aGVyIGtpbmRzIG9mIGNv
bGxlY3Rpb25zLCBub3QganVzdCBWZWN0b3IuIEFsc28gcmlnaHQtc2l6ZSB0aGUgVmVjdG9yIHRo
aXMKKyAgICAgICAgcmV0dXJucyByYXRoZXIgdGhhbiBsZXR0aW5nIGl0IGdyb3cgb3JnYW5pY2Fs
bHkuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFu
ZGxlc0ZvckZpbGVzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCk6IERpdHRv
LiBBbHNvIHVwZGF0ZSB0aGlzCisgICAgICAgIGZ1bmN0aW9uIHRvIHRha2UgYSBTcGFuIG9yIGFu
IGluaXRpYWxpemVyX2xpc3QgaW5zdGVhZCBvZiBhIFZlY3Rvci4KKyAgICAgICAgKFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5l
bnRseSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6IFVwZGF0
ZWQgZm9yIHRoZSBhYm92ZS4gQWxzbyBjb3JyZWN0ZWQgc29tZSB1bnVzdWFsCisgICAgICAgIHVz
ZSBvZiAjaWYgdG8gc2hhcmUgYSBzaW5nbGUgZGVjbGFyYXRpb24gb2Ygc29tZSBmdW5jdGlvbnMg
Zm9yIGJvdGggZW5hYmxlZAorICAgICAgICBhbmQgZGlzYWJsZWQgU0FOREJPWF9FWFRFTlNJT05T
LgorCisgICAgICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpub25Ccm93c2VyU2VydmljZXMpOiBVc2UgZGVkdWN0aW9uLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmF0dGFjaG1l
bnRFbGVtZW50U2VydmljZXMpOiBSZXR1cm4gYSBTcGFuLCBhbGxvd2luZyB1cyB0byB1c2UgYQor
ICAgICAgICBjb25zdGV4cHIgb2J2aWF0aW5nIHRoZSBuZWVkIGZvciBtZW1vcnkgYWxsb2NhdGlv
biBvciByZWFkL3dyaXRlIG1lbW9yeSwKKyAgICAgICAgKFdlYktpdDo6Z3B1SU9LaXRDbGFzc2Vz
KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmdwdU1hY2hTZXJ2aWNlcyk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjptZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKTogRGl0dG8uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tOgorICAgICAgICAoV2ViS2l0OjptdXRhYmxl
U3RhdGUpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHN1cHBvcnRlZFBh
c3RlYm9hcmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb25dKTogRGl0dG8uCisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6bXV0YWJsZVN0
YXRlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OnRlbXBvcmFyeVBERkRpcmVjdG9yeVBhdGgpOiBEaXR0by4KKwog
MjAyMS0xMi0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBBZG9wdCAtW05TU2NyZWVuIHNhZmVBcmVhSW5zZXRzXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDhjZTM2MzBjMmI4ZmUyMDJlNzk4ZjZlM2I0YWZjZTZmYjBiNzMxY2UuLjQ0
ZTk5ZWQzNzcyYzIxZWFmMDU3ZTliMzE5M2E2ZDE3NDQzYmE1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMi0xNSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFueSBjYWxsIHNpdGVzIHVzZSBtYWtlTmV2ZXJE
ZXN0cm95ZWQsIGJ1dCBjb3VsZCBpbnN0ZWFkIHRha2UgYWR2YW50YWdlIG9mIHRoZSBOZXZlckRl
c3Ryb3llZCBkZWR1Y3Rpb24gZ3VpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW06CisgICAgICAg
ICh3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSk6IFVzZSBkZWR1Y3Rpb24uCisg
ICAgICAgICh3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSk6CisgICAgICAgICogTWlz
Yy9XZWJOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYmtpdF9yYW5nZU9m
VVJMU2NoZW1lXSk6IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToK
KyAgICAgICAgKCtbV2ViRGF0YVNvdXJjZSBfcmVwVHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9u
Ol0pOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAg
KCtbV2ViRnJhbWVWaWV3IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOl0pOiBEaXR0
by4KKwogMjAyMS0xMi0xNCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL05ldmVyRGVzdHJveWVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5o
CmluZGV4IGJlZjM3ZGYxMDFlZGI3OTllZDc3MjRiYmIwNmRhOWYxOGQ1MGRkMzIuLjJmMjY0NGZh
ZDE1NjMzOTJlYjRhMDY1NWY3Y2NkYzgzNzNlYzg5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL05ldmVyRGVzdHJveWVkLmgKKysrIGIvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQu
aApAQCAtMTA0LDggKzEwNCw2IEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVk
X3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0eXBlIG1f
c3RvcmFnZTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFjY2Vzc1RyYWl0
cyA9IEFueVRocmVhZHNBY2Nlc3NUcmFpdHM+IE5ldmVyRGVzdHJveWVkPFQsIEFjY2Vzc1RyYWl0
cz4gbWFrZU5ldmVyRGVzdHJveWVkKFQmJik7Ci0KIC8vIEZJWE1FOiBJdCdzIG1lc3N5IHRvIGhh
dmUgdG8gcmVwZWF0IHRoZSB3aG9sZSBjbGFzcyBqdXN0IHRvIG1ha2UgdGhpcyAibGF6eSIgdmVy
c2lvbi4KIC8vIFNob3VsZCByZXZpc2l0IGNsaWVudHMgdG8gc2VlIGlmIHdlIHJlYWxseSBuZWVk
IHRoaXMsIGFuZCBwZXJoYXBzIHVzZSB0ZW1wbGF0ZXMgdG8KIC8vIHNoYXJlIG1vcmUgb2YgdGhl
IGNvZGUgd2l0aCB0aGUgbWFpbiBOZXZlckRlc3Ryb3llZCBhYm92ZS4KQEAgLTE4MSwyMyArMTc5
LDE0IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IE5ldmVyRGVzdHJveWVkKFQp
IC0+IE5ldmVyRGVzdHJveWVkPFQ+OwogCi0vLyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24s
IHJlbHlpbmcgaW5zdGVhZCBvbiB0aGUgZGVkdWN0aW9uIGd1aWRlIGZvciBOZXZlckRlc3Ryb3ll
ZCBhYm92ZS4KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFjY2Vzc1RyYWl0cz4gaW5s
aW5lIE5ldmVyRGVzdHJveWVkPFQsIEFjY2Vzc1RyYWl0cz4gbWFrZU5ldmVyRGVzdHJveWVkKFQm
JiBhcmd1bWVudCkKLXsKLSAgICByZXR1cm4gc3RkOjpmb3J3YXJkPFQ+KGFyZ3VtZW50KTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVzaW5nIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZCA9
IE5ldmVyRGVzdHJveWVkPFQsIE1haW5UaHJlYWRBY2Nlc3NUcmFpdHM+OwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdXNpbmcgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkID0gTmV2ZXJEZXN0cm95ZWQ8
VCwgTWFpblRocmVhZEFjY2Vzc1RyYWl0cz47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci11c2lu
ZyBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkID0gTGF6eU5ldmVyRGVzdHJveWVkPFQsIE1h
aW5UaHJlYWRBY2Nlc3NUcmFpdHM+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdXNpbmcgTWFpblRo
cmVhZExhenlOZXZlckRlc3Ryb3llZCA9IExhenlOZXZlckRlc3Ryb3llZDxULCBNYWluVGhyZWFk
QWNjZXNzVHJhaXRzPjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGOwogCiB1c2luZyBXVEY6OkxhenlO
ZXZlckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6TmV2ZXJEZXN0cm95ZWQ7Ci11c2luZyBXVEY6Om1h
a2VOZXZlckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6TWFpblRocmVhZE5ldmVyRGVzdHJveWVkOwog
dXNpbmcgV1RGOjpNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkOwogdXNpbmcgV1RGOjpBbnlU
aHJlYWRzQWNjZXNzVHJhaXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9T
dHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3Bw
CmluZGV4IDFlMjM2NDcxNGY4Yjc4MGE0NzEwNmNiMDkyZWI4N2ViMzEyZTRhZWMuLjlmNDBjMDVj
MzRmMzY3NWE3MDFmNzExOWJjNDE0NjVmNWIyYjAxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2Nm
L1N0cmluZ0ltcGxDRi5jcHAKQEAgLTEwNiwxMCArMTA2LDEwIEBAIG5hbWVzcGFjZSBTdHJpbmdX
cmFwcGVyQ0ZBbGxvY2F0b3IgewogCiAgICAgc3RhdGljIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
cigpCiAgICAgewotICAgICAgICBzdGF0aWMgYXV0byBhbGxvY2F0b3IgPSBtYWtlTmV2ZXJEZXN0
cm95ZWQoW10geworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYWxsb2NhdG9yID0gW10g
ewogICAgICAgICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7IDAsIG51bGxwdHIs
IHJldGFpbiwgcmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwgcmVhbGxvY2F0ZSwg
ZGVhbGxvY2F0ZSwgcHJlZmVycmVkU2l6ZSB9OwogICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZBbGxvY2F0b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpKTsKLSAgICAgICAgfSgpKTsKKyAg
ICAgICAgfSgpOwogICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmdldCgpLmdldCgpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggMjk4MjM3NTFkNGM1OTQyNjcwOGFiODY0YWI0YWNh
MWU5NDY5NTAyZC4uMWYxYmVjN2MzMzQyNGZlMDg0Mjc1NDhmMDcyY2M3ZGZkMTJmZDBjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xl
Z2FjeS9MZWdhY3lDRE0uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyB2b2lkIHBsYXRmb3Jt
UmVnaXN0ZXJGYWN0b3JpZXMoVmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+JiBmYWN0b3JpZXMpCiAK
IHN0YXRpYyBWZWN0b3I8TGVnYWN5Q0RNRmFjdG9yeT4mIGluc3RhbGxlZENETUZhY3Rvcmllcygp
CiB7Ci0gICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZDxWZWN0b3I8TGVn
YWN5Q0RNRmFjdG9yeT4+KHsgfSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3RvcjxM
ZWdhY3lDRE1GYWN0b3J5Pj4gY2RtczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgcmVnaXN0
ZXJEZWZhdWx0czsKICAgICBzdGQ6OmNhbGxfb25jZShyZWdpc3RlckRlZmF1bHRzLCBbJl0gewog
ICAgICAgICBwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKGNkbXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMzlj
Y2MxNGUyMWI4ZjdhYTY2ODIzOTVmZmMxMGYyY2M4MGRhNmVlOC4uZTA3NzIwODQ1NWUxN2NkZjc2
Y2RjZGRmOGI5MzA3MTkzYmQ4ZTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgog
I2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFw
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsMjcgKzY2LDE5IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKQogCiBzdGF0aWMgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25B
Y3Rpb24oTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0
byBjb21tYW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgdXNpbmcgQWN0
aW9uVG9Db21tYW5kTWFwID0gSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24sIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIEludEhhc2g8TWVkaWFTZXNzaW9u
QWN0aW9uPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxNZWRpYVNlc3Npb25BY3Rpb24+PjsK
LQotICAgICAgICByZXR1cm4gQWN0aW9uVG9Db21tYW5kTWFwIHsKLSAgICAgICAgICAgIHsgTWVk
aWFTZXNzaW9uQWN0aW9uOjpQbGF5LCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQg
fSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpQYXVzZSwgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlBhdXNlQ29tbWFuZCB9LAotICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rp
b246OlNlZWtmb3J3YXJkLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5k
IH0sCi0gICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2JhY2t3YXJkLCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCB9LAotICAgICAgICAgICAgeyBN
ZWRpYVNlc3Npb25BY3Rpb246OlByZXZpb3VzdHJhY2ssIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
cmV2aW91c1RyYWNrQ29tbWFuZCB9LAotICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246
Ok5leHR0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwKLSAg
ICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTdG9wLCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6U3RvcENvbW1hbmQgfSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVr
dG8sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0aW9uQ29tbWFuZCB9
LAotICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNraXBhZCwgUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwKLSAgICAgICAgfTsKLSAgICB9KCkpOwotCi0g
ICAgYXV0byBpdCA9IGNvbW1hbmRNYXAuZ2V0KCkuZmluZChhY3Rpb24pOwotICAgIGlmIChpdCAh
PSBjb21tYW5kTWFwLmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwotCi0g
ICAgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQ7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OnBhaXI8TWVkaWFTZXNzaW9uQWN0aW9uLCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiBtYXBwaW5nc1tdIHsKKyAgICAgICAgeyBNZWRp
YVNlc3Npb25BY3Rpb246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCB9
LAorICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2UsIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpQYXVzZUNvbW1hbmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWti
YWNrd2FyZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQgfSwKKyAg
ICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtmb3J3YXJkLCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIH0sCisgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9u
OjpQcmV2aW91c3RyYWNrLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1h
bmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246Ok5leHR0cmFjaywgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25B
Y3Rpb246OlNraXBhZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwK
KyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTdG9wQ29tbWFuZCB9LAorICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla3RvLCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQgfSwKKyAg
ICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgbWFwIHsgbWFwcGluZ3Mg
fTsKKyAgICByZXR1cm4gbWFwLmdldChhY3Rpb24sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0Nv
bW1hbmQpOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UGxhdGZvcm1NZWRp
YVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbW1hbmRBcmd1bWVudD4+IHBsYXRmb3JtQ29tbWFuZEZvck1lZGlhU2Vzc2lvbkFj
dGlvbihjb25zdCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzJiBhY3Rpb25EZXRhaWxzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKaW5kZXggNTI2MGM2N2E4NWRhZmQxZDY5N2NjMGQ4MDYyOTJiMzEwZjUy
MTI1ZS4uY2M3OWRlYjIzMWRmZjI3ZWE5MjU1ZTRhZWM5NzQ5Nzg2YzBiNGYxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCkBAIC0zMjE0LDE4ICszMjE0LDE4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdAogICAgIC8vIHRo
b3NlIGNoaWxkIGVsZW1lbnRzIGFyZSBhbHNvIHByZXNlbnRhdGlvbmFsLiBGb3IgZXhhbXBsZSwg
PGxpPiBiZWNvbWVzIHByZXNlbnRhdGlvbmFsIGZyb20gPHVsPi4KICAgICAvLyBodHRwOi8vd3d3
LnczLm9yZy9XQUkvUEYvYXJpYS9jb21wbGV0ZSNwcmVzZW50YXRpb24KIAotICAgIGNvbnN0IFZl
Y3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+KiBwYXJlbnRUYWdzOworICAgIFNwYW48Y29u
c3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lPiogY29uc3Q+IHBh
cmVudFRhZ3M7CiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewogICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVJvbGU6Okxpc3RJdGVtOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RNYXJr
ZXI6IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGF1dG8gbGlzdEl0ZW1QYXJlbnRzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+IHsgJmRsVGFnLmdl
dCgpLCAmb2xUYWcuZ2V0KCksICZ1bFRhZy5nZXQoKSB9KTsKLSAgICAgICAgcGFyZW50VGFncyA9
ICZsaXN0SXRlbVBhcmVudHMuZ2V0KCk7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjph
cnJheSBsaXN0SXRlbVBhcmVudHMgeyAmZGxUYWcsICZvbFRhZywgJnVsVGFnIH07CisgICAgICAg
IHBhcmVudFRhZ3MgPSBsaXN0SXRlbVBhcmVudHM7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbDoKICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlSb2xlOjpDZWxsOiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBhdXRvIHRhYmxlQ2VsbFBhcmVu
dHMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lKj4g
eyAmdGFibGVUYWcuZ2V0KCkgfSk7Ci0gICAgICAgIHBhcmVudFRhZ3MgPSAmdGFibGVDZWxsUGFy
ZW50cy5nZXQoKTsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHRhYmxlQ2Vs
bFBhcmVudHMgeyAmdGFibGVUYWcgfTsKKyAgICAgICAgcGFyZW50VGFncyA9IHRhYmxlQ2VsbFBh
cmVudHM7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMzI0NCw3ICsz
MjQ0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhlcml0c1ByZXNlbnRh
dGlvbmFsUm9sZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIG5hdGl2ZSB0YWcgb2YgdGhlIHBhcmVu
dCBlbGVtZW50IG1hdGNoZXMgYW4gYWNjZXB0YWJsZSBuYW1lLCB0aGVuIHJldHVybgogICAgICAg
ICAvLyBiYXNlZCBvbiBpdHMgcHJlc2VudGF0aW9uYWwgc3RhdHVzLgogICAgICAgICBhdXRvJiBu
YW1lID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLnRhZ1FOYW1lKCk7Ci0gICAgICAgIGlmIChz
dGQ6OmFueV9vZihwYXJlbnRUYWdzLT5iZWdpbigpLCBwYXJlbnRUYWdzLT5lbmQoKSwgWyZuYW1l
XSAoYXV0byogcG9zc2libGVOYW1lKSB7IHJldHVybiAqcG9zc2libGVOYW1lID09IG5hbWU7IH0p
KQorICAgICAgICBpZiAoc3RkOjphbnlfb2YocGFyZW50VGFncy5iZWdpbigpLCBwYXJlbnRUYWdz
LmVuZCgpLCBbJm5hbWVdIChhdXRvKiBwb3NzaWJsZU5hbWUpIHsgcmV0dXJuIHBvc3NpYmxlTmFt
ZS0+Z2V0KCkgPT0gbmFtZTsgfSkpCiAgICAgICAgICAgICByZXR1cm4gcGFyZW50LT5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWw7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDE5M2RmZmRjZjYwMDBiZjFi
NDVlMzkwZTJlYzQ0NzFmOTI5YjZlNjAuLjNkNTJjY2ZjZmFiMWU5NzkzODJjZDM2N2JkNDNiOTZi
NGRlNWI3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0x
MzM0LDcgKzEzMzQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0ZSwKICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5SGlnaGVzdEVkaXRhYmxlQW5jZXN0b3JBdHRyaWJ1dGUsCiAgICAgXTsK
LSAgICBzdGF0aWMgYXV0byBpbmNyZW1lbnRvckF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW5jcmVtZW50b3JBdHRycyA9IFtdIHsKICAg
ICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRCdXR0b25BdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRCdXR0b25B
dHRyaWJ1dGVdOwpAQCAtMTM0MiwxNCArMTM0MiwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5TWluVmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7
Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byBhbmNob3JBdHRycyA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBhbmNob3JBdHRy
cyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlMaW5rUmVs
YXRpb25zaGlwVHlwZUF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAg
fSgpKTsKKyAgICB9KCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0Fy
cmF5Pj4gY29tbW9uTWVudUF0dHJzID0gQFsKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0
dHJpYnV0ZSwKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRl
LApAQCAtMTM1OSw3ICsxMzU5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAogICAgICAgICBO
U0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAogICAgIF07Ci0gICAgc3RhdGljIGF1dG8gd2Vi
QXJlYUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgd2ViQXJlYUF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgp
LmdldCgpXSk7CiAgICAgICAgIC8vIFdlYkFyZWFzIHNob3VsZCBub3QgZXhwb3NlIEFYU3Vicm9s
ZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U3Vicm9s
ZUF0dHJpYnV0ZV07CkBAIC0xMzc2LDggKzEzNzYsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVdlYlNlc3Npb25JREF0dHJpYnV0ZV07
CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byB0
ZXh0QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQgdGV4dEF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVz
LmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eU51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV07CkBAIC0xMzkxLDI0
ICsxMzkxLDI0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFs
dWVBdXRvZmlsbGVkQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9
KCkpOwotICAgIHN0YXRpYyBhdXRvIGxpc3RBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBsaXN0QXR0cnMgPSBbXSB7CiAg
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJl
bkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVt
cEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gbGlzdEJveEF0dHJzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGxp
c3RCb3hBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6bGlzdEF0dHJzLmdldCgpLmdldCgpXSk7
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJl
cXVpcmVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBB
cnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHJhbmdlQXR0cnMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgcmFuZ2VB
dHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1heFZhbHVl
QXR0cmlidXRlXTsKQEAgLTE0MTYsMjQgKzE0MTYsMjQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIHJl
dHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byBtZW51QmFyQXR0cnMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgbWVudUJhckF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnMu
Z2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25BdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAg
c3RhdGljIGF1dG8gbWVudUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1lbnVBdHRycyA9IFtdIHsKICAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6Y29tbW9uTWVudUF0dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRs
ZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJh
eTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIG1lbnVJdGVtQXR0cnMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWVudUl0
ZW1BdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzLmdldCgpLmdldCgp
XSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb25BdHRyaWJ1dGVdOwpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVNlcnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV07CiAg
ICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gbWVudUJ1dHRvbkF0dHJzID0gQFsK
ICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLApAQCAtMTQ2MiwyOSArMTQ2MiwyOSBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5VGl0bGVBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmli
dXRlLAogICAgIF07Ci0gICAgc3RhdGljIGF1dG8gY29udHJvbEF0dHJzID0gbWFrZU5ldmVyRGVz
dHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgY29udHJvbEF0dHJzID0gW10g
ewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVx
dWlyZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9
KCkpOwotICAgIHN0YXRpYyBhdXRvIGJ1dHRvbkF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGJ1dHRvbkF0dHJzID0gW10g
ewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIC8vIEJ1
dHRvbnMgc2hvdWxkIG5vdCBleHBvc2UgQVhWYWx1ZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1v
dmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJp
YnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMg
YXV0byBjb21ib0JveEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGNvbWJvQm94QXR0cnMgPSBbXSB7CiAgICAgICAgIGF1
dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OmNvbnRyb2xBdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAg
ICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHRhYmxlQXR0
cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQgdGFibGVBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQo
KS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlS
b3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwpAQCAtMTQ5OSwyMSArMTQ5OSwyMSBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkNvdW50QXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJvd0NvdW50QXR0cmlidXRlXTsK
ICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHRh
YmxlUm93QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgdGFibGVSb3dBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1w
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0
cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0g
ICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byB0YWJsZUNvbEF0dHJzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHRhYmxlQ29sQXR0
cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Vmlz
aWJsZVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7
Ci0gICAgc3RhdGljIGF1dG8gdGFibGVDZWxsQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdGFibGVDZWxsQXR0cnMgPSBb
XSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4
UmFuZ2VBdHRyaWJ1dGVdOwpAQCAtMTUyMiwxOCArMTUyMiwxOCBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5QVJJQUNvbHVtbkluZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJvd0luZGV4QXR0cmlidXRlXTsKICAgICAgICAg
cmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIGdyb3VwQXR0cnMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgZ3JvdXBBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5n
ZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRs
ZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgp
KTsKLSAgICBzdGF0aWMgYXV0byBpbnB1dEltYWdlQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
W10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW5wdXRJbWFnZUF0dHJz
ID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTpidXR0b25BdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOwogICAg
ICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gcGFzc3dv
cmRGaWVsZEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIHBhc3N3b3JkRmllbGRBdHRycyA9IFtdIHsKICAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKQEAgLTE1
NDEsMjMgKzE1NDEsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVyVmFs
dWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlWYWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5Owot
ICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gdGFiTGlzdEF0dHJzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHRhYkxpc3RBdHRy
cyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRh
dGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAg
ICBzdGF0aWMgYXV0byBvdXRsaW5lQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
IH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgb3V0bGluZUF0dHJzID0gW10gewogICAg
ICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25BdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAg
c3RhdGljIGF1dG8gb3V0bGluZVJvd0F0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAg
ICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG91dGxpbmVSb3dBdHRycyA9IFtdIHsK
ICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGFibGVSb3dBdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlSb3dB
dHRyaWJ1dGVdOwpAQCAtMTU2NSwyNyArMTU2NSwyNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgcmVtb3ZlT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBB
cnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHNjcm9sbFZpZXdBdHRycyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBz
Y3JvbGxWaWV3QXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0
KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVu
dHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwogICAgICAg
ICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gaW1hZ2VBdHRy
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZCBpbWFnZUF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgp
LmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUlt
YWdlT3ZlcmxheUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5RW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsK
ICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHZp
ZGVvQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQgdmlkZW9BdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRl
cy5nZXQoKS5nZXQoKV0pOwogICAgICAgICAvLyBUaGlzIHNob3VsZCByZXByZXNlbnQgdGhlIFVS
TCBvZiB0aGUgdmlkZW8gY29udGVudCwgbm90IHRoZSBwb3N0ZXIuCiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVy
biB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAKICAgICBOU0FycmF5ICpvYmplY3RB
dHRyaWJ1dGVzID0gYXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1l
cy5wbAppbmRleCA2ZDcwZGZiZjAwZWZlMzYyMGI4Y2VmNjkwYTlkYTE5M2VjYzVmMTMwLi45YjI0
N2ZiNzQ3OTNkYzVlMTA1ODhkNmNkZTBhZWEyYWFhNzhiMjk4IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9u
YW1lcy5wbApAQCAtMTAzNSw3ICsxMDM1LDcgQEAgRU5ECiAKIHN0YXRpYyAkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5IGZpbmQkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudENvbnN0cnVjdG9yRnVuY3Rpb24oY29uc3QgQXRvbVN0cmluZyYgbG9jYWxO
YW1lKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChj
cmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcCgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQgbWFwID0gY3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUZhY3RvcnlNYXAo
KTsKICAgICByZXR1cm4gbWFwLmdldCgpLmdldChsb2NhbE5hbWUpOwogfQogCkBAIC0xMzA5LDcg
KzEzMDksNyBAQCBFTkQKIAogSlNET01PYmplY3QqIGNyZWF0ZUpTJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50PiYmIGVsZW1lbnQpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gZnVuY3Rpb25zID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZSRwYXJhbWV0ZXJze25hbWVz
cGFjZX1XcmFwcGVyTWFwKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBmdW5jdGlvbnMg
PSBjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlck1hcCgpOwogICAgIGlmIChhdXRv
IGZ1bmN0aW9uID0gZnVuY3Rpb25zLmdldCgpLmdldChlbGVtZW50LT5sb2NhbE5hbWUoKSkpCiAg
ICAgICAgIHJldHVybiBmdW5jdGlvbihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudCkpOwog
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggNzJlMjc5OWRk
NDJkNDVlMGE1NjU2YWMzMjAzMTJkM2JjMzdiMTQwOC4uODU1ODA3ZTJjMjA5YjBiMzE0ZWFkODhk
NDYxOGQ1Y2ZhZjM3NzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cApAQCAtOTQ5LDkgKzk0OSw5IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5s
aW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgUmVmCiAgICAgcmV0dXJu
IGNvbmZsaWN0czsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3Rvcjxjb25zdCBIVE1MRWxlbWVudEVx
dWl2YWxlbnQqPiYgaHRtbEVsZW1lbnRFcXVpdmFsZW50cygpCitzdGF0aWMgU3Bhbjxjb25zdCBI
VE1MRWxlbWVudEVxdWl2YWxlbnQqIGNvbnN0PiBodG1sRWxlbWVudEVxdWl2YWxlbnRzKCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgYXV0byBlcXVpdmFsZW50cyA9IG1ha2VOZXZlckRlc3Ryb3llZChW
ZWN0b3I8Y29uc3QgSFRNTEVsZW1lbnRFcXVpdmFsZW50Kj4geworICAgIHN0YXRpYyBjb25zdCBI
VE1MRWxlbWVudEVxdWl2YWxlbnQqIGNvbnN0IGVxdWl2YWxlbnRzW10gPSB7CiAgICAgICAgIG5l
dyBIVE1MRm9udFdlaWdodEVxdWl2YWxlbnQoSFRNTE5hbWVzOjpiVGFnKSwKICAgICAgICAgbmV3
IEhUTUxGb250V2VpZ2h0RXF1aXZhbGVudChIVE1MTmFtZXM6OnN0cm9uZ1RhZyksCiAKQEAgLTk2
MywxMSArOTYzLDEwIEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8Y29uc3QgSFRNTEVsZW1lbnRFcXVp
dmFsZW50Kj4mIGh0bWxFbGVtZW50RXF1aXZhbGVudHMoKQogICAgICAgICBuZXcgSFRNTFRleHRE
ZWNvcmF0aW9uRXF1aXZhbGVudChDU1NWYWx1ZVVuZGVybGluZSwgSFRNTE5hbWVzOjp1VGFnKSwK
ICAgICAgICAgbmV3IEhUTUxUZXh0RGVjb3JhdGlvbkVxdWl2YWxlbnQoQ1NTVmFsdWVMaW5lVGhy
b3VnaCwgSFRNTE5hbWVzOjpzVGFnKSwKICAgICAgICAgbmV3IEhUTUxUZXh0RGVjb3JhdGlvbkVx
dWl2YWxlbnQoQ1NTVmFsdWVMaW5lVGhyb3VnaCwgSFRNTE5hbWVzOjpzdHJpa2VUYWcpLAotICAg
IH0pOworICAgIH07CiAgICAgcmV0dXJuIGVxdWl2YWxlbnRzOwogfQogCi0KIGJvb2wgRWRpdGlu
Z1N0eWxlOjpjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mRWxlbWVudChIVE1MRWxlbWVudCYg
ZWxlbWVudCwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSwgU2hvdWxkRXh0cmFjdE1hdGNo
aW5nU3R5bGUgc2hvdWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUpIGNvbnN0CiB7CiAgICAgaWYgKGlz
RW1wdHkoKSkKQEAgLTk4NCw5ICs5ODMsOSBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3Rz
V2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIEVkaQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3Rvcjxjb25zdCBIVE1MQXR0cmli
dXRlRXF1aXZhbGVudCo+JiBodG1sQXR0cmlidXRlRXF1aXZhbGVudHMoKQorc3RhdGljIFNwYW48
Y29uc3QgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQqIGNvbnN0PiBodG1sQXR0cmlidXRlRXF1aXZh
bGVudHMoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGVxdWl2YWxlbnRzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudCo+IHsKKyAgICBz
dGF0aWMgY29uc3QgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQqIGNvbnN0IGVxdWl2YWxlbnRzW10g
PSB7CiAgICAgICAgIC8vIGVsZW1lbnRJc1N0eWxlZFNwYW5PckhUTUxFcXVpdmFsZW50IGRlcGVu
ZHMgb24gdGhlIGZhY3QgZWFjaCBIVE1MQXR0cml1dGVFcXVpdmFsZW50IG1hdGNoZXMgZXhhY3Rs
eSBvbmUgYXR0cmlidXRlCiAgICAgICAgIC8vIG9mIGV4YWN0bHkgb25lIGVsZW1lbnQgZXhjZXB0
IGRpckF0dHIuCiAgICAgICAgIG5ldyBIVE1MQXR0cmlidXRlRXF1aXZhbGVudChDU1NQcm9wZXJ0
eUNvbG9yLCBIVE1MTmFtZXM6OmZvbnRUYWcsIEhUTUxOYW1lczo6Y29sb3JBdHRyKSwKQEAgLTk5
NSw3ICs5OTQsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPGNvbnN0IEhUTUxBdHRyaWJ1dGVFcXVp
dmFsZW50Kj4mIGh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cygpCiAKICAgICAgICAgbmV3IEhUTUxB
dHRyaWJ1dGVFcXVpdmFsZW50KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBIVE1MTmFtZXM6OmRpckF0
dHIpLAogICAgICAgICBuZXcgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQoQ1NTUHJvcGVydHlVbmlj
b2RlQmlkaSwgSFRNTE5hbWVzOjpkaXJBdHRyKSwKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVy
biBlcXVpdmFsZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
b3JtYXRCbG9ja0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9j
a0NvbW1hbmQuY3BwCmluZGV4IDlkYmE1MGE4MDkyZWI4NzMwYWUyMzFjMTMxMTAzMTYzMzAzMWZm
MjcuLjJlMTA1ODI2MWZmNTY3M2UyMDJhMmNhZmRkYTNkMDEwZjY0NTkzMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKQEAgLTEyMyw3ICsxMjMs
NyBAQCBFbGVtZW50KiBGb3JtYXRCbG9ja0NvbW1hbmQ6OmVsZW1lbnRGb3JGb3JtYXRCbG9ja0Nv
bW1hbmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaQogCiBib29sIGlzRWxlbWVudEZvckZvcm1hdEJs
b2NrKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gYmxvY2tUYWdzID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaFNldDxRdWFsaWZpZWROYW1lPiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkIGJsb2NrVGFncyA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxR
dWFsaWZpZWROYW1lPiB7CiAgICAgICAgIGFkZHJlc3NUYWcsCiAgICAgICAgIGFydGljbGVUYWcs
CiAgICAgICAgIGFzaWRlVGFnLApAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgaXNFbGVtZW50Rm9y
Rm9ybWF0QmxvY2soY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKICAgICAgICAgcFRhZywK
ICAgICAgICAgcHJlVGFnLAogICAgICAgICBzZWN0aW9uVGFnLAotICAgIH0pOworICAgIH07CiAg
ICAgcmV0dXJuIGJsb2NrVGFncy5nZXQoKS5jb250YWlucyh0YWdOYW1lKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAKaW5kZXggNjYxNDA3
ZTE0NTI0Y2YyYTEzZmVhMzY1NTEzZDc5YWJlNTNlNjlkMy4uMzNlOTYwNWQ1ZjA3MmI2MWZjYTdj
NWFkOTk3NzRjODU2ZTkzYjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFJlbW92ZUZvcm1hdENvbW1hbmQ6
OlJlbW92ZUZvcm1hdENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBzdGF0aWMgYm9vbCBp
c0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gZWxlbWVudHMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFF1YWxpZmllZE5hbWU+IHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZWxlbWVudHMgPSBNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gewogICAgICAgICBhY3JvbnltVGFnLAog
ICAgICAgICBiVGFnLAogICAgICAgICBiZG9UYWcsCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBi
b29sIGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQoY29uc3QgRWxlbWVudCogZWxlbWVu
dCkKICAgICAgICAgdHRUYWcsCiAgICAgICAgIHVUYWcsCiAgICAgICAgIHZhclRhZywKLSAgICB9
KTsKKyAgICB9OwogICAgIHJldHVybiBlbGVtZW50cy5nZXQoKS5jb250YWlucyhlbGVtZW50LT50
YWdRTmFtZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBlN2ZmMjY1NDVkZGI3NDY1NGYwMjk0OWRmMGQ0YzQ4
YjhlNDcxMDEwLi5jMjRiZWZmNWNiNGVhNzRmMGQ1ZDJjM2I1NjZiZGI2ZmRmYjVjNmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cApAQCAtNzI1LDYzICs3MjUsNjMgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVt
b3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKIAogc3RhdGlj
IGJvb2wgaXNQcm9oaWJpdGVkUGFyYWdyYXBoQ2hpbGQoY29uc3QgQXRvbVN0cmluZyYgbmFtZSkK
IHsKLSAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcvcmF3LWZpbGUvNTdhYmU2
ZDNjYjYwL2VkaXRpbmcuaHRtbCNwcm9oaWJpdGVkLXBhcmFncmFwaC1jaGlsZAotICAgIHN0YXRp
YyBjb25zdCBhdXRvIGxvY2FsTmFtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAg
ICBzdGF0aWMgY29uc3QgSFRNTFF1YWxpZmllZE5hbWUqIGNvbnN0IHRhZ3NbXSA9IHsKLSAgICAg
ICAgICAgICZhZGRyZXNzVGFnLmdldCgpLAotICAgICAgICAgICAgJmFydGljbGVUYWcuZ2V0KCks
Ci0gICAgICAgICAgICAmYXNpZGVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmYmxvY2txdW90ZVRh
Zy5nZXQoKSwKLSAgICAgICAgICAgICZjYXB0aW9uVGFnLmdldCgpLAotICAgICAgICAgICAgJmNl
bnRlclRhZy5nZXQoKSwKLSAgICAgICAgICAgICZjb2xUYWcuZ2V0KCksCi0gICAgICAgICAgICAm
Y29sZ3JvdXBUYWcuZ2V0KCksCi0gICAgICAgICAgICAmZGRUYWcuZ2V0KCksCi0gICAgICAgICAg
ICAmZGV0YWlsc1RhZy5nZXQoKSwKLSAgICAgICAgICAgICZkaXJUYWcuZ2V0KCksCi0gICAgICAg
ICAgICAmZGl2VGFnLmdldCgpLAotICAgICAgICAgICAgJmRsVGFnLmdldCgpLAotICAgICAgICAg
ICAgJmR0VGFnLmdldCgpLAotICAgICAgICAgICAgJmZpZWxkc2V0VGFnLmdldCgpLAotICAgICAg
ICAgICAgJmZpZ2NhcHRpb25UYWcuZ2V0KCksCi0gICAgICAgICAgICAmZmlndXJlVGFnLmdldCgp
LAotICAgICAgICAgICAgJmZvb3RlclRhZy5nZXQoKSwKLSAgICAgICAgICAgICZmb3JtVGFnLmdl
dCgpLAotICAgICAgICAgICAgJmgxVGFnLmdldCgpLAotICAgICAgICAgICAgJmgyVGFnLmdldCgp
LAotICAgICAgICAgICAgJmgzVGFnLmdldCgpLAotICAgICAgICAgICAgJmg0VGFnLmdldCgpLAot
ICAgICAgICAgICAgJmg1VGFnLmdldCgpLAotICAgICAgICAgICAgJmg2VGFnLmdldCgpLAotICAg
ICAgICAgICAgJmhlYWRlclRhZy5nZXQoKSwKLSAgICAgICAgICAgICZoZ3JvdXBUYWcuZ2V0KCks
Ci0gICAgICAgICAgICAmaHJUYWcuZ2V0KCksCi0gICAgICAgICAgICAmbGlUYWcuZ2V0KCksCi0g
ICAgICAgICAgICAmbGlzdGluZ1RhZy5nZXQoKSwKLSAgICAgICAgICAgICZtYWluVGFnLmdldCgp
LCAvLyBNaXNzaW5nIGluIHRoZSBzcGVjaWZpY2F0aW9uLgotICAgICAgICAgICAgJm1lbnVUYWcu
Z2V0KCksCi0gICAgICAgICAgICAmbmF2VGFnLmdldCgpLAotICAgICAgICAgICAgJm9sVGFnLmdl
dCgpLAotICAgICAgICAgICAgJnBUYWcuZ2V0KCksCi0gICAgICAgICAgICAmcGxhaW50ZXh0VGFn
LmdldCgpLAotICAgICAgICAgICAgJnByZVRhZy5nZXQoKSwKLSAgICAgICAgICAgICZzZWN0aW9u
VGFnLmdldCgpLAotICAgICAgICAgICAgJnN1bW1hcnlUYWcuZ2V0KCksCi0gICAgICAgICAgICAm
dGFibGVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdGJvZHlUYWcuZ2V0KCksCi0gICAgICAgICAg
ICAmdGRUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdGZvb3RUYWcuZ2V0KCksCi0gICAgICAgICAg
ICAmdGhUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdGhlYWRUYWcuZ2V0KCksCi0gICAgICAgICAg
ICAmdHJUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdWxUYWcuZ2V0KCksCi0gICAgICAgICAgICAm
eG1wVGFnLmdldCgpLAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBsb2NhbE5hbWVzID0gW10g
eworICAgICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcvcmF3LWZpbGUvNTdh
YmU2ZDNjYjYwL2VkaXRpbmcuaHRtbCNwcm9oaWJpdGVkLXBhcmFncmFwaC1jaGlsZAorICAgICAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgdGFncyB7CisgICAgICAgICAgICAmYWRkcmVz
c1RhZywKKyAgICAgICAgICAgICZhcnRpY2xlVGFnLAorICAgICAgICAgICAgJmFzaWRlVGFnLAor
ICAgICAgICAgICAgJmJsb2NrcXVvdGVUYWcsCisgICAgICAgICAgICAmY2FwdGlvblRhZywKKyAg
ICAgICAgICAgICZjZW50ZXJUYWcsCisgICAgICAgICAgICAmY29sVGFnLAorICAgICAgICAgICAg
JmNvbGdyb3VwVGFnLAorICAgICAgICAgICAgJmRkVGFnLAorICAgICAgICAgICAgJmRldGFpbHNU
YWcsCisgICAgICAgICAgICAmZGlyVGFnLAorICAgICAgICAgICAgJmRpdlRhZywKKyAgICAgICAg
ICAgICZkbFRhZywKKyAgICAgICAgICAgICZkdFRhZywKKyAgICAgICAgICAgICZmaWVsZHNldFRh
ZywKKyAgICAgICAgICAgICZmaWdjYXB0aW9uVGFnLAorICAgICAgICAgICAgJmZpZ3VyZVRhZywK
KyAgICAgICAgICAgICZmb290ZXJUYWcsCisgICAgICAgICAgICAmZm9ybVRhZywKKyAgICAgICAg
ICAgICZoMVRhZywKKyAgICAgICAgICAgICZoMlRhZywKKyAgICAgICAgICAgICZoM1RhZywKKyAg
ICAgICAgICAgICZoNFRhZywKKyAgICAgICAgICAgICZoNVRhZywKKyAgICAgICAgICAgICZoNlRh
ZywKKyAgICAgICAgICAgICZoZWFkZXJUYWcsCisgICAgICAgICAgICAmaGdyb3VwVGFnLAorICAg
ICAgICAgICAgJmhyVGFnLAorICAgICAgICAgICAgJmxpVGFnLAorICAgICAgICAgICAgJmxpc3Rp
bmdUYWcsCisgICAgICAgICAgICAmbWFpblRhZywgLy8gTWlzc2luZyBpbiB0aGUgc3BlY2lmaWNh
dGlvbi4KKyAgICAgICAgICAgICZtZW51VGFnLAorICAgICAgICAgICAgJm5hdlRhZywKKyAgICAg
ICAgICAgICZvbFRhZywKKyAgICAgICAgICAgICZwVGFnLAorICAgICAgICAgICAgJnBsYWludGV4
dFRhZywKKyAgICAgICAgICAgICZwcmVUYWcsCisgICAgICAgICAgICAmc2VjdGlvblRhZywKKyAg
ICAgICAgICAgICZzdW1tYXJ5VGFnLAorICAgICAgICAgICAgJnRhYmxlVGFnLAorICAgICAgICAg
ICAgJnRib2R5VGFnLAorICAgICAgICAgICAgJnRkVGFnLAorICAgICAgICAgICAgJnRmb290VGFn
LAorICAgICAgICAgICAgJnRoVGFnLAorICAgICAgICAgICAgJnRoZWFkVGFnLAorICAgICAgICAg
ICAgJnRyVGFnLAorICAgICAgICAgICAgJnVsVGFnLAorICAgICAgICAgICAgJnhtcFRhZywKICAg
ICAgICAgfTsKICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0
PEF0b21TdHJpbmc+IHNldDsKICAgICAgICAgZm9yIChhdXRvJiB0YWcgOiB0YWdzKQotICAgICAg
ICAgICAgc2V0LmFkZCh0YWctPmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAgIHNldC5hZGQodGFn
LT5nZXQoKS5sb2NhbE5hbWUoKSk7CiAgICAgICAgIHJldHVybiBzZXQ7Ci0gICAgfSgpKTsKKyAg
ICB9KCk7CiAgICAgcmV0dXJuIGxvY2FsTmFtZXMuZ2V0KCkuY29udGFpbnMobmFtZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCAw
NzgyNDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3Li5kZjI0ZGEyYzgxNWViMzEz
MDYwYzc4YTRjMTJiZTI3ODIzYzk4MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC00MTYsMTIgKzQxNiwxMiBAQCBBdHRyaWJ1dGVkU3Ry
aW5nIEhUTUxDb252ZXJ0ZXI6OmNvbnZlcnQoKQogLy8gUmV0dXJucyB0aGUgZm9udCB0byBiZSB1
c2VkIGlmIHRoZSBOU0ZvbnRBdHRyaWJ1dGVOYW1lIGRvZXNuJ3QgZXhpc3QKIHN0YXRpYyBOU0Zv
bnQgKldlYkRlZmF1bHRGb250KCkKIHsKLSAgICBzdGF0aWMgYXV0byBkZWZhdWx0Rm9udCA9IG1h
a2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGRlZmF1bHRG
b250ID0gW10gewogICAgICAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRoTmFtZTpA
IkhlbHZldGljYSIgc2l6ZToxMl07CiAgICAgICAgIGlmICghZm9udCkKICAgICAgICAgICAgIGZv
bnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6MTJdOwotICAgICAgICByZXR1cm4gcmV0YWlu
UHRyKGZvbnQpOwotICAgIH0oKSk7CisgICAgICAgIHJldHVybiBSZXRhaW5QdHIgeyBmb250IH07
CisgICAgfSgpOwogICAgIHJldHVybiBkZWZhdWx0Rm9udC5nZXQoKS5nZXQoKTsKIH0KICNlbmRp
ZgpAQCAtNTE4LDEzICs1MTgsMTMgQEAgc3RhdGljIFBsYXRmb3JtRm9udCAqX2ZvbnRGb3JOYW1l
QW5kU2l6ZShOU1N0cmluZyAqZm9udE5hbWUsIENHRmxvYXQgc2l6ZSwgTlNNdXQKIAogc3RhdGlj
IE5TUGFyYWdyYXBoU3R5bGUgKmRlZmF1bHRQYXJhZ3JhcGhTdHlsZSgpCiB7Ci0gICAgc3RhdGlj
IGF1dG8gZGVmYXVsdFBhcmFncmFwaFN0eWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAg
ICAgICAgYXV0byBkZWZhdWx0UGFyYWdyYXBoU3R5bGUgPSBhZG9wdE5TKFtbUGxhdGZvcm1OU1Bh
cmFncmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0gbXV0YWJsZUNvcHldKTsKLSAgICAg
ICAgW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSBzZXREZWZhdWx0VGFiSW50ZXJ2YWw6MzZdOwotICAg
ICAgICBbZGVmYXVsdFBhcmFncmFwaFN0eWxlIHNldFRhYlN0b3BzOkBbXV07Ci0gICAgICAgIHJl
dHVybiBkZWZhdWx0UGFyYWdyYXBoU3R5bGU7Ci0gICAgfSgpKTsKLSAgICByZXR1cm4gZGVmYXVs
dFBhcmFncmFwaFN0eWxlLmdldCgpLmdldCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBz
dHlsZSA9IFtdIHsKKyAgICAgICAgYXV0byBzdHlsZSA9IGFkb3B0TlMoW1tQbGF0Zm9ybU5TUGFy
YWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0eWxlXSBtdXRhYmxlQ29weV0pOworICAgICAg
ICBbc3R5bGUgc2V0RGVmYXVsdFRhYkludGVydmFsOjM2XTsKKyAgICAgICAgW3N0eWxlIHNldFRh
YlN0b3BzOkBbXV07CisgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICB9KCk7CisgICAgcmV0dXJu
IHN0eWxlLmdldCgpLmdldCgpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWU+IEhUTUxDb252ZXJ0ZXJD
YWNoZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9BdXRvZmlsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAppbmRleCAw
ZTczZDI5YTIzNTIzNjllMWQ5NTlmZjllY2NlOTU3ODRlZjkyNjVkLi5jMDNlMDNmNjIwNGU2MmRl
NTU3NTI2ZTUxMGE2MzZkNzE5YTk5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0F1dG9maWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcApAQCAt
NTIsMTQgKzUyLDE0IEBAIHN0cnVjdCBBdXRvZmlsbEluZm8gewogCiBzdGF0aWMgY29uc3QgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsIEF1dG9maWxs
SW5mbz4mIGZpZWxkTmFtZU1hcCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gbWFwID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gW10g
ewogICAgICAgICBzdHJ1Y3QgTWFwRW50cnkgewogICAgICAgICAgICAgQVNDSUlMaXRlcmFsIG5h
bWU7CiAgICAgICAgICAgICBBdXRvZmlsbEluZm8gdmFsdWU7CiAgICAgICAgIH07Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7CisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgTWFwRW50cnkgZW50cmllc1tdID0gewogICAgICAgICAgICAgeyAib2ZmIl9zLCB7IEF1
dG9maWxsRmllbGROYW1lOjpOb25lLCBBdXRvZmlsbENhdGVnb3J5OjpPZmYgfSB9LAotICAgICAg
ICAgICAgeyAib24iX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6Ok5vbmUsICBBdXRvZmlsbENhdGVn
b3J5OjpBdXRvbWF0aWMgfSB9LAorICAgICAgICAgICAgeyAib24iX3MsIHsgQXV0b2ZpbGxGaWVs
ZE5hbWU6Ok5vbmUsIEF1dG9maWxsQ2F0ZWdvcnk6OkF1dG9tYXRpYyB9IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpOYW1lLCBBdXRvZmlsbENhdGVnb3J5
OjpOb3JtYWwgfSB9LAogICAgICAgICAgICAgeyAiaG9ub3JpZmljLXByZWZpeCJfcywgeyBBdXRv
ZmlsbEZpZWxkTmFtZTo6SG9ub3JpZmljUHJlZml4LCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwg
fSB9LAogICAgICAgICAgICAgeyAiZ2l2ZW4tbmFtZSJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6
R2l2ZW5OYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LApAQCAtMTE5LDcgKzExOSw3
IEBAIHN0YXRpYyBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8
QXRvbVN0cmluZywgQXV0b2ZpbGxJbmZvPiYKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVu
dHJpZXMpCiAgICAgICAgICAgICBtYXAuYWRkKGVudHJ5Lm5hbWUsIGVudHJ5LnZhbHVlKTsKICAg
ICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1cm4gbWFwOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggMTNjYjA2NzMxOWM4NDhk
NjI5NTEyYTkwODI2NDY5OGFlNzdkZjM1Ny4uNzE2NmQxZDM3N2ZhYjY3YTA5ZGEwMDljNjFlYjEx
YmE1MTgxMWJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMTc2LDY0
ICsxNzYsNjMgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnJlbW92ZVdpbmRvd05hbWVkSXRlbShjb25z
dCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYgaXQKIAogYm9vbCBIVE1MRG9jdW1lbnQ6
OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZVNl
dCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHNl
dCA9IFtdIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIGluIEhU
TUwgNC4wMSB3aXRoIHZhbHVlcyBtYXJrZWQgYXMgIltDSV0iIG9yIGNhc2UtaW5zZW5zaXRpdmUK
ICAgICAgICAgLy8gTW96aWxsYSB0cmVhdHMgYWxsIG90aGVyIHZhbHVlcyBhcyBjYXNlLXNlbnNp
dGl2ZSwgdGh1cyBzbyBkbyB3ZS4KLSAgICAgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUq
IGNvbnN0IG5hbWVzW10gPSB7Ci0gICAgICAgICAgICAmYWNjZXB0X2NoYXJzZXRBdHRyLmdldCgp
LAotICAgICAgICAgICAgJmFjY2VwdEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmYWxpZ25BdHRy
LmdldCgpLAotICAgICAgICAgICAgJmFsaW5rQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZheGlz
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZiZ2NvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAgICAg
ICZjaGFyc2V0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZjaGVja2VkQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZjbGVhckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmY29kZXR5cGVBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJmNvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZjb21wYWN0
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZkZWNsYXJlQXR0ci5nZXQoKSwKLSAgICAgICAgICAg
ICZkZWZlckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZGlyQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZkaXNhYmxlZEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZW5jdHlwZUF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmZmFjZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZnJhbWVBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJmhyZWZsYW5nQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZodHRw
X2VxdWl2QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZsYW5nQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZsYW5ndWFnZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmbGlua0F0dHIuZ2V0KCksCi0g
ICAgICAgICAgICAmbWVkaWFBdHRyLmdldCgpLAotICAgICAgICAgICAgJm1ldGhvZEF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmbXVsdGlwbGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJm5vaHJl
ZkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmbm9yZXNpemVBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJm5vc2hhZGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJm5vd3JhcEF0dHIuZ2V0KCksCi0g
ICAgICAgICAgICAmcmVhZG9ubHlBdHRyLmdldCgpLAotICAgICAgICAgICAgJnJlbEF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmcmV2QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZydWxlc0F0dHIu
Z2V0KCksCi0gICAgICAgICAgICAmc2NvcGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJnNjcm9s
bGluZ0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmc2VsZWN0ZWRBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJnNoYXBlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZ0YXJnZXRBdHRyLmdldCgpLAot
ICAgICAgICAgICAgJnRleHRBdHRyLmdldCgpLAotICAgICAgICAgICAgJnR5cGVBdHRyLmdldCgp
LAotICAgICAgICAgICAgJnZhbGlnbkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmdmFsdWV0eXBl
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZ2bGlua0F0dHIuZ2V0KCksCisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgc3RkOjphcnJheSBuYW1lcyB7CisgICAgICAgICAgICAmYWNjZXB0X2NoYXJz
ZXRBdHRyLAorICAgICAgICAgICAgJmFjY2VwdEF0dHIsCisgICAgICAgICAgICAmYWxpZ25BdHRy
LAorICAgICAgICAgICAgJmFsaW5rQXR0ciwKKyAgICAgICAgICAgICZheGlzQXR0ciwKKyAgICAg
ICAgICAgICZiZ2NvbG9yQXR0ciwKKyAgICAgICAgICAgICZjaGFyc2V0QXR0ciwKKyAgICAgICAg
ICAgICZjaGVja2VkQXR0ciwKKyAgICAgICAgICAgICZjbGVhckF0dHIsCisgICAgICAgICAgICAm
Y29kZXR5cGVBdHRyLAorICAgICAgICAgICAgJmNvbG9yQXR0ciwKKyAgICAgICAgICAgICZjb21w
YWN0QXR0ciwKKyAgICAgICAgICAgICZkZWNsYXJlQXR0ciwKKyAgICAgICAgICAgICZkZWZlckF0
dHIsCisgICAgICAgICAgICAmZGlyQXR0ciwKKyAgICAgICAgICAgICZkaXNhYmxlZEF0dHIsCisg
ICAgICAgICAgICAmZW5jdHlwZUF0dHIsCisgICAgICAgICAgICAmZmFjZUF0dHIsCisgICAgICAg
ICAgICAmZnJhbWVBdHRyLAorICAgICAgICAgICAgJmhyZWZsYW5nQXR0ciwKKyAgICAgICAgICAg
ICZodHRwX2VxdWl2QXR0ciwKKyAgICAgICAgICAgICZsYW5nQXR0ciwKKyAgICAgICAgICAgICZs
YW5ndWFnZUF0dHIsCisgICAgICAgICAgICAmbGlua0F0dHIsCisgICAgICAgICAgICAmbWVkaWFB
dHRyLAorICAgICAgICAgICAgJm1ldGhvZEF0dHIsCisgICAgICAgICAgICAmbXVsdGlwbGVBdHRy
LAorICAgICAgICAgICAgJm5vaHJlZkF0dHIsCisgICAgICAgICAgICAmbm9yZXNpemVBdHRyLAor
ICAgICAgICAgICAgJm5vc2hhZGVBdHRyLAorICAgICAgICAgICAgJm5vd3JhcEF0dHIsCisgICAg
ICAgICAgICAmcmVhZG9ubHlBdHRyLAorICAgICAgICAgICAgJnJlbEF0dHIsCisgICAgICAgICAg
ICAmcmV2QXR0ciwKKyAgICAgICAgICAgICZydWxlc0F0dHIsCisgICAgICAgICAgICAmc2NvcGVB
dHRyLAorICAgICAgICAgICAgJnNjcm9sbGluZ0F0dHIsCisgICAgICAgICAgICAmc2VsZWN0ZWRB
dHRyLAorICAgICAgICAgICAgJnNoYXBlQXR0ciwKKyAgICAgICAgICAgICZ0YXJnZXRBdHRyLAor
ICAgICAgICAgICAgJnRleHRBdHRyLAorICAgICAgICAgICAgJnR5cGVBdHRyLAorICAgICAgICAg
ICAgJnZhbGlnbkF0dHIsCisgICAgICAgICAgICAmdmFsdWV0eXBlQXR0ciwKKyAgICAgICAgICAg
ICZ2bGlua0F0dHIsCiAgICAgICAgIH07CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPiBzZXQ7CiAgICAgICAgIGZvciAoYXV0byogbmFt
ZSA6IG5hbWVzKQotICAgICAgICAgICAgc2V0LmFkZChuYW1lLT5sb2NhbE5hbWUoKSk7CisgICAg
ICAgICAgICBzZXQuYWRkKG5hbWUtPmdldCgpLmxvY2FsTmFtZSgpKTsKICAgICAgICAgcmV0dXJu
IHNldDsKLSAgICB9KCkpOwotCisgICAgfSgpOwogICAgIGJvb2wgaXNQb3NzaWJsZUhUTUxBdHRy
ID0gIWF0dHJpYnV0ZU5hbWUuaGFzUHJlZml4KCkgJiYgYXR0cmlidXRlTmFtZS5uYW1lc3BhY2VV
UkkoKS5pc051bGwoKTsKLSAgICByZXR1cm4gIWlzUG9zc2libGVIVE1MQXR0ciB8fCAhY2FzZUlu
c2Vuc2l0aXZlQXR0cmlidXRlU2V0LmdldCgpLmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUubG9jYWxO
YW1lKCkpOworICAgIHJldHVybiAhaXNQb3NzaWJsZUhUTUxBdHRyIHx8ICFzZXQuZ2V0KCkuY29u
dGFpbnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CiB9CiAKIGJvb2wgSFRNTERvY3VtZW50
Ojppc0ZyYW1lU2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXgg
Y2Y2N2RjNTQzNDQzZjE0ZDliNTczOTNmNGUzZjY5NTY4MDJhODNlZS4uMmFkZmY4ZmU4NWQ5MzY3
ODAyOTVjMjM5NWNlMzUxOWUzODE4NDQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKQEAgLTI2OSw3ICsyNjksNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBIVE1MRWxlbWVudDo6ZXZl
bnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZAogICAgICAgICAg
ICAgbWFwLmFkZChhdHRyaWJ1dGVOYW1lLmltcGwoKSwgZXZlbnROYW1lKTsKICAgICAgICAgfSk7
CiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugc3BlY2lhbCBjYXNlcy4gVGhlc2UgYXJl
IG5vdCBpbiBJREwgd2l0aCBbRXZlbnRIYW5kbGVyXSBidXQgd2VyZSBoaXN0b3JpY2FsbHkgaW4g
dGhpcyBtYXAuCi0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+KiB0YWJsZVtdID0geworICAgICAgICBzdGF0aWMgY29u
c3RleHByIHN0ZDo6YXJyYXkgdGFibGUgewogICAgICAgICAgICAgJm9uYXV0b2NvbXBsZXRlQXR0
ciwKICAgICAgICAgICAgICZvbmF1dG9jb21wbGV0ZWVycm9yQXR0ciwKICAgICAgICAgICAgICZv
bmJlZm9yZWxvYWRBdHRyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNw
cAppbmRleCBlYzZhZjY2ZGE0MzNmYTFlYzAzNDgxMGZkMjk1MzA4YzA0ZmQ5MGQxLi4wMDM0YjIz
MmIxZWJkYjNlNDJmNDU5NmEzZDMyMWYyMDczZjU1MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OnJlbmRlckZhbGxiYWNrQ29udGVudCgpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBw
cmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBFbGVtZW50JiBjaGlsZCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgYXV0byBtb3N0S25vd25UYWdzID0gbWFrZU5ldmVyRGVzdHJveWVk
KFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbW9zdEtub3duVGFncyA9IFtdIHsKICAg
ICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFF1YWxpZmllZE5h
bWU+IHNldDsKICAgICAgICAgYXV0byogdGFncyA9IEhUTUxOYW1lczo6Z2V0SFRNTFRhZ3MoKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBIVE1MTmFtZXM6OkhUTUxUYWdzQ291bnQ7
IGkrKykgewpAQCAtMzc3LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwcmV2ZW50c1Bh
cmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBFbGVtZW50JiBjaGlsZCkKICAgICAgICAgICAg
IHNldC5hZGQodGFnKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc2V0OwotICAgIH0oKSk7
CisgICAgfSgpOwogICAgIHJldHVybiBtb3N0S25vd25UYWdzLmdldCgpLmNvbnRhaW5zKGNoaWxk
LnRhZ1FOYW1lKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggZTNiMGQ5
OWQwMGE0NTA2N2M1MjY2NGNkMjhmZTdmYzA0MTJhZGZiNS4uYjY1NjliYWQzNzhlMDBjNDI1MDI1
M2VkNzMwNWJjMThjYTA1ZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMTQ5
LDcgKzE0OSw3IEBAIHN0YXRpYyBJbnB1dFR5cGVGYWN0b3J5TWFwIGNyZWF0ZUlucHV0VHlwZUZh
Y3RvcnlNYXAoKQogUmVmPElucHV0VHlwZT4gSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZU5hbWUpCiB7CiAgICAgaWYgKCF0
eXBlTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGF1dG8gZmFjdG9yeU1h
cCA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKCkpOworICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZmFjdG9yeU1hcCA9IGNyZWF0ZUlucHV0VHlwZUZh
Y3RvcnlNYXAoKTsKICAgICAgICAgYXV0byYmIFtjb25kaXRpb25hbCwgZmFjdG9yeV0gPSBmYWN0
b3J5TWFwLmdldCgpLmdldCh0eXBlTmFtZSk7CiAgICAgICAgIGlmIChmYWN0b3J5ICYmICghY29u
ZGl0aW9uYWwgfHwgc3RkOjppbnZva2UoY29uZGl0aW9uYWwsIGVsZW1lbnQuZG9jdW1lbnQoKS5z
ZXR0aW5ncygpKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFjdG9yeShlbGVtZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA2YWU1MjY1OTdjZDI4NjMxYmU3
OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2Li40MzMyZDY5MWJiZjgyNmE3Yzg3ZWE4M2EzMTdlOTYxMTVh
MjA0OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzgs
MTAgKzIzOCwxMCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gYmxvY2tlZFBhZ2VVUkwgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10gKCkgLT4gVVJMIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYmxvY2tl
ZFBhZ2VVUkwgPSBbXSAoKSAtPiBVUkwgewogICAgICAgICBhdXRvIHdlYkNvcmVCdW5kbGUgPSBD
RkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2ViQ29yZSIp
KTsKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwod2ViQ29y
ZUJ1bmRsZSwgQ0ZTVFIoIkNvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZSIpLCBDRlNUUigiaHRtbCIp
LCBudWxscHRyKSkuZ2V0KCk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIGJsb2Nr
ZWRQYWdlVVJMOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFn
ZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
CmluZGV4IGI1OTY1ZjU2YTQ5YTk1ZTAyYzhmMDc5NWRlY2NlOGZhZjExYmE2YWMuLmM2NDA4OTgz
NTQ0ODZmM2Q5ZDZlNjdkYzY4MTg5YmUwYjMxNDFkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RGVidWdQYWdlT3ZlcmxheXMuY3BwCkBAIC0xNTIsMTggKzE1MiwxNiBAQCBib29sIE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIAogc3RhdGljIGNvbnN0IE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFNSR0JBPHVpbnQ4
X3Q+PiYgdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8g
cmVnaW9uQ29sb3JzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgcmV0dXJuIE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFNSR0JBPHVpbnQ4
X3Q+PiB7IHsKLSAgICAgICAgICAgIHsgInRvdWNoc3RhcnQiX3MsIHsgMTkxLCAxOTEsIDYzLCA1
MCB9IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaG1vdmUiX3MsIHsgODAsIDIwNCwgMjQ1LCA1MCB9
IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGVuZCJfcywgeyAxOTEsIDYzLCAxMjcsIDUwIH0gfSwK
LSAgICAgICAgICAgIHsgInRvdWNoZm9yY2VjaGFuZ2UiX3MsIHsgNjMsIDYzLCAxOTEsIDUwIH0g
fSwKLSAgICAgICAgICAgIHsgIndoZWVsIl9zLCB7IDI1NSwgMTI4LCAwLCA1MCB9IH0sCi0gICAg
ICAgICAgICB7ICJtb3VzZWRvd24iX3MsIHsgODAsIDI0NSwgODAsIDUwIH0gfSwKLSAgICAgICAg
ICAgIHsgIm1vdXNlbW92ZSJfcywgeyAyNDUsIDI0NSwgODAsIDUwIH0gfSwKLSAgICAgICAgICAg
IHsgIm1vdXNldXAiX3MsIHsgODAsIDI0NSwgMTc2LCA1MCB9IH0KLSAgICAgICAgfSB9OwotICAg
IH0oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHJlZ2lvbkNvbG9ycyB7IE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFNSR0JBPHVpbnQ4X3Q+PiB7
IHsKKyAgICAgICAgeyAidG91Y2hzdGFydCJfcywgeyAxOTEsIDE5MSwgNjMsIDUwIH0gfSwKKyAg
ICAgICAgeyAidG91Y2htb3ZlIl9zLCB7IDgwLCAyMDQsIDI0NSwgNTAgfSB9LAorICAgICAgICB7
ICJ0b3VjaGVuZCJfcywgeyAxOTEsIDYzLCAxMjcsIDUwIH0gfSwKKyAgICAgICAgeyAidG91Y2hm
b3JjZWNoYW5nZSJfcywgeyA2MywgNjMsIDE5MSwgNTAgfSB9LAorICAgICAgICB7ICJ3aGVlbCJf
cywgeyAyNTUsIDEyOCwgMCwgNTAgfSB9LAorICAgICAgICB7ICJtb3VzZWRvd24iX3MsIHsgODAs
IDI0NSwgODAsIDUwIH0gfSwKKyAgICAgICAgeyAibW91c2Vtb3ZlIl9zLCB7IDI0NSwgMjQ1LCA4
MCwgNTAgfSB9LAorICAgICAgICB7ICJtb3VzZXVwIl9zLCB7IDgwLCAyNDUsIDE3NiwgNTAgfSB9
LAorICAgIH0gfSB9OwogICAgIHJldHVybiByZWdpb25Db2xvcnM7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAppbmRleCBjNmFmMGQ5ODIwMWYx
NmM2NDVkZWI2N2Y5MTI0OGI1MDk2YmFkMDk3Li5kZTM3ZmMyMDU5MTRmMTNiMjM2ZDBmM2E5OTg3
YmFjYTJlZWMzM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
VXNlclRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJU
aW1pbmcuY3BwCkBAIC00Myw4ICs0Myw3IEBAIHVzaW5nIE5hdmlnYXRpb25UaW1pbmdGdW5jdGlv
biA9IHVuc2lnbmVkIGxvbmcgbG9uZyAoUGVyZm9ybWFuY2VUaW1pbmc6OiopKCkgY29uCiBzdGF0
aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywg
TmF2aWdhdGlvblRpbWluZ0Z1bmN0aW9uPiYgcmVzdHJpY3RlZE1hcmtOYW1lc1RvTmF2aWdhdGlv
blRpbWluZ0Z1bmN0aW9uTWFwKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0g
ICAgc3RhdGljIGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkPE1lbW9yeUNvbXBhY3RMb29r
dXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIE5hdmlnYXRpb25UaW1pbmdGdW5jdGlvbj4+
KHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gTWVtb3J5Q29tcGFjdExvb2t1cE9u
bHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgTmF2aWdhdGlvblRpbWluZ0Z1bmN0aW9uPiB7CiAg
ICAgICAgIHsgImNvbm5lY3RFbmQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVjdEVuZCB9
LAogICAgICAgICB7ICJjb25uZWN0U3RhcnQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6Y29ubmVj
dFN0YXJ0IH0sCiAgICAgICAgIHsgImRvbUNvbXBsZXRlIl9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6
OmRvbUNvbXBsZXRlIH0sCkBAIC02Niw4ICs2NSw3IEBAIHN0YXRpYyBjb25zdCBNZW1vcnlDb21w
YWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBOYXZpZ2F0aW9uVGltaW5nRnVu
CiAgICAgICAgIHsgInNlY3VyZUNvbm5lY3Rpb25TdGFydCJfcywgJlBlcmZvcm1hbmNlVGltaW5n
OjpzZWN1cmVDb25uZWN0aW9uU3RhcnQgfSwKICAgICAgICAgeyAidW5sb2FkRXZlbnRFbmQiX3Ms
ICZQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRFbmQgfSwKICAgICAgICAgeyAidW5sb2Fk
RXZlbnRTdGFydCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudFN0YXJ0IH0sCi0g
ICAgfSk7Ci0gICAgCisgICAgfTsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggZDE1NjE3ODU2
NDI5MTMwOWZmYTY5YjQ4YWZiMjM0OGUxYTZhMDk3Mi4uNDAyODUzYzQ4OTUyMzJmZjUzZGYyYzIz
ODczMjAyOTllNWZjM2RkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVn
YWN5U2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtNDQsMjEgKzQ0LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIEZJWE1FOiBVUkxTY2hlbWVzTWFwIGlzIGEgcGVjdWxpYXIgdHlwZSBuYW1lIGdpdmVu
IHRoYXQgaXQgaXMgYSBzZXQuCiAKIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBidWlsdGlu
TG9jYWxVUkxTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5T
ZWN1cmVTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hl
bWVzV2l0aFVuaXF1ZU9yaWdpbnMoKTsKLXN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVp
bHRpbkVtcHR5RG9jdW1lbnRTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKTsKLXN0YXRpYyBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcygpOworc3RhdGljIFNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2VjdXJlU2NoZW1lcygpOworc3RhdGljIFNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCk7
CitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5FbXB0eURvY3VtZW50U2No
ZW1lcygpOworc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluQ2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCk7CitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVy
YWw+IGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKTsKIAotdXNpbmcgU3RyaW5nVmVjdG9yRnVu
Y3Rpb24gPSBjb25zdCBWZWN0b3I8U3RyaW5nPiYgKCopKCk7Cit1c2luZyBBU0NJSUxpdGVyYWxT
cGFuRnVuY3Rpb24gPSBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gKCopKCk7CiAKLXN0YXRpYyB2
b2lkIGFkZChVUkxTY2hlbWVzTWFwJiBzZXQsIFN0cmluZ1ZlY3RvckZ1bmN0aW9uIGZ1bmN0aW9u
KQorc3RhdGljIHZvaWQgYWRkKFVSTFNjaGVtZXNNYXAmIHNldCwgQVNDSUlMaXRlcmFsU3BhbkZ1
bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIGZvciAoYXV0byYgc2NoZW1lIDogZnVuY3Rpb24oKSkK
ICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwogfQogCi1zdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJM
U2NoZW1lc01hcD4gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiAoKmZ1bmN0aW9uKSgpKQorc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChBU0NJSUxpdGVyYWxTcGFuRnVuY3Rpb24gZnVu
Y3Rpb24pCiB7CiAgICAgVVJMU2NoZW1lc01hcCBzZXQ7CiAgICAgYWRkKHNldCwgZnVuY3Rpb24p
OwpAQCAtNjksOCArNjksOCBAQCBzdGF0aWMgTG9jayBzY2hlbWVSZWdpc3RyeUxvY2s7CiAKIHN0
YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBhbGxCdWlsdGluU2NoZW1lcygpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBTdHJpbmdWZWN0b3JGdW5jdGlvbiBmdW5jdGlvbnNbXSB7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIHNjaGVtZXMgPSBbXSB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uIGZ1bmN0aW9uc1tdIHsKICAgICAgICAgICAgIGJ1
aWx0aW5TZWN1cmVTY2hlbWVzLAogICAgICAgICAgICAgYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVl
T3JpZ2lucywKICAgICAgICAgICAgIGJ1aWx0aW5FbXB0eURvY3VtZW50U2NoZW1lcywKQEAgLTk3
LDI2ICs5NywyNSBAQCBzdGF0aWMgY29uc3QgVVJMU2NoZW1lc01hcCYgYWxsQnVpbHRpblNjaGVt
ZXMoKQogICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lzdHJ5TG9jayB9Owog
ICAgICAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkp
CiAgICAgICAgICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwotCi0gICAgICAgICAgICBmb3IgKGF1
dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25zKQotICAgICAgICAgICAgICAgIGFkZChzZXQsIGZ1bmN0
aW9uKTsKICAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25z
KQorICAgICAgICAgICAgYWRkKHNldCwgZnVuY3Rpb24pOwogICAgICAgICBmb3IgKGF1dG8mIHNj
aGVtZSA6IG90aGVyU2NoZW1lcykKICAgICAgICAgICAgIHNldC5hZGQoc2NoZW1lKTsKICAgICAg
ICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1cm4gc2NoZW1lczsK
IH0KIAogc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMo
KSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAgICAgQVNTRVJUKHNj
aGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1l
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChVUkxTY2hlbWVzTWFwIHsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQgc2NoZW1lcyA9IFVSTFNjaGVtZXNNYXAgewogICAgICAgICAiZmlsZSJfcywKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgImFwcGxld2ViZGF0YSJfcywKICNlbmRpZgotICAg
IH0pOworICAgIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAgLTEzNCwxMCArMTMzLDkg
QEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNjaGVtZXMoKSBXVEZf
UkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3QKICAgICByZXR1cm4gZGlzcGxheUlzb2xhdGVkU2No
ZW1lczsKIH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkg
V1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQorc3RhdGljIFNwYW48Y29uc3Qg
QVNDSUlMaXRlcmFsPiBidWlsdGluU2VjdXJlU2NoZW1lcygpCiB7Ci0gICAgQVNTRVJUKHNjaGVt
ZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9
IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OmFycmF5IHNjaGVtZXMgewogICAgICAgICAiaHR0cHMiX3MsCiAgICAgICAgICJhYm91
dCJfcywKICAgICAgICAgImRhdGEiX3MsCkBAIC0xNDUsNyArMTQzLDcgQEAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1l
UmVnaXN0cnlMb2MKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICAgICAg
InJlc291cmNlIl9zLAogI2VuZGlmCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc2NoZW1l
czsKIH0KIApAQCAtMTU2LDE2ICsxNTQsMTUgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNlY3Vy
ZVNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiAgICAgcmV0
dXJuIHNlY3VyZVNjaGVtZXM7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVp
bHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJl
Z2lzdHJ5TG9jaykKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucygpCiB7Ci0gICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5p
c0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNj
aGVtZXMgewogICAgICAgICAiYWJvdXQiX3MsCiAgICAgICAgICJqYXZhc2NyaXB0Il9zLAogICAg
ICAgICAvLyBUaGlzIGlzIGFuIGludGVudGlvbmFsIGRpZmZlcmVuY2UgZnJvbSB0aGUgYmVoYXZp
b3IgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBjYWxscyBmb3IuCiAgICAgICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKICAgICAgICAgImRhdGEi
X3MsCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIApAQCAtMTc2LDEw
ICsxNzMsOSBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cgogICAgIHJldHVybiBzY2hlbWVzV2l0
aFVuaXF1ZU9yaWdpbnM7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluRW1wdHlE
b2N1bWVudFNjaGVtZXMoKQorc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGlu
RW1wdHlEb2N1bWVudFNjaGVtZXMoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8
U3RyaW5nPiB7ICJhYm91dCJfcyB9KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkg
c2NoZW1lcyB7ICJhYm91dCJfcyB9OwogICAgIHJldHVybiBzY2hlbWVzOwogfQogCkBAIC0xOTcs
MTAgKzE5Myw5IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzRm9yYmlkZGVuRnJvbURv
bWFpblJlbGF4YXRpb24oKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1jb25zdCBWZWN0b3I8
U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpIFdURl9S
RVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJ
TGl0ZXJhbD4gYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1lcygpCiB7Ci0g
ICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0
IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7ICJibG9i
Il9zIH0pOworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBzY2hlbWVzIHsgImJsb2Ii
X3MgfTsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIApAQCAtMjYzLDEwICsyNTgsOSBAQCBzdGF0
aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVC
cm93c2luZygpCiAgICAgcmV0dXJuIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2
YXRlQnJvd3Npbmc7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluQ09SU0VuYWJs
ZWRTY2hlbWVzKCkKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNPUlNF
bmFibGVkU2NoZW1lcygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBzdGF0
aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxTdHJpbmc+
IHsgImh0dHAiX3MsICJodHRwcyJfcyB9KTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJy
YXkgc2NoZW1lcyB7ICJodHRwIl9zLCAiaHR0cHMiX3MgfTsKICAgICByZXR1cm4gc2NoZW1lczsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRl
eCA0OGUyMGNmNDdjOTI4YmNkMGY3ZmVhOTIxMDA0MTc0MTc1ZDQ2ZTNjLi4zMDAzZWUwMzU5MzBm
M2E2YjFkYTY0NTA5MWRkMWMzMjNiMzhlNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMTkzLDggKzE5Myw4IEBAIGNvbnN0ZXhwciBDb21w
YXJhYmxlTGV0dGVyc0xpdGVyYWwgc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlQXJyYXlbXSA9
IHsKIAogSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBl
UmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkKIHsKLSAgICBzdGF0aWMgYXV0
byBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0g
ICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4geworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0eXBlcyA9IFtdIHsKKyAgICAgICAgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gdHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8U3RyaW5nPiB7CiAgICAgICAgICAgICAidGV4dC9odG1sIl9zLAogICAgICAgICAgICAgInRl
eHQveG1sIl9zLAogICAgICAgICAgICAgInRleHQveHNsIl9zLApAQCAtMjE3LDI1ICsyMTcsMjUg
QEAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVn
aXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUkKICAgICAgICAgLy8gVGhpcyBjYW4gcmVzdWx0IGlu
IGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGllcy4KICAgICAgICAgfTsKICAgICAg
ICAgZm9yIChhdXRvJiB0eXBlIDogc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlQXJyYXkpCi0g
ICAgICAgICAgICBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy5hZGQodHlwZS5saXRlcmFsKTsK
KyAgICAgICAgICAgIHR5cGVzLmFkZCh0eXBlLmxpdGVyYWwpOwogI2lmIEVOQUJMRShXRUJfQVJD
SElWRSkgfHwgRU5BQkxFKE1IVE1MKQotICAgICAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJL
bm93bkFyY2hpdmVNSU1FVHlwZXMoc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMpOworICAgICAg
ICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXModHlwZXMpOwog
I2VuZGlmCi0gICAgICAgIHJldHVybiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKLSAgICB9
KCkpOwotICAgIHJldHVybiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsKKyAgICAgICAgcmV0
dXJuIHR5cGVzOworICAgIH0oKTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CiAKIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5Ojpz
dXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc3VwcG9y
dGVkTWVkaWFNSU1FVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBzdXBwb3J0ZWRNZWRpYU1JTUVU
eXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdHlwZXMgPSBbXSB7CisgICAgICAgIEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHR5cGVzOwogI2lmIEVOQUJM
RShWSURFTykKLSAgICAgICAgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVzKHN1cHBvcnRl
ZE1lZGlhTUlNRVR5cGVzKTsKKyAgICAgICAgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5cGVz
KHR5cGVzKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7
Ci0gICAgfSgpKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CisgICAgICAg
IHJldHVybiB0eXBlczsKKyAgICB9KCk7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiBjb25zdGV4
cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHBkZk1JTUVUeXBlQXJyYXlbXSA9IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3Bw
CmluZGV4IDc2NmJjMmIwMGEzOTBmZjhmZjY0Yjc3ZmYwZjFjNWY3YzYxZTk0ZTUuLjE2Nzk5MTFi
NTg3ZjQxMzdiZDdkN2NjODBmYjYyNTM5NTA0Y2M1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcApAQCAtNTgsMjAgKzU4
LDE4IEBAIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkKICAgICByZXR1cm4gKmhh
c0FHWENvbXBpbGVyU2VydmljZTsKIH0KIAotY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGFn
eENvbXBpbGVyU2VydmljZXMoKQorU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGFneENvbXBpbGVy
U2VydmljZXMoKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0YXRpYyBj
b25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVy
YWw+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2VydmljZXMgewogICAgICAg
ICAiY29tLmFwcGxlLkFHWENvbXBpbGVyU2VydmljZSJfcywKICAgICAgICAgImNvbS5hcHBsZS5B
R1hDb21waWxlclNlcnZpY2UtUzJBOCJfcwotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIHNl
cnZpY2VzOwogfQogCi1jb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgYWd4Q29tcGlsZXJDbGFz
c2VzKCkKK1NwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBhZ3hDb21waWxlckNsYXNzZXMoKQogewot
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIGlva2l0
Q2xhc3NlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IGNsYXNzZXMgewogICAgICAgICAiQUdYQ29tbWFu
ZFF1ZXVlIl9zLAogICAgICAgICAiQUdYRGV2aWNlIl9zLAogICAgICAgICAiQUdYU2hhcmVkVXNl
ckNsaWVudCJfcywKQEAgLTgyLDggKzgwLDggQEAgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4m
IGFneENvbXBpbGVyQ2xhc3NlcygpCiAgICAgICAgICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudCJf
cywKICAgICAgICAgIklPQWNjZWxTaGFyZWRVc2VyQ2xpZW50MiJfcywKICAgICAgICAgIklPQWNj
ZWxTdWJtaXR0ZXIyIl9zLAotICAgIH0pOwotICAgIHJldHVybiBpb2tpdENsYXNzZXM7CisgICAg
fTsKKyAgICByZXR1cm4gY2xhc3NlczsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuaAppbmRleCBlNmJkNTdhZGM5MGExZWRh
OGRhNjQxN2MzMDk2OWEyMzRhZjBiMTM3Li42NTZjMWU3YjlmYjgwOTYwZDQ5ZDE4ZmE4OTkwZTJi
NGY5ZDk5ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hD
b21waWxlclNlcnZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hD
b21waWxlclNlcnZpY2UuaApAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCk7CiBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldERldmljZUhhc0FHWENvbXBpbGVyU2VydmljZUZvclRlc3Rpbmco
KTsKLVdFQkNPUkVfRVhQT1JUIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBhZ3hDb21waWxl
clNlcnZpY2VzKCk7Ci1XRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYg
YWd4Q29tcGlsZXJDbGFzc2VzKCk7CitXRUJDT1JFX0VYUE9SVCBTcGFuPGNvbnN0IEFTQ0lJTGl0
ZXJhbD4gYWd4Q29tcGlsZXJTZXJ2aWNlcygpOworV0VCQ09SRV9FWFBPUlQgU3Bhbjxjb25zdCBB
U0NJSUxpdGVyYWw+IGFneENvbXBpbGVyQ2xhc3NlcygpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQppbmRl
eCAwZTJmYmExYmUxMDY3NTRjZjY3OWYwNzY4MzQ5NTBiYWUzZWU0NzlkLi4xYWI2ODQ3ZjhhMzg0
OTdkNDIzYWJmNTQ2ZWE3N2I2ZGEyOTk4NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaFNldDxTdHJpbmc+PiYgZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkKIHsKLSAgICBzdGF0
aWMgYXV0byBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10g
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAgPSBb
XSB7CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJp
bmcsIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+PiBtYXA7
CiAKICAgICAgICAgYXV0byBhZGRFeHRlbnNpb24gPSBbJl0oY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikgewpAQCAtNzMsNyArNzMsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAKICAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCkpOworICAgIH0oKTsKIAogICAgIHJldHVy
biBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCmluZGV4
IGYzMDhhOGQyY2E4ZTk4ZmJjYmZiMDllNzQ0ZDczN2VmZDRiNmE5ZjMuLjQ1NGE0YjZmYmUxNzAy
YzZkZTk2MWUzMGFhZDc3ZTNmMDgzNzg4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCkBAIC0z
MSwzNyArMzEsMzMgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAKKyNpbXBvcnQgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgorCiAjaW1wb3J0ICJNZWRp
YVJlbW90ZVNvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHN0ZDo6
b3B0aW9uYWw8TVJNZWRpYVJlbW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29tbWFuZEZvclBsYXRm
b3JtQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBl
IGNvbW1hbmQpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1hcCA9IG1ha2VOZXZl
ckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHVzaW5nIENvbW1hbmRUb0FjdGlvbk1hcCA9IEhhc2hN
YXA8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgTVJNZWRp
YVJlbW90ZUNvbW1hbmQsIFdURjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj47Ci0KLSAgICAgICAgcmV0dXJu
IENvbW1hbmRUb0FjdGlvbk1hcCB7Ci0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpQbGF5Q29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5IH0sCi0gICAgICAgICAgICB7
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
UGF1c2UgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0b3BDb21tYW5k
LCBNUk1lZGlhUmVtb3RlQ29tbWFuZFN0b3AgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kVG9n
Z2xlUGxheVBhdXNlIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdp
blNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5SZXdpbmQg
fSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2Fy
ZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kIH0sCi0gICAgICAgICAgICB7
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29tbWFuZCwgTVJNZWRp
YVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21t
YW5kRW5kRmFzdEZvcndhcmQgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtU
b1BsYXliYWNrUG9zaXRpb24gfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlNraXBGb3J3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwRm9yd2FyZCB9LAot
ICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCwg
TVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQgfSwKLSAgICAgICAgICAgIHsgUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kTmV4
dFRyYWNrIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcmV2aW91c1Ry
YWNrQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNrIH0sCi0gICAgICAg
IH07Ci0gICAgfSgpKTsKLQotICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdldCgpLmZpbmQoY29t
bWFuZCk7Ci0gICAgaWYgKGl0ICE9IGNvbW1hbmRNYXAuZ2V0KCkuZW5kKCkpCi0gICAgICAgIHJl
dHVybiB7IGl0LT52YWx1ZSB9OwotCi0gICAgcmV0dXJuIHsgfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6cGFpcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRU
eXBlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZD4gbWFwcGluZ3NbXSA9IHsKKyAgICAgICAgeyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9
LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsIE1STWVkaWFS
ZW1vdGVDb21tYW5kUGF1c2UgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3Rv
cENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU3RvcCB9LAorICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFu
ZFRvZ2dsZVBsYXlQYXVzZSB9LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdp
blNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kQmVnaW5SZXdpbmQg
fSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2luZ0JhY2t3YXJkQ29t
bWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRSZXdpbmQgfSwKKyAgICAgICAgeyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kQmVnaW5GYXN0Rm9yd2FyZCB9LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kRmFzdEZv
cndhcmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQ
b3NpdGlvbkNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxheWJhY2tQb3NpdGlv
biB9LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2FyZENvbW1hbmQs
IE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lw
QmFja3dhcmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TmV4dFRyYWNrQ29t
bWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2sgfSwKKyAgICAgICAgeyBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
UHJldmlvdXNUcmFjayB9LAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJh
eU1hcCBtYXAgeyBtYXBwaW5ncyB9OworICAgIGlmIChhdXRvKiB2YWx1ZSA9IG1hcC50cnlHZXQo
Y29tbWFuZCkpCisgICAgICAgIHJldHVybiAqdmFsdWU7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hPiBSZW1v
dGVDb21tYW5kTGlzdGVuZXJDb2NvYTo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNsaWVu
dCYgY2xpZW50KQpAQCAtMTQwLDcgKzEzNiw3IEBAIFJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29h
OjpSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllCiAK
ICAgICAgICAgTE9HKE1lZGlhLCAiUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2E6OlJlbW90ZUNv
bW1hbmRMaXN0ZW5lckNvY29hIC0gcmVjZWl2ZWQgY29tbWFuZCAldSIsIGNvbW1hbmQpOwogCi0g
ICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgcGxh
dGZvcm1Db21tYW5kIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFuZCB9OworICAgICAg
ICBhdXRvIHBsYXRmb3JtQ29tbWFuZCB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQg
fTsKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCBh
cmd1bWVudDsKICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVyU3RhdHVzIHN0YXR1
cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IGQ5MjVkMDVmYTFkYzBhMGNkYWZlYjdjNjZiMTdj
ZjMwODk0OWNmOWQuLjc3ZDE1N2UzNjMyNzZlNmYxZmE5NTFlOGEyZTc0MGZhZjkyZTU3ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIGNvbnN0
IFZlY3RvcjxBdG9tU3RyaW5nPiYgb2JzZXJ2ZWRFdmVudE5hbWVzKCk7CisgICAgc3RhdGljIFNw
YW48Y29uc3QgQXRvbVN0cmluZz4gb2JzZXJ2ZWRFdmVudE5hbWVzKCk7CiAgICAgY29uc3QgQXRv
bVN0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4g
bV92aWRlb0VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCmluZGV4IDFh
NTI2YzgzM2YzOGEzYzIwNjM2OWRjOTdiY2M3NzZlZTM1YTA1ZTAuLjZiNWUxZGQzNTg3MmJhMDNi
ZjVhMWViMTg3NzVkMjA1OWIxNGU3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
Lm1tCkBAIC0xNzgsMTAgKzE3OCwxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9F
bGVtZW50OjpzZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXllcjo6VmlkZW9HcgogICAgICAg
ICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShncmF2aXR5KTsKIH0K
IAotY29uc3QgVmVjdG9yPEF0b21TdHJpbmc+JiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKK1NwYW48Y29uc3QgQXRvbVN0cmluZz4gVmlkZW9G
dWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Om9ic2VydmVkRXZlbnROYW1lcygpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGF1dG8gbmFtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPEF0b21T
dHJpbmc+IHsgZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50IH0pOwotICAgIHJldHVybiBuYW1lczsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbmFtZXMgPSBzdGQ6OmFycmF5IHsgZXZlbnROYW1l
cygpLnJlc2l6ZUV2ZW50IH07CisgICAgcmV0dXJuIG5hbWVzLmdldCgpOwogfQogCiBjb25zdCBB
dG9tU3RyaW5nJiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZXZlbnROYW1lQWxs
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmNwcAppbmRleCA0YmE3NWJmMDBkOWY3MTNiNWFmYmJhNzkzNDAxOTcxNmNkOGYwMzgyLi45
YzcwNTU1YjM1ODg1NDFhNmU0NGJlMWJkMjRjZTJmNzM5YWI4NDVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC00Miw3
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmVjdG9yPENETVByb3h5RmFjdG9yeSo+
JiBDRE1Qcm94eUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKQogewotICAgIHN0YXRpYyBh
dXRvIGZhY3RvcmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9y
aWVzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBmYWN0b3JpZXMgPSBwbGF0Zm9ybVJl
Z2lzdGVyRmFjdG9yaWVzKCk7CiAgICAgcmV0dXJuIGZhY3RvcmllczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDdhZjk3
ODZmZWUyMzk4ZmIwMzhjYjljNDg5NWE3OTdkYzk3ZTFhMmIuLjRjMWRmZGNkYjk5N2ZiZmE1MDBj
YWFkMTliOGZiMDdkZDZhM2Q0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIGJvb2wgdXNl
QmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSkKIHsK
ICAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHN0
YXRpYyBjb25zdCBhdXRvIHNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkIHNldCA9IFtdIHsKICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9u
bHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKICAgICAgICAgYXV0byBhZGQgPSBb
JnNldF0gKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcj4gdW5p
Y29kZU5hbWUpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG5hbWVMZW5ndGggPSBzdHJsZW4obmFt
ZSk7CkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBib29sIHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZv
ckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIGFkZCgiTVMgTWluY2hv
IiwgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDY2MEUsIDB4NjcxRCB9KTsKICAgICAgICAg
YWRkKCJNZWlyeW8iLCB7IDB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4MzBBQSB9KTsKICAgICAg
ICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1cm4gc2V0LmdldCgp
LmNvbnRhaW5zKGZhbWlseSk7CiB9CiAKQEAgLTM3Myw3ICszNzMsNyBAQCBib29sIEZvbnRDYXNj
YWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGgoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ry
b3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4g
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBtYXAgPSBNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4gewogICAgICAgICAiQW1lcmljYW4gVHlwZXdy
aXRlciJfcywKICAgICAgICAgIkFyaWFsIEhlYnJldyJfcywKICAgICAgICAgIkNoYWxrYm9hcmQi
X3MsCkBAIC00MDgsNyArNDA4LDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6aGFzVmFsaWRBdmVyYWdl
Q2hhcldpZHRoKCkgY29uc3QKICAgICAgICAgIiNIZWFkTGluZUEiX3MsCiAgICAgICAgICIjUENN
eXVuZ2pvIl9zLAogICAgICAgICAiI1BpbEdpIl9zLAotICAgIH0pOworICAgIH07CiAgICAgcmV0
dXJuICFtYXAuZ2V0KCkuY29udGFpbnMoZmFtaWx5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggN2M1NDk0N2Y0ZDgx
NDA4NTU5Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OS4uNzNlZmNhMmFkZDEyMTA3Yzg3MmFiYTdmZmI1
ZGFmNzMxOTBiNjc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIHBsYXRmb3Jt
UmVnaXN0ZXJGYWN0b3JpZXMoRmFjdG9yeVZlY3RvciYgZmFjdG9yaWVzKQogCiBzdGF0aWMgRmFj
dG9yeVZlY3RvciYgaW5zdGFsbGVkRmFjdG9yaWVzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBmYWN0
b3JpZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8RmFjdG9yeVZlY3Rvcj4oeyB9KTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8RmFjdG9yeVZlY3Rvcj4gZmFjdG9yaWVzOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyByZWdpc3RlckRlZmF1bHRzOwogICAgIHN0ZDo6Y2FsbF9vbmNlKHJlZ2lz
dGVyRGVmYXVsdHMsIFsmXSB7CiAgICAgICAgIHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoZmFj
dG9yaWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAppbmRl
eCA1ZWY4NzZmOWYzODY5OTA3NTMzY2FiODcwMTQ0MGYyNjVhYzA2ZmViLi41NTY2ZWJiZjEzYjdi
ZjVjMzk5MmFjZGQ4NjdhNTNiODIzM2M5ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwMy0yMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI3ByYWdtYSBvbmNlCkBAIC02NywyNCArNjcsMjQgQEAgY2xhc3MgRmxvYXRTaXplOwog
CiBjbGFzcyBJbnRTaXplIHsKIHB1YmxpYzoKLSAgICBJbnRTaXplKCkgOiBtX3dpZHRoKDApLCBt
X2hlaWdodCgwKSB7IH0KLSAgICBJbnRTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgOiBtX3dp
ZHRoKHdpZHRoKSwgbV9oZWlnaHQoaGVpZ2h0KSB7IH0KKyAgICBjb25zdGV4cHIgSW50U2l6ZSgp
ID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgSW50U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
IDogbV93aWR0aCh3aWR0aCksIG1faGVpZ2h0KGhlaWdodCkgeyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgSW50U2l6ZShjb25zdCBGbG9hdFNpemUmKTsgLy8gZG9uJ3QgZG8gdGhpcyBp
bXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKLSAgICAKLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7
IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVp
Z2h0OyB9CiAKLSAgICBmbG9hdCBtaW5EaW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBzdGQ6Om1p
bihtX3dpZHRoLCBtX2hlaWdodCk7IH0KLSAgICBmbG9hdCBtYXhEaW1lbnNpb24oKSBjb25zdCB7
IHJldHVybiBzdGQ6Om1heChtX3dpZHRoLCBtX2hlaWdodCk7IH0KKyAgICBjb25zdGV4cHIgaW50
IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIGNvbnN0ZXhwciBpbnQgaGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKworICAgIGNvbnN0ZXhwciBpbnQgbWlu
RGltZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4obV93aWR0aCwgbV9oZWlnaHQpOyB9
CisgICAgY29uc3RleHByIGludCBtYXhEaW1lbnNpb24oKSBjb25zdCB7IHJldHVybiBzdGQ6Om1h
eChtX3dpZHRoLCBtX2hlaWdodCk7IH0KIAogICAgIHZvaWQgc2V0V2lkdGgoaW50IHdpZHRoKSB7
IG1fd2lkdGggPSB3aWR0aDsgfQogICAgIHZvaWQgc2V0SGVpZ2h0KGludCBoZWlnaHQpIHsgbV9o
ZWlnaHQgPSBoZWlnaHQ7IH0KIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
d2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9Ci0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7
IHJldHVybiAhbV93aWR0aCAmJiAhbV9oZWlnaHQ7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KKyAg
ICBjb25zdGV4cHIgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbV93aWR0aCAmJiAhbV9o
ZWlnaHQ7IH0KKworICAgIGNvbnN0ZXhwciBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihtX2hl
aWdodCk7IH0KIAotICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1faGVpZ2h0KTsgfQot
ICAgIAogICAgIHZvaWQgZXhwYW5kKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICB7CiAgICAg
ICAgIG1fd2lkdGggKz0gd2lkdGg7CkBAIC0xMDIsMTggKzEwMiwxOCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fd2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRo
KSAqIHdpZHRoU2NhbGUpOwogICAgICAgICBtX2hlaWdodCA9IHN0YXRpY19jYXN0PGludD4oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG1faGVpZ2h0KSAqIGhlaWdodFNjYWxlKTsKICAgICB9Ci0gICAgCisK
ICAgICB2b2lkIHNjYWxlKGZsb2F0IHNjYWxlKQogICAgIHsKICAgICAgICAgdGhpcy0+c2NhbGUo
c2NhbGUsIHNjYWxlKTsKICAgICB9CiAKLSAgICBJbnRTaXplIGV4cGFuZGVkVG8oY29uc3QgSW50
U2l6ZSYgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIEludFNpemUgZXhwYW5kZWRUbyhjb25z
dCBJbnRTaXplJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBJbnRTaXplKHN0
ZDo6bWF4KG1fd2lkdGgsIG90aGVyLm1fd2lkdGgpLCBzdGQ6Om1heChtX2hlaWdodCwgb3RoZXIu
bV9oZWlnaHQpKTsKICAgICB9CiAKLSAgICBJbnRTaXplIHNocnVua1RvKGNvbnN0IEludFNpemUm
IG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBJbnRTaXplIHNocnVua1RvKGNvbnN0IEludFNp
emUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEludFNpemUoc3RkOjptaW4o
bV93aWR0aCwgb3RoZXIubV93aWR0aCksIHN0ZDo6bWluKG1faGVpZ2h0LCBvdGhlci5tX2hlaWdo
dCkpOwogICAgIH0KQEAgLTEzMyw4ICsxMzMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBJbnRTaXplIGNvbnN0cmFpbmVkQmV0d2Vlbihjb25zdCBJbnRTaXplJiBtaW4sIGNvbnN0
IEludFNpemUmIG1heCkgY29uc3Q7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCA9IENyYXNo
T25PdmVyZmxvdz4KLSAgICBDaGVja2VkPHVuc2lnbmVkLCBUPiBhcmVhKCkgY29uc3QKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUID0gQ3Jhc2hPbk92ZXJmbG93PiBDaGVja2VkPHVuc2lnbmVkLCBU
PiBhcmVhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBDaGVja2VkPHVuc2lnbmVkLCBU
PihhYnMobV93aWR0aCkpICogYWJzKG1faGVpZ2h0KTsKICAgICB9CkBAIC0xNDQsMTIgKzE0Mywx
MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYWJzKG1f
d2lkdGgpKSAqIGFicyhtX2hlaWdodCk7CiAgICAgfQogCi0gICAgaW50IGRpYWdvbmFsTGVuZ3Ro
U3F1YXJlZCgpIGNvbnN0CisgICAgY29uc3RleHByIGludCBkaWFnb25hbExlbmd0aFNxdWFyZWQo
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fd2lkdGggKiBtX3dpZHRoICsgbV9oZWln
aHQgKiBtX2hlaWdodDsKICAgICB9CiAKLSAgICBJbnRTaXplIHRyYW5zcG9zZWRTaXplKCkgY29u
c3QKKyAgICBjb25zdGV4cHIgSW50U2l6ZSB0cmFuc3Bvc2VkU2l6ZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gSW50U2l6ZShtX2hlaWdodCwgbV93aWR0aCk7CiAgICAgfQpAQCAtMTc3
LDcgKzE3Niw4IEBAIHB1YmxpYzoKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3Qo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBpbnQgbV93aWR0aCwgbV9oZWlnaHQ7CisgICAgaW50
IG1fd2lkdGggeyAwIH07CisgICAgaW50IG1faGVpZ2h0IHsgMCB9OwogfTsKIAogaW5saW5lIElu
dFNpemUmIG9wZXJhdG9yKz0oSW50U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYgYikKQEAgLTE5NCwy
NyArMTk0LDI3IEBAIGlubGluZSBJbnRTaXplJiBvcGVyYXRvci09KEludFNpemUmIGEsIGNvbnN0
IEludFNpemUmIGIpCiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBJbnRTaXplIG9wZXJhdG9y
Kyhjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQorY29uc3RleHByIEludFNpemUg
b3BlcmF0b3IrKGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCiB7CiAgICAgcmV0
dXJuIEludFNpemUoYS53aWR0aCgpICsgYi53aWR0aCgpLCBhLmhlaWdodCgpICsgYi5oZWlnaHQo
KSk7CiB9CiAKLWlubGluZSBJbnRTaXplIG9wZXJhdG9yLShjb25zdCBJbnRTaXplJiBhLCBjb25z
dCBJbnRTaXplJiBiKQorY29uc3RleHByIEludFNpemUgb3BlcmF0b3ItKGNvbnN0IEludFNpemUm
IGEsIGNvbnN0IEludFNpemUmIGIpCiB7CiAgICAgcmV0dXJuIEludFNpemUoYS53aWR0aCgpIC0g
Yi53aWR0aCgpLCBhLmhlaWdodCgpIC0gYi5oZWlnaHQoKSk7CiB9CiAKLWlubGluZSBJbnRTaXpl
IG9wZXJhdG9yLShjb25zdCBJbnRTaXplJiBzaXplKQorY29uc3RleHByIEludFNpemUgb3BlcmF0
b3ItKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIEludFNpemUoLXNpemUud2lk
dGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCitjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCiB7CiAgICAgcmV0dXJuIGEud2lk
dGgoKSA9PSBiLndpZHRoKCkgJiYgYS5oZWlnaHQoKSA9PSBiLmhlaWdodCgpOwogfQogCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCitj
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUm
IGIpCiB7CiAgICAgcmV0dXJuIGEud2lkdGgoKSAhPSBiLndpZHRoKCkgfHwgYS5oZWlnaHQoKSAh
PSBiLmhlaWdodCgpOwogfQpAQCAtMjI0LDE2ICsyMjQsMTMgQEAgV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEludFNpemUm
KTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7CisKIHRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OkludFNpemU+OwogdGVtcGxhdGU8PiBzdHJ1
Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpJbnRTaXplPjsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZT4gc3RydWN0IExvZ0FyZ3VtZW50OwotdGVtcGxhdGUgPD4KLXN0cnVjdCBMb2dBcmd1bWVudDxX
ZWJDb3JlOjpJbnRTaXplPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNpemUudG9KU09OU3Ry
aW5nKCk7Ci0gICAgfQordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKK3Rl
bXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkludFNpemU+IHsKKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIHsgcmV0dXJu
IHNpemUudG9KU09OU3RyaW5nKCk7IH0KIH07Ci19CiAKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggYzk5OGQ5ZjY0
NzBlODBmOGQ0Y2RkNWUxMjY2ZjA1YjEyYmQ2MTA5ZS4uNDgxMWJlNzliNTk1N2RmOTAyNDNiMzJl
MTU0NDkwODE1ZjBhMzE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTEwOTUsNyArMTA5NSw3IEBAIFdURkxvZ0No
YW5uZWwmIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0
CiAKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnN0YXRpY01JTUVUeXBlTGlzdCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZCBjYWNoZSA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKICAg
ICAgICAgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIl9zLAogICAgICAgICAiYXBwbGlj
YXRpb24veC1tcGVndXJsIl9zLAogICAgICAgICAiYXVkaW8vM2dwcCJfcywKQEAgLTExMjcsNyAr
MTEyNyw3IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
JiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246CiAgICAgICAgICJ2aWRlby94LW00diJf
cywKICAgICAgICAgInZpZGVvL3gtbXBlZyJfcywKICAgICAgICAgInZpZGVvL3gtbXBnIl9zLAot
ICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApp
bmRleCA5Y2M4NGFjNDI2MzhjMjg1MWQxOTFlYWRjM2E1MDgzZGI4MjFiNjcxLi43N2RjMmU3ODI0
OTQ2MDI2MTU0YTEwYzU0NjBjYmUyNjg4Mzc5NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTE3
NjQsMTIgKzE3NjQsMTAgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCkKIHsK
ICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KCVwKSIsIHRoaXMp
OwogCi0gICAgc3RhdGljIGF1dG8gcHJvcGVydHlLZXlOYW1lID0gbWFrZU5ldmVyRGVzdHJveWVk
KFtdIHsKLSAgICAgICAgY29uc3Qgdm9pZCoga2V5TmFtZXNbXSA9IHsKLSAgICAgICAgICAgIEFW
Q0ZBc3NldFByb3BlcnR5UGxheWFibGUKLSAgICAgICAgfTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgcHJvcGVydHlLZXlOYW1lID0gW10geworICAgICAgICBjb25zdCB2b2lkKiBrZXlOYW1l
c1tdID0geyBBVkNGQXNzZXRQcm9wZXJ0eVBsYXlhYmxlIH07CiAgICAgICAgIHJldHVybiBhZG9w
dENGKENGQXJyYXlDcmVhdGUoMCwga2V5TmFtZXMsIHN0ZDo6c2l6ZShrZXlOYW1lcyksICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICB9KCkpOworICAgIH0oKTsKIAogICAgIEFWQ0ZBc3Nl
dExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMoYXZBc3NldCgpLCBwcm9wZXJ0
eUtleU5hbWUuZ2V0KCkuZ2V0KCksIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxsYmFjaywgY2Fs
bGJhY2tDb250ZXh0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcAppbmRleCAyZmMxODc5NjRjNDMxZDFh
OTczNDkyN2JhZDQwNmVkOWY2YjRmZjY3Li42OTk5MDRhZjIzZGExNzk4NmNkNWM3ODc3OWExMjBi
NGQyNjY2YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZVNvdXJjZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcApAQCAtNTAsOCArNTAsNyBAQCBTdHJpbmcgcHJl
ZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBp
ZiAodHlwZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgc3RhdGlj
IGNvbnN0IGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZCBtYXAgPSBIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
IHsKICAgICAgICAgeyAicHVibGljLmh0bWwiX3MsICJodG1sIl9zIH0sCiAgICAgICAgIHsgInB1
YmxpYy5qcGVnIl9zLCAianBlZyJfcyB9LAogICAgICAgICB7ICJwdWJsaWMuanBlZy0yMDAwIl9z
LCAianAyIl9zIH0sCkBAIC03Nyw3ICs3Niw3IEBAIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25G
b3JJbWFnZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICB7ICJjb20ubmV0c2NhcGUu
amF2YXNjcmlwdC1zb3VyY2UiX3MsICJqcyJfcyB9LAogICAgICAgICB7ICJjb20uc2dpLnNnaS1p
bWFnZSJfcywgInNnaSJfcyB9LAogICAgICAgICB7ICJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2Ui
X3MsICJ0Z2EiX3MgfSwKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBtYXAuZ2V0KCkuZ2V0
KHR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9VVElSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9VVElSZWdpc3RyeS5jcHAKaW5kZXggYTQ3MDI0NDBlZGZiMDMyMmZlYWY3Y2Q5MWI2ZWFkNDA3
YjNjOTIwYS4uNDZmNjk0MTdmZDI2ZjMxNTRjMDQ5YWRkN2I5NWZkMDdkNDQ0ZmQ0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNw
cApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBkZWZhdWx0U3VwcG9ydGVk
SW1hZ2VUeXBlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gZGVmYXVsdFN1cHBvcnRlZElt
YWdlVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZCBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcyA9IFtdIHsKICAgICAgICAgSGFzaFNldDxT
dHJpbmc+IGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzID0gewogICAgICAgICAgICAgImNvbS5j
b21wdXNlcnZlLmdpZiJfcywKICAgICAgICAgICAgICJjb20ubWljcm9zb2Z0LmJtcCJfcywKQEAg
LTc1LDcgKzc1LDcgQEAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNo
U2V0PFN0cmluZz4mIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGUKICAgICAgICAgICAgICAgICBm
aWx0ZXJlZC5hZGQoaW1hZ2VUeXBlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmlsdGVy
ZWQ7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAKICAgICByZXR1cm4gZGVmYXVsdFN1cHBvcnRlZElt
YWdlVHlwZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKaW5kZXggNWE0ZWNlNjky
ODFhN2Y2NjFjMjUzZmY3OTU2NTY3MTc3OTk4Y2RhMC4uZTVhZjNkZTZiMjM3OTBjYWIyNDQ3Nzlk
Y2I0ZTBmOGZlYzE1Mzc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcApAQCAtODIs
MTEgKzgyLDExIEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxTeXN0ZW1Gb250S2luZD4g
bWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0IEF0b21TdHJpbmcmCiAgICAgYXV0byBjb21wYXJlQXNQ
b2ludGVyID0gW10oY29uc3QgQXRvbVN0cmluZyYgbGhzLCBjb25zdCBBdG9tU3RyaW5nJiByaHMp
IHsKICAgICAgICAgcmV0dXJuIGxocy5pbXBsKCkgPCByaHMuaW1wbCgpOwogICAgIH07Ci0gICAg
c3RhdGljIGF1dG8gc3RyaW5ncyA9IG1ha2VOZXZlckRlc3Ryb3llZChbJmNvbXBhcmVBc1BvaW50
ZXJdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3RyaW5ncyA9IFsmY29tcGFyZUFzUG9p
bnRlcl0gewogICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRBcnJheTxBdG9tU3RyaW5nPihz
dHlsZXMpOwogICAgICAgICBzdGQ6OnNvcnQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwg
Y29tcGFyZUFzUG9pbnRlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSgpKTsKKyAg
ICB9KCk7CiAgICAgaWYgKHN0ZDo6YmluYXJ5X3NlYXJjaChzdHJpbmdzLmdldCgpLmJlZ2luKCks
IHN0cmluZ3MuZ2V0KCkuZW5kKCksIHN0cmluZywgY29tcGFyZUFzUG9pbnRlcikpCiAgICAgICAg
IHJldHVybiBTeXN0ZW1Gb250S2luZDo6VGV4dFN0eWxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCmluZGV4IGRlNmRlYmUyYmQ0Y2ExMzYwNDBmYzBjM2E0NWRjNGVhMzlmNDg5
ZDAuLjhmNWU4NzkwZjJmZTEwYmExMjNmMTNmMjAzY2M3ZTMxZWNhOTFkZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01NTUsMjAgKzU1NSwxNiBAQCBwcml2YXRlOgog
CiBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6d2VibU1JTUVUeXBlcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gdHlw
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
IHR5cGVzID0gW10gewogICAgICAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiB0eXBlczsKLQogI2lmIEVOQUJMRShWUDkpCiAgICAgICAgIHR5cGVzLmFkZCgidmlk
ZW8vd2VibSIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZPUkJJUykgfHwgRU5BQkxFKE9QVVMpCiAg
ICAgICAgIHR5cGVzLmFkZCgiYXVkaW8vd2VibSIpOwogI2VuZGlmCi0KICAgICAgICAgcmV0dXJu
IHR5cGVzOwotICAgIH0oKSk7Ci0KKyAgICB9KCk7CiAgICAgcmV0dXJuIHR5cGVzOwogfQogCkBA
IC0xNTMzLDEzICsxNTI5LDEzIEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c2V0TWlu
aW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQgZHVyYXRpb24pCiAKIGNvbnN0IE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpzdXBwb3J0ZWRWaWRlb0NvZGVjcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gY29kZWNz
ID0gbWFrZU5ldmVyRGVzdHJveWVkPE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aFNldDxTdHJpbmc+Pih7ICJWX1ZQOCJfcywgIlZfVlA5Il9zIH0pOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZCBjb2RlY3MgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hT
ZXQ8U3RyaW5nPiB7ICJWX1ZQOCJfcywgIlZfVlA5Il9zIH07CiAgICAgcmV0dXJuIGNvZGVjczsK
IH0KIAogY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmlu
Zz4mIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZEF1ZGlvQ29kZWNzKCkKIHsKLSAg
ICBzdGF0aWMgYXV0byBjb2RlY3MgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8TWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4+KHsgIkFfVk9SQklTIl9zLCAiQV9PUFVT
Il9zIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBjb2RlY3MgPSBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiB7ICJBX1ZPUkJJUyJfcywgIkFfT1BV
UyJfcyB9OwogICAgIHJldHVybiBjb2RlY3M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4IGVhMmU4NjEzNDM1YWFkZmI4YTM4OGMwYzZlNWZl
YWU1YWJmMWI0N2UuLmQxZWFkYWRmOWRjYmZiOTM0NWEyMmVkODA0ODExMWVhNGM0MmNjY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtMTE2LDkg
KzExNiw5IEBAIHN0YXRpYyBGb250Q2FzY2FkZSBjYXNjYWRlRm9yU3lzdGVtRm9udChDR0Zsb2F0
IHNpemUpCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhFbGVtZW50JiBsaW5r
RWxlbWVudCwgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFRleHRJbmRpY2F0b3JEYXRh
JiBpbmRpY2F0b3JEYXRhLCBGb250UmVuZGVyaW5nTW9kZSwgZmxvYXQpCiB7CiAgICAgLy8gRklY
TUU6IE1vc3Qgb2YgdGhpcyBjYW4gZ28gYXdheSBvbmNlIHdlIGNhbiB1c2UgVUlVUkxEcmFnUHJl
dmlld1ZpZXcgdW5jb25kaXRpb25hbGx5LgotICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGRyYWdJ
bWFnZVBhZGRpbmcgPSAxMDsKLSAgICBzdGF0aWMgY29uc3QgYXV0byB0aXRsZUZvbnRDYXNjYWRl
ID0gbWFrZU5ldmVyRGVzdHJveWVkKGNhc2NhZGVGb3JTeXN0ZW1Gb250KDE2KSk7Ci0gICAgc3Rh
dGljIGNvbnN0IGF1dG8gdXJsRm9udENhc2NhZGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY2FzY2Fk
ZUZvclN5c3RlbUZvbnQoMTQpKTsKKyAgICBjb25zdGV4cHIgQ0dGbG9hdCBkcmFnSW1hZ2VQYWRk
aW5nID0gMTA7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkIHRpdGxlRm9udENhc2Nh
ZGUgPSBjYXNjYWRlRm9yU3lzdGVtRm9udCgxNik7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVz
dHJveWVkIHVybEZvbnRDYXNjYWRlID0gY2FzY2FkZUZvclN5c3RlbUZvbnQoMTQpOwogCiAgICAg
U3RyaW5nIHRvcFN0cmluZyh0aXRsZS5zdHJpcFdoaXRlU3BhY2UoKSk7CiAgICAgU3RyaW5nIGJv
dHRvbVN0cmluZyhbKE5TVVJMICopdXJsIGFic29sdXRlU3RyaW5nXSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJh
cy5tbQppbmRleCA2YjI4NGEwNGJiYzVkY2FjYzY4NDA5Y2YxMDBmZDY2MzFiNzE4MGE5Li40NmZi
MjhlODE1MjQzYjBlODQ3YzA3MjNlMTc2YjdjYzJmNmEwMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMu
bW0KQEAgLTQyLDExICs0MiwxMSBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJp
bmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKE5TQXR0cmlidXRlZAogewogICAgIE5T
UmFuZ2UgYXR0YWNobWVudFJhbmdlOwogICAgIE5TU3RyaW5nICpvcmlnaW5hbFN0cmluZyA9IFth
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107Ci0gICAgc3RhdGljIGF1dG8gYXR0YWNobWVudENoYXJT
dHJpbmcgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZCBhdHRhY2htZW50Q2hhclN0cmluZyA9IFtdIHsKICAgICAgICAgdW5pY2hhciBjaGFyc1syXSA9
IHsgTlNBdHRhY2htZW50Q2hhcmFjdGVyLCAwIH07CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ2hhcmFjdGVyczpjaGFycyBsZW5ndGg6MV0pOwotICAg
IH0oKSk7Ci0gICAgCisgICAgfSgpOworCiAgICAgYXR0YWNobWVudFJhbmdlID0gW29yaWdpbmFs
U3RyaW5nIHJhbmdlT2ZTdHJpbmc6YXR0YWNobWVudENoYXJTdHJpbmcuZ2V0KCkuZ2V0KCldOwog
ICAgIGlmIChhdHRhY2htZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiBhdHRhY2ht
ZW50UmFuZ2UubGVuZ3RoID4gMCkgewogICAgICAgICBhdXRvIG5ld0F0dHJpYnV0ZWRTdHJpbmcg
PSBhZG9wdE5TKFthdHRyaWJ1dGVkU3RyaW5nIG11dGFibGVDb3B5V2l0aFpvbmU6TlVMTF0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcApp
bmRleCAwNTBjZGY5ZmM1MzIwMmQ4MTAwYmVmNzMyMzM3NTliNjc0YmM3OGE2Li5mZWQ1YmYzMTkz
ZmU1M2VmNDEwZDgyODk1MTQ5M2M5NmEwMGNjMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0
aWMgRmFjdG9yeVZlY3RvciBkZWZhdWx0RmFjdG9yaWVzKCkKIAogc3RhdGljIEZhY3RvcnlWZWN0
b3ImIGZhY3RvcmllcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gZmFjdG9yaWVzID0gbWFrZU5ldmVy
RGVzdHJveWVkPEZhY3RvcnlWZWN0b3I+KGRlZmF1bHRGYWN0b3JpZXMoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkIGZhY3RvcmllcyA9IGRlZmF1bHRGYWN0b3JpZXMoKTsKICAgICByZXR1
cm4gZmFjdG9yaWVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAKaW5k
ZXggOGVhNjE0NzIxZDMwMjNhOGJiMTIwNGJkOTE4MmY2MDQyNmI0MTY5ZC4uNTllYzM2ZTUyOTdm
OWIzNGI4MjRkM2JhZWE3MjYxNGUxNTQ2Yzk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJl
U291cmNlLmNwcApAQCAtOTcsNTQgKzk3LDQzIEBAIHZvaWQgUmVhbHRpbWVWaWRlb0NhcHR1cmVT
b3VyY2U6OnNldFN1cHBvcnRlZFByZXNldHMoY29uc3QgVmVjdG9yPFJlZjxWaWRlb1ByZXNlCiAg
ICAgfQogfQogCi1jb25zdCBWZWN0b3I8SW50U2l6ZT4mIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291
cmNlOjpzdGFuZGFyZFZpZGVvU2l6ZXMoKQotewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNpemVz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgc3RhdGljIEludFNpemUgdmlkZW9T
aXplc1tdID0gewotICAgICAgICAgICAgeyAxMTIsIDExMiB9LAotICAgICAgICAgICAgeyAxNjAs
IDE2MCB9LAotICAgICAgICAgICAgeyAxNjAsIDEyMCB9LCAvLyA0OjMsIFFRVkdBCi0gICAgICAg
ICAgICB7IDE3NiwgMTQ0IH0sIC8vIDQ6MywgUUNJRgotICAgICAgICAgICAgeyAxOTIsIDE5MiB9
LAotICAgICAgICAgICAgeyAxOTIsIDExMiB9LCAvLyAxNjo5Ci0gICAgICAgICAgICB7IDE5Miwg
MTQ0IH0sIC8vIDM6NAotICAgICAgICAgICAgeyAyNDAsIDI0MCB9LAotICAgICAgICAgICAgeyAy
NDAsIDE2MCB9LCAvLyAzOjIsIEhRVkdBCi0gICAgICAgICAgICB7IDMyMCwgMzIwIH0sCi0gICAg
ICAgICAgICB7IDMyMCwgMTgwIH0sIC8vIDE2OjkKLSAgICAgICAgICAgIHsgMzIwLCAyNDAgfSwg
Ly8gNDozLCBRVkdBCi0gICAgICAgICAgICB7IDM1MiwgMjg4IH0sIC8vIENJRgotICAgICAgICAg
ICAgeyA0ODAsIDI3MiB9LCAvLyAxNjo5Ci0gICAgICAgICAgICB7IDQ4MCwgMzYwIH0sIC8vIDQ6
MwotICAgICAgICAgICAgeyA0ODAsIDQ4MCB9LAotICAgICAgICAgICAgeyA2NDAsIDY0MCB9LAot
ICAgICAgICAgICAgeyA2NDAsIDM2MCB9LCAvLyAxNjo5LCAzNjBwIG5IRAotICAgICAgICAgICAg
eyA2NDAsIDQ4MCB9LCAvLyA0OjMKLSAgICAgICAgICAgIHsgNzIwLCA3MjAgfSwKLSAgICAgICAg
ICAgIHsgODAwLCA2MDAgfSwgLy8gNDozLCBTVkdBCi0gICAgICAgICAgICB7IDk2MCwgNTQwIH0s
IC8vIDE2OjksIHFIRAotICAgICAgICAgICAgeyAxMDI0LCA2MDAgfSwgLy8gMTY6OSwgV1NWR0EK
LSAgICAgICAgICAgIHsgMTAyNCwgNzY4IH0sIC8vIDQ6MywgWEdBCi0gICAgICAgICAgICB7IDEy
ODAsIDk2MCB9LCAvLyA0OjMKLSAgICAgICAgICAgIHsgMTI4MCwgMTAyNCB9LCAvLyA1OjQsIFNY
R0EKLSAgICAgICAgICAgIHsgMTI4MCwgNzIwIH0sIC8vIDE2OjksIFdYR0EKLSAgICAgICAgICAg
IHsgMTM2NiwgNzY4IH0sIC8vIDE2OjksIEhECi0gICAgICAgICAgICB7IDE2MDAsIDEyMDB9LCAv
LyA0OjMsIFVYR0EKLSAgICAgICAgICAgIHsgMTkyMCwgMTA4MCB9LCAvLyAxNjo5LCAxMDgwcCBG
SEQKLSAgICAgICAgICAgIHsgMjU2MCwgMTQ0MCB9LCAvLyAxNjo5LCBRSEQKLSAgICAgICAgICAg
IHsgMjU5MiwgMTkzNiB9LAotICAgICAgICAgICAgeyAzMjY0LCAyNDQ4IH0sIC8vIDM6NAotICAg
ICAgICAgICAgeyAzODQwLCAyMTYwIH0sIC8vIDE2OjksIDRLIFVIRAotICAgICAgICB9OwotICAg
ICAgICBWZWN0b3I8SW50U2l6ZT4gc2l6ZXM7Ci0gICAgICAgIGZvciAoYXV0byYgc2l6ZSA6IHZp
ZGVvU2l6ZXMpCi0gICAgICAgICAgICBzaXplcy5hcHBlbmQoc2l6ZSk7CitzdGF0aWMgY29uc3Rl
eHByIEludFNpemUgc3RhbmRhcmRWaWRlb1NpemVzW10gPSB7CisgICAgeyAxMTIsIDExMiB9LAor
ICAgIHsgMTYwLCAxNjAgfSwKKyAgICB7IDE2MCwgMTIwIH0sIC8vIDQ6MywgUVFWR0EKKyAgICB7
IDE3NiwgMTQ0IH0sIC8vIDQ6MywgUUNJRgorICAgIHsgMTkyLCAxOTIgfSwKKyAgICB7IDE5Miwg
MTEyIH0sIC8vIDE2OjkKKyAgICB7IDE5MiwgMTQ0IH0sIC8vIDM6NAorICAgIHsgMjQwLCAyNDAg
fSwKKyAgICB7IDI0MCwgMTYwIH0sIC8vIDM6MiwgSFFWR0EKKyAgICB7IDMyMCwgMzIwIH0sCisg
ICAgeyAzMjAsIDE4MCB9LCAvLyAxNjo5CisgICAgeyAzMjAsIDI0MCB9LCAvLyA0OjMsIFFWR0EK
KyAgICB7IDM1MiwgMjg4IH0sIC8vIENJRgorICAgIHsgNDgwLCAyNzIgfSwgLy8gMTY6OQorICAg
IHsgNDgwLCAzNjAgfSwgLy8gNDozCisgICAgeyA0ODAsIDQ4MCB9LAorICAgIHsgNjQwLCA2NDAg
fSwKKyAgICB7IDY0MCwgMzYwIH0sIC8vIDE2OjksIDM2MHAgbkhECisgICAgeyA2NDAsIDQ4MCB9
LCAvLyA0OjMKKyAgICB7IDcyMCwgNzIwIH0sCisgICAgeyA4MDAsIDYwMCB9LCAvLyA0OjMsIFNW
R0EKKyAgICB7IDk2MCwgNTQwIH0sIC8vIDE2OjksIHFIRAorICAgIHsgMTAyNCwgNjAwIH0sIC8v
IDE2OjksIFdTVkdBCisgICAgeyAxMDI0LCA3NjggfSwgLy8gNDozLCBYR0EKKyAgICB7IDEyODAs
IDk2MCB9LCAvLyA0OjMKKyAgICB7IDEyODAsIDEwMjQgfSwgLy8gNTo0LCBTWEdBCisgICAgeyAx
MjgwLCA3MjAgfSwgLy8gMTY6OSwgV1hHQQorICAgIHsgMTM2NiwgNzY4IH0sIC8vIDE2OjksIEhE
CisgICAgeyAxNjAwLCAxMjAwIH0sIC8vIDQ6MywgVVhHQQorICAgIHsgMTkyMCwgMTA4MCB9LCAv
LyAxNjo5LCAxMDgwcCBGSEQKKyAgICB7IDI1NjAsIDE0NDAgfSwgLy8gMTY6OSwgUUhECisgICAg
eyAyNTkyLCAxOTM2IH0sCisgICAgeyAzMjY0LCAyNDQ4IH0sIC8vIDM6NAorICAgIHsgMzg0MCwg
MjE2MCB9LCAvLyAxNjo5LCA0SyBVSEQKK307CiAKLSAgICAgICAgcmV0dXJuIHNpemVzOwotICAg
IH0oKSk7Ci0KLSAgICByZXR1cm4gc2l6ZXMuZ2V0KCk7Ci19CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VmFsdWVUeXBlPgogc3RhdGljIHZvaWQgdXBkYXRlTWluTWF4KFZhbHVlVHlwZSYgbWluLCBWYWx1
ZVR5cGUmIG1heCwgVmFsdWVUeXBlIHZhbHVlKQogewpAQCAtMjE4LDcgKzIwNyw3IEBAIGJvb2wg
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2U6OnN1cHBvcnRzQ2FwdHVyZVNpemUoc3RkOjpvcHRp
b25hbDxpbnQ+IHdpZHRoLCBzCiAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IHdpZHRoLnZhbHVl
KCksIGhlaWdodC52YWx1ZSgpIH0pOwogCiAgICAgaWYgKHdpZHRoKSB7Ci0gICAgICAgIGZvciAo
YXV0byYgc2l6ZSA6IHN0YW5kYXJkVmlkZW9TaXplcygpKSB7CisgICAgICAgIGZvciAoYXV0byYg
c2l6ZSA6IHN0YW5kYXJkVmlkZW9TaXplcykgewogICAgICAgICAgICAgaWYgKHdpZHRoLnZhbHVl
KCkgPT0gc2l6ZS53aWR0aCgpICYmIGZ1bmN0aW9uKHsgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpIH0pKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMjYs
NyArMjE1LDcgQEAgYm9vbCBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6c3VwcG9ydHNDYXB0
dXJlU2l6ZShzdGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHMKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGZvciAoYXV0byYgc2l6ZSA6IHN0YW5kYXJkVmlkZW9TaXplcygpKSB7
CisgICAgZm9yIChhdXRvJiBzaXplIDogc3RhbmRhcmRWaWRlb1NpemVzKSB7CiAgICAgICAgIGlm
IChoZWlnaHQudmFsdWUoKSA9PSBzaXplLmhlaWdodCgpICYmIGZ1bmN0aW9uKHsgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpIH0pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMzE2LDcgKzMwNSw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2U6OkNhcHR1cmVTaXplQW5kRnJhbWVSYXRlPiBSZWFsdGltZVZpZGVvCiAgICAgICAgICAgICAg
ICAgcmVzaXplU2l6ZSA9IHsgcmVxdWVzdGVkV2lkdGgudmFsdWUoKSwgcmVxdWVzdGVkSGVpZ2h0
LnZhbHVlKCkgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGZvciAoYXV0byYgc3RhbmRhcmRTaXplIDogc3RhbmRhcmRWaWRlb1NpemVzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgc3RhbmRhcmRTaXplIDogc3RhbmRhcmRWaWRlb1NpemVzKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0YW5kYXJkU2l6ZS53aWR0aCgpID4gcHJlc2V0LT5zaXplLndp
ZHRoKCkgfHwgc3RhbmRhcmRTaXplLmhlaWdodCgpID4gcHJlc2V0LT5zaXplLmhlaWdodCgpKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAoKHJlcXVlc3Rl
ZFdpZHRoICYmIHJlcXVlc3RlZFdpZHRoLnZhbHVlKCkgIT0gc3RhbmRhcmRTaXplLndpZHRoKCkp
IHx8IChyZXF1ZXN0ZWRIZWlnaHQgJiYgcmVxdWVzdGVkSGVpZ2h0LnZhbHVlKCkgIT0gc3RhbmRh
cmRTaXplLmhlaWdodCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDg1
M2IwYjI4M2U5MDFhMGJhNGM5NThmMWRkNzVkYTg2YTRmMzkxMzEuLjg2YzJhNGI0YWFkOTU2NGMw
MTRhOGIyMmE4MDQyM2NjYmVmMzAzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2Uu
aApAQCAtNzMsNyArNzMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVDYXBhYmlsaXRp
ZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpOwogCiAgICAgdm9pZCBkaXNwYXRj
aE1lZGlhU2FtcGxlVG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpWaWRlb1NhbXBs
ZU1ldGFkYXRhKTsKLSAgICBjb25zdCBWZWN0b3I8SW50U2l6ZT4mIHN0YW5kYXJkVmlkZW9TaXpl
cygpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBDYXB0dXJlU2l6ZUFuZEZyYW1lUmF0ZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IGM3MWY4NmEzYzI4Y2Q1ZGViZmQyZWQ4MWU3
NmY1ODU1ODliMGM4NmIuLmIwMDIxMGZjYjlkZjUzMDEwYTg0NjBlOGQzMjY0Y2EyNmZhODhiYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC0yMjksMjEgKzIyOSwxOCBAQCBwcml2
YXRlOgogCiBzdGF0aWMgVmVjdG9yPE1vY2tNZWRpYURldmljZT4mIGRldmljZXMoKQogewotICAg
IHN0YXRpYyBhdXRvIGRldmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBy
ZXR1cm4gZGVmYXVsdERldmljZXMoKTsKLSAgICB9KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZCBkZXZpY2VzID0gZGVmYXVsdERldmljZXMoKTsKICAgICByZXR1cm4gZGV2aWNlczsKIH0K
IAogc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBNb2NrTWVkaWFEZXZpY2U+JiBkZXZpY2VNYXAoKQog
ewotICAgIHN0YXRpYyBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIG1hcCA9IFtdIHsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIE1v
Y2tNZWRpYURldmljZT4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIGRldmljZSA6IGRldmljZXMo
KSkKICAgICAgICAgICAgIG1hcC5hZGQoZGV2aWNlLnBlcnNpc3RlbnRJZCwgZGV2aWNlKTsKLQog
ICAgICAgICByZXR1cm4gbWFwOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBtYXA7
CiB9CiAKQEAgLTM5Niw1NyArMzkzLDUzIEBAIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4g
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyCiAKIFZl
Y3RvcjxDYXB0dXJlRGV2aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Om1pY3Jv
cGhvbmVEZXZpY2VzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBtaWNyb3Bob25lRGV2aWNlcyA9IG1h
a2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1pY3JvcGhv
bmVEZXZpY2VzID0gW10gewogICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4gbWljcm9waG9u
ZURldmljZXM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcygpKSB7
CiAgICAgICAgICAgICBpZiAoZGV2aWNlLmlzTWljcm9waG9uZSgpKQogICAgICAgICAgICAgICAg
IG1pY3JvcGhvbmVEZXZpY2VzLmFwcGVuZCh0b0NhcHR1cmVEZXZpY2UoZGV2aWNlKSk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG1pY3JvcGhvbmVEZXZpY2VzOwotICAgIH0oKSk7Ci0KKyAg
ICB9KCk7CiAgICAgcmV0dXJuIG1pY3JvcGhvbmVEZXZpY2VzOwogfQogCiBWZWN0b3I8Q2FwdHVy
ZURldmljZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzcGVha2VyRGV2aWNlcygp
CiB7Ci0gICAgc3RhdGljIGF1dG8gc3BlYWtlckRldmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
W10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBzcGVha2VyRGV2aWNlcyA9IFtdIHsKICAg
ICAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IHNwZWFrZXJEZXZpY2VzOwogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGRldmljZSA6IGRldmljZXMoKSkgewogICAgICAgICAgICAgaWYgKGRldmlj
ZS5pc1NwZWFrZXIoKSkKICAgICAgICAgICAgICAgICBzcGVha2VyRGV2aWNlcy5hcHBlbmQodG9D
YXB0dXJlRGV2aWNlKGRldmljZSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBzcGVha2Vy
RGV2aWNlczsKLSAgICB9KCkpOwotCisgICAgfSgpOwogICAgIHJldHVybiBzcGVha2VyRGV2aWNl
czsKIH0KIAogVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6dmlkZW9EZXZpY2VzKCkKIHsKLSAgICBzdGF0aWMgYXV0byB2aWRlb0RldmljZXMgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB2aWRlb0Rl
dmljZXMgPSBbXSB7CiAgICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiB2aWRlb0RldmljZXM7
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcygpKSB7CiAgICAgICAg
ICAgICBpZiAoZGV2aWNlLmlzQ2FtZXJhKCkpCiAgICAgICAgICAgICAgICAgdmlkZW9EZXZpY2Vz
LmFwcGVuZCh0b0NhcHR1cmVEZXZpY2UoZGV2aWNlKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHZpZGVvRGV2aWNlczsKLSAgICB9KCkpOwotCisgICAgfSgpOwogICAgIHJldHVybiB2aWRl
b0RldmljZXM7CiB9CiAKIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OmRpc3BsYXlEZXZpY2VzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBkaXNwbGF5
RGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkIGRpc3BsYXlEZXZpY2VzID0gW10gewogICAgICAgICBWZWN0b3I8Q2FwdHVyZURldmljZT4g
ZGlzcGxheURldmljZXM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGV2aWNlIDogZGV2aWNl
cygpKSB7CiAgICAgICAgICAgICBpZiAoZGV2aWNlLmlzRGlzcGxheSgpKQogICAgICAgICAgICAg
ICAgIGRpc3BsYXlEZXZpY2VzLmFwcGVuZChjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3JlZW4sIGRldmljZS5wZXJzaXN0ZW50SWQpLnZh
bHVlKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBkaXNwbGF5RGV2aWNlczsKLSAgICB9
KCkpOwotCisgICAgfSgpOwogICAgIHJldHVybiBkaXNwbGF5RGV2aWNlczsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA5ZGQyYjBiNWI5NWE1
MDVhMzkyYWJhOTQ4ODJmMDUzMWYzNjVlOTBiLi5lOTQzZjg2ZDhiOGE0YmYxM2E0NDA4YjZhNGU0
ZGQwNzIwMTZmYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmNwcApAQCAtNjMsMTAgKzYzLDEwIEBAIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6
OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0CiAvLyBGSVhN
RTogV2hhdCBkb2VzIHRoZSB3b3JkICJjYWNoZSIgbWVhbiBoZXJlPwogc3RhdGljIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBtaW1lVHlwZUNhY2hlKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBjYWNoZSA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIGNhY2hlID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4gewogICAgICAgICAidmlkZW8vbW9jayIsCiAgICAgICAgICJhdWRpby9tb2NrIiwKLSAgICB9
KTsKKyAgICB9OwogICAgIHJldHVybiBjYWNoZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCAy
YjE5YTNiODYxMDc1YTUwNjkxNzFiZGI3YTMzMDkyZmMyNzY5YWY2Li41NjllOGI4OTQ1MjM2ZTFk
ZDJjNTIyODVkYjU2ODI5MmZmYzkyOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtNzIsMTIgKzcy
LDEyIEBAIHN0YXRpYyB2b2lkIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgQ3JlZGVuCiAKIHN0YXRpYyBOU09wZXJhdGlvblF1ZXVl
ICpvcGVyYXRpb25RdWV1ZUZvckFzeW5jQ2xpZW50cygpCiB7Ci0gICAgc3RhdGljIGF1dG8gcXVl
dWUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBx
dWV1ZSA9IFtdIHsKICAgICAgICAgYXV0byBxdWV1ZSA9IGFkb3B0TlMoW1tOU09wZXJhdGlvblF1
ZXVlIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIC8vIERlZmF1bHQgY29uY3VycmVudCBvcGVyYXRp
b24gY291bnQgZGVwZW5kcyBvbiBjdXJyZW50IHN5c3RlbSB3b3JrbG9hZCwgYnV0IGRlbGVnYXRl
IG1ldGhvZHMgYXJlIG1vc3RseSBpZGxpbmcgaW4gSVBDLCBzbyB3ZSBjYW4gcnVuIGFzIG1hbnkg
YXMgbmVlZGVkLgogICAgICAgICBbcXVldWUgc2V0TWF4Q29uY3VycmVudE9wZXJhdGlvbkNvdW50
Ok5TT3BlcmF0aW9uUXVldWVEZWZhdWx0TWF4Q29uY3VycmVudE9wZXJhdGlvbkNvdW50XTsKICAg
ICAgICAgcmV0dXJuIHF1ZXVlOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBxdWV1
ZS5nZXQoKS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbQppbmRleCBlMTk0MDA5NTE3ZGEyN2FmMzEyM2FmYTA2ZDRi
N2ExZmM1MmM1NTJlLi5mMTNjMzNlYmRjMmVmY2FhNDhkMzFkNjcwNzIzMmIwNzIyYTg0ZjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmll
cy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Qm91bmRhcmll
cy5tbQpAQCAtNzEsMTEgKzcxLDExIEBAIHN0YXRpYyBib29sIGlzQW1iaWd1b3VzQm91bmRhcnlD
aGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiAKIHN0YXRpYyBDRlN0cmluZ1Rva2VuaXplclJl
ZiB0b2tlbml6ZXJGb3JTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogewotICAgIHN0YXRpYyBhdXRv
IGxvY2FsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIGNvbnN0IE5ldmVy
RGVzdHJveWVkIGxvY2FsZSA9IFtdIHsKICAgICAgICAgY29uc3QgY2hhciogbG9jYWxJRCA9IGN1
cnJlbnRUZXh0QnJlYWtMb2NhbGVJRCgpOwogICAgICAgICBhdXRvIGN1cnJlbnRMb2NhbGVJRCA9
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGxvY2FsSUQpLCBzdHJsZW4obG9jYWxJ
RCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAg
ICAgICAgIHJldHVybiBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGN1cnJlbnRMb2NhbGVJRC5nZXQoKSkpOwotICAgIH0oKSk7CisgICAgfSgpOwogCiAgICAgaWYg
KCFsb2NhbGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggMWRjMTRjYzU1OTRhZThkOWJhZWVhMDU4Yzlk
MzZjM2I4MGUzOGE2MS4uNDU0ZTY0YzZiZmE3NWZhZmMyZWU5MWU3NWNkYzJmYzQ4ZTZjZDYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0xMzkxLDggKzEz
OTEsNyBAQCBhdXRvIFJlbmRlclRoZW1lOjpjb2xvckNhY2hlKE9wdGlvblNldDxTdHlsZUNvbG9y
T3B0aW9ucz4gb3B0aW9ucykgY29uc3QgLT4gQ29sbwogCiBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JiBSZW5kZXJUaGVtZTo6Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgc3lz
dGVtRm9udElEKSBjb25zdAogewotICAgIHN0YXRpYyBhdXRvIGZvbnREZXNjcmlwdGlvbnMgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQ8c3RkOjphcnJheTxGb250Q2FzY2FkZURlc2NyaXB0aW9uLCAxMD4+
KHsgfSk7Ci0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjphcnJheTxGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uLCAxMD4+IGZvbnREZXNjcmlwdGlvbnM7CiAgICAgc3dpdGNoIChzeXN0ZW1G
b250SUQpIHsKICAgICBjYXNlIENTU1ZhbHVlQ2FwdGlvbjoKICAgICAgICAgcmV0dXJuIGZvbnRE
ZXNjcmlwdGlvbnMuZ2V0KClbMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNvY29hLm1tCmluZGV4IDRiMTNiNWZiM2Q3YWUzY2E0MDgxOTdjMWQxMWJjZTMxMTVhZDg2
NmYuLjFhNjY3MzIyNzIyYWQzOGZjMTUxNGJiYjExOWVkY2UzYThlZjczZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0yMzYsNyArMjM2LDcg
QEAgU3RyaW5nIFJlbmRlclRoZW1lQ29jb2E6Om1lZGlhQ29udHJvbHNGb3JtYXR0ZWRTdHJpbmdG
b3JEdXJhdGlvbihjb25zdCBkb3VibGUgZHUKIAogRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVu
ZGVyVGhlbWVDb2NvYTo6Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgdmFs
dWVJRCkgY29uc3QKIHsKLSAgICBzdGF0aWMgYXV0byBmb250RGVzY3JpcHRpb25zID0gbWFrZU5l
dmVyRGVzdHJveWVkPHN0ZDo6YXJyYXk8Rm9udENhc2NhZGVEZXNjcmlwdGlvbiwgMTc+Pih7IH0p
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OmFycmF5PEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24sIDE3Pj4gZm9udERlc2NyaXB0aW9uczsKIAogICAgIEFTU0VSVChzdGQ6OmFsbF9vZihz
dGQ6OmJlZ2luKGZvbnREZXNjcmlwdGlvbnMuZ2V0KCkpLCBzdGQ6OmVuZChmb250RGVzY3JpcHRp
b25zLmdldCgpKSwgW10oYXV0byYgZGVzY3JpcHRpb24pIHsKICAgICAgICAgcmV0dXJuICFkZXNj
cmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwCmluZGV4IDM3MTFkOGJmNWY4NzViMjNlMmE2MzVlNjBlYWE3MGE2OGYzYWEx
MmMuLmM2OTJiNDA3NDJjMzc3Zjk5ZjBjODk0ZmI2MjU3YjYyYzQzZjQzZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8VW5pdEJlemllcj4+IHBhcnNlS2V5U3BsaW5lcyhT
dHJpbmdWaWV3IHN0cmluZykKIAogYm9vbCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBzdGF0aWMg
Y29uc3QgYXV0byBzdXBwb3J0ZWRBdHRyaWJ1dGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3VwcG9ydGVkQXR0cmlidXRlcyA9IFtdIHsKICAg
ICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFF1YWxpZmllZE5h
bWU+IHNldDsKICAgICAgICAgU1ZHVGVzdHM6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoc2V0KTsK
ICAgICAgICAgc2V0LmFkZCh7CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBTVkdBbmltYXRpb25F
bGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKICAgICAgICAgICAgIFNWR05hbWVzOjpieUF0dHIuZ2V0KCksCiAgICAgICAgIH0pOwogICAg
ICAgICByZXR1cm4gc2V0OwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihh
dHRyTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCBjODY4MzMzZTgz
NmNiN2U0ZTBiMjQ4Yzk3NzQyZjU0OTNiZTFkZGQ3Li5mM2ZmZTY0ZjFhNGQyN2Q5NTY1ZGFiNjY3
NmJkMmQ0YTZiYzRmMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC03MCw4MSAr
NzAsODEgQEAgc3RhdGljIE5FVkVSX0lOTElORSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8QXRvbVN0cmluZywgQ1NTUHJvcGUKICAgICB1c2luZyBuYW1lc3BhY2UgU1ZH
TmFtZXM7CiAKICAgICAvLyBUaGlzIGxpc3Qgc2hvdWxkIGluY2x1ZGUgYWxsIGJhc2UgQ1NTIGFu
ZCBTVkcgQ1NTIHByb3BlcnRpZXMgd2hpY2ggYXJlIGV4cG9zZWQgYXMgU1ZHIFhNTCBhdHRyaWJ1
dGVzLgotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCBhdHRyaWJ1dGVOYW1l
c1tdID0gewotICAgICAgICAmYWxpZ25tZW50X2Jhc2VsaW5lQXR0ci5nZXQoKSwKLSAgICAgICAg
JmJhc2VsaW5lX3NoaWZ0QXR0ci5nZXQoKSwKLSAgICAgICAgJmJ1ZmZlcmVkX3JlbmRlcmluZ0F0
dHIuZ2V0KCksCi0gICAgICAgICZjbGlwQXR0ci5nZXQoKSwKLSAgICAgICAgJmNsaXBfcGF0aEF0
dHIuZ2V0KCksCi0gICAgICAgICZjbGlwX3J1bGVBdHRyLmdldCgpLAotICAgICAgICAmU1ZHTmFt
ZXM6OmNvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAgJmNvbG9yX2ludGVycG9sYXRpb25BdHRyLmdl
dCgpLAotICAgICAgICAmY29sb3JfaW50ZXJwb2xhdGlvbl9maWx0ZXJzQXR0ci5nZXQoKSwKLSAg
ICAgICAgJmN1cnNvckF0dHIuZ2V0KCksCi0gICAgICAgICZjeEF0dHIuZ2V0KCksCi0gICAgICAg
ICZjeUF0dHIuZ2V0KCksCi0gICAgICAgICZTVkdOYW1lczo6ZGlyZWN0aW9uQXR0ci5nZXQoKSwK
LSAgICAgICAgJmRpc3BsYXlBdHRyLmdldCgpLAotICAgICAgICAmZG9taW5hbnRfYmFzZWxpbmVB
dHRyLmdldCgpLAotICAgICAgICAmZmlsbEF0dHIuZ2V0KCksCi0gICAgICAgICZmaWxsX29wYWNp
dHlBdHRyLmdldCgpLAotICAgICAgICAmZmlsbF9ydWxlQXR0ci5nZXQoKSwKLSAgICAgICAgJmZp
bHRlckF0dHIuZ2V0KCksCi0gICAgICAgICZmbG9vZF9jb2xvckF0dHIuZ2V0KCksCi0gICAgICAg
ICZmbG9vZF9vcGFjaXR5QXR0ci5nZXQoKSwKLSAgICAgICAgJmZvbnRfZmFtaWx5QXR0ci5nZXQo
KSwKLSAgICAgICAgJmZvbnRfc2l6ZUF0dHIuZ2V0KCksCi0gICAgICAgICZmb250X3N0cmV0Y2hB
dHRyLmdldCgpLAotICAgICAgICAmZm9udF9zdHlsZUF0dHIuZ2V0KCksCi0gICAgICAgICZmb250
X3ZhcmlhbnRBdHRyLmdldCgpLAotICAgICAgICAmZm9udF93ZWlnaHRBdHRyLmdldCgpLAotICAg
ICAgICAmZ2x5cGhfb3JpZW50YXRpb25faG9yaXpvbnRhbEF0dHIuZ2V0KCksCi0gICAgICAgICZn
bHlwaF9vcmllbnRhdGlvbl92ZXJ0aWNhbEF0dHIuZ2V0KCksCi0gICAgICAgICZpbWFnZV9yZW5k
ZXJpbmdBdHRyLmdldCgpLAotICAgICAgICAmU1ZHTmFtZXM6OmhlaWdodEF0dHIuZ2V0KCksCi0g
ICAgICAgICZrZXJuaW5nQXR0ci5nZXQoKSwKLSAgICAgICAgJmxldHRlcl9zcGFjaW5nQXR0ci5n
ZXQoKSwKLSAgICAgICAgJmxpZ2h0aW5nX2NvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAgJm1hcmtl
cl9lbmRBdHRyLmdldCgpLAotICAgICAgICAmbWFya2VyX21pZEF0dHIuZ2V0KCksCi0gICAgICAg
ICZtYXJrZXJfc3RhcnRBdHRyLmdldCgpLAotICAgICAgICAmbWFza0F0dHIuZ2V0KCksCi0gICAg
ICAgICZtYXNrX3R5cGVBdHRyLmdldCgpLAotICAgICAgICAmb3BhY2l0eUF0dHIuZ2V0KCksCi0g
ICAgICAgICZvdmVyZmxvd0F0dHIuZ2V0KCksCi0gICAgICAgICZwYWludF9vcmRlckF0dHIuZ2V0
KCksCi0gICAgICAgICZwb2ludGVyX2V2ZW50c0F0dHIuZ2V0KCksCi0gICAgICAgICZyQXR0ci5n
ZXQoKSwKLSAgICAgICAgJnJ4QXR0ci5nZXQoKSwKLSAgICAgICAgJnJ5QXR0ci5nZXQoKSwKLSAg
ICAgICAgJnNoYXBlX3JlbmRlcmluZ0F0dHIuZ2V0KCksCi0gICAgICAgICZzdG9wX2NvbG9yQXR0
ci5nZXQoKSwKLSAgICAgICAgJnN0b3Bfb3BhY2l0eUF0dHIuZ2V0KCksCi0gICAgICAgICZzdHJv
a2VBdHRyLmdldCgpLAotICAgICAgICAmc3Ryb2tlX2Rhc2hhcnJheUF0dHIuZ2V0KCksCi0gICAg
ICAgICZzdHJva2VfZGFzaG9mZnNldEF0dHIuZ2V0KCksCi0gICAgICAgICZzdHJva2VfbGluZWNh
cEF0dHIuZ2V0KCksCi0gICAgICAgICZzdHJva2VfbGluZWpvaW5BdHRyLmdldCgpLAotICAgICAg
ICAmc3Ryb2tlX21pdGVybGltaXRBdHRyLmdldCgpLAotICAgICAgICAmc3Ryb2tlX29wYWNpdHlB
dHRyLmdldCgpLAotICAgICAgICAmc3Ryb2tlX3dpZHRoQXR0ci5nZXQoKSwKLSAgICAgICAgJnRl
eHRfYW5jaG9yQXR0ci5nZXQoKSwKLSAgICAgICAgJnRleHRfZGVjb3JhdGlvbkF0dHIuZ2V0KCks
Ci0gICAgICAgICZ0ZXh0X3JlbmRlcmluZ0F0dHIuZ2V0KCksCi0gICAgICAgICZ1bmljb2RlX2Jp
ZGlBdHRyLmdldCgpLAotICAgICAgICAmdmVjdG9yX2VmZmVjdEF0dHIuZ2V0KCksCi0gICAgICAg
ICZ2aXNpYmlsaXR5QXR0ci5nZXQoKSwKLSAgICAgICAgJlNWR05hbWVzOjp3aWR0aEF0dHIuZ2V0
KCksCi0gICAgICAgICZ3b3JkX3NwYWNpbmdBdHRyLmdldCgpLAotICAgICAgICAmd3JpdGluZ19t
b2RlQXR0ci5nZXQoKSwKLSAgICAgICAgJnhBdHRyLmdldCgpLAotICAgICAgICAmeUF0dHIuZ2V0
KCksCisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IGF0dHJpYnV0ZU5hbWVzIHsKKyAg
ICAgICAgJmFsaWdubWVudF9iYXNlbGluZUF0dHIsCisgICAgICAgICZiYXNlbGluZV9zaGlmdEF0
dHIsCisgICAgICAgICZidWZmZXJlZF9yZW5kZXJpbmdBdHRyLAorICAgICAgICAmY2xpcEF0dHIs
CisgICAgICAgICZjbGlwX3BhdGhBdHRyLAorICAgICAgICAmY2xpcF9ydWxlQXR0ciwKKyAgICAg
ICAgJlNWR05hbWVzOjpjb2xvckF0dHIsCisgICAgICAgICZjb2xvcl9pbnRlcnBvbGF0aW9uQXR0
ciwKKyAgICAgICAgJmNvbG9yX2ludGVycG9sYXRpb25fZmlsdGVyc0F0dHIsCisgICAgICAgICZj
dXJzb3JBdHRyLAorICAgICAgICAmY3hBdHRyLAorICAgICAgICAmY3lBdHRyLAorICAgICAgICAm
U1ZHTmFtZXM6OmRpcmVjdGlvbkF0dHIsCisgICAgICAgICZkaXNwbGF5QXR0ciwKKyAgICAgICAg
JmRvbWluYW50X2Jhc2VsaW5lQXR0ciwKKyAgICAgICAgJmZpbGxBdHRyLAorICAgICAgICAmZmls
bF9vcGFjaXR5QXR0ciwKKyAgICAgICAgJmZpbGxfcnVsZUF0dHIsCisgICAgICAgICZmaWx0ZXJB
dHRyLAorICAgICAgICAmZmxvb2RfY29sb3JBdHRyLAorICAgICAgICAmZmxvb2Rfb3BhY2l0eUF0
dHIsCisgICAgICAgICZmb250X2ZhbWlseUF0dHIsCisgICAgICAgICZmb250X3NpemVBdHRyLAor
ICAgICAgICAmZm9udF9zdHJldGNoQXR0ciwKKyAgICAgICAgJmZvbnRfc3R5bGVBdHRyLAorICAg
ICAgICAmZm9udF92YXJpYW50QXR0ciwKKyAgICAgICAgJmZvbnRfd2VpZ2h0QXR0ciwKKyAgICAg
ICAgJmdseXBoX29yaWVudGF0aW9uX2hvcml6b250YWxBdHRyLAorICAgICAgICAmZ2x5cGhfb3Jp
ZW50YXRpb25fdmVydGljYWxBdHRyLAorICAgICAgICAmaW1hZ2VfcmVuZGVyaW5nQXR0ciwKKyAg
ICAgICAgJlNWR05hbWVzOjpoZWlnaHRBdHRyLAorICAgICAgICAma2VybmluZ0F0dHIsCisgICAg
ICAgICZsZXR0ZXJfc3BhY2luZ0F0dHIsCisgICAgICAgICZsaWdodGluZ19jb2xvckF0dHIsCisg
ICAgICAgICZtYXJrZXJfZW5kQXR0ciwKKyAgICAgICAgJm1hcmtlcl9taWRBdHRyLAorICAgICAg
ICAmbWFya2VyX3N0YXJ0QXR0ciwKKyAgICAgICAgJm1hc2tBdHRyLAorICAgICAgICAmbWFza190
eXBlQXR0ciwKKyAgICAgICAgJm9wYWNpdHlBdHRyLAorICAgICAgICAmb3ZlcmZsb3dBdHRyLAor
ICAgICAgICAmcGFpbnRfb3JkZXJBdHRyLAorICAgICAgICAmcG9pbnRlcl9ldmVudHNBdHRyLAor
ICAgICAgICAmckF0dHIsCisgICAgICAgICZyeEF0dHIsCisgICAgICAgICZyeUF0dHIsCisgICAg
ICAgICZzaGFwZV9yZW5kZXJpbmdBdHRyLAorICAgICAgICAmc3RvcF9jb2xvckF0dHIsCisgICAg
ICAgICZzdG9wX29wYWNpdHlBdHRyLAorICAgICAgICAmc3Ryb2tlQXR0ciwKKyAgICAgICAgJnN0
cm9rZV9kYXNoYXJyYXlBdHRyLAorICAgICAgICAmc3Ryb2tlX2Rhc2hvZmZzZXRBdHRyLAorICAg
ICAgICAmc3Ryb2tlX2xpbmVjYXBBdHRyLAorICAgICAgICAmc3Ryb2tlX2xpbmVqb2luQXR0ciwK
KyAgICAgICAgJnN0cm9rZV9taXRlcmxpbWl0QXR0ciwKKyAgICAgICAgJnN0cm9rZV9vcGFjaXR5
QXR0ciwKKyAgICAgICAgJnN0cm9rZV93aWR0aEF0dHIsCisgICAgICAgICZ0ZXh0X2FuY2hvckF0
dHIsCisgICAgICAgICZ0ZXh0X2RlY29yYXRpb25BdHRyLAorICAgICAgICAmdGV4dF9yZW5kZXJp
bmdBdHRyLAorICAgICAgICAmdW5pY29kZV9iaWRpQXR0ciwKKyAgICAgICAgJnZlY3Rvcl9lZmZl
Y3RBdHRyLAorICAgICAgICAmdmlzaWJpbGl0eUF0dHIsCisgICAgICAgICZTVkdOYW1lczo6d2lk
dGhBdHRyLAorICAgICAgICAmd29yZF9zcGFjaW5nQXR0ciwKKyAgICAgICAgJndyaXRpbmdfbW9k
ZUF0dHIsCisgICAgICAgICZ4QXR0ciwKKyAgICAgICAgJnlBdHRyLAogICAgIH07CiAKICAgICBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgQ1NTUHJv
cGVydHlJRD4gbWFwOwogCiAgICAgZm9yIChhdXRvJiBuYW1lIDogYXR0cmlidXRlTmFtZXMpIHsK
LSAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lID0gbmFtZS0+bG9jYWxOYW1lKCk7
CisgICAgICAgIGF1dG8mIGxvY2FsTmFtZSA9IG5hbWUtPmdldCgpLmxvY2FsTmFtZSgpOwogICAg
ICAgICBtYXAuYWRkKGxvY2FsTmFtZSwgY3NzUHJvcGVydHlJRChsb2NhbE5hbWUpKTsKICAgICB9
CiAKQEAgLTcxMywxMDkgKzcxMywxMDkgQEAgY29uc3QgUmVuZGVyU3R5bGUqIFNWR0VsZW1lbnQ6
OmNvbXB1dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKIAogUXVhbGlm
aWVkTmFtZSBTVkdFbGVtZW50OjphbmltYXRhYmxlQXR0cmlidXRlRm9yTmFtZShjb25zdCBBdG9t
U3RyaW5nJiBsb2NhbE5hbWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gYW5pbWF0YWJsZUF0
dHJpYnV0ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBzdGF0aWMgY29uc3Qg
UXVhbGlmaWVkTmFtZSogY29uc3QgbmFtZXNbXSA9IHsKLSAgICAgICAgICAgICZIVE1MTmFtZXM6
OmNsYXNzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6YW1wbGl0dWRlQXR0ci5n
ZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6YXppbXV0aEF0dHIuZ2V0KCksCi0gICAgICAg
ICAgICAmU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNW
R05hbWVzOjpiaWFzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6Y2xpcFBhdGhV
bml0c0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmN4QXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6Y3lBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
OjpkaWZmdXNlQ29uc3RhbnRBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpkaXZp
c29yQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZHhBdHRyLmdldCgpLAotICAg
ICAgICAgICAgJlNWR05hbWVzOjpkeUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6
OmVkZ2VNb2RlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZWxldmF0aW9uQXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZXhwb25lbnRBdHRyLmdldCgpLAotICAg
ICAgICAgICAgJlNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjpmeEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmZ5QXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6aGVpZ2h0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdO
YW1lczo6aW4yQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6aW5BdHRyLmdldCgp
LAotICAgICAgICAgICAgJlNWR05hbWVzOjppbnRlcmNlcHRBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjprMUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmsyQXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6azNBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjprNEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Omtlcm5l
bE1hdHJpeEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIuZ2V0KCksCi0gICAgICAg
ICAgICAmU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdO
YW1lczo6bWFya2VyV2lkdGhBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjptYXNr
Q29udGVudFVuaXRzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6bWFza1VuaXRz
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6bWV0aG9kQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6bW9kZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFt
ZXM6Om51bU9jdGF2ZXNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpvZmZzZXRB
dHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpvcGVyYXRvckF0dHIuZ2V0KCksCi0g
ICAgICAgICAgICAmU1ZHTmFtZXM6Om9yZGVyQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdO
YW1lczo6b3JpZW50QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cGF0aExlbmd0
aEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNB
dHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ci5n
ZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6cG9pbnRzQXRYQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZT
VkdOYW1lczo6cG9pbnRzQXRZQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cG9p
bnRzQXRaQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
LmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmU1ZHTmFtZXM6OnJhZGl1c0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OnJBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpyZWZYQXR0ci5n
ZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cmVmWUF0dHIuZ2V0KCksCi0gICAgICAgICAg
ICAmU1ZHTmFtZXM6OnJlc3VsdEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnJv
dGF0ZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnJ4QXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6cnlBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
OjpzY2FsZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnNlZWRBdHRyLmdldCgp
LAotICAgICAgICAgICAgJlNWR05hbWVzOjpzbG9wZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OnNwYWNpbmdBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpzcGVj
dWxhckNvbnN0YW50QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6c3BlY3VsYXJF
eHBvbmVudEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05h
bWVzOjpzdXJmYWNlU2NhbGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp0YWJs
ZVZhbHVlc0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnRhcmdldEF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnRhcmdldFhBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjp0YXJnZXRZQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6
dHJhbnNmb3JtQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6dHlwZUF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnZhbHVlc0F0dHIuZ2V0KCksCi0gICAgICAgICAg
ICAmU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp3
aWR0aEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OngxQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6eDJBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
Ojp4QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnkxQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZTVkdOYW1lczo6eTJBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp5QXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnpBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNW
R05hbWVzOjpocmVmQXR0ci5nZXQoKSwKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYW5pbWF0
YWJsZUF0dHJpYnV0ZXMgPSBbXSB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJh
eSBuYW1lcyB7CisgICAgICAgICAgICAmSFRNTE5hbWVzOjpjbGFzc0F0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmF6aW11
dGhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ciwKKyAgICAg
ICAgICAgICZTVkdOYW1lczo6Ymlhc0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmNsaXBQ
YXRoVW5pdHNBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpjeEF0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6OmN5QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZGlmZnVzZUNvbnN0
YW50QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZGl2aXNvckF0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6OmR4QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZHlBdHRyLAorICAg
ICAgICAgICAgJlNWR05hbWVzOjplZGdlTW9kZUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6
OmVsZXZhdGlvbkF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwKKyAg
ICAgICAgICAgICZTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsCisgICAg
ICAgICAgICAmU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1l
czo6ZnhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpmeUF0dHIsCisgICAgICAgICAgICAm
U1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
Z3JhZGllbnRVbml0c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmhlaWdodEF0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6OmluMkF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6Omlu
QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6aW50ZXJjZXB0QXR0ciwKKyAgICAgICAgICAg
ICZTVkdOYW1lczo6azFBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjprMkF0dHIsCisgICAg
ICAgICAgICAmU1ZHTmFtZXM6OmszQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6azRBdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjprZXJuZWxNYXRyaXhBdHRyLAorICAgICAgICAgICAg
JlNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
bGVuZ3RoQWRqdXN0QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bGltaXRpbmdDb25lQW5n
bGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLAorICAgICAg
ICAgICAgJlNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6
Om1hcmtlcldpZHRoQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0
c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6Om1ldGhvZEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6Om1vZGVBdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjpudW1PY3RhdmVzQXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6b2Zmc2V0QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6b3BlcmF0b3JBdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjpvcmRlckF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6Om9yaWVudEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLAor
ICAgICAgICAgICAgJlNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ciwKKyAgICAgICAg
ICAgICZTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6OnBhdHRlcm5Vbml0c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnBvaW50c0F0WEF0
dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsCisgICAgICAgICAgICAm
U1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnByZXNlcnZl
QWxwaGFBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLAorICAgICAgICAg
ICAgJlNWR05hbWVzOjpyYWRpdXNBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpyQXR0ciwK
KyAgICAgICAgICAgICZTVkdOYW1lczo6cmVmWEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6
OnJlZllBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpyZXN1bHRBdHRyLAorICAgICAgICAg
ICAgJlNWR05hbWVzOjpyb3RhdGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpyeEF0dHIs
CisgICAgICAgICAgICAmU1ZHTmFtZXM6OnJ5QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
c2NhbGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzZWVkQXR0ciwKKyAgICAgICAgICAg
ICZTVkdOYW1lczo6c2xvcGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzcGFjaW5nQXR0
ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIsCisgICAgICAg
ICAgICAmU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLAorICAgICAgICAgICAgJlNWR05h
bWVzOjpzcHJlYWRNZXRob2RBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzdGFydE9mZnNl
dEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsCisgICAgICAg
ICAgICAmU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
c3VyZmFjZVNjYWxlQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjp0YXJnZXRBdHRyLAorICAgICAgICAgICAgJlNWR05h
bWVzOjp0YXJnZXRYQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6dGFyZ2V0WUF0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6OnR5cGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp2YWx1ZXNBdHRyLAorICAgICAg
ICAgICAgJlNWR05hbWVzOjp2aWV3Qm94QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6d2lk
dGhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp4MUF0dHIsCisgICAgICAgICAgICAmU1ZH
TmFtZXM6OngyQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6eEF0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVz
Ojp5MUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnkyQXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6eUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JB
dHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp6QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1l
czo6aHJlZkF0dHIsCiAgICAgICAgIH07CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPiBtYXA7CiAgICAgICAg
IGZvciAoYXV0byYgbmFtZSA6IG5hbWVzKSB7Ci0gICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1hcC5hZGQobmFtZS0+bG9jYWxOYW1lKCksICpuYW1lKTsKKyAgICAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbWFwLmFkZChuYW1lLT5nZXQoKS5sb2NhbE5hbWUoKSwgKm5hbWUpOwogICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbWFwOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJl
dHVybiBhbmltYXRhYmxlQXR0cmlidXRlcy5nZXQoKS5nZXQobG9jYWxOYW1lKTsKIH0KIApAQCAt
ODY0LDcgKzg2NCw3IEBAIENTU1Byb3BlcnR5SUQgU1ZHRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZv
clNWR0F0dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICBpZiAoIWF0dHJOYW1l
Lm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlJbnZh
bGlkOwogCi0gICAgc3RhdGljIGNvbnN0IGF1dG8gcHJvcGVydGllcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChjcmVhdGVBdHRyaWJ1dGVOYW1lVG9DU1NQcm9wZXJ0eUlETWFwKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZCBwcm9wZXJ0aWVzID0gY3JlYXRlQXR0cmlidXRlTmFtZVRvQ1NTUHJv
cGVydHlJRE1hcCgpOwogICAgIHJldHVybiBwcm9wZXJ0aWVzLmdldCgpLmdldChhdHRyTmFtZS5s
b2NhbE5hbWUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAKaW5kZXggNGU0YzM5MTUxNWVmOTEyMTBhM2YyNTY1NTEyYzhlNzU4ZWQ3
MjYyMi4uOWRlYTA3ZTM5NmEwOWM1MzQxMWM0NWQ2MzljNWRhZTJkMDk3NGNhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTQ1Nyw3
ICs0NTcsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpwYXJzZUJlZ2luT3JFbmQoY29uc3QgU3Ry
aW5nJiBwYXJzZVN0cmluZywgQmVnaW5PckVuZCBiZWdpbgogCiBib29sIFNWR1NNSUxFbGVtZW50
Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
LSAgICBzdGF0aWMgY29uc3QgYXV0byBzdXBwb3J0ZWRBdHRyaWJ1dGVzID0gbWFrZU5ldmVyRGVz
dHJveWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxRdWFsaWZpZWRO
YW1lPiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gewog
ICAgICAgICBTVkdOYW1lczo6YmVnaW5BdHRyLAogICAgICAgICBTVkdOYW1lczo6ZW5kQXR0ciwK
ICAgICAgICAgU1ZHTmFtZXM6OmR1ckF0dHIsCkBAIC00NjgsNyArNDY4LDcgQEAgYm9vbCBTVkdT
TUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAgICAgICAgIFNWR05hbWVzOjphdHRyaWJ1dGVOYW1lQXR0ciwKICAgICAgICAgU1ZH
TmFtZXM6OmhyZWZBdHRyLAogICAgICAgICBYTGlua05hbWVzOjpocmVmQXR0ciwKLSAgICB9KTsK
KyAgICB9OwogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNW
R0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IGNlMWM2NTE3MzVkMTY5NGJjNzNlNmNiNGJhZjczYzhm
OTM5YzQwODQuLjMyMmUzYmUwZjc1ZGQwZjQ3YzUxZjgzNTE1M2EyMGNjYzdkZDkzMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtNzE1LDcgKzcxNSw3IEBAIHN0YXRp
YyBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBGdW5jdGlv
bk1hcFZhbHVlPiBjcmVhdGVGCiAKIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gRnVuY3Rpb246
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIG51bUFyZ3VtZW50cykKIHsKLSAg
ICBzdGF0aWMgY29uc3QgYXV0byBmdW5jdGlvbk1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVh
dGVGdW5jdGlvbk1hcCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZnVuY3Rpb25NYXAg
PSBjcmVhdGVGdW5jdGlvbk1hcCgpOwogCiAgICAgYXV0byBpdCA9IGZ1bmN0aW9uTWFwLmdldCgp
LmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ID09IGZ1bmN0aW9uTWFwLmdldCgpLmVuZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFBhcnNlci5jcHAKaW5kZXggY2UyZDA4MTUyYzZiZDI1MGNjZTg5MTg2Yjkw
ODBiODdjZmQzNjE1Yi4uZTMxNTY1ZWJlNzhkOWJmZGFjYzBmNmExZWEwYTU3MmU4NTYyYjg5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGlj
IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4
aXM+IGNyZWF0ZUF4aXNOYW0KIAogc3RhdGljIGJvb2wgcGFyc2VBeGlzTmFtZShjb25zdCBTdHJp
bmcmIG5hbWUsIFN0ZXA6OkF4aXMmIHR5cGUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gYXhp
c05hbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZUF4aXNOYW1lc01hcCgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQgYXhpc05hbWVzID0gY3JlYXRlQXhpc05hbWVzTWFwKCk7CiAg
ICAgYXV0byBpdCA9IGF4aXNOYW1lcy5nZXQoKS5maW5kKG5hbWUpOwogICAgIGlmIChpdCA9PSBh
eGlzTmFtZXMuZ2V0KCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDM1
NWJiODRmY2JhN2Q2ZWFiYWE5NzUyMDIyNzZiZTlhYjNlNmZmYjcuLjAxYjc1ZTQ4N2FlNDUyZmJh
NGRmNjkwOGU3MGNlNzlmNjQ4NTkyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHN0YXRp
YyBib29sIG5lZWRzTmV3Q3JlYXRlVGFibGVTY2hlbWEoY29uc3QgU3RyaW5nJiBzY2hlbWEpCiAK
IGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRh
YmxlQW5kSW5kZXhQYWlyPiYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmV4
cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKQogewotICAgIHN0YXRpYyBhdXRvIGV4cGVjdGVk
VGFibGVBbmRJbmRleFF1ZXJpZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+IHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyA9IE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5k
ZXhQYWlyPiB7CiAgICAgICAgIHsgIk9ic2VydmVkRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8
U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZU9ic2VydmVkRG9tYWluLCBzdGQ6
Om51bGxvcHQpIH0sCiAgICAgICAgIHsgIlRvcExldmVsRG9tYWlucyJfcywgc3RkOjptYWtlX3Bh
aXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRvcExldmVsRG9tYWlucywg
c3RkOjpudWxsb3B0KSB9LAogICAgICAgICB7ICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURv
bWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+Pihj
cmVhdGVTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMsIHN0cmlwSW5kZXhRdWVyeVRv
TWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWlucykpIH0sCkBAIC0yNjYsOCArMjY2LDcgQEAgY29uc3QgTWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBSZXNv
dXIKICAgICAgICAgeyAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVV
bmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pKSB9LAogICAgICAgICB7ICJT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywg
c3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b20sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkpIH0sCiAgICAgICAgIHsgIk9wZXJhdGluZ0Rh
dGVzIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3Jl
YXRlT3BlcmF0aW5nRGF0ZXMsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVh
dGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzKSkgfSwKLSAgICB9KTsKLSAgICAKKyAgICB9Owog
ICAgIHJldHVybiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmNwcAppbmRleCA3YTJjODUwZDE5NmIzZjZlNzUyOWYyMWMyZjBhYzEzZWQzOGZhNjRm
Li45MDMwMjJmYTBmOTI1OWM4ZTc0MDY5MDUxMjM1NGFkNWM0YzkyYmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YXRhYmFzZS5jcHAKQEAgLTEwMCwxMSArMTAwLDExIEBAIERhdGFiYXNlOjp+RGF0YWJhc2UoKQog
CiBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBU
YWJsZUFuZEluZGV4UGFpcj4mIERhdGFiYXNlOjpleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVz
KCkKIHsKLSAgICBzdGF0aWMgYXV0byBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxT
dHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGV4
cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4gewogICAgICAgICB7ICJQQ01P
YnNlcnZlZERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxT
dHJpbmc+PihjcmVhdGVQQ01PYnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0KSB9LAogICAgICAg
ICB7ICJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtlX3Bh
aXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3Jl
YXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkpIH0sCiAg
ICAgICAgIHsgIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywgc3RkOjptYWtl
X3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZUF0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNy
ZWF0ZVVuaXF1ZUluZGV4QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgfSwKLSAg
ICB9KTsKKyAgICB9OwogCiAgICAgcmV0dXJuIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJv
d3NlckNoZWNrcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93
c2VyQ2hlY2tzLm1tCmluZGV4IDE1YmI0NjVlMGY5YzIxOGNjMWE0NjZiZjdkOTkzNDVjZWQwODUw
YzcuLmE4MmNhNmQ3N2NlOTg3Mjk5MDVmMDAxM2FhN2I3YWExMzRiZTY1YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1t
CkBAIC01NSw5ICs1NSw5IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGluZyhjb25zCiAgICAgaWYgKGJ1bmRs
ZUlELmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgc3RhdGlj
IGF1dG8gYXBwQm91bmREb21haW5MaXN0ID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBh
Y3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYXBwQm91bmREb21h
aW5MaXN0ID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywg
VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gewogICAgICAgICB7ImluQXBwQnJv
d3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiB7IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcoIjEyNy4wLjAuMSIpIH19LAotICAgIH0pOworICAgIH07
CiAKICAgICBhdXRvIGFwcEJvdW5kRG9tYWluSXRlciA9IGFwcEJvdW5kRG9tYWluTGlzdC0+Zmlu
ZChidW5kbGVJRCk7CiAgICAgaWYgKGFwcEJvdW5kRG9tYWluSXRlciAhPSBhcHBCb3VuZERvbWFp
bkxpc3QtPmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2Fu
ZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJv
eEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IGFjMmUzNDc5OTdkZjkyNGI5NzY1MTIwMmQ3OWExZWQ3
ZDlmMWE2MWUuLmVjYzliOTg4Y2MzOWVlODkyMzA3NzlkZDUzYzJlYTBjMTA4NmZkOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2Eu
bW0KQEAgLTIxOSw3ICsyMTksNyBAQCBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZQogICAgIEhhbmRs
ZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIAotICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRl
KHBhdGgudXRmOCgpLmRhdGEoKSwgdHlwZSwgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9u
OjpGbGFnczo6RG9Ob3RDYW5vbmljYWxpemUpOworICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKHBhdGgudXRmOCgpLmRhdGEoKSwgdHlw
ZSwgc3RkOjpudWxsb3B0LCBGbGFnczo6RG9Ob3RDYW5vbmljYWxpemUpOwogICAgIGlmICghaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBj
cmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yMzIsMjEgKzIzMiwyMSBAQCBhdXRv
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUg
dHlwZSkgLT4gc3RkOjpvcHRpbwogICAgIHJldHVybiBjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2
aW5nUGF0aChyZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24ocGF0aCksIHR5cGUpOwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKGNvbnN0IFZlY3RvcjxUPiYgcmVzb3Vy
Y2VzLCBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4oY29u
c3QgVCYpPiYmIGNyZWF0ZUZ1bmN0aW9uKQordGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvbiwg
dHlwZW5hbWUgRnVuY3Rpb24+IHN0YXRpYyBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKGNvbnN0IENvbGxlY3Rpb24mIHJlc291cmNlcywg
Y29uc3QgRnVuY3Rpb24mIGNyZWF0ZUZ1bmN0aW9uKQogewogICAgIFZlY3RvcjxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IGhhbmRsZUFycmF5OworICAgIGhhbmRsZUFycmF5LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoc3RkOjpzaXplKHJlc291cmNlcykpOwogICAgIGZvciAoY29uc3QgYXV0byYg
cmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gY3JlYXRl
RnVuY3Rpb24ocmVzb3VyY2UpKQotICAgICAgICAgICAgaGFuZGxlQXJyYXkuYXBwZW5kKFdURk1v
dmUoKmhhbmRsZSkpOworICAgICAgICAgICAgaGFuZGxlQXJyYXkudW5jaGVja2VkQXBwZW5kKFdU
Rk1vdmUoKmhhbmRsZSkpOwogICAgIH0KICAgICByZXR1cm4gaGFuZGxlQXJyYXk7CiB9CiAKIGF1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlM
aXRlcmFsIGxvZ0xhYmVsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpIC0+IFZlY3RvcjxI
YW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXM8U3RyaW5nPihw
YXRocywgWyZsb2dMYWJlbF0gKGNvbnN0IFN0cmluZyYgcGF0aCkgewotICAgICAgICBhdXRvIGhh
bmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJj
ZXMocGF0aHMsIFsmbG9nTGFiZWxdIChjb25zdCBTdHJpbmcmIHBhdGgpIHsKKyAgICAgICAgYXV0
byBoYW5kbGUgPSBjcmVhdGVIYW5kbGUocGF0aCwgVHlwZTo6UmVhZE9ubHkpOwogICAgICAgICBp
ZiAoIWhhbmRsZSkgewogICAgICAgICAgICAgLy8gVGhpcyBjYW4gbGVnaXRpbWF0ZWx5IGZhaWwg
aWYgYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZSBpcyBkZWxldGVkIGFmdGVyIHRoZSBm
aWxlIHdhcyBjaG9zZW4uCiAgICAgICAgICAgICAvLyBXZSBhbHNvIGhhdmUgcmVwb3J0cyBvZiBj
YXNlcyB3aGVyZSB0aGlzIGxpa2VseSBmYWlscyBmb3Igc29tZSB1bmtub3duIHJlYXNvbiwgPHJk
YXI6Ly9wcm9ibGVtLzEwMTU2NzEwPi4KQEAgLTI2Miw3ICsyNjIsNyBAQCBhdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgpIC0+CiAgICAgU3RyaW5nIHJlc29sdmVkUGF0aCA9IHJlc29sdmVBbmRDcmVhdGVSZWFk
V3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKHBhdGgpOwogICAgIGlmIChyZXNvbHZl
ZFBhdGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJu
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHJlc29s
dmVkUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlKTsKKyAgICByZXR1cm4g
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZWRQYXRoLCBUeXBlOjpSZWFk
V3JpdGUpOwogfQogCiBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBv
cmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUgdHlwZSkgLT4gc3RkOjpvcHRpb25h
bDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PgpAQCAtMzIzLDE1ICszMjMsMjAgQEAgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBz
ZXJ2aWNlLCBzdGQ6Om9wdGkKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRv
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3Rv
cjxBU0NJSUxpdGVyYWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBh
dWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVk
aXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KIHsKLSAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlczxBU0NJSUxpdGVyYWw+KHNlcnZpY2Vz
LCBbYXVkaXRUb2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJSUxpdGVyYWwmIHNlcnZpY2UpIC0+IHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPiB7Ci0gICAgICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2VuLCBmbGFn
cyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoc2VydmljZXMsIFthdWRp
dFRva2VuLCBmbGFnc10gKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlvbmFsPEhh
bmRsZT4geworICAgICAgICBhdXRvIGhhbmRsZSA9IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
c2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFuZGxlKTsKICAg
ICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9KTsKIH0KIAorYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgoreworICAg
IHJldHVybiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuIHsgc2VydmljZXMuYmVnaW4o
KSwgc2VydmljZXMuc2l6ZSgpIH0sIGF1ZGl0VG9rZW4sIGZsYWdzKTsKK30KKwogYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4KIHsKICAgICBIYW5kbGUgaGFuZGxlOwpAQCAtMzYwLDEwICszNjUsMTAgQEAgYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0
ZXJhbCBpb0tpdENsYXMKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25z
dCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxI
YW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNz
RXh0ZW5zaW9ucyhTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3Mp
IC0+IFZlY3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJj
ZXM8QVNDSUlMaXRlcmFsPihpb2tpdENsYXNzZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKGNvbnN0
IEFTQ0lJTGl0ZXJhbCYgaW9raXRDbGFzcykgewotICAgICAgICBhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oaW9raXRDbGFz
cywgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3Vy
Y2VzKGlva2l0Q2xhc3NlcywgW2F1ZGl0VG9rZW4sIGZsYWdzXSAoQVNDSUlMaXRlcmFsIGlva2l0
Q2xhc3MpIHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNz
RXh0ZW5zaW9uKGlva2l0Q2xhc3MsIGF1ZGl0VG9rZW4sIGZsYWdzKTsKICAgICAgICAgQVNTRVJU
KGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBoYW5kbGU7CiAgICAgfSk7CkBAIC00MzUsNyArNDQw
LDcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgVmVj
dG9yPEhhbmRsZT4mIGhhbmRsZUFycmF5KQogICAgICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBib29sIG9rID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CisgICAgICAgIGJvb2wg
b2sgPSBjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKICAgICAgICAgQVNTRVJUKG9rKTsKICAg
ICAgICAgYWxsU3VjY2VlZGVkICY9IG9rOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRi
b3hFeHRlbnNpb24uaAppbmRleCA0Y2I1YmU3MTAwOTRiNzBkOTVhNzg5M2E4NWM3MzMxMjQ4M2Ex
Mzg1Li41ZGRhMzBjZDdmNjE3OWY4MzhjOTBkYzJhZjU3ODNiYTUyMWU2ZTkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC05MiwxMCArOTIsMTEgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yR2VuZXJp
Y0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3MpOwogI2lmIEhBVkUoQVVESVRf
VE9LRU4pCiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2Vu
X3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBWZWN0
b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChjb25zdCBWZWN0b3I8QVNDSUlM
aXRlcmFsPiYgc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNl
dDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNl
cywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdz
OjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1h
Y2hMb29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2Vydmlj
ZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFn
czo6RGVmYXVsdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5k
bGVGb3JSZWFkQnlBdWRpdFRva2VuKGNvbnN0IFN0cmluZyYgcGF0aCwgYXVkaXRfdG9rZW5fdCk7
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJT0tpdENs
YXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRp
YyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoY29u
c3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0
aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKFNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAjZW5kaWYKICAg
ICB+U2FuZGJveEV4dGVuc2lvbigpOwogCkBAIC0xMTcsMTggKzExOCwyMyBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogCitTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjb25z
dCBTdHJpbmcmIHBhdGgpOworU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIHBhdGgpOworU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJl
Y3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7CisKICNpZiAhRU5B
QkxFKFNBTkRCT1hfRVhURU5TSU9OUykKKwogaW5saW5lIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZTo6SGFuZGxlKCkgeyB9CiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjp+SGFuZGxl
KCkgeyB9CiBpbmxpbmUgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdCB7IH0KLWlubGluZSBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JikgeyByZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHsgfTsgfQoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU6OmRlY29kZShJUEM6OkRlY29kZXImKSB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUg
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShIYW5kbGUm
JikgeyByZXR1cm4gbnVsbHB0cjsgfQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7
IHJldHVybiBIYW5kbGUgeyB9OyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVyYWwsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JikgLT4gVmVjdG9yPEhhbmRsZT4geyByZXR1cm4geyB9OyB9CiBpbmxpbmUgYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJp
bmcmLCBUeXBlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsg
fQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVy
biBIYW5kbGUgeyB9OyB9Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgLypwcmVmaXgqLywgVHlwZSkgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6Om9wdGlv
bmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgc3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5n
PiB7IEhhbmRsZSB7IH0sIFN0cmluZyB7IH0gfSB9OyB9Ci1pbmxpbmUgYXV0byBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCAvKmV4
dGVuc2lvbkNsYXNzKi8pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUg
eyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1w
b3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWly
PEhhbmRsZSwgU3RyaW5nPj4geyByZXR1cm4gc3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPiB7IH07
IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNF
eHRlbnNpb24oQVNDSUlMaXRlcmFsKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4g
SGFuZGxlIHsgfTsgfQogaW5saW5lIFNhbmRib3hFeHRlbnNpb246On5TYW5kYm94RXh0ZW5zaW9u
KCkgeyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2UoKSB7IHJldHVybiB0
cnVlOyB9CiBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkgeyByZXR1cm4g
dHJ1ZTsgfQpAQCAtMTM4LDEwICsxNDQsNyBAQCBpbmxpbmUgYm9vbCBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgVmVjdG9yPEhhbmRsZT4mKSB7IHJldHVybgogaW5s
aW5lIFN0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkgeyByZXR1cm4gcGF0aDsgfQogaW5saW5lIFN0cmluZyByZXNvbHZlUGF0aEZvclNhbmRi
b3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKSB7IHJldHVybiBwYXRoOyB9CiBpbmxpbmUg
U3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1cm4gcGF0aDsgfQotI2Vsc2UKLVN0cmluZyBz
dHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1TdHJp
bmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7Ci1T
dHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBwYXRoKTsKKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBjYTM1N2FkZTg4MTJiMWUyYWQ3YmQ0MzMzMTFjNzA0NTJkNDhkYTc1Li43MTcxMDM2NDI5
NmJlNzQyYTgzMTJmYzAwODM2ZmY5YThmNTk2ODliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtODUsMTEgKzg1LDExIEBAIHN0YXRp
YyBib29sIHNob3VsZENyZWF0ZUFwcGxlQ2FtZXJhU2VydmljZVNhbmRib3hFeHRlbnNpb24oKQog
c3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBub25Ccm93c2VyU2VydmljZXMoKQog
ewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNl
cnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQgc2VydmljZXMgPSBWZWN0b3I8QVNDSUlMaXRlcmFsPiB7CiAg
ICAgICAgICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLAogICAgICAgICAiY29tLmFwcGxlLlBv
d2VyTWFuYWdlbWVudC5jb250cm9sIl9zLAogICAgICAgICAiY29tLmFwcGxlLmZyb250Ym9hcmQu
c3lzdGVtYXBwc2VydmljZXMiX3MKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBzZXJ2aWNl
czsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggMTIwYjkwNDg3MmJkZjI4ODAxN2U3NzA4YzYzMjdlNTU2YWU0ZDI1Ny4uMWU1NTU5OWFmZWZj
NDRlMWQ0NGJiZWI3MTQzZDExZGE2ZjczNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04MDQ5LDIzICs4MDQ5LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiB0
ZXJtaW5hCiB9CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKSAmJiBQTEFURk9STShD
T0NPQSkKLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgYXR0YWNobWVudEVsZW1l
bnRTZXJ2aWNlcygpCitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGF0dGFjaG1lbnRF
bGVtZW50U2VydmljZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6YXJyYXkgewogICAgICAgICAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgICAgICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9z
LAogI2VuZGlmCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc2VydmljZXM7CiB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVy
YWw+JiBncHVJT0tpdENsYXNzZXMoKQorc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBn
cHVJT0tpdENsYXNzZXMoKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0
YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJ
SUxpdGVyYWw+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2VydmljZXMgewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICJBR1hEZXZpY2VVc2VyQ2xpZW50Il9z
LAogICAgICAgICAiSU9HUFUiX3MsCkBAIC04MDkyLDI3ICs4MDkxLDI1IEBAIHN0YXRpYyBjb25z
dCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgZ3B1SU9LaXRDbGFzc2VzKCkKICNpZiBQTEFURk9STShN
QUMpICYmIENQVShBUk02NCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgIklPU3Vy
ZmFjZUFjY2VsZXJhdG9yQ2xpZW50Il9zLAogI2VuZGlmCi0gICAgfSk7CisgICAgfTsKICAgICBy
ZXR1cm4gc2VydmljZXM7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYg
Z3B1TWFjaFNlcnZpY2VzKCkKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gZ3B1TWFj
aFNlcnZpY2VzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBzdGF0aWMg
Y29uc3QgYXV0byBzZXJ2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRl
cmFsPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNlcnZpY2VzIHsKICAgICAg
ICAgImNvbS5hcHBsZS5NVExDb21waWxlclNlcnZpY2UiX3MsCiAjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICAgICAgImNvbS5hcHBsZS5jdm1zU2VydiJfcywK
ICNlbmRpZgotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIHNlcnZpY2VzOwogfQogCiAvLyBG
SVhNRSgyMDc3MTYpOiBUaGUgZm9sbG93aW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gdGhlIEdQ
VSBwcm9jZXNzIGlzIGNvbXBsZXRlLgotc3RhdGljIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+
JiBtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMoKQorc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRl
cmFsPiBtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMoKQogewotICAgIEFTU0VSVChpc01haW5SdW5M
b29wKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJy
YXkgc2VydmljZXMgewogICAgICAgICAiY29tLmFwcGxlLmF1ZGlvLkF1ZGlvQ29tcG9uZW50UHJl
ZnMiX3MsICJjb20uYXBwbGUuYXVkaW8uQXVkaW9Db21wb25lbnRSZWdpc3RyYXIiX3MsCiAgICAg
ICAgICJjb20uYXBwbGUuYXVkaW8uQXVkaW9RdWV1ZVNlcnZlciJfcywgImNvbS5hcHBsZS5jb3Jl
bWVkaWEuZW5kcG9pbnQueHBjIl9zLAogICAgICAgICAiY29tLmFwcGxlLmNvcmVtZWRpYS5yb3V0
ZWRpc2NvdmVyZXIueHBjIl9zLCAiY29tLmFwcGxlLmNvcmVtZWRpYS5yb3V0aW5nY29udGV4dC54
cGMiX3MsCkBAIC04MTQ0LDIwICs4MTQxLDIwIEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlM
aXRlcmFsPiYgbWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCkKICAgICAgICAgImNvbS5hcHBsZS5j
b3JlbWVkaWEuc2FtcGxlYnVmZmVyY29uc3VtZXIueHBjIl9zLAogI2VuZGlmCiAjZW5kaWYKLSAg
ICB9KTsKKyAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0KIAotc3RhdGljIGNvbnN0IFZl
Y3RvcjxBU0NJSUxpdGVyYWw+JiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKQorc3RhdGljIFNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKQogewotICAg
IHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxB
U0NJSUxpdGVyYWw+IHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQotI2lmIENQVShBUk02NCkKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcyB7CisjaWYgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpKSAmJiBDUFUoQVJNNjQpCiAgICAgICAgICJBcHBsZUFWRFVzZXJDbGllbnQi
X3MsCiAjZW5kaWYKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQog
ICAgICAgICAiUm9vdERvbWFpblVzZXJDbGllbnQiX3MsCiAjZW5kaWYKLSAgICB9KTsKKyAgICB9
OwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCmluZGV4IDA0NzM1ZGRkYmUxMmVjZWU1YjVjYjNl
ODM2ODk3ZDQ4YmQwYTlmNDUuLjdhZmE2YTMxOTc5YWViNTE3NTdhY2Q2YTExNjQ0NzIxOWU4YzBl
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0K
QEAgLTQxLDEyICs0MSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIFRl
eHRDaGVja2VyU3RhdGUmIG11dGFibGVTdGF0ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFRleHRDaGVja2VyU3RhdGU+IHN0YXRlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3RhdGUgPSBbXSB7CiAgICAgICAgIFRleHRDaGVja2Vy
U3RhdGUgaW5pdGlhbFN0YXRlOwogICAgICAgICBpbml0aWFsU3RhdGUuaXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQgPSBUZXh0Q2hlY2tlcjo6aXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0FsbG93ZWQoKTsKICAgICAgICAgaW5pdGlhbFN0YXRlLmlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gaW5pdGlhbFN0YXRlOwotICAgIH0oKSk7CisgICAg
fSgpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMTJmM2ExNWE0
M2I4YWM0ZDE1MWZmMzAzYzNjNWY3N2QxMzUzMGNiZS4uNDNmOTliMGMwMzQwZTA0YTUxNmI1Mjdk
YzBlMmMyMGRhNzMwZmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zNDMxLDIxICszNDMxLDIxIEBA
IC0gKE5TQXJyYXkgKilzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNGb3JDdXJyZW50U2VsZWN0aW9u
CiAgICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzTm9uZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgIHN0YXRpYyBhdXRvIHBsYWluVGV4dFR5cGVzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgcGxhaW5UZXh0VHlwZXMg
PSBbXSB7CiAgICAgICAgIGF1dG8gcGxhaW5UZXh0VHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
CiAgICAgICAgIFtwbGFpblRleHRUeXBlcyBhZGRPYmplY3Q6KGlkKWtVVFR5cGVVUkxdOwogQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIFtwbGFpblRleHRUeXBlcyBh
ZGRPYmplY3RzRnJvbUFycmF5OlVJUGFzdGVib2FyZFR5cGVMaXN0U3RyaW5nXTsKICAgICAgICAg
cmV0dXJuIHBsYWluVGV4dFR5cGVzOwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gcmljaFR5
cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIHJpY2hUeXBlcyA9IFtdIHsKICAgICAgICAgYXV0byByaWNoVHlwZXMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgW3JpY2hUeXBlcyBh
ZGRPYmplY3Q6V2ViQ29yZTo6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICBbcmljaFR5
cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6VUlQYXN0ZWJvYXJkVHlwZUxpc3RJbWFnZV07CiAgICAg
ICAgIFtyaWNoVHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpwbGFpblRleHRUeXBlcy5nZXQoKS5n
ZXQoKV07CiAgICAgICAgIHJldHVybiByaWNoVHlwZXM7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAK
ICAgICByZXR1cm4gKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29udGVudFJpY2hseUVkaXRhYmxl
KSA/IHJpY2hUeXBlcy5nZXQoKS5nZXQoKSA6IHBsYWluVGV4dFR5cGVzLmdldCgpLmdldCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCmluZGV4
IDRjYzIyZGYwMzA4MjUwYmUyNTA2MTYyMTJjNTgwMzA3ZTIwMzEwMjIuLjE2ZDY4MzhlNTQ4ZTA0
MzJmYmQxOGY4ZDRkMmFkZTFjMmMxMDhmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVGV4dENoZWNrZXJNYWMubW0KQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGJvb2wgc2hv
dWxkQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkJlRW5hYmxlZCgpCiAKIHN0YXRpYyBUZXh0Q2hl
Y2tlclN0YXRlJiBtdXRhYmxlU3RhdGUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxU
ZXh0Q2hlY2tlclN0YXRlPiBzdGF0ZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIHN0YXRlID0gW10gewogICAgICAgICBUZXh0Q2hlY2tlclN0YXRl
IGluaXRpYWxTdGF0ZTsKICAgICAgICAgaW5pdGlhbFN0YXRlLmlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9v
bEZvcktleTpXZWJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWRdICYmIFRleHRDaGVja2Vy
Ojppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nQWxsb3dlZCgpOwogICAgICAgICBpbml0aWFsU3Rh
dGUuaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gYm9vbEZvcktleTpXZWJHcmFtbWFyQ2hlY2tpbmdFbmFibGVkXTsKQEAgLTk5
LDcgKzk5LDcgQEAgc3RhdGljIFRleHRDaGVja2VyU3RhdGUmIG11dGFibGVTdGF0ZSgpCiAgICAg
ICAgIGluaXRpYWxTdGF0ZS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkID0gc2hv
dWxkQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkJlRW5hYmxlZCgpOwogICAgICAgICBpbml0aWFs
U3RhdGUuaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViQXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWRdOwogICAgICAgICByZXR1cm4gaW5pdGlhbFN0YXRlOwotICAgIH0oKSk7CisgICAg
fSgpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYjRjZWFlZTY3MzljMDM1NDE1YmUyODJkYzRi
OTY4NDVjZjFlYTc5MC4uYTZmOGZjYTliNjY5YmMwYTU3MDdiMjMxODBhZGMxNWY2ZjJhN2NhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC00MTcsMTYgKzQxNywxNCBAQCBDQUxheWVyICpXZWJQYWdlUHJveHk6OmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdAogCiBzdGF0aWMgTlNTdHJpbmcgKnRlbXBvcmFyeVBE
RkRpcmVjdG9yeVBhdGgoKQogewotICAgIHN0YXRpYyBhdXRvIHRlbXBvcmFyeVBERkRpcmVjdG9y
eVBhdGggPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBOU1N0cmluZyAqdGVtcG9y
YXJ5RGlyZWN0b3J5VGVtcGxhdGUgPSBbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXRQREZzLVhYWFhYWCJdOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCBwYXRoID0gW10geworICAgICAgICBhdXRvIHRlbXBvcmFyeURpcmVjdG9y
eVRlbXBsYXRlID0gW05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0UERGcy1YWFhYWFgiXTsKICAgICAgICAgQ1N0cmluZyB0ZW1wbGF0
ZVJlcHJlc2VudGF0aW9uID0gW3RlbXBvcmFyeURpcmVjdG9yeVRlbXBsYXRlIGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbl07Ci0KICAgICAgICAgaWYgKG1rZHRlbXAodGVtcGxhdGVSZXByZXNlbnRh
dGlvbi5tdXRhYmxlRGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b246dGVtcGxhdGVSZXByZXNlbnRhdGlvbi5kYXRhKCkgbGVuZ3RoOnRlbXBsYXRlUmVwcmVzZW50
YXRpb24ubGVuZ3RoKCldIGNvcHldKTsKICAgICAgICAgcmV0dXJuIFJldGFpblB0cjxpZD4geyB9
OwotICAgIH0oKSk7Ci0KLSAgICByZXR1cm4gdGVtcG9yYXJ5UERGRGlyZWN0b3J5UGF0aC5nZXQo
KS5nZXQoKTsKKyAgICB9KCk7CisgICAgcmV0dXJuIHBhdGguZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0
YXRpYyBOU1N0cmluZyAqcGF0aFRvUERGT25EaXNrKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TUGFz
dGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0
ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDc4ODU3NzQzODc3NmYyYTk3ODQwNGRlYmVmZWRiMDVjYzBh
Y2Q0MGYuLmU1YjQ0NGJmYTVjMjg3MjgzODdjNzIzMzI4MjkxYTgyMDNkMWIyNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFz
Lm1tCkBAIC03MSwzMiArNzEsMzAgQEAgKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFibGVUeXBlc0Zv
clVSTAogICAgIHJldHVybiB0eXBlczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5
cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSAodm9pZCkKK3N0YXRpYyBOU0FycmF5ICp3cml0YWJs
ZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpCiB7Ci0gICAgc3RhdGljIGF1dG8gdHlwZXMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0eXBl
cyA9IFtdIHsKICAgICAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzOmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsK
ICAgICAgICAgW3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6W05TUGFzdGVib2FyZCBfd2ViX3dy
aXRhYmxlVHlwZXNGb3JVUkxdXTsKICAgICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7Cisg
ICAgfSgpOwogICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAotc3RhdGljIE5TQXJy
YXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSAodm9pZCkKK3N0YXRpYyBOU0Fy
cmF5ICp3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSgpCiB7Ci0gICAgc3RhdGljIGF1
dG8gdHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBhdXRvIHR5cGVzID0g
YWRvcHROUyhbX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKCkgbXV0YWJsZUNv
cHldKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdHlwZXMgPSBbXSB7CisgICAgICAgIGF1
dG8gdHlwZXMgPSBhZG9wdE5TKFt3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgp
IG11dGFibGVDb3B5XSk7CiAgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6bGVnYWN5UlRGRFBhc3Rl
Ym9hcmRUeXBlKCldOwogICAgICAgICBbdHlwZXMgYWRkT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRU
eXBlXTsKICAgICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJl
dHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKV93ZWJfd3JpdGFibGVU
eXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooQk9PTCloYXNBcmNoaXZlCiB7Ci0gICAgcmV0
dXJuIGhhc0FyY2hpdmUgCi0gICAgICAgID8gX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNo
aXZlKCkKLSAgICAgICAgOiBfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91dEFyY2hpdmUoKTsK
KyAgICByZXR1cm4gaGFzQXJjaGl2ZSA/IHdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZl
KCkgOiB3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpOwogfQogCiArIChOU0Fy
cmF5ICopX3dlYl9kcmFnVHlwZXNGb3JVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYk5TVVJMRXh0cmFzLm1tCmluZGV4IDkyYTczN2QzYjU0MDVhYjM3NjAwNzFlYTU1NjQy
MWUyODUzNjEwZDEuLjU2ZTEzNjcwMzA5ZTI5ZjE3NzM5Zjg2ZjU1NmFlYTc2MjhkNjUyNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQpAQCAt
MjIzLDE1ICsyMjMsMTUgQEAgLShOU1JhbmdlKV93ZWJraXRfcmFuZ2VPZlVSTFNjaGVtZQogICAg
IE5TUmFuZ2UgY29sb24gPSBbc2VsZiByYW5nZU9mU3RyaW5nOkAiOiJdOwogICAgIGlmIChjb2xv
bi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGNvbG9uLmxvY2F0aW9uID4gMCkgewogICAgICAg
ICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xvbi5sb2NhdGlvbn07Ci0gICAgICAgIHN0YXRpYyBh
dXRvIGludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldCA9
IFtdIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgVGhpcyBzdHVmZiBpcyB2ZXJ5IGV4
cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdIei4gIElmIG5vdCBjYWNoZWQgaXQgc3dh
bXBzCiAgICAgICAgICAgICAgZXZlcnl0aGluZyBlbHNlIHdoZW4gYWRkaW5nIGl0ZW1zIHRvIHRo
ZSBhdXRvY29tcGxldGUgREIuICBNYWtlcyBtZSB3b25kZXIgaWYgd2UKICAgICAgICAgICAgICBl
dmVuIG5lZWQgdG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVyIHNldCBoZXJlLgogICAgICAgICAgICAg
Ki8KICAgICAgICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hhcmFjdGVycyA9IEAiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkr
Li0iOwotICAgICAgICAgICAgcmV0dXJuIHJldGFpblB0cihbW05TQ2hhcmFjdGVyU2V0IGNoYXJh
Y3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGludmVy
dGVkU2V0XSk7Ci0gICAgICAgIH0oKSk7CisgICAgICAgICAgICByZXR1cm4gUmV0YWluUHRyIHsg
W1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0luU3RyaW5nOmFjY2Vw
dGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0gfTsKKyAgICAgICAgfSgpOwogICAgICAgICBO
U1JhbmdlIGlsbGVnYWxzID0gW3NlbGYgcmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6aW52ZXJzZVNj
aGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAgcmFuZ2U6c2NoZW1lXTsKICAg
ICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCiAgICAgICAgICAgICBy
ZXR1cm4gc2NoZW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCmluZGV4IDgzZTg1OTE0MzQ1ZWE3Y2I4NDFkOTlmZDFmYjY2NmQ4Y2NmMDMw
MjYuLjVlYjVkNmExOWU2ZDkxZmNiM2JmYzgxY2NhOTFlYzdlMGU1NmM0MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTI3MCw3
ICsyNzAsNyBAQCAtICh2b2lkKV9yZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUKIAogKyAoTlNNdXRh
YmxlRGljdGlvbmFyeSAqKV9yZXBUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246KEJPT0wpYWxs
b3dJbWFnZVR5cGVPbWlzc2lvbgogewotICAgIHN0YXRpYyBhdXRvIHJlcFR5cGVzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgcmVwVHlwZXMgPSBb
XSB7CiAgICAgICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOwogICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyh0eXBlcy5nZXQoKSwgW1dl
YkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTsKICAgICAgICAgYWRkVHlwZXNGcm9tQ2xhc3ModHlwZXMu
Z2V0KCksIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gY2xhc3NdLCBbV2ViSFRNTFJlcHJlc2VudGF0
aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk7CkBAIC0yODcsNyArMjg3LDcgQEAgKyAoTlNN
dXRhYmxlRGljdGlvbmFyeSAqKV9yZXBUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246KEJPT0wp
YWxsb3dJbWFnZVR5cGVPbWkKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0eXBl
czsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICBzdGF0aWMgQk9PTCBhZGRlZEltYWdlVHlwZXMg
PSBOTzsKICAgICBpZiAoIWFkZGVkSW1hZ2VUeXBlcyAmJiAhYWxsb3dJbWFnZVR5cGVPbWlzc2lv
bikgewogICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyhyZXBUeXBlcy5nZXQoKS5nZXQoKSwgW1dl
YkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXNdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZVZpZXcubW0KaW5kZXggNzNlZjg2Y2JlZGM2NmNiNTUyOGJhNTY5N2FlZjM1NjQ1
YmQ0ZDQ0Ny4uZGMzYjUwMGU1OGMzNTI2ZjY4ZTQ0OGJmODIxMThkZDM1MDk5MjkzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KQEAgLTI0
MCw3ICsyNDAsNyBAQCAtIChmbG9hdClfdmVydGljYWxQYWdlU2Nyb2xsRGlzdGFuY2UKIAogKyAo
TlNNdXRhYmxlRGljdGlvbmFyeSAqKV92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOihC
T09MKWFsbG93SW1hZ2VUeXBlT21pc3Npb24KIHsKLSAgICBzdGF0aWMgYXV0byB2aWV3VHlwZXMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB2aWV3
VHlwZXMgPSBbXSB7CiAgICAgICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyh0eXBlcy5n
ZXQoKSwgW1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3IHN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzXSk7CiAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHR5cGVzLmdldCgpLCBbV2Vi
SFRNTFZpZXcgY2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdKTsK
QEAgLTI1Nyw3ICsyNTcsNyBAQCArIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3ZpZXdUeXBlc0Fs
bG93SW1hZ2VUeXBlT21pc3Npb246KEJPT0wpYWxsb3dJbWFnZVR5cGVPbQogI2VuZGlmCiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHN0
YXRpYyBCT09MIGFkZGVkSW1hZ2VUeXBlcyA9IE5POwogICAgIGlmICghYWRkZWRJbWFnZVR5cGVz
ICYmICFhbGxvd0ltYWdlVHlwZU9taXNzaW9uKSB7CiAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNz
KHZpZXdUeXBlcy5nZXQoKS5nZXQoKSwgW1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjEyNTQ1ODQ3ZGM0ZTZiYjk0NzBjMDA0YmM0NzE1MDQ3
YWNlYzFjMC4uNzI2NThkZmMwMmRlNzFjNWVkM2YwNDcyZmM2OWQxZmUzNTVhOWUzZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDIxLTEyLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBNYW55IGNhbGwgc2l0ZXMgdXNlIG1ha2VOZXZlckRlc3Ryb3llZCwgYnV0IGNvdWxkIGluc3Rl
YWQgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIE5ldmVyRGVzdHJveWVkIGRlZHVjdGlvbiBndWlkZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzUwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChmb250QWxsb3dMaXN0KTog
VXNlIGRlZHVjdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ldmVy
RGVzdHJveWVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBSZW1vdmUgdGVz
dHMgb2YgbWFrZU5ldmVyRGVzdHJveWVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bGlzdCk6
IFVzZSBkZWR1Y3Rpb24uCisKIDIwMjEtMTItMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9u
IGFuZCBVVEYtOCBjb252ZXJzaW9uIHdoZW4gY2FsbGluZyBERkFCeXRlY29kZUludGVycHJldGVy
OjppbnRlcnByZXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpp
bmRleCBmMzM5YTQzMzNjMGE5MGY1YTRkZTNlZTZmN2M3MDg2ZTc2MDE4ZmM1Li4wZDhlZmYwOWMx
Y2MyNDlkZDNjODMzOTJlYTgxOWZjZDM2ZTJlYzhhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC00NTQsNyArNDU0LDcgQEAgc3RhdGljIE5TU2V0ICph
bGxvd2VkRm9udEZhbWlseVNldCgpCiAKIHN0YXRpYyBOU0FycmF5ICpmb250QWxsb3dMaXN0KCkK
IHsKLSAgICBzdGF0aWMgYXV0byBhdmFpbGFibGVGb250cyA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGF2YWlsYWJsZUZvbnRzID0gW10gewogICAg
ICAgICBhdXRvIGF2YWlsYWJsZUZvbnRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmZvbnRGYW1pbHkgaW4gYWxsb3dlZEZv
bnRGYW1pbHlTZXQoKSkgewogICAgICAgICAgICAgTlNBcnJheSogZm9udHNGb3JGYW1pbHkgPSBb
W05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJlcnNPZkZvbnRG
YW1pbHk6Zm9udEZhbWlseV07CkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGljIE5TQXJyYXkgKmZv
bnRBbGxvd0xpc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBh
dmFpbGFibGVGb250czsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1cm4gYXZhaWxhYmxl
Rm9udHMuZ2V0KCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL05ldmVyRGVzdHJveWVkLmNwcAppbmRleCAwMzliYzExZGIwM2I3YWU2ZTVkZmU5MzdkZDI2
YzFlY2I3ZGJjMzg1Li45YjAxOTQ5MTNlMTNjZjlhNjNjM2RiN2Y0MDA5ZGQ0ZmRiOTM2Y2Q4IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OZXZlckRlc3Ryb3llZC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3Bw
CkBAIC00MCw5ICs0MCw2IEBAIFRFU1QoV1RGX05ldmVyRGVzdHJveWVkLCBDb25zdHJ1Y3QpCiAg
ICAgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB4KCJuYW1lIik7IFVO
VVNFRF9QQVJBTSh4KTsgfQogICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIAotICAgIHsgc3RhdGljIGF1dG8geCA9IG1ha2VOZXZlckRl
c3Ryb3llZChMaWZlY3ljbGVMb2dnZXIgeyAibmFtZSIgfSk7IFVOVVNFRF9QQVJBTSh4KTsgfQot
ICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIG1vdmUtY29uc3RydWN0KG5hbWUpIGRl
c3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotCiAgICAgewogICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB4KCJuYW1lIik7CiAg
ICAgICAgIExpZmVjeWNsZUxvZ2dlciBsID0geC5nZXQoKTsKQEAgLTU0LDIwICs1MSw2IEBAIFRF
U1QoV1RGX05ldmVyRGVzdHJveWVkLCBDb25zdHJ1Y3QpCiAgICAgeyBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB4IHsgW10geyByZXR1cm4gTGlmZWN5Y2xlTG9nZ2VyIHsg
Im5hbWUiIH07IH0oKSB9OyBVTlVTRURfUEFSQU0oeCk7IH0KICAgICBBU1NFUlRfU1RSRVEoImNv
bnN0cnVjdChuYW1lKSBtb3ZlLWNvbnN0cnVjdChuYW1lKSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAotICAgIHsKLSAgICAgICAgc3RhdGljIGF1dG8geCA9
IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgICAgICBMaWZlY3ljbGVMb2dnZXIgbCB7
ICJuYW1lIiB9OwotICAgICAgICAgICAgbC5zZXROYW1lKCJ4Iik7Ci0gICAgICAgICAgICByZXR1
cm4gbDsKLSAgICAgICAgfSgpKTsKLSAgICAgICAgQVNTRVJUX1NUUkVRKHguZ2V0KCkubmFtZSwg
IngiKTsKLSAgICB9Ci0jaWYgQ09NUElMRVIoTVNWQykgJiYgIWRlZmluZWQoTkRFQlVHKQotICAg
IEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0
KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgbW92ZS1jb25zdHJ1Y3QoeCkgZGVzdHJ1Y3QoPGRlZmF1
bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9TVFJFUSgi
Y29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0KHgpIGRlc3RydWN0KDxk
ZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotI2VuZGlmCi0KICAgICB7CiAgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dnZXI+IHg7CiAgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dnZXI+IHkgeyBXVEZNb3ZlKHgpIH07CkBA
IC04NCwyNSArNjcsMTEgQEAgVEVTVChXVEZfTmV2ZXJEZXN0cm95ZWQsIENvbnN0cnVjdCkKIAog
ICAgIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyPiB4IHsg
W10geyByZXR1cm4gTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgeyAibmFtZSIgfTsgfSgpIH07IFVO
VVNFRF9QQVJBTSh4KTsgfQogICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIG1vdmUt
Y29uc3RydWN0KG5hbWUpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwotCi0gICAgewotICAgICAgICBzdGF0aWMgYXV0byB4ID0gbWFrZU5ldmVyRGVzdHJveWVk
KFtdIHsKLSAgICAgICAgICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2VyIGwgeyAibmFtZSIgfTsK
LSAgICAgICAgICAgIGwuc2V0TmFtZSgieCIpOwotICAgICAgICAgICAgcmV0dXJuIGw7Ci0gICAg
ICAgIH0oKSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICB9Ci0jaWYgQ09NUElMRVIo
TVNWQykgJiYgIWRlZmluZWQoTkRFQlVHKQotICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5h
bWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgbW92
ZS1jb25zdHJ1Y3QoeCkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7Ci0jZWxzZQotICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgp
IG1vdmUtY29uc3RydWN0KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBWZWN0b3I8aW50PiYgbGlzdCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8geCA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8aW50
PiB7IDEsIDIsIDMgfSk7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkIHggPSBWZWN0
b3I8aW50PiB7IDEsIDIsIDMgfTsKICAgICByZXR1cm4geDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447287</attachid>
            <date>2021-12-15 14:41:01 -0800</date>
            <delta_ts>2021-12-15 17:03:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234350-20211215144100.patch</filename>
            <type>text/plain</type>
            <size>162052</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFkZTI5MzJmYmUyOTJkYjUxMmVlMTY0
MzRiNGQ4NWMyYTMzODlmYjUuLjZjNTRiZWNlM2U3ZDExYjA1YTI4NjkxMzhhNGMzZjYyYTE2N2Iw
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1hbnkgY2FsbCBzaXRlcyB1c2UgbWFrZU5ldmVyRGVzdHJv
eWVkLCBidXQgY291bGQgaW5zdGVhZCB0YWtlIGFkdmFudGFnZSBvZiB0aGUgTmV2ZXJEZXN0cm95
ZWQgZGVkdWN0aW9uIGd1aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9OZXZlckRlc3Ryb3llZC5oOgorICAgICAgICAoV1RGOjptYWtlTmV2
ZXJEZXN0cm95ZWQpOiBEZWxldGVkLgorCisgICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0
b3IpOiBVc2UgZGVkdWN0aW9uIGd1aWRlLgorCiAyMDIxLTEyLTE1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEFkb3B0IC1bTlNTY3JlZW4gc2FmZUFy
ZWFJbnNldHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRkMTk0MTI3ODA1OTRkMGNmNzZhOGY3OTk3OTVjNTQ1
Yzg4MjkzYS4uYzk4NzZiYWJlNzNiMWJlZWVjYWI2YTRmZjYxMTZlM2VlZjk2MzI0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4MiBAQAorMjAyMS0xMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFueSBjYWxsIHNpdGVzIHVzZSBtYWtlTmV2ZXJEZXN0cm95
ZWQsIGJ1dCBjb3VsZCBpbnN0ZWFkIHRha2UgYWR2YW50YWdlIG9mIHRoZSBOZXZlckRlc3Ryb3ll
ZCBkZWR1Y3Rpb24gZ3VpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omluc3RhbGxlZENETUZhY3Rvcmllcyk6IFVzZSBOZXZlckRlc3Ry
b3llZCBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSBtYWtlTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKTogVXNlIFNvcnRlZEFy
cmF5TWFwLCBvYnZpYXRpbmcgdGhlIG5lZWQgZm9yCisgICAgICAgIGFueSB1c2Ugb2YgTmV2ZXJE
ZXN0cm95ZWQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUgY29uc3QpOiBVc2UgU3BhbiBpbnN0ZWFkIG9mCisg
ICAgICAgIFZlY3RvciwgYWxsb3dpbmcgdXMgdG8gdXNlIGNvbnN0ZXhwciBhcnJheXMgcmF0aGVy
IHRoYW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIGEgVmVjdG9yLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVO
YW1lc10pOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAg
ICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IERpdHRvLgorICAgICAgICAocHJpbnRXcmFwcGVy
RmFjdG9yeUNwcEZpbGUpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omh0bWxFbGVtZW50RXF1aXZhbGVudHMpOiBSZXR1cm4g
YSBTcGFuIGluc3RlYWQgb2YgYSBWZWN0b3ImLAorICAgICAgICBhbGxvd2luZyB1cyB0byB1c2Ug
Y29uc3QgYXJyYXlzIHJhdGhlciB0aGFuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBhIFZlY3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6Omh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cyk6IERpdHRvLgorCisg
ICAgICAgICogZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNFbGVtZW50Rm9yRm9ybWF0QmxvY2spOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGVk
aXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1l
bnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHJvaGliaXRl
ZFBhcmFncmFwaENoaWxkKTogVXNlIGRlZHVjdGlvbiwgYWxzbyBjaGFuZ2UgdGhlIHRhZ3MgYXJy
YXkKKyAgICAgICAgdG8gYmUgYSBjb25zdGV4cHIgYXJyYXkgc28gd2UgZG9uJ3QgaGF2ZSB0byB1
c2UgcmVhZC93cml0ZSBtZW1vcnkgZm9yIGl0LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tOgorICAgICAgICAoV2ViRGVmYXVsdEZvbnQpOiBVc2UgZGVkdWN0aW9u
LgorICAgICAgICAoZGVmYXVsdFBhcmFncmFwaFN0eWxlKTogRGl0dG8uCisgICAgICAgICogaHRt
bC9BdXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWVsZE5hbWVNYXApOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKTogVXNlIGRlZHVjdGlvbiwgYWxz
byBjaGFuZ2UKKyAgICAgICAgdGhlIG5hbWVzIGFycmF5IHRvIGJlIGEgY29uc3RleHByIGFycmF5
IHNvIHdlIGRvbid0IGhhdmUgdG8gdXNlIHJlYWQvd3JpdGUgbWVtb3J5IGZvciBpdC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6IFVzZSBzdGQ6OmFycmF5IGRl
ZHVjdGlvbgorICAgICAgICBzbyB3ZSBkb24ndCBoYXZlIHRvIHdyaXRlIG91dCB0aGUgTGF6eU5l
dmVyRGVzdHJveWVkIHR5cGUgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1
cmUpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZFBhZ2VVUkwpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvdWNoRXZlbnRSZWdpb25Db2xvcnMpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1Bl
cmZvcm1hbmNlVXNlclRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdGVkTWFy
a05hbWVzVG9OYXZpZ2F0aW9uVGltaW5nRnVuY3Rpb25NYXApOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZCk6IFVzZSBTcGFuIGluc3RlYWQgb2YgVmVjdG9yLCBhbGxvd2luZyB1cyB0byB1c2UgY29uc3Rl
eHByIGFycmF5cworICAgICAgICByYXRoZXIgdGhuYSBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgYSBW
ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjptYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKTogRGl0dG8uIEFsc28g
dXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5TZWN1cmVTY2hlbWVzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVt
ZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXMpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZ3hDb21w
aWxlclNlcnZpY2VzKTogVXNlIFNwYW4gaW5zdGVhZCBvZiBhIFZlY3RvciYsIGFsbG93aW5nIHVz
CisgICAgICAgIHRvIHVzZSBhIGNvbnN0ZXhwciBhcnJheSByYXRoZXIgdGhhbiBhbGxvY2F0aW5n
IG1lbW9yeSBmb3IgYSB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjphZ3hDb21waWxlckNsYXNz
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2Uu
aDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXApOiBVc2Ug
ZGVkdWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3Rl
bmVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjptZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0
Zm9ybUNvbW1hbmQpOiBVc2UgU29ydGVkQXJyYXlNYXAsIG92YnZpYXRpbmcgdGhlCisgICAgICAg
IG5lZWQgZm9yIGFueSB1c2Ugb2YgTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Om9ic2VydmVkRXZl
bnROYW1lcyk6IFJldHVybiBhIFNwYW4KKyAgICAgICAgaW5zdGVhZCBvZiBhIFZlY3RvciYsIGFs
bG93aW5nIHVzIHRvIHVzZSBhbiBhcnJheSByYXRoZXIgdGhhbiBhbGxvY2F0aW5nCisgICAgICAg
IG1lbW9yeSBmb3IgYSBWZWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcm94eUZhY3Rvcnk6OnJlZ2lz
dGVyZWRGYWN0b3JpZXMpOiBVc2UgZGVkdWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXNlQmFja3NsYXNoQXNZ
ZW5TaWduRm9yRmFtaWx5KTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGggY29uc3QpOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnN0YWxsZWRGYWN0b3JpZXMpOiBVc2UgTmV2ZXJEZXN0cm95ZWQgZGlyZWN0bHksIG5vdCBt
YWtlTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXpl
Lmg6IEFkZGVkIGNvbnN0ZXhwciBzbyBtYW55IG9wZXJhdGlvbnMgY2FuIGJlIGRvbmUKKyAgICAg
ICAgYXQgY29tcGlsZSB0aW1lIGFzIG5lZWRlZDsgbWFpbmx5IHRoaXMgd2FzIHNvIHdlIGNhbiBt
YWtlIGEgY29uc3RleHByIGFycmF5IG9mCisgICAgICAgIHRoZXNlIHNpemVzLiBUaGlzIHNhbWUg
ZW5oYW5jZW1lbnQgY2FuIGJlIGFwcGxpZWQgdG8gb3RoZXIgdHlwZXMsIGJ1dCBqdXN0IGRpZAor
ICAgICAgICBpdCBoZXJlIGZvciBub3cuIEFsc28gZml4ZWQgcmV0dXJuIHZhbHVlcyBmb3IgbWlu
L21heERpbWVuc2lvbiB0aGF0IHdlcmUgYWNjaWRlbnRhbGx5CisgICAgICAgIHJldHVybmluZyBm
bG9hdCwgaHVydGluZyBwZXJmb3JtYW5jZSBiZWNhdXNlIG9mIHRoZSByb3VuZCB0cmlwIGludCB0
byBmbG9hdCwKKyAgICAgICAgYWxzbyBub3QgY2xlYW5seSByb3VuZCB0cmlwcGluZyB2ZXJ5IGxh
cmdlIGFuZCBzbWFsbCB2YWx1ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3RhdGljTUlNRVR5cGVMaXN0
KTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVm
YXVsdFN1cHBvcnRlZEltYWdlVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpt
YXRjaFN5c3RlbUZvbnRVc2UpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OndlYm1NSU1FVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZFZpZGVvQ29kZWNzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRBdWRp
b0NvZGVjcyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0
ZXJzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmYWN0b3Jp
ZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlOjpzdGFuZGFyZFZpZGVvU2l6ZXMpOiBSZXR1cm4gYSBTcGFuCisgICAgICAgIGlu
c3RlYWQgb2YgYSBWZWN0b3ImIHNvIHdlIGNhbiB1c2UgYSBjb25zdGV4cHIgYXJyYXkgYW5kIGRv
bid0IG5lZWQgdG8KKyAgICAgICAgYWxsb2NhdGUgbWVtb3J5IG9yIHVzZSByZWFkL3dyaXRlIHN0
b3JhZ2UuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1
cmVTb3VyY2UuaDogRGl0dG8uIEFsc28gbWFrZQorICAgICAgICB0aGlzIGEgc3RhdGljIG1lbWJl
ciBmdW5jdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlcyk6IFVzZSBkZWR1Y3Rp
b24uCisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VNYXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjptaWNyb3Bob25lRGV2aWNlcyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNw
ZWFrZXJEZXZpY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6dmlkZW9EZXZpY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6ZGlzcGxheURldmljZXMpOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlQ2FjaGUpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3Jl
Ojp0b2tlbml6ZXJGb3JTdHJpbmcpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y2FjaGVkU3lzdGVt
Rm9udERlc2NyaXB0aW9uIGNvbnN0KTogVXNlCisgICAgICAgIE5ldmVyRGVzdHJveWVkIGRpcmVj
dGx5IGluc3RlYWQgb2YgbWFrZU5ldmVyRGVzdHJveWVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDb2NvYTo6
Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRp
b25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZSk6IFVzZSBkZWR1Y3Rpb24uCisKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1
dGVOYW1lVG9DU1NQcm9wZXJ0eUlETWFwKTogVXNlIGEgY29uc3RleHByIGFycmF5CisgICAgICAg
IGluc3RlYWQgb2YgYSBjb25zdCBvbmUgdGhhdCBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQgYXQgcnVu
dGltZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFuaW1hdGFibGVBdHRyaWJ1dGVG
b3JOYW1lKTogRGl0dG8sIGFsc28gdXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKTogVXNlIGRlZHVjdGlv
bi4KKworICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogVXNlIGRl
ZHVjdGlvbi4KKyAgICAgICAgKiB4bWwvWFBhdGhGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WFBhdGg6OkZ1bmN0aW9uOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiB4bWwvWFBh
dGhQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OnBhcnNlQXhpc05hbWUpOiBE
aXR0by4KKwogMjAyMS0xMi0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCBMaW51eCBhbmQgd2luZG93cyBidWlsZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAzYzQzNDIzMzI5MDUxYWQzMmE3MzA5YWM5YTdhYTBiNDVjNGMxNjE3Li4yN2FlZjc4ZmZmYTZj
MTI4M2FhY2UxYjQ3Y2I1YTMyNDc0ZGMzYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisy
MDIxLTEyLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYW55
IGNhbGwgc2l0ZXMgdXNlIG1ha2VOZXZlckRlc3Ryb3llZCwgYnV0IGNvdWxkIGluc3RlYWQgdGFr
ZSBhZHZhbnRhZ2Ugb2YgdGhlIE5ldmVyRGVzdHJveWVkIGRlZHVjdGlvbiBndWlkZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmV4cGVj
dGVkVGFibGVBbmRJbmRleFF1ZXJpZXMpOgorICAgICAgICBVc2UgZGVkdWN0aW9uLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpl
eHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tOgorICAgICAgICAoV2ViS2l0OjpnZXRBcHBC
b3VuZERvbWFpbnNUZXN0aW5nKTogRGl0dG8uCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvU2Fu
ZGJveEV4dGVuc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVIYW5kbGVzRm9y
UmVzb3VyY2VzKTogTWFrZSB0aGlzIG1vcmUgZ2VuZXJpYyBzbyBpdCB3b3JrcyB3aXRoCisgICAg
ICAgIG90aGVyIGtpbmRzIG9mIGNvbGxlY3Rpb25zLCBub3QganVzdCBWZWN0b3IuIEFsc28gcmln
aHQtc2l6ZSB0aGUgVmVjdG9yIHRoaXMKKyAgICAgICAgcmV0dXJucyByYXRoZXIgdGhhbiBsZXR0
aW5nIGl0IGdyb3cgb3JnYW5pY2FsbHkuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZVJlYWRPbmx5SGFuZGxlc0ZvckZpbGVzKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeSk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVz
Rm9yTWFjaExvb2t1cCk6IERpdHRvLiBBbHNvIHVwZGF0ZSB0aGlzCisgICAgICAgIGZ1bmN0aW9u
IHRvIHRha2UgYSBTcGFuIG9yIGFuIGluaXRpYWxpemVyX2xpc3QgaW5zdGVhZCBvZiBhIFZlY3Rv
ci4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklP
S2l0Q2xhc3NFeHRlbnNpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9TYW5k
Ym94RXh0ZW5zaW9uLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4gQWxzbyBjb3JyZWN0ZWQgc29t
ZSB1bnVzdWFsCisgICAgICAgIHVzZSBvZiAjaWYgdG8gc2hhcmUgYSBzaW5nbGUgZGVjbGFyYXRp
b24gb2Ygc29tZSBmdW5jdGlvbnMgZm9yIGJvdGggZW5hYmxlZAorICAgICAgICBhbmQgZGlzYWJs
ZWQgU0FOREJPWF9FWFRFTlNJT05TLgorCisgICAgICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpub25Ccm93c2VyU2VydmljZXMpOiBVc2Ug
ZGVkdWN0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6IFJlbW92
ZSB1bnVzZWQgTUVSR0VfV0hFRUxfRVZFTlRTLgorICAgICAgICAoV2ViS2l0OjphdHRhY2htZW50
RWxlbWVudFNlcnZpY2VzKTogUmV0dXJuIGEgU3BhbiwgYWxsb3dpbmcgdXMgdG8gdXNlIGEKKyAg
ICAgICAgY29uc3RleHByIG9idmlhdGluZyB0aGUgbmVlZCBmb3IgbWVtb3J5IGFsbG9jYXRpb24g
b3IgcmVhZC93cml0ZSBtZW1vcnksCisgICAgICAgIChXZWJLaXQ6OmdwdUlPS2l0Q2xhc3Nlcyk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpncHVNYWNoU2VydmljZXMpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6bWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6Om1lZGlhUmVsYXRlZElPS2l0Q2xhc3Nlcyk6IERpdHRvLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9UZXh0Q2hlY2tlcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6bXV0YWJsZVN0
YXRlKTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzdXBwb3J0ZWRQYXN0
ZWJvYXJkVHlwZXNGb3JDdXJyZW50U2VsZWN0aW9uXSk6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6Om11dGFibGVTdGF0
ZSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojp0ZW1wb3JhcnlQREZEaXJlY3RvcnlQYXRoKTogRGl0dG8uCisKIDIw
MjEtMTItMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZW1vdmUgUHJveHlTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCA4Y2UzNjMwYzJiOGZlMjAyZTc5OGY2ZTNiNGFmY2U2ZmIwYjczMWNlLi40NGU5OWVkMzc3MmMy
MWVhZjA1N2U5YjMxOTNhNmQxNzQ0M2JhNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIE1hbnkgY2FsbCBzaXRlcyB1c2UgbWFrZU5ldmVyRGVzdHJveWVkLCBi
dXQgY291bGQgaW5zdGVhZCB0YWtlIGFkdmFudGFnZSBvZiB0aGUgTmV2ZXJEZXN0cm95ZWQgZGVk
dWN0aW9uIGd1aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE1pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tOgorICAgICAgICAod3JpdGFibGVU
eXBlc0ZvckltYWdlV2l0aG91dEFyY2hpdmUpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAod3Jp
dGFibGVUeXBlc0ZvckltYWdlV2l0aEFyY2hpdmUpOgorICAgICAgICAqIE1pc2MvV2ViTlNVUkxF
eHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJraXRfcmFuZ2VPZlVSTFNjaGVtZV0p
OiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgr
W1dlYkRhdGFTb3VyY2UgX3JlcFR5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjpdKTogRGl0dG8u
CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZVZpZXcubW06CisgICAgICAgICgrW1dlYkZyYW1l
VmlldyBfdmlld1R5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjpdKTogRGl0dG8uCisKIDIwMjEt
MTItMTQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5h
bWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9OZXZl
ckRlc3Ryb3llZC5oIGIvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAppbmRleCBiZWYz
N2RmMTAxZWRiNzk5ZWQ3NzI0YmJiMDZkYTlmMThkNTBkZDMyLi4yZjI2NDRmYWQxNTYzMzkyZWI0
YTA2NTVmN2NjZGM4MzczZWM4OTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRl
c3Ryb3llZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKQEAgLTEwNCw4
ICsxMDQsNiBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNp
emVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBtX3N0b3JhZ2U7CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBY2Nlc3NUcmFpdHMgPSBBbnlUaHJl
YWRzQWNjZXNzVHJhaXRzPiBOZXZlckRlc3Ryb3llZDxULCBBY2Nlc3NUcmFpdHM+IG1ha2VOZXZl
ckRlc3Ryb3llZChUJiYpOwotCiAvLyBGSVhNRTogSXQncyBtZXNzeSB0byBoYXZlIHRvIHJlcGVh
dCB0aGUgd2hvbGUgY2xhc3MganVzdCB0byBtYWtlIHRoaXMgImxhenkiIHZlcnNpb24uCiAvLyBT
aG91bGQgcmV2aXNpdCBjbGllbnRzIHRvIHNlZSBpZiB3ZSByZWFsbHkgbmVlZCB0aGlzLCBhbmQg
cGVyaGFwcyB1c2UgdGVtcGxhdGVzIHRvCiAvLyBzaGFyZSBtb3JlIG9mIHRoZSBjb2RlIHdpdGgg
dGhlIG1haW4gTmV2ZXJEZXN0cm95ZWQgYWJvdmUuCkBAIC0xODEsMjMgKzE3OSwxNCBAQCBwcml2
YXRlOgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBOZXZlckRlc3Ryb3llZChUKSAtPiBOZXZlckRl
c3Ryb3llZDxUPjsKIAotLy8gRklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9uLCByZWx5aW5nIGlu
c3RlYWQgb24gdGhlIGRlZHVjdGlvbiBndWlkZSBmb3IgTmV2ZXJEZXN0cm95ZWQgYWJvdmUuCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBY2Nlc3NUcmFpdHM+IGlubGluZSBOZXZlckRl
c3Ryb3llZDxULCBBY2Nlc3NUcmFpdHM+IG1ha2VOZXZlckRlc3Ryb3llZChUJiYgYXJndW1lbnQp
Ci17Ci0gICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxUPihhcmd1bWVudCk7Ci19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci11c2luZyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQgPSBOZXZlckRlc3Ry
b3llZDxULCBNYWluVGhyZWFkQWNjZXNzVHJhaXRzPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVz
aW5nIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZCA9IE5ldmVyRGVzdHJveWVkPFQsIE1haW5UaHJl
YWRBY2Nlc3NUcmFpdHM+OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdXNpbmcgTWFpblRocmVh
ZExhenlOZXZlckRlc3Ryb3llZCA9IExhenlOZXZlckRlc3Ryb3llZDxULCBNYWluVGhyZWFkQWNj
ZXNzVHJhaXRzPjsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIE1haW5UaHJlYWRMYXp5TmV2
ZXJEZXN0cm95ZWQgPSBMYXp5TmV2ZXJEZXN0cm95ZWQ8VCwgTWFpblRocmVhZEFjY2Vzc1RyYWl0
cz47CiAKIH0gLy8gbmFtZXNwYWNlIFdURjsKIAogdXNpbmcgV1RGOjpMYXp5TmV2ZXJEZXN0cm95
ZWQ7CiB1c2luZyBXVEY6Ok5ldmVyRGVzdHJveWVkOwotdXNpbmcgV1RGOjptYWtlTmV2ZXJEZXN0
cm95ZWQ7CiB1c2luZyBXVEY6Ok1haW5UaHJlYWROZXZlckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6
TWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6QW55VGhyZWFkc0FjY2Vz
c1RyYWl0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENG
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcAppbmRleCAxZTIz
NjQ3MTRmOGI3ODBhNDcxMDZjYjA5MmViODdlYjMxMmU0YWVjLi45ZjQwYzA1YzM0ZjM2NzVhNzAx
ZjcxMTliYzQxNDY1ZjViMmIwMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2Nm
L1N0cmluZ0ltcGxDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBs
Q0YuY3BwCkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBuYW1lc3BhY2UgU3RyaW5nV3JhcHBlckNGQWxs
b2NhdG9yIHsKIAogICAgIHN0YXRpYyBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IoKQogICAgIHsK
LSAgICAgICAgc3RhdGljIGF1dG8gYWxsb2NhdG9yID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
KyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGFsbG9jYXRvciA9IFtdIHsKICAgICAgICAg
ICAgIENGQWxsb2NhdG9yQ29udGV4dCBjb250ZXh0ID0geyAwLCBudWxscHRyLCByZXRhaW4sIHJl
bGVhc2UsIGNvcHlEZXNjcmlwdGlvbiwgYWxsb2NhdGUsIHJlYWxsb2NhdGUsIGRlYWxsb2NhdGUs
IHByZWZlcnJlZFNpemUgfTsKICAgICAgICAgICAgIHJldHVybiBhZG9wdENGKENGQWxsb2NhdG9y
Q3JlYXRlKG51bGxwdHIsICZjb250ZXh0KSk7Ci0gICAgICAgIH0oKSk7CisgICAgICAgIH0oKTsK
ICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5nZXQoKS5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uY3BwCmluZGV4IDI5ODIzNzUxZDRjNTk0MjY3MDhhYjg2NGFiNGFjYTFlOTQ2OTUwMmQu
LjFmMWJlYzdjMzM0MjRmZTA4NDI3NTQ4ZjA3MmNjN2RmZDEyZmQwY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlZ2lzdGVyRmFj
dG9yaWVzKFZlY3RvcjxMZWdhY3lDRE1GYWN0b3J5PiYgZmFjdG9yaWVzKQogCiBzdGF0aWMgVmVj
dG9yPExlZ2FjeUNETUZhY3Rvcnk+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQogewotICAgIHN0
YXRpYyBhdXRvIGNkbXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPExlZ2FjeUNETUZhY3Rv
cnk+Pih7IH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8TGVnYWN5Q0RNRmFj
dG9yeT4+IGNkbXM7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHJlZ2lzdGVyRGVmYXVsdHM7
CiAgICAgc3RkOjpjYWxsX29uY2UocmVnaXN0ZXJEZWZhdWx0cywgWyZdIHsKICAgICAgICAgcGxh
dGZvcm1SZWdpc3RlckZhY3RvcmllcyhjZG1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCmluZGV4IDM5Y2NjMTRlMjFiOGY3
YWE2NjgyMzk1ZmZjMTBmMmNjODBkYTZlZTguLmUwNzcyMDg0NTVlMTdjZGY3NmNkY2RkZjhiOTMw
NzE5M2JkOGUyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlIDx3
dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1LDI3ICs2NiwxOSBAQCBzdGF0aWMgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkKIAogc3RhdGljIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250
cm9sQ29tbWFuZFR5cGUgcGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlh
U2Vzc2lvbkFjdGlvbiBhY3Rpb24pCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1h
cCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHVzaW5nIEFjdGlvblRvQ29tbWFu
ZE1hcCA9IEhhc2hNYXA8TWVkaWFTZXNzaW9uQWN0aW9uLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBJbnRIYXNoPE1lZGlhU2Vzc2lvbkFjdGlvbj4sIFdU
Rjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8TWVkaWFTZXNzaW9uQWN0aW9uPj47Ci0KLSAgICAgICAg
cmV0dXJuIEFjdGlvblRvQ29tbWFuZE1hcCB7Ci0gICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFj
dGlvbjo6UGxheSwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlDb21tYW5kIH0sCi0gICAgICAg
ICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2UsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
YXVzZUNvbW1hbmQgfSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrZm9y
d2FyZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCB9LAotICAgICAg
ICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtiYWNrd2FyZCwgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQgfSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9u
QWN0aW9uOjpQcmV2aW91c3RyYWNrLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFj
a0NvbW1hbmQgfSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2ss
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kIH0sCi0gICAgICAgICAgICB7
IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U3RvcCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0b3BDb21t
YW5kIH0sCi0gICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla3RvLCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQgfSwKLSAgICAgICAg
ICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTa2lwYWQsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpO
ZXh0VHJhY2tDb21tYW5kIH0sCi0gICAgICAgIH07Ci0gICAgfSgpKTsKLQotICAgIGF1dG8gaXQg
PSBjb21tYW5kTWFwLmdldCgpLmZpbmQoYWN0aW9uKTsKLSAgICBpZiAoaXQgIT0gY29tbWFuZE1h
cC5nZXQoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKLQotICAgIHJldHVybiBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kOworICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjpwYWlyPE1lZGlhU2Vzc2lvbkFjdGlvbiwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNv
bnRyb2xDb21tYW5kVHlwZT4gbWFwcGluZ3NbXSB7CisgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0
aW9uOjpQbGF5LCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQgfSwKKyAgICAgICAg
eyBNZWRpYVNlc3Npb25BY3Rpb246OlBhdXNlLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VD
b21tYW5kIH0sCisgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTZWVrYmFja3dhcmQsIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwQmFja3dhcmRDb21tYW5kIH0sCisgICAgICAgIHsgTWVk
aWFTZXNzaW9uQWN0aW9uOjpTZWVrZm9yd2FyZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBG
b3J3YXJkQ29tbWFuZCB9LAorICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UHJldmlvdXN0
cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246OlByZXZpb3VzVHJhY2tDb21tYW5kIH0sCisgICAg
ICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpOZXh0dHJhY2ssIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOZXh0VHJhY2tDb21tYW5kIH0sCisgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTa2lw
YWQsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOZXh0VHJhY2tDb21tYW5kIH0sCisgICAgICAgIHsg
TWVkaWFTZXNzaW9uQWN0aW9uOjpTdG9wLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RvcENvbW1h
bmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWt0bywgUGxhdGZvcm1NZWRp
YVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kIH0sCisgICAgfTsKKyAgICBz
dGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5TWFwIG1hcCB7IG1hcHBpbmdzIH07CisgICAgcmV0
dXJuIG1hcC5nZXQoYWN0aW9uLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kKTsKIH0K
IAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21t
YW5kQXJndW1lbnQ+PiBwbGF0Zm9ybUNvbW1hbmRGb3JNZWRpYVNlc3Npb25BY3Rpb24oY29uc3Qg
TWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyYgYWN0aW9uRGV0YWlscykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDUyNjBjNjdhODVkYWZkMWQ2OTdjYzBkODA2MjkyYjMxMGY1MjEyNWUuLmNjNzlk
ZWIyMzFkZmYyN2VhOTI1NWU0YWVjOTc0OTc4NmMwYjRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cApAQCAtMzIxNCwxOCArMzIxNCwxOCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3QKICAgICAvLyB0aG9zZSBjaGlsZCBl
bGVtZW50cyBhcmUgYWxzbyBwcmVzZW50YXRpb25hbC4gRm9yIGV4YW1wbGUsIDxsaT4gYmVjb21l
cyBwcmVzZW50YXRpb25hbCBmcm9tIDx1bD4uCiAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvV0FJ
L1BGL2FyaWEvY29tcGxldGUjcHJlc2VudGF0aW9uCiAKLSAgICBjb25zdCBWZWN0b3I8Y29uc3Qg
SFRNTFF1YWxpZmllZE5hbWUqPiogcGFyZW50VGFnczsKKyAgICBTcGFuPGNvbnN0IExhenlOZXZl
ckRlc3Ryb3llZDxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZT4qIGNvbnN0PiBwYXJlbnRUYWdzOwog
ICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpM
aXN0SXRlbToKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0TWFya2VyOiB7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBhdXRvIGxpc3RJdGVtUGFyZW50cyA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChWZWN0b3I8Y29uc3QgSFRNTFF1YWxpZmllZE5hbWUqPiB7ICZkbFRhZy5nZXQoKSwgJm9sVGFn
LmdldCgpLCAmdWxUYWcuZ2V0KCkgfSk7Ci0gICAgICAgIHBhcmVudFRhZ3MgPSAmbGlzdEl0ZW1Q
YXJlbnRzLmdldCgpOworICAgICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgbGlzdEl0
ZW1QYXJlbnRzIHsgJmRsVGFnLCAmb2xUYWcsICZ1bFRhZyB9OworICAgICAgICBwYXJlbnRUYWdz
ID0gbGlzdEl0ZW1QYXJlbnRzOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBBY2Nl
c3NpYmlsaXR5Um9sZTo6R3JpZENlbGw6CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2Vs
bDogewotICAgICAgICBzdGF0aWMgY29uc3QgYXV0byB0YWJsZUNlbGxQYXJlbnRzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+IHsgJnRhYmxlVGFn
LmdldCgpIH0pOwotICAgICAgICBwYXJlbnRUYWdzID0gJnRhYmxlQ2VsbFBhcmVudHMuZ2V0KCk7
CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSB0YWJsZUNlbGxQYXJlbnRzIHsg
JnRhYmxlVGFnIH07CisgICAgICAgIHBhcmVudFRhZ3MgPSB0YWJsZUNlbGxQYXJlbnRzOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTMyNDQsNyArMzI0NCw3IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUo
KSBjb25zdAogICAgICAgICAvLyBJZiBuYXRpdmUgdGFnIG9mIHRoZSBwYXJlbnQgZWxlbWVudCBt
YXRjaGVzIGFuIGFjY2VwdGFibGUgbmFtZSwgdGhlbiByZXR1cm4KICAgICAgICAgLy8gYmFzZWQg
b24gaXRzIHByZXNlbnRhdGlvbmFsIHN0YXR1cy4KICAgICAgICAgYXV0byYgbmFtZSA9IGRvd25j
YXN0PEVsZW1lbnQ+KCpub2RlKS50YWdRTmFtZSgpOwotICAgICAgICBpZiAoc3RkOjphbnlfb2Yo
cGFyZW50VGFncy0+YmVnaW4oKSwgcGFyZW50VGFncy0+ZW5kKCksIFsmbmFtZV0gKGF1dG8qIHBv
c3NpYmxlTmFtZSkgeyByZXR1cm4gKnBvc3NpYmxlTmFtZSA9PSBuYW1lOyB9KSkKKyAgICAgICAg
aWYgKHN0ZDo6YW55X29mKHBhcmVudFRhZ3MuYmVnaW4oKSwgcGFyZW50VGFncy5lbmQoKSwgWyZu
YW1lXSAoYXV0byogcG9zc2libGVOYW1lKSB7IHJldHVybiBwb3NzaWJsZU5hbWUtPmdldCgpID09
IG5hbWU7IH0pKQogICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+cm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OlByZXNlbnRhdGlvbmFsOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCBlZjZkNmVlYzA2MGYwNDg4ZTBhNDRiMTA2ZTA4
ZjZkOTE0ZmJjZGJjLi44ZDgyNjgyMjIwNGIzZjRhMTc1MWU3YmM4M2MxMzNhNTYzZDc3NDJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTMzNCw3ICsxMzM0
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIE5TQWNj
ZXNzaWJpbGl0eUVkaXRhYmxlQW5jZXN0b3JBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJp
bGl0eUhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yQXR0cmlidXRlLAogICAgIF07Ci0gICAgc3RhdGlj
IGF1dG8gaW5jcmVtZW50b3JBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIGluY3JlbWVudG9yQXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8g
dGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50QnV0dG9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QnV0dG9uQXR0cmlidXRlXTsK
QEAgLTEzNDIsMTQgKzEzNDIsMTQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVl
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
TWF4VmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7
Ci0gICAgc3RhdGljIGF1dG8gYW5jaG9yQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewor
ICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYW5jaG9yQXR0cnMgPSBbXSB7CiAg
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TGlua1JlbGF0aW9uc2hpcFR5
cGVBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7CisgICAg
fSgpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IGNvbW1v
bk1lbnVBdHRycyA9IEBbCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCiAg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKQEAgLTEzNTks
NyArMTM1OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAg
ICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5U2l6ZUF0dHJpYnV0ZSwKICAgICBdOwotICAgIHN0YXRpYyBhdXRvIHdlYkFyZWFBdHRycyA9
IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHdlYkFy
ZWFBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwog
ICAgICAgICAvLyBXZWJBcmVhcyBzaG91bGQgbm90IGV4cG9zZSBBWFN1YnJvbGUuCiAgICAgICAg
IFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGVd
OwpAQCAtMTM3Niw4ICsxMzc2LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlXZWJTZXNzaW9uSURBdHRyaWJ1dGVdOwogICAgICAgICBy
ZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gdGV4dEF0dHJzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkIHRleHRBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQo
KV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlOdW1iZXJP
ZkNoYXJhY3RlcnNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZFRleHRBdHRyaWJ1dGVdOwpAQCAtMTM5MSwyNCArMTM5MSwyNCBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxl
ZEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBz
dGF0aWMgYXV0byBsaXN0QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbGlzdEF0dHJzID0gW10gewogICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVd
OwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlv
bkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAg
ICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIGxpc3RCb3hBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBsaXN0Qm94QXR0cnMg
PSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5Omxpc3RBdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSZXF1aXJlZEF0dHJp
YnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFs
aWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAg
fSgpKTsKLSAgICBzdGF0aWMgYXV0byByYW5nZUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHJhbmdlQXR0cnMgPSBbXSB7
CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07
CkBAIC0xNDE2LDI0ICsxNDE2LDI0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZURl
c2NyaXB0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFy
cmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gbWVudUJhckF0dHJzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1lbnVC
YXJBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzLmdldCgpLmdldCgp
XSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
Q2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRl
XTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRv
IG1lbnVBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZCBtZW51QXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1l
bnVBdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRB
dHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgp
KTsKLSAgICBzdGF0aWMgYXV0byBtZW51SXRlbUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1lbnVJdGVtQXR0cnMgPSBb
XSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0
cmlidXRlXTsKQEAgLTE0NDksNyArMTQ0OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlT
ZXJ2ZXNBc1RpdGxlRm9yVUlFbGVtZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGVdOwogICAgICAgICByZXR1
cm4gdGVtcEFycmF5OwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IG1lbnVCdXR0b25BdHRycyA9IEBbCiAgICAgICAgIE5T
QWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVE
ZXNjcmlwdGlvbkF0dHJpYnV0ZSwKQEAgLTE0NjIsMjkgKzE0NjIsMjkgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0
cmlidXRlLAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKICAgICBd
OwotICAgIHN0YXRpYyBhdXRvIGNvbnRyb2xBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGNvbnRyb2xBdHRycyA9IFtdIHsKICAgICAgICAg
YXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmli
dXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxp
ZEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBz
dGF0aWMgYXV0byBidXR0b25BdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBidXR0b25BdHRycyA9IFtdIHsKICAgICAgICAg
YXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICAvLyBCdXR0b25zIHNob3Vs
ZCBub3QgZXhwb3NlIEFYVmFsdWUuCiAgICAgICAgIFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOwogICAg
ICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gY29tYm9C
b3hBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCBjb21ib0JveEF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJh
eSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb250cm9s
QXR0cnMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0
ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byB0YWJsZUF0dHJzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHRh
YmxlQXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVS
b3dzQXR0cmlidXRlXTsKQEAgLTE0OTksMjEgKzE0OTksMjEgQEAgQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUFSSUFDb2x1bW5Db3VudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFSb3dDb3VudEF0dHJpYnV0ZV07CiAgICAgICAgIHJl
dHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byB0YWJsZVJvd0F0dHJz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkIHRhYmxlUm93QXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0
KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
SW5kZXhBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0g
ICAgc3RhdGljIGF1dG8gdGFibGVDb2xBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Cisg
ICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0YWJsZUNvbEF0dHJzID0gW10gewog
ICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0
cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRp
YyBhdXRvIHRhYmxlQ2VsbEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHRhYmxlQ2VsbEF0dHJzID0gW10gewogICAgICAg
ICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVdOwogICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5JbmRleFJhbmdlQXR0cmli
dXRlXTsKQEAgLTE1MjIsMTggKzE1MjIsMTggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFS
SUFDb2x1bW5JbmRleEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eUFSSUFSb3dJbmRleEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1w
QXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byBncm91cEF0dHJzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGdyb3Vw
QXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRB
dHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3Rh
dGljIGF1dG8gaW5wdXRJbWFnZUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9
KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGlucHV0SW1hZ2VBdHRycyA9IFtdIHsKICAg
ICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6YnV0dG9uQXR0cnMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJu
IHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHBhc3N3b3JkRmllbGRBdHRy
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZCBwYXNzd29yZEZpZWxkQXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0
ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlSZXF1aXJlZEF0dHJpYnV0ZV07CkBAIC0xNTQxLDIzICsxNTQx
LDIzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRv
ZmlsbGVkQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwot
ICAgIHN0YXRpYyBhdXRvIHRhYkxpc3RBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Cisg
ICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0YWJMaXN0QXR0cnMgPSBbXSB7CiAg
ICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGFic0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1
dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1
dG8gb3V0bGluZUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkIG91dGxpbmVBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0
ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZV07CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRl
XTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRv
IG91dGxpbmVSb3dBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZCBvdXRsaW5lUm93QXR0cnMgPSBbXSB7CiAgICAgICAgIGF1
dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OnRhYmxlUm93QXR0cnMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXTsK
QEAgLTE1NjUsMjcgKzE1NjUsMjcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3Nl
ZFJvd3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IHJlbW92ZU9iamVjdDpOU0FjY2Vz
c2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAg
fSgpKTsKLSAgICBzdGF0aWMgYXV0byBzY3JvbGxWaWV3QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95
ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc2Nyb2xsVmlld0F0
dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRh
bFNjcm9sbEJhckF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVZlcnRpY2FsU2Nyb2xsQmFyQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRl
bXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIGltYWdlQXR0cnMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW1h
Z2VBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbWFnZU92ZXJsYXlF
bGVtZW50c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CiAgICAgICAgIHJl
dHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byB2aWRlb0F0dHJzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkIHZpZGVvQXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0
KCldKTsKICAgICAgICAgLy8gVGhpcyBzaG91bGQgcmVwcmVzZW50IHRoZSBVUkwgb2YgdGhlIHZp
ZGVvIGNvbnRlbnQsIG5vdCB0aGUgcG9zdGVyLgogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5
OwotICAgIH0oKSk7CisgICAgfSgpOwogCiAgICAgTlNBcnJheSAqb2JqZWN0QXR0cmlidXRlcyA9
IGF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5kZXgg
NmQ3MGRmYmYwMGVmZTM2MjBiOGNlZjY5MGE5ZGExOTNlY2M1ZjEzMC4uOWIyNDdmYjc0NzkzZGM1
ZTEwNTg4ZDZjZGUwYWVhMmFhYTc4YjI5OCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAg
LTEwMzUsNyArMTAzNSw3IEBAIEVORAogCiBzdGF0aWMgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUNv
bnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnRDb25zdHJ1Y3RvckZ1bmN0aW9uKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgYXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUZhY3RvcnlNYXAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
IG1hcCA9IGNyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1GYWN0b3J5TWFwKCk7CiAgICAgcmV0
dXJuIG1hcC5nZXQoKS5nZXQobG9jYWxOYW1lKTsKIH0KIApAQCAtMTMwOSw3ICsxMzA5LDcgQEAg
RU5ECiAKIEpTRE9NT2JqZWN0KiBjcmVhdGVKUyRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVy
KEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjwkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RWxlbWVudD4mJiBlbGVtZW50KQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGZ1bmN0aW9u
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBl
ck1hcCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZnVuY3Rpb25zID0gY3JlYXRlJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXJNYXAoKTsKICAgICBpZiAoYXV0byBmdW5jdGlvbiA9
IGZ1bmN0aW9ucy5nZXQoKS5nZXQoZWxlbWVudC0+bG9jYWxOYW1lKCkpKQogICAgICAgICByZXR1
cm4gZnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnQpKTsKIEVORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDcyZTI3OTlkZDQyZDQ1ZTBhNTY1
NmFjMzIwMzEyZDNiYzM3YjE0MDguLjg1NTgwN2UyYzIwOWIwYjMxNGVhZDg4ZDQ2MThkNWNmYWYz
Nzc1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTk0OSw5
ICs5NDksOSBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZF
bGVtZW50KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQsIFJlZgogICAgIHJldHVybiBjb25mbGljdHM7
CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8Y29uc3QgSFRNTEVsZW1lbnRFcXVpdmFsZW50Kj4m
IGh0bWxFbGVtZW50RXF1aXZhbGVudHMoKQorc3RhdGljIFNwYW48Y29uc3QgSFRNTEVsZW1lbnRF
cXVpdmFsZW50KiBjb25zdD4gaHRtbEVsZW1lbnRFcXVpdmFsZW50cygpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGF1dG8gZXF1aXZhbGVudHMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPGNvbnN0
IEhUTUxFbGVtZW50RXF1aXZhbGVudCo+IHsKKyAgICBzdGF0aWMgY29uc3QgSFRNTEVsZW1lbnRF
cXVpdmFsZW50KiBjb25zdCBlcXVpdmFsZW50c1tdID0gewogICAgICAgICBuZXcgSFRNTEZvbnRX
ZWlnaHRFcXVpdmFsZW50KEhUTUxOYW1lczo6YlRhZyksCiAgICAgICAgIG5ldyBIVE1MRm9udFdl
aWdodEVxdWl2YWxlbnQoSFRNTE5hbWVzOjpzdHJvbmdUYWcpLAogCkBAIC05NjMsMTEgKzk2Mywx
MCBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPGNvbnN0IEhUTUxFbGVtZW50RXF1aXZhbGVudCo+JiBo
dG1sRWxlbWVudEVxdWl2YWxlbnRzKCkKICAgICAgICAgbmV3IEhUTUxUZXh0RGVjb3JhdGlvbkVx
dWl2YWxlbnQoQ1NTVmFsdWVVbmRlcmxpbmUsIEhUTUxOYW1lczo6dVRhZyksCiAgICAgICAgIG5l
dyBIVE1MVGV4dERlY29yYXRpb25FcXVpdmFsZW50KENTU1ZhbHVlTGluZVRocm91Z2gsIEhUTUxO
YW1lczo6c1RhZyksCiAgICAgICAgIG5ldyBIVE1MVGV4dERlY29yYXRpb25FcXVpdmFsZW50KENT
U1ZhbHVlTGluZVRocm91Z2gsIEhUTUxOYW1lczo6c3RyaWtlVGFnKSwKLSAgICB9KTsKKyAgICB9
OwogICAgIHJldHVybiBlcXVpdmFsZW50czsKIH0KIAotCiBib29sIEVkaXRpbmdTdHlsZTo6Y29u
ZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIEVk
aXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUsIFNob3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlIHNo
b3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBjb25zdAogewogICAgIGlmIChpc0VtcHR5KCkpCkBA
IC05ODQsOSArOTgzLDkgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbXBsaWNp
dFN0eWxlT2ZFbGVtZW50KEhUTUxFbGVtZW50JiBlbGVtZW50LCBFZGkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8Y29uc3QgSFRNTEF0dHJpYnV0ZUVxdWl2YWxl
bnQqPiYgaHRtbEF0dHJpYnV0ZUVxdWl2YWxlbnRzKCkKK3N0YXRpYyBTcGFuPGNvbnN0IEhUTUxB
dHRyaWJ1dGVFcXVpdmFsZW50KiBjb25zdD4gaHRtbEF0dHJpYnV0ZUVxdWl2YWxlbnRzKCkKIHsK
LSAgICBzdGF0aWMgY29uc3QgYXV0byBlcXVpdmFsZW50cyA9IG1ha2VOZXZlckRlc3Ryb3llZChW
ZWN0b3I8Y29uc3QgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQqPiB7CisgICAgc3RhdGljIGNvbnN0
IEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50KiBjb25zdCBlcXVpdmFsZW50c1tdID0gewogICAgICAg
ICAvLyBlbGVtZW50SXNTdHlsZWRTcGFuT3JIVE1MRXF1aXZhbGVudCBkZXBlbmRzIG9uIHRoZSBm
YWN0IGVhY2ggSFRNTEF0dHJpdXRlRXF1aXZhbGVudCBtYXRjaGVzIGV4YWN0bHkgb25lIGF0dHJp
YnV0ZQogICAgICAgICAvLyBvZiBleGFjdGx5IG9uZSBlbGVtZW50IGV4Y2VwdCBkaXJBdHRyLgog
ICAgICAgICBuZXcgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQoQ1NTUHJvcGVydHlDb2xvciwgSFRN
TE5hbWVzOjpmb250VGFnLCBIVE1MTmFtZXM6OmNvbG9yQXR0ciksCkBAIC05OTUsNyArOTk0LDcg
QEAgc3RhdGljIGNvbnN0IFZlY3Rvcjxjb25zdCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudCo+JiBo
dG1sQXR0cmlidXRlRXF1aXZhbGVudHMoKQogCiAgICAgICAgIG5ldyBIVE1MQXR0cmlidXRlRXF1
aXZhbGVudChDU1NQcm9wZXJ0eURpcmVjdGlvbiwgSFRNTE5hbWVzOjpkaXJBdHRyKSwKICAgICAg
ICAgbmV3IEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIEhU
TUxOYW1lczo6ZGlyQXR0ciksCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gZXF1aXZhbGVu
dHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNw
cAppbmRleCA5ZGJhNTBhODA5MmViODczMGFlMjMxYzEzMTEwMzE2MzMwMzFmZjI3Li4yZTEwNTgy
NjFmZjU2NzNlMjAyYTJjYWZkZGEzZDAxMGY2NDU5MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgRWxlbWVu
dCogRm9ybWF0QmxvY2tDb21tYW5kOjplbGVtZW50Rm9yRm9ybWF0QmxvY2tDb21tYW5kKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2kKIAogYm9vbCBpc0VsZW1lbnRGb3JGb3JtYXRCbG9jayhjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGJsb2NrVGFn
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhh
c2hTZXQ8UXVhbGlmaWVkTmFtZT4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBibG9ja1Rh
Z3MgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8UXVhbGlmaWVkTmFt
ZT4gewogICAgICAgICBhZGRyZXNzVGFnLAogICAgICAgICBhcnRpY2xlVGFnLAogICAgICAgICBh
c2lkZVRhZywKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIGlzRWxlbWVudEZvckZvcm1hdEJsb2Nr
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiAgICAgICAgIHBUYWcsCiAgICAgICAgIHBy
ZVRhZywKICAgICAgICAgc2VjdGlvblRhZywKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBi
bG9ja1RhZ3MuZ2V0KCkuY29udGFpbnModGFnTmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCmluZGV4IDY2MTQwN2UxNDUyNGNmMmEx
M2ZlYTM2NTUxM2Q3OWFiZTUzZTY5ZDMuLjMzZTk2MDVkNWYwNzJiNjFmY2E3YzVhZDk5Nzc0Yzg1
NmU5M2I1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21t
YW5kLmNwcApAQCAtNDcsNyArNDcsNyBAQCBSZW1vdmVGb3JtYXRDb21tYW5kOjpSZW1vdmVGb3Jt
YXRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkKIAogc3RhdGljIGJvb2wgaXNFbGVtZW50Rm9y
UmVtb3ZlRm9ybWF0Q29tbWFuZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIHN0YXRp
YyBjb25zdCBhdXRvIGVsZW1lbnRzID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxRdWFsaWZpZWROYW1lPiB7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkIGVsZW1lbnRzID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoU2V0PFF1YWxpZmllZE5hbWU+IHsKICAgICAgICAgYWNyb255bVRhZywKICAgICAgICAgYlRh
ZywKICAgICAgICAgYmRvVGFnLApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgYm9vbCBpc0VsZW1l
bnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAg
IHR0VGFnLAogICAgICAgICB1VGFnLAogICAgICAgICB2YXJUYWcsCi0gICAgfSk7CisgICAgfTsK
ICAgICByZXR1cm4gZWxlbWVudHMuZ2V0KCkuY29udGFpbnMoZWxlbWVudC0+dGFnUU5hbWUoKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKaW5kZXggZTdmZjI2NTQ1ZGRiNzQ2NTRmMDI5NDlkZjBkNGM0OGI4ZTQ3MTAxMC4u
YzI0YmVmZjVjYjRlYTc0ZjBkNWQyYzNiNTY2YmRiNmZkZmI1YzZlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTcyNSw2
MyArNzI1LDYzIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFu
dFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0CiAKIHN0YXRpYyBib29sIGlzUHJv
aGliaXRlZFBhcmFncmFwaENoaWxkKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7Ci0gICAgLy8g
aHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9lZGl0aW5nL3Jhdy1maWxlLzU3YWJlNmQzY2I2MC9lZGl0
aW5nLmh0bWwjcHJvaGliaXRlZC1wYXJhZ3JhcGgtY2hpbGQKLSAgICBzdGF0aWMgY29uc3QgYXV0
byBsb2NhbE5hbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgc3RhdGljIGNv
bnN0IEhUTUxRdWFsaWZpZWROYW1lKiBjb25zdCB0YWdzW10gPSB7Ci0gICAgICAgICAgICAmYWRk
cmVzc1RhZy5nZXQoKSwKLSAgICAgICAgICAgICZhcnRpY2xlVGFnLmdldCgpLAotICAgICAgICAg
ICAgJmFzaWRlVGFnLmdldCgpLAotICAgICAgICAgICAgJmJsb2NrcXVvdGVUYWcuZ2V0KCksCi0g
ICAgICAgICAgICAmY2FwdGlvblRhZy5nZXQoKSwKLSAgICAgICAgICAgICZjZW50ZXJUYWcuZ2V0
KCksCi0gICAgICAgICAgICAmY29sVGFnLmdldCgpLAotICAgICAgICAgICAgJmNvbGdyb3VwVGFn
LmdldCgpLAotICAgICAgICAgICAgJmRkVGFnLmdldCgpLAotICAgICAgICAgICAgJmRldGFpbHNU
YWcuZ2V0KCksCi0gICAgICAgICAgICAmZGlyVGFnLmdldCgpLAotICAgICAgICAgICAgJmRpdlRh
Zy5nZXQoKSwKLSAgICAgICAgICAgICZkbFRhZy5nZXQoKSwKLSAgICAgICAgICAgICZkdFRhZy5n
ZXQoKSwKLSAgICAgICAgICAgICZmaWVsZHNldFRhZy5nZXQoKSwKLSAgICAgICAgICAgICZmaWdj
YXB0aW9uVGFnLmdldCgpLAotICAgICAgICAgICAgJmZpZ3VyZVRhZy5nZXQoKSwKLSAgICAgICAg
ICAgICZmb290ZXJUYWcuZ2V0KCksCi0gICAgICAgICAgICAmZm9ybVRhZy5nZXQoKSwKLSAgICAg
ICAgICAgICZoMVRhZy5nZXQoKSwKLSAgICAgICAgICAgICZoMlRhZy5nZXQoKSwKLSAgICAgICAg
ICAgICZoM1RhZy5nZXQoKSwKLSAgICAgICAgICAgICZoNFRhZy5nZXQoKSwKLSAgICAgICAgICAg
ICZoNVRhZy5nZXQoKSwKLSAgICAgICAgICAgICZoNlRhZy5nZXQoKSwKLSAgICAgICAgICAgICZo
ZWFkZXJUYWcuZ2V0KCksCi0gICAgICAgICAgICAmaGdyb3VwVGFnLmdldCgpLAotICAgICAgICAg
ICAgJmhyVGFnLmdldCgpLAotICAgICAgICAgICAgJmxpVGFnLmdldCgpLAotICAgICAgICAgICAg
Jmxpc3RpbmdUYWcuZ2V0KCksCi0gICAgICAgICAgICAmbWFpblRhZy5nZXQoKSwgLy8gTWlzc2lu
ZyBpbiB0aGUgc3BlY2lmaWNhdGlvbi4KLSAgICAgICAgICAgICZtZW51VGFnLmdldCgpLAotICAg
ICAgICAgICAgJm5hdlRhZy5nZXQoKSwKLSAgICAgICAgICAgICZvbFRhZy5nZXQoKSwKLSAgICAg
ICAgICAgICZwVGFnLmdldCgpLAotICAgICAgICAgICAgJnBsYWludGV4dFRhZy5nZXQoKSwKLSAg
ICAgICAgICAgICZwcmVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmc2VjdGlvblRhZy5nZXQoKSwK
LSAgICAgICAgICAgICZzdW1tYXJ5VGFnLmdldCgpLAotICAgICAgICAgICAgJnRhYmxlVGFnLmdl
dCgpLAotICAgICAgICAgICAgJnRib2R5VGFnLmdldCgpLAotICAgICAgICAgICAgJnRkVGFnLmdl
dCgpLAotICAgICAgICAgICAgJnRmb290VGFnLmdldCgpLAotICAgICAgICAgICAgJnRoVGFnLmdl
dCgpLAotICAgICAgICAgICAgJnRoZWFkVGFnLmdldCgpLAotICAgICAgICAgICAgJnRyVGFnLmdl
dCgpLAotICAgICAgICAgICAgJnVsVGFnLmdldCgpLAotICAgICAgICAgICAgJnhtcFRhZy5nZXQo
KSwKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbG9jYWxOYW1lcyA9IFtdIHsKKyAgICAgICAg
Ly8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9lZGl0aW5nL3Jhdy1maWxlLzU3YWJlNmQzY2I2MC9l
ZGl0aW5nLmh0bWwjcHJvaGliaXRlZC1wYXJhZ3JhcGgtY2hpbGQKKyAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmFycmF5IHRhZ3MgeworICAgICAgICAgICAgJmFkZHJlc3NUYWcsCisgICAg
ICAgICAgICAmYXJ0aWNsZVRhZywKKyAgICAgICAgICAgICZhc2lkZVRhZywKKyAgICAgICAgICAg
ICZibG9ja3F1b3RlVGFnLAorICAgICAgICAgICAgJmNhcHRpb25UYWcsCisgICAgICAgICAgICAm
Y2VudGVyVGFnLAorICAgICAgICAgICAgJmNvbFRhZywKKyAgICAgICAgICAgICZjb2xncm91cFRh
ZywKKyAgICAgICAgICAgICZkZFRhZywKKyAgICAgICAgICAgICZkZXRhaWxzVGFnLAorICAgICAg
ICAgICAgJmRpclRhZywKKyAgICAgICAgICAgICZkaXZUYWcsCisgICAgICAgICAgICAmZGxUYWcs
CisgICAgICAgICAgICAmZHRUYWcsCisgICAgICAgICAgICAmZmllbGRzZXRUYWcsCisgICAgICAg
ICAgICAmZmlnY2FwdGlvblRhZywKKyAgICAgICAgICAgICZmaWd1cmVUYWcsCisgICAgICAgICAg
ICAmZm9vdGVyVGFnLAorICAgICAgICAgICAgJmZvcm1UYWcsCisgICAgICAgICAgICAmaDFUYWcs
CisgICAgICAgICAgICAmaDJUYWcsCisgICAgICAgICAgICAmaDNUYWcsCisgICAgICAgICAgICAm
aDRUYWcsCisgICAgICAgICAgICAmaDVUYWcsCisgICAgICAgICAgICAmaDZUYWcsCisgICAgICAg
ICAgICAmaGVhZGVyVGFnLAorICAgICAgICAgICAgJmhncm91cFRhZywKKyAgICAgICAgICAgICZo
clRhZywKKyAgICAgICAgICAgICZsaVRhZywKKyAgICAgICAgICAgICZsaXN0aW5nVGFnLAorICAg
ICAgICAgICAgJm1haW5UYWcsIC8vIE1pc3NpbmcgaW4gdGhlIHNwZWNpZmljYXRpb24uCisgICAg
ICAgICAgICAmbWVudVRhZywKKyAgICAgICAgICAgICZuYXZUYWcsCisgICAgICAgICAgICAmb2xU
YWcsCisgICAgICAgICAgICAmcFRhZywKKyAgICAgICAgICAgICZwbGFpbnRleHRUYWcsCisgICAg
ICAgICAgICAmcHJlVGFnLAorICAgICAgICAgICAgJnNlY3Rpb25UYWcsCisgICAgICAgICAgICAm
c3VtbWFyeVRhZywKKyAgICAgICAgICAgICZ0YWJsZVRhZywKKyAgICAgICAgICAgICZ0Ym9keVRh
ZywKKyAgICAgICAgICAgICZ0ZFRhZywKKyAgICAgICAgICAgICZ0Zm9vdFRhZywKKyAgICAgICAg
ICAgICZ0aFRhZywKKyAgICAgICAgICAgICZ0aGVhZFRhZywKKyAgICAgICAgICAgICZ0clRhZywK
KyAgICAgICAgICAgICZ1bFRhZywKKyAgICAgICAgICAgICZ4bXBUYWcsCiAgICAgICAgIH07CiAg
ICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxBdG9tU3RyaW5n
PiBzZXQ7CiAgICAgICAgIGZvciAoYXV0byYgdGFnIDogdGFncykKLSAgICAgICAgICAgIHNldC5h
ZGQodGFnLT5sb2NhbE5hbWUoKSk7CisgICAgICAgICAgICBzZXQuYWRkKHRhZy0+Z2V0KCkubG9j
YWxOYW1lKCkpOwogICAgICAgICByZXR1cm4gc2V0OwotICAgIH0oKSk7CisgICAgfSgpOwogICAg
IHJldHVybiBsb2NhbE5hbWVzLmdldCgpLmNvbnRhaW5zKG5hbWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggMDc4MjQ4MzYyYWEw
NTRkYzNhYjAwMDA0NTE3MTg0MTk4YTU4MGY3Ny4uZGYyNGRhMmM4MTVlYjMxMzA2MGM3OGE0YzEy
YmUyNzgyM2M5ODAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQpAQCAtNDE2LDEyICs0MTYsMTIgQEAgQXR0cmlidXRlZFN0cmluZyBIVE1MQ29u
dmVydGVyOjpjb252ZXJ0KCkKIC8vIFJldHVybnMgdGhlIGZvbnQgdG8gYmUgdXNlZCBpZiB0aGUg
TlNGb250QXR0cmlidXRlTmFtZSBkb2Vzbid0IGV4aXN0CiBzdGF0aWMgTlNGb250ICpXZWJEZWZh
dWx0Rm9udCgpCiB7Ci0gICAgc3RhdGljIGF1dG8gZGVmYXVsdEZvbnQgPSBtYWtlTmV2ZXJEZXN0
cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBkZWZhdWx0Rm9udCA9IFtdIHsK
ICAgICAgICAgTlNGb250ICpmb250ID0gW05TRm9udCBmb250V2l0aE5hbWU6QCJIZWx2ZXRpY2Ei
IHNpemU6MTJdOwogICAgICAgICBpZiAoIWZvbnQpCiAgICAgICAgICAgICBmb250ID0gW05TRm9u
dCBzeXN0ZW1Gb250T2ZTaXplOjEyXTsKLSAgICAgICAgcmV0dXJuIHJldGFpblB0cihmb250KTsK
LSAgICB9KCkpOworICAgICAgICByZXR1cm4gUmV0YWluUHRyIHsgZm9udCB9OworICAgIH0oKTsK
ICAgICByZXR1cm4gZGVmYXVsdEZvbnQuZ2V0KCkuZ2V0KCk7CiB9CiAjZW5kaWYKQEAgLTUxOCwx
MyArNTE4LDEzIEBAIHN0YXRpYyBQbGF0Zm9ybUZvbnQgKl9mb250Rm9yTmFtZUFuZFNpemUoTlNT
dHJpbmcgKmZvbnROYW1lLCBDR0Zsb2F0IHNpemUsIE5TTXV0CiAKIHN0YXRpYyBOU1BhcmFncmFw
aFN0eWxlICpkZWZhdWx0UGFyYWdyYXBoU3R5bGUoKQogewotICAgIHN0YXRpYyBhdXRvIGRlZmF1
bHRQYXJhZ3JhcGhTdHlsZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIGF1dG8g
ZGVmYXVsdFBhcmFncmFwaFN0eWxlID0gYWRvcHROUyhbW1BsYXRmb3JtTlNQYXJhZ3JhcGhTdHls
ZSBkZWZhdWx0UGFyYWdyYXBoU3R5bGVdIG11dGFibGVDb3B5XSk7Ci0gICAgICAgIFtkZWZhdWx0
UGFyYWdyYXBoU3R5bGUgc2V0RGVmYXVsdFRhYkludGVydmFsOjM2XTsKLSAgICAgICAgW2RlZmF1
bHRQYXJhZ3JhcGhTdHlsZSBzZXRUYWJTdG9wczpAW11dOwotICAgICAgICByZXR1cm4gZGVmYXVs
dFBhcmFncmFwaFN0eWxlOwotICAgIH0oKSk7Ci0gICAgcmV0dXJuIGRlZmF1bHRQYXJhZ3JhcGhT
dHlsZS5nZXQoKS5nZXQoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3R5bGUgPSBbXSB7
CisgICAgICAgIGF1dG8gc3R5bGUgPSBhZG9wdE5TKFtbUGxhdGZvcm1OU1BhcmFncmFwaFN0eWxl
IGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0gbXV0YWJsZUNvcHldKTsKKyAgICAgICAgW3N0eWxlIHNl
dERlZmF1bHRUYWJJbnRlcnZhbDozNl07CisgICAgICAgIFtzdHlsZSBzZXRUYWJTdG9wczpAW11d
OworICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgfSgpOworICAgIHJldHVybiBzdHlsZS5nZXQo
KS5nZXQoKTsKIH0KIAogUmVmUHRyPENTU1ZhbHVlPiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjb21w
dXRlZFN0eWxlUHJvcGVydHlGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggMGU3M2QyOWEyMzUy
MzY5ZTFkOTU5ZmY5ZWNjZTk1Nzg0ZWY5MjY1ZC4uYzAzZTAzZjYyMDRlNjJkZTU1NzUyNmU1MTBh
NjM2ZDcxOWE5OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTUyLDE0ICs1Miwx
NCBAQCBzdHJ1Y3QgQXV0b2ZpbGxJbmZvIHsKIAogc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBBdXRvZmlsbEluZm8+JiBmaWVs
ZE5hbWVNYXAoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1hcCA9IFtdIHsKICAgICAgICAg
c3RydWN0IE1hcEVudHJ5IHsKICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1lOwogICAgICAg
ICAgICAgQXV0b2ZpbGxJbmZvIHZhbHVlOwogICAgICAgICB9OwotICAgICAgICBzdGF0aWMgY29u
c3QgTWFwRW50cnkgZW50cmllc1tdID0geworICAgICAgICBzdGF0aWMgY29uc3RleHByIE1hcEVu
dHJ5IGVudHJpZXNbXSA9IHsKICAgICAgICAgICAgIHsgIm9mZiJfcywgeyBBdXRvZmlsbEZpZWxk
TmFtZTo6Tm9uZSwgQXV0b2ZpbGxDYXRlZ29yeTo6T2ZmIH0gfSwKLSAgICAgICAgICAgIHsgIm9u
Il9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpOb25lLCAgQXV0b2ZpbGxDYXRlZ29yeTo6QXV0b21h
dGljIH0gfSwKKyAgICAgICAgICAgIHsgIm9uIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpOb25l
LCBBdXRvZmlsbENhdGVnb3J5OjpBdXRvbWF0aWMgfSB9LAogICAgICAgICAgICAgeyAibmFtZSJf
cywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6TmFtZSwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0g
fSwKICAgICAgICAgICAgIHsgImhvbm9yaWZpYy1wcmVmaXgiX3MsIHsgQXV0b2ZpbGxGaWVsZE5h
bWU6Okhvbm9yaWZpY1ByZWZpeCwgQXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKICAgICAg
ICAgICAgIHsgImdpdmVuLW5hbWUiX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6OkdpdmVuTmFtZSwg
QXV0b2ZpbGxDYXRlZ29yeTo6Tm9ybWFsIH0gfSwKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMg
Y29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcs
IEF1dG9maWxsSW5mbz4mCiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBlbnRyaWVzKQogICAg
ICAgICAgICAgbWFwLmFkZChlbnRyeS5uYW1lLCBlbnRyeS52YWx1ZSk7CiAgICAgICAgIHJldHVy
biBtYXA7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IDEzY2IwNjczMTljODQ4ZDYyOTUxMmE5MDgy
NjQ2OThhZTc3ZGYzNTcuLjcxNjZkMWQzNzdmYWI2N2EwOWRhMDA5YzYxZWIxMWJhNTE4MTFiZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTE3Niw2NCArMTc2LDYzIEBA
IHZvaWQgSFRNTERvY3VtZW50OjpyZW1vdmVXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbVN0cmlu
Z0ltcGwmIG5hbWUsIEVsZW1lbnQmIGl0CiAKIGJvb2wgSFRNTERvY3VtZW50Ojppc0Nhc2VTZW5z
aXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgYXV0byBjYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVTZXQgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBzZXQgPSBbXSB7CiAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGxpc3Qgb2YgYXR0cmlidXRlcyBpbiBIVE1MIDQuMDEgd2l0
aCB2YWx1ZXMgbWFya2VkIGFzICJbQ0ldIiBvciBjYXNlLWluc2Vuc2l0aXZlCiAgICAgICAgIC8v
IE1vemlsbGEgdHJlYXRzIGFsbCBvdGhlciB2YWx1ZXMgYXMgY2FzZS1zZW5zaXRpdmUsIHRodXMg
c28gZG8gd2UuCi0gICAgICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCBuYW1l
c1tdID0gewotICAgICAgICAgICAgJmFjY2VwdF9jaGFyc2V0QXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZhY2NlcHRBdHRyLmdldCgpLAotICAgICAgICAgICAgJmFsaWduQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZhbGlua0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmYXhpc0F0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmYmdjb2xvckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmY2hhcnNldEF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmY2hlY2tlZEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
Y2xlYXJBdHRyLmdldCgpLAotICAgICAgICAgICAgJmNvZGV0eXBlQXR0ci5nZXQoKSwKLSAgICAg
ICAgICAgICZjb2xvckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmY29tcGFjdEF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmZGVjbGFyZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZGVmZXJBdHRy
LmdldCgpLAotICAgICAgICAgICAgJmRpckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZGlzYWJs
ZWRBdHRyLmdldCgpLAotICAgICAgICAgICAgJmVuY3R5cGVBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJmZhY2VBdHRyLmdldCgpLAotICAgICAgICAgICAgJmZyYW1lQXR0ci5nZXQoKSwKLSAgICAg
ICAgICAgICZocmVmbGFuZ0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmaHR0cF9lcXVpdkF0dHIu
Z2V0KCksCi0gICAgICAgICAgICAmbGFuZ0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmbGFuZ3Vh
Z2VBdHRyLmdldCgpLAotICAgICAgICAgICAgJmxpbmtBdHRyLmdldCgpLAotICAgICAgICAgICAg
Jm1lZGlhQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZtZXRob2RBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJm11bHRpcGxlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZub2hyZWZBdHRyLmdldCgp
LAotICAgICAgICAgICAgJm5vcmVzaXplQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZub3NoYWRl
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZub3dyYXBBdHRyLmdldCgpLAotICAgICAgICAgICAg
JnJlYWRvbmx5QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZyZWxBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJnJldkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmcnVsZXNBdHRyLmdldCgpLAotICAg
ICAgICAgICAgJnNjb3BlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZzY3JvbGxpbmdBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJnNlbGVjdGVkQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZzaGFw
ZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmdGFyZ2V0QXR0ci5nZXQoKSwKLSAgICAgICAgICAg
ICZ0ZXh0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZ0eXBlQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZ2YWxpZ25BdHRyLmdldCgpLAotICAgICAgICAgICAgJnZhbHVldHlwZUF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmdmxpbmtBdHRyLmdldCgpLAorICAgICAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXkgbmFtZXMgeworICAgICAgICAgICAgJmFjY2VwdF9jaGFyc2V0QXR0ciwKKyAg
ICAgICAgICAgICZhY2NlcHRBdHRyLAorICAgICAgICAgICAgJmFsaWduQXR0ciwKKyAgICAgICAg
ICAgICZhbGlua0F0dHIsCisgICAgICAgICAgICAmYXhpc0F0dHIsCisgICAgICAgICAgICAmYmdj
b2xvckF0dHIsCisgICAgICAgICAgICAmY2hhcnNldEF0dHIsCisgICAgICAgICAgICAmY2hlY2tl
ZEF0dHIsCisgICAgICAgICAgICAmY2xlYXJBdHRyLAorICAgICAgICAgICAgJmNvZGV0eXBlQXR0
ciwKKyAgICAgICAgICAgICZjb2xvckF0dHIsCisgICAgICAgICAgICAmY29tcGFjdEF0dHIsCisg
ICAgICAgICAgICAmZGVjbGFyZUF0dHIsCisgICAgICAgICAgICAmZGVmZXJBdHRyLAorICAgICAg
ICAgICAgJmRpckF0dHIsCisgICAgICAgICAgICAmZGlzYWJsZWRBdHRyLAorICAgICAgICAgICAg
JmVuY3R5cGVBdHRyLAorICAgICAgICAgICAgJmZhY2VBdHRyLAorICAgICAgICAgICAgJmZyYW1l
QXR0ciwKKyAgICAgICAgICAgICZocmVmbGFuZ0F0dHIsCisgICAgICAgICAgICAmaHR0cF9lcXVp
dkF0dHIsCisgICAgICAgICAgICAmbGFuZ0F0dHIsCisgICAgICAgICAgICAmbGFuZ3VhZ2VBdHRy
LAorICAgICAgICAgICAgJmxpbmtBdHRyLAorICAgICAgICAgICAgJm1lZGlhQXR0ciwKKyAgICAg
ICAgICAgICZtZXRob2RBdHRyLAorICAgICAgICAgICAgJm11bHRpcGxlQXR0ciwKKyAgICAgICAg
ICAgICZub2hyZWZBdHRyLAorICAgICAgICAgICAgJm5vcmVzaXplQXR0ciwKKyAgICAgICAgICAg
ICZub3NoYWRlQXR0ciwKKyAgICAgICAgICAgICZub3dyYXBBdHRyLAorICAgICAgICAgICAgJnJl
YWRvbmx5QXR0ciwKKyAgICAgICAgICAgICZyZWxBdHRyLAorICAgICAgICAgICAgJnJldkF0dHIs
CisgICAgICAgICAgICAmcnVsZXNBdHRyLAorICAgICAgICAgICAgJnNjb3BlQXR0ciwKKyAgICAg
ICAgICAgICZzY3JvbGxpbmdBdHRyLAorICAgICAgICAgICAgJnNlbGVjdGVkQXR0ciwKKyAgICAg
ICAgICAgICZzaGFwZUF0dHIsCisgICAgICAgICAgICAmdGFyZ2V0QXR0ciwKKyAgICAgICAgICAg
ICZ0ZXh0QXR0ciwKKyAgICAgICAgICAgICZ0eXBlQXR0ciwKKyAgICAgICAgICAgICZ2YWxpZ25B
dHRyLAorICAgICAgICAgICAgJnZhbHVldHlwZUF0dHIsCisgICAgICAgICAgICAmdmxpbmtBdHRy
LAogICAgICAgICB9OwogICAgICAgICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhh
c2hTZXQ8QXRvbVN0cmluZz4gc2V0OwogICAgICAgICBmb3IgKGF1dG8qIG5hbWUgOiBuYW1lcykK
LSAgICAgICAgICAgIHNldC5hZGQobmFtZS0+bG9jYWxOYW1lKCkpOworICAgICAgICAgICAgc2V0
LmFkZChuYW1lLT5nZXQoKS5sb2NhbE5hbWUoKSk7CiAgICAgICAgIHJldHVybiBzZXQ7Ci0gICAg
fSgpKTsKLQorICAgIH0oKTsKICAgICBib29sIGlzUG9zc2libGVIVE1MQXR0ciA9ICFhdHRyaWJ1
dGVOYW1lLmhhc1ByZWZpeCgpICYmIGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkuaXNOdWxs
KCk7Ci0gICAgcmV0dXJuICFpc1Bvc3NpYmxlSFRNTEF0dHIgfHwgIWNhc2VJbnNlbnNpdGl2ZUF0
dHJpYnV0ZVNldC5nZXQoKS5jb250YWlucyhhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKTsKKyAg
ICByZXR1cm4gIWlzUG9zc2libGVIVE1MQXR0ciB8fCAhc2V0LmdldCgpLmNvbnRhaW5zKGF0dHJp
YnV0ZU5hbWUubG9jYWxOYW1lKCkpOwogfQogCiBib29sIEhUTUxEb2N1bWVudDo6aXNGcmFtZVNl
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGNmNjdkYzU0MzQ0
M2YxNGQ5YjU3MzkzZjRlM2Y2OTU2ODAyYTgzZWUuLjJhZGZmOGZlODVkOTM2NzgwMjk1YzIzOTVj
ZTM1MTllMzgxODQ0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0yNjks
NyArMjY5LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgSFRNTEVsZW1lbnQ6OmV2ZW50TmFtZUZvckV2
ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWQKICAgICAgICAgICAgIG1hcC5hZGQo
YXR0cmlidXRlTmFtZS5pbXBsKCksIGV2ZW50TmFtZSk7CiAgICAgICAgIH0pOwogICAgICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZXNlIHNwZWNpYWwgY2FzZXMuIFRoZXNlIGFyZSBub3QgaW4gSURM
IHdpdGggW0V2ZW50SGFuZGxlcl0gYnV0IHdlcmUgaGlzdG9yaWNhbGx5IGluIHRoaXMgbWFwLgot
ICAgICAgICBzdGF0aWMgY29uc3RleHByIGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBR
dWFsaWZpZWROYW1lPiogdGFibGVbXSA9IHsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5IHRhYmxlIHsKICAgICAgICAgICAgICZvbmF1dG9jb21wbGV0ZUF0dHIsCiAgICAgICAg
ICAgICAmb25hdXRvY29tcGxldGVlcnJvckF0dHIsCiAgICAgICAgICAgICAmb25iZWZvcmVsb2Fk
QXR0ciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZWM2
YWY2NmRhNDMzZmExZWMwMzQ4MTBmZDI5NTMwOGMwNGZkOTBkMS4uMDAzNGIyMzJiMWViZGIzZTQy
ZjQ1OTZhM2QzMjFmMjA3M2Y1NTFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojpy
ZW5kZXJGYWxsYmFja0NvbnRlbnQoKQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcHJldmVudHNQYXJl
bnRPYmplY3RGcm9tRXhwb3N1cmUoY29uc3QgRWxlbWVudCYgY2hpbGQpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGF1dG8gbW9zdEtub3duVGFncyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkIG1vc3RLbm93blRhZ3MgPSBbXSB7CiAgICAgICAgIE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxRdWFsaWZpZWROYW1lPiBzZXQ7CiAg
ICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKyspIHsKQEAg
LTM3Nyw3ICszNzcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcHJldmVudHNQYXJlbnRPYmplY3RG
cm9tRXhwb3N1cmUoY29uc3QgRWxlbWVudCYgY2hpbGQpCiAgICAgICAgICAgICBzZXQuYWRkKHRh
Zyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOworICAgIH0oKTsK
ICAgICByZXR1cm4gbW9zdEtub3duVGFncy5nZXQoKS5jb250YWlucyhjaGlsZC50YWdRTmFtZSgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGUzYjBkOTlkMDBhNDUwNjdj
NTI2NjRjZDI4ZmU3ZmMwNDEyYWRmYjUuLmI2NTY5YmFkMzc4ZTAwYzQyNTAyNTNlZDczMDViYzE4
Y2EwNWViNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTE0OSw3ICsxNDksNyBA
QCBzdGF0aWMgSW5wdXRUeXBlRmFjdG9yeU1hcCBjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKCkK
IFJlZjxJbnB1dFR5cGU+IElucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IEF0b21TdHJpbmcmIHR5cGVOYW1lKQogewogICAgIGlmICghdHlwZU5hbWUuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBhdXRvIGZhY3RvcnlNYXAgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoY3JlYXRlSW5wdXRUeXBlRmFjdG9yeU1hcCgpKTsKKyAgICAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkIGZhY3RvcnlNYXAgPSBjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKCk7
CiAgICAgICAgIGF1dG8mJiBbY29uZGl0aW9uYWwsIGZhY3RvcnldID0gZmFjdG9yeU1hcC5nZXQo
KS5nZXQodHlwZU5hbWUpOwogICAgICAgICBpZiAoZmFjdG9yeSAmJiAoIWNvbmRpdGlvbmFsIHx8
IHN0ZDo6aW52b2tlKGNvbmRpdGlvbmFsLCBlbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKSkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhY3RvcnkoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNmFlNTI2NTk3Y2QyODYzMWJlNzk1MGZjMzM1MzZm
OGYzNDdkN2FmNi4uNDMzMmQ2OTFiYmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjM4LDEwICsyMzgsMTAg
QEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSkKIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQogewotICAg
IHN0YXRpYyBjb25zdCBhdXRvIGJsb2NrZWRQYWdlVVJMID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
ICgpIC0+IFVSTCB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGJsb2NrZWRQYWdlVVJMID0g
W10gKCkgLT4gVVJMIHsKICAgICAgICAgYXV0byB3ZWJDb3JlQnVuZGxlID0gQ0ZCdW5kbGVHZXRC
dW5kbGVXaXRoSWRlbnRpZmllcihDRlNUUigiY29tLmFwcGxlLldlYkNvcmUiKSk7CiAgICAgICAg
IHJldHVybiBhZG9wdENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKHdlYkNvcmVCdW5kbGUsIENG
U1RSKCJDb250ZW50RmlsdGVyQmxvY2tlZFBhZ2UiKSwgQ0ZTVFIoImh0bWwiKSwgbnVsbHB0cikp
LmdldCgpOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCBiNTk2
NWY1NmE0OWE5NWUwMmM4ZjA3OTVkZWNjZThmYWYxMWJhNmFjLi5jNjQwODk4MzU0NDg2ZjNkOWQ2
ZTY3ZGM2ODE4OWJlMGIzMTQxZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92
ZXJsYXlzLmNwcApAQCAtMTUyLDE4ICsxNTIsMTYgQEAgYm9vbCBOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCiAKIHN0YXRpYyBjb25zdCBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBTUkdCQTx1aW50OF90Pj4mIHRvdWNo
RXZlbnRSZWdpb25Db2xvcnMoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHJlZ2lvbkNvbG9y
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHJldHVybiBNZW1vcnlDb21wYWN0
TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBTUkdCQTx1aW50OF90Pj4geyB7Ci0g
ICAgICAgICAgICB7ICJ0b3VjaHN0YXJ0Il9zLCB7IDE5MSwgMTkxLCA2MywgNTAgfSB9LAotICAg
ICAgICAgICAgeyAidG91Y2htb3ZlIl9zLCB7IDgwLCAyMDQsIDI0NSwgNTAgfSB9LAotICAgICAg
ICAgICAgeyAidG91Y2hlbmQiX3MsIHsgMTkxLCA2MywgMTI3LCA1MCB9IH0sCi0gICAgICAgICAg
ICB7ICJ0b3VjaGZvcmNlY2hhbmdlIl9zLCB7IDYzLCA2MywgMTkxLCA1MCB9IH0sCi0gICAgICAg
ICAgICB7ICJ3aGVlbCJfcywgeyAyNTUsIDEyOCwgMCwgNTAgfSB9LAotICAgICAgICAgICAgeyAi
bW91c2Vkb3duIl9zLCB7IDgwLCAyNDUsIDgwLCA1MCB9IH0sCi0gICAgICAgICAgICB7ICJtb3Vz
ZW1vdmUiX3MsIHsgMjQ1LCAyNDUsIDgwLCA1MCB9IH0sCi0gICAgICAgICAgICB7ICJtb3VzZXVw
Il9zLCB7IDgwLCAyNDUsIDE3NiwgNTAgfSB9Ci0gICAgICAgIH0gfTsKLSAgICB9KCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZCByZWdpb25Db2xvcnMgeyBNZW1vcnlDb21wYWN0TG9va3Vw
T25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBTUkdCQTx1aW50OF90Pj4geyB7CisgICAgICAg
IHsgInRvdWNoc3RhcnQiX3MsIHsgMTkxLCAxOTEsIDYzLCA1MCB9IH0sCisgICAgICAgIHsgInRv
dWNobW92ZSJfcywgeyA4MCwgMjA0LCAyNDUsIDUwIH0gfSwKKyAgICAgICAgeyAidG91Y2hlbmQi
X3MsIHsgMTkxLCA2MywgMTI3LCA1MCB9IH0sCisgICAgICAgIHsgInRvdWNoZm9yY2VjaGFuZ2Ui
X3MsIHsgNjMsIDYzLCAxOTEsIDUwIH0gfSwKKyAgICAgICAgeyAid2hlZWwiX3MsIHsgMjU1LCAx
MjgsIDAsIDUwIH0gfSwKKyAgICAgICAgeyAibW91c2Vkb3duIl9zLCB7IDgwLCAyNDUsIDgwLCA1
MCB9IH0sCisgICAgICAgIHsgIm1vdXNlbW92ZSJfcywgeyAyNDUsIDI0NSwgODAsIDUwIH0gfSwK
KyAgICAgICAgeyAibW91c2V1cCJfcywgeyA4MCwgMjQ1LCAxNzYsIDUwIH0gfSwKKyAgICB9IH0g
fTsKICAgICByZXR1cm4gcmVnaW9uQ29sb3JzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKaW5kZXggYzZhZjBkOTgyMDFmMTZjNjQ1ZGViNjdm
OTEyNDhiNTA5NmJhZDA5Ny4uZGUzN2ZjMjA1OTE0ZjEzYjIzNmQwZjNhOTk4N2JhY2EyZWVjMzNh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcApA
QCAtNDMsOCArNDMsNyBAQCB1c2luZyBOYXZpZ2F0aW9uVGltaW5nRnVuY3Rpb24gPSB1bnNpZ25l
ZCBsb25nIGxvbmcgKFBlcmZvcm1hbmNlVGltaW5nOjoqKSgpIGNvbgogc3RhdGljIGNvbnN0IE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIE5hdmlnYXRpb25U
aW1pbmdGdW5jdGlvbj4mIHJlc3RyaWN0ZWRNYXJrTmFtZXNUb05hdmlnYXRpb25UaW1pbmdGdW5j
dGlvbk1hcCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIHN0YXRpYyBh
dXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZDxNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8U3RyaW5nLCBOYXZpZ2F0aW9uVGltaW5nRnVuY3Rpb24+Pih7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkIG1hcCA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaE1hcDxTdHJpbmcsIE5hdmlnYXRpb25UaW1pbmdGdW5jdGlvbj4gewogICAgICAgICB7ICJj
b25uZWN0RW5kIl9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RFbmQgfSwKICAgICAgICAg
eyAiY29ubmVjdFN0YXJ0Il9zLCAmUGVyZm9ybWFuY2VUaW1pbmc6OmNvbm5lY3RTdGFydCB9LAog
ICAgICAgICB7ICJkb21Db21wbGV0ZSJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjpkb21Db21wbGV0
ZSB9LApAQCAtNjYsOCArNjUsNyBAQCBzdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9u
bHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgTmF2aWdhdGlvblRpbWluZ0Z1bgogICAgICAgICB7
ICJzZWN1cmVDb25uZWN0aW9uU3RhcnQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6c2VjdXJlQ29u
bmVjdGlvblN0YXJ0IH0sCiAgICAgICAgIHsgInVubG9hZEV2ZW50RW5kIl9zLCAmUGVyZm9ybWFu
Y2VUaW1pbmc6OnVubG9hZEV2ZW50RW5kIH0sCiAgICAgICAgIHsgInVubG9hZEV2ZW50U3RhcnQi
X3MsICZQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRTdGFydCB9LAotICAgIH0pOwotICAg
IAorICAgIH07CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IGQxNTYxNzg1NjQyOTEzMDlmZmE2
OWI0OGFmYjIzNDhlMWE2YTA5NzIuLjQwMjg1M2M0ODk1MjMyZmY1M2RmMmMyMzg3MzIwMjk5ZTVm
YzNkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdp
c3RyeS5jcHAKQEAgLTQ0LDIxICs0NCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBGSVhN
RTogVVJMU2NoZW1lc01hcCBpcyBhIHBlY3VsaWFyIHR5cGUgbmFtZSBnaXZlbiB0aGF0IGl0IGlz
IGEgc2V0LgogCiBzdGF0aWMgY29uc3QgVVJMU2NoZW1lc01hcCYgYnVpbHRpbkxvY2FsVVJMU2No
ZW1lcygpOwotc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1l
cygpOwotc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2NoZW1lc1dpdGhVbmlx
dWVPcmlnaW5zKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5FbXB0eURv
Y3VtZW50U2NoZW1lcygpOwotc3RhdGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluQ2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKTsKK3N0YXRpYyBTcGFuPGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gYnVpbHRpblNlY3VyZVNjaGVtZXMoKTsKK3N0YXRpYyBTcGFuPGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpOworc3RhdGljIFNw
YW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKTsKK3N0
YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5S
ZXF1ZXN0U2NoZW1lcygpOworc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGlu
Q09SU0VuYWJsZWRTY2hlbWVzKCk7CiAKLXVzaW5nIFN0cmluZ1ZlY3RvckZ1bmN0aW9uID0gY29u
c3QgVmVjdG9yPFN0cmluZz4mICgqKSgpOwordXNpbmcgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9u
ID0gU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+ICgqKSgpOwogCi1zdGF0aWMgdm9pZCBhZGQoVVJM
U2NoZW1lc01hcCYgc2V0LCBTdHJpbmdWZWN0b3JGdW5jdGlvbiBmdW5jdGlvbikKK3N0YXRpYyB2
b2lkIGFkZChVUkxTY2hlbWVzTWFwJiBzZXQsIEFTQ0lJTGl0ZXJhbFNwYW5GdW5jdGlvbiBmdW5j
dGlvbikKIHsKICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IGZ1bmN0aW9uKCkpCiAgICAgICAgIHNl
dC5hZGQoc2NoZW1lKTsKIH0KIAotc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+
IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChjb25zdCBWZWN0b3I8U3RyaW5nPiYgKCpmdW5j
dGlvbikoKSkKK3N0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBtYWtlTmV2ZXJE
ZXN0cm95ZWRTY2hlbWVTZXQoQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uIGZ1bmN0aW9uKQogewog
ICAgIFVSTFNjaGVtZXNNYXAgc2V0OwogICAgIGFkZChzZXQsIGZ1bmN0aW9uKTsKQEAgLTY5LDgg
KzY5LDggQEAgc3RhdGljIExvY2sgc2NoZW1lUmVnaXN0cnlMb2NrOwogCiBzdGF0aWMgY29uc3Qg
VVJMU2NoZW1lc01hcCYgYWxsQnVpbHRpblNjaGVtZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBh
dXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBzdGF0aWMgY29u
c3QgU3RyaW5nVmVjdG9yRnVuY3Rpb24gZnVuY3Rpb25zW10geworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZCBzY2hlbWVzID0gW10geworICAgICAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0
ZXJhbFNwYW5GdW5jdGlvbiBmdW5jdGlvbnNbXSB7CiAgICAgICAgICAgICBidWlsdGluU2VjdXJl
U2NoZW1lcywKICAgICAgICAgICAgIGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMsCiAg
ICAgICAgICAgICBidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMsCkBAIC05NywyNiArOTcsMjUg
QEAgc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGFsbEJ1aWx0aW5TY2hlbWVzKCkKICAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBzY2hlbWVSZWdpc3RyeUxvY2sgfTsKICAgICAgICAgICAg
IGZvciAoYXV0byYgc2NoZW1lIDogYnVpbHRpbkxvY2FsVVJMU2NoZW1lcygpKQogICAgICAgICAg
ICAgICAgIHNldC5hZGQoc2NoZW1lKTsKLQotICAgICAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlv
biA6IGZ1bmN0aW9ucykKLSAgICAgICAgICAgICAgICBhZGQoc2V0LCBmdW5jdGlvbik7CiAgICAg
ICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKKyAgICAgICAg
ICAgIGFkZChzZXQsIGZ1bmN0aW9uKTsKICAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBvdGhl
clNjaGVtZXMpCiAgICAgICAgICAgICBzZXQuYWRkKHNjaGVtZSk7CiAgICAgICAgIHJldHVybiBz
ZXQ7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKIHN0YXRp
YyBjb25zdCBVUkxTY2hlbWVzTWFwJiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCkgV1RGX1JFUVVJ
UkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogewogICAgIEFTU0VSVChzY2hlbWVSZWdpc3Ry
eUxvY2suaXNIZWxkKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoVVJMU2NoZW1lc01hcCB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHNj
aGVtZXMgPSBVUkxTY2hlbWVzTWFwIHsKICAgICAgICAgImZpbGUiX3MsCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgICAgICJhcHBsZXdlYmRhdGEiX3MsCiAjZW5kaWYKLSAgICB9KTsKKyAgICB9
OwogICAgIHJldHVybiBzY2hlbWVzOwogfQogCkBAIC0xMzQsMTAgKzEzMyw5IEBAIHN0YXRpYyBV
UkxTY2hlbWVzTWFwJiBkaXNwbGF5SXNvbGF0ZWRVUkxTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xP
Q0soc2NoZW1lUmVnaXN0CiAgICAgcmV0dXJuIGRpc3BsYXlJc29sYXRlZFNjaGVtZXM7CiB9CiAK
LWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWlsdGluU2VjdXJlU2NoZW1lcygpIFdURl9SRVFVSVJF
U19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gYnVpbHRpblNlY3VyZVNjaGVtZXMoKQogewotICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxv
Y2suaXNIZWxkKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJh
eSBzY2hlbWVzIHsKICAgICAgICAgImh0dHBzIl9zLAogICAgICAgICAiYWJvdXQiX3MsCiAgICAg
ICAgICJkYXRhIl9zLApAQCAtMTQ1LDcgKzE0Myw3IEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
dWlsdGluU2VjdXJlU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9j
CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgICAgICJyZXNvdXJjZSJf
cywKICNlbmRpZgotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAg
LTE1NiwxNiArMTU0LDE1IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzZWN1cmVTY2hlbWVzKCkg
V1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQogICAgIHJldHVybiBzZWN1cmVT
Y2hlbWVzOwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TY2hlbWVz
V2l0aFVuaXF1ZU9yaWdpbnMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2sp
CitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1
ZU9yaWdpbnMoKQogewotICAgIEFTU0VSVChzY2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwot
ICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9y
PFN0cmluZz4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBzY2hlbWVzIHsKICAg
ICAgICAgImFib3V0Il9zLAogICAgICAgICAiamF2YXNjcmlwdCJfcywKICAgICAgICAgLy8gVGhp
cyBpcyBhbiBpbnRlbnRpb25hbCBkaWZmZXJlbmNlIGZyb20gdGhlIGJlaGF2aW9yIHRoZSBIVE1M
IHNwZWNpZmljYXRpb24gY2FsbHMgZm9yLgogICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODg1CiAgICAgICAgICJkYXRhIl9zLAotICAgIH0p
OworICAgIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAgLTE3NiwxMCArMTczLDkgQEAg
c3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpIFdURl9SRVFV
SVJFU19MT0NLKHNjaGVtZVJlZ2lzdHIKICAgICByZXR1cm4gc2NoZW1lc1dpdGhVbmlxdWVPcmln
aW5zOwogfQogCi1jb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkVtcHR5RG9jdW1lbnRTY2hl
bWVzKCkKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkVtcHR5RG9jdW1l
bnRTY2hlbWVzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHN0YXRpYyBj
b25zdCBhdXRvIHNjaGVtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geyAi
YWJvdXQiX3MgfSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAi
YWJvdXQiX3MgfTsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIApAQCAtMTk3LDEwICsxOTMsOSBA
QCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0ZvcmJpZGRlbkZyb21Eb21haW5SZWxheGF0
aW9uKCkKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1
aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9D
SyhzY2hlbWVSZWdpc3RyeUxvY2spCitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1
aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKQogewotICAgIEFTU0VSVChz
Y2hlbWVSZWdpc3RyeUxvY2suaXNIZWxkKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNjaGVt
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPFN0cmluZz4geyAiYmxvYiJfcyB9KTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7ICJibG9iIl9zIH07CiAgICAg
cmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAgLTI2MywxMCArMjU4LDkgQEAgc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoKQog
ICAgIHJldHVybiBzY2hlbWVzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5n
OwogfQogCi1jb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcygp
CitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVt
ZXMoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7ICJodHRwIl9z
LCAiaHR0cHMiX3MgfSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMg
eyAiaHR0cCJfcywgImh0dHBzIl9zIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNDhlMjBjZjQ3
YzkyOGJjZDBmN2ZlYTkyMTAwNDE3NDE3NWQ0NmUzYy4uMzAwM2VlMDM1OTMwZjNhNmIxZGE2NDUw
OTFkZDFjMzIzYjM4ZTY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAKQEAgLTE5Myw4ICsxOTMsOCBAQCBjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRl
cnNMaXRlcmFsIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZUFycmF5W10gPSB7CiAKIEhhc2hT
ZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5Ojpz
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gc3VwcG9ydGVk
Tm9uSW1hZ2VNSU1FVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQgdHlwZXMgPSBbXSB7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IHR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4g
ewogICAgICAgICAgICAgInRleHQvaHRtbCJfcywKICAgICAgICAgICAgICJ0ZXh0L3htbCJfcywK
ICAgICAgICAgICAgICJ0ZXh0L3hzbCJfcywKQEAgLTIxNywyNSArMjE3LDI1IEBAIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBw
b3J0ZWROb25JbWFnZU1JCiAgICAgICAgIC8vIFRoaXMgY2FuIHJlc3VsdCBpbiBjcm9zcy1zaXRl
IHNjcmlwdGluZyB2dWxuZXJhYmlsaXRpZXMuCiAgICAgICAgIH07CiAgICAgICAgIGZvciAoYXV0
byYgdHlwZSA6IHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZUFycmF5KQotICAgICAgICAgICAg
c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMuYWRkKHR5cGUubGl0ZXJhbCk7CisgICAgICAgICAg
ICB0eXBlcy5hZGQodHlwZS5saXRlcmFsKTsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVO
QUJMRShNSFRNTCkKLSAgICAgICAgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZl
TUlNRVR5cGVzKHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKTsKKyAgICAgICAgQXJjaGl2ZUZh
Y3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKHR5cGVzKTsKICNlbmRpZgotICAg
ICAgICByZXR1cm4gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7Ci0gICAgfSgpKTsKLSAgICBy
ZXR1cm4gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXM7CisgICAgICAgIHJldHVybiB0eXBlczsK
KyAgICB9KCk7CisgICAgcmV0dXJuIHR5cGVzOwogfQogCiBjb25zdCBIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVk
aWFNSU1FVHlwZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHN1cHBvcnRlZE1lZGlhTUlN
RVR5cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkIHR5cGVzID0gW10geworICAgICAgICBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB0eXBlczsKICNpZiBFTkFCTEUoVklERU8pCi0g
ICAgICAgIE1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhzdXBwb3J0ZWRNZWRpYU1JTUVU
eXBlcyk7CisgICAgICAgIE1lZGlhUGxheWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyh0eXBlcyk7CiAj
ZW5kaWYKLSAgICAgICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOwotICAgIH0oKSk7
Ci0gICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzOworICAgICAgICByZXR1cm4gdHlw
ZXM7CisgICAgfSgpOworICAgIHJldHVybiB0eXBlczsKIH0KIAogY29uc3RleHByIENvbXBhcmFi
bGVMZXR0ZXJzTGl0ZXJhbCBwZGZNSU1FVHlwZUFycmF5W10gPSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcAppbmRleCA3NjZi
YzJiMDBhMzkwZmY4ZmY2NGI3N2ZmMGYxYzVmN2M2MWU5NGU1Li4xNjc5OTExYjU4N2Y0MTM3YmQ3
ZDdjYzgwZmI2MjUzOTUwNGNjNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKQEAgLTU4LDIwICs1OCwxOCBAQCBib29s
IGRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSgpCiAgICAgcmV0dXJuICpoYXNBR1hDb21waWxl
clNlcnZpY2U7CiB9CiAKLWNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBhZ3hDb21waWxlclNl
cnZpY2VzKCkKK1NwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBhZ3hDb21waWxlclNlcnZpY2VzKCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBz
ZXJ2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNlcnZpY2VzIHsKICAgICAgICAgImNvbS5hcHBs
ZS5BR1hDb21waWxlclNlcnZpY2UiX3MsCiAgICAgICAgICJjb20uYXBwbGUuQUdYQ29tcGlsZXJT
ZXJ2aWNlLVMyQTgiX3MKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0K
IAotY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGFneENvbXBpbGVyQ2xhc3NlcygpCitTcGFu
PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYWd4Q29tcGlsZXJDbGFzc2VzKCkKIHsKLSAgICBBU1NFUlQo
aXNNYWluUnVuTG9vcCgpKTsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBpb2tpdENsYXNzZXMgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPEFTQ0lJTGl0ZXJhbD4geworICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjphcnJheSBjbGFzc2VzIHsKICAgICAgICAgIkFHWENvbW1hbmRRdWV1ZSJfcywK
ICAgICAgICAgIkFHWERldmljZSJfcywKICAgICAgICAgIkFHWFNoYXJlZFVzZXJDbGllbnQiX3Ms
CkBAIC04Miw4ICs4MCw4IEBAIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBhZ3hDb21waWxl
ckNsYXNzZXMoKQogICAgICAgICAiSU9BY2NlbFNoYXJlZFVzZXJDbGllbnQiX3MsCiAgICAgICAg
ICJJT0FjY2VsU2hhcmVkVXNlckNsaWVudDIiX3MsCiAgICAgICAgICJJT0FjY2VsU3VibWl0dGVy
MiJfcywKLSAgICB9KTsKLSAgICByZXR1cm4gaW9raXRDbGFzc2VzOworICAgIH07CisgICAgcmV0
dXJuIGNsYXNzZXM7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmgKaW5kZXggZTZiZDU3YWRjOTBhMWVkYThkYTY0MTdjMzA5
NjlhMjM0YWYwYjEzNy4uNjU2YzFlN2I5ZmI4MDk2MGQ0OWQxOGZhODk5MGUyYjRmOWQ5OWUwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2
aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2
aWNlLmgKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXRUJDT1JFX0VY
UE9SVCBib29sIGRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSgpOwogV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXREZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2VGb3JUZXN0aW5nKCk7Ci1XRUJDT1JF
X0VYUE9SVCBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgYWd4Q29tcGlsZXJTZXJ2aWNlcygp
OwotV0VCQ09SRV9FWFBPUlQgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGFneENvbXBpbGVy
Q2xhc3NlcygpOworV0VCQ09SRV9FWFBPUlQgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGFneENv
bXBpbGVyU2VydmljZXMoKTsKK1dFQkNPUkVfRVhQT1JUIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFs
PiBhZ3hDb21waWxlckNsYXNzZXMoKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KaW5kZXggMGUyZmJhMWJl
MTA2NzU0Y2Y2NzlmMDc2ODM0OTUwYmFlM2VlNDc5ZC4uMWFiNjg0N2Y4YTM4NDk3ZDQyM2FiZjU0
NmVhNzdiNmRhMjk5ODRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhh
c2hNYXA8U3RyaW5nLCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3Ry
aW5nPj4mIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCgpCiB7Ci0gICAgc3RhdGljIGF1dG8gZXh0
ZW5zaW9uc0Zvck1JTUVUeXBlTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwID0gW10gewogICAgICAg
ICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBNZW1vcnlD
b21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPj4gbWFwOwogCiAgICAgICAg
IGF1dG8gYWRkRXh0ZW5zaW9uID0gWyZdKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBleHRlbnNpb24pIHsKQEAgLTczLDcgKzczLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAgICAgICAg
IHJldHVybiBtYXA7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAKICAgICByZXR1cm4gZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlTWFwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbQppbmRleCBmMzA4YThkMmNh
OGU5OGZiY2JmYjA5ZTc0NGQ3MzdlZmQ0YjZhOWYzLi40NTRhNGI2ZmJlMTcwMmM2ZGU5NjFlMzBh
YWQ3N2UzZjA4Mzc4OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5tbQpAQCAtMzEsMzcgKzMxLDMz
IEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogCisj
aW1wb3J0IDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KKwogI2ltcG9ydCAiTWVkaWFSZW1vdGVTb2Z0
TGluay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1S
TWVkaWFSZW1vdGVDb21tYW5kPiBtZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0Zm9ybUNvbW1hbmQo
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kKQog
ewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNvbW1hbmRNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
W10gewotICAgICAgICB1c2luZyBDb21tYW5kVG9BY3Rpb25NYXAgPSBIYXNoTWFwPFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIE1STWVkaWFSZW1vdGVDb21t
YW5kLCBXVEY6OkludEhhc2g8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21t
YW5kVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZT4+OwotCi0gICAgICAgIHJldHVybiBDb21tYW5kVG9B
Y3Rpb25NYXAgewotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1h
bmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUGxheSB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBhdXNlIH0sCi0g
ICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZCwgTVJNZWRpYVJl
bW90ZUNvbW1hbmRTdG9wIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpU
b2dnbGVQbGF5UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVz
ZSB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFj
a3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kIH0sCi0gICAgICAg
ICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nQmFja3dhcmRDb21tYW5kLCBN
Uk1lZGlhUmVtb3RlQ29tbWFuZEVuZFJld2luZCB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21t
YW5kQmVnaW5GYXN0Rm9yd2FyZCB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6RW5kU2Vla2luZ0ZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RG
b3J3YXJkIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5
YmFja1Bvc2l0aW9uQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTZWVrVG9QbGF5YmFja1Bv
c2l0aW9uIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9yd2Fy
ZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQgfSwKLSAgICAgICAgICAg
IHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1v
dGVDb21tYW5kU2tpcEJhY2t3YXJkIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpOZXh0VHJhY2tDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZE5leHRUcmFjayB9LAot
ICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQs
IE1STWVkaWFSZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjayB9LAotICAgICAgICB9OwotICAgIH0o
KSk7Ci0KLSAgICBhdXRvIGl0ID0gY29tbWFuZE1hcC5nZXQoKS5maW5kKGNvbW1hbmQpOwotICAg
IGlmIChpdCAhPSBjb21tYW5kTWFwLmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4geyBpdC0+
dmFsdWUgfTsKLQotICAgIHJldHVybiB7IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnBh
aXI8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgTVJNZWRp
YVJlbW90ZUNvbW1hbmQ+IG1hcHBpbmdzW10gPSB7CisgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNl
c3Npb246OlBsYXlDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFBsYXkgfSwKKyAgICAgICAg
eyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFu
ZFBhdXNlIH0sCisgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0b3BDb21tYW5kLCBN
Uk1lZGlhUmVtb3RlQ29tbWFuZFN0b3AgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6VG9nZ2xlUGxheVBhdXNlQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRUb2dnbGVQbGF5
UGF1c2UgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nQmFj
a3dhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2luUmV3aW5kIH0sCisgICAgICAg
IHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVk
aWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kIH0sCisgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Np
b246OkJlZ2luU2Vla2luZ0ZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEJlZ2lu
RmFzdEZvcndhcmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2lu
Z0ZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZEVuZEZhc3RGb3J3YXJkIH0sCisg
ICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21t
YW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24gfSwKKyAgICAg
ICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kLCBNUk1lZGlhUmVt
b3RlQ29tbWFuZFNraXBGb3J3YXJkIH0sCisgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlNraXBCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEJhY2t3YXJkIH0s
CisgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQsIE1STWVk
aWFSZW1vdGVDb21tYW5kTmV4dFRyYWNrIH0sCisgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Np
b246OlByZXZpb3VzVHJhY2tDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFByZXZpb3VzVHJh
Y2sgfSwKKyAgICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgbWFwIHsg
bWFwcGluZ3MgfTsKKyAgICBpZiAoYXV0byogdmFsdWUgPSBtYXAudHJ5R2V0KGNvbW1hbmQpKQor
ICAgICAgICByZXR1cm4gKnZhbHVlOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYT4gUmVtb3RlQ29tbWFuZExp
c3RlbmVyQ29jb2E6OmNyZWF0ZShSZW1vdGVDb21tYW5kTGlzdGVuZXJDbGllbnQmIGNsaWVudCkK
QEAgLTE0MCw3ICsxMzYsNyBAQCBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYTo6UmVtb3RlQ29t
bWFuZExpc3RlbmVyQ29jb2EoUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZQogCiAgICAgICAgIExP
RyhNZWRpYSwgIlJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hOjpSZW1vdGVDb21tYW5kTGlzdGVu
ZXJDb2NvYSAtIHJlY2VpdmVkIGNvbW1hbmQgJXUiLCBjb21tYW5kKTsKIAotICAgICAgICBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIHBsYXRmb3JtQ29tbWFu
ZCB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQgfTsKKyAgICAgICAgYXV0byBwbGF0
Zm9ybUNvbW1hbmQgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Tm9Db21tYW5kIH07CiAgICAgICAg
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQgYXJndW1lbnQ7CiAg
ICAgICAgIE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1cyBzdGF0dXMgPSBNUk1lZGlh
UmVtb3RlQ29tbWFuZEhhbmRsZXJTdGF0dXNTdWNjZXNzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRl
b0VsZW1lbnQuaAppbmRleCBkOTI1ZDA1ZmExZGMwYTBjZGFmZWI3YzY2YjE3Y2YzMDg5NDljZjlk
Li43N2QxNTdlMzYzMjc2ZTZmMWZhOTUxZThhMmU3NDBmYWY5MmU1Nzg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRXhpdFBp
Y3R1cmVJblBpY3R1cmUoKSBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8QXRv
bVN0cmluZz4mIG9ic2VydmVkRXZlbnROYW1lcygpOworICAgIHN0YXRpYyBTcGFuPGNvbnN0IEF0
b21TdHJpbmc+IG9ic2VydmVkRXZlbnROYW1lcygpOwogICAgIGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50TmFtZUFsbCgpOwogCiAgICAgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+IG1fdmlkZW9FbGVt
ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxs
c2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCAxYTUyNmM4MzNmMzhh
M2MyMDYzNjlkYzk3YmNjNzc2ZWUzNWEwNWUwLi42YjVlMWRkMzU4NzJiYTAzYmY1YTFlYjE4Nzc1
ZDIwNTliMTRlN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtMTc4
LDEwICsxNzgsMTAgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0
VmlkZW9MYXllckdyYXZpdHkoTWVkaWFQbGF5ZXI6OlZpZGVvR3IKICAgICAgICAgbV92aWRlb0Vs
ZW1lbnQtPnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoZ3Jhdml0eSk7CiB9CiAKLWNvbnN0IFZl
Y3RvcjxBdG9tU3RyaW5nPiYgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Om9ic2Vy
dmVkRXZlbnROYW1lcygpCitTcGFuPGNvbnN0IEF0b21TdHJpbmc+IFZpZGVvRnVsbHNjcmVlbk1v
ZGVsVmlkZW9FbGVtZW50OjpvYnNlcnZlZEV2ZW50TmFtZXMoKQogewotICAgIHN0YXRpYyBjb25z
dCBhdXRvIG5hbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBdG9tU3RyaW5nPiB7IGV2
ZW50TmFtZXMoKS5yZXNpemVFdmVudCB9KTsKLSAgICByZXR1cm4gbmFtZXM7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkIG5hbWVzID0gc3RkOjphcnJheSB7IGV2ZW50TmFtZXMoKS5yZXNpemVF
dmVudCB9OworICAgIHJldHVybiBuYW1lcy5nZXQoKTsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYg
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmV2ZW50TmFtZUFsbCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5k
ZXggNGJhNzViZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4Mi4uOWM3MDU1NWIzNTg4
NTQxYTZlNDRiZTFiZDI0Y2UyZjczOWFiODQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtNDIsNyArNDIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFZlY3RvcjxDRE1Qcm94eUZhY3RvcnkqPiYgQ0RNUHJveHlG
YWN0b3J5OjpyZWdpc3RlcmVkRmFjdG9yaWVzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBmYWN0b3Jp
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQocGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcygpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZmFjdG9yaWVzID0gcGxhdGZvcm1SZWdpc3RlckZhY3Rv
cmllcygpOwogICAgIHJldHVybiBmYWN0b3JpZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA3YWY5Nzg2ZmVlMjM5OGZi
MDM4Y2I5YzQ4OTVhNzk3ZGM5N2UxYTJiLi40YzFkZmRjZGI5OTdmYmZhNTAwY2FhZDE5YjhmYjA3
ZGQ2YTNkNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBib29sIHVzZUJhY2tzbGFzaEFz
WWVuU2lnbkZvckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgaWYgKGZh
bWlseS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzdGF0aWMgY29uc3Qg
YXV0byBzZXQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZCBzZXQgPSBbXSB7CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaFNldDxBdG9tU3RyaW5nPiBzZXQ7CiAgICAgICAgIGF1dG8gYWRkID0gWyZzZXRdIChjb25z
dCBjaGFyKiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VUNoYXI+IHVuaWNvZGVOYW1lKSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBuYW1lTGVuZ3RoID0gc3RybGVuKG5hbWUpOwpAQCAtNjQs
NyArNjQsNyBAQCBzdGF0aWMgYm9vbCB1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkoY29u
c3QgQXRvbVN0cmluZyYgZmFtaWx5KQogICAgICAgICBhZGQoIk1TIE1pbmNobyIsIHsgMHhGRjJE
LCAweEZGMzMsIDB4MDAyMCwgMHg2NjBFLCAweDY3MUQgfSk7CiAgICAgICAgIGFkZCgiTWVpcnlv
IiwgeyAweDMwRTEsIDB4MzBBNCwgMHgzMEVBLCAweDMwQUEgfSk7CiAgICAgICAgIHJldHVybiBz
ZXQ7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIHNldC5nZXQoKS5jb250YWlucyhm
YW1pbHkpOwogfQogCkBAIC0zNzMsNyArMzczLDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6aGFzVmFs
aWRBdmVyYWdlQ2hhcldpZHRoKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CiAKLSAgICBzdGF0aWMgY29uc3QgYXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVtb3J5
Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoU2V0PEF0b21TdHJpbmc+IHsKICAgICAgICAgIkFtZXJpY2FuIFR5cGV3cml0ZXIiX3MsCiAg
ICAgICAgICJBcmlhbCBIZWJyZXciX3MsCiAgICAgICAgICJDaGFsa2JvYXJkIl9zLApAQCAtNDA4
LDcgKzQwOCw3IEBAIGJvb2wgRm9udENhc2NhZGU6Omhhc1ZhbGlkQXZlcmFnZUNoYXJXaWR0aCgp
IGNvbnN0CiAgICAgICAgICIjSGVhZExpbmVBIl9zLAogICAgICAgICAiI1BDTXl1bmdqbyJfcywK
ICAgICAgICAgIiNQaWxHaSJfcywKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiAhbWFwLmdl
dCgpLmNvbnRhaW5zKGZhbWlseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDdjNTQ5NDdmNGQ4MTQwODU1OWNjNDVj
NGFjNDlhMTliOWZjODZmOTkuLjczZWZjYTJhZGQxMjEwN2M4NzJhYmE3ZmZiNWRhZjczMTkwYjY3
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBwbGF0Zm9ybVJlZ2lzdGVyRmFj
dG9yaWVzKEZhY3RvcnlWZWN0b3ImIGZhY3RvcmllcykKIAogc3RhdGljIEZhY3RvcnlWZWN0b3Im
IGluc3RhbGxlZEZhY3RvcmllcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gZmFjdG9yaWVzID0gbWFr
ZU5ldmVyRGVzdHJveWVkPEZhY3RvcnlWZWN0b3I+KHsgfSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEZhY3RvcnlWZWN0b3I+IGZhY3RvcmllczsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgcmVnaXN0ZXJEZWZhdWx0czsKICAgICBzdGQ6OmNhbGxfb25jZShyZWdpc3RlckRlZmF1bHRz
LCBbJl0gewogICAgICAgICBwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKGZhY3Rvcmllcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKaW5kZXggNWVmODc2Zjlm
Mzg2OTkwNzUzM2NhYjg3MDE0NDBmMjY1YWMwNmZlYi4uNTU2NmViYmYxM2I3YmY1YzM5OTJhY2Rk
ODY3YTUzYjgyMzNjOWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNiBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFn
bWEgb25jZQpAQCAtNjcsMjQgKzY3LDI0IEBAIGNsYXNzIEZsb2F0U2l6ZTsKIAogY2xhc3MgSW50
U2l6ZSB7CiBwdWJsaWM6Ci0gICAgSW50U2l6ZSgpIDogbV93aWR0aCgwKSwgbV9oZWlnaHQoMCkg
eyB9Ci0gICAgSW50U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIDogbV93aWR0aCh3aWR0aCks
IG1faGVpZ2h0KGhlaWdodCkgeyB9CisgICAgY29uc3RleHByIEludFNpemUoKSA9IGRlZmF1bHQ7
CisgICAgY29uc3RleHByIEludFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSA6IG1fd2lkdGgo
d2lkdGgpLCBtX2hlaWdodChoZWlnaHQpIHsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IEludFNpemUoY29uc3QgRmxvYXRTaXplJik7IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBz
aW5jZSBpdCdzIGxvc3N5Ci0gICAgCi0gICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93
aWR0aDsgfQotICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQogCi0g
ICAgZmxvYXQgbWluRGltZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4obV93aWR0aCwg
bV9oZWlnaHQpOyB9Ci0gICAgZmxvYXQgbWF4RGltZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gc3Rk
OjptYXgobV93aWR0aCwgbV9oZWlnaHQpOyB9CisgICAgY29uc3RleHByIGludCB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICBjb25zdGV4cHIgaW50IGhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1faGVpZ2h0OyB9CisKKyAgICBjb25zdGV4cHIgaW50IG1pbkRpbWVuc2lvbigp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bWluKG1fd2lkdGgsIG1faGVpZ2h0KTsgfQorICAgIGNvbnN0
ZXhwciBpbnQgbWF4RGltZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gc3RkOjptYXgobV93aWR0aCwg
bV9oZWlnaHQpOyB9CiAKICAgICB2b2lkIHNldFdpZHRoKGludCB3aWR0aCkgeyBtX3dpZHRoID0g
d2lkdGg7IH0KICAgICB2b2lkIHNldEhlaWdodChpbnQgaGVpZ2h0KSB7IG1faGVpZ2h0ID0gaGVp
Z2h0OyB9CiAKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoIDw9IDAg
fHwgbV9oZWlnaHQgPD0gMDsgfQotICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1f
d2lkdGggJiYgIW1faGVpZ2h0OyB9CisgICAgY29uc3RleHByIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9CisgICAgY29uc3RleHBy
IGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fd2lkdGggJiYgIW1faGVpZ2h0OyB9CisK
KyAgICBjb25zdGV4cHIgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxmbG9hdD4obV93aWR0aCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4obV9oZWlnaHQpOyB9CiAK
LSAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PihtX3dpZHRoKSAvIHN0YXRpY19jYXN0PGZsb2F0PihtX2hlaWdodCk7IH0KLSAgICAKICAgICB2
b2lkIGV4cGFuZChpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgewogICAgICAgICBtX3dpZHRo
ICs9IHdpZHRoOwpAQCAtMTAyLDE4ICsxMDIsMTggQEAgcHVibGljOgogICAgICAgICBtX3dpZHRo
ID0gc3RhdGljX2Nhc3Q8aW50PihzdGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aCkgKiB3aWR0aFNj
YWxlKTsKICAgICAgICAgbV9oZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZs
b2F0PihtX2hlaWdodCkgKiBoZWlnaHRTY2FsZSk7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBz
Y2FsZShmbG9hdCBzY2FsZSkKICAgICB7CiAgICAgICAgIHRoaXMtPnNjYWxlKHNjYWxlLCBzY2Fs
ZSk7CiAgICAgfQogCi0gICAgSW50U2l6ZSBleHBhbmRlZFRvKGNvbnN0IEludFNpemUmIG90aGVy
KSBjb25zdAorICAgIGNvbnN0ZXhwciBJbnRTaXplIGV4cGFuZGVkVG8oY29uc3QgSW50U2l6ZSYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gSW50U2l6ZShzdGQ6Om1heChtX3dp
ZHRoLCBvdGhlci5tX3dpZHRoKSwgc3RkOjptYXgobV9oZWlnaHQsIG90aGVyLm1faGVpZ2h0KSk7
CiAgICAgfQogCi0gICAgSW50U2l6ZSBzaHJ1bmtUbyhjb25zdCBJbnRTaXplJiBvdGhlcikgY29u
c3QKKyAgICBjb25zdGV4cHIgSW50U2l6ZSBzaHJ1bmtUbyhjb25zdCBJbnRTaXplJiBvdGhlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBJbnRTaXplKHN0ZDo6bWluKG1fd2lkdGgsIG90
aGVyLm1fd2lkdGgpLCBzdGQ6Om1pbihtX2hlaWdodCwgb3RoZXIubV9oZWlnaHQpKTsKICAgICB9
CkBAIC0xMzMsOCArMTMzLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6
ZSBjb25zdHJhaW5lZEJldHdlZW4oY29uc3QgSW50U2l6ZSYgbWluLCBjb25zdCBJbnRTaXplJiBt
YXgpIGNvbnN0OwogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBDcmFzaE9uT3ZlcmZsb3c+
Ci0gICAgQ2hlY2tlZDx1bnNpZ25lZCwgVD4gYXJlYSgpIGNvbnN0CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCA9IENyYXNoT25PdmVyZmxvdz4gQ2hlY2tlZDx1bnNpZ25lZCwgVD4gYXJlYSgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gQ2hlY2tlZDx1bnNpZ25lZCwgVD4oYWJzKG1fd2lk
dGgpKSAqIGFicyhtX2hlaWdodCk7CiAgICAgfQpAQCAtMTQ0LDEyICsxNDMsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFicyhtX3dpZHRoKSkgKiBh
YnMobV9oZWlnaHQpOwogICAgIH0KIAotICAgIGludCBkaWFnb25hbExlbmd0aFNxdWFyZWQoKSBj
b25zdAorICAgIGNvbnN0ZXhwciBpbnQgZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX3dpZHRoICogbV93aWR0aCArIG1faGVpZ2h0ICogbV9oZWln
aHQ7CiAgICAgfQogCi0gICAgSW50U2l6ZSB0cmFuc3Bvc2VkU2l6ZSgpIGNvbnN0CisgICAgY29u
c3RleHByIEludFNpemUgdHJhbnNwb3NlZFNpemUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIEludFNpemUobV9oZWlnaHQsIG1fd2lkdGgpOwogICAgIH0KQEAgLTE3Nyw3ICsxNzYsOCBA
QCBwdWJsaWM6CiAgICAgUmVmPEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KCkgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgaW50IG1fd2lkdGgsIG1faGVpZ2h0OworICAgIGludCBtX3dpZHRoIHsg
MCB9OworICAgIGludCBtX2hlaWdodCB7IDAgfTsKIH07CiAKIGlubGluZSBJbnRTaXplJiBvcGVy
YXRvcis9KEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCkBAIC0xOTQsMjcgKzE5NCwyNyBA
QCBpbmxpbmUgSW50U2l6ZSYgb3BlcmF0b3ItPShJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBi
KQogICAgIHJldHVybiBhOwogfQogCi1pbmxpbmUgSW50U2l6ZSBvcGVyYXRvcisoY29uc3QgSW50
U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYgYikKK2NvbnN0ZXhwciBJbnRTaXplIG9wZXJhdG9yKyhj
b25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQogewogICAgIHJldHVybiBJbnRTaXpl
KGEud2lkdGgoKSArIGIud2lkdGgoKSwgYS5oZWlnaHQoKSArIGIuaGVpZ2h0KCkpOwogfQogCi1p
bmxpbmUgSW50U2l6ZSBvcGVyYXRvci0oY29uc3QgSW50U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYg
YikKK2NvbnN0ZXhwciBJbnRTaXplIG9wZXJhdG9yLShjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJ
bnRTaXplJiBiKQogewogICAgIHJldHVybiBJbnRTaXplKGEud2lkdGgoKSAtIGIud2lkdGgoKSwg
YS5oZWlnaHQoKSAtIGIuaGVpZ2h0KCkpOwogfQogCi1pbmxpbmUgSW50U2l6ZSBvcGVyYXRvci0o
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKK2NvbnN0ZXhwciBJbnRTaXplIG9wZXJhdG9yLShjb25zdCBJ
bnRTaXplJiBzaXplKQogewogICAgIHJldHVybiBJbnRTaXplKC1zaXplLndpZHRoKCksIC1zaXpl
LmhlaWdodCgpKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRTaXplJiBh
LCBjb25zdCBJbnRTaXplJiBiKQorY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRT
aXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQogewogICAgIHJldHVybiBhLndpZHRoKCkgPT0gYi53
aWR0aCgpICYmIGEuaGVpZ2h0KCkgPT0gYi5oZWlnaHQoKTsKIH0KIAotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQorY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQogewogICAg
IHJldHVybiBhLndpZHRoKCkgIT0gYi53aWR0aCgpIHx8IGEuaGVpZ2h0KCkgIT0gYi5oZWlnaHQo
KTsKIH0KQEAgLTIyNCwxNiArMjI0LDEzIEBAIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBJbnRTaXplJik7CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYgeworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxXZWJDb3JlOjpJbnRTaXplPjsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFp
dHM8V2ViQ29yZTo6SW50U2l6ZT47CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+IHN0cnVjdCBM
b2dBcmd1bWVudDsKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6SW50
U2l6ZT4gewotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaXplLnRvSlNPTlN0cmluZygpOwotICAg
IH0KK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgTG9nQXJndW1lbnQ7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpJbnRTaXplPiB7CisgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKSB7IHJldHVybiBzaXplLnRvSlNP
TlN0cmluZygpOyB9CiB9OwotfQogCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IGM5OThkOWY2NDcwZTgwZjhkNGNk
ZDVlMTI2NmYwNWIxMmJkNjEwOWUuLjQ4MTFiZTc5YjU5NTdkZjkwMjQzYjMyZTE1NDQ5MDgxNWYw
YTMxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwCkBAIC0xMDk1LDcgKzEwOTUsNyBAQCBXVEZMb2dDaGFubmVsJiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmxvZ0NoYW5uZWwoKSBjb25zdAogCiBjb25zdCBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpzdGF0aWNNSU1FVHlwZUxpc3QoKQogewotICAgIHN0YXRpYyBjb25z
dCBhdXRvIGNhY2hlID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgY2FjaGUgPSBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7CiAgICAgICAgICJhcHBs
aWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCJfcywKICAgICAgICAgImFwcGxpY2F0aW9uL3gtbXBl
Z3VybCJfcywKICAgICAgICAgImF1ZGlvLzNncHAiX3MsCkBAIC0xMTI3LDcgKzExMjcsNyBAQCBj
b25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOgogICAgICAgICAidmlkZW8veC1tNHYiX3MsCiAgICAgICAg
ICJ2aWRlby94LW1wZWciX3MsCiAgICAgICAgICJ2aWRlby94LW1wZyJfcywKLSAgICB9KTsKKyAg
ICB9OwogICAgIHJldHVybiBjYWNoZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggOWNjODRh
YzQyNjM4YzI4NTFkMTkxZWFkYzNhNTA4M2RiODIxYjY3MS4uNzdkYzJlNzgyNDk0NjAyNjE1NGEx
MGM1NDYwY2JlMjY4ODM3OTRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0xNzY0LDEyICsxNzY0
LDEwIEBAIHZvaWQgQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSgpCiB7CiAgICAgTE9HKE1l
ZGlhLCAiQVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSglcCkiLCB0aGlzKTsKIAotICAgIHN0
YXRpYyBhdXRvIHByb3BlcnR5S2V5TmFtZSA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAg
ICAgIGNvbnN0IHZvaWQqIGtleU5hbWVzW10gPSB7Ci0gICAgICAgICAgICBBVkNGQXNzZXRQcm9w
ZXJ0eVBsYXlhYmxlCi0gICAgICAgIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHByb3Bl
cnR5S2V5TmFtZSA9IFtdIHsKKyAgICAgICAgY29uc3Qgdm9pZCoga2V5TmFtZXNbXSA9IHsgQVZD
RkFzc2V0UHJvcGVydHlQbGF5YWJsZSB9OwogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5
Q3JlYXRlKDAsIGtleU5hbWVzLCBzdGQ6OnNpemUoa2V5TmFtZXMpLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAKICAgICBBVkNGQXNzZXRMb2FkVmFsdWVz
QXN5bmNocm9ub3VzbHlGb3JQcm9wZXJ0aWVzKGF2QXNzZXQoKSwgcHJvcGVydHlLZXlOYW1lLmdl
dCgpLmdldCgpLCBsb2FkUGxheWFibGVDb21wbGV0aW9uQ2FsbGJhY2ssIGNhbGxiYWNrQ29udGV4
dCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKaW5kZXggMmZjMTg3OTY0YzQzMWQxYTk3MzQ5MjdiYWQ0
MDZlZDlmNmI0ZmY2Ny4uNjk5OTA0YWYyM2RhMTc5ODZjZDVjNzg3NzlhMTIwYjRkMjY2NmE3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3Vy
Y2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VTb3VyY2VDR1dpbi5jcHAKQEAgLTUwLDggKzUwLDcgQEAgU3RyaW5nIHByZWZlcnJlZEV4dGVu
c2lvbkZvckltYWdlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHN0YXRpYyBjb25zdCBhdXRv
IG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gSGFz
aE1hcDxTdHJpbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7CiAgICAgICAg
IHsgInB1YmxpYy5odG1sIl9zLCAiaHRtbCJfcyB9LAogICAgICAgICB7ICJwdWJsaWMuanBlZyJf
cywgImpwZWciX3MgfSwKICAgICAgICAgeyAicHVibGljLmpwZWctMjAwMCJfcywgImpwMiJfcyB9
LApAQCAtNzcsNyArNzYsNyBAQCBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAgICAgeyAiY29tLm5ldHNjYXBlLmphdmFzY3JpcHQt
c291cmNlIl9zLCAianMiX3MgfSwKICAgICAgICAgeyAiY29tLnNnaS5zZ2ktaW1hZ2UiX3MsICJz
Z2kiX3MgfSwKICAgICAgICAgeyAiY29tLnRydWV2aXNpb24udGdhLWltYWdlIl9zLCAidGdhIl9z
IH0sCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gbWFwLmdldCgpLmdldCh0eXBlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVn
aXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0
cnkuY3BwCmluZGV4IGE0NzAyNDQwZWRmYjAzMjJmZWFmN2NkOTFiNmVhZDQwN2IzYzkyMGEuLjQ2
ZjY5NDE3ZmQyNmYzMTU0YzA0OWFkZDdiOTVmZDA3ZDQ0NGZkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBNZW1vcnlDb21wYWN0TG9va3Vw
T25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiYgZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZXMo
KQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZGVmYXVs
dFN1cHBvcnRlZEltYWdlVHlwZXMgPSBbXSB7CiAgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBkZWZh
dWx0U3VwcG9ydGVkSW1hZ2VUeXBlcyA9IHsKICAgICAgICAgICAgICJjb20uY29tcHVzZXJ2ZS5n
aWYiX3MsCiAgICAgICAgICAgICAiY29tLm1pY3Jvc29mdC5ibXAiX3MsCkBAIC03NSw3ICs3NSw3
IEBAIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+
JiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlCiAgICAgICAgICAgICAgICAgZmlsdGVyZWQuYWRk
KGltYWdlVHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZpbHRlcmVkOwotICAgIH0o
KSk7CisgICAgfSgpOwogCiAgICAgcmV0dXJuIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dERlc2NyaXB0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCmluZGV4IDVhNGVjZTY5MjgxYTdmNjYxYzI1
M2ZmNzk1NjU2NzE3Nzk5OGNkYTAuLmU1YWYzZGU2YjIzNzkwY2FiMjQ0Nzc5ZGNiNGUwZjhmZWMx
NTM3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKQEAgLTgyLDExICs4MiwxMSBA
QCBzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8U3lzdGVtRm9udEtpbmQ+IG1hdGNoU3lzdGVt
Rm9udFVzZShjb25zdCBBdG9tU3RyaW5nJgogICAgIGF1dG8gY29tcGFyZUFzUG9pbnRlciA9IFtd
KGNvbnN0IEF0b21TdHJpbmcmIGxocywgY29uc3QgQXRvbVN0cmluZyYgcmhzKSB7CiAgICAgICAg
IHJldHVybiBsaHMuaW1wbCgpIDwgcmhzLmltcGwoKTsKICAgICB9OwotICAgIHN0YXRpYyBhdXRv
IHN0cmluZ3MgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoWyZjb21wYXJlQXNQb2ludGVyXSB7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkIHN0cmluZ3MgPSBbJmNvbXBhcmVBc1BvaW50ZXJdIHsKICAg
ICAgICAgYXV0byByZXN1bHQgPSBjb252ZXJ0QXJyYXk8QXRvbVN0cmluZz4oc3R5bGVzKTsKICAg
ICAgICAgc3RkOjpzb3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIGNvbXBhcmVBc1Bv
aW50ZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0oKSk7CisgICAgfSgpOwogICAg
IGlmIChzdGQ6OmJpbmFyeV9zZWFyY2goc3RyaW5ncy5nZXQoKS5iZWdpbigpLCBzdHJpbmdzLmdl
dCgpLmVuZCgpLCBzdHJpbmcsIGNvbXBhcmVBc1BvaW50ZXIpKQogICAgICAgICByZXR1cm4gU3lz
dGVtRm9udEtpbmQ6OlRleHRTdHlsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cAppbmRleCBkZTZkZWJlMmJkNGNhMTM2MDQwZmMwYzNhNDVkYzRlYTM5ZjQ4OWQwLi44ZjVlODc5
MGYyZmUxMGJhMTIzZjEzZjIwM2NjN2UzMWVjYTkxZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcApAQCAtNTU1LDIwICs1NTUsMTYgQEAgcHJpdmF0ZToKIAogY29uc3QgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OndlYm1NSU1FVHlwZXMoKQogewotICAgIHN0YXRpYyBhdXRvIHR5cGVzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKLQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0eXBlcyA9IFtd
IHsKICAgICAgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gdHlw
ZXM7Ci0KICNpZiBFTkFCTEUoVlA5KQogICAgICAgICB0eXBlcy5hZGQoInZpZGVvL3dlYm0iKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShWT1JCSVMpIHx8IEVOQUJMRShPUFVTKQogICAgICAgICB0eXBl
cy5hZGQoImF1ZGlvL3dlYm0iKTsKICNlbmRpZgotCiAgICAgICAgIHJldHVybiB0eXBlczsKLSAg
ICB9KCkpOwotCisgICAgfSgpOwogICAgIHJldHVybiB0eXBlczsKIH0KIApAQCAtMTUzMywxMyAr
MTUyOSwxMyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnNldE1pbmltdW1BdWRpb1Nh
bXBsZUR1cmF0aW9uKGZsb2F0IGR1cmF0aW9uKQogCiBjb25zdCBNZW1vcnlDb21wYWN0TG9va3Vw
T25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiYgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c3Vw
cG9ydGVkVmlkZW9Db2RlY3MoKQogewotICAgIHN0YXRpYyBhdXRvIGNvZGVjcyA9IG1ha2VOZXZl
ckRlc3Ryb3llZDxNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5n
Pj4oeyAiVl9WUDgiX3MsICJWX1ZQOSJfcyB9KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQg
Y29kZWNzID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4g
eyAiVl9WUDgiX3MsICJWX1ZQOSJfcyB9OwogICAgIHJldHVybiBjb2RlY3M7CiB9CiAKIGNvbnN0
IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRBdWRpb0NvZGVjcygpCiB7Ci0gICAgc3RhdGljIGF1
dG8gY29kZWNzID0gbWFrZU5ldmVyRGVzdHJveWVkPE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9i
aW5Ib29kSGFzaFNldDxTdHJpbmc+Pih7ICJBX1ZPUkJJUyJfcywgIkFfT1BVUyJfcyB9KTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgY29kZWNzID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4geyAiQV9WT1JCSVMiX3MsICJBX09QVVMiX3MgfTsKICAg
ICByZXR1cm4gY29kZWNzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRHJhZ0ltYWdlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJ
bWFnZUlPUy5tbQppbmRleCBlYTJlODYxMzQzNWFhZGZiOGEzODhjMGM2ZTVmZWFlNWFiZjFiNDdl
Li5kMWVhZGFkZjlkY2JmYjkzNDVhMjJlZDgwNDgxMTFlYTRjNDJjY2NlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KQEAgLTExNiw5ICsxMTYsOSBAQCBz
dGF0aWMgRm9udENhc2NhZGUgY2FzY2FkZUZvclN5c3RlbUZvbnQoQ0dGbG9hdCBzaXplKQogRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoRWxlbWVudCYgbGlua0VsZW1lbnQsIFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBUZXh0SW5kaWNhdG9yRGF0YSYgaW5kaWNhdG9y
RGF0YSwgRm9udFJlbmRlcmluZ01vZGUsIGZsb2F0KQogewogICAgIC8vIEZJWE1FOiBNb3N0IG9m
IHRoaXMgY2FuIGdvIGF3YXkgb25jZSB3ZSBjYW4gdXNlIFVJVVJMRHJhZ1ByZXZpZXdWaWV3IHVu
Y29uZGl0aW9uYWxseS4KLSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkcmFnSW1hZ2VQYWRkaW5n
ID0gMTA7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gdGl0bGVGb250Q2FzY2FkZSA9IG1ha2VOZXZl
ckRlc3Ryb3llZChjYXNjYWRlRm9yU3lzdGVtRm9udCgxNikpOwotICAgIHN0YXRpYyBjb25zdCBh
dXRvIHVybEZvbnRDYXNjYWRlID0gbWFrZU5ldmVyRGVzdHJveWVkKGNhc2NhZGVGb3JTeXN0ZW1G
b250KDE0KSk7CisgICAgY29uc3RleHByIENHRmxvYXQgZHJhZ0ltYWdlUGFkZGluZyA9IDEwOwor
ICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZCB0aXRsZUZvbnRDYXNjYWRlID0gY2FzY2Fk
ZUZvclN5c3RlbUZvbnQoMTYpOworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZCB1cmxG
b250Q2FzY2FkZSA9IGNhc2NhZGVGb3JTeXN0ZW1Gb250KDE0KTsKIAogICAgIFN0cmluZyB0b3BT
dHJpbmcodGl0bGUuc3RyaXBXaGl0ZVNwYWNlKCkpOwogICAgIFN0cmluZyBib3R0b21TdHJpbmco
WyhOU1VSTCAqKXVybCBhYnNvbHV0ZVN0cmluZ10pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0KaW5kZXgg
NmIyODRhMDRiYmM1ZGNhY2M2ODQwOWNmMTAwZmQ2NjMxYjcxODBhOS4uNDZmYjI4ZTgxNTI0M2Iw
ZTg0N2MwNzIzZTE3NmI3Y2MyZjZhMDA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCkBAIC00Miwx
MSArNDIsMTEgQEAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nQnlTdHJpcHBp
bmdBdHRhY2htZW50Q2hhcmFjdGVycyhOU0F0dHJpYnV0ZWQKIHsKICAgICBOU1JhbmdlIGF0dGFj
aG1lbnRSYW5nZTsKICAgICBOU1N0cmluZyAqb3JpZ2luYWxTdHJpbmcgPSBbYXR0cmlidXRlZFN0
cmluZyBzdHJpbmddOwotICAgIHN0YXRpYyBhdXRvIGF0dGFjaG1lbnRDaGFyU3RyaW5nID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYXR0YWNobWVu
dENoYXJTdHJpbmcgPSBbXSB7CiAgICAgICAgIHVuaWNoYXIgY2hhcnNbMl0gPSB7IE5TQXR0YWNo
bWVudENoYXJhY3RlciwgMCB9OwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFs
bG9jXSBpbml0V2l0aENoYXJhY3RlcnM6Y2hhcnMgbGVuZ3RoOjFdKTsKLSAgICB9KCkpOwotICAg
IAorICAgIH0oKTsKKwogICAgIGF0dGFjaG1lbnRSYW5nZSA9IFtvcmlnaW5hbFN0cmluZyByYW5n
ZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyU3RyaW5nLmdldCgpLmdldCgpXTsKICAgICBpZiAoYXR0
YWNobWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgYXR0YWNobWVudFJhbmdlLmxl
bmd0aCA+IDApIHsKICAgICAgICAgYXV0byBuZXdBdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhb
YXR0cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weVdpdGhab25lOk5VTExdKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAKaW5kZXggMDUwY2Rm
OWZjNTMyMDJkODEwMGJlZjczMjMzNzU5YjY3NGJjNzhhNi4uZmVkNWJmMzE5M2ZlNTNlZjQxMGQ4
Mjg5NTE0OTNjOTZhMDBjYzI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIEZhY3RvcnlW
ZWN0b3IgZGVmYXVsdEZhY3RvcmllcygpCiAKIHN0YXRpYyBGYWN0b3J5VmVjdG9yJiBmYWN0b3Jp
ZXMoKQogewotICAgIHN0YXRpYyBhdXRvIGZhY3RvcmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZDxG
YWN0b3J5VmVjdG9yPihkZWZhdWx0RmFjdG9yaWVzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZCBmYWN0b3JpZXMgPSBkZWZhdWx0RmFjdG9yaWVzKCk7CiAgICAgcmV0dXJuIGZhY3Rvcmll
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDhlYTYxNDcy
MWQzMDIzYThiYjEyMDRiZDkxODJmNjA0MjZiNDE2OWQuLjNlM2Y0MWExYzU4MDdlNmNkMzU5ZGUz
ZGYyNmFlNzJkNTUxY2Q1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAK
QEAgLTk3LDU0ICs5Nyw0NyBAQCB2b2lkIFJlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlOjpzZXRT
dXBwb3J0ZWRQcmVzZXRzKGNvbnN0IFZlY3RvcjxSZWY8VmlkZW9QcmVzZQogICAgIH0KIH0KIAot
Y29uc3QgVmVjdG9yPEludFNpemU+JiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6c3RhbmRh
cmRWaWRlb1NpemVzKCkKK1NwYW48Y29uc3QgSW50U2l6ZT4gUmVhbHRpbWVWaWRlb0NhcHR1cmVT
b3VyY2U6OnN0YW5kYXJkVmlkZW9TaXplcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2l6
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBzdGF0aWMgSW50U2l6ZSB2aWRl
b1NpemVzW10gPSB7Ci0gICAgICAgICAgICB7IDExMiwgMTEyIH0sCi0gICAgICAgICAgICB7IDE2
MCwgMTYwIH0sCi0gICAgICAgICAgICB7IDE2MCwgMTIwIH0sIC8vIDQ6MywgUVFWR0EKLSAgICAg
ICAgICAgIHsgMTc2LCAxNDQgfSwgLy8gNDozLCBRQ0lGCi0gICAgICAgICAgICB7IDE5MiwgMTky
IH0sCi0gICAgICAgICAgICB7IDE5MiwgMTEyIH0sIC8vIDE2OjkKLSAgICAgICAgICAgIHsgMTky
LCAxNDQgfSwgLy8gMzo0Ci0gICAgICAgICAgICB7IDI0MCwgMjQwIH0sCi0gICAgICAgICAgICB7
IDI0MCwgMTYwIH0sIC8vIDM6MiwgSFFWR0EKLSAgICAgICAgICAgIHsgMzIwLCAzMjAgfSwKLSAg
ICAgICAgICAgIHsgMzIwLCAxODAgfSwgLy8gMTY6OQotICAgICAgICAgICAgeyAzMjAsIDI0MCB9
LCAvLyA0OjMsIFFWR0EKLSAgICAgICAgICAgIHsgMzUyLCAyODggfSwgLy8gQ0lGCi0gICAgICAg
ICAgICB7IDQ4MCwgMjcyIH0sIC8vIDE2OjkKLSAgICAgICAgICAgIHsgNDgwLCAzNjAgfSwgLy8g
NDozCi0gICAgICAgICAgICB7IDQ4MCwgNDgwIH0sCi0gICAgICAgICAgICB7IDY0MCwgNjQwIH0s
Ci0gICAgICAgICAgICB7IDY0MCwgMzYwIH0sIC8vIDE2OjksIDM2MHAgbkhECi0gICAgICAgICAg
ICB7IDY0MCwgNDgwIH0sIC8vIDQ6MwotICAgICAgICAgICAgeyA3MjAsIDcyMCB9LAotICAgICAg
ICAgICAgeyA4MDAsIDYwMCB9LCAvLyA0OjMsIFNWR0EKLSAgICAgICAgICAgIHsgOTYwLCA1NDAg
fSwgLy8gMTY6OSwgcUhECi0gICAgICAgICAgICB7IDEwMjQsIDYwMCB9LCAvLyAxNjo5LCBXU1ZH
QQotICAgICAgICAgICAgeyAxMDI0LCA3NjggfSwgLy8gNDozLCBYR0EKLSAgICAgICAgICAgIHsg
MTI4MCwgOTYwIH0sIC8vIDQ6MwotICAgICAgICAgICAgeyAxMjgwLCAxMDI0IH0sIC8vIDU6NCwg
U1hHQQotICAgICAgICAgICAgeyAxMjgwLCA3MjAgfSwgLy8gMTY6OSwgV1hHQQotICAgICAgICAg
ICAgeyAxMzY2LCA3NjggfSwgLy8gMTY6OSwgSEQKLSAgICAgICAgICAgIHsgMTYwMCwgMTIwMH0s
IC8vIDQ6MywgVVhHQQotICAgICAgICAgICAgeyAxOTIwLCAxMDgwIH0sIC8vIDE2OjksIDEwODBw
IEZIRAotICAgICAgICAgICAgeyAyNTYwLCAxNDQwIH0sIC8vIDE2OjksIFFIRAotICAgICAgICAg
ICAgeyAyNTkyLCAxOTM2IH0sCi0gICAgICAgICAgICB7IDMyNjQsIDI0NDggfSwgLy8gMzo0Ci0g
ICAgICAgICAgICB7IDM4NDAsIDIxNjAgfSwgLy8gMTY6OSwgNEsgVUhECi0gICAgICAgIH07Ci0g
ICAgICAgIFZlY3RvcjxJbnRTaXplPiBzaXplczsKLSAgICAgICAgZm9yIChhdXRvJiBzaXplIDog
dmlkZW9TaXplcykKLSAgICAgICAgICAgIHNpemVzLmFwcGVuZChzaXplKTsKLQotICAgICAgICBy
ZXR1cm4gc2l6ZXM7Ci0gICAgfSgpKTsKLQotICAgIHJldHVybiBzaXplcy5nZXQoKTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEludFNpemUgc2l6ZXNbXSA9IHsKKyAgICAgICAgeyAxMTIsIDExMiB9
LAorICAgICAgICB7IDE2MCwgMTYwIH0sCisgICAgICAgIHsgMTYwLCAxMjAgfSwgLy8gNDozLCBR
UVZHQQorICAgICAgICB7IDE3NiwgMTQ0IH0sIC8vIDQ6MywgUUNJRgorICAgICAgICB7IDE5Miwg
MTkyIH0sCisgICAgICAgIHsgMTkyLCAxMTIgfSwgLy8gMTY6OQorICAgICAgICB7IDE5MiwgMTQ0
IH0sIC8vIDM6NAorICAgICAgICB7IDI0MCwgMjQwIH0sCisgICAgICAgIHsgMjQwLCAxNjAgfSwg
Ly8gMzoyLCBIUVZHQQorICAgICAgICB7IDMyMCwgMzIwIH0sCisgICAgICAgIHsgMzIwLCAxODAg
fSwgLy8gMTY6OQorICAgICAgICB7IDMyMCwgMjQwIH0sIC8vIDQ6MywgUVZHQQorICAgICAgICB7
IDM1MiwgMjg4IH0sIC8vIENJRgorICAgICAgICB7IDQ4MCwgMjcyIH0sIC8vIDE2OjkKKyAgICAg
ICAgeyA0ODAsIDM2MCB9LCAvLyA0OjMKKyAgICAgICAgeyA0ODAsIDQ4MCB9LAorICAgICAgICB7
IDY0MCwgNjQwIH0sCisgICAgICAgIHsgNjQwLCAzNjAgfSwgLy8gMTY6OSwgMzYwcCBuSEQKKyAg
ICAgICAgeyA2NDAsIDQ4MCB9LCAvLyA0OjMKKyAgICAgICAgeyA3MjAsIDcyMCB9LAorICAgICAg
ICB7IDgwMCwgNjAwIH0sIC8vIDQ6MywgU1ZHQQorICAgICAgICB7IDk2MCwgNTQwIH0sIC8vIDE2
OjksIHFIRAorICAgICAgICB7IDEwMjQsIDYwMCB9LCAvLyAxNjo5LCBXU1ZHQQorICAgICAgICB7
IDEwMjQsIDc2OCB9LCAvLyA0OjMsIFhHQQorICAgICAgICB7IDEyODAsIDk2MCB9LCAvLyA0OjMK
KyAgICAgICAgeyAxMjgwLCAxMDI0IH0sIC8vIDU6NCwgU1hHQQorICAgICAgICB7IDEyODAsIDcy
MCB9LCAvLyAxNjo5LCBXWEdBCisgICAgICAgIHsgMTM2NiwgNzY4IH0sIC8vIDE2OjksIEhECisg
ICAgICAgIHsgMTYwMCwgMTIwMCB9LCAvLyA0OjMsIFVYR0EKKyAgICAgICAgeyAxOTIwLCAxMDgw
IH0sIC8vIDE2OjksIDEwODBwIEZIRAorICAgICAgICB7IDI1NjAsIDE0NDAgfSwgLy8gMTY6OSwg
UUhECisgICAgICAgIHsgMjU5MiwgMTkzNiB9LAorICAgICAgICB7IDMyNjQsIDI0NDggfSwgLy8g
Mzo0CisgICAgICAgIHsgMzg0MCwgMjE2MCB9LCAvLyAxNjo5LCA0SyBVSEQKKyAgICB9OworICAg
IHJldHVybiBzaXplczsKIH0KKwogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZT4KIHN0YXRp
YyB2b2lkIHVwZGF0ZU1pbk1heChWYWx1ZVR5cGUmIG1pbiwgVmFsdWVUeXBlJiBtYXgsIFZhbHVl
VHlwZSB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDg1M2Iw
YjI4M2U5MDFhMGJhNGM5NThmMWRkNzVkYTg2YTRmMzkxMzEuLjcwMTcyYWFlNTZjZDRmYTVmNWVk
ZmY3ZmQ0NDhiNWYzOTVjZDE4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaApA
QCAtNzMsNyArNzMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB1cGRhdGVDYXBhYmlsaXRpZXMo
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpOwogCiAgICAgdm9pZCBkaXNwYXRjaE1l
ZGlhU2FtcGxlVG9PYnNlcnZlcnMoTWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1l
dGFkYXRhKTsKLSAgICBjb25zdCBWZWN0b3I8SW50U2l6ZT4mIHN0YW5kYXJkVmlkZW9TaXplcygp
OworCisgICAgc3RhdGljIFNwYW48Y29uc3QgSW50U2l6ZT4gc3RhbmRhcmRWaWRlb1NpemVzKCk7
CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IENhcHR1cmVTaXplQW5kRnJhbWVSYXRlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggYzcxZjg2YTNjMjhjZDVkZWJmZDJlZDgxZTc2ZjU4
NTU4OWIwYzg2Yi4uYjAwMjEwZmNiOWRmNTMwMTBhODQ2MGU4ZDMyNjRjYTI2ZmE4OGJhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTIyOSwyMSArMjI5LDE4IEBAIHByaXZhdGU6
CiAKIHN0YXRpYyBWZWN0b3I8TW9ja01lZGlhRGV2aWNlPiYgZGV2aWNlcygpCiB7Ci0gICAgc3Rh
dGljIGF1dG8gZGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHJldHVy
biBkZWZhdWx0RGV2aWNlcygpOwotICAgIH0oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
IGRldmljZXMgPSBkZWZhdWx0RGV2aWNlcygpOwogICAgIHJldHVybiBkZXZpY2VzOwogfQogCiBz
dGF0aWMgSGFzaE1hcDxTdHJpbmcsIE1vY2tNZWRpYURldmljZT4mIGRldmljZU1hcCgpCiB7Ci0g
ICAgc3RhdGljIGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQgbWFwID0gW10gewogICAgICAgICBIYXNoTWFwPFN0cmluZywgTW9ja01l
ZGlhRGV2aWNlPiBtYXA7CiAgICAgICAgIGZvciAoYXV0byYgZGV2aWNlIDogZGV2aWNlcygpKQog
ICAgICAgICAgICAgbWFwLmFkZChkZXZpY2UucGVyc2lzdGVudElkLCBkZXZpY2UpOwotCiAgICAg
ICAgIHJldHVybiBtYXA7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIG1hcDsKIH0K
IApAQCAtMzk2LDU3ICszOTMsNTMgQEAgc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y2FwdHVyZURldmljZVdpdGhQZXIKIAogVmVjdG9y
PENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6bWljcm9waG9u
ZURldmljZXMoKQogewotICAgIHN0YXRpYyBhdXRvIG1pY3JvcGhvbmVEZXZpY2VzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWljcm9waG9uZURl
dmljZXMgPSBbXSB7CiAgICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBtaWNyb3Bob25lRGV2
aWNlczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXZpY2UgOiBkZXZpY2VzKCkpIHsKICAg
ICAgICAgICAgIGlmIChkZXZpY2UuaXNNaWNyb3Bob25lKCkpCiAgICAgICAgICAgICAgICAgbWlj
cm9waG9uZURldmljZXMuYXBwZW5kKHRvQ2FwdHVyZURldmljZShkZXZpY2UpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gbWljcm9waG9uZURldmljZXM7Ci0gICAgfSgpKTsKLQorICAgIH0o
KTsKICAgICByZXR1cm4gbWljcm9waG9uZURldmljZXM7CiB9CiAKIFZlY3RvcjxDYXB0dXJlRGV2
aWNlPiYgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNwZWFrZXJEZXZpY2VzKCkKIHsK
LSAgICBzdGF0aWMgYXV0byBzcGVha2VyRGV2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHNwZWFrZXJEZXZpY2VzID0gW10gewogICAgICAg
ICBWZWN0b3I8Q2FwdHVyZURldmljZT4gc3BlYWtlckRldmljZXM7CiAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgZGV2aWNlIDogZGV2aWNlcygpKSB7CiAgICAgICAgICAgICBpZiAoZGV2aWNlLmlz
U3BlYWtlcigpKQogICAgICAgICAgICAgICAgIHNwZWFrZXJEZXZpY2VzLmFwcGVuZCh0b0NhcHR1
cmVEZXZpY2UoZGV2aWNlKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNwZWFrZXJEZXZp
Y2VzOwotICAgIH0oKSk7Ci0KKyAgICB9KCk7CiAgICAgcmV0dXJuIHNwZWFrZXJEZXZpY2VzOwog
fQogCiBWZWN0b3I8Q2FwdHVyZURldmljZT4mIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
Ojp2aWRlb0RldmljZXMoKQogewotICAgIHN0YXRpYyBhdXRvIHZpZGVvRGV2aWNlcyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHZpZGVvRGV2aWNl
cyA9IFtdIHsKICAgICAgICAgVmVjdG9yPENhcHR1cmVEZXZpY2U+IHZpZGVvRGV2aWNlczsKICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXZpY2UgOiBkZXZpY2VzKCkpIHsKICAgICAgICAgICAg
IGlmIChkZXZpY2UuaXNDYW1lcmEoKSkKICAgICAgICAgICAgICAgICB2aWRlb0RldmljZXMuYXBw
ZW5kKHRvQ2FwdHVyZURldmljZShkZXZpY2UpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
dmlkZW9EZXZpY2VzOwotICAgIH0oKSk7Ci0KKyAgICB9KCk7CiAgICAgcmV0dXJuIHZpZGVvRGV2
aWNlczsKIH0KIAogVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlcjo6ZGlzcGxheURldmljZXMoKQogewotICAgIHN0YXRpYyBhdXRvIGRpc3BsYXlEZXZp
Y2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQg
ZGlzcGxheURldmljZXMgPSBbXSB7CiAgICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBkaXNw
bGF5RGV2aWNlczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXZpY2UgOiBkZXZpY2VzKCkp
IHsKICAgICAgICAgICAgIGlmIChkZXZpY2UuaXNEaXNwbGF5KCkpCiAgICAgICAgICAgICAgICAg
ZGlzcGxheURldmljZXMuYXBwZW5kKGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1
cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVlbiwgZGV2aWNlLnBlcnNpc3RlbnRJZCkudmFsdWUo
KSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGRpc3BsYXlEZXZpY2VzOwotICAgIH0oKSk7
Ci0KKyAgICB9KCk7CiAgICAgcmV0dXJuIGRpc3BsYXlEZXZpY2VzOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCmluZGV4IDlkZDJiMGI1Yjk1YTUwNWEz
OTJhYmE5NDg4MmYwNTMxZjM2NWU5MGIuLmU5NDNmODZkOGI4YTRiZjEzYTQ0MDhiNmE0ZTRkZDA3
MjAxNmZjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3Bw
CkBAIC02MywxMCArNjMsMTAgQEAgdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3QKIC8vIEZJWE1FOiBX
aGF0IGRvZXMgdGhlIHdvcmQgImNhY2hlIiBtZWFuIGhlcmU/CiBzdGF0aWMgY29uc3QgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIG1pbWVUeXBlQ2FjaGUoKQogewot
ICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhY2hlID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgY2FjaGUgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7
CiAgICAgICAgICJ2aWRlby9tb2NrIiwKICAgICAgICAgImF1ZGlvL21vY2siLAotICAgIH0pOwor
ICAgIH07CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCmluZGV4IDJiMTlh
M2I4NjEwNzVhNTA2OTE3MWJkYjdhMzMwOTJmYzI3NjlhZjYuLjU2OWU4Yjg5NDUyMzZlMWRkMmM1
MjI4NWRiNTY4MjkyZmZjOTI5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC03MiwxMiArNzIsMTIg
QEAgc3RhdGljIHZvaWQgYXBwbHlCYXNpY0F1dGhvcml6YXRpb25IZWFkZXIoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBDcmVkZW4KIAogc3RhdGljIE5TT3BlcmF0aW9uUXVldWUgKm9w
ZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBxdWV1ZSA9
IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHF1ZXVl
ID0gW10gewogICAgICAgICBhdXRvIHF1ZXVlID0gYWRvcHROUyhbW05TT3BlcmF0aW9uUXVldWUg
YWxsb2NdIGluaXRdKTsKICAgICAgICAgLy8gRGVmYXVsdCBjb25jdXJyZW50IG9wZXJhdGlvbiBj
b3VudCBkZXBlbmRzIG9uIGN1cnJlbnQgc3lzdGVtIHdvcmtsb2FkLCBidXQgZGVsZWdhdGUgbWV0
aG9kcyBhcmUgbW9zdGx5IGlkbGluZyBpbiBJUEMsIHNvIHdlIGNhbiBydW4gYXMgbWFueSBhcyBu
ZWVkZWQuCiAgICAgICAgIFtxdWV1ZSBzZXRNYXhDb25jdXJyZW50T3BlcmF0aW9uQ291bnQ6TlNP
cGVyYXRpb25RdWV1ZURlZmF1bHRNYXhDb25jdXJyZW50T3BlcmF0aW9uQ291bnRdOwogICAgICAg
ICByZXR1cm4gcXVldWU7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIHF1ZXVlLmdl
dCgpLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9UZXh0Qm91bmRhcmllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L1RleHRCb3VuZGFyaWVzLm1tCmluZGV4IGUxOTQwMDk1MTdkYTI3YWYzMTIzYWZhMDZkNGI3YTFm
YzUyYzU1MmUuLmYxM2MzM2ViZGMyZWZjYWE0OGQzMWQ2NzA3MjMyYjA3MjJhODRmMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1t
CkBAIC03MSwxMSArNzEsMTEgQEAgc3RhdGljIGJvb2wgaXNBbWJpZ3VvdXNCb3VuZGFyeUNoYXJh
Y3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKIAogc3RhdGljIENGU3RyaW5nVG9rZW5pemVyUmVmIHRv
a2VuaXplckZvclN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiB7Ci0gICAgc3RhdGljIGF1dG8gbG9j
YWxlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0
cm95ZWQgbG9jYWxlID0gW10gewogICAgICAgICBjb25zdCBjaGFyKiBsb2NhbElEID0gY3VycmVu
dFRleHRCcmVha0xvY2FsZUlEKCk7CiAgICAgICAgIGF1dG8gY3VycmVudExvY2FsZUlEID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obG9jYWxJRCksIHN0cmxlbihsb2NhbElEKSwg
a0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY3Vy
cmVudExvY2FsZUlELmdldCgpKSk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAKICAgICBpZiAoIWxv
Y2FsZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAxZGMxNGNjNTU5NGFlOGQ5YmFlZWEwNThjOWQzNmMz
YjgwZTM4YTYxLi40NTRlNjRjNmJmYTc1ZmFmYzJlZTkxZTc1Y2RjMmZjNDhlNmNkNjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEzOTEsOCArMTM5MSw3
IEBAIGF1dG8gUmVuZGVyVGhlbWU6OmNvbG9yQ2FjaGUoT3B0aW9uU2V0PFN0eWxlQ29sb3JPcHRp
b25zPiBvcHRpb25zKSBjb25zdCAtPiBDb2xvCiAKIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIFJl
bmRlclRoZW1lOjpjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCBzeXN0ZW1G
b250SUQpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGF1dG8gZm9udERlc2NyaXB0aW9ucyA9IG1ha2VO
ZXZlckRlc3Ryb3llZDxzdGQ6OmFycmF5PEZvbnRDYXNjYWRlRGVzY3JpcHRpb24sIDEwPj4oeyB9
KTsKLQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OmFycmF5PEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24sIDEwPj4gZm9udERlc2NyaXB0aW9uczsKICAgICBzd2l0Y2ggKHN5c3RlbUZvbnRJ
RCkgewogICAgIGNhc2UgQ1NTVmFsdWVDYXB0aW9uOgogICAgICAgICByZXR1cm4gZm9udERlc2Ny
aXB0aW9ucy5nZXQoKVswXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW0KaW5kZXggNGIxM2I1ZmIzZDdhZTNjYTQwODE5N2MxZDExYmNlMzExNWFkODY2Zi4u
MWE2NjczMjI3MjJhZDM4ZmMxNTE0YmJiMTE5ZWRjZTNhOGVmNzNmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KQEAgLTIzNiw3ICsyMzYsNyBAQCBT
dHJpbmcgUmVuZGVyVGhlbWVDb2NvYTo6bWVkaWFDb250cm9sc0Zvcm1hdHRlZFN0cmluZ0ZvckR1
cmF0aW9uKGNvbnN0IGRvdWJsZSBkdQogCiBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBSZW5kZXJU
aGVtZUNvY29hOjpjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCB2YWx1ZUlE
KSBjb25zdAogewotICAgIHN0YXRpYyBhdXRvIGZvbnREZXNjcmlwdGlvbnMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQ8c3RkOjphcnJheTxGb250Q2FzY2FkZURlc2NyaXB0aW9uLCAxNz4+KHsgfSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6YXJyYXk8Rm9udENhc2NhZGVEZXNjcmlwdGlv
biwgMTc+PiBmb250RGVzY3JpcHRpb25zOwogCiAgICAgQVNTRVJUKHN0ZDo6YWxsX29mKHN0ZDo6
YmVnaW4oZm9udERlc2NyaXB0aW9ucy5nZXQoKSksIHN0ZDo6ZW5kKGZvbnREZXNjcmlwdGlvbnMu
Z2V0KCkpLCBbXShhdXRvJiBkZXNjcmlwdGlvbikgewogICAgICAgICByZXR1cm4gIWRlc2NyaXB0
aW9uLmlzQWJzb2x1dGVTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxl
bWVudC5jcHAKaW5kZXggMzcxMWQ4YmY1Zjg3NWIyM2UyYTYzNWU2MGVhYTcwYTY4ZjNhYTEyYy4u
YzY5MmI0MDc0MmMzNzdmOTlmMGM4OTRmYjYyNTdiNjJjNDNmNDNmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxVbml0QmV6aWVyPj4gcGFyc2VLZXlTcGxpbmVzKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogCiBib29sIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIHN0YXRpYyBjb25z
dCBhdXRvIHN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZCBzdXBwb3J0ZWRBdHRyaWJ1dGVzID0gW10gewogICAgICAg
ICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4g
c2V0OwogICAgICAgICBTVkdUZXN0czo6YWRkU3VwcG9ydGVkQXR0cmlidXRlcyhzZXQpOwogICAg
ICAgICBzZXQuYWRkKHsKQEAgLTE0Myw3ICsxNDMsNyBAQCBib29sIFNWR0FuaW1hdGlvbkVsZW1l
bnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ICAgICAgICAgICAgU1ZHTmFtZXM6OmJ5QXR0ci5nZXQoKSwKICAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybiBzZXQ7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0
dHJpYnV0ZXMuZ2V0KCkuY29udGFpbnM8U1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJO
YW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGM4NjgzMzNlODM2Y2I3
ZTRlMGIyNDhjOTc3NDJmNTQ5M2JlMWRkZDcuLmYzZmZlNjRmMWE0ZDI3ZDk1NjVkYWI2Njc2YmQy
ZDRhNmJjNGYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTcwLDgxICs3MCw4
MSBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaE1hcDxBdG9tU3RyaW5nLCBDU1NQcm9wZQogICAgIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1l
czsKIAogICAgIC8vIFRoaXMgbGlzdCBzaG91bGQgaW5jbHVkZSBhbGwgYmFzZSBDU1MgYW5kIFNW
RyBDU1MgcHJvcGVydGllcyB3aGljaCBhcmUgZXhwb3NlZCBhcyBTVkcgWE1MIGF0dHJpYnV0ZXMu
Ci0gICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0IGF0dHJpYnV0ZU5hbWVzW10g
PSB7Ci0gICAgICAgICZhbGlnbm1lbnRfYmFzZWxpbmVBdHRyLmdldCgpLAotICAgICAgICAmYmFz
ZWxpbmVfc2hpZnRBdHRyLmdldCgpLAotICAgICAgICAmYnVmZmVyZWRfcmVuZGVyaW5nQXR0ci5n
ZXQoKSwKLSAgICAgICAgJmNsaXBBdHRyLmdldCgpLAotICAgICAgICAmY2xpcF9wYXRoQXR0ci5n
ZXQoKSwKLSAgICAgICAgJmNsaXBfcnVsZUF0dHIuZ2V0KCksCi0gICAgICAgICZTVkdOYW1lczo6
Y29sb3JBdHRyLmdldCgpLAotICAgICAgICAmY29sb3JfaW50ZXJwb2xhdGlvbkF0dHIuZ2V0KCks
Ci0gICAgICAgICZjb2xvcl9pbnRlcnBvbGF0aW9uX2ZpbHRlcnNBdHRyLmdldCgpLAotICAgICAg
ICAmY3Vyc29yQXR0ci5nZXQoKSwKLSAgICAgICAgJmN4QXR0ci5nZXQoKSwKLSAgICAgICAgJmN5
QXR0ci5nZXQoKSwKLSAgICAgICAgJlNWR05hbWVzOjpkaXJlY3Rpb25BdHRyLmdldCgpLAotICAg
ICAgICAmZGlzcGxheUF0dHIuZ2V0KCksCi0gICAgICAgICZkb21pbmFudF9iYXNlbGluZUF0dHIu
Z2V0KCksCi0gICAgICAgICZmaWxsQXR0ci5nZXQoKSwKLSAgICAgICAgJmZpbGxfb3BhY2l0eUF0
dHIuZ2V0KCksCi0gICAgICAgICZmaWxsX3J1bGVBdHRyLmdldCgpLAotICAgICAgICAmZmlsdGVy
QXR0ci5nZXQoKSwKLSAgICAgICAgJmZsb29kX2NvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAgJmZs
b29kX29wYWNpdHlBdHRyLmdldCgpLAotICAgICAgICAmZm9udF9mYW1pbHlBdHRyLmdldCgpLAot
ICAgICAgICAmZm9udF9zaXplQXR0ci5nZXQoKSwKLSAgICAgICAgJmZvbnRfc3RyZXRjaEF0dHIu
Z2V0KCksCi0gICAgICAgICZmb250X3N0eWxlQXR0ci5nZXQoKSwKLSAgICAgICAgJmZvbnRfdmFy
aWFudEF0dHIuZ2V0KCksCi0gICAgICAgICZmb250X3dlaWdodEF0dHIuZ2V0KCksCi0gICAgICAg
ICZnbHlwaF9vcmllbnRhdGlvbl9ob3Jpem9udGFsQXR0ci5nZXQoKSwKLSAgICAgICAgJmdseXBo
X29yaWVudGF0aW9uX3ZlcnRpY2FsQXR0ci5nZXQoKSwKLSAgICAgICAgJmltYWdlX3JlbmRlcmlu
Z0F0dHIuZ2V0KCksCi0gICAgICAgICZTVkdOYW1lczo6aGVpZ2h0QXR0ci5nZXQoKSwKLSAgICAg
ICAgJmtlcm5pbmdBdHRyLmdldCgpLAotICAgICAgICAmbGV0dGVyX3NwYWNpbmdBdHRyLmdldCgp
LAotICAgICAgICAmbGlnaHRpbmdfY29sb3JBdHRyLmdldCgpLAotICAgICAgICAmbWFya2VyX2Vu
ZEF0dHIuZ2V0KCksCi0gICAgICAgICZtYXJrZXJfbWlkQXR0ci5nZXQoKSwKLSAgICAgICAgJm1h
cmtlcl9zdGFydEF0dHIuZ2V0KCksCi0gICAgICAgICZtYXNrQXR0ci5nZXQoKSwKLSAgICAgICAg
Jm1hc2tfdHlwZUF0dHIuZ2V0KCksCi0gICAgICAgICZvcGFjaXR5QXR0ci5nZXQoKSwKLSAgICAg
ICAgJm92ZXJmbG93QXR0ci5nZXQoKSwKLSAgICAgICAgJnBhaW50X29yZGVyQXR0ci5nZXQoKSwK
LSAgICAgICAgJnBvaW50ZXJfZXZlbnRzQXR0ci5nZXQoKSwKLSAgICAgICAgJnJBdHRyLmdldCgp
LAotICAgICAgICAmcnhBdHRyLmdldCgpLAotICAgICAgICAmcnlBdHRyLmdldCgpLAotICAgICAg
ICAmc2hhcGVfcmVuZGVyaW5nQXR0ci5nZXQoKSwKLSAgICAgICAgJnN0b3BfY29sb3JBdHRyLmdl
dCgpLAotICAgICAgICAmc3RvcF9vcGFjaXR5QXR0ci5nZXQoKSwKLSAgICAgICAgJnN0cm9rZUF0
dHIuZ2V0KCksCi0gICAgICAgICZzdHJva2VfZGFzaGFycmF5QXR0ci5nZXQoKSwKLSAgICAgICAg
JnN0cm9rZV9kYXNob2Zmc2V0QXR0ci5nZXQoKSwKLSAgICAgICAgJnN0cm9rZV9saW5lY2FwQXR0
ci5nZXQoKSwKLSAgICAgICAgJnN0cm9rZV9saW5lam9pbkF0dHIuZ2V0KCksCi0gICAgICAgICZz
dHJva2VfbWl0ZXJsaW1pdEF0dHIuZ2V0KCksCi0gICAgICAgICZzdHJva2Vfb3BhY2l0eUF0dHIu
Z2V0KCksCi0gICAgICAgICZzdHJva2Vfd2lkdGhBdHRyLmdldCgpLAotICAgICAgICAmdGV4dF9h
bmNob3JBdHRyLmdldCgpLAotICAgICAgICAmdGV4dF9kZWNvcmF0aW9uQXR0ci5nZXQoKSwKLSAg
ICAgICAgJnRleHRfcmVuZGVyaW5nQXR0ci5nZXQoKSwKLSAgICAgICAgJnVuaWNvZGVfYmlkaUF0
dHIuZ2V0KCksCi0gICAgICAgICZ2ZWN0b3JfZWZmZWN0QXR0ci5nZXQoKSwKLSAgICAgICAgJnZp
c2liaWxpdHlBdHRyLmdldCgpLAotICAgICAgICAmU1ZHTmFtZXM6OndpZHRoQXR0ci5nZXQoKSwK
LSAgICAgICAgJndvcmRfc3BhY2luZ0F0dHIuZ2V0KCksCi0gICAgICAgICZ3cml0aW5nX21vZGVB
dHRyLmdldCgpLAotICAgICAgICAmeEF0dHIuZ2V0KCksCi0gICAgICAgICZ5QXR0ci5nZXQoKSwK
KyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgYXR0cmlidXRlTmFtZXMgeworICAgICAg
ICAmYWxpZ25tZW50X2Jhc2VsaW5lQXR0ciwKKyAgICAgICAgJmJhc2VsaW5lX3NoaWZ0QXR0ciwK
KyAgICAgICAgJmJ1ZmZlcmVkX3JlbmRlcmluZ0F0dHIsCisgICAgICAgICZjbGlwQXR0ciwKKyAg
ICAgICAgJmNsaXBfcGF0aEF0dHIsCisgICAgICAgICZjbGlwX3J1bGVBdHRyLAorICAgICAgICAm
U1ZHTmFtZXM6OmNvbG9yQXR0ciwKKyAgICAgICAgJmNvbG9yX2ludGVycG9sYXRpb25BdHRyLAor
ICAgICAgICAmY29sb3JfaW50ZXJwb2xhdGlvbl9maWx0ZXJzQXR0ciwKKyAgICAgICAgJmN1cnNv
ckF0dHIsCisgICAgICAgICZjeEF0dHIsCisgICAgICAgICZjeUF0dHIsCisgICAgICAgICZTVkdO
YW1lczo6ZGlyZWN0aW9uQXR0ciwKKyAgICAgICAgJmRpc3BsYXlBdHRyLAorICAgICAgICAmZG9t
aW5hbnRfYmFzZWxpbmVBdHRyLAorICAgICAgICAmZmlsbEF0dHIsCisgICAgICAgICZmaWxsX29w
YWNpdHlBdHRyLAorICAgICAgICAmZmlsbF9ydWxlQXR0ciwKKyAgICAgICAgJmZpbHRlckF0dHIs
CisgICAgICAgICZmbG9vZF9jb2xvckF0dHIsCisgICAgICAgICZmbG9vZF9vcGFjaXR5QXR0ciwK
KyAgICAgICAgJmZvbnRfZmFtaWx5QXR0ciwKKyAgICAgICAgJmZvbnRfc2l6ZUF0dHIsCisgICAg
ICAgICZmb250X3N0cmV0Y2hBdHRyLAorICAgICAgICAmZm9udF9zdHlsZUF0dHIsCisgICAgICAg
ICZmb250X3ZhcmlhbnRBdHRyLAorICAgICAgICAmZm9udF93ZWlnaHRBdHRyLAorICAgICAgICAm
Z2x5cGhfb3JpZW50YXRpb25faG9yaXpvbnRhbEF0dHIsCisgICAgICAgICZnbHlwaF9vcmllbnRh
dGlvbl92ZXJ0aWNhbEF0dHIsCisgICAgICAgICZpbWFnZV9yZW5kZXJpbmdBdHRyLAorICAgICAg
ICAmU1ZHTmFtZXM6OmhlaWdodEF0dHIsCisgICAgICAgICZrZXJuaW5nQXR0ciwKKyAgICAgICAg
JmxldHRlcl9zcGFjaW5nQXR0ciwKKyAgICAgICAgJmxpZ2h0aW5nX2NvbG9yQXR0ciwKKyAgICAg
ICAgJm1hcmtlcl9lbmRBdHRyLAorICAgICAgICAmbWFya2VyX21pZEF0dHIsCisgICAgICAgICZt
YXJrZXJfc3RhcnRBdHRyLAorICAgICAgICAmbWFza0F0dHIsCisgICAgICAgICZtYXNrX3R5cGVB
dHRyLAorICAgICAgICAmb3BhY2l0eUF0dHIsCisgICAgICAgICZvdmVyZmxvd0F0dHIsCisgICAg
ICAgICZwYWludF9vcmRlckF0dHIsCisgICAgICAgICZwb2ludGVyX2V2ZW50c0F0dHIsCisgICAg
ICAgICZyQXR0ciwKKyAgICAgICAgJnJ4QXR0ciwKKyAgICAgICAgJnJ5QXR0ciwKKyAgICAgICAg
JnNoYXBlX3JlbmRlcmluZ0F0dHIsCisgICAgICAgICZzdG9wX2NvbG9yQXR0ciwKKyAgICAgICAg
JnN0b3Bfb3BhY2l0eUF0dHIsCisgICAgICAgICZzdHJva2VBdHRyLAorICAgICAgICAmc3Ryb2tl
X2Rhc2hhcnJheUF0dHIsCisgICAgICAgICZzdHJva2VfZGFzaG9mZnNldEF0dHIsCisgICAgICAg
ICZzdHJva2VfbGluZWNhcEF0dHIsCisgICAgICAgICZzdHJva2VfbGluZWpvaW5BdHRyLAorICAg
ICAgICAmc3Ryb2tlX21pdGVybGltaXRBdHRyLAorICAgICAgICAmc3Ryb2tlX29wYWNpdHlBdHRy
LAorICAgICAgICAmc3Ryb2tlX3dpZHRoQXR0ciwKKyAgICAgICAgJnRleHRfYW5jaG9yQXR0ciwK
KyAgICAgICAgJnRleHRfZGVjb3JhdGlvbkF0dHIsCisgICAgICAgICZ0ZXh0X3JlbmRlcmluZ0F0
dHIsCisgICAgICAgICZ1bmljb2RlX2JpZGlBdHRyLAorICAgICAgICAmdmVjdG9yX2VmZmVjdEF0
dHIsCisgICAgICAgICZ2aXNpYmlsaXR5QXR0ciwKKyAgICAgICAgJlNWR05hbWVzOjp3aWR0aEF0
dHIsCisgICAgICAgICZ3b3JkX3NwYWNpbmdBdHRyLAorICAgICAgICAmd3JpdGluZ19tb2RlQXR0
ciwKKyAgICAgICAgJnhBdHRyLAorICAgICAgICAmeUF0dHIsCiAgICAgfTsKIAogICAgIE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxBdG9tU3RyaW5nLCBDU1NQcm9wZXJ0
eUlEPiBtYXA7CiAKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBhdHRyaWJ1dGVOYW1lcykgewotICAg
ICAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUgPSBuYW1lLT5sb2NhbE5hbWUoKTsKKyAg
ICAgICAgYXV0byYgbG9jYWxOYW1lID0gbmFtZS0+Z2V0KCkubG9jYWxOYW1lKCk7CiAgICAgICAg
IG1hcC5hZGQobG9jYWxOYW1lLCBjc3NQcm9wZXJ0eUlEKGxvY2FsTmFtZSkpOwogICAgIH0KIApA
QCAtNzEzLDEwOSArNzEzLDEwOSBAQCBjb25zdCBSZW5kZXJTdHlsZSogU1ZHRWxlbWVudDo6Y29t
cHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQogCiBRdWFsaWZpZWRO
YW1lIFNWR0VsZW1lbnQ6OmFuaW1hdGFibGVBdHRyaWJ1dGVGb3JOYW1lKGNvbnN0IEF0b21TdHJp
bmcmIGxvY2FsTmFtZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBhbmltYXRhYmxlQXR0cmli
dXRlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBRdWFs
aWZpZWROYW1lKiBjb25zdCBuYW1lc1tdID0gewotICAgICAgICAgICAgJkhUTUxOYW1lczo6Y2xh
c3NBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjphbXBsaXR1ZGVBdHRyLmdldCgp
LAotICAgICAgICAgICAgJlNWR05hbWVzOjphemltdXRoQXR0ci5nZXQoKSwKLSAgICAgICAgICAg
ICZTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFt
ZXM6OmJpYXNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpjbGlwUGF0aFVuaXRz
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6Y3hBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJlNWR05hbWVzOjpjeUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmRp
ZmZ1c2VDb25zdGFudEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmRpdmlzb3JB
dHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpkeEF0dHIuZ2V0KCksCi0gICAgICAg
ICAgICAmU1ZHTmFtZXM6OmR5QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZWRn
ZU1vZGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjplbGV2YXRpb25BdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpleHBvbmVudEF0dHIuZ2V0KCksCi0gICAgICAg
ICAgICAmU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLmdldCgpLAotICAg
ICAgICAgICAgJlNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OmZ4QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZnlBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJlNWR05hbWVzOjpoZWlnaHRBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
OjppbjJBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjppbkF0dHIuZ2V0KCksCi0g
ICAgICAgICAgICAmU1ZHTmFtZXM6OmludGVyY2VwdEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OmsxQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6azJBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjprM0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6Oms0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6a2VybmVsTWF0
cml4QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ci5nZXQoKSwKLSAgICAgICAgICAg
ICZTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
OjptYXJrZXJXaWR0aEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Om1hc2tDb250
ZW50VW5pdHNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjptYXNrVW5pdHNBdHRy
LmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjptZXRob2RBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJlNWR05hbWVzOjptb2RlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6
bnVtT2N0YXZlc0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Om9mZnNldEF0dHIu
Z2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ci5nZXQoKSwKLSAgICAg
ICAgICAgICZTVkdOYW1lczo6b3JkZXJBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
OjpvcmllbnRBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIu
Z2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLmdldCgp
LAotICAgICAgICAgICAgJlNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJlNWR05hbWVzOjpwb2ludHNBdFhBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05h
bWVzOjpwb2ludHNBdFlBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpwb2ludHNB
dFpBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0ci5n
ZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6cmFkaXVzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdO
YW1lczo6ckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnJlZlhBdHRyLmdldCgp
LAotICAgICAgICAgICAgJlNWR05hbWVzOjpyZWZZQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZT
VkdOYW1lczo6cmVzdWx0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cm90YXRl
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cnhBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJlNWR05hbWVzOjpyeUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnNj
YWxlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6c2VlZEF0dHIuZ2V0KCksCi0g
ICAgICAgICAgICAmU1ZHTmFtZXM6OnNsb3BlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdO
YW1lczo6c3BhY2luZ0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnNwZWN1bGFy
Q29uc3RhbnRBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpzcGVjdWxhckV4cG9u
ZW50QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ci5n
ZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLmdldCgpLAotICAg
ICAgICAgICAgJlNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLmdldCgpLAotICAgICAgICAgICAg
JlNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6
OnN1cmZhY2VTY2FsZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnRhYmxlVmFs
dWVzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6dGFyZ2V0QXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZTVkdOYW1lczo6dGFyZ2V0WEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OnRhcmdldFlBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp0cmFu
c2Zvcm1BdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp0eXBlQXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZTVkdOYW1lczo6dmFsdWVzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZT
VkdOYW1lczo6dmlld0JveEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OndpZHRo
QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6eDFBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJlNWR05hbWVzOjp4MkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnhB
dHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ci5n
ZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6eTFBdHRyLmdldCgpLAotICAgICAgICAgICAg
JlNWR05hbWVzOjp5MkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnlBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZTVkdOYW1lczo6ekF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFt
ZXM6OmhyZWZBdHRyLmdldCgpLAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBhbmltYXRhYmxl
QXR0cmlidXRlcyA9IFtdIHsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IG5h
bWVzIHsKKyAgICAgICAgICAgICZIVE1MTmFtZXM6OmNsYXNzQXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6YW1wbGl0dWRlQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6YXppbXV0aEF0
dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLAorICAgICAgICAg
ICAgJlNWR05hbWVzOjpiaWFzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6Y2xpcFBhdGhV
bml0c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmN4QXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6Y3lBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRB
dHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpkaXZpc29yQXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6ZHhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpkeUF0dHIsCisgICAgICAg
ICAgICAmU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZWxl
dmF0aW9uQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZXhwb25lbnRBdHRyLAorICAgICAg
ICAgICAgJlNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwKKyAgICAgICAg
ICAgICZTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpm
eEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmZ5QXR0ciwKKyAgICAgICAgICAgICZTVkdO
YW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpncmFk
aWVudFVuaXRzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6aGVpZ2h0QXR0ciwKKyAgICAg
ICAgICAgICZTVkdOYW1lczo6aW4yQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6aW5BdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjppbnRlcmNlcHRBdHRyLAorICAgICAgICAgICAgJlNW
R05hbWVzOjprMUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmsyQXR0ciwKKyAgICAgICAg
ICAgICZTVkdOYW1lczo6azNBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjprNEF0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIsCisgICAgICAgICAgICAmU1ZH
TmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpsZW5n
dGhBZGp1c3RBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0
dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bWFy
a2VyV2lkdGhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjptYXNrQ29udGVudFVuaXRzQXR0
ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bWFza1VuaXRzQXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6bWV0aG9kQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bW9kZUF0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyLAorICAgICAgICAgICAgJlNWR05h
bWVzOjpvZmZzZXRBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpvcGVyYXRvckF0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6Om9yZGVyQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
b3JpZW50QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIsCisgICAg
ICAgICAgICAmU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLAorICAgICAgICAgICAg
JlNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
cGF0dGVyblVuaXRzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cG9pbnRzQXRYQXR0ciwK
KyAgICAgICAgICAgICZTVkdOYW1lczo6cG9pbnRzQXRZQXR0ciwKKyAgICAgICAgICAgICZTVkdO
YW1lczo6cG9pbnRzQXRaQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cHJlc2VydmVBbHBo
YUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLAor
ICAgICAgICAgICAgJlNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsCisgICAgICAgICAgICAm
U1ZHTmFtZXM6OnJhZGl1c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnJBdHRyLAorICAg
ICAgICAgICAgJlNWR05hbWVzOjpyZWZYQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cmVm
WUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnJlc3VsdEF0dHIsCisgICAgICAgICAgICAm
U1ZHTmFtZXM6OnJvdGF0ZUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnJ4QXR0ciwKKyAg
ICAgICAgICAgICZTVkdOYW1lczo6cnlBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzY2Fs
ZUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnNlZWRBdHRyLAorICAgICAgICAgICAgJlNW
R05hbWVzOjpzbG9wZUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLAor
ICAgICAgICAgICAgJlNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0ciwKKyAgICAgICAgICAg
ICZTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6
OnNwcmVhZE1ldGhvZEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0
ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwKKyAgICAgICAgICAg
ICZTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzdXJm
YWNlU2NhbGVBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6OnRhcmdldEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6
OnRhcmdldFhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp0YXJnZXRZQXR0ciwKKyAgICAg
ICAgICAgICZTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
dHlwZUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnZhbHVlc0F0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp3aWR0aEF0
dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OngxQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1l
czo6eDJBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp4QXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6Onkx
QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6eTJBdHRyLAorICAgICAgICAgICAgJlNWR05h
bWVzOjp5QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIs
CisgICAgICAgICAgICAmU1ZHTmFtZXM6OnpBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpo
cmVmQXR0ciwKICAgICAgICAgfTsKICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jp
bkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsIFF1YWxpZmllZE5hbWU+IG1hcDsKICAgICAgICAgZm9y
IChhdXRvJiBuYW1lIDogbmFtZXMpIHsKLSAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFw
LmFkZChuYW1lLT5sb2NhbE5hbWUoKSwgKm5hbWUpOworICAgICAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtYXAuYWRkKG5hbWUtPmdldCgpLmxvY2FsTmFtZSgpLCAqbmFtZSk7CiAgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBtYXA7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJu
IGFuaW1hdGFibGVBdHRyaWJ1dGVzLmdldCgpLmdldChsb2NhbE5hbWUpOwogfQogCkBAIC04NjQs
NyArODY0LDcgQEAgQ1NTUHJvcGVydHlJRCBTVkdFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZH
QXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIGlmICghYXR0ck5hbWUubmFt
ZXNwYWNlVVJJKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7
CiAKLSAgICBzdGF0aWMgY29uc3QgYXV0byBwcm9wZXJ0aWVzID0gbWFrZU5ldmVyRGVzdHJveWVk
KGNyZWF0ZUF0dHJpYnV0ZU5hbWVUb0NTU1Byb3BlcnR5SURNYXAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkIHByb3BlcnRpZXMgPSBjcmVhdGVBdHRyaWJ1dGVOYW1lVG9DU1NQcm9wZXJ0
eUlETWFwKCk7CiAgICAgcmV0dXJuIHByb3BlcnRpZXMuZ2V0KCkuZ2V0KGF0dHJOYW1lLmxvY2Fs
TmFtZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
VkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxF
bGVtZW50LmNwcAppbmRleCA0ZTRjMzkxNTE1ZWY5MTIxMGEzZjI1NjU1MTJjOGU3NThlZDcyNjIy
Li45ZGVhMDdlMzk2YTA5YzUzNDExYzQ1ZDYzOWM1ZGFlMmQwOTc0Y2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtNDU3LDcgKzQ1
Nyw3IEBAIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQmVnaW5PckVuZChjb25zdCBTdHJpbmcm
IHBhcnNlU3RyaW5nLCBCZWdpbk9yRW5kIGJlZ2luCiAKIGJvb2wgU1ZHU01JTEVsZW1lbnQ6Omlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAg
IHN0YXRpYyBjb25zdCBhdXRvIHN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBtYWtlTmV2ZXJEZXN0cm95
ZWQoTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFF1YWxpZmllZE5hbWU+
IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3VwcG9ydGVkQXR0cmlidXRlcyA9IE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxRdWFsaWZpZWROYW1lPiB7CiAgICAg
ICAgIFNWR05hbWVzOjpiZWdpbkF0dHIsCiAgICAgICAgIFNWR05hbWVzOjplbmRBdHRyLAogICAg
ICAgICBTVkdOYW1lczo6ZHVyQXR0ciwKQEAgLTQ2OCw3ICs0NjgsNyBAQCBib29sIFNWR1NNSUxF
bGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKICAgICAgICAgU1ZHTmFtZXM6OmF0dHJpYnV0ZU5hbWVBdHRyLAogICAgICAgICBTVkdOYW1l
czo6aHJlZkF0dHIsCiAgICAgICAgIFhMaW5rTmFtZXM6OmhyZWZBdHRyLAotICAgIH0pOworICAg
IH07CiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuY29udGFpbnM8U1ZHQXR0
cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aEZ1bmN0aW9ucy5jcHAKaW5kZXggY2UxYzY1MTczNWQxNjk0YmM3M2U2Y2I0YmFmNzNjOGY5Mzlj
NDA4NC4uMzIyZTNiZTBmNzVkZDBmNDdjNTFmODM1MTUzYTIwY2NjN2RkOTMwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC03MTUsNyArNzE1LDcgQEAgc3RhdGljIE1l
bW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIEZ1bmN0aW9uTWFw
VmFsdWU+IGNyZWF0ZUYKIAogc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uPiBGdW5jdGlvbjo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbnVtQXJndW1lbnRzKQogewotICAgIHN0
YXRpYyBjb25zdCBhdXRvIGZ1bmN0aW9uTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZUZ1
bmN0aW9uTWFwKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBmdW5jdGlvbk1hcCA9IGNy
ZWF0ZUZ1bmN0aW9uTWFwKCk7CiAKICAgICBhdXRvIGl0ID0gZnVuY3Rpb25NYXAuZ2V0KCkuZmlu
ZChuYW1lKTsKICAgICBpZiAoaXQgPT0gZnVuY3Rpb25NYXAuZ2V0KCkuZW5kKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoUGFyc2VyLmNwcAppbmRleCBjZTJkMDgxNTJjNmJkMjUwY2NlODkxODZiOTA4MGI4
N2NmZDM2MTViLi5lMzE1NjVlYmU3OGQ5YmZkYWNjMGY2YTFlYTBhNTcyZTg1NjJiODlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgU3RlcDo6QXhpcz4g
Y3JlYXRlQXhpc05hbQogCiBzdGF0aWMgYm9vbCBwYXJzZUF4aXNOYW1lKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RlcDo6QXhpcyYgdHlwZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBheGlzTmFt
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlQXhpc05hbWVzTWFwKCkpOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZCBheGlzTmFtZXMgPSBjcmVhdGVBeGlzTmFtZXNNYXAoKTsKICAgICBh
dXRvIGl0ID0gYXhpc05hbWVzLmdldCgpLmZpbmQobmFtZSk7CiAgICAgaWYgKGl0ID09IGF4aXNO
YW1lcy5nZXQoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggMzU1YmI4
NGZjYmE3ZDZlYWJhYTk3NTIwMjI3NmJlOWFiM2U2ZmZiNy4uMDFiNzVlNDg3YWU0NTJmYmE0ZGY2
OTA4ZTcwY2U3OWY2NDg1OTI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIGJv
b2wgbmVlZHNOZXdDcmVhdGVUYWJsZVNjaGVtYShjb25zdCBTdHJpbmcmIHNjaGVtYSkKIAogY29u
c3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVB
bmRJbmRleFBhaXI+JiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZXhwZWN0
ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gZXhwZWN0ZWRUYWJs
ZUFuZEluZGV4UXVlcmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3Vw
T25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4geworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZCBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzID0gTWVtb3J5
Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBh
aXI+IHsKICAgICAgICAgeyAiT2JzZXJ2ZWREb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJp
bmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlT2JzZXJ2ZWREb21haW4sIHN0ZDo6bnVs
bG9wdCkgfSwKICAgICAgICAgeyAiVG9wTGV2ZWxEb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wTGV2ZWxEb21haW5zLCBzdGQ6
Om51bGxvcHQpIH0sCiAgICAgICAgIHsgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlu
cyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0
ZVN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRj
aFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVE
b21haW5zKSkgfSwKQEAgLTI2Niw4ICsyNjYsNyBAQCBjb25zdCBNZW1vcnlDb21wYWN0TG9va3Vw
T25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIFJlc291cgog
ICAgICAgICB7ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBzdGQ6Om1ha2VfcGFp
cjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUbywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1
ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpIH0sCiAgICAgICAgIHsgIlN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSwg
c3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKSkgfSwKICAgICAgICAgeyAiT3BlcmF0aW5nRGF0ZXMi
X3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVP
cGVyYXRpbmdEYXRlcywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVu
aXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMpKSB9LAotICAgIH0pOwotICAgIAorICAgIH07CiAgICAg
cmV0dXJuIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJh
c2UuY3BwCmluZGV4IDdhMmM4NTBkMTk2YjNmNmU3NTI5ZjIxYzJmMGFjMTNlZDM4ZmE2NGYuLjkw
MzAyMmZhMGY5MjU5YzhlNzQwNjkwNTEyMzU0YWQ1YzRjOTJiYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFi
YXNlLmNwcApAQCAtMTAwLDExICsxMDAsMTEgQEAgRGF0YWJhc2U6On5EYXRhYmFzZSgpCiAKIGNv
bnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxl
QW5kSW5kZXhQYWlyPiYgRGF0YWJhc2U6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKQog
ewotICAgIHN0YXRpYyBhdXRvIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmlu
ZywgVGFibGVBbmRJbmRleFBhaXI+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZXhwZWN0
ZWRUYWJsZUFuZEluZGV4UXVlcmllcyA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiB7CiAgICAgICAgIHsgIlBDTU9ic2Vy
dmVkRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4+KGNyZWF0ZVBDTU9ic2VydmVkRG9tYWluLCBzdGQ6Om51bGxvcHQpIH0sCiAgICAgICAgIHsg
IlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxT
dHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVV
bmlxdWVJbmRleFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSkgfSwKICAgICAg
ICAgeyAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zLCBzdGQ6Om1ha2VfcGFp
cjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRl
VW5pcXVlSW5kZXhBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpKSB9LAotICAgIH0p
OworICAgIH07CiAKICAgICByZXR1cm4gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllczsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2Vy
Q2hlY2tzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJD
aGVja3MubW0KaW5kZXggMTViYjQ2NWUwZjljMjE4Y2MxYTQ2NmJmN2Q5OTM0NWNlZDA4NTBjNy4u
YTgyY2E2ZDc3Y2U5ODcyOTkwNWYwMDEzYWE3YjdhYTEzNGJlNjViOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KQEAg
LTU1LDkgKzU1LDkgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNUZXN0aW5nKGNvbnMKICAgICBpZiAoYnVuZGxlSUQu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGF0aWMgYXV0
byBhcHBCb3VuZERvbWFpbkxpc3QgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFjdExv
b2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBhcHBCb3VuZERvbWFpbkxp
c3QgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiB7CiAgICAgICAgIHsiaW5BcHBCcm93c2Vy
UHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IHsgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdp
c3RyYWJsZURvbWFpblN0cmluZygiMTI3LjAuMC4xIikgfX0sCi0gICAgfSk7CisgICAgfTsKIAog
ICAgIGF1dG8gYXBwQm91bmREb21haW5JdGVyID0gYXBwQm91bmREb21haW5MaXN0LT5maW5kKGJ1
bmRsZUlEKTsKICAgICBpZiAoYXBwQm91bmREb21haW5JdGVyICE9IGFwcEJvdW5kRG9tYWluTGlz
dC0+ZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94
RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0
ZW5zaW9uQ29jb2EubW0KaW5kZXggYWMyZTM0Nzk5N2RmOTI0Yjk3NjUxMjAyZDc5YTFlZDdkOWYx
YTYxZS4uZWNjOWI5ODhjYzM5ZWU4OTIzMDc3OWRkNTNjMmVhMGMxMDg2ZmQ5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpA
QCAtMjE5LDcgKzIxOSw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0
aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlCiAgICAgSGFuZGxlIGhh
bmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwogCi0gICAgaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUocGF0
aC51dGY4KCkuZGF0YSgpLCB0eXBlLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246OkZs
YWdzOjpEb05vdENhbm9uaWNhbGl6ZSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUocGF0aC51dGY4KCkuZGF0YSgpLCB0eXBlLCBz
dGQ6Om51bGxvcHQsIEZsYWdzOjpEb05vdENhbm9uaWNhbGl6ZSk7CiAgICAgaWYgKCFoYW5kbGUu
bV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0
ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZvciAnJXMnIiwgcGF0aC51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIzMiwyMSArMjMyLDIxIEBAIGF1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgVHlwZSB0eXBl
KSAtPiBzdGQ6Om9wdGlvCiAgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQ
YXRoKHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihwYXRoKSwgdHlwZSk7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+IGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoY29uc3QgVmVjdG9yPFQ+JiByZXNvdXJjZXMs
IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPihjb25zdCBU
Jik+JiYgY3JlYXRlRnVuY3Rpb24pCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uLCB0eXBl
bmFtZSBGdW5jdGlvbj4gc3RhdGljIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNy
ZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoY29uc3QgQ29sbGVjdGlvbiYgcmVzb3VyY2VzLCBjb25z
dCBGdW5jdGlvbiYgY3JlYXRlRnVuY3Rpb24pCiB7CiAgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4gaGFuZGxlQXJyYXk7CisgICAgaGFuZGxlQXJyYXkucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzdGQ6OnNpemUocmVzb3VyY2VzKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiByZXNv
dXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBjcmVhdGVGdW5j
dGlvbihyZXNvdXJjZSkpCi0gICAgICAgICAgICBoYW5kbGVBcnJheS5hcHBlbmQoV1RGTW92ZSgq
aGFuZGxlKSk7CisgICAgICAgICAgICBoYW5kbGVBcnJheS51bmNoZWNrZWRBcHBlbmQoV1RGTW92
ZSgqaGFuZGxlKSk7CiAgICAgfQogICAgIHJldHVybiBoYW5kbGVBcnJheTsKIH0KIAogYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVSZWFkT25seUhhbmRsZXNGb3JGaWxlcyhBU0NJSUxpdGVy
YWwgbG9nTGFiZWwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykgLT4gVmVjdG9yPEhhbmRs
ZT4KIHsKLSAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlczxTdHJpbmc+KHBhdGhz
LCBbJmxvZ0xhYmVsXSAoY29uc3QgU3RyaW5nJiBwYXRoKSB7Ci0gICAgICAgIGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRPbmx5KTsKKyAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhw
YXRocywgWyZsb2dMYWJlbF0gKGNvbnN0IFN0cmluZyYgcGF0aCkgeworICAgICAgICBhdXRvIGhh
bmRsZSA9IGNyZWF0ZUhhbmRsZShwYXRoLCBUeXBlOjpSZWFkT25seSk7CiAgICAgICAgIGlmICgh
aGFuZGxlKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGNhbiBsZWdpdGltYXRlbHkgZmFpbCBpZiBh
IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBmaWxlIGlzIGRlbGV0ZWQgYWZ0ZXIgdGhlIGZpbGUg
d2FzIGNob3Nlbi4KICAgICAgICAgICAgIC8vIFdlIGFsc28gaGF2ZSByZXBvcnRzIG9mIGNhc2Vz
IHdoZXJlIHRoaXMgbGlrZWx5IGZhaWxzIGZvciBzb21lIHVua25vd24gcmVhc29uLCA8cmRhcjov
L3Byb2JsZW0vMTAxNTY3MTA+LgpAQCAtMjYyLDcgKzI2Miw3IEBAIGF1dG8gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCkgLT4KICAgICBTdHJpbmcgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0
ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24ocGF0aCk7CiAgICAgaWYgKHJlc29sdmVkUGF0
aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZWRQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUpOworICAgIHJldHVybiBjcmVh
dGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFR5cGU6OlJlYWRXcml0
ZSk7CiB9CiAKIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5
RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgVHlwZSB0eXBlKSAtPiBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+CkBAIC0zMjMsMTUgKzMyMywyMCBAQCBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZp
Y2UsIHN0ZDo6b3B0aQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoY29uc3QgVmVjdG9yPEFT
Q0lJTGl0ZXJhbD4mIHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0
VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CithdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVND
SUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRv
a2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgogewotICAgIHJl
dHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzPEFTQ0lJTGl0ZXJhbD4oc2VydmljZXMsIFth
dWRpdFRva2VuLCBmbGFnc10gKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgc2VydmljZSkgLT4gc3RkOjpv
cHRpb25hbDxIYW5kbGU+IHsKLSAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1ZGl0VG9rZW4sIGZsYWdzKTsK
KyAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhzZXJ2aWNlcywgW2F1ZGl0VG9r
ZW4sIGZsYWdzXSAoQVNDSUlMaXRlcmFsIHNlcnZpY2UpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PiB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2
aWNlLCBhdWRpdFRva2VuLCBmbGFncyk7CiAgICAgICAgIEFTU0VSVChoYW5kbGUpOwogICAgICAg
ICByZXR1cm4gaGFuZGxlOwogICAgIH0pOwogfQogCithdXRvIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJ
SUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9r
ZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+Cit7CisgICAgcmV0
dXJuIGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBz
ZXJ2aWNlcy5zaXplKCkgfSwgYXVkaXRUb2tlbiwgZmxhZ3MpOworfQorCiBhdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBw
YXRoLCBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW4pIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgog
ewogICAgIEhhbmRsZSBoYW5kbGU7CkBAIC0zNjAsMTAgKzM2NSwxMCBAQCBhdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFs
IGlvS2l0Q2xhcwogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKGNvbnN0IFZl
Y3RvcjxBU0NJSUxpdGVyYWw+JiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRs
ZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRl
bnNpb25zKFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBpb2tpdENsYXNzZXMsIHN0ZDo6b3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4g
VmVjdG9yPEhhbmRsZT4KIHsKLSAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlczxB
U0NJSUxpdGVyYWw+KGlva2l0Q2xhc3NlcywgW2F1ZGl0VG9rZW4sIGZsYWdzXSAoY29uc3QgQVND
SUlMaXRlcmFsJiBpb2tpdENsYXNzKSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihpb2tpdENsYXNzLCBh
dWRpdFRva2VuLCBmbGFncyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMo
aW9raXRDbGFzc2VzLCBbYXVkaXRUb2tlbiwgZmxhZ3NdIChBU0NJSUxpdGVyYWwgaW9raXRDbGFz
cykgeworICAgICAgICBhdXRvIGhhbmRsZSA9IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRl
bnNpb24oaW9raXRDbGFzcywgYXVkaXRUb2tlbiwgZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFu
ZGxlKTsKICAgICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9KTsKQEAgLTQzNSw3ICs0NDAsNyBA
QCBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBWZWN0b3I8
SGFuZGxlPiYgaGFuZGxlQXJyYXkpCiAgICAgICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVu
c2lvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGJvb2wgb2sgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKKyAgICAgICAgYm9vbCBvayA9
IGNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwogICAgICAgICBBU1NFUlQob2spOwogICAgICAg
ICBhbGxTdWNjZWVkZWQgJj0gb2s7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4
dGVuc2lvbi5oCmluZGV4IDRjYjViZTcxMDA5NGI3MGQ5NWE3ODkzYTg1YzczMzEyNDgzYTEzODUu
LjVkZGEzMGNkN2Y2MTc5ZjgzOGM5MGRjMmFmNTc4M2JhNTIxZTZlOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKQEAgLTkyLDEwICs5MiwxMSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0
ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBleHRlbnNpb25DbGFzcyk7CiAjaWYgSEFWRShBVURJVF9UT0tF
TikKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4s
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVy
YWw+JiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZs
YWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBz
dGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRl
ZmF1bHQpOworICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExv
b2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZv
clJlYWRCeUF1ZGl0VG9rZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBhdWRpdF90b2tlbl90KTsKICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NF
eHRlbnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIFZl
Y3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhjb25zdCBW
ZWN0b3I8QVNDSUlMaXRlcmFsPiYgaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOworICAgIHN0YXRpYyBW
ZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoU3Bhbjxj
b25zdCBBU0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tl
bl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICNlbmRpZgogICAgIH5T
YW5kYm94RXh0ZW5zaW9uKCk7CiAKQEAgLTExNywxOCArMTE4LDIzIEBAIHByaXZhdGU6CiAjZW5k
aWYKIH07CiAKK1N0cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCk7CitTdHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgcGF0aCk7CitTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9y
eUZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKKwogI2lmICFFTkFCTEUo
U0FOREJPWF9FWFRFTlNJT05TKQorCiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpI
YW5kbGUoKSB7IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5kbGUoKSB7
IH0KIGlubGluZSB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5j
b2RlciYpIGNvbnN0IHsgfQotaW5saW5lIHN0ZDo6b3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImKSB7
IHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgeyB9OyB9CitpbmxpbmUgc3RkOjpvcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYpIHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKEhhbmRsZSYmKSB7
IHJldHVybiBudWxscHRyOyB9CiBpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0
dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJl
YWRPbmx5SGFuZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
KSAtPiBWZWN0b3I8SGFuZGxlPiB7IHJldHVybiB7IH07IH0KIGlubGluZSBhdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYs
IFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5kbGUgeyB9OyB9CiBp
bmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhh
bmRsZSB7IH07IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
clRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiAvKnByZWZpeCovLCBUeXBlKSAtPiBzdGQ6Om9w
dGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4geyBzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+IHsg
SGFuZGxlIHsgfSwgU3RyaW5nIHsgfSB9IH07IH0KLWlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIC8qZXh0ZW5z
aW9uQ2xhc3MqLykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07
IH0KK2lubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFu
ZGxlLCBTdHJpbmc+PiB7IHJldHVybiBzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+IHsgfTsgfQor
aW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVu
c2lvbihBU0NJSUxpdGVyYWwpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7IHJldHVybiBIYW5k
bGUgeyB9OyB9CiBpbmxpbmUgU2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRlbnNpb24oKSB7
IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OnJldm9rZSgpIHsgcmV0dXJuIHRydWU7
IH0KIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWUoKSB7IHJldHVybiB0cnVl
OyB9CkBAIC0xMzgsMTAgKzE0NCw3IEBAIGlubGluZSBib29sIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseShjb25zdCBWZWN0b3I8SGFuZGxlPiYpIHsgcmV0dXJuCiBpbmxpbmUg
U3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY29uc3QgU3RyaW5nJiBwYXRo
KSB7IHJldHVybiBwYXRoOyB9CiBpbmxpbmUgU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7IH0KIGlubGluZSBTdHJp
bmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBwYXRoKSB7IHJldHVybiBwYXRoOyB9Ci0jZWxzZQotU3RyaW5nIHN0cmlu
Z0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmluZyBy
ZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKLVN0cmlu
ZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIHBhdGgpOworCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGNhMzU3YWRlODgxMmIxZTJhZDdiZDQzMzMxMWM3MDQ1MmQ0OGRhNzUuLjcxNzEwMzY0Mjk2YmU3
NDJhODMxMmZjMDA4MzZmZjlhOGY1OTY4OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBAIC04NSwxMSArODUsMTEgQEAgc3RhdGljIGJv
b2wgc2hvdWxkQ3JlYXRlQXBwbGVDYW1lcmFTZXJ2aWNlU2FuZGJveEV4dGVuc2lvbigpCiBzdGF0
aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIG5vbkJyb3dzZXJTZXJ2aWNlcygpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2Vydmlj
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPEFTQ0lJTGl0ZXJhbD4geworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZCBzZXJ2aWNlcyA9IFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKICAgICAg
ICAgImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsCiAgICAgICAgICJjb20uYXBwbGUuUG93ZXJN
YW5hZ2VtZW50LmNvbnRyb2wiX3MsCiAgICAgICAgICJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0
ZW1hcHBzZXJ2aWNlcyJfcwotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIHNlcnZpY2VzOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAx
MjBiOTA0ODcyYmRmMjg4MDE3ZTc3MDhjNjMyN2U1NTZhZTRkMjU3Li4zMWNlZGJlZmE2NjExMTEy
ZjJhYmMyNjM2MGE1MjkwOWE4ZDM0MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTMxNCw5ICszMTQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSGlnaGxp
Z2h0VmlzaWJpbGl0eS5oPgogI2VuZGlmCiAKLS8vIFRoaXMgY29udHJvbHMgd2hhdCBzdHJhdGVn
eSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCi0jZGVmaW5lIE1FUkdFX1dIRUVM
X0VWRU5UUyAxCi0KICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhwcm9jZXNzLCBhc3NlcnRpb24pIE1F
U1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MtPmNvbm5lY3Rpb24oKSkKICNkZWZp
bmUgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgdXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UoY2hl
Y2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgdXJs
KSwgcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQogI2RlZmluZSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJ
T04ocHJvY2VzcywgYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJ
T05fQkFTRShhc3NlcnRpb24sIHByb2Nlc3MtPmNvbm5lY3Rpb24oKSwgY29tcGxldGlvbikKQEAg
LTgwNDksMjMgKzgwNDYsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclBy
b2Nlc3NFeGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHRlcm1pbmEKIH0KIAogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpICYmIFBMQVRGT1JNKENPQ09BKQotc3RhdGljIGNvbnN0
IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBhdHRhY2htZW50RWxlbWVudFNlcnZpY2VzKCkKK3N0YXRp
YyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYXR0YWNobWVudEVsZW1lbnRTZXJ2aWNlcygpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2VydmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVj
dG9yPEFTQ0lJTGl0ZXJhbD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBzZXJ2
aWNlcyB7CiAgICAgICAgICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLAogI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUiX3MsCiAjZW5kaWYK
LSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGdwdUlP
S2l0Q2xhc3NlcygpCitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGdwdUlPS2l0Q2xh
c3NlcygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgc3RhdGljIGNvbnN0
IGF1dG8gc2VydmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPEFTQ0lJTGl0ZXJhbD4g
eworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBzZXJ2aWNlcyB7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAgICAgIkFHWERldmljZVVzZXJDbGllbnQiX3MsCiAgICAgICAg
ICJJT0dQVSJfcywKQEAgLTgwODYsMzMgKzgwODIsMzIgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxB
U0NJSUxpdGVyYWw+JiBncHVJT0tpdENsYXNzZXMoKQogICAgICAgICAiSU9BdWRpb0VuZ2luZVVz
ZXJDbGllbnQiX3MsCiAgICAgICAgICJJT1N1cmZhY2VSb290VXNlckNsaWVudCJfcywKICNlbmRp
ZgorICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBhbHNvIG5lZWRlZCBpbiBQTEFURk9STShNQUND
QVRBTFlTVCk/CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBDUFUoQVJNNjQpCiAgICAgICAgICJJT01v
YmlsZUZyYW1lYnVmZmVyVXNlckNsaWVudCJfcywKICNlbmRpZgotI2lmIFBMQVRGT1JNKE1BQykg
JiYgQ1BVKEFSTTY0KSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIChQTEFURk9STShNQUMp
ICYmIENQVShBUk02NCkpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgICJJT1N1cmZh
Y2VBY2NlbGVyYXRvckNsaWVudCJfcywKICNlbmRpZgotICAgIH0pOworICAgIH07CiAgICAgcmV0
dXJuIHNlcnZpY2VzOwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGdw
dU1hY2hTZXJ2aWNlcygpCitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGdwdU1hY2hT
ZXJ2aWNlcygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgc3RhdGljIGNv
bnN0IGF1dG8gc2VydmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPEFTQ0lJTGl0ZXJh
bD4geworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBzZXJ2aWNlcyB7CiAgICAgICAg
ICJjb20uYXBwbGUuTVRMQ29tcGlsZXJTZXJ2aWNlIl9zLAogI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgICAgICJjb20uYXBwbGUuY3Ztc1NlcnYiX3MsCiAj
ZW5kaWYKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0KIAogLy8gRklY
TUUoMjA3NzE2KTogVGhlIGZvbGxvd2luZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRoZSBHUFUg
cHJvY2VzcyBpcyBjb21wbGV0ZS4KLXN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYg
bWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCkKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gbWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluUnVuTG9v
cCgpKTsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBzZXJ2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3ll
ZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5
IHNlcnZpY2VzIHsKICAgICAgICAgImNvbS5hcHBsZS5hdWRpby5BdWRpb0NvbXBvbmVudFByZWZz
Il9zLCAiY29tLmFwcGxlLmF1ZGlvLkF1ZGlvQ29tcG9uZW50UmVnaXN0cmFyIl9zLAogICAgICAg
ICAiY29tLmFwcGxlLmF1ZGlvLkF1ZGlvUXVldWVTZXJ2ZXIiX3MsICJjb20uYXBwbGUuY29yZW1l
ZGlhLmVuZHBvaW50LnhwYyJfcywKICAgICAgICAgImNvbS5hcHBsZS5jb3JlbWVkaWEucm91dGVk
aXNjb3ZlcmVyLnhwYyJfcywgImNvbS5hcHBsZS5jb3JlbWVkaWEucm91dGluZ2NvbnRleHQueHBj
Il9zLApAQCAtODE0MCwyNCArODEzNSwyNSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0
ZXJhbD4mIG1lZGlhUmVsYXRlZE1hY2hTZXJ2aWNlcygpCiAgICAgICAgICJjb20uYXBwbGUuYXVk
aW8uYXVkaW9oYWxkIl9zLCAiY29tLmFwcGxlLmF1ZGlvLlNhbmRib3hIZWxwZXIiX3MsICJjb20u
YXBwbGUuY29yZW1lZGlhLmVuZHBvaW50c3RyZWFtLnhwYyJfcywgImNvbS5hcHBsZS5jb3JlbWVk
aWEuZW5kcG9pbnRwbGF5YmFja3Nlc3Npb24ueHBjIl9zLAogICAgICAgICAiY29tLmFwcGxlLmNv
cmVtZWRpYS5lbmRwb2ludHJlbW90ZWNvbnRyb2xzZXNzaW9uLnhwYyJfcywgImNvbS5hcHBsZS5j
b3JlbWVkaWEudmlkZW9kZWNvZGVyIl9zLAogICAgICAgICAiY29tLmFwcGxlLmNvcmVtZWRpYS52
aWRlb2VuY29kZXIiX3MsICJjb20uYXBwbGUubHNrZGQiX3MsICJjb20uYXBwbGUudHJ1c3RkLmFn
ZW50Il9zLAorI2VuZGlmCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlzIGFsc28gbmVlZGVkIGlu
IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKT8KICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMjAwMDAKICAgICAgICAgImNvbS5hcHBsZS5jb3JlbWVk
aWEuc2FtcGxlYnVmZmVyY29uc3VtZXIueHBjIl9zLAogI2VuZGlmCi0jZW5kaWYKLSAgICB9KTsK
KyAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3RvcjxB
U0NJSUxpdGVyYWw+JiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKQorc3RhdGljIFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBtZWRpYVJlbGF0ZWRJT0tpdENsYXNzZXMoKQogewotICAgIHN0YXRp
YyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxp
dGVyYWw+IHsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotI2lm
IENQVShBUk02NCkKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlc1td
IHsKKyNpZiAoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkpICYmIENQVShB
Uk02NCkKICAgICAgICAgIkFwcGxlQVZEVXNlckNsaWVudCJfcywKICNlbmRpZgorI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgICAgICJSb290RG9tYWluVXNl
ckNsaWVudCJfcywKICNlbmRpZgotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIHNlcnZpY2Vz
OwogfQogI2VuZGlmCkBAIC0xMTA1NSw0ICsxMTA1MSwzIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0Q29va2llQ29uc2VudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENvb2tpZUNvbnNlbnRE
ZWNpCiAjdW5kZWYgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCiAjdW5kZWYgTUVTU0FHRV9DSEVD
S19VUkwKICN1bmRlZiBNRVNTQUdFX0NIRUNLCi0jdW5kZWYgTUVSR0VfV0hFRUxfRVZFTlRTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVGV4dENoZWNrZXJJT1MubW0KaW5kZXggMDQ3
MzVkZGRiZTEyZWNlZTViNWNiM2U4MzY4OTdkNDhiZDBhOWY0NS4uN2FmYTZhMzE5NzlhZWI1MTc1
N2FjZDZhMTE2NDQ3MjE5ZThjMGVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1RleHRDaGVja2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9UZXh0Q2hlY2tlcklPUy5tbQpAQCAtNDEsMTIgKzQxLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBzdGF0aWMgVGV4dENoZWNrZXJTdGF0ZSYgbXV0YWJsZVN0YXRlKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4dENoZWNrZXJTdGF0ZT4gc3RhdGUgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBzdGF0ZSA9IFtdIHsK
ICAgICAgICAgVGV4dENoZWNrZXJTdGF0ZSBpbml0aWFsU3RhdGU7CiAgICAgICAgIGluaXRpYWxT
dGF0ZS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCA9IFRleHRDaGVja2VyOjppc0Nv
bnRpbnVvdXNTcGVsbENoZWNraW5nQWxsb3dlZCgpOwogICAgICAgICBpbml0aWFsU3RhdGUuaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBpbml0aWFsU3Rh
dGU7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCAxMmYzYTE1YTQzYjhhYzRkMTUxZmYzMDNjM2M1Zjc3ZDEzNTMwY2JlLi40M2Y5
OWIwYzAzNDBlMDRhNTE2YjUyN2RjMGUyYzIwZGE3MzBmZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTM0MzEsMjEgKzM0MzEsMjEgQEAgLSAoTlNBcnJheSAqKXN1cHBvcnRlZFBhc3RlYm9hcmRUeXBl
c0ZvckN1cnJlbnRTZWxlY3Rpb24KICAgICBpZiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuc2VsZWN0
aW9uSXNOb25lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgc3RhdGljIGF1dG8gcGxhaW5U
ZXh0VHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZCBwbGFpblRleHRUeXBlcyA9IFtdIHsKICAgICAgICAgYXV0byBwbGFpblRleHRUeXBlcyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3BsYWluVGV4dFR5cGVzIGFkZE9iamVjdDoo
aWQpa1VUVHlwZVVSTF07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAg
ICAgW3BsYWluVGV4dFR5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6VUlQYXN0ZWJvYXJkVHlwZUxp
c3RTdHJpbmddOwogICAgICAgICByZXR1cm4gcGxhaW5UZXh0VHlwZXM7Ci0gICAgfSgpKTsKLSAg
ICBzdGF0aWMgYXV0byByaWNoVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0o
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgcmljaFR5cGVzID0gW10gewogICAgICAgICBh
dXRvIHJpY2hUeXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwog
ICAgICAgICBbcmljaFR5cGVzIGFkZE9iamVjdDpXZWJDb3JlOjpXZWJBcmNoaXZlUGJvYXJkVHlw
ZV07CiAgICAgICAgIFtyaWNoVHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpVSVBhc3RlYm9hcmRU
eXBlTGlzdEltYWdlXTsKICAgICAgICAgW3JpY2hUeXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OnBs
YWluVGV4dFR5cGVzLmdldCgpLmdldCgpXTsKICAgICAgICAgcmV0dXJuIHJpY2hUeXBlczsKLSAg
ICB9KCkpOworICAgIH0oKTsKIAogICAgIHJldHVybiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaXND
b250ZW50UmljaGx5RWRpdGFibGUpID8gcmljaFR5cGVzLmdldCgpLmdldCgpIDogcGxhaW5UZXh0
VHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVGV4dENoZWNrZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4
dENoZWNrZXJNYWMubW0KaW5kZXggNGNjMjJkZjAzMDgyNTBiZTI1MDYxNjIxMmM1ODAzMDdlMjAz
MTAyMi4uMTZkNjgzOGU1NDhlMDQzMmZiZDE4ZjhkNGQyYWRlMWMyYzEwOGY2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQpAQCAtODksNyArODks
NyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uQmVFbmFibGVk
KCkKIAogc3RhdGljIFRleHRDaGVja2VyU3RhdGUmIG11dGFibGVTdGF0ZSgpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFRleHRDaGVja2VyU3RhdGU+IHN0YXRlID0gbWFrZU5ldmVyRGVz
dHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3RhdGUgPSBbXSB7CiAgICAg
ICAgIFRleHRDaGVja2VyU3RhdGUgaW5pdGlhbFN0YXRlOwogICAgICAgICBpbml0aWFsU3RhdGUu
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldlYkNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZF0gJiYgVGV4dENoZWNrZXI6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdBbGxvd2VkKCk7
CiAgICAgICAgIGluaXRpYWxTdGF0ZS5pc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQgPSBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldlYkdyYW1tYXJDaGVj
a2luZ0VuYWJsZWRdOwpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgVGV4dENoZWNrZXJTdGF0ZSYg
bXV0YWJsZVN0YXRlKCkKICAgICAgICAgaW5pdGlhbFN0YXRlLmlzQXV0b21hdGljRGFzaFN1YnN0
aXR1dGlvbkVuYWJsZWQgPSBzaG91bGRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uQmVFbmFibGVk
KCk7CiAgICAgICAgIGluaXRpYWxTdGF0ZS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpXZWJB
dXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZF07CiAgICAgICAgIHJldHVybiBpbml0aWFsU3Rh
dGU7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBiNGNlYWVl
NjczOWMwMzU0MTViZTI4MmRjNGI5Njg0NWNmMWVhNzkwLi5hNmY4ZmNhOWI2NjliYzBhNTcwN2Iy
MzE4MGFkYzE1ZjZmMmE3Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KQEAgLTQxNywxNiArNDE3LDE0IEBAIENBTGF5ZXIgKldlYlBhZ2VQ
cm94eTo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAKIHN0YXRpYyBO
U1N0cmluZyAqdGVtcG9yYXJ5UERGRGlyZWN0b3J5UGF0aCgpCiB7Ci0gICAgc3RhdGljIGF1dG8g
dGVtcG9yYXJ5UERGRGlyZWN0b3J5UGF0aCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAg
ICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEaXJlY3RvcnlUZW1wbGF0ZSA9IFtOU1RlbXBvcmFyeURp
cmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdFBERnMtWFhY
WFhYIl07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHBhdGggPSBbXSB7CisgICAgICAgIGF1
dG8gdGVtcG9yYXJ5RGlyZWN0b3J5VGVtcGxhdGUgPSBbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXRQREZzLVhYWFhYWCJdOwogICAg
ICAgICBDU3RyaW5nIHRlbXBsYXRlUmVwcmVzZW50YXRpb24gPSBbdGVtcG9yYXJ5RGlyZWN0b3J5
VGVtcGxhdGUgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXTsKLQogICAgICAgICBpZiAobWtkdGVt
cCh0ZW1wbGF0ZVJlcHJlc2VudGF0aW9uLm11dGFibGVEYXRhKCkpKQogICAgICAgICAgICAgcmV0
dXJuIGFkb3B0TlMoW1tbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gc3RyaW5nV2l0aEZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbjp0ZW1wbGF0ZVJlcHJlc2VudGF0aW9uLmRhdGEoKSBsZW5n
dGg6dGVtcGxhdGVSZXByZXNlbnRhdGlvbi5sZW5ndGgoKV0gY29weV0pOwogICAgICAgICByZXR1
cm4gUmV0YWluUHRyPGlkPiB7IH07Ci0gICAgfSgpKTsKLQotICAgIHJldHVybiB0ZW1wb3JhcnlQ
REZEaXJlY3RvcnlQYXRoLmdldCgpLmdldCgpOworICAgIH0oKTsKKyAgICByZXR1cm4gcGF0aC5n
ZXQoKS5nZXQoKTsKIH0KIAogc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QREZPbkRpc2soY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KaW5kZXggNzg4NTc3NDM4Nzc2ZjJh
OTc4NDA0ZGViZWZlZGIwNWNjMGFjZDQwZi4uZTViNDQ0YmZhNWMyODcyODM4N2M3MjMzMjgyOTFh
ODIwM2QxYjI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U1Bhc3RlYm9hcmRFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9X
ZWJOU1Bhc3RlYm9hcmRFeHRyYXMubW0KQEAgLTcxLDMyICs3MSwzMCBAQCArIChOU0FycmF5ICop
X3dlYl93cml0YWJsZVR5cGVzRm9yVVJMCiAgICAgcmV0dXJuIHR5cGVzOwogfQogCi1zdGF0aWMg
TlNBcnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlICh2b2lkKQorc3Rh
dGljIE5TQXJyYXkgKndyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNoaXZlKCkKIHsKLSAg
ICBzdGF0aWMgYXV0byB0eXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkIHR5cGVzID0gW10gewogICAgICAgICBhdXRvIHR5cGVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6bGVnYWN5VElGRlBhc3Rl
Ym9hcmRUeXBlKCksIG5pbF0pOwogICAgICAgICBbdHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpb
TlNQYXN0ZWJvYXJkIF93ZWJfd3JpdGFibGVUeXBlc0ZvclVSTF1dOwogICAgICAgICByZXR1cm4g
dHlwZXM7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgp
OwogfQogCi1zdGF0aWMgTlNBcnJheSAqX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZl
ICh2b2lkKQorc3RhdGljIE5TQXJyYXkgKndyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhBcmNoaXZl
KCkKIHsKLSAgICBzdGF0aWMgYXV0byB0eXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0g
ICAgICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtfd3JpdGFibGVUeXBlc0ZvckltYWdlV2l0aG91
dEFyY2hpdmUoKSBtdXRhYmxlQ29weV0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0eXBl
cyA9IFtdIHsKKyAgICAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW3dyaXRhYmxlVHlwZXNGb3JJ
bWFnZVdpdGhvdXRBcmNoaXZlKCkgbXV0YWJsZUNvcHldKTsKICAgICAgICAgW3R5cGVzIGFkZE9i
amVjdDpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAgIFt0eXBlcyBhZGRPYmpl
Y3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICByZXR1cm4gdHlwZXM7Ci0gICAgfSgp
KTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogCiArIChOU0Fy
cmF5ICopX3dlYl93cml0YWJsZVR5cGVzRm9ySW1hZ2VJbmNsdWRpbmdBcmNoaXZlOihCT09MKWhh
c0FyY2hpdmUKIHsKLSAgICByZXR1cm4gaGFzQXJjaGl2ZSAKLSAgICAgICAgPyBfd3JpdGFibGVU
eXBlc0ZvckltYWdlV2l0aEFyY2hpdmUoKQotICAgICAgICA6IF93cml0YWJsZVR5cGVzRm9ySW1h
Z2VXaXRob3V0QXJjaGl2ZSgpOworICAgIHJldHVybiBoYXNBcmNoaXZlID8gd3JpdGFibGVUeXBl
c0ZvckltYWdlV2l0aEFyY2hpdmUoKSA6IHdyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRBcmNo
aXZlKCk7CiB9CiAKICsgKE5TQXJyYXkgKilfd2ViX2RyYWdUeXBlc0ZvclVSTApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KaW5kZXggOTJhNzM3ZDNi
NTQwNWFiMzc2MDA3MWVhNTU2NDIxZTI4NTM2MTBkMS4uNTZlMTM2NzAzMDllMjlmMTc3MzlmODZm
NTU2YWVhNzYyOGQ2NTI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
Yk5TVVJMRXh0cmFzLm1tCkBAIC0yMjMsMTUgKzIyMywxNSBAQCAtKE5TUmFuZ2UpX3dlYmtpdF9y
YW5nZU9mVVJMU2NoZW1lCiAgICAgTlNSYW5nZSBjb2xvbiA9IFtzZWxmIHJhbmdlT2ZTdHJpbmc6
QCI6Il07CiAgICAgaWYgKGNvbG9uLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgY29sb24ubG9j
YXRpb24gPiAwKSB7CiAgICAgICAgIE5TUmFuZ2Ugc2NoZW1lID0gezAsIGNvbG9uLmxvY2F0aW9u
fTsKLSAgICAgICAgc3RhdGljIGF1dG8gaW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldCA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBpbnZlcnNl
U2NoZW1lQ2hhcmFjdGVyU2V0ID0gW10gewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICBU
aGlzIHN0dWZmIGlzIHZlcnkgZXhwZW5zaXZlLiAgMTAtMTUgbXNlYyBvbiBhIDJ4MS4yR0h6LiAg
SWYgbm90IGNhY2hlZCBpdCBzd2FtcHMKICAgICAgICAgICAgICBldmVyeXRoaW5nIGVsc2Ugd2hl
biBhZGRpbmcgaXRlbXMgdG8gdGhlIGF1dG9jb21wbGV0ZSBEQi4gIE1ha2VzIG1lIHdvbmRlciBp
ZiB3ZQogICAgICAgICAgICAgIGV2ZW4gbmVlZCB0byBlbmZvcmNlIHRoZSBjaGFyYWN0ZXIgc2V0
IGhlcmUuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAgTlNTdHJpbmcgKmFjY2VwdGFibGVD
aGFyYWN0ZXJzID0gQCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6MDEyMzQ1Njc4OSsuLSI7Ci0gICAgICAgICAgICByZXR1cm4gcmV0YWluUHRyKFtb
TlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0aENoYXJhY3RlcnNJblN0cmluZzphY2NlcHRh
YmxlQ2hhcmFjdGVyc10gaW52ZXJ0ZWRTZXRdKTsKLSAgICAgICAgfSgpKTsKKyAgICAgICAgICAg
IHJldHVybiBSZXRhaW5QdHIgeyBbW05TQ2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFy
YWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJsZUNoYXJhY3RlcnNdIGludmVydGVkU2V0XSB9OworICAg
ICAgICB9KCk7CiAgICAgICAgIE5TUmFuZ2UgaWxsZWdhbHMgPSBbc2VsZiByYW5nZU9mQ2hhcmFj
dGVyRnJvbVNldDppbnZlcnNlU2NoZW1lQ2hhcmFjdGVyU2V0LmdldCgpLmdldCgpIG9wdGlvbnM6
MCByYW5nZTpzY2hlbWVdOwogICAgICAgICBpZiAoaWxsZWdhbHMubG9jYXRpb24gPT0gTlNOb3RG
b3VuZCkKICAgICAgICAgICAgIHJldHVybiBzY2hlbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggODNlODU5MTQzNDVlYTdjYjg0
MWQ5OWZkMWZiNjY2ZDhjY2YwMzAyNi4uNWViNWQ2YTE5ZTZkOTFmY2IzYmZjODFjY2E5MWVjN2Uw
ZTU2YzQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQpAQCAtMjcwLDcgKzI3MCw3IEBAIC0gKHZvaWQpX3JldmVydFRvUHJvdmlzaW9u
YWxTdGF0ZQogCiArIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3JlcFR5cGVzQWxsb3dJbWFnZVR5
cGVPbWlzc2lvbjooQk9PTClhbGxvd0ltYWdlVHlwZU9taXNzaW9uCiB7Ci0gICAgc3RhdGljIGF1
dG8gcmVwVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZCByZXBUeXBlcyA9IFtdIHsKICAgICAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGFkZFR5cGVzRnJvbUNs
YXNzKHR5cGVzLmdldCgpLCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNsYXNzXSwgW1dlYkhUTUxS
ZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOwogICAgICAgICBhZGRU
eXBlc0Zyb21DbGFzcyh0eXBlcy5nZXQoKSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10s
IFtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdKTsKQEAgLTI4
Nyw3ICsyODcsNyBAQCArIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3JlcFR5cGVzQWxsb3dJbWFn
ZVR5cGVPbWlzc2lvbjooQk9PTClhbGxvd0ltYWdlVHlwZU9taQogI2VuZGlmCiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHN0YXRpYyBC
T09MIGFkZGVkSW1hZ2VUeXBlcyA9IE5POwogICAgIGlmICghYWRkZWRJbWFnZVR5cGVzICYmICFh
bGxvd0ltYWdlVHlwZU9taXNzaW9uKSB7CiAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNzKHJlcFR5
cGVzLmdldCgpLmdldCgpLCBbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNsYXNzXSwgW1dlYkhUTUxS
ZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc10pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCA3M2VmODZjYmVkYzY2
Y2I1NTI4YmE1Njk3YWVmMzU2NDViZDRkNDQ3Li5kYzNiNTAwZTU4YzM1MjZmNjhlNDQ4YmY4MjEx
OGRkMzUwOTkyOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lVmlldy5tbQpAQCAtMjQwLDcgKzI0MCw3IEBAIC0gKGZsb2F0KV92ZXJ0aWNhbFBhZ2VT
Y3JvbGxEaXN0YW5jZQogCiArIChOU011dGFibGVEaWN0aW9uYXJ5ICopX3ZpZXdUeXBlc0FsbG93
SW1hZ2VUeXBlT21pc3Npb246KEJPT0wpYWxsb3dJbWFnZVR5cGVPbWlzc2lvbgogewotICAgIHN0
YXRpYyBhdXRvIHZpZXdUeXBlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkIHZpZXdUeXBlcyA9IFtdIHsKICAgICAgICAgYXV0byB0eXBlcyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGFkZFR5
cGVzRnJvbUNsYXNzKHR5cGVzLmdldCgpLCBbV2ViSFRNTFZpZXcgY2xhc3NdLCBbV2ViSFRNTFZp
ZXcgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTsKICAgICAgICAgYWRkVHlwZXNGcm9tQ2xh
c3ModHlwZXMuZ2V0KCksIFtXZWJIVE1MVmlldyBjbGFzc10sIFtXZWJIVE1MVmlldyBzdXBwb3J0
ZWRNZWRpYU1JTUVUeXBlc10pOwpAQCAtMjU3LDcgKzI1Nyw3IEBAICsgKE5TTXV0YWJsZURpY3Rp
b25hcnkgKilfdmlld1R5cGVzQWxsb3dJbWFnZVR5cGVPbWlzc2lvbjooQk9PTClhbGxvd0ltYWdl
VHlwZU9tCiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHlwZXM7Ci0gICAgfSgp
KTsKKyAgICB9KCk7CiAgICAgc3RhdGljIEJPT0wgYWRkZWRJbWFnZVR5cGVzID0gTk87CiAgICAg
aWYgKCFhZGRlZEltYWdlVHlwZXMgJiYgIWFsbG93SW1hZ2VUeXBlT21pc3Npb24pIHsKICAgICAg
ICAgYWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLmdldCgpLmdldCgpLCBbV2ViSFRNTFZpZXcg
Y2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMjE5N2UxNWI2MWE0
ZTZhMTUyNzI3ZDQ2MmI3M2IxMTM4MzJlZDE5Li41OTk5ODY3YjY4NjdhMzA5ZTJhNjZiZGJkMTRk
ZWFkOWNiNGViMTkzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1hbnkgY2FsbCBzaXRlcyB1c2UgbWFrZU5ldmVyRGVzdHJv
eWVkLCBidXQgY291bGQgaW5zdGVhZCB0YWtlIGFkdmFudGFnZSBvZiB0aGUgTmV2ZXJEZXN0cm95
ZWQgZGVkdWN0aW9uIGd1aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAg
ICAgKGZvbnRBbGxvd0xpc3QpOiBVc2UgZGVkdWN0aW9uLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6IFJlbW92ZSB0ZXN0cyBvZiBtYWtlTmV2ZXJEZXN0cm95ZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpsaXN0KTogVXNlIGRlZHVjdGlvbi4KKwogMjAyMS0xMi0xNSAgRG9uIE9s
bXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFNwbGl0IEFUSyBzcGVj
aWZpYyBjb2RlIGluIFdQRVZpZXdCYWNrZW5kcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tCmluZGV4IGYzMzlhNDMzM2MwYTkwZjVhNGRlM2VlNmY3YzcwODZlNzYw
MThmYzUuLjBkOGVmZjA5YzFjYzI0OWRkM2M4MzM5MmVhODE5ZmNkMzZlMmVjOGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTQ1NCw3ICs0NTQsNyBA
QCBzdGF0aWMgTlNTZXQgKmFsbG93ZWRGb250RmFtaWx5U2V0KCkKIAogc3RhdGljIE5TQXJyYXkg
KmZvbnRBbGxvd0xpc3QoKQogewotICAgIHN0YXRpYyBhdXRvIGF2YWlsYWJsZUZvbnRzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYXZhaWxhYmxl
Rm9udHMgPSBbXSB7CiAgICAgICAgIGF1dG8gYXZhaWxhYmxlRm9udHMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgZm9yIChOU1N0cmluZyAqZm9udEZh
bWlseSBpbiBhbGxvd2VkRm9udEZhbWlseVNldCgpKSB7CiAgICAgICAgICAgICBOU0FycmF5KiBm
b250c0ZvckZhbWlseSA9IFtbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gYXZhaWxh
YmxlTWVtYmVyc09mRm9udEZhbWlseTpmb250RmFtaWx5XTsKQEAgLTQ2NSw3ICs0NjUsNyBAQCBz
dGF0aWMgTlNBcnJheSAqZm9udEFsbG93TGlzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRzOwotICAgIH0oKSk7CisgICAgfSgpOwogICAg
IHJldHVybiBhdmFpbGFibGVGb250cy5nZXQoKS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2ZXJEZXN0cm95ZWQuY3BwCmluZGV4IDAzOWJjMTFkYjAz
YjdhZTZlNWRmZTkzN2RkMjZjMWVjYjdkYmMzODUuLjliMDE5NDkxM2UxM2NmOWE2M2MzZGI3ZjQw
MDlkZDRmZGI5MzZjZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L05ldmVyRGVzdHJveWVkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9O
ZXZlckRlc3Ryb3llZC5jcHAKQEAgLTQwLDkgKzQwLDYgQEAgVEVTVChXVEZfTmV2ZXJEZXN0cm95
ZWQsIENvbnN0cnVjdCkKICAgICB7IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dn
ZXI+IHgoIm5hbWUiKTsgVU5VU0VEX1BBUkFNKHgpOyB9CiAgICAgQVNTRVJUX1NUUkVRKCJjb25z
dHJ1Y3QobmFtZSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCi0gICAgeyBzdGF0aWMgYXV0
byB4ID0gbWFrZU5ldmVyRGVzdHJveWVkKExpZmVjeWNsZUxvZ2dlciB7ICJuYW1lIiB9KTsgVU5V
U0VEX1BBUkFNKHgpOyB9Ci0gICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QobmFtZSkgbW92ZS1j
b25zdHJ1Y3QobmFtZSkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7Ci0KICAgICB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dn
ZXI+IHgoIm5hbWUiKTsKICAgICAgICAgTGlmZWN5Y2xlTG9nZ2VyIGwgPSB4LmdldCgpOwpAQCAt
NTQsMjAgKzUxLDYgQEAgVEVTVChXVEZfTmV2ZXJEZXN0cm95ZWQsIENvbnN0cnVjdCkKICAgICB7
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dnZXI+IHggeyBbXSB7IHJldHVybiBM
aWZlY3ljbGVMb2dnZXIgeyAibmFtZSIgfTsgfSgpIH07IFVOVVNFRF9QQVJBTSh4KTsgfQogICAg
IEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIG1vdmUtY29uc3RydWN0KG5hbWUpIGRlc3Ry
dWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCi0gICAgewotICAgICAg
ICBzdGF0aWMgYXV0byB4ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgICAgIExp
ZmVjeWNsZUxvZ2dlciBsIHsgIm5hbWUiIH07Ci0gICAgICAgICAgICBsLnNldE5hbWUoIngiKTsK
LSAgICAgICAgICAgIHJldHVybiBsOwotICAgICAgICB9KCkpOwotICAgICAgICBBU1NFUlRfU1RS
RVEoeC5nZXQoKS5uYW1lLCAieCIpOwotICAgIH0KLSNpZiBDT01QSUxFUihNU1ZDKSAmJiAhZGVm
aW5lZChOREVCVUcpCi0gICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QobmFtZSkgc2V0LW5hbWUo
eCkgbW92ZS1jb25zdHJ1Y3QoeCkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSBtb3ZlLWNvbnN0cnVjdCh4
KSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKLSNlbHNlCi0g
ICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3QobmFtZSkgc2V0LW5hbWUoeCkgbW92ZS1jb25zdHJ1
Y3QoeCkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Ci0jZW5k
aWYKLQogICAgIHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpZmVjeWNsZUxvZ2dl
cj4geDsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExpZmVjeWNsZUxvZ2dlcj4geSB7
IFdURk1vdmUoeCkgfTsKQEAgLTg0LDI1ICs2NywxMSBAQCBURVNUKFdURl9OZXZlckRlc3Ryb3ll
ZCwgQ29uc3RydWN0KQogCiAgICAgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW92ZU9ubHlMaWZl
Y3ljbGVMb2dnZXI+IHggeyBbXSB7IHJldHVybiBNb3ZlT25seUxpZmVjeWNsZUxvZ2dlciB7ICJu
YW1lIiB9OyB9KCkgfTsgVU5VU0VEX1BBUkFNKHgpOyB9CiAgICAgQVNTRVJUX1NUUkVRKCJjb25z
dHJ1Y3QobmFtZSkgbW92ZS1jb25zdHJ1Y3QobmFtZSkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7Ci0KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBhdXRvIHggPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICAgICAgTW92ZU9ubHlMaWZlY3ljbGVMb2dn
ZXIgbCB7ICJuYW1lIiB9OwotICAgICAgICAgICAgbC5zZXROYW1lKCJ4Iik7Ci0gICAgICAgICAg
ICByZXR1cm4gbDsKLSAgICAgICAgfSgpKTsKLSAgICAgICAgVU5VU0VEX1BBUkFNKHgpOwotICAg
IH0KLSNpZiBDT01QSUxFUihNU1ZDKSAmJiAhZGVmaW5lZChOREVCVUcpCi0gICAgQVNTRVJUX1NU
UkVRKCJjb25zdHJ1Y3QobmFtZSkgc2V0LW5hbWUoeCkgbW92ZS1jb25zdHJ1Y3QoeCkgZGVzdHJ1
Y3QoPGRlZmF1bHQ+KSBtb3ZlLWNvbnN0cnVjdCh4KSBkZXN0cnVjdCg8ZGVmYXVsdD4pICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKLSNlbHNlCi0gICAgQVNTRVJUX1NUUkVRKCJjb25zdHJ1Y3Qo
bmFtZSkgc2V0LW5hbWUoeCkgbW92ZS1jb25zdHJ1Y3QoeCkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IFZlY3Rv
cjxpbnQ+JiBsaXN0KCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byB4ID0gbWFrZU5ldmVyRGVz
dHJveWVkKFZlY3RvcjxpbnQ+IHsgMSwgMiwgMyB9KTsKKyAgICBzdGF0aWMgY29uc3QgTmV2ZXJE
ZXN0cm95ZWQgeCA9IFZlY3RvcjxpbnQ+IHsgMSwgMiwgMyB9OwogICAgIHJldHVybiB4OwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447298</attachid>
            <date>2021-12-15 16:43:15 -0800</date>
            <delta_ts>2021-12-15 17:04:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234350-20211215164315.patch</filename>
            <type>text/plain</type>
            <size>162221</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFkZTI5MzJmYmUyOTJkYjUxMmVlMTY0
MzRiNGQ4NWMyYTMzODlmYjUuLjZjNTRiZWNlM2U3ZDExYjA1YTI4NjkxMzhhNGMzZjYyYTE2N2Iw
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIE1hbnkgY2FsbCBzaXRlcyB1c2UgbWFrZU5ldmVyRGVzdHJv
eWVkLCBidXQgY291bGQgaW5zdGVhZCB0YWtlIGFkdmFudGFnZSBvZiB0aGUgTmV2ZXJEZXN0cm95
ZWQgZGVkdWN0aW9uIGd1aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9OZXZlckRlc3Ryb3llZC5oOgorICAgICAgICAoV1RGOjptYWtlTmV2
ZXJEZXN0cm95ZWQpOiBEZWxldGVkLgorCisgICAgICAgICogd3RmL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0
b3IpOiBVc2UgZGVkdWN0aW9uIGd1aWRlLgorCiAyMDIxLTEyLTE1ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEFkb3B0IC1bTlNTY3JlZW4gc2FmZUFy
ZWFJbnNldHNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzM3MmYwN2I3MTNlNDk3MDc4ZmZmZTJjZjdkZjgyMmYx
YTA2Njc5Yy4uY2NhYTk2NmEzMDMxNmMzM2MzMDMyYzk2MTdmMjE2MzcwN2VmMDg1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4MiBAQAorMjAyMS0xMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFueSBjYWxsIHNpdGVzIHVzZSBtYWtlTmV2ZXJEZXN0cm95
ZWQsIGJ1dCBjb3VsZCBpbnN0ZWFkIHRha2UgYWR2YW50YWdlIG9mIHRoZSBOZXZlckRlc3Ryb3ll
ZCBkZWR1Y3Rpb24gZ3VpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omluc3RhbGxlZENETUZhY3Rvcmllcyk6IFVzZSBOZXZlckRlc3Ry
b3llZCBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSBtYWtlTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Db21tYW5kRm9yTWVkaWFTZXNzaW9uQWN0aW9uKTogVXNlIFNvcnRlZEFy
cmF5TWFwLCBvYnZpYXRpbmcgdGhlIG5lZWQgZm9yCisgICAgICAgIGFueSB1c2Ugb2YgTmV2ZXJE
ZXN0cm95ZWQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUgY29uc3QpOiBVc2UgU3BhbiBpbnN0ZWFkIG9mCisg
ICAgICAgIFZlY3RvciwgYWxsb3dpbmcgdXMgdG8gdXNlIGNvbnN0ZXhwciBhcnJheXMgcmF0aGVy
IHRoYW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIGEgVmVjdG9yLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVO
YW1lc10pOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAg
ICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IERpdHRvLgorICAgICAgICAocHJpbnRXcmFwcGVy
RmFjdG9yeUNwcEZpbGUpOiBEaXR0by4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omh0bWxFbGVtZW50RXF1aXZhbGVudHMpOiBSZXR1cm4g
YSBTcGFuIGluc3RlYWQgb2YgYSBWZWN0b3ImLAorICAgICAgICBhbGxvd2luZyB1cyB0byB1c2Ug
Y29uc3QgYXJyYXlzIHJhdGhlciB0aGFuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBhIFZlY3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6Omh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cyk6IERpdHRvLgorCisg
ICAgICAgICogZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aXNFbGVtZW50Rm9yRm9ybWF0QmxvY2spOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGVk
aXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1l
bnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzUHJvaGliaXRl
ZFBhcmFncmFwaENoaWxkKTogVXNlIGRlZHVjdGlvbiwgYWxzbyBjaGFuZ2UgdGhlIHRhZ3MgYXJy
YXkKKyAgICAgICAgdG8gYmUgYSBjb25zdGV4cHIgYXJyYXkgc28gd2UgZG9uJ3QgaGF2ZSB0byB1
c2UgcmVhZC93cml0ZSBtZW1vcnkgZm9yIGl0LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tOgorICAgICAgICAoV2ViRGVmYXVsdEZvbnQpOiBVc2UgZGVkdWN0aW9u
LgorICAgICAgICAoZGVmYXVsdFBhcmFncmFwaFN0eWxlKTogRGl0dG8uCisgICAgICAgICogaHRt
bC9BdXRvZmlsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWVsZE5hbWVNYXApOiBEaXR0by4K
KworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxEb2N1bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKTogVXNlIGRlZHVjdGlvbiwgYWxz
byBjaGFuZ2UKKyAgICAgICAgdGhlIG5hbWVzIGFycmF5IHRvIGJlIGEgY29uc3RleHByIGFycmF5
IHNvIHdlIGRvbid0IGhhdmUgdG8gdXNlIHJlYWQvd3JpdGUgbWVtb3J5IGZvciBpdC4KKworICAg
ICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZSk6IFVzZSBzdGQ6OmFycmF5IGRl
ZHVjdGlvbgorICAgICAgICBzbyB3ZSBkb24ndCBoYXZlIHRvIHdyaXRlIG91dCB0aGUgTGF6eU5l
dmVyRGVzdHJveWVkIHR5cGUgaGVyZS4KKworICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1
cmUpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklucHV0VHlwZTo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxvY2tlZFBhZ2VVUkwpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvdWNoRXZlbnRSZWdpb25Db2xvcnMpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1Bl
cmZvcm1hbmNlVXNlclRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXN0cmljdGVkTWFy
a05hbWVzVG9OYXZpZ2F0aW9uVGltaW5nRnVuY3Rpb25NYXApOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZCk6IFVzZSBTcGFuIGluc3RlYWQgb2YgVmVjdG9yLCBhbGxvd2luZyB1cyB0byB1c2UgY29uc3Rl
eHByIGFycmF5cworICAgICAgICByYXRoZXIgdGhuYSBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgYSBW
ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjptYWtlTmV2ZXJEZXN0cm95ZWRTY2hlbWVTZXQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmFsbEJ1aWx0aW5TY2hlbWVzKTogRGl0dG8uIEFsc28g
dXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5Mb2NhbFVSTFNjaGVtZXMp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5TZWN1cmVTY2hlbWVzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNj
aGVtZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVt
ZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXMpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZ3hDb21w
aWxlclNlcnZpY2VzKTogVXNlIFNwYW4gaW5zdGVhZCBvZiBhIFZlY3RvciYsIGFsbG93aW5nIHVz
CisgICAgICAgIHRvIHVzZSBhIGNvbnN0ZXhwciBhcnJheSByYXRoZXIgdGhhbiBhbGxvY2F0aW5n
IG1lbW9yeSBmb3IgYSB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjphZ3hDb21waWxlckNsYXNz
ZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2Uu
aDogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXApOiBVc2Ug
ZGVkdWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUmVtb3RlQ29tbWFuZExpc3Rl
bmVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjptZWRpYVJlbW90ZUNvbW1hbmRGb3JQbGF0
Zm9ybUNvbW1hbmQpOiBVc2UgU29ydGVkQXJyYXlNYXAsIG92YnZpYXRpbmcgdGhlCisgICAgICAg
IG5lZWQgZm9yIGFueSB1c2Ugb2YgTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1tOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Om9ic2VydmVkRXZl
bnROYW1lcyk6IFJldHVybiBhIFNwYW4KKyAgICAgICAgaW5zdGVhZCBvZiBhIFZlY3RvciYsIGFs
bG93aW5nIHVzIHRvIHVzZSBhbiBhcnJheSByYXRoZXIgdGhhbiBhbGxvY2F0aW5nCisgICAgICAg
IG1lbW9yeSBmb3IgYSBWZWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcm94eUZhY3Rvcnk6OnJlZ2lz
dGVyZWRGYWN0b3JpZXMpOiBVc2UgZGVkdWN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXNlQmFja3NsYXNoQXNZ
ZW5TaWduRm9yRmFtaWx5KTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGggY29uc3QpOiBEaXR0by4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnN0YWxsZWRGYWN0b3JpZXMpOiBVc2UgTmV2ZXJEZXN0cm95ZWQgZGlyZWN0bHksIG5vdCBt
YWtlTmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXpl
Lmg6IEFkZGVkIGNvbnN0ZXhwciBzbyBtYW55IG9wZXJhdGlvbnMgY2FuIGJlIGRvbmUKKyAgICAg
ICAgYXQgY29tcGlsZSB0aW1lIGFzIG5lZWRlZDsgbWFpbmx5IHRoaXMgd2FzIHNvIHdlIGNhbiBt
YWtlIGEgY29uc3RleHByIGFycmF5IG9mCisgICAgICAgIHRoZXNlIHNpemVzLiBUaGlzIHNhbWUg
ZW5oYW5jZW1lbnQgY2FuIGJlIGFwcGxpZWQgdG8gb3RoZXIgdHlwZXMsIGJ1dCBqdXN0IGRpZAor
ICAgICAgICBpdCBoZXJlIGZvciBub3cuIEFsc28gZml4ZWQgcmV0dXJuIHZhbHVlcyBmb3IgbWlu
L21heERpbWVuc2lvbiB0aGF0IHdlcmUgYWNjaWRlbnRhbGx5CisgICAgICAgIHJldHVybmluZyBm
bG9hdCwgaHVydGluZyBwZXJmb3JtYW5jZSBiZWNhdXNlIG9mIHRoZSByb3VuZCB0cmlwIGludCB0
byBmbG9hdCwKKyAgICAgICAgYWxzbyBub3QgY2xlYW5seSByb3VuZCB0cmlwcGluZyB2ZXJ5IGxh
cmdlIGFuZCBzbWFsbCB2YWx1ZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c3RhdGljTUlNRVR5cGVMaXN0
KTogVXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVZGV3JhcHBlcjo6Y2hlY2tQbGF5YWJpbGl0eSk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKTogRGl0dG8uCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVm
YXVsdFN1cHBvcnRlZEltYWdlVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpt
YXRjaFN5c3RlbUZvbnRVc2UpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcldlYk06OndlYm1NSU1FVHlwZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZFZpZGVvQ29kZWNzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRBdWRp
b0NvZGVjcyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKTogRGl0dG8uCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0
ZXJzKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmYWN0b3Jp
ZXMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlk
ZW9DYXB0dXJlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlOjpzdGFuZGFyZFZpZGVvU2l6ZXMpOiBSZXR1cm4gYSBTcGFuCisgICAgICAgIGlu
c3RlYWQgb2YgYSBWZWN0b3ImIHNvIHdlIGNhbiB1c2UgYSBjb25zdGV4cHIgYXJyYXkgYW5kIGRv
bid0IG5lZWQgdG8KKyAgICAgICAgYWxsb2NhdGUgbWVtb3J5IG9yIHVzZSByZWFkL3dyaXRlIHN0
b3JhZ2UuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1
cmVTb3VyY2UuaDogRGl0dG8uIEFsc28gbWFrZQorICAgICAgICB0aGlzIGEgc3RhdGljIG1lbWJl
ciBmdW5jdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlcyk6IFVzZSBkZWR1Y3Rp
b24uCisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VNYXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjptaWNyb3Bob25lRGV2aWNlcyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNw
ZWFrZXJEZXZpY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlcjo6dmlkZW9EZXZpY2VzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6ZGlzcGxheURldmljZXMpOiBEaXR0by4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlQ2FjaGUpOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdGlvblF1ZXVlRm9yQXN5bmNDbGllbnRzKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW06CisgICAgICAgIChXZWJDb3Jl
Ojp0b2tlbml6ZXJGb3JTdHJpbmcpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6Y2FjaGVkU3lzdGVt
Rm9udERlc2NyaXB0aW9uIGNvbnN0KTogVXNlCisgICAgICAgIE5ldmVyRGVzdHJveWVkIGRpcmVj
dGx5IGluc3RlYWQgb2YgbWFrZU5ldmVyRGVzdHJveWVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDb2NvYTo6
Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uIGNvbnN0KTogRGl0dG8uCisKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRp
b25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZSk6IFVzZSBkZWR1Y3Rpb24uCisKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1
dGVOYW1lVG9DU1NQcm9wZXJ0eUlETWFwKTogVXNlIGEgY29uc3RleHByIGFycmF5CisgICAgICAg
IGluc3RlYWQgb2YgYSBjb25zdCBvbmUgdGhhdCBoYXMgdG8gYmUgaW5pdGlhbGl6ZWQgYXQgcnVu
dGltZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFuaW1hdGFibGVBdHRyaWJ1dGVG
b3JOYW1lKTogRGl0dG8sIGFsc28gdXNlIGRlZHVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKTogVXNlIGRlZHVjdGlv
bi4KKworICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogVXNlIGRl
ZHVjdGlvbi4KKyAgICAgICAgKiB4bWwvWFBhdGhGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WFBhdGg6OkZ1bmN0aW9uOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiB4bWwvWFBh
dGhQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OnBhcnNlQXhpc05hbWUpOiBE
aXR0by4KKwogMjAyMS0xMi0xNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbi11cDogQWRvcHQgUGFnZTo6Zm9yRWFjaERvY3VtZW50IGluIHNvbWUg
bWlzc2VkIHNwb3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNDM0MjMzMjkwNTFhZDMyYTczMDlhYzlhN2FhMGI0
NWM0YzE2MTcuLjI3YWVmNzhmZmZhNmMxMjgzYWFjZTFiNDdjYjVhMzI0NzRkYzNjMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIE1hbnkgY2FsbCBzaXRlcyB1c2UgbWFrZU5ldmVyRGVzdHJveWVk
LCBidXQgY291bGQgaW5zdGVhZCB0YWtlIGFkdmFudGFnZSBvZiB0aGUgTmV2ZXJEZXN0cm95ZWQg
ZGVkdWN0aW9uIGd1aWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzQzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6ZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcyk6CisgICAgICAg
IFVzZSBkZWR1Y3Rpb24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMpOiBEaXR0
by4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06Cisg
ICAgICAgIChXZWJLaXQ6OmdldEFwcEJvdW5kRG9tYWluc1Rlc3RpbmcpOiBEaXR0by4KKworICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OmNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMpOiBNYWtlIHRoaXMgbW9yZSBnZW5lcmlj
IHNvIGl0IHdvcmtzIHdpdGgKKyAgICAgICAgb3RoZXIga2luZHMgb2YgY29sbGVjdGlvbnMsIG5v
dCBqdXN0IFZlY3Rvci4gQWxzbyByaWdodC1zaXplIHRoZSBWZWN0b3IgdGhpcworICAgICAgICBy
ZXR1cm5zIHJhdGhlciB0aGFuIGxldHRpbmcgaXQgZ3JvdyBvcmdhbmljYWxseS4KKyAgICAgICAg
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKTogRGl0dG8uIEFsc28gdXBkYXRl
IHRoaXMKKyAgICAgICAgZnVuY3Rpb24gdG8gdGFrZSBhIFNwYW4gb3IgYW4gaW5pdGlhbGl6ZXJf
bGlzdCBpbnN0ZWFkIG9mIGEgVmVjdG9yLgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KTogRGl0dG8u
CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDogVXBkYXRlZCBmb3IgdGhlIGFi
b3ZlLiBBbHNvIGNvcnJlY3RlZCBzb21lIHVudXN1YWwKKyAgICAgICAgdXNlIG9mICNpZiB0byBz
aGFyZSBhIHNpbmdsZSBkZWNsYXJhdGlvbiBvZiBzb21lIGZ1bmN0aW9ucyBmb3IgYm90aCBlbmFi
bGVkCisgICAgICAgIGFuZCBkaXNhYmxlZCBTQU5EQk9YX0VYVEVOU0lPTlMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om5v
bkJyb3dzZXJTZXJ2aWNlcyk6IFVzZSBkZWR1Y3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDogUmVtb3ZlIHVudXNlZCBNRVJHRV9XSEVFTF9FVkVOVFMuCisgICAg
ICAgIChXZWJLaXQ6OmF0dGFjaG1lbnRFbGVtZW50U2VydmljZXMpOiBSZXR1cm4gYSBTcGFuLCBh
bGxvd2luZyB1cyB0byB1c2UgYQorICAgICAgICBjb25zdGV4cHIgb2J2aWF0aW5nIHRoZSBuZWVk
IGZvciBtZW1vcnkgYWxsb2NhdGlvbiBvciByZWFkL3dyaXRlIG1lbW9yeSwKKyAgICAgICAgKFdl
YktpdDo6Z3B1SU9LaXRDbGFzc2VzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OmdwdU1hY2hT
ZXJ2aWNlcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjptZWRpYVJlbGF0ZWRNYWNoU2Vydmlj
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6bWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKTog
RGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjptdXRhYmxlU3RhdGUpOiBVc2UgZGVkdWN0aW9uLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IHN1cHBvcnRlZFBhc3RlYm9hcmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb25dKTog
RGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6bXV0YWJsZVN0YXRlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OnRlbXBvcmFyeVBERkRpcmVj
dG9yeVBhdGgpOiBEaXR0by4KKwogMjAyMS0xMi0xNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBQcm94eVNlcnZlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDhjZTM2MzBjMmI4ZmUyMDJlNzk4ZjZlM2I0YWZjZTZm
YjBiNzMxY2UuLjQ0ZTk5ZWQzNzcyYzIxZWFmMDU3ZTliMzE5M2E2ZDE3NDQzYmE1MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMi0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFueSBjYWxsIHNpdGVzIHVz
ZSBtYWtlTmV2ZXJEZXN0cm95ZWQsIGJ1dCBjb3VsZCBpbnN0ZWFkIHRha2UgYWR2YW50YWdlIG9m
IHRoZSBOZXZlckRlc3Ryb3llZCBkZWR1Y3Rpb24gZ3VpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJOU1Bhc3RlYm9hcmRFeHRyYXMu
bW06CisgICAgICAgICh3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSk6IFVzZSBk
ZWR1Y3Rpb24uCisgICAgICAgICh3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSk6Cisg
ICAgICAgICogTWlzYy9XZWJOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dl
YmtpdF9yYW5nZU9mVVJMU2NoZW1lXSk6IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbToKKyAgICAgICAgKCtbV2ViRGF0YVNvdXJjZSBfcmVwVHlwZXNBbGxvd0ltYWdl
VHlwZU9taXNzaW9uOl0pOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5t
bToKKyAgICAgICAgKCtbV2ViRnJhbWVWaWV3IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNz
aW9uOl0pOiBEaXR0by4KKwogMjAyMS0xMi0xNCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9OZXZl
ckRlc3Ryb3llZC5oCmluZGV4IGJlZjM3ZGYxMDFlZGI3OTllZDc3MjRiYmIwNmRhOWYxOGQ1MGRk
MzIuLjJmMjY0NGZhZDE1NjMzOTJlYjRhMDY1NWY3Y2NkYzgzNzNlYzg5NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKKysrIGIvU291cmNlL1dURi93dGYvTmV2
ZXJEZXN0cm95ZWQuaApAQCAtMTA0LDggKzEwNCw2IEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUg
c3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFs
dWU+Ojp0eXBlIG1fc3RvcmFnZTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEFjY2Vzc1RyYWl0cyA9IEFueVRocmVhZHNBY2Nlc3NUcmFpdHM+IE5ldmVyRGVzdHJveWVkPFQs
IEFjY2Vzc1RyYWl0cz4gbWFrZU5ldmVyRGVzdHJveWVkKFQmJik7Ci0KIC8vIEZJWE1FOiBJdCdz
IG1lc3N5IHRvIGhhdmUgdG8gcmVwZWF0IHRoZSB3aG9sZSBjbGFzcyBqdXN0IHRvIG1ha2UgdGhp
cyAibGF6eSIgdmVyc2lvbi4KIC8vIFNob3VsZCByZXZpc2l0IGNsaWVudHMgdG8gc2VlIGlmIHdl
IHJlYWxseSBuZWVkIHRoaXMsIGFuZCBwZXJoYXBzIHVzZSB0ZW1wbGF0ZXMgdG8KIC8vIHNoYXJl
IG1vcmUgb2YgdGhlIGNvZGUgd2l0aCB0aGUgbWFpbiBOZXZlckRlc3Ryb3llZCBhYm92ZS4KQEAg
LTE4MSwyMyArMTc5LDE0IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IE5ldmVy
RGVzdHJveWVkKFQpIC0+IE5ldmVyRGVzdHJveWVkPFQ+OwogCi0vLyBGSVhNRTogUmVtb3ZlIHRo
aXMgZnVuY3Rpb24sIHJlbHlpbmcgaW5zdGVhZCBvbiB0aGUgZGVkdWN0aW9uIGd1aWRlIGZvciBO
ZXZlckRlc3Ryb3llZCBhYm92ZS4KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFjY2Vz
c1RyYWl0cz4gaW5saW5lIE5ldmVyRGVzdHJveWVkPFQsIEFjY2Vzc1RyYWl0cz4gbWFrZU5ldmVy
RGVzdHJveWVkKFQmJiBhcmd1bWVudCkKLXsKLSAgICByZXR1cm4gc3RkOjpmb3J3YXJkPFQ+KGFy
Z3VtZW50KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXVzaW5nIE1haW5UaHJlYWROZXZl
ckRlc3Ryb3llZCA9IE5ldmVyRGVzdHJveWVkPFQsIE1haW5UaHJlYWRBY2Nlc3NUcmFpdHM+Owor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdXNpbmcgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkID0gTmV2
ZXJEZXN0cm95ZWQ8VCwgTWFpblRocmVhZEFjY2Vzc1RyYWl0cz47CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci11c2luZyBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkID0gTGF6eU5ldmVyRGVz
dHJveWVkPFQsIE1haW5UaHJlYWRBY2Nlc3NUcmFpdHM+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
dXNpbmcgTWFpblRocmVhZExhenlOZXZlckRlc3Ryb3llZCA9IExhenlOZXZlckRlc3Ryb3llZDxU
LCBNYWluVGhyZWFkQWNjZXNzVHJhaXRzPjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGOwogCiB1c2lu
ZyBXVEY6OkxhenlOZXZlckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6TmV2ZXJEZXN0cm95ZWQ7Ci11
c2luZyBXVEY6Om1ha2VOZXZlckRlc3Ryb3llZDsKIHVzaW5nIFdURjo6TWFpblRocmVhZE5ldmVy
RGVzdHJveWVkOwogdXNpbmcgV1RGOjpNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkOwogdXNp
bmcgV1RGOjpBbnlUaHJlYWRzQWNjZXNzVHJhaXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJp
bmdJbXBsQ0YuY3BwCmluZGV4IDFlMjM2NDcxNGY4Yjc4MGE0NzEwNmNiMDkyZWI4N2ViMzEyZTRh
ZWMuLjlmNDBjMDVjMzRmMzY3NWE3MDFmNzExOWJjNDE0NjVmNWIyYjAxYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKQEAgLTEwNiwxMCArMTA2LDEwIEBAIG5hbWVz
cGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgewogCiAgICAgc3RhdGljIENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvcigpCiAgICAgewotICAgICAgICBzdGF0aWMgYXV0byBhbGxvY2F0b3IgPSBt
YWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgYWxs
b2NhdG9yID0gW10gewogICAgICAgICAgICAgQ0ZBbGxvY2F0b3JDb250ZXh0IGNvbnRleHQgPSB7
IDAsIG51bGxwdHIsIHJldGFpbiwgcmVsZWFzZSwgY29weURlc2NyaXB0aW9uLCBhbGxvY2F0ZSwg
cmVhbGxvY2F0ZSwgZGVhbGxvY2F0ZSwgcHJlZmVycmVkU2l6ZSB9OwogICAgICAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZBbGxvY2F0b3JDcmVhdGUobnVsbHB0ciwgJmNvbnRleHQpKTsKLSAgICAg
ICAgfSgpKTsKKyAgICAgICAgfSgpOwogICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmdldCgpLmdl
dCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5jcHAKaW5kZXggMjk4MjM3NTFkNGM1OTQyNjcw
OGFiODY0YWI0YWNhMWU5NDY5NTAyZC4uMWYxYmVjN2MzMzQyNGZlMDg0Mjc1NDhmMDcyY2M3ZGZk
MTJmZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyB2
b2lkIHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoVmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+JiBm
YWN0b3JpZXMpCiAKIHN0YXRpYyBWZWN0b3I8TGVnYWN5Q0RNRmFjdG9yeT4mIGluc3RhbGxlZENE
TUZhY3RvcmllcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3ll
ZDxWZWN0b3I8TGVnYWN5Q0RNRmFjdG9yeT4+KHsgfSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFZlY3RvcjxMZWdhY3lDRE1GYWN0b3J5Pj4gY2RtczsKICAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgcmVnaXN0ZXJEZWZhdWx0czsKICAgICBzdGQ6OmNhbGxfb25jZShyZWdpc3RlckRlZmF1
bHRzLCBbJl0gewogICAgICAgICBwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKGNkbXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5j
cHAKaW5kZXggMzljY2MxNGUyMWI4ZjdhYTY2ODIzOTVmZmMxMGYyY2M4MGRhNmVlOC4uZTA3NzIw
ODQ1NWUxN2NkZjc2Y2RjZGRmOGI5MzA3MTkzYmQ4ZTIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5oIgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL1Nv
cnRlZEFycmF5TWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjUsMjcgKzY2LDE5
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKQogCiBzdGF0aWMgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBwbGF0Zm9ybUNvbW1hbmRGb3JN
ZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uQWN0aW9uIGFjdGlvbikKIHsKLSAgICBzdGF0
aWMgY29uc3QgYXV0byBjb21tYW5kTWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAg
ICAgdXNpbmcgQWN0aW9uVG9Db21tYW5kTWFwID0gSGFzaE1hcDxNZWRpYVNlc3Npb25BY3Rpb24s
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIEludEhhc2g8
TWVkaWFTZXNzaW9uQWN0aW9uPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxNZWRpYVNlc3Np
b25BY3Rpb24+PjsKLQotICAgICAgICByZXR1cm4gQWN0aW9uVG9Db21tYW5kTWFwIHsKLSAgICAg
ICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpQbGF5LCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UGxheUNvbW1hbmQgfSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpQYXVzZSwg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlQ29tbWFuZCB9LAotICAgICAgICAgICAgeyBNZWRp
YVNlc3Npb25BY3Rpb246OlNlZWtmb3J3YXJkLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZv
cndhcmRDb21tYW5kIH0sCi0gICAgICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6U2Vla2Jh
Y2t3YXJkLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCB9LAotICAg
ICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlByZXZpb3VzdHJhY2ssIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpQcmV2aW91c1RyYWNrQ29tbWFuZCB9LAotICAgICAgICAgICAgeyBNZWRpYVNl
c3Npb25BY3Rpb246Ok5leHR0cmFjaywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0Nv
bW1hbmQgfSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9uQWN0aW9uOjpTdG9wLCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6U3RvcENvbW1hbmQgfSwKLSAgICAgICAgICAgIHsgTWVkaWFTZXNzaW9u
QWN0aW9uOjpTZWVrdG8sIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTZWVrVG9QbGF5YmFja1Bvc2l0
aW9uQ29tbWFuZCB9LAotICAgICAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNraXBhZCwg
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwKLSAgICAgICAgfTsKLSAg
ICB9KCkpOwotCi0gICAgYXV0byBpdCA9IGNvbW1hbmRNYXAuZ2V0KCkuZmluZChhY3Rpb24pOwot
ICAgIGlmIChpdCAhPSBjb21tYW5kTWFwLmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQt
PnZhbHVlOwotCi0gICAgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0NvbW1hbmQ7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnBhaXI8TWVkaWFTZXNzaW9uQWN0aW9uLCBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiBtYXBwaW5nc1tdIHsKKyAg
ICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlBsYXksIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQ
bGF5Q29tbWFuZCB9LAorICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlvbjo6UGF1c2UsIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25B
Y3Rpb246OlNlZWtiYWNrd2FyZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246OlNraXBCYWNrd2FyZENv
bW1hbmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlNlZWtmb3J3YXJkLCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEZvcndhcmRDb21tYW5kIH0sCisgICAgICAgIHsgTWVkaWFT
ZXNzaW9uQWN0aW9uOjpQcmV2aW91c3RyYWNrLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlv
dXNUcmFja0NvbW1hbmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246Ok5leHR0cmFj
aywgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQgfSwKKyAgICAgICAgeyBN
ZWRpYVNlc3Npb25BY3Rpb246OlNraXBhZCwgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFj
a0NvbW1hbmQgfSwKKyAgICAgICAgeyBNZWRpYVNlc3Npb25BY3Rpb246OlN0b3AsIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpTdG9wQ29tbWFuZCB9LAorICAgICAgICB7IE1lZGlhU2Vzc2lvbkFjdGlv
bjo6U2Vla3RvLCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vla1RvUGxheWJhY2tQb3NpdGlvbkNv
bW1hbmQgfSwKKyAgICB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgbWFw
IHsgbWFwcGluZ3MgfTsKKyAgICByZXR1cm4gbWFwLmdldChhY3Rpb24sIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpOb0NvbW1hbmQpOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8
UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudD4+IHBsYXRmb3JtQ29tbWFuZEZvck1l
ZGlhU2Vzc2lvbkFjdGlvbihjb25zdCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzJiBhY3Rpb25E
ZXRhaWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNTI2MGM2N2E4NWRhZmQxZDY5N2NjMGQ4
MDYyOTJiMzEwZjUyMTI1ZS4uY2M3OWRlYjIzMWRmZjI3ZWE5MjU1ZTRhZWM5NzQ5Nzg2YzBiNGYx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zMjE0LDE4ICszMjE0LDE4IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25z
dAogICAgIC8vIHRob3NlIGNoaWxkIGVsZW1lbnRzIGFyZSBhbHNvIHByZXNlbnRhdGlvbmFsLiBG
b3IgZXhhbXBsZSwgPGxpPiBiZWNvbWVzIHByZXNlbnRhdGlvbmFsIGZyb20gPHVsPi4KICAgICAv
LyBodHRwOi8vd3d3LnczLm9yZy9XQUkvUEYvYXJpYS9jb21wbGV0ZSNwcmVzZW50YXRpb24KIAot
ICAgIGNvbnN0IFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+KiBwYXJlbnRUYWdzOwor
ICAgIFNwYW48Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEhUTUxRdWFsaWZpZWROYW1l
PiogY29uc3Q+IHBhcmVudFRhZ3M7CiAgICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewogICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RJdGVtOgogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVJv
bGU6Okxpc3RNYXJrZXI6IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGF1dG8gbGlzdEl0ZW1QYXJl
bnRzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSo+
IHsgJmRsVGFnLmdldCgpLCAmb2xUYWcuZ2V0KCksICZ1bFRhZy5nZXQoKSB9KTsKLSAgICAgICAg
cGFyZW50VGFncyA9ICZsaXN0SXRlbVBhcmVudHMuZ2V0KCk7CisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjphcnJheSBsaXN0SXRlbVBhcmVudHMgeyAmZGxUYWcsICZvbFRhZywgJnVsVGFn
IH07CisgICAgICAgIHBhcmVudFRhZ3MgPSBsaXN0SXRlbVBhcmVudHM7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbDoKICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsOiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBhdXRvIHRh
YmxlQ2VsbFBhcmVudHMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPGNvbnN0IEhUTUxRdWFs
aWZpZWROYW1lKj4geyAmdGFibGVUYWcuZ2V0KCkgfSk7Ci0gICAgICAgIHBhcmVudFRhZ3MgPSAm
dGFibGVDZWxsUGFyZW50cy5nZXQoKTsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFy
cmF5IHRhYmxlQ2VsbFBhcmVudHMgeyAmdGFibGVUYWcgfTsKKyAgICAgICAgcGFyZW50VGFncyA9
IHRhYmxlQ2VsbFBhcmVudHM7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpA
QCAtMzI0NCw3ICszMjQ0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppbmhl
cml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0CiAgICAgICAgIC8vIElmIG5hdGl2ZSB0YWcg
b2YgdGhlIHBhcmVudCBlbGVtZW50IG1hdGNoZXMgYW4gYWNjZXB0YWJsZSBuYW1lLCB0aGVuIHJl
dHVybgogICAgICAgICAvLyBiYXNlZCBvbiBpdHMgcHJlc2VudGF0aW9uYWwgc3RhdHVzLgogICAg
ICAgICBhdXRvJiBuYW1lID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLnRhZ1FOYW1lKCk7Ci0g
ICAgICAgIGlmIChzdGQ6OmFueV9vZihwYXJlbnRUYWdzLT5iZWdpbigpLCBwYXJlbnRUYWdzLT5l
bmQoKSwgWyZuYW1lXSAoYXV0byogcG9zc2libGVOYW1lKSB7IHJldHVybiAqcG9zc2libGVOYW1l
ID09IG5hbWU7IH0pKQorICAgICAgICBpZiAoc3RkOjphbnlfb2YocGFyZW50VGFncy5iZWdpbigp
LCBwYXJlbnRUYWdzLmVuZCgpLCBbJm5hbWVdIChhdXRvKiBwb3NzaWJsZU5hbWUpIHsgcmV0dXJu
IHBvc3NpYmxlTmFtZS0+Z2V0KCkgPT0gbmFtZTsgfSkpCiAgICAgICAgICAgICByZXR1cm4gcGFy
ZW50LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6UHJlc2VudGF0aW9uYWw7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IGVmNmQ2
ZWVjMDYwZjA0ODhlMGE0NGIxMDZlMDhmNmQ5MTRmYmNkYmMuLjhkODI2ODIyMjA0YjNmNGExNzUx
ZTdiYzgzYzEzM2E1NjNkNzc0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RWRpdGFibGVBbmNlc3RvckF0dHJpYnV0
ZSwKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5SGlnaGVzdEVkaXRhYmxlQW5jZXN0b3JBdHRyaWJ1
dGUsCiAgICAgXTsKLSAgICBzdGF0aWMgYXV0byBpbmNyZW1lbnRvckF0dHJzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW5jcmVtZW50b3JBdHRy
cyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRCdXR0b25BdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEZWNy
ZW1lbnRCdXR0b25BdHRyaWJ1dGVdOwpAQCAtMTM0MiwxNCArMTM0MiwxNCBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVy
biB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byBhbmNob3JBdHRycyA9IG1h
a2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZCBhbmNob3JBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQo
KV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nl
c3NLZXlBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlMaW5rUmVsYXRpb25zaGlwVHlwZUF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1w
QXJyYXk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxOU0FycmF5Pj4gY29tbW9uTWVudUF0dHJzID0gQFsKICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Um9sZUF0dHJpYnV0ZSwKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0
aW9uQXR0cmlidXRlLApAQCAtMTM1OSw3ICsxMzU5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfRU5ECiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRl
LAogICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAogICAgIF07Ci0gICAgc3Rh
dGljIGF1dG8gd2ViQXJlYUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgd2ViQXJlYUF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIC8vIFdlYkFyZWFzIHNob3VsZCBub3QgZXhw
b3NlIEFYU3Vicm9sZS4KICAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV07CkBAIC0xMzc2LDggKzEzNzYsOCBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVdlYlNlc3Npb25J
REF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBz
dGF0aWMgYXV0byB0ZXh0QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdGV4dEF0dHJzID0gW10gewogICAgICAgICBhdXRv
IHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eU51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZV07CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV07
CkBAIC0xMzkxLDI0ICsxMzkxLDI0IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQbGFjZWhv
bGRlclZhbHVlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VmFsdWVBdXRvZmlsbGVkQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBB
cnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIGxpc3RBdHRycyA9IG1ha2VOZXZlckRl
c3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBsaXN0QXR0
cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZp
c2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwogICAgICAg
ICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gbGlzdEJveEF0
dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIGxpc3RCb3hBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6bGlzdEF0dHJzLmdl
dCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eUFjY2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAg
cmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHJhbmdlQXR0cnMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgcmFuZ2VBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5n
ZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNaW5W
YWx1ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eU1heFZhbHVlQXR0cmlidXRlXTsKQEAgLTE0MTYsMjQgKzE0MTYsMjQgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07
CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byBt
ZW51QmFyQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgbWVudUJhckF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21t
b25NZW51QXR0cnMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVt
ZW50QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAg
IH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gbWVudUF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtd
IHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1lbnVBdHRycyA9IFtdIHsK
ICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1
dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxl
Q2hpbGRyZW5BdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKICAgICAgICAgcmV0
dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIG1lbnVJdGVtQXR0cnMg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgbWVudUl0ZW1BdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJz
LmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVRpdGxlQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdOwpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlcnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRl
XTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0
dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKKyAgICB9KCk7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gbWVudUJ1dHRv
bkF0dHJzID0gQFsKICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKICAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLApAQCAtMTQ2MiwyOSAr
MTQ2MiwyOSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGUsCiAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUNo
aWxkcmVuQXR0cmlidXRlLAogICAgIF07Ci0gICAgc3RhdGljIGF1dG8gY29udHJvbEF0dHJzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgY29udHJv
bEF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50
QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
QWNjZXNzS2V5QXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBB
cnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIGJ1dHRvbkF0dHJzID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGJ1dHRv
bkF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAg
ICAgICAgIC8vIEJ1dHRvbnMgc2hvdWxkIG5vdCBleHBvc2UgQVhWYWx1ZS4KICAgICAgICAgW3Rl
bXBBcnJheSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwogICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0
dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFj
Y2Vzc0tleUF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsK
LSAgICBzdGF0aWMgYXV0byBjb21ib0JveEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
KyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGNvbWJvQm94QXR0cnMgPSBbXSB7
CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OmNvbnRyb2xBdHRycy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmli
dXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBh
dXRvIHRhYmxlQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQgdGFibGVBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1w
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0
cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwpAQCAtMTQ5OSwyMSArMTQ5OSwy
MSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkNvdW50QXR0cmlidXRlXTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJvd0NvdW50
QXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0
YXRpYyBhdXRvIHRhYmxlUm93QXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0o
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdGFibGVSb3dBdHRycyA9IFtdIHsKICAgICAg
ICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0
ZW1wQXJyYXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byB0YWJsZUNvbEF0dHJzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
IHRhYmxlQ29sQXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0
KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW5kZXhB
dHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlI
ZWFkZXJBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlSb3dzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5
OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gdGFibGVDZWxsQXR0cnMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdGFibGVD
ZWxsQXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCldKTsK
ICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5n
ZUF0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eUNvbHVtbkluZGV4UmFuZ2VBdHRyaWJ1dGVdOwpAQCAtMTUyMiwxOCArMTUyMiwxOCBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUNvbHVtbkluZGV4QXR0cmlidXRlXTsKICAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQVJvd0luZGV4QXR0cmlidXRl
XTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRv
IGdyb3VwQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgZ3JvdXBBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJy
YXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmli
dXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJy
YXk7Ci0gICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byBpbnB1dEltYWdlQXR0cnMgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW5w
dXRJbWFnZUF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpidXR0b25BdHRycy5nZXQoKS5nZXQo
KV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRy
aWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGlj
IGF1dG8gcGFzc3dvcmRGaWVsZEF0dHJzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9
KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHBhc3N3b3JkRmllbGRBdHRycyA9IFtdIHsK
ICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmli
dXRlXTsKQEAgLTE1NDEsMjMgKzE1NDEsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVBs
YWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlWYWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4g
dGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gdGFiTGlzdEF0dHJzID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
IHRhYkxpc3RBdHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlcy5nZXQoKS5nZXQo
KV0pOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29u
dGVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07CiAgICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0g
ICAgfSgpKTsKLSAgICBzdGF0aWMgYXV0byBvdXRsaW5lQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95
ZWQoW10geworICAgIH0oKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgb3V0bGluZUF0dHJz
ID0gW10gewogICAgICAgICBhdXRvIHRlbXBBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0
ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRy
aWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1
bW5zQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAg
IH0oKSk7Ci0gICAgc3RhdGljIGF1dG8gb3V0bGluZVJvd0F0dHJzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKKyAgICB9KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG91dGxpbmVSb3dB
dHRycyA9IFtdIHsKICAgICAgICAgYXV0byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGFibGVSb3dBdHRycy5nZXQoKS5nZXQoKV0pOwog
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlz
Y2xvc2VkQnlSb3dBdHRyaWJ1dGVdOwpAQCAtMTU2NSwyNyArMTU2NSwyNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJy
YXkgcmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKICAgICAgICAg
cmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0YXRpYyBhdXRvIHNjcm9sbFZpZXdB
dHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZCBzY3JvbGxWaWV3QXR0cnMgPSBbXSB7CiAgICAgICAgIGF1dG8gdGVtcEFycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0
ZXMuZ2V0KCkuZ2V0KCldKTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXTsKICAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1
dGVdOwogICAgICAgICByZXR1cm4gdGVtcEFycmF5OwotICAgIH0oKSk7Ci0gICAgc3RhdGljIGF1
dG8gaW1hZ2VBdHRycyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgfSgpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZCBpbWFnZUF0dHJzID0gW10gewogICAgICAgICBhdXRvIHRlbXBB
cnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzLmdldCgpLmdldCgpXSk7CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUltYWdlT3ZlcmxheUVsZW1lbnRzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uQXR0
cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJM
QXR0cmlidXRlXTsKICAgICAgICAgcmV0dXJuIHRlbXBBcnJheTsKLSAgICB9KCkpOwotICAgIHN0
YXRpYyBhdXRvIHZpZGVvQXR0cnMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIH0oKTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdmlkZW9BdHRycyA9IFtdIHsKICAgICAgICAgYXV0
byB0ZW1wQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6YXR0cmlidXRlcy5nZXQoKS5nZXQoKV0pOwogICAgICAgICAvLyBUaGlzIHNob3VsZCByZXBy
ZXNlbnQgdGhlIFVSTCBvZiB0aGUgdmlkZW8gY29udGVudCwgbm90IHRoZSBwb3N0ZXIuCiAgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CiAg
ICAgICAgIHJldHVybiB0ZW1wQXJyYXk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAKICAgICBOU0Fy
cmF5ICpvYmplY3RBdHRyaWJ1dGVzID0gYXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vbWFrZV9uYW1lcy5wbAppbmRleCA2ZDcwZGZiZjAwZWZlMzYyMGI4Y2VmNjkwYTlkYTE5M2Vj
YzVmMTMwLi45YjI0N2ZiNzQ3OTNkYzVlMTA1ODhkNmNkZTBhZWEyYWFhNzhiMjk4IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtMTAzNSw3ICsxMDM1LDcgQEAgRU5ECiAKIHN0YXRpYyAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5IGZpbmQkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudENvbnN0cnVjdG9yRnVuY3Rpb24oY29uc3QgQXRvbVN0
cmluZyYgbG9jYWxOYW1lKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZl
ckRlc3Ryb3llZChjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcCgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gY3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUZhY3RvcnlNYXAoKTsKICAgICByZXR1cm4gbWFwLmdldCgpLmdldChsb2NhbE5hbWUpOwogfQog
CkBAIC0xMzA5LDcgKzEzMDksNyBAQCBFTkQKIAogSlNET01PYmplY3QqIGNyZWF0ZUpTJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiYmIGVsZW1lbnQpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGF1dG8gZnVuY3Rpb25zID0gbWFrZU5ldmVyRGVzdHJveWVkKGNyZWF0ZSRwYXJh
bWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyTWFwKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZCBmdW5jdGlvbnMgPSBjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlck1hcCgpOwog
ICAgIGlmIChhdXRvIGZ1bmN0aW9uID0gZnVuY3Rpb25zLmdldCgpLmdldChlbGVtZW50LT5sb2Nh
bE5hbWUoKSkpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbihnbG9iYWxPYmplY3QsIFdURk1vdmUo
ZWxlbWVudCkpOwogRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5k
ZXggNzJlMjc5OWRkNDJkNDVlMGE1NjU2YWMzMjAzMTJkM2JjMzdiMTQwOC4uODU1ODA3ZTJjMjA5
YjBiMzE0ZWFkODhkNDYxOGQ1Y2ZhZjM3NzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcApAQCAtOTQ5LDkgKzk0OSw5IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjpjb25m
bGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCYgZWxlbWVudCwgUmVm
CiAgICAgcmV0dXJuIGNvbmZsaWN0czsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3Rvcjxjb25zdCBI
VE1MRWxlbWVudEVxdWl2YWxlbnQqPiYgaHRtbEVsZW1lbnRFcXVpdmFsZW50cygpCitzdGF0aWMg
U3Bhbjxjb25zdCBIVE1MRWxlbWVudEVxdWl2YWxlbnQqIGNvbnN0PiBodG1sRWxlbWVudEVxdWl2
YWxlbnRzKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBlcXVpdmFsZW50cyA9IG1ha2VOZXZl
ckRlc3Ryb3llZChWZWN0b3I8Y29uc3QgSFRNTEVsZW1lbnRFcXVpdmFsZW50Kj4geworICAgIHN0
YXRpYyBjb25zdCBIVE1MRWxlbWVudEVxdWl2YWxlbnQqIGNvbnN0IGVxdWl2YWxlbnRzW10gPSB7
CiAgICAgICAgIG5ldyBIVE1MRm9udFdlaWdodEVxdWl2YWxlbnQoSFRNTE5hbWVzOjpiVGFnKSwK
ICAgICAgICAgbmV3IEhUTUxGb250V2VpZ2h0RXF1aXZhbGVudChIVE1MTmFtZXM6OnN0cm9uZ1Rh
ZyksCiAKQEAgLTk2MywxMSArOTYzLDEwIEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8Y29uc3QgSFRN
TEVsZW1lbnRFcXVpdmFsZW50Kj4mIGh0bWxFbGVtZW50RXF1aXZhbGVudHMoKQogICAgICAgICBu
ZXcgSFRNTFRleHREZWNvcmF0aW9uRXF1aXZhbGVudChDU1NWYWx1ZVVuZGVybGluZSwgSFRNTE5h
bWVzOjp1VGFnKSwKICAgICAgICAgbmV3IEhUTUxUZXh0RGVjb3JhdGlvbkVxdWl2YWxlbnQoQ1NT
VmFsdWVMaW5lVGhyb3VnaCwgSFRNTE5hbWVzOjpzVGFnKSwKICAgICAgICAgbmV3IEhUTUxUZXh0
RGVjb3JhdGlvbkVxdWl2YWxlbnQoQ1NTVmFsdWVMaW5lVGhyb3VnaCwgSFRNTE5hbWVzOjpzdHJp
a2VUYWcpLAotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIGVxdWl2YWxlbnRzOwogfQogCi0K
IGJvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mRWxlbWVudChI
VE1MRWxlbWVudCYgZWxlbWVudCwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSwgU2hvdWxk
RXh0cmFjdE1hdGNoaW5nU3R5bGUgc2hvdWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUpIGNvbnN0CiB7
CiAgICAgaWYgKGlzRW1wdHkoKSkKQEAgLTk4NCw5ICs5ODMsOSBAQCBib29sIEVkaXRpbmdTdHls
ZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQmIGVsZW1l
bnQsIEVkaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3Rvcjxjb25z
dCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudCo+JiBodG1sQXR0cmlidXRlRXF1aXZhbGVudHMoKQor
c3RhdGljIFNwYW48Y29uc3QgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQqIGNvbnN0PiBodG1sQXR0
cmlidXRlRXF1aXZhbGVudHMoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGVxdWl2YWxlbnRz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3Rvcjxjb25zdCBIVE1MQXR0cmlidXRlRXF1aXZhbGVu
dCo+IHsKKyAgICBzdGF0aWMgY29uc3QgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQqIGNvbnN0IGVx
dWl2YWxlbnRzW10gPSB7CiAgICAgICAgIC8vIGVsZW1lbnRJc1N0eWxlZFNwYW5PckhUTUxFcXVp
dmFsZW50IGRlcGVuZHMgb24gdGhlIGZhY3QgZWFjaCBIVE1MQXR0cml1dGVFcXVpdmFsZW50IG1h
dGNoZXMgZXhhY3RseSBvbmUgYXR0cmlidXRlCiAgICAgICAgIC8vIG9mIGV4YWN0bHkgb25lIGVs
ZW1lbnQgZXhjZXB0IGRpckF0dHIuCiAgICAgICAgIG5ldyBIVE1MQXR0cmlidXRlRXF1aXZhbGVu
dChDU1NQcm9wZXJ0eUNvbG9yLCBIVE1MTmFtZXM6OmZvbnRUYWcsIEhUTUxOYW1lczo6Y29sb3JB
dHRyKSwKQEAgLTk5NSw3ICs5OTQsNyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPGNvbnN0IEhUTUxB
dHRyaWJ1dGVFcXVpdmFsZW50Kj4mIGh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cygpCiAKICAgICAg
ICAgbmV3IEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBIVE1M
TmFtZXM6OmRpckF0dHIpLAogICAgICAgICBuZXcgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQoQ1NT
UHJvcGVydHlVbmljb2RlQmlkaSwgSFRNTE5hbWVzOjpkaXJBdHRyKSwKLSAgICB9KTsKKyAgICB9
OwogICAgIHJldHVybiBlcXVpdmFsZW50czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCmluZGV4IDlkYmE1MGE4MDkyZWI4NzMwYWUyMzFjMTMx
MTAzMTYzMzAzMWZmMjcuLjJlMTA1ODI2MWZmNTY3M2UyMDJhMmNhZmRkYTNkMDEwZjY0NTkzMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAKQEAg
LTEyMyw3ICsxMjMsNyBAQCBFbGVtZW50KiBGb3JtYXRCbG9ja0NvbW1hbmQ6OmVsZW1lbnRGb3JG
b3JtYXRCbG9ja0NvbW1hbmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaQogCiBib29sIGlzRWxlbWVu
dEZvckZvcm1hdEJsb2NrKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGF1dG8gYmxvY2tUYWdzID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBh
Y3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxRdWFsaWZpZWROYW1lPiB7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkIGJsb2NrVGFncyA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5I
b29kSGFzaFNldDxRdWFsaWZpZWROYW1lPiB7CiAgICAgICAgIGFkZHJlc3NUYWcsCiAgICAgICAg
IGFydGljbGVUYWcsCiAgICAgICAgIGFzaWRlVGFnLApAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wg
aXNFbGVtZW50Rm9yRm9ybWF0QmxvY2soY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkKICAg
ICAgICAgcFRhZywKICAgICAgICAgcHJlVGFnLAogICAgICAgICBzZWN0aW9uVGFnLAotICAgIH0p
OworICAgIH07CiAgICAgcmV0dXJuIGJsb2NrVGFncy5nZXQoKS5jb250YWlucyh0YWdOYW1lKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAK
aW5kZXggNjYxNDA3ZTE0NTI0Y2YyYTEzZmVhMzY1NTEzZDc5YWJlNTNlNjlkMy4uMzNlOTYwNWQ1
ZjA3MmI2MWZjYTdjNWFkOTk3NzRjODU2ZTkzYjU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFJlbW92ZUZv
cm1hdENvbW1hbmQ6OlJlbW92ZUZvcm1hdENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBz
dGF0aWMgYm9vbCBpc0VsZW1lbnRGb3JSZW1vdmVGb3JtYXRDb21tYW5kKGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gZWxlbWVudHMgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFF1YWxpZmll
ZE5hbWU+IHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZWxlbWVudHMgPSBNZW1vcnlDb21w
YWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gewogICAgICAgICBh
Y3JvbnltVGFnLAogICAgICAgICBiVGFnLAogICAgICAgICBiZG9UYWcsCkBAIC03Miw3ICs3Miw3
IEBAIHN0YXRpYyBib29sIGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQoY29uc3QgRWxl
bWVudCogZWxlbWVudCkKICAgICAgICAgdHRUYWcsCiAgICAgICAgIHVUYWcsCiAgICAgICAgIHZh
clRhZywKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBlbGVtZW50cy5nZXQoKS5jb250YWlu
cyhlbGVtZW50LT50YWdRTmFtZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBlN2ZmMjY1NDVkZGI3NDY1NGYw
Mjk0OWRmMGQ0YzQ4YjhlNDcxMDEwLi5jMjRiZWZmNWNiNGVhNzRmMGQ1ZDJjM2I1NjZiZGI2ZmRm
YjVjNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcApAQCAtNzI1LDYzICs3MjUsNjMgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNl
cnQKIAogc3RhdGljIGJvb2wgaXNQcm9oaWJpdGVkUGFyYWdyYXBoQ2hpbGQoY29uc3QgQXRvbVN0
cmluZyYgbmFtZSkKIHsKLSAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcvcmF3
LWZpbGUvNTdhYmU2ZDNjYjYwL2VkaXRpbmcuaHRtbCNwcm9oaWJpdGVkLXBhcmFncmFwaC1jaGls
ZAotICAgIHN0YXRpYyBjb25zdCBhdXRvIGxvY2FsTmFtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
W10gewotICAgICAgICBzdGF0aWMgY29uc3QgSFRNTFF1YWxpZmllZE5hbWUqIGNvbnN0IHRhZ3Nb
XSA9IHsKLSAgICAgICAgICAgICZhZGRyZXNzVGFnLmdldCgpLAotICAgICAgICAgICAgJmFydGlj
bGVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmYXNpZGVUYWcuZ2V0KCksCi0gICAgICAgICAgICAm
YmxvY2txdW90ZVRhZy5nZXQoKSwKLSAgICAgICAgICAgICZjYXB0aW9uVGFnLmdldCgpLAotICAg
ICAgICAgICAgJmNlbnRlclRhZy5nZXQoKSwKLSAgICAgICAgICAgICZjb2xUYWcuZ2V0KCksCi0g
ICAgICAgICAgICAmY29sZ3JvdXBUYWcuZ2V0KCksCi0gICAgICAgICAgICAmZGRUYWcuZ2V0KCks
Ci0gICAgICAgICAgICAmZGV0YWlsc1RhZy5nZXQoKSwKLSAgICAgICAgICAgICZkaXJUYWcuZ2V0
KCksCi0gICAgICAgICAgICAmZGl2VGFnLmdldCgpLAotICAgICAgICAgICAgJmRsVGFnLmdldCgp
LAotICAgICAgICAgICAgJmR0VGFnLmdldCgpLAotICAgICAgICAgICAgJmZpZWxkc2V0VGFnLmdl
dCgpLAotICAgICAgICAgICAgJmZpZ2NhcHRpb25UYWcuZ2V0KCksCi0gICAgICAgICAgICAmZmln
dXJlVGFnLmdldCgpLAotICAgICAgICAgICAgJmZvb3RlclRhZy5nZXQoKSwKLSAgICAgICAgICAg
ICZmb3JtVGFnLmdldCgpLAotICAgICAgICAgICAgJmgxVGFnLmdldCgpLAotICAgICAgICAgICAg
JmgyVGFnLmdldCgpLAotICAgICAgICAgICAgJmgzVGFnLmdldCgpLAotICAgICAgICAgICAgJmg0
VGFnLmdldCgpLAotICAgICAgICAgICAgJmg1VGFnLmdldCgpLAotICAgICAgICAgICAgJmg2VGFn
LmdldCgpLAotICAgICAgICAgICAgJmhlYWRlclRhZy5nZXQoKSwKLSAgICAgICAgICAgICZoZ3Jv
dXBUYWcuZ2V0KCksCi0gICAgICAgICAgICAmaHJUYWcuZ2V0KCksCi0gICAgICAgICAgICAmbGlU
YWcuZ2V0KCksCi0gICAgICAgICAgICAmbGlzdGluZ1RhZy5nZXQoKSwKLSAgICAgICAgICAgICZt
YWluVGFnLmdldCgpLCAvLyBNaXNzaW5nIGluIHRoZSBzcGVjaWZpY2F0aW9uLgotICAgICAgICAg
ICAgJm1lbnVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmbmF2VGFnLmdldCgpLAotICAgICAgICAg
ICAgJm9sVGFnLmdldCgpLAotICAgICAgICAgICAgJnBUYWcuZ2V0KCksCi0gICAgICAgICAgICAm
cGxhaW50ZXh0VGFnLmdldCgpLAotICAgICAgICAgICAgJnByZVRhZy5nZXQoKSwKLSAgICAgICAg
ICAgICZzZWN0aW9uVGFnLmdldCgpLAotICAgICAgICAgICAgJnN1bW1hcnlUYWcuZ2V0KCksCi0g
ICAgICAgICAgICAmdGFibGVUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdGJvZHlUYWcuZ2V0KCks
Ci0gICAgICAgICAgICAmdGRUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdGZvb3RUYWcuZ2V0KCks
Ci0gICAgICAgICAgICAmdGhUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdGhlYWRUYWcuZ2V0KCks
Ci0gICAgICAgICAgICAmdHJUYWcuZ2V0KCksCi0gICAgICAgICAgICAmdWxUYWcuZ2V0KCksCi0g
ICAgICAgICAgICAmeG1wVGFnLmdldCgpLAorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBsb2Nh
bE5hbWVzID0gW10geworICAgICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2VkaXRpbmcv
cmF3LWZpbGUvNTdhYmU2ZDNjYjYwL2VkaXRpbmcuaHRtbCNwcm9oaWJpdGVkLXBhcmFncmFwaC1j
aGlsZAorICAgICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgdGFncyB7CisgICAgICAg
ICAgICAmYWRkcmVzc1RhZywKKyAgICAgICAgICAgICZhcnRpY2xlVGFnLAorICAgICAgICAgICAg
JmFzaWRlVGFnLAorICAgICAgICAgICAgJmJsb2NrcXVvdGVUYWcsCisgICAgICAgICAgICAmY2Fw
dGlvblRhZywKKyAgICAgICAgICAgICZjZW50ZXJUYWcsCisgICAgICAgICAgICAmY29sVGFnLAor
ICAgICAgICAgICAgJmNvbGdyb3VwVGFnLAorICAgICAgICAgICAgJmRkVGFnLAorICAgICAgICAg
ICAgJmRldGFpbHNUYWcsCisgICAgICAgICAgICAmZGlyVGFnLAorICAgICAgICAgICAgJmRpdlRh
ZywKKyAgICAgICAgICAgICZkbFRhZywKKyAgICAgICAgICAgICZkdFRhZywKKyAgICAgICAgICAg
ICZmaWVsZHNldFRhZywKKyAgICAgICAgICAgICZmaWdjYXB0aW9uVGFnLAorICAgICAgICAgICAg
JmZpZ3VyZVRhZywKKyAgICAgICAgICAgICZmb290ZXJUYWcsCisgICAgICAgICAgICAmZm9ybVRh
ZywKKyAgICAgICAgICAgICZoMVRhZywKKyAgICAgICAgICAgICZoMlRhZywKKyAgICAgICAgICAg
ICZoM1RhZywKKyAgICAgICAgICAgICZoNFRhZywKKyAgICAgICAgICAgICZoNVRhZywKKyAgICAg
ICAgICAgICZoNlRhZywKKyAgICAgICAgICAgICZoZWFkZXJUYWcsCisgICAgICAgICAgICAmaGdy
b3VwVGFnLAorICAgICAgICAgICAgJmhyVGFnLAorICAgICAgICAgICAgJmxpVGFnLAorICAgICAg
ICAgICAgJmxpc3RpbmdUYWcsCisgICAgICAgICAgICAmbWFpblRhZywgLy8gTWlzc2luZyBpbiB0
aGUgc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgICAgICZtZW51VGFnLAorICAgICAgICAgICAgJm5h
dlRhZywKKyAgICAgICAgICAgICZvbFRhZywKKyAgICAgICAgICAgICZwVGFnLAorICAgICAgICAg
ICAgJnBsYWludGV4dFRhZywKKyAgICAgICAgICAgICZwcmVUYWcsCisgICAgICAgICAgICAmc2Vj
dGlvblRhZywKKyAgICAgICAgICAgICZzdW1tYXJ5VGFnLAorICAgICAgICAgICAgJnRhYmxlVGFn
LAorICAgICAgICAgICAgJnRib2R5VGFnLAorICAgICAgICAgICAgJnRkVGFnLAorICAgICAgICAg
ICAgJnRmb290VGFnLAorICAgICAgICAgICAgJnRoVGFnLAorICAgICAgICAgICAgJnRoZWFkVGFn
LAorICAgICAgICAgICAgJnRyVGFnLAorICAgICAgICAgICAgJnVsVGFnLAorICAgICAgICAgICAg
JnhtcFRhZywKICAgICAgICAgfTsKICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jp
bkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKICAgICAgICAgZm9yIChhdXRvJiB0YWcgOiB0
YWdzKQotICAgICAgICAgICAgc2V0LmFkZCh0YWctPmxvY2FsTmFtZSgpKTsKKyAgICAgICAgICAg
IHNldC5hZGQodGFnLT5nZXQoKS5sb2NhbE5hbWUoKSk7CiAgICAgICAgIHJldHVybiBzZXQ7Ci0g
ICAgfSgpKTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIGxvY2FsTmFtZXMuZ2V0KCkuY29udGFpbnMo
bmFtZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQppbmRleCAwNzgyNDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3Li5kZjI0
ZGEyYzgxNWViMzEzMDYwYzc4YTRjMTJiZTI3ODIzYzk4MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC00MTYsMTIgKzQxNiwxMiBAQCBB
dHRyaWJ1dGVkU3RyaW5nIEhUTUxDb252ZXJ0ZXI6OmNvbnZlcnQoKQogLy8gUmV0dXJucyB0aGUg
Zm9udCB0byBiZSB1c2VkIGlmIHRoZSBOU0ZvbnRBdHRyaWJ1dGVOYW1lIGRvZXNuJ3QgZXhpc3QK
IHN0YXRpYyBOU0ZvbnQgKldlYkRlZmF1bHRGb250KCkKIHsKLSAgICBzdGF0aWMgYXV0byBkZWZh
dWx0Rm9udCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkIGRlZmF1bHRGb250ID0gW10gewogICAgICAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZv
bnRXaXRoTmFtZTpAIkhlbHZldGljYSIgc2l6ZToxMl07CiAgICAgICAgIGlmICghZm9udCkKICAg
ICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6MTJdOwotICAgICAgICBy
ZXR1cm4gcmV0YWluUHRyKGZvbnQpOwotICAgIH0oKSk7CisgICAgICAgIHJldHVybiBSZXRhaW5Q
dHIgeyBmb250IH07CisgICAgfSgpOwogICAgIHJldHVybiBkZWZhdWx0Rm9udC5nZXQoKS5nZXQo
KTsKIH0KICNlbmRpZgpAQCAtNTE4LDEzICs1MTgsMTMgQEAgc3RhdGljIFBsYXRmb3JtRm9udCAq
X2ZvbnRGb3JOYW1lQW5kU2l6ZShOU1N0cmluZyAqZm9udE5hbWUsIENHRmxvYXQgc2l6ZSwgTlNN
dXQKIAogc3RhdGljIE5TUGFyYWdyYXBoU3R5bGUgKmRlZmF1bHRQYXJhZ3JhcGhTdHlsZSgpCiB7
Ci0gICAgc3RhdGljIGF1dG8gZGVmYXVsdFBhcmFncmFwaFN0eWxlID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKLSAgICAgICAgYXV0byBkZWZhdWx0UGFyYWdyYXBoU3R5bGUgPSBhZG9wdE5TKFtb
UGxhdGZvcm1OU1BhcmFncmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0gbXV0YWJsZUNv
cHldKTsKLSAgICAgICAgW2RlZmF1bHRQYXJhZ3JhcGhTdHlsZSBzZXREZWZhdWx0VGFiSW50ZXJ2
YWw6MzZdOwotICAgICAgICBbZGVmYXVsdFBhcmFncmFwaFN0eWxlIHNldFRhYlN0b3BzOkBbXV07
Ci0gICAgICAgIHJldHVybiBkZWZhdWx0UGFyYWdyYXBoU3R5bGU7Ci0gICAgfSgpKTsKLSAgICBy
ZXR1cm4gZGVmYXVsdFBhcmFncmFwaFN0eWxlLmdldCgpLmdldCgpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZCBzdHlsZSA9IFtdIHsKKyAgICAgICAgYXV0byBzdHlsZSA9IGFkb3B0TlMoW1tQ
bGF0Zm9ybU5TUGFyYWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0eWxlXSBtdXRhYmxlQ29w
eV0pOworICAgICAgICBbc3R5bGUgc2V0RGVmYXVsdFRhYkludGVydmFsOjM2XTsKKyAgICAgICAg
W3N0eWxlIHNldFRhYlN0b3BzOkBbXV07CisgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICB9KCk7
CisgICAgcmV0dXJuIHN0eWxlLmdldCgpLmdldCgpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWU+IEhU
TUxDb252ZXJ0ZXJDYWNoZXM6OmNvbXB1dGVkU3R5bGVQcm9wZXJ0eUZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxs
LmNwcAppbmRleCAwZTczZDI5YTIzNTIzNjllMWQ5NTlmZjllY2NlOTU3ODRlZjkyNjVkLi5jMDNl
MDNmNjIwNGU2MmRlNTU3NTI2ZTUxMGE2MzZkNzE5YTk5M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9m
aWxsLmNwcApAQCAtNTIsMTQgKzUyLDE0IEBAIHN0cnVjdCBBdXRvZmlsbEluZm8gewogCiBzdGF0
aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJp
bmcsIEF1dG9maWxsSW5mbz4mIGZpZWxkTmFtZU1hcCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQgbWFwID0gW10gewogICAgICAgICBzdHJ1Y3QgTWFwRW50cnkgewogICAgICAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWU7CiAgICAgICAgICAgICBBdXRvZmlsbEluZm8gdmFsdWU7CiAgICAgICAg
IH07Ci0gICAgICAgIHN0YXRpYyBjb25zdCBNYXBFbnRyeSBlbnRyaWVzW10gPSB7CisgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgTWFwRW50cnkgZW50cmllc1tdID0gewogICAgICAgICAgICAgeyAi
b2ZmIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpOb25lLCBBdXRvZmlsbENhdGVnb3J5OjpPZmYg
fSB9LAotICAgICAgICAgICAgeyAib24iX3MsIHsgQXV0b2ZpbGxGaWVsZE5hbWU6Ok5vbmUsICBB
dXRvZmlsbENhdGVnb3J5OjpBdXRvbWF0aWMgfSB9LAorICAgICAgICAgICAgeyAib24iX3MsIHsg
QXV0b2ZpbGxGaWVsZE5hbWU6Ok5vbmUsIEF1dG9maWxsQ2F0ZWdvcnk6OkF1dG9tYXRpYyB9IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIl9zLCB7IEF1dG9maWxsRmllbGROYW1lOjpOYW1lLCBBdXRv
ZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LAogICAgICAgICAgICAgeyAiaG9ub3JpZmljLXByZWZp
eCJfcywgeyBBdXRvZmlsbEZpZWxkTmFtZTo6SG9ub3JpZmljUHJlZml4LCBBdXRvZmlsbENhdGVn
b3J5OjpOb3JtYWwgfSB9LAogICAgICAgICAgICAgeyAiZ2l2ZW4tbmFtZSJfcywgeyBBdXRvZmls
bEZpZWxkTmFtZTo6R2l2ZW5OYW1lLCBBdXRvZmlsbENhdGVnb3J5OjpOb3JtYWwgfSB9LApAQCAt
MTE5LDcgKzExOSw3IEBAIHN0YXRpYyBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8QXRvbVN0cmluZywgQXV0b2ZpbGxJbmZvPiYKICAgICAgICAgZm9yIChhdXRv
JiBlbnRyeSA6IGVudHJpZXMpCiAgICAgICAgICAgICBtYXAuYWRkKGVudHJ5Lm5hbWUsIGVudHJ5
LnZhbHVlKTsKICAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICBy
ZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggMTNj
YjA2NzMxOWM4NDhkNjI5NTEyYTkwODI2NDY5OGFlNzdkZjM1Ny4uNzE2NmQxZDM3N2ZhYjY3YTA5
ZGEwMDljNjFlYjExYmE1MTgxMWJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNw
cApAQCAtMTc2LDY0ICsxNzYsNjMgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnJlbW92ZVdpbmRvd05h
bWVkSXRlbShjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYgaXQKIAogYm9vbCBI
VE1MRG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhc2VJbnNlbnNpdGl2
ZUF0dHJpYnV0ZVNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIHNldCA9IFtdIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBhdHRy
aWJ1dGVzIGluIEhUTUwgNC4wMSB3aXRoIHZhbHVlcyBtYXJrZWQgYXMgIltDSV0iIG9yIGNhc2Ut
aW5zZW5zaXRpdmUKICAgICAgICAgLy8gTW96aWxsYSB0cmVhdHMgYWxsIG90aGVyIHZhbHVlcyBh
cyBjYXNlLXNlbnNpdGl2ZSwgdGh1cyBzbyBkbyB3ZS4KLSAgICAgICAgc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUqIGNvbnN0IG5hbWVzW10gPSB7Ci0gICAgICAgICAgICAmYWNjZXB0X2NoYXJz
ZXRBdHRyLmdldCgpLAotICAgICAgICAgICAgJmFjY2VwdEF0dHIuZ2V0KCksCi0gICAgICAgICAg
ICAmYWxpZ25BdHRyLmdldCgpLAotICAgICAgICAgICAgJmFsaW5rQXR0ci5nZXQoKSwKLSAgICAg
ICAgICAgICZheGlzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZiZ2NvbG9yQXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZjaGFyc2V0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZjaGVja2VkQXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZjbGVhckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmY29k
ZXR5cGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJmNvbG9yQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZjb21wYWN0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZkZWNsYXJlQXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZkZWZlckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZGlyQXR0ci5nZXQo
KSwKLSAgICAgICAgICAgICZkaXNhYmxlZEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZW5jdHlw
ZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmZmFjZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
ZnJhbWVBdHRyLmdldCgpLAotICAgICAgICAgICAgJmhyZWZsYW5nQXR0ci5nZXQoKSwKLSAgICAg
ICAgICAgICZodHRwX2VxdWl2QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZsYW5nQXR0ci5nZXQo
KSwKLSAgICAgICAgICAgICZsYW5ndWFnZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmbGlua0F0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmbWVkaWFBdHRyLmdldCgpLAotICAgICAgICAgICAgJm1l
dGhvZEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmbXVsdGlwbGVBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJm5vaHJlZkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmbm9yZXNpemVBdHRyLmdldCgp
LAotICAgICAgICAgICAgJm5vc2hhZGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJm5vd3JhcEF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmcmVhZG9ubHlBdHRyLmdldCgpLAotICAgICAgICAgICAg
JnJlbEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmcmV2QXR0ci5nZXQoKSwKLSAgICAgICAgICAg
ICZydWxlc0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmc2NvcGVBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJnNjcm9sbGluZ0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmc2VsZWN0ZWRBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJnNoYXBlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZ0YXJnZXRB
dHRyLmdldCgpLAotICAgICAgICAgICAgJnRleHRBdHRyLmdldCgpLAotICAgICAgICAgICAgJnR5
cGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJnZhbGlnbkF0dHIuZ2V0KCksCi0gICAgICAgICAg
ICAmdmFsdWV0eXBlQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZ2bGlua0F0dHIuZ2V0KCksCisg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBuYW1lcyB7CisgICAgICAgICAgICAm
YWNjZXB0X2NoYXJzZXRBdHRyLAorICAgICAgICAgICAgJmFjY2VwdEF0dHIsCisgICAgICAgICAg
ICAmYWxpZ25BdHRyLAorICAgICAgICAgICAgJmFsaW5rQXR0ciwKKyAgICAgICAgICAgICZheGlz
QXR0ciwKKyAgICAgICAgICAgICZiZ2NvbG9yQXR0ciwKKyAgICAgICAgICAgICZjaGFyc2V0QXR0
ciwKKyAgICAgICAgICAgICZjaGVja2VkQXR0ciwKKyAgICAgICAgICAgICZjbGVhckF0dHIsCisg
ICAgICAgICAgICAmY29kZXR5cGVBdHRyLAorICAgICAgICAgICAgJmNvbG9yQXR0ciwKKyAgICAg
ICAgICAgICZjb21wYWN0QXR0ciwKKyAgICAgICAgICAgICZkZWNsYXJlQXR0ciwKKyAgICAgICAg
ICAgICZkZWZlckF0dHIsCisgICAgICAgICAgICAmZGlyQXR0ciwKKyAgICAgICAgICAgICZkaXNh
YmxlZEF0dHIsCisgICAgICAgICAgICAmZW5jdHlwZUF0dHIsCisgICAgICAgICAgICAmZmFjZUF0
dHIsCisgICAgICAgICAgICAmZnJhbWVBdHRyLAorICAgICAgICAgICAgJmhyZWZsYW5nQXR0ciwK
KyAgICAgICAgICAgICZodHRwX2VxdWl2QXR0ciwKKyAgICAgICAgICAgICZsYW5nQXR0ciwKKyAg
ICAgICAgICAgICZsYW5ndWFnZUF0dHIsCisgICAgICAgICAgICAmbGlua0F0dHIsCisgICAgICAg
ICAgICAmbWVkaWFBdHRyLAorICAgICAgICAgICAgJm1ldGhvZEF0dHIsCisgICAgICAgICAgICAm
bXVsdGlwbGVBdHRyLAorICAgICAgICAgICAgJm5vaHJlZkF0dHIsCisgICAgICAgICAgICAmbm9y
ZXNpemVBdHRyLAorICAgICAgICAgICAgJm5vc2hhZGVBdHRyLAorICAgICAgICAgICAgJm5vd3Jh
cEF0dHIsCisgICAgICAgICAgICAmcmVhZG9ubHlBdHRyLAorICAgICAgICAgICAgJnJlbEF0dHIs
CisgICAgICAgICAgICAmcmV2QXR0ciwKKyAgICAgICAgICAgICZydWxlc0F0dHIsCisgICAgICAg
ICAgICAmc2NvcGVBdHRyLAorICAgICAgICAgICAgJnNjcm9sbGluZ0F0dHIsCisgICAgICAgICAg
ICAmc2VsZWN0ZWRBdHRyLAorICAgICAgICAgICAgJnNoYXBlQXR0ciwKKyAgICAgICAgICAgICZ0
YXJnZXRBdHRyLAorICAgICAgICAgICAgJnRleHRBdHRyLAorICAgICAgICAgICAgJnR5cGVBdHRy
LAorICAgICAgICAgICAgJnZhbGlnbkF0dHIsCisgICAgICAgICAgICAmdmFsdWV0eXBlQXR0ciwK
KyAgICAgICAgICAgICZ2bGlua0F0dHIsCiAgICAgICAgIH07CiAgICAgICAgIE1lbW9yeUNvbXBh
Y3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxBdG9tU3RyaW5nPiBzZXQ7CiAgICAgICAgIGZv
ciAoYXV0byogbmFtZSA6IG5hbWVzKQotICAgICAgICAgICAgc2V0LmFkZChuYW1lLT5sb2NhbE5h
bWUoKSk7CisgICAgICAgICAgICBzZXQuYWRkKG5hbWUtPmdldCgpLmxvY2FsTmFtZSgpKTsKICAg
ICAgICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOwotCisgICAgfSgpOwogICAgIGJvb2wgaXNQb3Nz
aWJsZUhUTUxBdHRyID0gIWF0dHJpYnV0ZU5hbWUuaGFzUHJlZml4KCkgJiYgYXR0cmlidXRlTmFt
ZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKTsKLSAgICByZXR1cm4gIWlzUG9zc2libGVIVE1MQXR0
ciB8fCAhY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlU2V0LmdldCgpLmNvbnRhaW5zKGF0dHJpYnV0
ZU5hbWUubG9jYWxOYW1lKCkpOworICAgIHJldHVybiAhaXNQb3NzaWJsZUhUTUxBdHRyIHx8ICFz
ZXQuZ2V0KCkuY29udGFpbnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CiB9CiAKIGJvb2wg
SFRNTERvY3VtZW50Ojppc0ZyYW1lU2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKaW5kZXggY2Y2N2RjNTQzNDQzZjE0ZDliNTczOTNmNGUzZjY5NTY4MDJhODNlZS4uMmFk
ZmY4ZmU4NWQ5MzY3ODAyOTVjMjM5NWNlMzUxOWUzODE4NDQxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBIVE1M
RWxlbWVudDo6ZXZlbnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZAogICAgICAgICAgICAgbWFwLmFkZChhdHRyaWJ1dGVOYW1lLmltcGwoKSwgZXZlbnROYW1lKTsK
ICAgICAgICAgfSk7CiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugc3BlY2lhbCBjYXNl
cy4gVGhlc2UgYXJlIG5vdCBpbiBJREwgd2l0aCBbRXZlbnRIYW5kbGVyXSBidXQgd2VyZSBoaXN0
b3JpY2FsbHkgaW4gdGhpcyBtYXAuCi0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+KiB0YWJsZVtdID0geworICAgICAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgdGFibGUgewogICAgICAgICAgICAgJm9uYXV0
b2NvbXBsZXRlQXR0ciwKICAgICAgICAgICAgICZvbmF1dG9jb21wbGV0ZWVycm9yQXR0ciwKICAg
ICAgICAgICAgICZvbmJlZm9yZWxvYWRBdHRyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcAppbmRleCBlYzZhZjY2ZGE0MzNmYTFlYzAzNDgxMGZkMjk1MzA4YzA0ZmQ5
MGQxLi4wMDM0YjIzMmIxZWJkYjNlNDJmNDU5NmEzZDMyMWYyMDczZjU1MWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIHZv
aWQgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlckZhbGxiYWNrQ29udGVudCgpCiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBFbGVtZW50
JiBjaGlsZCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBtb3N0S25vd25UYWdzID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbW9zdEtub3duVGFn
cyA9IFtdIHsKICAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0
PFF1YWxpZmllZE5hbWU+IHNldDsKICAgICAgICAgYXV0byogdGFncyA9IEhUTUxOYW1lczo6Z2V0
SFRNTFRhZ3MoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBIVE1MTmFtZXM6OkhU
TUxUYWdzQ291bnQ7IGkrKykgewpAQCAtMzc3LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBFbGVtZW50JiBjaGlsZCkK
ICAgICAgICAgICAgIHNldC5hZGQodGFnKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc2V0
OwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBtb3N0S25vd25UYWdzLmdldCgpLmNv
bnRhaW5zKGNoaWxkLnRhZ1FOYW1lKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAK
aW5kZXggZTNiMGQ5OWQwMGE0NTA2N2M1MjY2NGNkMjhmZTdmYzA0MTJhZGZiNS4uYjY1NjliYWQz
NzhlMDBjNDI1MDI1M2VkNzMwNWJjMThjYTA1ZWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyBJbnB1dFR5cGVGYWN0b3J5TWFwIGNyZWF0
ZUlucHV0VHlwZUZhY3RvcnlNYXAoKQogUmVmPElucHV0VHlwZT4gSW5wdXRUeXBlOjpjcmVhdGUo
SFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgdHlwZU5hbWUpCiB7
CiAgICAgaWYgKCF0eXBlTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGF1
dG8gZmFjdG9yeU1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVJbnB1dFR5cGVGYWN0b3J5
TWFwKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZmFjdG9yeU1hcCA9IGNyZWF0
ZUlucHV0VHlwZUZhY3RvcnlNYXAoKTsKICAgICAgICAgYXV0byYmIFtjb25kaXRpb25hbCwgZmFj
dG9yeV0gPSBmYWN0b3J5TWFwLmdldCgpLmdldCh0eXBlTmFtZSk7CiAgICAgICAgIGlmIChmYWN0
b3J5ICYmICghY29uZGl0aW9uYWwgfHwgc3RkOjppbnZva2UoY29uZGl0aW9uYWwsIGVsZW1lbnQu
ZG9jdW1lbnQoKS5zZXR0aW5ncygpKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFjdG9yeShlbGVt
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA2YWU1MjY1
OTdjZDI4NjMxYmU3OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2Li40MzMyZDY5MWJiZjgyNmE3Yzg3ZWE4
M2EzMTdlOTYxMTVhMjA0OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIu
Y3BwCkBAIC0yMzgsMTAgKzIzOCwxMCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNv
dXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogCiBzdGF0aWMgY29uc3QgVVJMJiBi
bG9ja2VkUGFnZVVSTCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gYmxvY2tlZFBhZ2VVUkwg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gKCkgLT4gVVJMIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgYmxvY2tlZFBhZ2VVUkwgPSBbXSAoKSAtPiBVUkwgewogICAgICAgICBhdXRvIHdlYkNv
cmVCdW5kbGUgPSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBw
bGUuV2ViQ29yZSIpKTsKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3Vy
Y2VVUkwod2ViQ29yZUJ1bmRsZSwgQ0ZTVFIoIkNvbnRlbnRGaWx0ZXJCbG9ja2VkUGFnZSIpLCBD
RlNUUigiaHRtbCIpLCBudWxscHRyKSkuZ2V0KCk7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAgICAg
cmV0dXJuIGJsb2NrZWRQYWdlVVJMOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwCmluZGV4IGI1OTY1ZjU2YTQ5YTk1ZTAyYzhmMDc5NWRlY2NlOGZhZjExYmE2
YWMuLmM2NDA4OTgzNTQ0ODZmM2Q5ZDZlNjdkYzY4MTg5YmUwYjMxNDFkZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBAIC0xNTIsMTggKzE1MiwxNiBAQCBi
b29sIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKIAogc3Rh
dGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcs
IFNSR0JBPHVpbnQ4X3Q+PiYgdG91Y2hFdmVudFJlZ2lvbkNvbG9ycygpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IGF1dG8gcmVnaW9uQ29sb3JzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAg
ICAgcmV0dXJuIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcs
IFNSR0JBPHVpbnQ4X3Q+PiB7IHsKLSAgICAgICAgICAgIHsgInRvdWNoc3RhcnQiX3MsIHsgMTkx
LCAxOTEsIDYzLCA1MCB9IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaG1vdmUiX3MsIHsgODAsIDIw
NCwgMjQ1LCA1MCB9IH0sCi0gICAgICAgICAgICB7ICJ0b3VjaGVuZCJfcywgeyAxOTEsIDYzLCAx
MjcsIDUwIH0gfSwKLSAgICAgICAgICAgIHsgInRvdWNoZm9yY2VjaGFuZ2UiX3MsIHsgNjMsIDYz
LCAxOTEsIDUwIH0gfSwKLSAgICAgICAgICAgIHsgIndoZWVsIl9zLCB7IDI1NSwgMTI4LCAwLCA1
MCB9IH0sCi0gICAgICAgICAgICB7ICJtb3VzZWRvd24iX3MsIHsgODAsIDI0NSwgODAsIDUwIH0g
fSwKLSAgICAgICAgICAgIHsgIm1vdXNlbW92ZSJfcywgeyAyNDUsIDI0NSwgODAsIDUwIH0gfSwK
LSAgICAgICAgICAgIHsgIm1vdXNldXAiX3MsIHsgODAsIDI0NSwgMTc2LCA1MCB9IH0KLSAgICAg
ICAgfSB9OwotICAgIH0oKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHJlZ2lvbkNvbG9y
cyB7IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFNSR0JB
PHVpbnQ4X3Q+PiB7IHsKKyAgICAgICAgeyAidG91Y2hzdGFydCJfcywgeyAxOTEsIDE5MSwgNjMs
IDUwIH0gfSwKKyAgICAgICAgeyAidG91Y2htb3ZlIl9zLCB7IDgwLCAyMDQsIDI0NSwgNTAgfSB9
LAorICAgICAgICB7ICJ0b3VjaGVuZCJfcywgeyAxOTEsIDYzLCAxMjcsIDUwIH0gfSwKKyAgICAg
ICAgeyAidG91Y2hmb3JjZWNoYW5nZSJfcywgeyA2MywgNjMsIDE5MSwgNTAgfSB9LAorICAgICAg
ICB7ICJ3aGVlbCJfcywgeyAyNTUsIDEyOCwgMCwgNTAgfSB9LAorICAgICAgICB7ICJtb3VzZWRv
d24iX3MsIHsgODAsIDI0NSwgODAsIDUwIH0gfSwKKyAgICAgICAgeyAibW91c2Vtb3ZlIl9zLCB7
IDI0NSwgMjQ1LCA4MCwgNTAgfSB9LAorICAgICAgICB7ICJtb3VzZXVwIl9zLCB7IDgwLCAyNDUs
IDE3NiwgNTAgfSB9LAorICAgIH0gfSB9OwogICAgIHJldHVybiByZWdpb25Db2xvcnM7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAppbmRleCBj
NmFmMGQ5ODIwMWYxNmM2NDVkZWI2N2Y5MTI0OGI1MDk2YmFkMDk3Li5kZTM3ZmMyMDU5MTRmMTNi
MjM2ZDBmM2E5OTg3YmFjYTJlZWMzM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVVzZXJUaW1pbmcuY3BwCkBAIC00Myw4ICs0Myw3IEBAIHVzaW5nIE5hdmlnYXRpb25U
aW1pbmdGdW5jdGlvbiA9IHVuc2lnbmVkIGxvbmcgbG9uZyAoUGVyZm9ybWFuY2VUaW1pbmc6Oiop
KCkgY29uCiBzdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNo
TWFwPFN0cmluZywgTmF2aWdhdGlvblRpbWluZ0Z1bmN0aW9uPiYgcmVzdHJpY3RlZE1hcmtOYW1l
c1RvTmF2aWdhdGlvblRpbWluZ0Z1bmN0aW9uTWFwKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgc3RhdGljIGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkPE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIE5hdmlnYXRpb25UaW1p
bmdGdW5jdGlvbj4+KHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbWFwID0gTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgTmF2aWdhdGlvblRpbWluZ0Z1
bmN0aW9uPiB7CiAgICAgICAgIHsgImNvbm5lY3RFbmQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6
Y29ubmVjdEVuZCB9LAogICAgICAgICB7ICJjb25uZWN0U3RhcnQiX3MsICZQZXJmb3JtYW5jZVRp
bWluZzo6Y29ubmVjdFN0YXJ0IH0sCiAgICAgICAgIHsgImRvbUNvbXBsZXRlIl9zLCAmUGVyZm9y
bWFuY2VUaW1pbmc6OmRvbUNvbXBsZXRlIH0sCkBAIC02Niw4ICs2NSw3IEBAIHN0YXRpYyBjb25z
dCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBOYXZpZ2F0
aW9uVGltaW5nRnVuCiAgICAgICAgIHsgInNlY3VyZUNvbm5lY3Rpb25TdGFydCJfcywgJlBlcmZv
cm1hbmNlVGltaW5nOjpzZWN1cmVDb25uZWN0aW9uU3RhcnQgfSwKICAgICAgICAgeyAidW5sb2Fk
RXZlbnRFbmQiX3MsICZQZXJmb3JtYW5jZVRpbWluZzo6dW5sb2FkRXZlbnRFbmQgfSwKICAgICAg
ICAgeyAidW5sb2FkRXZlbnRTdGFydCJfcywgJlBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVu
dFN0YXJ0IH0sCi0gICAgfSk7Ci0gICAgCisgICAgfTsKICAgICByZXR1cm4gbWFwOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKaW5k
ZXggZDE1NjE3ODU2NDI5MTMwOWZmYTY5YjQ4YWZiMjM0OGUxYTZhMDk3Mi4uNDAyODUzYzQ4OTUy
MzJmZjUzZGYyYzIzODczMjAyOTllNWZjM2RkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtNDQsMjEgKzQ0LDIxIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBVUkxTY2hlbWVzTWFwIGlzIGEgcGVjdWxpYXIgdHlw
ZSBuYW1lIGdpdmVuIHRoYXQgaXQgaXMgYSBzZXQuCiAKIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVz
TWFwJiBidWlsdGluTG9jYWxVUkxTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJ1aWx0aW5TY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKTsKLXN0YXRpYyBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYnVpbHRpbkVtcHR5RG9jdW1lbnRTY2hlbWVzKCk7Ci1zdGF0aWMgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJ1aWx0aW5DYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdFNjaGVtZXMoKTsK
LXN0YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcygp
Oworc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2VjdXJlU2NoZW1lcygp
Oworc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2NoZW1lc1dpdGhVbmlx
dWVPcmlnaW5zKCk7CitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5FbXB0
eURvY3VtZW50U2NoZW1lcygpOworc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWls
dGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCk7CitzdGF0aWMgU3Bhbjxjb25z
dCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKTsKIAotdXNpbmcgU3Ry
aW5nVmVjdG9yRnVuY3Rpb24gPSBjb25zdCBWZWN0b3I8U3RyaW5nPiYgKCopKCk7Cit1c2luZyBB
U0NJSUxpdGVyYWxTcGFuRnVuY3Rpb24gPSBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gKCopKCk7
CiAKLXN0YXRpYyB2b2lkIGFkZChVUkxTY2hlbWVzTWFwJiBzZXQsIFN0cmluZ1ZlY3RvckZ1bmN0
aW9uIGZ1bmN0aW9uKQorc3RhdGljIHZvaWQgYWRkKFVSTFNjaGVtZXNNYXAmIHNldCwgQVNDSUlM
aXRlcmFsU3BhbkZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIGZvciAoYXV0byYgc2NoZW1lIDog
ZnVuY3Rpb24oKSkKICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwogfQogCi1zdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4gbWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiAoKmZ1bmN0aW9uKSgpKQorc3RhdGljIE5ldmVyRGVzdHJveWVkPFVS
TFNjaGVtZXNNYXA+IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChBU0NJSUxpdGVyYWxTcGFu
RnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgVVJMU2NoZW1lc01hcCBzZXQ7CiAgICAgYWRkKHNl
dCwgZnVuY3Rpb24pOwpAQCAtNjksOCArNjksOCBAQCBzdGF0aWMgTG9jayBzY2hlbWVSZWdpc3Ry
eUxvY2s7CiAKIHN0YXRpYyBjb25zdCBVUkxTY2hlbWVzTWFwJiBhbGxCdWlsdGluU2NoZW1lcygp
CiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBTdHJpbmdWZWN0b3JGdW5jdGlvbiBmdW5jdGlvbnNb
XSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHNjaGVtZXMgPSBbXSB7CisgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uIGZ1bmN0aW9uc1tdIHsKICAg
ICAgICAgICAgIGJ1aWx0aW5TZWN1cmVTY2hlbWVzLAogICAgICAgICAgICAgYnVpbHRpblNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucywKICAgICAgICAgICAgIGJ1aWx0aW5FbXB0eURvY3VtZW50U2No
ZW1lcywKQEAgLTk3LDI2ICs5NywyNSBAQCBzdGF0aWMgY29uc3QgVVJMU2NoZW1lc01hcCYgYWxs
QnVpbHRpblNjaGVtZXMoKQogICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHNjaGVtZVJlZ2lz
dHJ5TG9jayB9OwogICAgICAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBidWlsdGluTG9jYWxV
UkxTY2hlbWVzKCkpCiAgICAgICAgICAgICAgICAgc2V0LmFkZChzY2hlbWUpOwotCi0gICAgICAg
ICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rpb25zKQotICAgICAgICAgICAgICAgIGFk
ZChzZXQsIGZ1bmN0aW9uKTsKICAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9u
IDogZnVuY3Rpb25zKQorICAgICAgICAgICAgYWRkKHNldCwgZnVuY3Rpb24pOwogICAgICAgICBm
b3IgKGF1dG8mIHNjaGVtZSA6IG90aGVyU2NoZW1lcykKICAgICAgICAgICAgIHNldC5hZGQoc2No
ZW1lKTsKICAgICAgICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1
cm4gc2NoZW1lczsKIH0KIAogc3RhdGljIGNvbnN0IFVSTFNjaGVtZXNNYXAmIGJ1aWx0aW5Mb2Nh
bFVSTFNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2spCiB7CiAg
ICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0
IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChVUkxTY2hlbWVzTWFwIHsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQgc2NoZW1lcyA9IFVSTFNjaGVtZXNNYXAgewogICAgICAgICAi
ZmlsZSJfcywKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgImFwcGxld2ViZGF0YSJfcywK
ICNlbmRpZgotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAgLTEz
NCwxMCArMTMzLDkgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIGRpc3BsYXlJc29sYXRlZFVSTFNj
aGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3QKICAgICByZXR1cm4gZGlzcGxh
eUlzb2xhdGVkU2NoZW1lczsKIH0KIAotY29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TZWN1
cmVTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cnlMb2NrKQorc3RhdGlj
IFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2VjdXJlU2NoZW1lcygpCiB7Ci0gICAg
QVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1
dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgewogICAgICAgICAiaHR0cHMiX3MsCiAg
ICAgICAgICJhYm91dCJfcywKICAgICAgICAgImRhdGEiX3MsCkBAIC0xNDUsNyArMTQzLDcgQEAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkgV1RGX1JFUVVJUkVT
X0xPQ0soc2NoZW1lUmVnaXN0cnlMb2MKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQ
RSkKICAgICAgICAgInJlc291cmNlIl9zLAogI2VuZGlmCi0gICAgfSk7CisgICAgfTsKICAgICBy
ZXR1cm4gc2NoZW1lczsKIH0KIApAQCAtMTU2LDE2ICsxNTQsMTUgQEAgc3RhdGljIFVSTFNjaGVt
ZXNNYXAmIHNlY3VyZVNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxv
Y2spCiAgICAgcmV0dXJuIHNlY3VyZVNjaGVtZXM7CiB9CiAKLXN0YXRpYyBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpIFdURl9SRVFVSVJFU19M
T0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4g
YnVpbHRpblNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpCiB7Ci0gICAgQVNTRVJUKHNjaGVtZVJl
Z2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1h
a2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3RyaW5nPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBz
dGQ6OmFycmF5IHNjaGVtZXMgewogICAgICAgICAiYWJvdXQiX3MsCiAgICAgICAgICJqYXZhc2Ny
aXB0Il9zLAogICAgICAgICAvLyBUaGlzIGlzIGFuIGludGVudGlvbmFsIGRpZmZlcmVuY2UgZnJv
bSB0aGUgYmVoYXZpb3IgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBjYWxscyBmb3IuCiAgICAgICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKICAg
ICAgICAgImRhdGEiX3MsCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc2NoZW1lczsKIH0K
IApAQCAtMTc2LDEwICsxNzMsOSBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhV
bmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0cgogICAgIHJldHVy
biBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
dWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKQorc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRl
cmFsPiBidWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChWZWN0b3I8U3RyaW5nPiB7ICJhYm91dCJfcyB9KTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXkgc2NoZW1lcyB7ICJhYm91dCJfcyB9OwogICAgIHJldHVybiBzY2hlbWVzOwog
fQogCkBAIC0xOTcsMTAgKzE5Myw5IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzRm9y
YmlkZGVuRnJvbURvbWFpblJlbGF4YXRpb24oKQogICAgIHJldHVybiBzY2hlbWVzOwogfQogCi1j
b25zdCBWZWN0b3I8U3RyaW5nPiYgYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2No
ZW1lcygpIFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKK3N0YXRpYyBTcGFu
PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2No
ZW1lcygpCiB7Ci0gICAgQVNTRVJUKHNjaGVtZVJlZ2lzdHJ5TG9jay5pc0hlbGQoKSk7Ci0gICAg
c3RhdGljIGNvbnN0IGF1dG8gc2NoZW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8U3Ry
aW5nPiB7ICJibG9iIl9zIH0pOworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBzY2hl
bWVzIHsgImJsb2IiX3MgfTsKICAgICByZXR1cm4gc2NoZW1lczsKIH0KIApAQCAtMjYzLDEwICsy
NTgsOSBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nl
c3NJblByaXZhdGVCcm93c2luZygpCiAgICAgcmV0dXJuIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNl
QWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc7CiB9CiAKLWNvbnN0IFZlY3RvcjxTdHJpbmc+JiBidWls
dGluQ09SU0VuYWJsZWRTY2hlbWVzKCkKK3N0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4g
YnVpbHRpbkNPUlNFbmFibGVkU2NoZW1lcygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBzY2hlbWVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZl
Y3RvcjxTdHJpbmc+IHsgImh0dHAiX3MsICJodHRwcyJfcyB9KTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7ICJodHRwIl9zLCAiaHR0cHMiX3MgfTsKICAgICByZXR1
cm4gc2NoZW1lczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcAppbmRleCA0OGUyMGNmNDdjOTI4YmNkMGY3ZmVhOTIxMDA0MTc0MTc1ZDQ2ZTNjLi4z
MDAzZWUwMzU5MzBmM2E2YjFkYTY0NTA5MWRkMWMzMjNiMzhlNjY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMTkzLDggKzE5Myw4IEBAIGNv
bnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwgc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVU
eXBlQXJyYXlbXSA9IHsKIAogSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkKIHsKLSAg
ICBzdGF0aWMgYXV0byBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7Ci0gICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0
cmluZz4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCB0eXBlcyA9IFtdIHsKKyAgICAgICAg
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gdHlwZXMgPSBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7CiAgICAgICAgICAgICAidGV4dC9odG1sIl9zLAogICAg
ICAgICAgICAgInRleHQveG1sIl9zLAogICAgICAgICAgICAgInRleHQveHNsIl9zLApAQCAtMjE3
LDI1ICsyMTcsMjUgQEAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUkKICAgICAgICAgLy8gVGhpcyBj
YW4gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGllcy4KICAgICAg
ICAgfTsKICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVU
eXBlQXJyYXkpCi0gICAgICAgICAgICBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy5hZGQodHlw
ZS5saXRlcmFsKTsKKyAgICAgICAgICAgIHR5cGVzLmFkZCh0eXBlLmxpdGVyYWwpOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQotICAgICAgICBBcmNoaXZlRmFjdG9y
eTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZXMpOworICAgICAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlw
ZXModHlwZXMpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiBzdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlczsKLSAgICB9KCkpOwotICAgIHJldHVybiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlczsK
KyAgICAgICAgcmV0dXJuIHR5cGVzOworICAgIH0oKTsKKyAgICByZXR1cm4gdHlwZXM7CiB9CiAK
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlw
ZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0
IGF1dG8gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewot
ICAgICAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBzdXBwb3J0
ZWRNZWRpYU1JTUVUeXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdHlwZXMgPSBbXSB7
CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHR5cGVz
OwogI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgTWVkaWFQbGF5ZXI6OmdldFN1cHBvcnRlZFR5
cGVzKHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKTsKKyAgICAgICAgTWVkaWFQbGF5ZXI6OmdldFN1
cHBvcnRlZFR5cGVzKHR5cGVzKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gc3VwcG9ydGVkTWVk
aWFNSU1FVHlwZXM7Ci0gICAgfSgpKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlw
ZXM7CisgICAgICAgIHJldHVybiB0eXBlczsKKyAgICB9KCk7CisgICAgcmV0dXJuIHR5cGVzOwog
fQogCiBjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHBkZk1JTUVUeXBlQXJyYXlb
XSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBp
bGVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxl
clNlcnZpY2UuY3BwCmluZGV4IDc2NmJjMmIwMGEzOTBmZjhmZjY0Yjc3ZmYwZjFjNWY3YzYxZTk0
ZTUuLjE2Nzk5MTFiNTg3ZjQxMzdiZDdkN2NjODBmYjYyNTM5NTA0Y2M1NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcApA
QCAtNTgsMjAgKzU4LDE4IEBAIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkKICAg
ICByZXR1cm4gKmhhc0FHWENvbXBpbGVyU2VydmljZTsKIH0KIAotY29uc3QgVmVjdG9yPEFTQ0lJ
TGl0ZXJhbD4mIGFneENvbXBpbGVyU2VydmljZXMoKQorU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+
IGFneENvbXBpbGVyU2VydmljZXMoKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwot
ICAgIHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3Rv
cjxBU0NJSUxpdGVyYWw+IHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2Vydmlj
ZXMgewogICAgICAgICAiY29tLmFwcGxlLkFHWENvbXBpbGVyU2VydmljZSJfcywKICAgICAgICAg
ImNvbS5hcHBsZS5BR1hDb21waWxlclNlcnZpY2UtUzJBOCJfcwotICAgIH0pOworICAgIH07CiAg
ICAgcmV0dXJuIHNlcnZpY2VzOwogfQogCi1jb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgYWd4
Q29tcGlsZXJDbGFzc2VzKCkKK1NwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBhZ3hDb21waWxlckNs
YXNzZXMoKQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0YXRpYyBjb25z
dCBhdXRvIGlva2l0Q2xhc3NlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRl
cmFsPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IGNsYXNzZXMgewogICAgICAg
ICAiQUdYQ29tbWFuZFF1ZXVlIl9zLAogICAgICAgICAiQUdYRGV2aWNlIl9zLAogICAgICAgICAi
QUdYU2hhcmVkVXNlckNsaWVudCJfcywKQEAgLTgyLDggKzgwLDggQEAgY29uc3QgVmVjdG9yPEFT
Q0lJTGl0ZXJhbD4mIGFneENvbXBpbGVyQ2xhc3NlcygpCiAgICAgICAgICJJT0FjY2VsU2hhcmVk
VXNlckNsaWVudCJfcywKICAgICAgICAgIklPQWNjZWxTaGFyZWRVc2VyQ2xpZW50MiJfcywKICAg
ICAgICAgIklPQWNjZWxTdWJtaXR0ZXIyIl9zLAotICAgIH0pOwotICAgIHJldHVybiBpb2tpdENs
YXNzZXM7CisgICAgfTsKKyAgICByZXR1cm4gY2xhc3NlczsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuaAppbmRleCBlNmJk
NTdhZGM5MGExZWRhOGRhNjQxN2MzMDk2OWEyMzRhZjBiMTM3Li42NTZjMWU3YjlmYjgwOTYwZDQ5
ZDE4ZmE4OTkwZTJiNGY5ZDk5ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuaApAQCAtMzMsOCArMzMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2
aWNlKCk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERldmljZUhhc0FHWENvbXBpbGVyU2Vydmlj
ZUZvclRlc3RpbmcoKTsKLVdFQkNPUkVfRVhQT1JUIGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+
JiBhZ3hDb21waWxlclNlcnZpY2VzKCk7Ci1XRUJDT1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8QVND
SUlMaXRlcmFsPiYgYWd4Q29tcGlsZXJDbGFzc2VzKCk7CitXRUJDT1JFX0VYUE9SVCBTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gYWd4Q29tcGlsZXJTZXJ2aWNlcygpOworV0VCQ09SRV9FWFBPUlQg
U3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGFneENvbXBpbGVyQ2xhc3NlcygpOwogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlD
b2NvYS5tbQppbmRleCAwZTJmYmExYmUxMDY3NTRjZjY3OWYwNzY4MzQ5NTBiYWUzZWU0NzlkLi4x
YWI2ODQ3ZjhhMzg0OTdkNDIzYWJmNTQ2ZWE3N2I2ZGEyOTk4NGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE1lbW9yeUNvbXBh
Y3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIE1lbW9yeUNvbXBhY3RMb29rdXBP
bmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+PiYgZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkK
IHsKLSAgICBzdGF0aWMgYXV0byBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBleHRlbnNpb25zRm9yTUlN
RVR5cGVNYXAgPSBbXSB7CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaE1hcDxTdHJpbmcsIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxT
dHJpbmc+PiBtYXA7CiAKICAgICAgICAgYXV0byBhZGRFeHRlbnNpb24gPSBbJl0oY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikgewpAQCAtNzMsNyArNzMsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAKICAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCkpOworICAgIH0oKTsK
IAogICAgIHJldHVybiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9SZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNv
Y29hLm1tCmluZGV4IGYzMDhhOGQyY2E4ZTk4ZmJjYmZiMDllNzQ0ZDczN2VmZDRiNmE5ZjMuLjQ1
NGE0YjZmYmUxNzAyYzZkZTk2MWUzMGFhZDc3ZTNmMDgzNzg4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1JlbW90ZUNvbW1hbmRMaXN0ZW5lckNv
Y29hLm1tCkBAIC0zMSwzNyArMzEsMzMgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKKyNpbXBvcnQgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgorCiAj
aW1wb3J0ICJNZWRpYVJlbW90ZVNvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TVJNZWRpYVJlbW90ZUNvbW1hbmQ+IG1lZGlhUmVtb3RlQ29t
bWFuZEZvclBsYXRmb3JtQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJv
bENvbW1hbmRUeXBlIGNvbW1hbmQpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY29tbWFuZE1h
cCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHVzaW5nIENvbW1hbmRUb0FjdGlv
bk1hcCA9IEhhc2hNYXA8UGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSwgTVJNZWRpYVJlbW90ZUNvbW1hbmQsIFdURjo6SW50SGFzaDxQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0
czxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlPj47Ci0KLSAg
ICAgICAgcmV0dXJuIENvbW1hbmRUb0FjdGlvbk1hcCB7Ci0gICAgICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpQbGF5Q29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQbGF5IH0sCi0g
ICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1hbmQsIE1STWVkaWFS
ZW1vdGVDb21tYW5kUGF1c2UgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlN0b3BDb21tYW5kLCBNUk1lZGlhUmVtb3RlQ29tbWFuZFN0b3AgfSwKLSAgICAgICAgICAgIHsg
UGxhdGZvcm1NZWRpYVNlc3Npb246OlRvZ2dsZVBsYXlQYXVzZUNvbW1hbmQsIE1STWVkaWFSZW1v
dGVDb21tYW5kVG9nZ2xlUGxheVBhdXNlIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
QmVnaW5SZXdpbmQgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246OkVuZFNl
ZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kRW5kUmV3aW5kIH0sCi0g
ICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpCZWdpblNlZWtpbmdGb3J3YXJkQ29t
bWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRCZWdpbkZhc3RGb3J3YXJkIH0sCi0gICAgICAgICAg
ICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVk
aWFSZW1vdGVDb21tYW5kRW5kRmFzdEZvcndhcmQgfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNlZWtUb1BsYXliYWNrUG9zaXRpb25Db21tYW5kLCBNUk1lZGlhUmVtb3Rl
Q29tbWFuZFNlZWtUb1BsYXliYWNrUG9zaXRpb24gfSwKLSAgICAgICAgICAgIHsgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlNraXBGb3J3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lw
Rm9yd2FyZCB9LAotICAgICAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3
YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRTa2lwQmFja3dhcmQgfSwKLSAgICAgICAg
ICAgIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5leHRUcmFja0NvbW1hbmQsIE1STWVkaWFSZW1v
dGVDb21tYW5kTmV4dFRyYWNrIH0sCi0gICAgICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpQcmV2aW91c1RyYWNrQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRQcmV2aW91c1RyYWNr
IH0sCi0gICAgICAgIH07Ci0gICAgfSgpKTsKLQotICAgIGF1dG8gaXQgPSBjb21tYW5kTWFwLmdl
dCgpLmZpbmQoY29tbWFuZCk7Ci0gICAgaWYgKGl0ICE9IGNvbW1hbmRNYXAuZ2V0KCkuZW5kKCkp
Ci0gICAgICAgIHJldHVybiB7IGl0LT52YWx1ZSB9OwotCi0gICAgcmV0dXJuIHsgfTsKKyAgICBz
dGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29u
dHJvbENvbW1hbmRUeXBlLCBNUk1lZGlhUmVtb3RlQ29tbWFuZD4gbWFwcGluZ3NbXSA9IHsKKyAg
ICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheUNvbW1hbmQsIE1STWVkaWFSZW1vdGVD
b21tYW5kUGxheSB9LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZUNvbW1h
bmQsIE1STWVkaWFSZW1vdGVDb21tYW5kUGF1c2UgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6U3RvcENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU3RvcCB9LAorICAgICAg
ICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpUb2dnbGVQbGF5UGF1c2VDb21tYW5kLCBNUk1lZGlh
UmVtb3RlQ29tbWFuZFRvZ2dsZVBsYXlQYXVzZSB9LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpCZWdpblNlZWtpbmdCYWNrd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5k
QmVnaW5SZXdpbmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW5kU2Vla2lu
Z0JhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmRFbmRSZXdpbmQgfSwKKyAgICAg
ICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6QmVnaW5TZWVraW5nRm9yd2FyZENvbW1hbmQsIE1S
TWVkaWFSZW1vdGVDb21tYW5kQmVnaW5GYXN0Rm9yd2FyZCB9LAorICAgICAgICB7IFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpFbmRTZWVraW5nRm9yd2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21t
YW5kRW5kRmFzdEZvcndhcmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2Vl
a1RvUGxheWJhY2tQb3NpdGlvbkNvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2Vla1RvUGxh
eWJhY2tQb3NpdGlvbiB9LAorICAgICAgICB7IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTa2lwRm9y
d2FyZENvbW1hbmQsIE1STWVkaWFSZW1vdGVDb21tYW5kU2tpcEZvcndhcmQgfSwKKyAgICAgICAg
eyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U2tpcEJhY2t3YXJkQ29tbWFuZCwgTVJNZWRpYVJlbW90
ZUNvbW1hbmRTa2lwQmFja3dhcmQgfSwKKyAgICAgICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
TmV4dFRyYWNrQ29tbWFuZCwgTVJNZWRpYVJlbW90ZUNvbW1hbmROZXh0VHJhY2sgfSwKKyAgICAg
ICAgeyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJldmlvdXNUcmFja0NvbW1hbmQsIE1STWVkaWFS
ZW1vdGVDb21tYW5kUHJldmlvdXNUcmFjayB9LAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBTb3J0ZWRBcnJheU1hcCBtYXAgeyBtYXBwaW5ncyB9OworICAgIGlmIChhdXRvKiB2YWx1ZSA9
IG1hcC50cnlHZXQoY29tbWFuZCkpCisgICAgICAgIHJldHVybiAqdmFsdWU7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUNvbW1hbmRMaXN0ZW5l
ckNvY29hPiBSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYTo6Y3JlYXRlKFJlbW90ZUNvbW1hbmRM
aXN0ZW5lckNsaWVudCYgY2xpZW50KQpAQCAtMTQwLDcgKzEzNiw3IEBAIFJlbW90ZUNvbW1hbmRM
aXN0ZW5lckNvY29hOjpSZW1vdGVDb21tYW5kTGlzdGVuZXJDb2NvYShSZW1vdGVDb21tYW5kTGlz
dGVuZXJDbGllCiAKICAgICAgICAgTE9HKE1lZGlhLCAiUmVtb3RlQ29tbWFuZExpc3RlbmVyQ29j
b2E6OlJlbW90ZUNvbW1hbmRMaXN0ZW5lckNvY29hIC0gcmVjZWl2ZWQgY29tbWFuZCAldSIsIGNv
bW1hbmQpOwogCi0gICAgICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUgcGxhdGZvcm1Db21tYW5kIHsgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vQ29tbWFu
ZCB9OworICAgICAgICBhdXRvIHBsYXRmb3JtQ29tbWFuZCB7IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpOb0NvbW1hbmQgfTsKICAgICAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1h
bmRBcmd1bWVudCBhcmd1bWVudDsKICAgICAgICAgTVJNZWRpYVJlbW90ZUNvbW1hbmRIYW5kbGVy
U3RhdHVzIHN0YXR1cyA9IE1STWVkaWFSZW1vdGVDb21tYW5kSGFuZGxlclN0YXR1c1N1Y2Nlc3M7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IGQ5MjVkMDVmYTFkYzBhMGNk
YWZlYjdjNjZiMTdjZjMwODk0OWNmOWQuLjc3ZDE1N2UzNjMyNzZlNmYxZmE5NTFlOGEyZTc0MGZh
ZjkyZTU3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaApAQCAtODgsNyArODgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwogCi0gICAg
c3RhdGljIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgb2JzZXJ2ZWRFdmVudE5hbWVzKCk7Cisg
ICAgc3RhdGljIFNwYW48Y29uc3QgQXRvbVN0cmluZz4gb2JzZXJ2ZWRFdmVudE5hbWVzKCk7CiAg
ICAgY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAKICAgICBSZWZQdHI8SFRNTFZp
ZGVvRWxlbWVudD4gbV92aWRlb0VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50
Lm1tCmluZGV4IDFhNTI2YzgzM2YzOGEzYzIwNjM2OWRjOTdiY2M3NzZlZTM1YTA1ZTAuLjZiNWUx
ZGQzNTg3MmJhMDNiZjVhMWViMTg3NzVkMjA1OWIxNGU3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50Lm1tCkBAIC0xNzgsMTAgKzE3OCwxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0xheWVyR3Jhdml0eShNZWRpYVBsYXllcjo6Vmlk
ZW9HcgogICAgICAgICBtX3ZpZGVvRWxlbWVudC0+c2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShn
cmF2aXR5KTsKIH0KIAotY29uc3QgVmVjdG9yPEF0b21TdHJpbmc+JiBWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6b2JzZXJ2ZWRFdmVudE5hbWVzKCkKK1NwYW48Y29uc3QgQXRvbVN0
cmluZz4gVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6Om9ic2VydmVkRXZlbnROYW1l
cygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gbmFtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
VmVjdG9yPEF0b21TdHJpbmc+IHsgZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50IH0pOwotICAgIHJl
dHVybiBuYW1lczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgbmFtZXMgPSBzdGQ6OmFycmF5
IHsgZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50IH07CisgICAgcmV0dXJuIG5hbWVzLmdldCgpOwog
fQogCiBjb25zdCBBdG9tU3RyaW5nJiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6
ZXZlbnROYW1lQWxsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmNwcAppbmRleCA0YmE3NWJmMDBkOWY3MTNiNWFmYmJhNzkzNDAxOTcx
NmNkOGYwMzgyLi45YzcwNTU1YjM1ODg1NDFhNmU0NGJlMWJkMjRjZTJmNzM5YWI4NDVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHku
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmVjdG9yPENETVBy
b3h5RmFjdG9yeSo+JiBDRE1Qcm94eUZhY3Rvcnk6OnJlZ2lzdGVyZWRGYWN0b3JpZXMoKQogewot
ICAgIHN0YXRpYyBhdXRvIGZhY3RvcmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChwbGF0Zm9ybVJl
Z2lzdGVyRmFjdG9yaWVzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBmYWN0b3JpZXMg
PSBwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKCk7CiAgICAgcmV0dXJuIGZhY3RvcmllczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CmluZGV4IDdhZjk3ODZmZWUyMzk4ZmIwMzhjYjljNDg5NWE3OTdkYzk3ZTFhMmIuLjRjMWRmZGNk
Yjk5N2ZiZmE1MDBjYWFkMTliOGZiMDdkZDZhM2Q0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3Rh
dGljIGJvb2wgdXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcm
IGZhbWlseSkKIHsKICAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHNldCA9IFtdIHsKICAgICAgICAgTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKICAgICAgICAg
YXV0byBhZGQgPSBbJnNldF0gKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxVQ2hhcj4gdW5pY29kZU5hbWUpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG5hbWVMZW5ndGgg
PSBzdHJsZW4obmFtZSk7CkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBib29sIHVzZUJhY2tzbGFz
aEFzWWVuU2lnbkZvckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIGFk
ZCgiTVMgTWluY2hvIiwgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDY2MEUsIDB4NjcxRCB9
KTsKICAgICAgICAgYWRkKCJNZWlyeW8iLCB7IDB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4MzBB
QSB9KTsKICAgICAgICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICByZXR1
cm4gc2V0LmdldCgpLmNvbnRhaW5zKGZhbWlseSk7CiB9CiAKQEAgLTM3Myw3ICszNzMsNyBAQCBi
b29sIEZvbnRDYXNjYWRlOjpoYXNWYWxpZEF2ZXJhZ2VDaGFyV2lkdGgoKSBjb25zdAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBjb25zdCBhdXRvIG1hcCA9IG1h
a2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8
QXRvbVN0cmluZz4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBtYXAgPSBNZW1vcnlDb21w
YWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4gewogICAgICAgICAiQW1l
cmljYW4gVHlwZXdyaXRlciJfcywKICAgICAgICAgIkFyaWFsIEhlYnJldyJfcywKICAgICAgICAg
IkNoYWxrYm9hcmQiX3MsCkBAIC00MDgsNyArNDA4LDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6aGFz
VmFsaWRBdmVyYWdlQ2hhcldpZHRoKCkgY29uc3QKICAgICAgICAgIiNIZWFkTGluZUEiX3MsCiAg
ICAgICAgICIjUENNeXVuZ2pvIl9zLAogICAgICAgICAiI1BpbEdpIl9zLAotICAgIH0pOworICAg
IH07CiAgICAgcmV0dXJuICFtYXAuZ2V0KCkuY29udGFpbnMoZmFtaWx5KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
N2M1NDk0N2Y0ZDgxNDA4NTU5Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OS4uNzNlZmNhMmFkZDEyMTA3
Yzg3MmFiYTdmZmI1ZGFmNzMxOTBiNjc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2
b2lkIHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoRmFjdG9yeVZlY3RvciYgZmFjdG9yaWVzKQog
CiBzdGF0aWMgRmFjdG9yeVZlY3RvciYgaW5zdGFsbGVkRmFjdG9yaWVzKCkKIHsKLSAgICBzdGF0
aWMgYXV0byBmYWN0b3JpZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8RmFjdG9yeVZlY3Rvcj4oeyB9
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RmFjdG9yeVZlY3Rvcj4gZmFjdG9yaWVzOwog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyByZWdpc3RlckRlZmF1bHRzOwogICAgIHN0ZDo6Y2Fs
bF9vbmNlKHJlZ2lzdGVyRGVmYXVsdHMsIFsmXSB7CiAgICAgICAgIHBsYXRmb3JtUmVnaXN0ZXJG
YWN0b3JpZXMoZmFjdG9yaWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemUuaAppbmRleCA1ZWY4NzZmOWYzODY5OTA3NTMzY2FiODcwMTQ0MGYyNjVhYzA2ZmViLi41
NTY2ZWJiZjEzYjdiZjVjMzk5MmFjZGQ4NjdhNTNiODIzM2M5ZTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC02NywyNCArNjcsMjQgQEAgY2xhc3Mg
RmxvYXRTaXplOwogCiBjbGFzcyBJbnRTaXplIHsKIHB1YmxpYzoKLSAgICBJbnRTaXplKCkgOiBt
X3dpZHRoKDApLCBtX2hlaWdodCgwKSB7IH0KLSAgICBJbnRTaXplKGludCB3aWR0aCwgaW50IGhl
aWdodCkgOiBtX3dpZHRoKHdpZHRoKSwgbV9oZWlnaHQoaGVpZ2h0KSB7IH0KKyAgICBjb25zdGV4
cHIgSW50U2l6ZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgSW50U2l6ZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpIDogbV93aWR0aCh3aWR0aCksIG1faGVpZ2h0KGhlaWdodCkgeyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgSW50U2l6ZShjb25zdCBGbG9hdFNpemUmKTsgLy8gZG9u
J3QgZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKLSAgICAKLSAgICBpbnQgd2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1faGVpZ2h0OyB9CiAKLSAgICBmbG9hdCBtaW5EaW1lbnNpb24oKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om1pbihtX3dpZHRoLCBtX2hlaWdodCk7IH0KLSAgICBmbG9hdCBtYXhEaW1lbnNp
b24oKSBjb25zdCB7IHJldHVybiBzdGQ6Om1heChtX3dpZHRoLCBtX2hlaWdodCk7IH0KKyAgICBj
b25zdGV4cHIgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgIGNvbnN0
ZXhwciBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKworICAgIGNvbnN0
ZXhwciBpbnQgbWluRGltZW5zaW9uKCkgY29uc3QgeyByZXR1cm4gc3RkOjptaW4obV93aWR0aCwg
bV9oZWlnaHQpOyB9CisgICAgY29uc3RleHByIGludCBtYXhEaW1lbnNpb24oKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om1heChtX3dpZHRoLCBtX2hlaWdodCk7IH0KIAogICAgIHZvaWQgc2V0V2lkdGgo
aW50IHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQogICAgIHZvaWQgc2V0SGVpZ2h0KGludCBo
ZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9Ci0gICAgYm9vbCBpc1pl
cm8oKSBjb25zdCB7IHJldHVybiAhbV93aWR0aCAmJiAhbV9oZWlnaHQ7IH0KKyAgICBjb25zdGV4
cHIgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0
IDw9IDA7IH0KKyAgICBjb25zdGV4cHIgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbV93
aWR0aCAmJiAhbV9oZWlnaHQ7IH0KKworICAgIGNvbnN0ZXhwciBmbG9hdCBhc3BlY3RSYXRpbygp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihtX3dpZHRoKSAvIHN0YXRpY19jYXN0
PGZsb2F0PihtX2hlaWdodCk7IH0KIAotICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fd2lkdGgpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1f
aGVpZ2h0KTsgfQotICAgIAogICAgIHZvaWQgZXhwYW5kKGludCB3aWR0aCwgaW50IGhlaWdodCkK
ICAgICB7CiAgICAgICAgIG1fd2lkdGggKz0gd2lkdGg7CkBAIC0xMDIsMTggKzEwMiwxOCBAQCBw
dWJsaWM6CiAgICAgICAgIG1fd2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PGZs
b2F0PihtX3dpZHRoKSAqIHdpZHRoU2NhbGUpOwogICAgICAgICBtX2hlaWdodCA9IHN0YXRpY19j
YXN0PGludD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1faGVpZ2h0KSAqIGhlaWdodFNjYWxlKTsKICAg
ICB9Ci0gICAgCisKICAgICB2b2lkIHNjYWxlKGZsb2F0IHNjYWxlKQogICAgIHsKICAgICAgICAg
dGhpcy0+c2NhbGUoc2NhbGUsIHNjYWxlKTsKICAgICB9CiAKLSAgICBJbnRTaXplIGV4cGFuZGVk
VG8oY29uc3QgSW50U2l6ZSYgb3RoZXIpIGNvbnN0CisgICAgY29uc3RleHByIEludFNpemUgZXhw
YW5kZWRUbyhjb25zdCBJbnRTaXplJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBJbnRTaXplKHN0ZDo6bWF4KG1fd2lkdGgsIG90aGVyLm1fd2lkdGgpLCBzdGQ6Om1heChtX2hl
aWdodCwgb3RoZXIubV9oZWlnaHQpKTsKICAgICB9CiAKLSAgICBJbnRTaXplIHNocnVua1RvKGNv
bnN0IEludFNpemUmIG90aGVyKSBjb25zdAorICAgIGNvbnN0ZXhwciBJbnRTaXplIHNocnVua1Rv
KGNvbnN0IEludFNpemUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEludFNp
emUoc3RkOjptaW4obV93aWR0aCwgb3RoZXIubV93aWR0aCksIHN0ZDo6bWluKG1faGVpZ2h0LCBv
dGhlci5tX2hlaWdodCkpOwogICAgIH0KQEAgLTEzMyw4ICsxMzMsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIGNvbnN0cmFpbmVkQmV0d2Vlbihjb25zdCBJbnRTaXpl
JiBtaW4sIGNvbnN0IEludFNpemUmIG1heCkgY29uc3Q7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCA9IENyYXNoT25PdmVyZmxvdz4KLSAgICBDaGVja2VkPHVuc2lnbmVkLCBUPiBhcmVhKCkg
Y29uc3QKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUID0gQ3Jhc2hPbk92ZXJmbG93PiBDaGVja2Vk
PHVuc2lnbmVkLCBUPiBhcmVhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBDaGVja2Vk
PHVuc2lnbmVkLCBUPihhYnMobV93aWR0aCkpICogYWJzKG1faGVpZ2h0KTsKICAgICB9CkBAIC0x
NDQsMTIgKzE0MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oYWJzKG1fd2lkdGgpKSAqIGFicyhtX2hlaWdodCk7CiAgICAgfQogCi0gICAgaW50IGRp
YWdvbmFsTGVuZ3RoU3F1YXJlZCgpIGNvbnN0CisgICAgY29uc3RleHByIGludCBkaWFnb25hbExl
bmd0aFNxdWFyZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fd2lkdGggKiBtX3dp
ZHRoICsgbV9oZWlnaHQgKiBtX2hlaWdodDsKICAgICB9CiAKLSAgICBJbnRTaXplIHRyYW5zcG9z
ZWRTaXplKCkgY29uc3QKKyAgICBjb25zdGV4cHIgSW50U2l6ZSB0cmFuc3Bvc2VkU2l6ZSgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gSW50U2l6ZShtX2hlaWdodCwgbV93aWR0aCk7CiAg
ICAgfQpAQCAtMTc3LDcgKzE3Niw4IEBAIHB1YmxpYzoKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0
b0pTT05PYmplY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBpbnQgbV93aWR0aCwgbV9oZWln
aHQ7CisgICAgaW50IG1fd2lkdGggeyAwIH07CisgICAgaW50IG1faGVpZ2h0IHsgMCB9OwogfTsK
IAogaW5saW5lIEludFNpemUmIG9wZXJhdG9yKz0oSW50U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYg
YikKQEAgLTE5NCwyNyArMTk0LDI3IEBAIGlubGluZSBJbnRTaXplJiBvcGVyYXRvci09KEludFNp
emUmIGEsIGNvbnN0IEludFNpemUmIGIpCiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBJbnRT
aXplIG9wZXJhdG9yKyhjb25zdCBJbnRTaXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQorY29uc3Rl
eHByIEludFNpemUgb3BlcmF0b3IrKGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIp
CiB7CiAgICAgcmV0dXJuIEludFNpemUoYS53aWR0aCgpICsgYi53aWR0aCgpLCBhLmhlaWdodCgp
ICsgYi5oZWlnaHQoKSk7CiB9CiAKLWlubGluZSBJbnRTaXplIG9wZXJhdG9yLShjb25zdCBJbnRT
aXplJiBhLCBjb25zdCBJbnRTaXplJiBiKQorY29uc3RleHByIEludFNpemUgb3BlcmF0b3ItKGNv
bnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCiB7CiAgICAgcmV0dXJuIEludFNpemUo
YS53aWR0aCgpIC0gYi53aWR0aCgpLCBhLmhlaWdodCgpIC0gYi5oZWlnaHQoKSk7CiB9CiAKLWlu
bGluZSBJbnRTaXplIG9wZXJhdG9yLShjb25zdCBJbnRTaXplJiBzaXplKQorY29uc3RleHByIElu
dFNpemUgb3BlcmF0b3ItKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIEludFNp
emUoLXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCitjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCiB7CiAgICAg
cmV0dXJuIGEud2lkdGgoKSA9PSBiLndpZHRoKCkgJiYgYS5oZWlnaHQoKSA9PSBiLmhlaWdodCgp
OwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFNpemUmIGEsIGNvbnN0IElu
dFNpemUmIGIpCitjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFNpemUmIGEsIGNv
bnN0IEludFNpemUmIGIpCiB7CiAgICAgcmV0dXJuIGEud2lkdGgoKSAhPSBiLndpZHRoKCkgfHwg
YS5oZWlnaHQoKSAhPSBiLmhlaWdodCgpOwogfQpAQCAtMjI0LDE2ICsyMjQsMTMgQEAgV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNv
bnN0IEludFNpemUmKTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7
CisKIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OkludFNpemU+OwogdGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpJbnRTaXplPjsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgVHlwZT4gc3RydWN0IExvZ0FyZ3VtZW50OwotdGVtcGxhdGUgPD4KLXN0cnVjdCBM
b2dBcmd1bWVudDxXZWJDb3JlOjpJbnRTaXplPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNp
emUudG9KU09OU3RyaW5nKCk7Ci0gICAgfQordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dB
cmd1bWVudDsKK3RlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkludFNpemU+
IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUpIHsgcmV0dXJuIHNpemUudG9KU09OU3RyaW5nKCk7IH0KIH07Ci19CiAKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5k
ZXggYzk5OGQ5ZjY0NzBlODBmOGQ0Y2RkNWUxMjY2ZjA1YjEyYmQ2MTA5ZS4uNDgxMWJlNzliNTk1
N2RmOTAyNDNiMzJlMTU0NDkwODE1ZjBhMzE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTEwOTUsNyArMTA5NSw3
IEBAIFdURkxvZ0NoYW5uZWwmIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bG9nQ2hh
bm5lbCgpIGNvbnN0CiAKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnN0YXRpY01JTUVUeXBlTGlz
dCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCBjYWNoZSA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+IHsKICAgICAgICAgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIl9zLAogICAg
ICAgICAiYXBwbGljYXRpb24veC1tcGVndXJsIl9zLAogICAgICAgICAiYXVkaW8vM2dwcCJfcywK
QEAgLTExMjcsNyArMTEyNyw3IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+JiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246CiAgICAgICAgICJ2
aWRlby94LW00diJfcywKICAgICAgICAgInZpZGVvL3gtbXBlZyJfcywKICAgICAgICAgInZpZGVv
L3gtbXBnIl9zLAotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIGNhY2hlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcAppbmRleCA5Y2M4NGFjNDI2MzhjMjg1MWQxOTFlYWRjM2E1MDgzZGI4MjFiNjcx
Li43N2RjMmU3ODI0OTQ2MDI2MTU0YTEwYzU0NjBjYmUyNjg4Mzc5NGI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKQEAgLTE3NjQsMTIgKzE3NjQsMTAgQEAgdm9pZCBBVkZXcmFwcGVyOjpjaGVja1BsYXlh
YmlsaXR5KCkKIHsKICAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5
KCVwKSIsIHRoaXMpOwogCi0gICAgc3RhdGljIGF1dG8gcHJvcGVydHlLZXlOYW1lID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgY29uc3Qgdm9pZCoga2V5TmFtZXNbXSA9IHsKLSAg
ICAgICAgICAgIEFWQ0ZBc3NldFByb3BlcnR5UGxheWFibGUKLSAgICAgICAgfTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgcHJvcGVydHlLZXlOYW1lID0gW10geworICAgICAgICBjb25zdCB2
b2lkKiBrZXlOYW1lc1tdID0geyBBVkNGQXNzZXRQcm9wZXJ0eVBsYXlhYmxlIH07CiAgICAgICAg
IHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwga2V5TmFtZXMsIHN0ZDo6c2l6ZShrZXlO
YW1lcyksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICB9KCkpOworICAgIH0oKTsKIAog
ICAgIEFWQ0ZBc3NldExvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvclByb3BlcnRpZXMoYXZBc3Nl
dCgpLCBwcm9wZXJ0eUtleU5hbWUuZ2V0KCkuZ2V0KCksIGxvYWRQbGF5YWJsZUNvbXBsZXRpb25D
YWxsYmFjaywgY2FsbGJhY2tDb250ZXh0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcAppbmRleCAyZmMx
ODc5NjRjNDMxZDFhOTczNDkyN2JhZDQwNmVkOWY2YjRmZjY3Li42OTk5MDRhZjIzZGExNzk4NmNk
NWM3ODc3OWExMjBiNGQyNjY2YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcApAQCAtNTAsOCArNTAsNyBA
QCBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKIHsKICAgICBpZiAodHlwZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCBtYXAgPSBIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+IHsKICAgICAgICAgeyAicHVibGljLmh0bWwiX3MsICJodG1sIl9zIH0sCiAg
ICAgICAgIHsgInB1YmxpYy5qcGVnIl9zLCAianBlZyJfcyB9LAogICAgICAgICB7ICJwdWJsaWMu
anBlZy0yMDAwIl9zLCAianAyIl9zIH0sCkBAIC03Nyw3ICs3Niw3IEBAIFN0cmluZyBwcmVmZXJy
ZWRFeHRlbnNpb25Gb3JJbWFnZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICB7ICJj
b20ubmV0c2NhcGUuamF2YXNjcmlwdC1zb3VyY2UiX3MsICJqcyJfcyB9LAogICAgICAgICB7ICJj
b20uc2dpLnNnaS1pbWFnZSJfcywgInNnaSJfcyB9LAogICAgICAgICB7ICJjb20udHJ1ZXZpc2lv
bi50Z2EtaW1hZ2UiX3MsICJ0Z2EiX3MgfSwKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBt
YXAuZ2V0KCkuZ2V0KHR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9VVElSZWdpc3RyeS5jcHAKaW5kZXggYTQ3MDI0NDBlZGZiMDMyMmZlYWY3
Y2Q5MWI2ZWFkNDA3YjNjOTIwYS4uNDZmNjk0MTdmZDI2ZjMxNTRjMDQ5YWRkN2I5NWZkMDdkNDQ0
ZmQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJ
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1VU
SVJlZ2lzdHJ5LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNv
bnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBkZWZh
dWx0U3VwcG9ydGVkSW1hZ2VUeXBlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gZGVmYXVs
dFN1cHBvcnRlZEltYWdlVHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZCBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcyA9IFtdIHsKICAgICAg
ICAgSGFzaFNldDxTdHJpbmc+IGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzID0gewogICAgICAg
ICAgICAgImNvbS5jb21wdXNlcnZlLmdpZiJfcywKICAgICAgICAgICAgICJjb20ubWljcm9zb2Z0
LmJtcCJfcywKQEAgLTc1LDcgKzc1LDcgQEAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4mIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGUKICAgICAg
ICAgICAgICAgICBmaWx0ZXJlZC5hZGQoaW1hZ2VUeXBlKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gZmlsdGVyZWQ7Ci0gICAgfSgpKTsKKyAgICB9KCk7CiAKICAgICByZXR1cm4gZGVmYXVs
dFN1cHBvcnRlZEltYWdlVHlwZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKaW5k
ZXggNWE0ZWNlNjkyODFhN2Y2NjFjMjUzZmY3OTU2NTY3MTc3OTk4Y2RhMC4uZTVhZjNkZTZiMjM3
OTBjYWIyNDQ3NzlkY2I0ZTBmOGZlYzE1Mzc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29h
LmNwcApAQCAtODIsMTEgKzgyLDExIEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxTeXN0
ZW1Gb250S2luZD4gbWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0IEF0b21TdHJpbmcmCiAgICAgYXV0
byBjb21wYXJlQXNQb2ludGVyID0gW10oY29uc3QgQXRvbVN0cmluZyYgbGhzLCBjb25zdCBBdG9t
U3RyaW5nJiByaHMpIHsKICAgICAgICAgcmV0dXJuIGxocy5pbXBsKCkgPCByaHMuaW1wbCgpOwog
ICAgIH07Ci0gICAgc3RhdGljIGF1dG8gc3RyaW5ncyA9IG1ha2VOZXZlckRlc3Ryb3llZChbJmNv
bXBhcmVBc1BvaW50ZXJdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3RyaW5ncyA9IFsm
Y29tcGFyZUFzUG9pbnRlcl0gewogICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRBcnJheTxB
dG9tU3RyaW5nPihzdHlsZXMpOwogICAgICAgICBzdGQ6OnNvcnQocmVzdWx0LmJlZ2luKCksIHJl
c3VsdC5lbmQoKSwgY29tcGFyZUFzUG9pbnRlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfSgpKTsKKyAgICB9KCk7CiAgICAgaWYgKHN0ZDo6YmluYXJ5X3NlYXJjaChzdHJpbmdzLmdl
dCgpLmJlZ2luKCksIHN0cmluZ3MuZ2V0KCkuZW5kKCksIHN0cmluZywgY29tcGFyZUFzUG9pbnRl
cikpCiAgICAgICAgIHJldHVybiBTeXN0ZW1Gb250S2luZDo6VGV4dFN0eWxlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGRlNmRlYmUyYmQ0Y2ExMzYwNDBmYzBjM2E0
NWRjNGVhMzlmNDg5ZDAuLjhmNWU4NzkwZjJmZTEwYmExMjNmMTNmMjAzY2M3ZTMxZWNhOTFkZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01NTUsMjAgKzU1NSwxNiBA
QCBwcml2YXRlOgogCiBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6d2VibU1JTUVUeXBlcygpCiB7Ci0gICAgc3Rh
dGljIGF1dG8gdHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotCisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkIHR5cGVzID0gW10gewogICAgICAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiB0eXBlczsKLQogI2lmIEVOQUJMRShWUDkpCiAgICAgICAgIHR5
cGVzLmFkZCgidmlkZW8vd2VibSIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZPUkJJUykgfHwgRU5B
QkxFKE9QVVMpCiAgICAgICAgIHR5cGVzLmFkZCgiYXVkaW8vd2VibSIpOwogI2VuZGlmCi0KICAg
ICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7Ci0KKyAgICB9KCk7CiAgICAgcmV0dXJuIHR5
cGVzOwogfQogCkBAIC0xNTMzLDEzICsxNTI5LDEzIEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQgZHVyYXRpb24pCiAKIGNv
bnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+JiBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRWaWRlb0NvZGVjcygpCiB7Ci0gICAgc3RhdGlj
IGF1dG8gY29kZWNzID0gbWFrZU5ldmVyRGVzdHJveWVkPE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaFNldDxTdHJpbmc+Pih7ICJWX1ZQOCJfcywgIlZfVlA5Il9zIH0pOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZCBjb2RlY3MgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hTZXQ8U3RyaW5nPiB7ICJWX1ZQOCJfcywgIlZfVlA5Il9zIH07CiAgICAgcmV0
dXJuIGNvZGVjczsKIH0KIAogY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoU2V0PFN0cmluZz4mIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZEF1ZGlvQ29k
ZWNzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBjb2RlY3MgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8TWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PFN0cmluZz4+KHsgIkFfVk9SQklT
Il9zLCAiQV9PUFVTIl9zIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBjb2RlY3MgPSBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8U3RyaW5nPiB7ICJBX1ZPUkJJ
UyJfcywgIkFfT1BVUyJfcyB9OwogICAgIHJldHVybiBjb2RlY3M7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4IGVhMmU4NjEzNDM1YWFkZmI4
YTM4OGMwYzZlNWZlYWU1YWJmMWI0N2UuLmQxZWFkYWRmOWRjYmZiOTM0NWEyMmVkODA0ODExMWVh
NGM0MmNjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1h
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5t
bQpAQCAtMTE2LDkgKzExNiw5IEBAIHN0YXRpYyBGb250Q2FzY2FkZSBjYXNjYWRlRm9yU3lzdGVt
Rm9udChDR0Zsb2F0IHNpemUpCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhF
bGVtZW50JiBsaW5rRWxlbWVudCwgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFRleHRJ
bmRpY2F0b3JEYXRhJiBpbmRpY2F0b3JEYXRhLCBGb250UmVuZGVyaW5nTW9kZSwgZmxvYXQpCiB7
CiAgICAgLy8gRklYTUU6IE1vc3Qgb2YgdGhpcyBjYW4gZ28gYXdheSBvbmNlIHdlIGNhbiB1c2Ug
VUlVUkxEcmFnUHJldmlld1ZpZXcgdW5jb25kaXRpb25hbGx5LgotICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IGRyYWdJbWFnZVBhZGRpbmcgPSAxMDsKLSAgICBzdGF0aWMgY29uc3QgYXV0byB0aXRs
ZUZvbnRDYXNjYWRlID0gbWFrZU5ldmVyRGVzdHJveWVkKGNhc2NhZGVGb3JTeXN0ZW1Gb250KDE2
KSk7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gdXJsRm9udENhc2NhZGUgPSBtYWtlTmV2ZXJEZXN0
cm95ZWQoY2FzY2FkZUZvclN5c3RlbUZvbnQoMTQpKTsKKyAgICBjb25zdGV4cHIgQ0dGbG9hdCBk
cmFnSW1hZ2VQYWRkaW5nID0gMTA7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkIHRp
dGxlRm9udENhc2NhZGUgPSBjYXNjYWRlRm9yU3lzdGVtRm9udCgxNik7CisgICAgc3RhdGljIGNv
bnN0IE5ldmVyRGVzdHJveWVkIHVybEZvbnRDYXNjYWRlID0gY2FzY2FkZUZvclN5c3RlbUZvbnQo
MTQpOwogCiAgICAgU3RyaW5nIHRvcFN0cmluZyh0aXRsZS5zdHJpcFdoaXRlU3BhY2UoKSk7CiAg
ICAgU3RyaW5nIGJvdHRvbVN0cmluZyhbKE5TVVJMICopdXJsIGFic29sdXRlU3RyaW5nXSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3Ry
aW5nRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRl
ZFN0cmluZ0V4dHJhcy5tbQppbmRleCA2YjI4NGEwNGJiYzVkY2FjYzY4NDA5Y2YxMDBmZDY2MzFi
NzE4MGE5Li40NmZiMjhlODE1MjQzYjBlODQ3YzA3MjNlMTc2YjdjYzJmNmEwMDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0
cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRT
dHJpbmdFeHRyYXMubW0KQEAgLTQyLDExICs0MiwxMSBAQCBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0
dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKE5TQXR0cmlidXRl
ZAogewogICAgIE5TUmFuZ2UgYXR0YWNobWVudFJhbmdlOwogICAgIE5TU3RyaW5nICpvcmlnaW5h
bFN0cmluZyA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107Ci0gICAgc3RhdGljIGF1dG8gYXR0
YWNobWVudENoYXJTdHJpbmcgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCBhdHRhY2htZW50Q2hhclN0cmluZyA9IFtdIHsKICAgICAgICAgdW5pY2hh
ciBjaGFyc1syXSA9IHsgTlNBdHRhY2htZW50Q2hhcmFjdGVyLCAwIH07CiAgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ2hhcmFjdGVyczpjaGFycyBsZW5n
dGg6MV0pOwotICAgIH0oKSk7Ci0gICAgCisgICAgfSgpOworCiAgICAgYXR0YWNobWVudFJhbmdl
ID0gW29yaWdpbmFsU3RyaW5nIHJhbmdlT2ZTdHJpbmc6YXR0YWNobWVudENoYXJTdHJpbmcuZ2V0
KCkuZ2V0KCldOwogICAgIGlmIChhdHRhY2htZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3Vu
ZCAmJiBhdHRhY2htZW50UmFuZ2UubGVuZ3RoID4gMCkgewogICAgICAgICBhdXRvIG5ld0F0dHJp
YnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFthdHRyaWJ1dGVkU3RyaW5nIG11dGFibGVDb3B5V2l0aFpv
bmU6TlVMTF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5LmNwcAppbmRleCAwNTBjZGY5ZmM1MzIwMmQ4MTAwYmVmNzMyMzM3NTliNjc0YmM3OGE2
Li5mZWQ1YmYzMTkzZmU1M2VmNDEwZDgyODk1MTQ5M2M5NmEwMGNjMjU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNh
cGFiaWxpdGllcy9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmNwcApAQCAtNjgsNyAr
NjgsNyBAQCBzdGF0aWMgRmFjdG9yeVZlY3RvciBkZWZhdWx0RmFjdG9yaWVzKCkKIAogc3RhdGlj
IEZhY3RvcnlWZWN0b3ImIGZhY3RvcmllcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gZmFjdG9yaWVz
ID0gbWFrZU5ldmVyRGVzdHJveWVkPEZhY3RvcnlWZWN0b3I+KGRlZmF1bHRGYWN0b3JpZXMoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGZhY3RvcmllcyA9IGRlZmF1bHRGYWN0b3JpZXMo
KTsKICAgICByZXR1cm4gZmFjdG9yaWVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZVZpZGVvQ2FwdHVyZVNv
dXJjZS5jcHAKaW5kZXggOGVhNjE0NzIxZDMwMjNhOGJiMTIwNGJkOTE4MmY2MDQyNmI0MTY5ZC4u
M2UzZjQxYTFjNTgwN2U2Y2QzNTlkZTNkZjI2YWU3MmQ1NTFjZDU4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
VmlkZW9DYXB0dXJlU291cmNlLmNwcApAQCAtOTcsNTQgKzk3LDQ3IEBAIHZvaWQgUmVhbHRpbWVW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldFN1cHBvcnRlZFByZXNldHMoY29uc3QgVmVjdG9yPFJlZjxW
aWRlb1ByZXNlCiAgICAgfQogfQogCi1jb25zdCBWZWN0b3I8SW50U2l6ZT4mIFJlYWx0aW1lVmlk
ZW9DYXB0dXJlU291cmNlOjpzdGFuZGFyZFZpZGVvU2l6ZXMoKQorU3Bhbjxjb25zdCBJbnRTaXpl
PiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZTo6c3RhbmRhcmRWaWRlb1NpemVzKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgYXV0byBzaXplcyA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAg
ICAgIHN0YXRpYyBJbnRTaXplIHZpZGVvU2l6ZXNbXSA9IHsKLSAgICAgICAgICAgIHsgMTEyLCAx
MTIgfSwKLSAgICAgICAgICAgIHsgMTYwLCAxNjAgfSwKLSAgICAgICAgICAgIHsgMTYwLCAxMjAg
fSwgLy8gNDozLCBRUVZHQQotICAgICAgICAgICAgeyAxNzYsIDE0NCB9LCAvLyA0OjMsIFFDSUYK
LSAgICAgICAgICAgIHsgMTkyLCAxOTIgfSwKLSAgICAgICAgICAgIHsgMTkyLCAxMTIgfSwgLy8g
MTY6OQotICAgICAgICAgICAgeyAxOTIsIDE0NCB9LCAvLyAzOjQKLSAgICAgICAgICAgIHsgMjQw
LCAyNDAgfSwKLSAgICAgICAgICAgIHsgMjQwLCAxNjAgfSwgLy8gMzoyLCBIUVZHQQotICAgICAg
ICAgICAgeyAzMjAsIDMyMCB9LAotICAgICAgICAgICAgeyAzMjAsIDE4MCB9LCAvLyAxNjo5Ci0g
ICAgICAgICAgICB7IDMyMCwgMjQwIH0sIC8vIDQ6MywgUVZHQQotICAgICAgICAgICAgeyAzNTIs
IDI4OCB9LCAvLyBDSUYKLSAgICAgICAgICAgIHsgNDgwLCAyNzIgfSwgLy8gMTY6OQotICAgICAg
ICAgICAgeyA0ODAsIDM2MCB9LCAvLyA0OjMKLSAgICAgICAgICAgIHsgNDgwLCA0ODAgfSwKLSAg
ICAgICAgICAgIHsgNjQwLCA2NDAgfSwKLSAgICAgICAgICAgIHsgNjQwLCAzNjAgfSwgLy8gMTY6
OSwgMzYwcCBuSEQKLSAgICAgICAgICAgIHsgNjQwLCA0ODAgfSwgLy8gNDozCi0gICAgICAgICAg
ICB7IDcyMCwgNzIwIH0sCi0gICAgICAgICAgICB7IDgwMCwgNjAwIH0sIC8vIDQ6MywgU1ZHQQot
ICAgICAgICAgICAgeyA5NjAsIDU0MCB9LCAvLyAxNjo5LCBxSEQKLSAgICAgICAgICAgIHsgMTAy
NCwgNjAwIH0sIC8vIDE2OjksIFdTVkdBCi0gICAgICAgICAgICB7IDEwMjQsIDc2OCB9LCAvLyA0
OjMsIFhHQQotICAgICAgICAgICAgeyAxMjgwLCA5NjAgfSwgLy8gNDozCi0gICAgICAgICAgICB7
IDEyODAsIDEwMjQgfSwgLy8gNTo0LCBTWEdBCi0gICAgICAgICAgICB7IDEyODAsIDcyMCB9LCAv
LyAxNjo5LCBXWEdBCi0gICAgICAgICAgICB7IDEzNjYsIDc2OCB9LCAvLyAxNjo5LCBIRAotICAg
ICAgICAgICAgeyAxNjAwLCAxMjAwfSwgLy8gNDozLCBVWEdBCi0gICAgICAgICAgICB7IDE5MjAs
IDEwODAgfSwgLy8gMTY6OSwgMTA4MHAgRkhECi0gICAgICAgICAgICB7IDI1NjAsIDE0NDAgfSwg
Ly8gMTY6OSwgUUhECi0gICAgICAgICAgICB7IDI1OTIsIDE5MzYgfSwKLSAgICAgICAgICAgIHsg
MzI2NCwgMjQ0OCB9LCAvLyAzOjQKLSAgICAgICAgICAgIHsgMzg0MCwgMjE2MCB9LCAvLyAxNjo5
LCA0SyBVSEQKLSAgICAgICAgfTsKLSAgICAgICAgVmVjdG9yPEludFNpemU+IHNpemVzOwotICAg
ICAgICBmb3IgKGF1dG8mIHNpemUgOiB2aWRlb1NpemVzKQotICAgICAgICAgICAgc2l6ZXMuYXBw
ZW5kKHNpemUpOwotCi0gICAgICAgIHJldHVybiBzaXplczsKLSAgICB9KCkpOwotCi0gICAgcmV0
dXJuIHNpemVzLmdldCgpOworICAgIHN0YXRpYyBjb25zdGV4cHIgSW50U2l6ZSBzaXplc1tdID0g
eworICAgICAgICB7IDExMiwgMTEyIH0sCisgICAgICAgIHsgMTYwLCAxNjAgfSwKKyAgICAgICAg
eyAxNjAsIDEyMCB9LCAvLyA0OjMsIFFRVkdBCisgICAgICAgIHsgMTc2LCAxNDQgfSwgLy8gNDoz
LCBRQ0lGCisgICAgICAgIHsgMTkyLCAxOTIgfSwKKyAgICAgICAgeyAxOTIsIDExMiB9LCAvLyAx
Njo5CisgICAgICAgIHsgMTkyLCAxNDQgfSwgLy8gMzo0CisgICAgICAgIHsgMjQwLCAyNDAgfSwK
KyAgICAgICAgeyAyNDAsIDE2MCB9LCAvLyAzOjIsIEhRVkdBCisgICAgICAgIHsgMzIwLCAzMjAg
fSwKKyAgICAgICAgeyAzMjAsIDE4MCB9LCAvLyAxNjo5CisgICAgICAgIHsgMzIwLCAyNDAgfSwg
Ly8gNDozLCBRVkdBCisgICAgICAgIHsgMzUyLCAyODggfSwgLy8gQ0lGCisgICAgICAgIHsgNDgw
LCAyNzIgfSwgLy8gMTY6OQorICAgICAgICB7IDQ4MCwgMzYwIH0sIC8vIDQ6MworICAgICAgICB7
IDQ4MCwgNDgwIH0sCisgICAgICAgIHsgNjQwLCA2NDAgfSwKKyAgICAgICAgeyA2NDAsIDM2MCB9
LCAvLyAxNjo5LCAzNjBwIG5IRAorICAgICAgICB7IDY0MCwgNDgwIH0sIC8vIDQ6MworICAgICAg
ICB7IDcyMCwgNzIwIH0sCisgICAgICAgIHsgODAwLCA2MDAgfSwgLy8gNDozLCBTVkdBCisgICAg
ICAgIHsgOTYwLCA1NDAgfSwgLy8gMTY6OSwgcUhECisgICAgICAgIHsgMTAyNCwgNjAwIH0sIC8v
IDE2OjksIFdTVkdBCisgICAgICAgIHsgMTAyNCwgNzY4IH0sIC8vIDQ6MywgWEdBCisgICAgICAg
IHsgMTI4MCwgOTYwIH0sIC8vIDQ6MworICAgICAgICB7IDEyODAsIDEwMjQgfSwgLy8gNTo0LCBT
WEdBCisgICAgICAgIHsgMTI4MCwgNzIwIH0sIC8vIDE2OjksIFdYR0EKKyAgICAgICAgeyAxMzY2
LCA3NjggfSwgLy8gMTY6OSwgSEQKKyAgICAgICAgeyAxNjAwLCAxMjAwIH0sIC8vIDQ6MywgVVhH
QQorICAgICAgICB7IDE5MjAsIDEwODAgfSwgLy8gMTY6OSwgMTA4MHAgRkhECisgICAgICAgIHsg
MjU2MCwgMTQ0MCB9LCAvLyAxNjo5LCBRSEQKKyAgICAgICAgeyAyNTkyLCAxOTM2IH0sCisgICAg
ICAgIHsgMzI2NCwgMjQ0OCB9LCAvLyAzOjQKKyAgICAgICAgeyAzODQwLCAyMTYwIH0sIC8vIDE2
OjksIDRLIFVIRAorICAgIH07CisgICAgcmV0dXJuIHNpemVzOwogfQorCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVmFsdWVUeXBlPgogc3RhdGljIHZvaWQgdXBkYXRlTWluTWF4KFZhbHVlVHlwZSYgbWlu
LCBWYWx1ZVR5cGUmIG1heCwgVmFsdWVUeXBlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lVmlkZW9DYXB0
dXJlU291cmNlLmgKaW5kZXggODUzYjBiMjgzZTkwMWEwYmE0Yzk1OGYxZGQ3NWRhODZhNGYzOTEz
MS4uNzAxNzJhYWU1NmNkNGZhNWY1ZWRmZjdmZDQ0OGI1ZjM5NWNkMThhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVWaWRlb0NhcHR1cmVT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZVZpZGVvQ2FwdHVyZVNvdXJjZS5oCkBAIC03Myw3ICs3Myw4IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHVwZGF0ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJik7
CiAKICAgICB2b2lkIGRpc3BhdGNoTWVkaWFTYW1wbGVUb09ic2VydmVycyhNZWRpYVNhbXBsZSYs
IFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpOwotICAgIGNvbnN0IFZlY3RvcjxJbnRTaXpl
PiYgc3RhbmRhcmRWaWRlb1NpemVzKCk7CisKKyAgICBzdGF0aWMgU3Bhbjxjb25zdCBJbnRTaXpl
PiBzdGFuZGFyZFZpZGVvU2l6ZXMoKTsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2FwdHVyZVNp
emVBbmRGcmFtZVJhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCBjNzFmODZh
M2MyOGNkNWRlYmZkMmVkODFlNzZmNTg1NTg5YjBjODZiLi5iMDAyMTBmY2I5ZGY1MzAxMGE4NDYw
ZThkMzI2NGNhMjZmYTg4YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMjI5
LDIxICsyMjksMTggQEAgcHJpdmF0ZToKIAogc3RhdGljIFZlY3RvcjxNb2NrTWVkaWFEZXZpY2U+
JiBkZXZpY2VzKCkKIHsKLSAgICBzdGF0aWMgYXV0byBkZXZpY2VzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKFtdIHsKLSAgICAgICAgcmV0dXJuIGRlZmF1bHREZXZpY2VzKCk7Ci0gICAgfSgpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgZGV2aWNlcyA9IGRlZmF1bHREZXZpY2VzKCk7CiAgICAg
cmV0dXJuIGRldmljZXM7CiB9CiAKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgTW9ja01lZGlhRGV2
aWNlPiYgZGV2aWNlTWFwKCkKIHsKLSAgICBzdGF0aWMgYXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0
cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBtYXAgPSBbXSB7CiAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBNb2NrTWVkaWFEZXZpY2U+IG1hcDsKICAgICAgICAgZm9yIChhdXRv
JiBkZXZpY2UgOiBkZXZpY2VzKCkpCiAgICAgICAgICAgICBtYXAuYWRkKGRldmljZS5wZXJzaXN0
ZW50SWQsIGRldmljZSk7Ci0KICAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCkpOworICAgIH0o
KTsKICAgICByZXR1cm4gbWFwOwogfQogCkBAIC0zOTYsNTcgKzM5Myw1MyBAQCBzdGQ6Om9wdGlv
bmFsPENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJl
RGV2aWNlV2l0aFBlcgogCiBWZWN0b3I8Q2FwdHVyZURldmljZT4mIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjptaWNyb3Bob25lRGV2aWNlcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gbWlj
cm9waG9uZURldmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZCBtaWNyb3Bob25lRGV2aWNlcyA9IFtdIHsKICAgICAgICAgVmVjdG9yPENhcHR1
cmVEZXZpY2U+IG1pY3JvcGhvbmVEZXZpY2VzOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRl
dmljZSA6IGRldmljZXMoKSkgewogICAgICAgICAgICAgaWYgKGRldmljZS5pc01pY3JvcGhvbmUo
KSkKICAgICAgICAgICAgICAgICBtaWNyb3Bob25lRGV2aWNlcy5hcHBlbmQodG9DYXB0dXJlRGV2
aWNlKGRldmljZSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtaWNyb3Bob25lRGV2aWNl
czsKLSAgICB9KCkpOwotCisgICAgfSgpOwogICAgIHJldHVybiBtaWNyb3Bob25lRGV2aWNlczsK
IH0KIAogVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
cjo6c3BlYWtlckRldmljZXMoKQogewotICAgIHN0YXRpYyBhdXRvIHNwZWFrZXJEZXZpY2VzID0g
bWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3BlYWtl
ckRldmljZXMgPSBbXSB7CiAgICAgICAgIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBzcGVha2VyRGV2
aWNlczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkZXZpY2UgOiBkZXZpY2VzKCkpIHsKICAg
ICAgICAgICAgIGlmIChkZXZpY2UuaXNTcGVha2VyKCkpCiAgICAgICAgICAgICAgICAgc3BlYWtl
ckRldmljZXMuYXBwZW5kKHRvQ2FwdHVyZURldmljZShkZXZpY2UpKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gc3BlYWtlckRldmljZXM7Ci0gICAgfSgpKTsKLQorICAgIH0oKTsKICAgICBy
ZXR1cm4gc3BlYWtlckRldmljZXM7CiB9CiAKIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnZpZGVvRGV2aWNlcygpCiB7Ci0gICAgc3RhdGljIGF1
dG8gdmlkZW9EZXZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQgdmlkZW9EZXZpY2VzID0gW10gewogICAgICAgICBWZWN0b3I8Q2FwdHVyZURl
dmljZT4gdmlkZW9EZXZpY2VzOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRldmljZSA6IGRl
dmljZXMoKSkgewogICAgICAgICAgICAgaWYgKGRldmljZS5pc0NhbWVyYSgpKQogICAgICAgICAg
ICAgICAgIHZpZGVvRGV2aWNlcy5hcHBlbmQodG9DYXB0dXJlRGV2aWNlKGRldmljZSkpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiB2aWRlb0RldmljZXM7Ci0gICAgfSgpKTsKLQorICAgIH0o
KTsKICAgICByZXR1cm4gdmlkZW9EZXZpY2VzOwogfQogCiBWZWN0b3I8Q2FwdHVyZURldmljZT4m
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpkaXNwbGF5RGV2aWNlcygpCiB7Ci0gICAg
c3RhdGljIGF1dG8gZGlzcGxheURldmljZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZCBkaXNwbGF5RGV2aWNlcyA9IFtdIHsKICAgICAgICAgVmVj
dG9yPENhcHR1cmVEZXZpY2U+IGRpc3BsYXlEZXZpY2VzOwogICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGRldmljZSA6IGRldmljZXMoKSkgewogICAgICAgICAgICAgaWYgKGRldmljZS5pc0Rpc3Bs
YXkoKSkKICAgICAgICAgICAgICAgICBkaXNwbGF5RGV2aWNlcy5hcHBlbmQoY2FwdHVyZURldmlj
ZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZTo6U2NyZWVuLCBkZXZp
Y2UucGVyc2lzdGVudElkKS52YWx1ZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZGlz
cGxheURldmljZXM7Ci0gICAgfSgpKTsKLQorICAgIH0oKTsKICAgICByZXR1cm4gZGlzcGxheURl
dmljZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAK
aW5kZXggOWRkMmIwYjViOTVhNTA1YTM5MmFiYTk0ODgyZjA1MzFmMzY1ZTkwYi4uZTk0M2Y4NmQ4
YjhhNGJmMTNhNDQwOGI2YTRlNGRkMDcyMDE2ZmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTYzLDEwICs2MywxMCBAQCB2b2lkIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmFyIHJlZ2lzdAogLy8gRklYTUU6IFdoYXQgZG9lcyB0aGUgd29yZCAiY2FjaGUiIG1lYW4gaGVy
ZT8KIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgbWltZVR5cGVDYWNoZSgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gY2FjaGUgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4g
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBjYWNoZSA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKICAgICAgICAgInZpZGVvL21vY2siLAogICAgICAgICAi
YXVkaW8vbW9jayIsCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KaW5kZXggMmIxOWEzYjg2MTA3NWE1MDY5MTcxYmRiN2EzMzA5MmZjMjc2OWFm
Ni4uNTY5ZThiODk0NTIzNmUxZGQyYzUyMjg1ZGI1NjgyOTJmZmM5MjkwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVN
YWMubW0KQEAgLTcyLDEyICs3MiwxMiBAQCBzdGF0aWMgdm9pZCBhcHBseUJhc2ljQXV0aG9yaXph
dGlvbkhlYWRlcihSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IENyZWRlbgogCiBzdGF0
aWMgTlNPcGVyYXRpb25RdWV1ZSAqb3BlcmF0aW9uUXVldWVGb3JBc3luY0NsaWVudHMoKQogewot
ICAgIHN0YXRpYyBhdXRvIHF1ZXVlID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQgcXVldWUgPSBbXSB7CiAgICAgICAgIGF1dG8gcXVldWUgPSBhZG9w
dE5TKFtbTlNPcGVyYXRpb25RdWV1ZSBhbGxvY10gaW5pdF0pOwogICAgICAgICAvLyBEZWZhdWx0
IGNvbmN1cnJlbnQgb3BlcmF0aW9uIGNvdW50IGRlcGVuZHMgb24gY3VycmVudCBzeXN0ZW0gd29y
a2xvYWQsIGJ1dCBkZWxlZ2F0ZSBtZXRob2RzIGFyZSBtb3N0bHkgaWRsaW5nIGluIElQQywgc28g
d2UgY2FuIHJ1biBhcyBtYW55IGFzIG5lZWRlZC4KICAgICAgICAgW3F1ZXVlIHNldE1heENvbmN1
cnJlbnRPcGVyYXRpb25Db3VudDpOU09wZXJhdGlvblF1ZXVlRGVmYXVsdE1heENvbmN1cnJlbnRP
cGVyYXRpb25Db3VudF07CiAgICAgICAgIHJldHVybiBxdWV1ZTsKLSAgICB9KCkpOworICAgIH0o
KTsKICAgICByZXR1cm4gcXVldWUuZ2V0KCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRCb3VuZGFyaWVzLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KaW5kZXggZTE5NDAwOTUx
N2RhMjdhZjMxMjNhZmEwNmQ0YjdhMWZjNTJjNTUyZS4uZjEzYzMzZWJkYzJlZmNhYTQ4ZDMxZDY3
MDcyMzJiMDcyMmE4NGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvVGV4dEJvdW5kYXJpZXMubW0KQEAgLTcxLDExICs3MSwxMSBAQCBzdGF0aWMgYm9vbCBp
c0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKQogCiBzdGF0aWMg
Q0ZTdHJpbmdUb2tlbml6ZXJSZWYgdG9rZW5pemVyRm9yU3RyaW5nKENGU3RyaW5nUmVmIHN0cikK
IHsKLSAgICBzdGF0aWMgYXV0byBsb2NhbGUgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
IHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZCBsb2NhbGUgPSBbXSB7CiAgICAgICAgIGNvbnN0
IGNoYXIqIGxvY2FsSUQgPSBjdXJyZW50VGV4dEJyZWFrTG9jYWxlSUQoKTsKICAgICAgICAgYXV0
byBjdXJyZW50TG9jYWxlSUQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihsb2Nh
bElEKSwgc3RybGVuKGxvY2FsSUQpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NG
QWxsb2NhdG9yTnVsbCkpOwogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50TG9jYWxlSUQuZ2V0KCkpKTsKLSAgICB9KCkpOwor
ICAgIH0oKTsKIAogICAgIGlmICghbG9jYWxlLmdldCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDFkYzE0Y2M1
NTk0YWU4ZDliYWVlYTA1OGM5ZDM2YzNiODBlMzhhNjEuLjQ1NGU2NGM2YmZhNzVmYWZjMmVlOTFl
NzVjZGMyZmM0OGU2Y2Q2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcApAQCAtMTM5MSw4ICsxMzkxLDcgQEAgYXV0byBSZW5kZXJUaGVtZTo6Y29sb3JDYWNoZShP
cHRpb25TZXQ8U3R5bGVDb2xvck9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0IC0+IENvbG8KIAogRm9u
dENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWU6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlw
dGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCkgY29uc3QKIHsKLSAgICBzdGF0aWMgYXV0byBm
b250RGVzY3JpcHRpb25zID0gbWFrZU5ldmVyRGVzdHJveWVkPHN0ZDo6YXJyYXk8Rm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiwgMTA+Pih7IH0pOwotCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0
ZDo6YXJyYXk8Rm9udENhc2NhZGVEZXNjcmlwdGlvbiwgMTA+PiBmb250RGVzY3JpcHRpb25zOwog
ICAgIHN3aXRjaCAoc3lzdGVtRm9udElEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUNhcHRpb246CiAg
ICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb25zLmdldCgpWzBdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQppbmRleCA0YjEzYjVmYjNkN2FlM2NhNDA4
MTk3YzFkMTFiY2UzMTE1YWQ4NjZmLi4xYTY2NzMyMjcyMmFkMzhmYzE1MTRiYmIxMTllZGNlM2E4
ZWY3M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5t
bQpAQCAtMjM2LDcgKzIzNiw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUNvY29hOjptZWRpYUNvbnRy
b2xzRm9ybWF0dGVkU3RyaW5nRm9yRHVyYXRpb24oY29uc3QgZG91YmxlIGR1CiAKIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24mIFJlbmRlclRoZW1lQ29jb2E6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlw
dGlvbihDU1NWYWx1ZUlEIHZhbHVlSUQpIGNvbnN0CiB7Ci0gICAgc3RhdGljIGF1dG8gZm9udERl
c2NyaXB0aW9ucyA9IG1ha2VOZXZlckRlc3Ryb3llZDxzdGQ6OmFycmF5PEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24sIDE3Pj4oeyB9KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjphcnJh
eTxGb250Q2FzY2FkZURlc2NyaXB0aW9uLCAxNz4+IGZvbnREZXNjcmlwdGlvbnM7CiAKICAgICBB
U1NFUlQoc3RkOjphbGxfb2Yoc3RkOjpiZWdpbihmb250RGVzY3JpcHRpb25zLmdldCgpKSwgc3Rk
OjplbmQoZm9udERlc2NyaXB0aW9ucy5nZXQoKSksIFtdKGF1dG8mIGRlc2NyaXB0aW9uKSB7CiAg
ICAgICAgIHJldHVybiAhZGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCAzNzExZDhiZjVmODc1YjIzZTJh
NjM1ZTYwZWFhNzBhNjhmM2FhMTJjLi5jNjkyYjQwNzQyYzM3N2Y5OWYwYzg5NGZiNjI1N2I2MmM0
M2Y0M2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFVuaXRCZXppZXI+
PiBwYXJzZUtleVNwbGluZXMoU3RyaW5nVmlldyBzdHJpbmcpCiAKIGJvb2wgU1ZHQW5pbWF0aW9u
RWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc3VwcG9ydGVkQXR0cmlidXRlcyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHN1cHBvcnRlZEF0
dHJpYnV0ZXMgPSBbXSB7CiAgICAgICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaFNldDxRdWFsaWZpZWROYW1lPiBzZXQ7CiAgICAgICAgIFNWR1Rlc3RzOjphZGRTdXBwb3J0
ZWRBdHRyaWJ1dGVzKHNldCk7CiAgICAgICAgIHNldC5hZGQoewpAQCAtMTQzLDcgKzE0Myw3IEBA
IGJvb2wgU1ZHQW5pbWF0aW9uRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgICAgICBTVkdOYW1lczo6YnlBdHRyLmdldCgp
LAogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIHNldDsKLSAgICB9KCkpOworICAgIH0oKTsK
ICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1
dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKaW5kZXggYzg2ODMzM2U4MzZjYjdlNGUwYjI0OGM5Nzc0MmY1NDkzYmUxZGRkNy4uZjNmZmU2
NGYxYTRkMjdkOTU2NWRhYjY2NzZiZDJkNGE2YmM0ZjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcApAQCAtNzAsODEgKzcwLDgxIEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPEF0b21TdHJpbmcsIENTU1Byb3BlCiAgICAg
dXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwogCiAgICAgLy8gVGhpcyBsaXN0IHNob3VsZCBpbmNs
dWRlIGFsbCBiYXNlIENTUyBhbmQgU1ZHIENTUyBwcm9wZXJ0aWVzIHdoaWNoIGFyZSBleHBvc2Vk
IGFzIFNWRyBYTUwgYXR0cmlidXRlcy4KLSAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSog
Y29uc3QgYXR0cmlidXRlTmFtZXNbXSA9IHsKLSAgICAgICAgJmFsaWdubWVudF9iYXNlbGluZUF0
dHIuZ2V0KCksCi0gICAgICAgICZiYXNlbGluZV9zaGlmdEF0dHIuZ2V0KCksCi0gICAgICAgICZi
dWZmZXJlZF9yZW5kZXJpbmdBdHRyLmdldCgpLAotICAgICAgICAmY2xpcEF0dHIuZ2V0KCksCi0g
ICAgICAgICZjbGlwX3BhdGhBdHRyLmdldCgpLAotICAgICAgICAmY2xpcF9ydWxlQXR0ci5nZXQo
KSwKLSAgICAgICAgJlNWR05hbWVzOjpjb2xvckF0dHIuZ2V0KCksCi0gICAgICAgICZjb2xvcl9p
bnRlcnBvbGF0aW9uQXR0ci5nZXQoKSwKLSAgICAgICAgJmNvbG9yX2ludGVycG9sYXRpb25fZmls
dGVyc0F0dHIuZ2V0KCksCi0gICAgICAgICZjdXJzb3JBdHRyLmdldCgpLAotICAgICAgICAmY3hB
dHRyLmdldCgpLAotICAgICAgICAmY3lBdHRyLmdldCgpLAotICAgICAgICAmU1ZHTmFtZXM6OmRp
cmVjdGlvbkF0dHIuZ2V0KCksCi0gICAgICAgICZkaXNwbGF5QXR0ci5nZXQoKSwKLSAgICAgICAg
JmRvbWluYW50X2Jhc2VsaW5lQXR0ci5nZXQoKSwKLSAgICAgICAgJmZpbGxBdHRyLmdldCgpLAot
ICAgICAgICAmZmlsbF9vcGFjaXR5QXR0ci5nZXQoKSwKLSAgICAgICAgJmZpbGxfcnVsZUF0dHIu
Z2V0KCksCi0gICAgICAgICZmaWx0ZXJBdHRyLmdldCgpLAotICAgICAgICAmZmxvb2RfY29sb3JB
dHRyLmdldCgpLAotICAgICAgICAmZmxvb2Rfb3BhY2l0eUF0dHIuZ2V0KCksCi0gICAgICAgICZm
b250X2ZhbWlseUF0dHIuZ2V0KCksCi0gICAgICAgICZmb250X3NpemVBdHRyLmdldCgpLAotICAg
ICAgICAmZm9udF9zdHJldGNoQXR0ci5nZXQoKSwKLSAgICAgICAgJmZvbnRfc3R5bGVBdHRyLmdl
dCgpLAotICAgICAgICAmZm9udF92YXJpYW50QXR0ci5nZXQoKSwKLSAgICAgICAgJmZvbnRfd2Vp
Z2h0QXR0ci5nZXQoKSwKLSAgICAgICAgJmdseXBoX29yaWVudGF0aW9uX2hvcml6b250YWxBdHRy
LmdldCgpLAotICAgICAgICAmZ2x5cGhfb3JpZW50YXRpb25fdmVydGljYWxBdHRyLmdldCgpLAot
ICAgICAgICAmaW1hZ2VfcmVuZGVyaW5nQXR0ci5nZXQoKSwKLSAgICAgICAgJlNWR05hbWVzOjpo
ZWlnaHRBdHRyLmdldCgpLAotICAgICAgICAma2VybmluZ0F0dHIuZ2V0KCksCi0gICAgICAgICZs
ZXR0ZXJfc3BhY2luZ0F0dHIuZ2V0KCksCi0gICAgICAgICZsaWdodGluZ19jb2xvckF0dHIuZ2V0
KCksCi0gICAgICAgICZtYXJrZXJfZW5kQXR0ci5nZXQoKSwKLSAgICAgICAgJm1hcmtlcl9taWRB
dHRyLmdldCgpLAotICAgICAgICAmbWFya2VyX3N0YXJ0QXR0ci5nZXQoKSwKLSAgICAgICAgJm1h
c2tBdHRyLmdldCgpLAotICAgICAgICAmbWFza190eXBlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9w
YWNpdHlBdHRyLmdldCgpLAotICAgICAgICAmb3ZlcmZsb3dBdHRyLmdldCgpLAotICAgICAgICAm
cGFpbnRfb3JkZXJBdHRyLmdldCgpLAotICAgICAgICAmcG9pbnRlcl9ldmVudHNBdHRyLmdldCgp
LAotICAgICAgICAmckF0dHIuZ2V0KCksCi0gICAgICAgICZyeEF0dHIuZ2V0KCksCi0gICAgICAg
ICZyeUF0dHIuZ2V0KCksCi0gICAgICAgICZzaGFwZV9yZW5kZXJpbmdBdHRyLmdldCgpLAotICAg
ICAgICAmc3RvcF9jb2xvckF0dHIuZ2V0KCksCi0gICAgICAgICZzdG9wX29wYWNpdHlBdHRyLmdl
dCgpLAotICAgICAgICAmc3Ryb2tlQXR0ci5nZXQoKSwKLSAgICAgICAgJnN0cm9rZV9kYXNoYXJy
YXlBdHRyLmdldCgpLAotICAgICAgICAmc3Ryb2tlX2Rhc2hvZmZzZXRBdHRyLmdldCgpLAotICAg
ICAgICAmc3Ryb2tlX2xpbmVjYXBBdHRyLmdldCgpLAotICAgICAgICAmc3Ryb2tlX2xpbmVqb2lu
QXR0ci5nZXQoKSwKLSAgICAgICAgJnN0cm9rZV9taXRlcmxpbWl0QXR0ci5nZXQoKSwKLSAgICAg
ICAgJnN0cm9rZV9vcGFjaXR5QXR0ci5nZXQoKSwKLSAgICAgICAgJnN0cm9rZV93aWR0aEF0dHIu
Z2V0KCksCi0gICAgICAgICZ0ZXh0X2FuY2hvckF0dHIuZ2V0KCksCi0gICAgICAgICZ0ZXh0X2Rl
Y29yYXRpb25BdHRyLmdldCgpLAotICAgICAgICAmdGV4dF9yZW5kZXJpbmdBdHRyLmdldCgpLAot
ICAgICAgICAmdW5pY29kZV9iaWRpQXR0ci5nZXQoKSwKLSAgICAgICAgJnZlY3Rvcl9lZmZlY3RB
dHRyLmdldCgpLAotICAgICAgICAmdmlzaWJpbGl0eUF0dHIuZ2V0KCksCi0gICAgICAgICZTVkdO
YW1lczo6d2lkdGhBdHRyLmdldCgpLAotICAgICAgICAmd29yZF9zcGFjaW5nQXR0ci5nZXQoKSwK
LSAgICAgICAgJndyaXRpbmdfbW9kZUF0dHIuZ2V0KCksCi0gICAgICAgICZ4QXR0ci5nZXQoKSwK
LSAgICAgICAgJnlBdHRyLmdldCgpLAorICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBh
dHRyaWJ1dGVOYW1lcyB7CisgICAgICAgICZhbGlnbm1lbnRfYmFzZWxpbmVBdHRyLAorICAgICAg
ICAmYmFzZWxpbmVfc2hpZnRBdHRyLAorICAgICAgICAmYnVmZmVyZWRfcmVuZGVyaW5nQXR0ciwK
KyAgICAgICAgJmNsaXBBdHRyLAorICAgICAgICAmY2xpcF9wYXRoQXR0ciwKKyAgICAgICAgJmNs
aXBfcnVsZUF0dHIsCisgICAgICAgICZTVkdOYW1lczo6Y29sb3JBdHRyLAorICAgICAgICAmY29s
b3JfaW50ZXJwb2xhdGlvbkF0dHIsCisgICAgICAgICZjb2xvcl9pbnRlcnBvbGF0aW9uX2ZpbHRl
cnNBdHRyLAorICAgICAgICAmY3Vyc29yQXR0ciwKKyAgICAgICAgJmN4QXR0ciwKKyAgICAgICAg
JmN5QXR0ciwKKyAgICAgICAgJlNWR05hbWVzOjpkaXJlY3Rpb25BdHRyLAorICAgICAgICAmZGlz
cGxheUF0dHIsCisgICAgICAgICZkb21pbmFudF9iYXNlbGluZUF0dHIsCisgICAgICAgICZmaWxs
QXR0ciwKKyAgICAgICAgJmZpbGxfb3BhY2l0eUF0dHIsCisgICAgICAgICZmaWxsX3J1bGVBdHRy
LAorICAgICAgICAmZmlsdGVyQXR0ciwKKyAgICAgICAgJmZsb29kX2NvbG9yQXR0ciwKKyAgICAg
ICAgJmZsb29kX29wYWNpdHlBdHRyLAorICAgICAgICAmZm9udF9mYW1pbHlBdHRyLAorICAgICAg
ICAmZm9udF9zaXplQXR0ciwKKyAgICAgICAgJmZvbnRfc3RyZXRjaEF0dHIsCisgICAgICAgICZm
b250X3N0eWxlQXR0ciwKKyAgICAgICAgJmZvbnRfdmFyaWFudEF0dHIsCisgICAgICAgICZmb250
X3dlaWdodEF0dHIsCisgICAgICAgICZnbHlwaF9vcmllbnRhdGlvbl9ob3Jpem9udGFsQXR0ciwK
KyAgICAgICAgJmdseXBoX29yaWVudGF0aW9uX3ZlcnRpY2FsQXR0ciwKKyAgICAgICAgJmltYWdl
X3JlbmRlcmluZ0F0dHIsCisgICAgICAgICZTVkdOYW1lczo6aGVpZ2h0QXR0ciwKKyAgICAgICAg
Jmtlcm5pbmdBdHRyLAorICAgICAgICAmbGV0dGVyX3NwYWNpbmdBdHRyLAorICAgICAgICAmbGln
aHRpbmdfY29sb3JBdHRyLAorICAgICAgICAmbWFya2VyX2VuZEF0dHIsCisgICAgICAgICZtYXJr
ZXJfbWlkQXR0ciwKKyAgICAgICAgJm1hcmtlcl9zdGFydEF0dHIsCisgICAgICAgICZtYXNrQXR0
ciwKKyAgICAgICAgJm1hc2tfdHlwZUF0dHIsCisgICAgICAgICZvcGFjaXR5QXR0ciwKKyAgICAg
ICAgJm92ZXJmbG93QXR0ciwKKyAgICAgICAgJnBhaW50X29yZGVyQXR0ciwKKyAgICAgICAgJnBv
aW50ZXJfZXZlbnRzQXR0ciwKKyAgICAgICAgJnJBdHRyLAorICAgICAgICAmcnhBdHRyLAorICAg
ICAgICAmcnlBdHRyLAorICAgICAgICAmc2hhcGVfcmVuZGVyaW5nQXR0ciwKKyAgICAgICAgJnN0
b3BfY29sb3JBdHRyLAorICAgICAgICAmc3RvcF9vcGFjaXR5QXR0ciwKKyAgICAgICAgJnN0cm9r
ZUF0dHIsCisgICAgICAgICZzdHJva2VfZGFzaGFycmF5QXR0ciwKKyAgICAgICAgJnN0cm9rZV9k
YXNob2Zmc2V0QXR0ciwKKyAgICAgICAgJnN0cm9rZV9saW5lY2FwQXR0ciwKKyAgICAgICAgJnN0
cm9rZV9saW5lam9pbkF0dHIsCisgICAgICAgICZzdHJva2VfbWl0ZXJsaW1pdEF0dHIsCisgICAg
ICAgICZzdHJva2Vfb3BhY2l0eUF0dHIsCisgICAgICAgICZzdHJva2Vfd2lkdGhBdHRyLAorICAg
ICAgICAmdGV4dF9hbmNob3JBdHRyLAorICAgICAgICAmdGV4dF9kZWNvcmF0aW9uQXR0ciwKKyAg
ICAgICAgJnRleHRfcmVuZGVyaW5nQXR0ciwKKyAgICAgICAgJnVuaWNvZGVfYmlkaUF0dHIsCisg
ICAgICAgICZ2ZWN0b3JfZWZmZWN0QXR0ciwKKyAgICAgICAgJnZpc2liaWxpdHlBdHRyLAorICAg
ICAgICAmU1ZHTmFtZXM6OndpZHRoQXR0ciwKKyAgICAgICAgJndvcmRfc3BhY2luZ0F0dHIsCisg
ICAgICAgICZ3cml0aW5nX21vZGVBdHRyLAorICAgICAgICAmeEF0dHIsCisgICAgICAgICZ5QXR0
ciwKICAgICB9OwogCiAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFw
PEF0b21TdHJpbmcsIENTU1Byb3BlcnR5SUQ+IG1hcDsKIAogICAgIGZvciAoYXV0byYgbmFtZSA6
IGF0dHJpYnV0ZU5hbWVzKSB7Ci0gICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSA9
IG5hbWUtPmxvY2FsTmFtZSgpOworICAgICAgICBhdXRvJiBsb2NhbE5hbWUgPSBuYW1lLT5nZXQo
KS5sb2NhbE5hbWUoKTsKICAgICAgICAgbWFwLmFkZChsb2NhbE5hbWUsIGNzc1Byb3BlcnR5SUQo
bG9jYWxOYW1lKSk7CiAgICAgfQogCkBAIC03MTMsMTA5ICs3MTMsMTA5IEBAIGNvbnN0IFJlbmRl
clN0eWxlKiBTVkdFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRT
cGVjaWZpZXIpCiAKIFF1YWxpZmllZE5hbWUgU1ZHRWxlbWVudDo6YW5pbWF0YWJsZUF0dHJpYnV0
ZUZvck5hbWUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKQogewotICAgIHN0YXRpYyBjb25z
dCBhdXRvIGFuaW1hdGFibGVBdHRyaWJ1dGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0IG5hbWVzW10gPSB7Ci0gICAg
ICAgICAgICAmSFRNTE5hbWVzOjpjbGFzc0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFt
ZXM6OmFtcGxpdHVkZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmF6aW11dGhB
dHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpiYXNlRnJlcXVlbmN5QXR0ci5nZXQo
KSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6Ymlhc0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
OjpjeEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmN5QXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZTVkdOYW1lczo6ZGl2aXNvckF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6
OmR4QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZHlBdHRyLmdldCgpLAotICAg
ICAgICAgICAgJlNWR05hbWVzOjplZGdlTW9kZUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZH
TmFtZXM6OmVsZXZhdGlvbkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmV4cG9u
ZW50QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6ZnhBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjpmeUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmdyYWRp
ZW50VHJhbnNmb3JtQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6Z3JhZGllbnRV
bml0c0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmhlaWdodEF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmU1ZHTmFtZXM6OmluMkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZH
TmFtZXM6OmluQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6aW50ZXJjZXB0QXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6azFBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjprMkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OmszQXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6azRBdHRyLmdldCgpLAotICAgICAgICAg
ICAgJlNWR05hbWVzOjprZXJuZWxNYXRyaXhBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05h
bWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6
bGVuZ3RoQWRqdXN0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6bGltaXRpbmdD
b25lQW5nbGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjptYXJrZXJIZWlnaHRB
dHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Om1l
dGhvZEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6Om1vZGVBdHRyLmdldCgpLAot
ICAgICAgICAgICAgJlNWR05hbWVzOjpudW1PY3RhdmVzQXR0ci5nZXQoKSwKLSAgICAgICAgICAg
ICZTVkdOYW1lczo6b2Zmc2V0QXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6b3Bl
cmF0b3JBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpvcmRlckF0dHIuZ2V0KCks
Ci0gICAgICAgICAgICAmU1ZHTmFtZXM6Om9yaWVudEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpw
YXR0ZXJuQ29udGVudFVuaXRzQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cGF0
dGVyblRyYW5zZm9ybUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnBhdHRlcm5V
bml0c0F0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIuZ2V0
KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIuZ2V0KCksCi0gICAgICAg
ICAgICAmU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFt
ZXM6OnByZXNlcnZlQWxwaGFBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpwcmVz
ZXJ2ZUFzcGVjdFJhdGlvQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6cHJpbWl0
aXZlVW5pdHNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpyYWRpdXNBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpyQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZT
VkdOYW1lczo6cmVmWEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnJlZllBdHRy
LmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpyZXN1bHRBdHRyLmdldCgpLAotICAgICAg
ICAgICAgJlNWR05hbWVzOjpyb3RhdGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
OjpyeEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnJ5QXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6c2NhbGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05h
bWVzOjpzZWVkQXR0ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6c2xvcGVBdHRyLmdl
dCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpzcGFjaW5nQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAm
U1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05h
bWVzOjpzcHJlYWRNZXRob2RBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjpzdGFy
dE9mZnNldEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ci5nZXQoKSwK
LSAgICAgICAgICAgICZTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05h
bWVzOjp0YXJnZXRBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp0YXJnZXRYQXR0
ci5nZXQoKSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6dGFyZ2V0WUF0dHIuZ2V0KCksCi0gICAg
ICAgICAgICAmU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZH
TmFtZXM6OnR5cGVBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp2YWx1ZXNBdHRy
LmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp2aWV3Qm94QXR0ci5nZXQoKSwKLSAgICAg
ICAgICAgICZTVkdOYW1lczo6d2lkdGhBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVz
Ojp4MUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OngyQXR0ci5nZXQoKSwKLSAg
ICAgICAgICAgICZTVkdOYW1lczo6eEF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6
OnhDaGFubmVsU2VsZWN0b3JBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp5MUF0
dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnkyQXR0ci5nZXQoKSwKLSAgICAgICAg
ICAgICZTVkdOYW1lczo6eUF0dHIuZ2V0KCksCi0gICAgICAgICAgICAmU1ZHTmFtZXM6OnlDaGFu
bmVsU2VsZWN0b3JBdHRyLmdldCgpLAotICAgICAgICAgICAgJlNWR05hbWVzOjp6QXR0ci5nZXQo
KSwKLSAgICAgICAgICAgICZTVkdOYW1lczo6aHJlZkF0dHIuZ2V0KCksCisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkIGFuaW1hdGFibGVBdHRyaWJ1dGVzID0gW10geworICAgICAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6YXJyYXkgbmFtZXMgeworICAgICAgICAgICAgJkhUTUxOYW1lczo6Y2xh
c3NBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjphbXBsaXR1ZGVBdHRyLAorICAgICAgICAg
ICAgJlNWR05hbWVzOjphemltdXRoQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6YmFzZUZy
ZXF1ZW5jeUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmJpYXNBdHRyLAorICAgICAgICAg
ICAgJlNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
Y3hBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpjeUF0dHIsCisgICAgICAgICAgICAmU1ZH
TmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmRpdmlz
b3JBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpkeEF0dHIsCisgICAgICAgICAgICAmU1ZH
TmFtZXM6OmR5QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZWRnZU1vZGVBdHRyLAorICAg
ICAgICAgICAgJlNWR05hbWVzOjplbGV2YXRpb25BdHRyLAorICAgICAgICAgICAgJlNWR05hbWVz
OjpleHBvbmVudEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWRBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6OmZ4QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ZnlB
dHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsCisgICAg
ICAgICAgICAmU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLAorICAgICAgICAgICAgJlNWR05h
bWVzOjpoZWlnaHRBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjppbjJBdHRyLAorICAgICAg
ICAgICAgJlNWR05hbWVzOjppbkF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmludGVyY2Vw
dEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OmsxQXR0ciwKKyAgICAgICAgICAgICZTVkdO
YW1lczo6azJBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjprM0F0dHIsCisgICAgICAgICAg
ICAmU1ZHTmFtZXM6Oms0QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6a2VybmVsTWF0cml4
QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsCisgICAg
ICAgICAgICAmU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bWFya2Vy
SGVpZ2h0QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLAorICAg
ICAgICAgICAgJlNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjptYXNrVW5p
dHNBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjptZXRob2RBdHRyLAorICAgICAgICAgICAg
JlNWR05hbWVzOjptb2RlQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6bnVtT2N0YXZlc0F0
dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6Om9mZnNldEF0dHIsCisgICAgICAgICAgICAmU1ZH
TmFtZXM6Om9wZXJhdG9yQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6b3JkZXJBdHRyLAor
ICAgICAgICAgICAgJlNWR05hbWVzOjpvcmllbnRBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVz
OjpwYXRoTGVuZ3RoQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRV
bml0c0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLAor
ICAgICAgICAgICAgJlNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLAorICAgICAgICAgICAgJlNW
R05hbWVzOjpwb2ludHNBdFhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpwb2ludHNBdFlB
dHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpwb2ludHNBdFpBdHRyLAorICAgICAgICAgICAg
JlNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cHJl
c2VydmVBc3BlY3RSYXRpb0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnByaW1pdGl2ZVVu
aXRzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cmFkaXVzQXR0ciwKKyAgICAgICAgICAg
ICZTVkdOYW1lczo6ckF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnJlZlhBdHRyLAorICAg
ICAgICAgICAgJlNWR05hbWVzOjpyZWZZQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cmVz
dWx0QXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6cm90YXRlQXR0ciwKKyAgICAgICAgICAg
ICZTVkdOYW1lczo6cnhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpyeUF0dHIsCisgICAg
ICAgICAgICAmU1ZHTmFtZXM6OnNjYWxlQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6c2Vl
ZEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnNsb3BlQXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6c3BhY2luZ0F0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnNwZWN1bGFyQ29u
c3RhbnRBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwK
KyAgICAgICAgICAgICZTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwKKyAgICAgICAgICAgICZT
VkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzdGREZXZp
YXRpb25BdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIsCisgICAg
ICAgICAgICAmU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6OnRhYmxlVmFsdWVzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6dGFyZ2V0QXR0ciwK
KyAgICAgICAgICAgICZTVkdOYW1lczo6dGFyZ2V0WEF0dHIsCisgICAgICAgICAgICAmU1ZHTmFt
ZXM6OnRhcmdldFlBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLAor
ICAgICAgICAgICAgJlNWR05hbWVzOjp0eXBlQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6
dmFsdWVzQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6dmlld0JveEF0dHIsCisgICAgICAg
ICAgICAmU1ZHTmFtZXM6OndpZHRoQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6eDFBdHRy
LAorICAgICAgICAgICAgJlNWR05hbWVzOjp4MkF0dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6
OnhBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwKKyAg
ICAgICAgICAgICZTVkdOYW1lczo6eTFBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVzOjp5MkF0
dHIsCisgICAgICAgICAgICAmU1ZHTmFtZXM6OnlBdHRyLAorICAgICAgICAgICAgJlNWR05hbWVz
Ojp5Q2hhbm5lbFNlbGVjdG9yQXR0ciwKKyAgICAgICAgICAgICZTVkdOYW1lczo6ekF0dHIsCisg
ICAgICAgICAgICAmU1ZHTmFtZXM6OmhyZWZBdHRyLAogICAgICAgICB9OwogICAgICAgICBNZW1v
cnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgUXVhbGlmaWVk
TmFtZT4gbWFwOwogICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lcykgewotICAgICAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtYXAuYWRkKG5hbWUtPmxvY2FsTmFtZSgpLCAqbmFtZSk7Cisg
ICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5hZGQobmFtZS0+Z2V0KCkubG9jYWxOYW1l
KCksICpuYW1lKTsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCkp
OworICAgIH0oKTsKICAgICByZXR1cm4gYW5pbWF0YWJsZUF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KGxv
Y2FsTmFtZSk7CiB9CiAKQEAgLTg2NCw3ICs4NjQsNyBAQCBDU1NQcm9wZXJ0eUlEIFNWR0VsZW1l
bnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUm
CiAgICAgaWYgKCFhdHRyTmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIENTU1Byb3BlcnR5SW52YWxpZDsKIAotICAgIHN0YXRpYyBjb25zdCBhdXRvIHByb3BlcnRp
ZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoY3JlYXRlQXR0cmlidXRlTmFtZVRvQ1NTUHJvcGVydHlJ
RE1hcCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgcHJvcGVydGllcyA9IGNyZWF0ZUF0
dHJpYnV0ZU5hbWVUb0NTU1Byb3BlcnR5SURNYXAoKTsKICAgICByZXR1cm4gcHJvcGVydGllcy5n
ZXQoKS5nZXQoYXR0ck5hbWUubG9jYWxOYW1lKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDRlNGMzOTE1MTVlZjkxMjEw
YTNmMjU2NTUxMmM4ZTc1OGVkNzI2MjIuLjlkZWEwN2UzOTZhMDljNTM0MTFjNDVkNjM5YzVkYWUy
ZDA5NzRjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01J
TEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwCkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6cGFyc2VC
ZWdpbk9yRW5kKGNvbnN0IFN0cmluZyYgcGFyc2VTdHJpbmcsIEJlZ2luT3JFbmQgYmVnaW4KIAog
Ym9vbCBTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc3VwcG9ydGVkQXR0cmli
dXRlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4geworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBzdXBw
b3J0ZWRBdHRyaWJ1dGVzID0gTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0
PFF1YWxpZmllZE5hbWU+IHsKICAgICAgICAgU1ZHTmFtZXM6OmJlZ2luQXR0ciwKICAgICAgICAg
U1ZHTmFtZXM6OmVuZEF0dHIsCiAgICAgICAgIFNWR05hbWVzOjpkdXJBdHRyLApAQCAtNDY4LDcg
KzQ2OCw3IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBTVkdOYW1lczo6YXR0cmlidXRlTmFt
ZUF0dHIsCiAgICAgICAgIFNWR05hbWVzOjpocmVmQXR0ciwKICAgICAgICAgWExpbmtOYW1lczo6
aHJlZkF0dHIsCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRl
cy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAppbmRleCBjZTFjNjUxNzM1ZDE2
OTRiYzczZTZjYjRiYWY3M2M4ZjkzOWM0MDg0Li4zMjJlM2JlMGY3NWRkMGY0N2M1MWY4MzUxNTNh
MjBjY2M3ZGQ5MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTcx
NSw3ICs3MTUsNyBAQCBzdGF0aWMgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNo
TWFwPFN0cmluZywgRnVuY3Rpb25NYXBWYWx1ZT4gY3JlYXRlRgogCiBzdGQ6OnVuaXF1ZV9wdHI8
RnVuY3Rpb24+IEZ1bmN0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBu
dW1Bcmd1bWVudHMpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gZnVuY3Rpb25NYXAgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoY3JlYXRlRnVuY3Rpb25NYXAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkIGZ1bmN0aW9uTWFwID0gY3JlYXRlRnVuY3Rpb25NYXAoKTsKIAogICAgIGF1dG8gaXQg
PSBmdW5jdGlvbk1hcC5nZXQoKS5maW5kKG5hbWUpOwogICAgIGlmIChpdCA9PSBmdW5jdGlvbk1h
cC5nZXQoKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCmluZGV4IGNlMmQwODE1
MmM2YmQyNTBjY2U4OTE4NmI5MDgwYjg3Y2ZkMzYxNWIuLmUzMTU2NWViZTc4ZDliZmRhY2MwZjZh
MWVhMGE1NzJlODU2MmI4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIHN0YXRpYyBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hN
YXA8U3RyaW5nLCBTdGVwOjpBeGlzPiBjcmVhdGVBeGlzTmFtCiAKIHN0YXRpYyBib29sIHBhcnNl
QXhpc05hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdGVwOjpBeGlzJiB0eXBlKQogewotICAgIHN0
YXRpYyBjb25zdCBhdXRvIGF4aXNOYW1lcyA9IG1ha2VOZXZlckRlc3Ryb3llZChjcmVhdGVBeGlz
TmFtZXNNYXAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGF4aXNOYW1lcyA9IGNyZWF0
ZUF4aXNOYW1lc01hcCgpOwogICAgIGF1dG8gaXQgPSBheGlzTmFtZXMuZ2V0KCkuZmluZChuYW1l
KTsKICAgICBpZiAoaXQgPT0gYXhpc05hbWVzLmdldCgpLmVuZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAppbmRleCAzNTViYjg0ZmNiYTdkNmVhYmFhOTc1MjAyMjc2YmU5YWIzZTZmZmI3
Li4wMWI3NWU0ODdhZTQ1MmZiYTRkZjY5MDhlNzBjZTc5ZjY0ODU5MjQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTI1
Miw3ICsyNTIsNyBAQCBzdGF0aWMgYm9vbCBuZWVkc05ld0NyZWF0ZVRhYmxlU2NoZW1hKGNvbnN0
IFN0cmluZyYgc2NoZW1hKQogCiBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkKIHsKLSAgICBz
dGF0aWMgYXV0byBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzID0gbWFrZU5ldmVyRGVzdHJv
eWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxl
QW5kSW5kZXhQYWlyPiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGV4cGVjdGVkVGFibGVB
bmRJbmRleFF1ZXJpZXMgPSBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8
U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4gewogICAgICAgICB7ICJPYnNlcnZlZERvbWFpbnMi
X3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVhdGVP
YnNlcnZlZERvbWFpbiwgc3RkOjpudWxsb3B0KSB9LAogICAgICAgICB7ICJUb3BMZXZlbERvbWFp
bnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVh
dGVUb3BMZXZlbERvbWFpbnMsIHN0ZDo6bnVsbG9wdCkgfSwKICAgICAgICAgeyAiU3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5z
LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhTdG9y
YWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpKSB9LApAQCAtMjY2LDggKzI2Niw3IEBAIGNv
bnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxl
QW5kSW5kZXhQYWlyPiYgUmVzb3VyCiAgICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+Pihj
cmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLCBzdHJpcEluZGV4UXVlcnlUb01hdGNo
U3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
KSkgfSwKICAgICAgICAgeyAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBzdGQ6
Om1ha2VfcGFpcjxTdHJpbmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNGcm9tLCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUo
Y3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pKSB9LAogICAg
ICAgICB7ICJPcGVyYXRpbmdEYXRlcyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4+KGNyZWF0ZU9wZXJhdGluZ0RhdGVzLCBzdHJpcEluZGV4UXVlcnlUb01h
dGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcykpIH0sCi0gICAg
fSk7Ci0gICAgCisgICAgfTsKICAgICByZXR1cm4gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmll
czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggN2EyYzg1MGQxOTZiM2Y2ZTc1Mjlm
MjFjMmYwYWMxM2VkMzhmYTY0Zi4uOTAzMDIyZmEwZjkyNTljOGU3NDA2OTA1MTIzNTRhZDVjNGM5
MmJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC0xMDAsMTEgKzEwMCwxMSBAQCBEYXRh
YmFzZTo6fkRhdGFiYXNlKCkKIAogY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhv
b2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBEYXRhYmFzZTo6ZXhwZWN0ZWRU
YWJsZUFuZEluZGV4UXVlcmllcygpCiB7Ci0gICAgc3RhdGljIGF1dG8gZXhwZWN0ZWRUYWJsZUFu
ZEluZGV4UXVlcmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4geworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZCBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzID0gTWVtb3J5Q29t
cGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+
IHsKICAgICAgICAgeyAiUENNT2JzZXJ2ZWREb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJp
bmcsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlUENNT2JzZXJ2ZWREb21haW4sIHN0ZDo6
bnVsbG9wdCkgfSwKICAgICAgICAgeyAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PihjcmVh
dGVVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgc3RyaXBJbmRleFF1ZXJ5VG9N
YXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQpKSB9LAogICAgICAgICB7ICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+Pihj
cmVhdGVBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRv
TWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCkpIH0sCi0gICAgfSk7CisgICAgfTsKIAogICAgIHJldHVybiBleHBlY3RlZFRh
YmxlQW5kSW5kZXhRdWVyaWVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQppbmRleCAxNWJiNDY1ZTBmOWMyMThjYzFh
NDY2YmY3ZDk5MzQ1Y2VkMDg1MGM3Li5hODJjYTZkNzdjZTk4NzI5OTA1ZjAwMTNhYTdiN2FhMTM0
YmU2NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2Vi
QnJvd3NlckNoZWNrcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0
V2ViQnJvd3NlckNoZWNrcy5tbQpAQCAtNTUsOSArNTUsOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGdldEFwcEJvdW5kRG9tYWluc1Rlc3Rpbmco
Y29ucwogICAgIGlmIChidW5kbGVJRC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIHN0YXRpYyBhdXRvIGFwcEJvdW5kRG9tYWluTGlzdCA9IG1ha2VOZXZlckRl
c3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiB7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkIGFwcEJvdW5kRG9tYWluTGlzdCA9IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5I
b29kSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IHsK
ICAgICAgICAgeyJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiX3MsIFZlY3RvcjxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4geyBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCIxMjcuMC4wLjEiKSB9
fSwKLSAgICB9KTsKKyAgICB9OwogCiAgICAgYXV0byBhcHBCb3VuZERvbWFpbkl0ZXIgPSBhcHBC
b3VuZERvbWFpbkxpc3QtPmZpbmQoYnVuZGxlSUQpOwogICAgIGlmIChhcHBCb3VuZERvbWFpbkl0
ZXIgIT0gYXBwQm91bmREb21haW5MaXN0LT5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQppbmRleCBhYzJlMzQ3OTk3ZGY5
MjRiOTc2NTEyMDJkNzlhMWVkN2Q5ZjFhNjFlLi5lY2M5Yjk4OGNjMzllZTg5MjMwNzc5ZGQ1M2My
ZWEwYzEwODZmZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5k
Ym94RXh0ZW5zaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2Fu
ZGJveEV4dGVuc2lvbkNvY29hLm1tCkBAIC0yMTksNyArMjE5LDcgQEAgYXV0byBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBh
dGgsIFR5cGUKICAgICBIYW5kbGUgaGFuZGxlOwogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJv
eEV4dGVuc2lvbik7CiAKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4
dGVuc2lvbkltcGw6OmNyZWF0ZShwYXRoLnV0ZjgoKS5kYXRhKCksIHR5cGUsIHN0ZDo6bnVsbG9w
dCwgU2FuZGJveEV4dGVuc2lvbjo6RmxhZ3M6OkRvTm90Q2Fub25pY2FsaXplKTsKKyAgICBoYW5k
bGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShwYXRo
LnV0ZjgoKS5kYXRhKCksIHR5cGUsIHN0ZDo6bnVsbG9wdCwgRmxhZ3M6OkRvTm90Q2Fub25pY2Fs
aXplKTsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yICclcyciLCBw
YXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjMy
LDIxICsyMzIsMjEgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBUeXBlIHR5cGUpIC0+IHN0ZDo6b3B0aW8KICAgICByZXR1cm4gY3JlYXRl
SGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9u
KHBhdGgpLCB0eXBlKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGF0aWMgVmVjdG9y
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhjb25z
dCBWZWN0b3I8VD4mIHJlc291cmNlcywgRnVuY3Rpb248c3RkOjpvcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+KGNvbnN0IFQmKT4mJiBjcmVhdGVGdW5jdGlvbikKK3RlbXBsYXRlPHR5
cGVuYW1lIENvbGxlY3Rpb24sIHR5cGVuYW1lIEZ1bmN0aW9uPiBzdGF0aWMgVmVjdG9yPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhjb25zdCBDb2xs
ZWN0aW9uJiByZXNvdXJjZXMsIGNvbnN0IEZ1bmN0aW9uJiBjcmVhdGVGdW5jdGlvbikKIHsKICAg
ICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGVBcnJheTsKKyAgICBoYW5k
bGVBcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0ZDo6c2l6ZShyZXNvdXJjZXMpKTsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAgIGlmIChh
dXRvIGhhbmRsZSA9IGNyZWF0ZUZ1bmN0aW9uKHJlc291cmNlKSkKLSAgICAgICAgICAgIGhhbmRs
ZUFycmF5LmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKKyAgICAgICAgICAgIGhhbmRsZUFycmF5
LnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKICAgICB9CiAgICAgcmV0dXJuIGhh
bmRsZUFycmF5OwogfQogCiBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZVJlYWRPbmx5SGFu
ZGxlc0ZvckZpbGVzKEFTQ0lJTGl0ZXJhbCBsb2dMYWJlbCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhdGhzKSAtPiBWZWN0b3I8SGFuZGxlPgogewotICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9y
UmVzb3VyY2VzPFN0cmluZz4ocGF0aHMsIFsmbG9nTGFiZWxdIChjb25zdCBTdHJpbmcmIHBhdGgp
IHsKLSAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpOworICAgIHJldHVybiBjcmVh
dGVIYW5kbGVzRm9yUmVzb3VyY2VzKHBhdGhzLCBbJmxvZ0xhYmVsXSAoY29uc3QgU3RyaW5nJiBw
YXRoKSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRlSGFuZGxlKHBhdGgsIFR5cGU6OlJl
YWRPbmx5KTsKICAgICAgICAgaWYgKCFoYW5kbGUpIHsKICAgICAgICAgICAgIC8vIFRoaXMgY2Fu
IGxlZ2l0aW1hdGVseSBmYWlsIGlmIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZpbGUgaXMg
ZGVsZXRlZCBhZnRlciB0aGUgZmlsZSB3YXMgY2hvc2VuLgogICAgICAgICAgICAgLy8gV2UgYWxz
byBoYXZlIHJlcG9ydHMgb2YgY2FzZXMgd2hlcmUgdGhpcyBsaWtlbHkgZmFpbHMgZm9yIHNvbWUg
dW5rbm93biByZWFzb24sIDxyZGFyOi8vcHJvYmxlbS8xMDE1NjcxMD4uCkBAIC0yNjIsNyArMjYy
LDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKSAtPgogICAgIFN0cmluZyByZXNvbHZlZFBhdGggPSBy
ZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihwYXRo
KTsKICAgICBpZiAocmVzb2x2ZWRQYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0
UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRX
cml0ZSk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHJlc29s
dmVkUGF0aCwgVHlwZTo6UmVhZFdyaXRlKTsKIH0KIAogYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlIHR5
cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4KQEAgLTMyMywx
NSArMzIzLDIwIEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpCiAgICAgcmV0dXJuIFdURk1vdmUo
aGFuZGxlKTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFj
aExvb2t1cChjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgc2VydmljZXMsIHN0ZDo6b3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4g
VmVjdG9yPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1h
Y2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZl
Y3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXM8QVND
SUlMaXRlcmFsPihzZXJ2aWNlcywgW2F1ZGl0VG9rZW4sIGZsYWdzXSAoY29uc3QgQVNDSUlMaXRl
cmFsJiBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gewotICAgICAgICBhdXRvIGhh
bmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoc2Vydmlj
ZSwgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3Vy
Y2VzKHNlcnZpY2VzLCBbYXVkaXRUb2tlbiwgZmxhZ3NdIChBU0NJSUxpdGVyYWwgc2VydmljZSkg
LT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1ZGl0VG9rZW4sIGZsYWdzKTsKICAgICAgICAg
QVNTRVJUKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBoYW5kbGU7CiAgICAgfSk7CiB9CiAKK2F1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjppbml0
aWFsaXplcl9saXN0PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVj
dG9yPEhhbmRsZT4KK3sKKyAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bh
biB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNpemUoKSB9LCBhdWRpdFRva2VuLCBmbGFn
cyk7Cit9CisKIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVk
aXRUb2tlbihjb25zdCBTdHJpbmcmIHBhdGgsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbikgLT4g
c3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKQEAgLTM2MCwxMCAr
MzY1LDEwIEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9ySU9LaXRDbGFz
c0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9LaXRDbGFzCiAgICAgcmV0dXJuIFdURk1vdmUoaGFu
ZGxlKTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRD
bGFzc0V4dGVuc2lvbnMoY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGlva2l0Q2xhc3Nlcywg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+
IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGlv
a2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRp
b25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgogewotICAgIHJldHVybiBjcmVh
dGVIYW5kbGVzRm9yUmVzb3VyY2VzPEFTQ0lJTGl0ZXJhbD4oaW9raXRDbGFzc2VzLCBbYXVkaXRU
b2tlbiwgZmxhZ3NdIChjb25zdCBBU0NJSUxpdGVyYWwmIGlva2l0Q2xhc3MpIHsKLSAgICAgICAg
YXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNz
RXh0ZW5zaW9uKGlva2l0Q2xhc3MsIGF1ZGl0VG9rZW4sIGZsYWdzKTsKKyAgICByZXR1cm4gY3Jl
YXRlSGFuZGxlc0ZvclJlc291cmNlcyhpb2tpdENsYXNzZXMsIFthdWRpdFRva2VuLCBmbGFnc10g
KEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzKSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRl
SGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihpb2tpdENsYXNzLCBhdWRpdFRva2VuLCBmbGFn
cyk7CiAgICAgICAgIEFTU0VSVChoYW5kbGUpOwogICAgICAgICByZXR1cm4gaGFuZGxlOwogICAg
IH0pOwpAQCAtNDM1LDcgKzQ0MCw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBl
cm1hbmVudGx5KGNvbnN0IFZlY3RvcjxIYW5kbGU+JiBoYW5kbGVBcnJheSkKICAgICAgICAgaWYg
KCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgYm9vbCBvayA9IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShoYW5k
bGUpOworICAgICAgICBib29sIG9rID0gY29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CiAgICAg
ICAgIEFTU0VSVChvayk7CiAgICAgICAgIGFsbFN1Y2NlZWRlZCAmPSBvazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKaW5kZXggNGNiNWJlNzEwMDk0YjcwZDk1
YTc4OTNhODVjNzMzMTI0ODNhMTM4NS4uNWRkYTMwY2Q3ZjYxNzlmODM4YzkwZGMyYWY1NzgzYmE1
MjFlNmU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaApAQCAtOTIs
MTAgKzkyLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNz
KTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0
KTsKLSAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAo
Y29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOworICAgIHN0YXRp
YyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlv
blNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+
IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBB
U0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRp
b25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihjb25zdCBTdHJpbmcmIHBh
dGgsIGF1ZGl0X3Rva2VuX3QpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3Jl
YXRlSGFuZGxlRm9ySU9LaXRDbGFzc0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgaW9raXRDbGFzcywg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKLSAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0ZvcklPS2l0
Q2xhc3NFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBpb2tpdENsYXNzZXMs
IHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6
RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tp
dENsYXNzRXh0ZW5zaW9ucyhTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBz
dGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRl
ZmF1bHQpOwogI2VuZGlmCiAgICAgflNhbmRib3hFeHRlbnNpb24oKTsKIApAQCAtMTE3LDE4ICsx
MTgsMjMgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorU3RyaW5nIHN0cmluZ0J5UmVzb2x2aW5n
U3ltbGlua3NJblBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKK1N0cmluZyByZXNvbHZlUGF0aEZv
clNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKTsKK1N0cmluZyByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IHBhdGgpOworCiAjaWYgIUVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCisKIGlubGluZSBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU6OkhhbmRsZSgpIHsgfQogaW5saW5lIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6fkhhbmRsZSgpIHsgfQogaW5saW5lIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3QgeyB9Ci1pbmxpbmUgc3RkOjpvcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYpIHsgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB7
IH07IH0KK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJikgeyByZXR1cm4gSGFu
ZGxlIHsgfTsgfQogaW5saW5lIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGUoSGFuZGxlJiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIGlubGluZSBhdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShjb25zdCBTdHJpbmcmLCBUeXBlKSAtPiBzdGQ6
Om9wdGlvbmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQogaW5saW5lIGF1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlUmVhZE9ubHlIYW5kbGVzRm9yRmlsZXMoQVNDSUlMaXRlcmFs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIC0+IFZlY3RvcjxIYW5kbGU+IHsgcmV0dXJuIHsgfTsg
fQogaW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29s
dmluZ1BhdGgoY29uc3QgU3RyaW5nJiwgVHlwZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsg
cmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSAtPiBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQotaW5saW5lIGF1dG8gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIC8qcHJl
Zml4Ki8sIFR5cGUpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPEhhbmRsZSwgU3RyaW5nPj4g
eyByZXR1cm4gc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiB7IHN0ZDo6
cGFpcjxIYW5kbGUsIFN0cmluZz4geyBIYW5kbGUgeyB9LCBTdHJpbmcgeyB9IH0gfTsgfQotaW5s
aW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lv
bihBU0NJSUxpdGVyYWwgLypleHRlbnNpb25DbGFzcyovKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRs
ZT4geyByZXR1cm4gSGFuZGxlIHsgfTsgfQoraW5saW5lIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBUeXBlKSAtPiBzdGQ6
Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IHsgcmV0dXJuIHN0ZDo6cGFpcjxI
YW5kbGUsIFN0cmluZz4geyB9OyB9CitpbmxpbmUgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCkgLT4gc3RkOjpvcHRpb25h
bDxIYW5kbGU+IHsgcmV0dXJuIEhhbmRsZSB7IH07IH0KIGlubGluZSBTYW5kYm94RXh0ZW5zaW9u
Ojp+U2FuZGJveEV4dGVuc2lvbigpIHsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6
cmV2b2tlKCkgeyByZXR1cm4gdHJ1ZTsgfQogaW5saW5lIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6
Y29uc3VtZSgpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTEzOCwxMCArMTQ0LDcgQEAgaW5saW5lIGJv
b2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IFZlY3RvcjxIYW5k
bGU+JikgeyByZXR1cm4KIGlubGluZSBTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0lu
UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7IH0KIGlubGluZSBTdHJpbmcg
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkgeyByZXR1
cm4gcGF0aDsgfQogaW5saW5lIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0
b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIHBhdGg7
IH0KLSNlbHNlCi1TdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChjb25zdCBT
dHJpbmcmIHBhdGgpOwotU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIHBhdGgpOwotU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCk7CisKICNlbmRpZgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5jcHAKaW5kZXggY2EzNTdhZGU4ODEyYjFlMmFkN2JkNDMzMzExYzcwNDUy
ZDQ4ZGE3NS4uNzE3MTAzNjQyOTZiZTc0MmE4MzEyZmMwMDgzNmZmOWE4ZjU5Njg5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTg1
LDExICs4NSwxMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRDcmVhdGVBcHBsZUNhbWVyYVNlcnZpY2VT
YW5kYm94RXh0ZW5zaW9uKCkKIHN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgbm9u
QnJvd3NlclNlcnZpY2VzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBz
dGF0aWMgY29uc3QgYXV0byBzZXJ2aWNlcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8QVND
SUlMaXRlcmFsPiB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHNlcnZpY2VzID0gVmVjdG9y
PEFTQ0lJTGl0ZXJhbD4gewogICAgICAgICAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywKICAg
ICAgICAgImNvbS5hcHBsZS5Qb3dlck1hbmFnZW1lbnQuY29udHJvbCJfcywKICAgICAgICAgImNv
bS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zCi0gICAgfSk7CisgICAgfTsK
ICAgICByZXR1cm4gc2VydmljZXM7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDEyMGI5MDQ4NzJiZGYyODgwMTdlNzcwOGM2MzI3ZTU1NmFl
NGQyNTcuLmVhNDRlMjU4MjNmMTY1ZDllZjgwNjQ4Y2YwNjEzMDFiODc1OTI2ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzE0LDkgKzMxNCw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9IaWdobGlnaHRWaXNpYmlsaXR5Lmg+CiAjZW5kaWYKIAotLy8gVGhp
cyBjb250cm9scyB3aGF0IHN0cmF0ZWd5IHdlIHVzZSBmb3IgbW91c2Ugd2hlZWwgY29hbGVzY2lu
Zy4KLSNkZWZpbmUgTUVSR0VfV0hFRUxfRVZFTlRTIDEKLQogI2RlZmluZSBNRVNTQUdFX0NIRUNL
KHByb2Nlc3MsIGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgcHJvY2Vz
cy0+Y29ubmVjdGlvbigpKQogI2RlZmluZSBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCB1cmwp
IE1FU1NBR0VfQ0hFQ0tfQkFTRShjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRPclByZXZpb3Vz
V2ViUHJvY2Vzcyhwcm9jZXNzLCB1cmwpLCBwcm9jZXNzLT5jb25uZWN0aW9uKCkpCiAjZGVmaW5l
IE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihwcm9jZXNzLCBhc3NlcnRpb24sIGNvbXBsZXRpb24p
IE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTl9CQVNFKGFzc2VydGlvbiwgcHJvY2Vzcy0+Y29ubmVj
dGlvbigpLCBjb21wbGV0aW9uKQpAQCAtODA0OSwyMyArODA0NiwyNSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFz
b24gdGVybWluYQogfQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkgJiYgUExBVEZP
Uk0oQ09DT0EpCi1zdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGF0dGFjaG1lbnRF
bGVtZW50U2VydmljZXMoKQorCitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGF0dGFj
aG1lbnRFbGVtZW50U2VydmljZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHNlcnZpY2Vz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6YXJyYXkgc2VydmljZXMgewogICAgICAgICAiY29tLmFwcGxlLmljb25z
ZXJ2aWNlcyJfcywKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgICJjb20uYXBwbGUuaWNvbnNl
cnZpY2VzLnN0b3JlIl9zLAogI2VuZGlmCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc2Vy
dmljZXM7CiB9CisKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1zdGF0aWMgY29uc3Qg
VmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGdwdUlPS2l0Q2xhc3NlcygpCisKK3N0YXRpYyBTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gZ3B1SU9LaXRDbGFzc2VzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWlu
UnVuTG9vcCgpKTsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBzZXJ2aWNlcyA9IG1ha2VOZXZlckRl
c3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5IHNlcnZpY2VzIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAiQUdY
RGV2aWNlVXNlckNsaWVudCJfcywKICAgICAgICAgIklPR1BVIl9zLApAQCAtODA4NiwzMyArODA4
NSwzMiBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIGdwdUlPS2l0Q2xhc3Nl
cygpCiAgICAgICAgICJJT0F1ZGlvRW5naW5lVXNlckNsaWVudCJfcywKICAgICAgICAgIklPU3Vy
ZmFjZVJvb3RVc2VyQ2xpZW50Il9zLAogI2VuZGlmCisgICAgICAgIC8vIEZJWE1FOiBJcyB0aGlz
IGFsc28gbmVlZGVkIGluIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKT8KICNpZiBQTEFURk9STShNQUMp
ICYmIENQVShBUk02NCkKICAgICAgICAgIklPTW9iaWxlRnJhbWVidWZmZXJVc2VyQ2xpZW50Il9z
LAogI2VuZGlmCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBDUFUoQVJNNjQpIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgQ1BVKEFSTTY0KSkgfHwgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICAgICAgIklPU3VyZmFjZUFjY2VsZXJhdG9yQ2xpZW50Il9zLAogI2Vu
ZGlmCi0gICAgfSk7CisgICAgfTsKICAgICByZXR1cm4gc2VydmljZXM7CiB9CiAKLXN0YXRpYyBj
b25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgZ3B1TWFjaFNlcnZpY2VzKCkKK3N0YXRpYyBTcGFu
PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gZ3B1TWFjaFNlcnZpY2VzKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluUnVuTG9vcCgpKTsKLSAgICBzdGF0aWMgY29uc3QgYXV0byBzZXJ2aWNlcyA9IG1ha2VOZXZl
ckRlc3Ryb3llZChWZWN0b3I8QVNDSUlMaXRlcmFsPiB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBz
dGQ6OmFycmF5IHNlcnZpY2VzIHsKICAgICAgICAgImNvbS5hcHBsZS5NVExDb21waWxlclNlcnZp
Y2UiX3MsCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICAg
ICAgImNvbS5hcHBsZS5jdm1zU2VydiJfcywKICNlbmRpZgotICAgIH0pOworICAgIH07CiAgICAg
cmV0dXJuIHNlcnZpY2VzOwogfQogCiAvLyBGSVhNRSgyMDc3MTYpOiBUaGUgZm9sbG93aW5nIHNo
b3VsZCBiZSByZW1vdmVkIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIGNvbXBsZXRlLgotc3RhdGlj
IGNvbnN0IFZlY3RvcjxBU0NJSUxpdGVyYWw+JiBtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMoKQor
c3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBtZWRpYVJlbGF0ZWRNYWNoU2VydmljZXMo
KQogewotICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIHN0YXRpYyBjb25zdCBhdXRv
IHNlcnZpY2VzID0gbWFrZU5ldmVyRGVzdHJveWVkKFZlY3RvcjxBU0NJSUxpdGVyYWw+IHsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2VydmljZXMgewogICAgICAgICAiY29tLmFw
cGxlLmF1ZGlvLkF1ZGlvQ29tcG9uZW50UHJlZnMiX3MsICJjb20uYXBwbGUuYXVkaW8uQXVkaW9D
b21wb25lbnRSZWdpc3RyYXIiX3MsCiAgICAgICAgICJjb20uYXBwbGUuYXVkaW8uQXVkaW9RdWV1
ZVNlcnZlciJfcywgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnQueHBjIl9zLAogICAgICAg
ICAiY29tLmFwcGxlLmNvcmVtZWRpYS5yb3V0ZWRpc2NvdmVyZXIueHBjIl9zLCAiY29tLmFwcGxl
LmNvcmVtZWRpYS5yb3V0aW5nY29udGV4dC54cGMiX3MsCkBAIC04MTQwLDI2ICs4MTM4LDMwIEBA
IHN0YXRpYyBjb25zdCBWZWN0b3I8QVNDSUlMaXRlcmFsPiYgbWVkaWFSZWxhdGVkTWFjaFNlcnZp
Y2VzKCkKICAgICAgICAgImNvbS5hcHBsZS5hdWRpby5hdWRpb2hhbGQiX3MsICJjb20uYXBwbGUu
YXVkaW8uU2FuZGJveEhlbHBlciJfcywgImNvbS5hcHBsZS5jb3JlbWVkaWEuZW5kcG9pbnRzdHJl
YW0ueHBjIl9zLCAiY29tLmFwcGxlLmNvcmVtZWRpYS5lbmRwb2ludHBsYXliYWNrc2Vzc2lvbi54
cGMiX3MsCiAgICAgICAgICJjb20uYXBwbGUuY29yZW1lZGlhLmVuZHBvaW50cmVtb3RlY29udHJv
bHNlc3Npb24ueHBjIl9zLCAiY29tLmFwcGxlLmNvcmVtZWRpYS52aWRlb2RlY29kZXIiX3MsCiAg
ICAgICAgICJjb20uYXBwbGUuY29yZW1lZGlhLnZpZGVvZW5jb2RlciJfcywgImNvbS5hcHBsZS5s
c2tkZCJfcywgImNvbS5hcHBsZS50cnVzdGQuYWdlbnQiX3MsCisjZW5kaWYKKyAgICAgICAgLy8g
RklYTUU6IElzIHRoaXMgYWxzbyBuZWVkZWQgaW4gUExBVEZPUk0oTUFDQ0FUQUxZU1QpPwogI2lm
IFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEyMDAw
MAogICAgICAgICAiY29tLmFwcGxlLmNvcmVtZWRpYS5zYW1wbGVidWZmZXJjb25zdW1lci54cGMi
X3MsCiAjZW5kaWYKLSNlbmRpZgotICAgIH0pOworICAgIH07CiAgICAgcmV0dXJuIHNlcnZpY2Vz
OwogfQogCi1zdGF0aWMgY29uc3QgVmVjdG9yPEFTQ0lJTGl0ZXJhbD4mIG1lZGlhUmVsYXRlZElP
S2l0Q2xhc3NlcygpCitzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IG1lZGlhUmVsYXRl
ZElPS2l0Q2xhc3NlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gc2VydmljZXMgPSBtYWtl
TmV2ZXJEZXN0cm95ZWQoVmVjdG9yPEFTQ0lJTGl0ZXJhbD4gewotI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjaWYgIShQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KE1BQ0NBVEFMWVNUKSkKKyAgICByZXR1cm4geyB9OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6YXJyYXkgc2VydmljZXMgewogI2lmIENQVShBUk02NCkKICAgICAgICAgIkFwcGxl
QVZEVXNlckNsaWVudCJfcywKICNlbmRpZgogICAgICAgICAiUm9vdERvbWFpblVzZXJDbGllbnQi
X3MsCi0jZW5kaWYKLSAgICB9KTsKKyAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKKyNlbmRp
ZgogfQorCiAjZW5kaWYKIAogV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6
OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIERyYXdpbmdBcmVh
UHJveHkmIGRyYXdpbmdBcmVhLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0
ZVBvbGljaWVzKQpAQCAtMTEwNTUsNCArMTEwNTcsMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdENvb2tpZUNvbnNlbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDb29raWVDb25zZW50RGVj
aQogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTgogI3VuZGVmIE1FU1NBR0VfQ0hFQ0tf
VVJMCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwotI3VuZGVmIE1FUkdFX1dIRUVMX0VWRU5UUwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1RleHRDaGVja2VySU9TLm1tCmluZGV4IDA0NzM1
ZGRkYmUxMmVjZWU1YjVjYjNlODM2ODk3ZDQ4YmQwYTlmNDUuLjdhZmE2YTMxOTc5YWViNTE3NTdh
Y2Q2YTExNjQ0NzIxOWU4YzBlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9UZXh0Q2hlY2tlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
VGV4dENoZWNrZXJJT1MubW0KQEAgLTQxLDEyICs0MSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogc3RhdGljIFRleHRDaGVja2VyU3RhdGUmIG11dGFibGVTdGF0ZSgpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFRleHRDaGVja2VyU3RhdGU+IHN0YXRlID0gbWFrZU5ldmVy
RGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgc3RhdGUgPSBbXSB7CiAg
ICAgICAgIFRleHRDaGVja2VyU3RhdGUgaW5pdGlhbFN0YXRlOwogICAgICAgICBpbml0aWFsU3Rh
dGUuaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgPSBUZXh0Q2hlY2tlcjo6aXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0FsbG93ZWQoKTsKICAgICAgICAgaW5pdGlhbFN0YXRlLmlzR3Jh
bW1hckNoZWNraW5nRW5hYmxlZCA9IGZhbHNlOwogICAgICAgICByZXR1cm4gaW5pdGlhbFN0YXRl
OwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggMTJmM2ExNWE0M2I4YWM0ZDE1MWZmMzAzYzNjNWY3N2QxMzUzMGNiZS4uNDNmOTli
MGMwMzQwZTA0YTUxNmI1MjdkYzBlMmMyMGRhNzMwZmRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0z
NDMxLDIxICszNDMxLDIxIEBAIC0gKE5TQXJyYXkgKilzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNG
b3JDdXJyZW50U2VsZWN0aW9uCiAgICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlv
bklzTm9uZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHN0YXRpYyBhdXRvIHBsYWluVGV4
dFR5cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQgcGxhaW5UZXh0VHlwZXMgPSBbXSB7CiAgICAgICAgIGF1dG8gcGxhaW5UZXh0VHlwZXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwbGFpblRleHRUeXBlcyBhZGRPYmplY3Q6KGlk
KWtVVFR5cGVVUkxdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAg
IFtwbGFpblRleHRUeXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OlVJUGFzdGVib2FyZFR5cGVMaXN0
U3RyaW5nXTsKICAgICAgICAgcmV0dXJuIHBsYWluVGV4dFR5cGVzOwotICAgIH0oKSk7Ci0gICAg
c3RhdGljIGF1dG8gcmljaFR5cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICB9KCk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHJpY2hUeXBlcyA9IFtdIHsKICAgICAgICAgYXV0
byByaWNoVHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAg
ICAgICAgW3JpY2hUeXBlcyBhZGRPYmplY3Q6V2ViQ29yZTo6V2ViQXJjaGl2ZVBib2FyZFR5cGVd
OwogICAgICAgICBbcmljaFR5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6VUlQYXN0ZWJvYXJkVHlw
ZUxpc3RJbWFnZV07CiAgICAgICAgIFtyaWNoVHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpwbGFp
blRleHRUeXBlcy5nZXQoKS5nZXQoKV07CiAgICAgICAgIHJldHVybiByaWNoVHlwZXM7Ci0gICAg
fSgpKTsKKyAgICB9KCk7CiAKICAgICByZXR1cm4gKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzQ29u
dGVudFJpY2hseUVkaXRhYmxlKSA/IHJpY2hUeXBlcy5nZXQoKS5nZXQoKSA6IHBsYWluVGV4dFR5
cGVzLmdldCgpLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1RleHRDaGVja2VyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RleHRD
aGVja2VyTWFjLm1tCmluZGV4IDRjYzIyZGYwMzA4MjUwYmUyNTA2MTYyMTJjNTgwMzA3ZTIwMzEw
MjIuLjE2ZDY4MzhlNTQ4ZTA0MzJmYmQxOGY4ZDRkMmFkZTFjMmMxMDhmNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGV4dENoZWNrZXJNYWMubW0KQEAgLTg5LDcgKzg5LDcg
QEAgc3RhdGljIGJvb2wgc2hvdWxkQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkJlRW5hYmxlZCgp
CiAKIHN0YXRpYyBUZXh0Q2hlY2tlclN0YXRlJiBtdXRhYmxlU3RhdGUoKQogewotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxUZXh0Q2hlY2tlclN0YXRlPiBzdGF0ZSA9IG1ha2VOZXZlckRlc3Ry
b3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIHN0YXRlID0gW10gewogICAgICAg
ICBUZXh0Q2hlY2tlclN0YXRlIGluaXRpYWxTdGF0ZTsKICAgICAgICAgaW5pdGlhbFN0YXRlLmlz
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpXZWJDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWRdICYmIFRleHRDaGVja2VyOjppc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nQWxsb3dlZCgpOwog
ICAgICAgICBpbml0aWFsU3RhdGUuaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkID0gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpXZWJHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkXTsKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIFRleHRDaGVja2VyU3RhdGUmIG11
dGFibGVTdGF0ZSgpCiAgICAgICAgIGluaXRpYWxTdGF0ZS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkID0gc2hvdWxkQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkJlRW5hYmxlZCgp
OwogICAgICAgICBpbml0aWFsU3RhdGUuaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCA9
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6V2ViQXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWRdOwogICAgICAgICByZXR1cm4gaW5pdGlhbFN0YXRl
OwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggYjRjZWFlZTY3
MzljMDM1NDE1YmUyODJkYzRiOTY4NDVjZjFlYTc5MC4uYTZmOGZjYTliNjY5YmMwYTU3MDdiMjMx
ODBhZGMxNWY2ZjJhN2NhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCkBAIC00MTcsMTYgKzQxNywxNCBAQCBDQUxheWVyICpXZWJQYWdlUHJv
eHk6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdAogCiBzdGF0aWMgTlNT
dHJpbmcgKnRlbXBvcmFyeVBERkRpcmVjdG9yeVBhdGgoKQogewotICAgIHN0YXRpYyBhdXRvIHRl
bXBvcmFyeVBERkRpcmVjdG9yeVBhdGggPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAg
ICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5VGVtcGxhdGUgPSBbTlNUZW1wb3JhcnlEaXJl
Y3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXRQREZzLVhYWFhY
WCJdOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBwYXRoID0gW10geworICAgICAgICBhdXRv
IHRlbXBvcmFyeURpcmVjdG9yeVRlbXBsYXRlID0gW05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0UERGcy1YWFhYWFgiXTsKICAgICAg
ICAgQ1N0cmluZyB0ZW1wbGF0ZVJlcHJlc2VudGF0aW9uID0gW3RlbXBvcmFyeURpcmVjdG9yeVRl
bXBsYXRlIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl07Ci0KICAgICAgICAgaWYgKG1rZHRlbXAo
dGVtcGxhdGVSZXByZXNlbnRhdGlvbi5tdXRhYmxlRGF0YSgpKSkKICAgICAgICAgICAgIHJldHVy
biBhZG9wdE5TKFtbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb246dGVtcGxhdGVSZXByZXNlbnRhdGlvbi5kYXRhKCkgbGVuZ3Ro
OnRlbXBsYXRlUmVwcmVzZW50YXRpb24ubGVuZ3RoKCldIGNvcHldKTsKICAgICAgICAgcmV0dXJu
IFJldGFpblB0cjxpZD4geyB9OwotICAgIH0oKSk7Ci0KLSAgICByZXR1cm4gdGVtcG9yYXJ5UERG
RGlyZWN0b3J5UGF0aC5nZXQoKS5nZXQoKTsKKyAgICB9KCk7CisgICAgcmV0dXJuIHBhdGguZ2V0
KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBOU1N0cmluZyAqcGF0aFRvUERGT25EaXNrKGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYk5TUGFzdGVib2FyZEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTlNQYXN0ZWJvYXJkRXh0cmFzLm1tCmluZGV4IDc4ODU3NzQzODc3NmYyYTk3
ODQwNGRlYmVmZWRiMDVjYzBhY2Q0MGYuLmU1YjQ0NGJmYTVjMjg3MjgzODdjNzIzMzI4MjkxYTgy
MDNkMWIyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNQ
YXN0ZWJvYXJkRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2Vi
TlNQYXN0ZWJvYXJkRXh0cmFzLm1tCkBAIC03MSwzMiArNzEsMzAgQEAgKyAoTlNBcnJheSAqKV93
ZWJfd3JpdGFibGVUeXBlc0ZvclVSTAogICAgIHJldHVybiB0eXBlczsKIH0KIAotc3RhdGljIE5T
QXJyYXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSAodm9pZCkKK3N0YXRp
YyBOU0FycmF5ICp3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2ZSgpCiB7Ci0gICAg
c3RhdGljIGF1dG8gdHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCB0eXBlcyA9IFtdIHsKICAgICAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOmxlZ2FjeVRJRkZQYXN0ZWJv
YXJkVHlwZSgpLCBuaWxdKTsKICAgICAgICAgW3R5cGVzIGFkZE9iamVjdHNGcm9tQXJyYXk6W05T
UGFzdGVib2FyZCBfd2ViX3dyaXRhYmxlVHlwZXNGb3JVUkxdXTsKICAgICAgICAgcmV0dXJuIHR5
cGVzOwotICAgIH0oKSk7CisgICAgfSgpOwogICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsK
IH0KIAotc3RhdGljIE5TQXJyYXkgKl93cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSAo
dm9pZCkKK3N0YXRpYyBOU0FycmF5ICp3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRoQXJjaGl2ZSgp
CiB7Ci0gICAgc3RhdGljIGF1dG8gdHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAg
ICAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbX3dyaXRhYmxlVHlwZXNGb3JJbWFnZVdpdGhvdXRB
cmNoaXZlKCkgbXV0YWJsZUNvcHldKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgdHlwZXMg
PSBbXSB7CisgICAgICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFt3cml0YWJsZVR5cGVzRm9ySW1h
Z2VXaXRob3V0QXJjaGl2ZSgpIG11dGFibGVDb3B5XSk7CiAgICAgICAgIFt0eXBlcyBhZGRPYmpl
Y3Q6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBbdHlwZXMgYWRkT2JqZWN0
OldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7
CisgICAgfSgpOwogICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJh
eSAqKV93ZWJfd3JpdGFibGVUeXBlc0ZvckltYWdlSW5jbHVkaW5nQXJjaGl2ZTooQk9PTCloYXNB
cmNoaXZlCiB7Ci0gICAgcmV0dXJuIGhhc0FyY2hpdmUgCi0gICAgICAgID8gX3dyaXRhYmxlVHlw
ZXNGb3JJbWFnZVdpdGhBcmNoaXZlKCkKLSAgICAgICAgOiBfd3JpdGFibGVUeXBlc0ZvckltYWdl
V2l0aG91dEFyY2hpdmUoKTsKKyAgICByZXR1cm4gaGFzQXJjaGl2ZSA/IHdyaXRhYmxlVHlwZXNG
b3JJbWFnZVdpdGhBcmNoaXZlKCkgOiB3cml0YWJsZVR5cGVzRm9ySW1hZ2VXaXRob3V0QXJjaGl2
ZSgpOwogfQogCiArIChOU0FycmF5ICopX3dlYl9kcmFnVHlwZXNGb3JVUkwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCmluZGV4IDkyYTczN2QzYjU0
MDVhYjM3NjAwNzFlYTU1NjQyMWUyODUzNjEwZDEuLjU2ZTEzNjcwMzA5ZTI5ZjE3NzM5Zjg2ZjU1
NmFlYTc2MjhkNjUyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U1VSTEV4dHJhcy5tbQpAQCAtMjIzLDE1ICsyMjMsMTUgQEAgLShOU1JhbmdlKV93ZWJraXRfcmFu
Z2VPZlVSTFNjaGVtZQogICAgIE5TUmFuZ2UgY29sb24gPSBbc2VsZiByYW5nZU9mU3RyaW5nOkAi
OiJdOwogICAgIGlmIChjb2xvbi5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIGNvbG9uLmxvY2F0
aW9uID4gMCkgewogICAgICAgICBOU1JhbmdlIHNjaGVtZSA9IHswLCBjb2xvbi5sb2NhdGlvbn07
Ci0gICAgICAgIHN0YXRpYyBhdXRvIGludmVyc2VTY2hlbWVDaGFyYWN0ZXJTZXQgPSBtYWtlTmV2
ZXJEZXN0cm95ZWQoW10geworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQgaW52ZXJzZVNj
aGVtZUNoYXJhY3RlclNldCA9IFtdIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgVGhp
cyBzdHVmZiBpcyB2ZXJ5IGV4cGVuc2l2ZS4gIDEwLTE1IG1zZWMgb24gYSAyeDEuMkdIei4gIElm
IG5vdCBjYWNoZWQgaXQgc3dhbXBzCiAgICAgICAgICAgICAgZXZlcnl0aGluZyBlbHNlIHdoZW4g
YWRkaW5nIGl0ZW1zIHRvIHRoZSBhdXRvY29tcGxldGUgREIuICBNYWtlcyBtZSB3b25kZXIgaWYg
d2UKICAgICAgICAgICAgICBldmVuIG5lZWQgdG8gZW5mb3JjZSB0aGUgY2hhcmFjdGVyIHNldCBo
ZXJlLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIE5TU3RyaW5nICphY2NlcHRhYmxlQ2hh
cmFjdGVycyA9IEAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ejAxMjM0NTY3ODkrLi0iOwotICAgICAgICAgICAgcmV0dXJuIHJldGFpblB0cihbW05T
Q2hhcmFjdGVyU2V0IGNoYXJhY3RlclNldFdpdGhDaGFyYWN0ZXJzSW5TdHJpbmc6YWNjZXB0YWJs
ZUNoYXJhY3RlcnNdIGludmVydGVkU2V0XSk7Ci0gICAgICAgIH0oKSk7CisgICAgICAgICAgICBy
ZXR1cm4gUmV0YWluUHRyIHsgW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFj
dGVyc0luU3RyaW5nOmFjY2VwdGFibGVDaGFyYWN0ZXJzXSBpbnZlcnRlZFNldF0gfTsKKyAgICAg
ICAgfSgpOwogICAgICAgICBOU1JhbmdlIGlsbGVnYWxzID0gW3NlbGYgcmFuZ2VPZkNoYXJhY3Rl
ckZyb21TZXQ6aW52ZXJzZVNjaGVtZUNoYXJhY3RlclNldC5nZXQoKS5nZXQoKSBvcHRpb25zOjAg
cmFuZ2U6c2NoZW1lXTsKICAgICAgICAgaWYgKGlsbGVnYWxzLmxvY2F0aW9uID09IE5TTm90Rm91
bmQpCiAgICAgICAgICAgICByZXR1cm4gc2NoZW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDgzZTg1OTE0MzQ1ZWE3Y2I4NDFk
OTlmZDFmYjY2NmQ4Y2NmMDMwMjYuLjVlYjVkNmExOWU2ZDkxZmNiM2JmYzgxY2NhOTFlYzdlMGU1
NmM0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KQEAgLTI3MCw3ICsyNzAsNyBAQCAtICh2b2lkKV9yZXZlcnRUb1Byb3Zpc2lvbmFs
U3RhdGUKIAogKyAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV9yZXBUeXBlc0FsbG93SW1hZ2VUeXBl
T21pc3Npb246KEJPT0wpYWxsb3dJbWFnZVR5cGVPbWlzc2lvbgogewotICAgIHN0YXRpYyBhdXRv
IHJlcFR5cGVzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQgcmVwVHlwZXMgPSBbXSB7CiAgICAgICAgIGF1dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgICAgICBhZGRUeXBlc0Zyb21DbGFz
cyh0eXBlcy5nZXQoKSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVw
cmVzZW50YXRpb24gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTsKICAgICAgICAgYWRkVHlw
ZXNGcm9tQ2xhc3ModHlwZXMuZ2V0KCksIFtXZWJIVE1MUmVwcmVzZW50YXRpb24gY2xhc3NdLCBb
V2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk7CkBAIC0yODcs
NyArMjg3LDcgQEAgKyAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV9yZXBUeXBlc0FsbG93SW1hZ2VU
eXBlT21pc3Npb246KEJPT0wpYWxsb3dJbWFnZVR5cGVPbWkKICNlbmRpZgogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiB0eXBlczsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICBzdGF0aWMgQk9P
TCBhZGRlZEltYWdlVHlwZXMgPSBOTzsKICAgICBpZiAoIWFkZGVkSW1hZ2VUeXBlcyAmJiAhYWxs
b3dJbWFnZVR5cGVPbWlzc2lvbikgewogICAgICAgICBhZGRUeXBlc0Zyb21DbGFzcyhyZXBUeXBl
cy5nZXQoKS5nZXQoKSwgW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc10sIFtXZWJIVE1MUmVw
cmVzZW50YXRpb24gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXNdKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KaW5kZXggNzNlZjg2Y2JlZGM2NmNi
NTUyOGJhNTY5N2FlZjM1NjQ1YmQ0ZDQ0Ny4uZGMzYjUwMGU1OGMzNTI2ZjY4ZTQ0OGJmODIxMThk
ZDM1MDk5MjkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZVZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZVZpZXcubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCAtIChmbG9hdClfdmVydGljYWxQYWdlU2Ny
b2xsRGlzdGFuY2UKIAogKyAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKV92aWV3VHlwZXNBbGxvd0lt
YWdlVHlwZU9taXNzaW9uOihCT09MKWFsbG93SW1hZ2VUeXBlT21pc3Npb24KIHsKLSAgICBzdGF0
aWMgYXV0byB2aWV3VHlwZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCB2aWV3VHlwZXMgPSBbXSB7CiAgICAgICAgIGF1dG8gdHlwZXMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgICAgICBhZGRUeXBl
c0Zyb21DbGFzcyh0eXBlcy5nZXQoKSwgW1dlYkhUTUxWaWV3IGNsYXNzXSwgW1dlYkhUTUxWaWV3
IHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXSk7CiAgICAgICAgIGFkZFR5cGVzRnJvbUNsYXNz
KHR5cGVzLmdldCgpLCBbV2ViSFRNTFZpZXcgY2xhc3NdLCBbV2ViSFRNTFZpZXcgc3VwcG9ydGVk
TWVkaWFNSU1FVHlwZXNdKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCArIChOU011dGFibGVEaWN0aW9u
YXJ5ICopX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246KEJPT0wpYWxsb3dJbWFnZVR5
cGVPbQogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHR5cGVzOwotICAgIH0oKSk7
CisgICAgfSgpOwogICAgIHN0YXRpYyBCT09MIGFkZGVkSW1hZ2VUeXBlcyA9IE5POwogICAgIGlm
ICghYWRkZWRJbWFnZVR5cGVzICYmICFhbGxvd0ltYWdlVHlwZU9taXNzaW9uKSB7CiAgICAgICAg
IGFkZFR5cGVzRnJvbUNsYXNzKHZpZXdUeXBlcy5nZXQoKS5nZXQoKSwgW1dlYkhUTUxWaWV3IGNs
YXNzXSwgW1dlYkhUTUxWaWV3IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSk7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjIxOTdlMTViNjFhNGU2
YTE1MjcyN2Q0NjJiNzNiMTEzODMyZWQxOS4uNTk5OTg2N2I2ODY3YTMwOWUyYTY2YmRiZDE0ZGVh
ZDljYjRlYjE5MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEyLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNYW55IGNhbGwgc2l0ZXMgdXNlIG1ha2VOZXZlckRlc3Ryb3ll
ZCwgYnV0IGNvdWxkIGluc3RlYWQgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIE5ldmVyRGVzdHJveWVk
IGRlZHVjdGlvbiBndWlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM0MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAg
IChmb250QWxsb3dMaXN0KTogVXNlIGRlZHVjdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOiBSZW1vdmUgdGVzdHMgb2YgbWFrZU5ldmVyRGVzdHJveWVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6bGlzdCk6IFVzZSBkZWR1Y3Rpb24uCisKIDIwMjEtMTItMTUgIERvbiBPbG1z
dGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBTcGxpdCBBVEsgc3BlY2lm
aWMgY29kZSBpbiBXUEVWaWV3QmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQppbmRleCBmMzM5YTQzMzNjMGE5MGY1YTRkZTNlZTZmN2M3MDg2ZTc2MDE4
ZmM1Li4wZDhlZmYwOWMxY2MyNDlkZDNjODMzOTJlYTgxOWZjZDM2ZTJlYzhhIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC00NTQsNyArNDU0LDcgQEAg
c3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAKIHN0YXRpYyBOU0FycmF5ICpm
b250QWxsb3dMaXN0KCkKIHsKLSAgICBzdGF0aWMgYXV0byBhdmFpbGFibGVGb250cyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGF2YWlsYWJsZUZv
bnRzID0gW10gewogICAgICAgICBhdXRvIGF2YWlsYWJsZUZvbnRzID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmZvbnRGYW1p
bHkgaW4gYWxsb3dlZEZvbnRGYW1pbHlTZXQoKSkgewogICAgICAgICAgICAgTlNBcnJheSogZm9u
dHNGb3JGYW1pbHkgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGF2YWlsYWJs
ZU1lbWJlcnNPZkZvbnRGYW1pbHk6Zm9udEZhbWlseV07CkBAIC00NjUsNyArNDY1LDcgQEAgc3Rh
dGljIE5TQXJyYXkgKmZvbnRBbGxvd0xpc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBhdmFpbGFibGVGb250czsKLSAgICB9KCkpOworICAgIH0oKTsKICAgICBy
ZXR1cm4gYXZhaWxhYmxlRm9udHMuZ2V0KCkuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL05ldmVyRGVzdHJveWVkLmNwcAppbmRleCAwMzliYzExZGIwM2I3
YWU2ZTVkZmU5MzdkZDI2YzFlY2I3ZGJjMzg1Li45YjAxOTQ5MTNlMTNjZjlhNjNjM2RiN2Y0MDA5
ZGQ0ZmRiOTM2Y2Q4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9O
ZXZlckRlc3Ryb3llZC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmV2
ZXJEZXN0cm95ZWQuY3BwCkBAIC00MCw5ICs0MCw2IEBAIFRFU1QoV1RGX05ldmVyRGVzdHJveWVk
LCBDb25zdHJ1Y3QpCiAgICAgeyBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2Vy
PiB4KCJuYW1lIik7IFVOVVNFRF9QQVJBTSh4KTsgfQogICAgIEFTU0VSVF9TVFJFUSgiY29uc3Ry
dWN0KG5hbWUpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAotICAgIHsgc3RhdGljIGF1dG8g
eCA9IG1ha2VOZXZlckRlc3Ryb3llZChMaWZlY3ljbGVMb2dnZXIgeyAibmFtZSIgfSk7IFVOVVNF
RF9QQVJBTSh4KTsgfQotICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIG1vdmUtY29u
c3RydWN0KG5hbWUpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwotCiAgICAgewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2Vy
PiB4KCJuYW1lIik7CiAgICAgICAgIExpZmVjeWNsZUxvZ2dlciBsID0geC5nZXQoKTsKQEAgLTU0
LDIwICs1MSw2IEBAIFRFU1QoV1RGX05ldmVyRGVzdHJveWVkLCBDb25zdHJ1Y3QpCiAgICAgeyBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TGlmZWN5Y2xlTG9nZ2VyPiB4IHsgW10geyByZXR1cm4gTGlm
ZWN5Y2xlTG9nZ2VyIHsgIm5hbWUiIH07IH0oKSB9OyBVTlVTRURfUEFSQU0oeCk7IH0KICAgICBB
U1NFUlRfU1RSRVEoImNvbnN0cnVjdChuYW1lKSBtb3ZlLWNvbnN0cnVjdChuYW1lKSBkZXN0cnVj
dCg8ZGVmYXVsdD4pICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAotICAgIHsKLSAgICAgICAg
c3RhdGljIGF1dG8geCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgICAgICBMaWZl
Y3ljbGVMb2dnZXIgbCB7ICJuYW1lIiB9OwotICAgICAgICAgICAgbC5zZXROYW1lKCJ4Iik7Ci0g
ICAgICAgICAgICByZXR1cm4gbDsKLSAgICAgICAgfSgpKTsKLSAgICAgICAgQVNTRVJUX1NUUkVR
KHguZ2V0KCkubmFtZSwgIngiKTsKLSAgICB9Ci0jaWYgQ09NUElMRVIoTVNWQykgJiYgIWRlZmlu
ZWQoTkRFQlVHKQotICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgp
IG1vdmUtY29uc3RydWN0KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgbW92ZS1jb25zdHJ1Y3QoeCkg
ZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Ci0jZWxzZQotICAg
IEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0
KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotI2VuZGlm
Ci0KICAgICB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dnZXI+
IHg7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMaWZlY3ljbGVMb2dnZXI+IHkgeyBX
VEZNb3ZlKHgpIH07CkBAIC04NCwyNSArNjcsMTEgQEAgVEVTVChXVEZfTmV2ZXJEZXN0cm95ZWQs
IENvbnN0cnVjdCkKIAogICAgIHsgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vdmVPbmx5TGlmZWN5
Y2xlTG9nZ2VyPiB4IHsgW10geyByZXR1cm4gTW92ZU9ubHlMaWZlY3ljbGVMb2dnZXIgeyAibmFt
ZSIgfTsgfSgpIH07IFVOVVNFRF9QQVJBTSh4KTsgfQogICAgIEFTU0VSVF9TVFJFUSgiY29uc3Ry
dWN0KG5hbWUpIG1vdmUtY29uc3RydWN0KG5hbWUpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwotCi0gICAgewotICAgICAgICBzdGF0aWMgYXV0byB4ID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgICAgIE1vdmVPbmx5TGlmZWN5Y2xlTG9nZ2Vy
IGwgeyAibmFtZSIgfTsKLSAgICAgICAgICAgIGwuc2V0TmFtZSgieCIpOwotICAgICAgICAgICAg
cmV0dXJuIGw7Ci0gICAgICAgIH0oKSk7Ci0gICAgICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICB9
Ci0jaWYgQ09NUElMRVIoTVNWQykgJiYgIWRlZmluZWQoTkRFQlVHKQotICAgIEFTU0VSVF9TVFJF
USgiY29uc3RydWN0KG5hbWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0KHgpIGRlc3RydWN0
KDxkZWZhdWx0PikgbW92ZS1jb25zdHJ1Y3QoeCkgZGVzdHJ1Y3QoPGRlZmF1bHQ+KSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7Ci0jZWxzZQotICAgIEFTU0VSVF9TVFJFUSgiY29uc3RydWN0KG5h
bWUpIHNldC1uYW1lKHgpIG1vdmUtY29uc3RydWN0KHgpIGRlc3RydWN0KDxkZWZhdWx0PikgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBWZWN0b3I8
aW50PiYgbGlzdCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8geCA9IG1ha2VOZXZlckRlc3Ry
b3llZChWZWN0b3I8aW50PiB7IDEsIDIsIDMgfSk7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVz
dHJveWVkIHggPSBWZWN0b3I8aW50PiB7IDEsIDIsIDMgfTsKICAgICByZXR1cm4geDsKIH0KIAo=
</data>
<flag name="review"
          id="472895"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>