<?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>206596</bug_id>
          
          <creation_ts>2020-01-22 10:44:16 -0800</creation_ts>
          <short_desc>Implement AX isolated tree mode support for event notifications.</short_desc>
          <delta_ts>2022-02-10 16:26:07 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>207581</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1609617</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-01-22 10:44:16 -0800</bug_when>
    <thetext>Implement AX isolated tree mode support for event notifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609626</commentid>
    <comment_count>1</comment_count>
      <attachid>388442</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-01-22 11:08:59 -0800</bug_when>
    <thetext>Created attachment 388442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609667</commentid>
    <comment_count>2</comment_count>
      <attachid>388455</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-01-22 11:57:57 -0800</bug_when>
    <thetext>Created attachment 388455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609668</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-01-22 11:59:21 -0800</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #2)
&gt; Created attachment 388455 [details]
&gt; Patch

Fix for GTK and WIN builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609673</commentid>
    <comment_count>4</comment_count>
      <attachid>388455</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-01-22 12:12:02 -0800</bug_when>
    <thetext>Comment on attachment 388455
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:606
&gt; +void AXObjectCache::cacheAndWrap(AccessibilityObject* newObject, RenderObject* renderer, Node* node, Widget* widget)

maybe rename to cacheAndInitializeWrapperObject()

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:806
&gt; +    RefPtr&lt;AccessibilityObject&gt; obj;

how come you want to remove the initialization?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609678</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-01-22 12:22:15 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #4)
&gt; Comment on attachment 388455 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388455&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:606
&gt; &gt; +void AXObjectCache::cacheAndWrap(AccessibilityObject* newObject, RenderObject* renderer, Node* node, Widget* widget)
&gt; 
&gt; maybe rename to cacheAndInitializeWrapperObject()

Done.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:806
&gt; &gt; +    RefPtr&lt;AccessibilityObject&gt; obj;
&gt; 
&gt; how come you want to remove the initialization?

The default constructor of most smart pointers typically initialize the internal pointer to nullptr, like in the case of RefPtr:

    ALWAYS_INLINE constexpr RefPtr() : m_ptr(nullptr) { }

In this case it is also followed by a switch that will initialize the pointer to something, including:

    default:
        obj = nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609691</commentid>
    <comment_count>6</comment_count>
      <attachid>388461</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-01-22 12:45:40 -0800</bug_when>
    <thetext>Created attachment 388461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609706</commentid>
    <comment_count>7</comment_count>
      <attachid>388462</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-01-22 13:11:18 -0800</bug_when>
    <thetext>Created attachment 388462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609707</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-01-22 13:13:06 -0800</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #7)
&gt; Created attachment 388462 [details]
&gt; Patch

Another fix for GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609782</commentid>
    <comment_count>9</comment_count>
      <attachid>388462</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-01-22 15:33:49 -0800</bug_when>
    <thetext>Comment on attachment 388462
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1032
&gt; +        AccessibilityObject* obj = note.first.get();

seems like an auto here would be an improvement

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1152
&gt; +        return isolatedObjectForAXObject(*axObject).get();

this worries me here that we&apos;re accessing the tree and objects on that tree on the main thread now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627186</commentid>
    <comment_count>10</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-03-07 00:13:50 -0800</bug_when>
    <thetext>Do we still need this one? or is it obsolete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627206</commentid>
    <comment_count>11</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-03-07 07:57:56 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 207581 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388442</attachid>
            <date>2020-01-22 11:08:59 -0800</date>
            <delta_ts>2020-01-22 11:57:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206596-20200122140857.patch</filename>
            <type>text/plain</type>
            <size>33202</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI0YzhlZmEyOWViZGYx
N2VjMTEyNjM3MWZjMTE4MDQwNmY4ZTk5Zi4uMzYwZDYwMDU2MzY5YmQxODBmNzA0OTMwOTUxOTM4
NzZhODE0MzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAxLTIyICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
QVggaXNvbGF0ZWQgdHJlZSBtb2RlIHN1cHBvcnQgZm9yIGV2ZW50IG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1OTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBpc29sYXRl
ZCB0cmVlIG1vZGUsIGV2ZW50IG5vdGlmaWNhdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9sbG93czoK
KyAgICAgICAgMS4gRE9NIG9iamVjdHMgYXJlIG1hcHBlZCB0byBBWE9iamVjdHMuCisgICAgICAg
IDIuIEFYT2JqZWN0cyBhcmUgaW4gdHVybiBtYXBwZWQgdG8gdGhlaXIgYXNzb2NpYXRlZCBJc29s
YXRlZE9iamVjdHMuCisgICAgICAgIDMuIFRoZSBJc29sYXRlZE9iamVjdCdzIHdhcHBlciBpcyB1
c2VkIHRvIHBvc3QgYSBwbGF0Zm9ybSBub3RpZmljYXRpb24uCisgICAgICAgIDQuIEFYT2JqZWN0
cyB3aWxsIG5vdCBoYXZlIGEgcGxhdGZvcm0gd3JhcHBlciBzaW5jZSBpdCB3b24ndCBiZSBleHBv
c2VkCisgICAgICAgIHRvIGFueSBjbGllbnQgZGlyZWN0bHkuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6Y2FjaGVBbmRXcmFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9y
Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBv
c3RUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3ROb3Rp
ZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpYWJsZU9i
amVjdCk6IFJldHVybnMgYW4gQVhDb3JlT2JqZWN0IHRoYXQgY2FuIGJlIGVpdGhlciBhbiBBWE9i
amVjdCBvciBhbiBJc29sYXRlZE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmZyYW1lTG9hZGluZ0V2ZW50Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeSk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjppc29sYXRlZE9iamVjdEZvckFYT2JqZWN0IGNvbnN0KTogTWFw
cyBhbiBBWE9iamVjdCB0byBpdHMgYXNzb2NpYXRlZCBJc29sYXRlZE9iamVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJvb3RXZWJBcmVhKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVw
ZGF0ZUFjdGl2ZU9wdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRl
eHRDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGlu
Z0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOiBJbXBsZW1lbnRzIHdlYkFyZWFP
YmplY3QgbWV0aG9kLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuaDogSW1wbGVtZW50cyB3ZWJBcmVhT2JqZWN0IG1ldGhvZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRNYXJrZXJGb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpw
b3N0VXNlckluZm9Gb3JDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b25Gb3JUZXh0Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmcmFt
ZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKwogMjAyMC0wMS0xOCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gTGF5b3V0U3RhdGUg
Y29uc3RydWN0b3Igc2hvdWxkbid0IHRha2UgTGF5b3V0VHJlZUNvbnRlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDZmMzdjMGIzZjI4
OTYzNTA1Mjg0NDA0ZDQyYzYxZjdlYjA0ODk2YjIuLjZkNjVmYzJjMzc5NDRhMDMwMWRiMDUyMjRm
NjVmZTkyNjE2N2E4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcApAQCAtNjAzLDYgKzYwMywyOSBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IGNyZWF0ZUZyb21Ob2RlKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpjcmVhdGUobm9kZSk7CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6
Y2FjaGVBbmRXcmFwKEFjY2Vzc2liaWxpdHlPYmplY3QqIG5ld09iamVjdCwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgTm9kZSogbm9kZSwgV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgQVNTRVJUKG5l
d09iamVjdCk7CisgICAgQVhJRCBheElEID0gZ2V0QVhJRChuZXdPYmplY3QpOworICAgIGlmIChy
ZW5kZXJlcikKKyAgICAgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChyZW5kZXJlciwgYXhJ
RCk7CisgICAgaWYgKG5vZGUpCisgICAgICAgIG1fbm9kZU9iamVjdE1hcHBpbmcuc2V0KG5vZGUs
IGF4SUQpOworICAgIGlmICh3aWRnZXQpCisgICAgICAgIG1fd2lkZ2V0T2JqZWN0TWFwcGluZy5z
ZXQod2lkZ2V0LCBheElEKTsKKyAgICBtX29iamVjdHMuc2V0KGF4SUQsIG5ld09iamVjdCk7Cisg
ICAgbmV3T2JqZWN0LT5pbml0KCk7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRSkKKyAgICAvLyBJZiB0aGUgY2xpZW50IHN1cHBvcnRzIHRoZSBpc29sYXRlZCB0cmVlLCB0
aGUgaXNvbGF0ZWQgb2JqZWN0IHdpbGwKKyAgICAvLyBwcm92aWRlIHRoZSBwbGF0Zm9ybSB3cmFw
cGVyLiBUaHVzLCBhdHRhY2ggYSB3cmFwcGVyIG9ubHkgaWYgdGhlIGNsaWVudAorICAgIC8vIGRv
ZXNuJ3Qgc3VwcG9ydCB0aGUgaXNvbGF0ZWQgdHJlZS4KKyAgICBpZiAoIWNsaWVudFN1cHBvcnRz
SXNvbGF0ZWRUcmVlKCkpCisgICAgICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqZWN0KTsKKyNlbHNl
CisgICAgYXR0YWNoV3JhcHBlcihuZXdPYmplY3QpOworI2VuZGlmCit9CisKIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFdpZGdldCogd2lkZ2V0KQogewog
ICAgIGlmICghd2lkZ2V0KQpAQCAtNjI1LDEyICs2NDgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShXaWRnZXQqIHdpZGdldCkKICAgICBpZiAoIW5l
d09iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBnZXRBWElEKG5ld09iai5nZXQo
KSk7Ci0gICAgCi0gICAgbV93aWRnZXRPYmplY3RNYXBwaW5nLnNldCh3aWRnZXQsIG5ld09iai0+
b2JqZWN0SUQoKSk7Ci0gICAgbV9vYmplY3RzLnNldChuZXdPYmotPm9iamVjdElEKCksIG5ld09i
aik7Ci0gICAgbmV3T2JqLT5pbml0KCk7Ci0gICAgYXR0YWNoV3JhcHBlcihuZXdPYmouZ2V0KCkp
OworICAgIGNhY2hlQW5kV3JhcChuZXdPYmouZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIHdpZGdl
dCk7CiAgICAgcmV0dXJuIG5ld09iai5nZXQoKTsKIH0KIApAQCAtNjczLDEyICs2OTEsNyBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2Rl
KQogICAgIC8vIFdpbGwgY3Jhc2ggbGF0ZXIgaWYgd2UgaGF2ZSB0d28gb2JqZWN0cyBmb3IgdGhl
IHNhbWUgbm9kZS4KICAgICBBU1NFUlQoIWdldChub2RlKSk7CiAKLSAgICBnZXRBWElEKG5ld09i
ai5nZXQoKSk7Ci0KLSAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdPYmotPm9i
amVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmplY3RJRCgpLCBuZXdPYmop
OwotICAgIG5ld09iai0+aW5pdCgpOwotICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsK
KyAgICBjYWNoZUFuZFdyYXAobmV3T2JqLmdldCgpLCBudWxscHRyLCBub2RlKTsKICAgICBuZXdP
YmotPnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKTsKICAgICAvLyBTb21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSB3aWxsIGNhdXNlIHRoZSBuZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFuZCB0aGVuCiAg
ICAgLy8gaXQgd2lsbCBkaXNhcHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZpbmlzaGVkLCBs
ZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUuCkBAIC03MDEsMTIgKzcxNCw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiAgICAgLy8gV2lsbCBjcmFzaCBsYXRlciBpZiB3ZSBoYXZlIHR3byBvYmplY3RzIGZv
ciB0aGUgc2FtZSByZW5kZXJlci4KICAgICBBU1NFUlQoIWdldChyZW5kZXJlcikpOwogCi0gICAg
Z2V0QVhJRChuZXdPYmouZ2V0KCkpOwotCi0gICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChy
ZW5kZXJlciwgbmV3T2JqLT5vYmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+
b2JqZWN0SUQoKSwgbmV3T2JqKTsKLSAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFw
cGVyKG5ld09iai5nZXQoKSk7CisgICAgY2FjaGVBbmRXcmFwKG5ld09iai5nZXQoKSwgcmVuZGVy
ZXIpOwogICAgIG5ld09iai0+c2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUobmV3T2JqLT5hY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkpOwogICAgIC8vIFNvbWV0aW1lcyBhc2tpbmcgYWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpIHdpbGwgY2F1c2UgdGhlIG5ld09iamVjdCB0byBiZSBkZWFsbG9jYXRl
ZCwgYW5kIHRoZW4KICAgICAvLyBpdCB3aWxsIGRpc2FwcGVhciB3aGVuIHRoaXMgZnVuY3Rpb24g
aXMgZmluaXNoZWQsIGxlYWRpbmcgdG8gYSB1c2UtYWZ0ZXItZnJlZS4KQEAgLTc5NSw4ICs4MDMs
OCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpyb290T2JqZWN0Rm9yRnJh
bWUoRnJhbWUqIGZyYW1lKQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKIHsKLSAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gbnVsbHB0cjsKLSAgICAKKyAgICBSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4gb2JqOworCiAgICAgLy8gd2lsbCBiZSBmaWxsZWQgaW4uLi4KICAgICBz
d2l0Y2ggKHJvbGUpIHsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9u
OgpAQCAtODI5LDE1ICs4MzcsMTEgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICBkZWZhdWx0OgogICAg
ICAgICBvYmogPSBudWxscHRyOwogICAgIH0KLSAgICAKLSAgICBpZiAob2JqKQotICAgICAgICBn
ZXRBWElEKG9iai5nZXQoKSk7Ci0gICAgZWxzZQorCisgICAgaWYgKCFvYmopCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgbV9vYmplY3RzLnNldChvYmotPm9iamVjdElEKCksIG9iaik7
Ci0gICAgb2JqLT5pbml0KCk7Ci0gICAgYXR0YWNoV3JhcHBlcihvYmouZ2V0KCkpOworICAgIGNh
Y2hlQW5kV3JhcChvYmouZ2V0KCkpOwogICAgIHJldHVybiBvYmouZ2V0KCk7CiB9CiAKQEAgLTEw
MjUsNyArMTAyOSwxMSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1l
ckZpcmVkKCkKICAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBXVEZNb3ZlKG1fbm90aWZpY2F0aW9u
c1RvUG9zdCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBub3RlIDogbm90aWZpY2F0aW9u
cykgewotICAgICAgICBBWENvcmVPYmplY3QqIG9iaiA9IG5vdGUuZmlyc3QuZ2V0KCk7CisgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG5vdGUuZmlyc3QuZ2V0KCk7CisgICAgICAg
IEFTU0VSVChvYmopOworICAgICAgICBpZiAoIW9iaikKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CiAgICAgICAgIGlmICghb2JqLT5vYmplY3RJRCgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
QEAgLTEwNTAsOCArMTA1OCw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9z
dFRpbWVyRmlyZWQoKQogICAgICAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgIT0gQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmosIG5vdGlmaWNh
dGlvbik7CisKKyAgICAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKG5vdGlmaWFibGVPYmpl
Y3Qob2JqKSwgbm90aWZpY2F0aW9uKTsKIAogICAgICAgICBpZiAobm90aWZpY2F0aW9uID09IEFY
Q2hpbGRyZW5DaGFuZ2VkICYmIG9iai0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKSAmJiBvYmotPmxh
c3RLbm93bklzSWdub3JlZFZhbHVlKCkgIT0gb2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkp
CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQob2JqLT5wYXJlbnRPYmplY3QoKSk7CkBAIC0x
MTE0LDcgKzExMjIsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oTm9k
ZSogbm9kZSwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uLCBQbwogICAgIHBvc3ROb3RpZmlj
YXRpb24ob2JqZWN0LmdldCgpLCAmbm9kZS0+ZG9jdW1lbnQoKSwgbm90aWZpY2F0aW9uLCBwb3N0
VGFyZ2V0LCBwb3N0VHlwZSk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNh
dGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRvY3VtZW50LCBBWE5vdGlmaWNh
dGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQgcG9zdFRhcmdldCwgUG9zdFR5cGUgcG9zdFR5
cGUpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNh
dGlvbiwgUG9zdFRhcmdldCBwb3N0VGFyZ2V0LCBQb3N0VHlwZSBwb3N0VHlwZSkKIHsKICAgICBz
dG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlcygpOwogCkBAIC0xMTMyLDcgKzExNDAs
MTggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCog
b2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEEKICAgICAgICAgaWYgKCFtX25vdGlmaWNhdGlv
blBvc3RUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgbV9ub3RpZmljYXRpb25Qb3N0VGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfSBlbHNlCi0gICAgICAgIHBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbihvYmplY3QsIG5vdGlmaWNhdGlvbik7CisgICAgICAgIHBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbihub3RpZmlhYmxlT2JqZWN0KG9iamVjdCksIG5vdGlmaWNhdGlvbik7Cit9CisK
K0FYQ29yZU9iamVjdCogQVhPYmplY3RDYWNoZTo6bm90aWZpYWJsZU9iamVjdChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCkKK3sKKyAgICAvLyBJbiBpc29sYXRlZCB0cmVlIG1vZGUsIEFj
Y2Vzc2liaWxpdHlPYmplY3RzIGhhdmUgbm8gd3JhcHBlcnMgYW5kCisgICAgLy8gaXNvbGF0ZWQg
b2JqZWN0cyBzaG91bGQgYmUgdGhlIHRoZSB0YXJnZXRzIG9mIG5vdGlmaWNhdGlvbnMuCisjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICBpZiAoIWF4T2JqZWN0LT53
cmFwcGVyKCkpCisgICAgICAgIHJldHVybiBpc29sYXRlZE9iamVjdEZvckFYT2JqZWN0KCpheE9i
amVjdCkuZ2V0KCk7CisjZW5kaWYKKyAgICByZXR1cm4gYXhPYmplY3Q7CiB9CiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6Y2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKiBub2RlKQpAQCAtMTQ5MSw4ICsx
NTEwLDExIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnROb3RpZmljYXRp
b24oRnJhbWUqIGZyYW1lLCBBWExvYWRpbmdFdmVudCBsCiAgICAgaWYgKCFjb250ZW50UmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGdl
dE9yQ3JlYXRlKGNvbnRlbnRSZW5kZXJlcik7Ci0gICAgZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9y
bU5vdGlmaWNhdGlvbihvYmosIGxvYWRpbmdFdmVudCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogYXhPYmplY3QgPSBnZXRPckNyZWF0ZShjb250ZW50UmVuZGVyZXIpOworICAgIGlmICghYXhP
YmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1O
b3RpZmljYXRpb24obm90aWZpYWJsZU9iamVjdChheE9iamVjdCksIGxvYWRpbmdFdmVudCk7CiB9
CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdExpdmVSZWdpb25DaGFuZ2VOb3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpAQCAtMzA4MCw3ICszMTAyLDYgQEAgUmVmPEFY
SXNvbGF0ZWRPYmplY3Q+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNo
eShBWENvcmVPYmplY3QmIG8KIAogICAgIGlzb2xhdGVkVHJlZU5vZGUtPnNldFRyZWVJZGVudGlm
aWVyKHRyZWUudHJlZUlkZW50aWZpZXIoKSk7CiAgICAgaXNvbGF0ZWRUcmVlTm9kZS0+c2V0UGFy
ZW50KHBhcmVudElEKTsKLSAgICBheE9iamVjdENhY2hlLT5kZXRhY2hXcmFwcGVyKCZvYmplY3Qs
IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudENoYW5nZSk7CiAgICAgYXhPYmpl
Y3RDYWNoZS0+YXR0YWNoV3JhcHBlcigmaXNvbGF0ZWRUcmVlTm9kZS5nZXQoKSk7CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogb2JqZWN0LmNoaWxkcmVuKCkpIHsKQEAgLTMxMTgsNiAr
MzEzOSwxNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYT2JqZWN0Q2FjaGU6OmdlbmVyYXRlSXNv
bGF0ZWRUcmVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgRAogCiAgICAgcmV0dXJuIG1ha2VSZWYo
KnRyZWUpOwogfQorCitSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhPYmplY3RDYWNoZTo6aXNv
bGF0ZWRPYmplY3RGb3JBWE9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVj
dCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGFnZUlEKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGlmIChhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9w
YWdlSUQpKQorICAgICAgICByZXR1cm4gdHJlZS0+bm9kZUZvcklEKGF4T2JqZWN0Lm9iamVjdElE
KCkpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CiAjZW5kaWYKICAgICAKIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6ZGVmZXJSZWNvbXB1dGVJc0lnbm9yZWRJZk5lZWRlZChFbGVtZW50KiBlbGVtZW50
KQpAQCAtMzIwNSwxMiArMzIzNywxMSBAQCBib29sIGlzTm9kZUFyaWFWaXNpYmxlKE5vZGUqIG5v
ZGUpCiAgICAgcmV0dXJuICFyZXF1aXJlc0FyaWFIaWRkZW5GYWxzZSB8fCBhcmlhSGlkZGVuRmFs
c2VQcmVzZW50OwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpyb290
V2ViQXJlYSgpCitBWENvcmVPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OnJvb3RXZWJBcmVhKCkKIHsK
LSAgICBBWENvcmVPYmplY3QqIHJvb3RPYmplY3QgPSB0aGlzLT5yb290T2JqZWN0KCk7Ci0gICAg
aWYgKCFyb290T2JqZWN0IHx8ICFyb290T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldz4oKnJvb3RPYmplY3QpLndlYkFyZWFPYmplY3QoKTsKKyAgICBpZiAo
YXV0byogcm9vdE9iamVjdCA9IHRoaXMtPnJvb3RPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHJv
b3RPYmplY3QtPndlYkFyZWFPYmplY3QoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogQVhB
dHRyaWJ1dGVDYWNoZUVuYWJsZXI6OkFYQXR0cmlidXRlQ2FjaGVFbmFibGVyKEFYT2JqZWN0Q2Fj
aGUqIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aAppbmRleCBkM2Q0NWYzM2M4MDk4ZDk3M2U5NTkyMzc5MmQxMmE2YTc4OTgwZGFmLi5jMGYwYzMz
ZDY1YTA2NDQ3NTkwZTliMjlkMzZmMDUzYzVhNGNhM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBBWENvcmVPYmplY3QqIHJvb3RPYmplY3QoKTsKICAgICAvLyBS
ZXR1cm5zIHRoZSByb290IG9iamVjdCBmb3IgYSBzcGVjaWZpYyBmcmFtZS4KICAgICBXRUJDT1JF
X0VYUE9SVCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsK
LSAgICAKKwogICAgIC8vIEZvciBBWCBvYmplY3RzIHdpdGggZWxlbWVudHMgdGhhdCBiYWNrIHRo
ZW0uCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0Kik7
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0T3JDcmVhdGUoV2lkZ2V0Kik7CkBAIC0xNjAs
NyArMTYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gdXNlZCBmb3Igb2JqZWN0cyB3aXRob3V0IGJh
Y2tpbmcgZWxlbWVudHMKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZSk7Ci0gICAgCisKICAgICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nl
c3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVhZHkgZXhpc3RzCiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogZ2V0KFJlbmRlck9iamVjdCopOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChX
aWRnZXQqKTsKQEAgLTE3Miw3ICsxNzIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlKEFY
SUQpOwogCiAgICAgdm9pZCBkZXRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxp
dHlEZXRhY2htZW50VHlwZSk7Citwcml2YXRlOgorICAgIHZvaWQgY2FjaGVBbmRXcmFwKEFjY2Vz
c2liaWxpdHlPYmplY3QqLCBSZW5kZXJPYmplY3QqID0gbnVsbHB0ciwgTm9kZSogPSBudWxscHRy
LCBXaWRnZXQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBhdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVj
dCopOworCitwdWJsaWM6CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoTm9kZSosIE5vZGUqIG5l
d0NoaWxkID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0
KiwgUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCA9IG51bGxwdHIpOwogICAgIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKEFYQ29yZU9iamVjdCopOwpAQCAtMTk3LDYgKzIwMSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRJc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KE5vZGUqKTsKICAgICBzdGF0aWMgUmVm
PEFYSXNvbGF0ZWRUcmVlPiBnZW5lcmF0ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciwgRG9j
dW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZUlzb2xhdGVk
VHJlZUhpZXJhcmNoeShBWENvcmVPYmplY3QmLCBBWElELCBBWE9iamVjdENhY2hlKiwgQVhJc29s
YXRlZFRyZWUmLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiYsIGJvb2wgaXNSb290KTsK
KyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gaXNvbGF0ZWRPYmplY3RGb3JBWE9iamVjdChj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCkgY29uc3Q7CiAjZW5kaWYKIAogcHVi
bGljOgpAQCAtMzExLDcgKzMxNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdE5vdGlmaWNh
dGlvbihSZW5kZXJPYmplY3QqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVs
ZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKICAgICB2b2lkIHBvc3ROb3Rp
ZmljYXRpb24oTm9kZSosIEFYTm90aWZpY2F0aW9uLCBQb3N0VGFyZ2V0ID0gVGFyZ2V0RWxlbWVu
dCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOwotICAgIHZvaWQgcG9zdE5vdGlmaWNh
dGlvbihBWENvcmVPYmplY3QqLCBEb2N1bWVudCosIEFYTm90aWZpY2F0aW9uLCBQb3N0VGFyZ2V0
ID0gVGFyZ2V0RWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOworICAgIHZv
aWQgcG9zdE5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgRG9jdW1lbnQqLCBBWE5v
dGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFz
eW5jaHJvbm91c2x5KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHNob3dJbnRlbnQoY29u
c3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKQEAgLTM1NywyNSArMzYyLDI1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlZmVyVGV4dFJlcGxhY2VtZW50Tm90aWZpY2F0aW9uRm9yVGV4dENvbnRy
b2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHByZXZpb3VzVmFs
dWUpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0
cjxSYW5nZT4sIGNvbnN0IFN0cmluZyYpOwotICAgIAogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBw
b3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOwor
ICAgIEFYQ29yZU9iamVjdCogbm90aWZpYWJsZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7
CiAgICAgdm9pZCBwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9s
ZEZvY3VzZWROb2RlLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7CiAKICAgICB2b2lkIHBsYXRmb3Jt
UGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxp
dHlPYmplY3QqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKTsKLSAgICB2b2lkIHBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotICAgIHZvaWQgcG9zdFRleHRSZXBsYWNlbWVudFBs
YXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQWNjZXNzaWJpbGl0eU9iamVjdCosIGNv
bnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwotICAgIHZvaWQgcG9zdFRleHRSZXBsYWNlbWVudFBs
YXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWFRleHRFZGl0VHlwZSwg
Y29uc3QgU3RyaW5nJiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpOworICAgIHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZp
Y2F0aW9uKEFYQ29yZU9iamVjdCosIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpOworICAgIHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRm
b3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICB2b2lkIHBvc3RUZXh0UmVwbGFjZW1l
bnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFYQ29yZU9iamVjdCosIGNvbnN0
IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCYpOworICAgIHZvaWQgcG9zdFRleHRSZXBsYWNlbWVudFBsYXRm
b3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJp
bmcmLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
Jik7CiAjZWxzZQogICAgIHN0YXRpYyBBWFRleHRDaGFuZ2UgdGV4dENoYW5nZUZvckVkaXRUeXBl
KEFYVGV4dEVkaXRUeXBlKTsKICAgICB2b2lkIG5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmlj
YXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIGNvbnN0
IFN0cmluZyYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1O
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTG9hZGluZ0V2ZW50KTsKKyAgICB2
b2lkIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0Kiwg
QVhMb2FkaW5nRXZlbnQpOwogICAgIHZvaWQgdGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVj
dCopOwogICAgIHZvaWQgbGFiZWxDaGFuZ2VkKEVsZW1lbnQqKTsKIApAQCAtNDEwLDcgKzQxNSw3
IEBAIHByb3RlY3RlZDoKICAgICBib29sIHNob3VsZFNraXBCb3VuZGFyeShjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKIAogcHJpdmF0ZToKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiByb290V2ViQXJlYSgpOworICAgIEFYQ29yZU9iamVjdCogcm9vdFdl
YkFyZWEoKTsKIAogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkSW1hZ2VN
YXBVSUVsZW1lbnQoSFRNTEFyZWFFbGVtZW50Kik7CiAgICAgc3RhdGljIEFYQ29yZU9iamVjdCog
Zm9jdXNlZE9iamVjdChEb2N1bWVudCYpOwpAQCAtNDY0LDcgKzQ2OSw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogCiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25Q
b3N0VGltZXI7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QVhDb3JlT2JqZWN0PiwgQVhO
b3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlvbnNUb1Bvc3Q7CisgICAgVmVjdG9yPHN0ZDo6cGFp
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4sIEFYTm90aWZpY2F0aW9uPj4gbV9ub3RpZmlj
YXRpb25zVG9Qb3N0OwogCiAgICAgVGltZXIgbV9wYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1l
cjsKIApAQCAtNTk2LDkgKzYwMSw5IEBAIGlubGluZSBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RD
YWNoZTo6ZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZMaW5lKGNvbnN0IENoYXJhY3Rlck9mCiBpbmxpbmUg
Q2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRDaGFyYWN0ZXJPZmZzZXQoY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCkgeyByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7IH0KIGlu
bGluZSBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNDaGFyYWN0ZXJPZmZz
ZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCkgeyByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0
KCk7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBv
c3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxh
dGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dEVkaXRUeXBlLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSB7IH0KLWlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIEFYVGV4dEVk
aXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSB7IH0KK2lubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBWENvcmVPYmplY3QqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RU
ZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBBWFRleHRF
ZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgeyB9Citpbmxp
bmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQVhDb3JlT2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIEFYVGV4
dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSB7IH0KICNl
bHNlCiBpbmxpbmUgQVhUZXh0Q2hhbmdlIEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VGb3JFZGl0
VHlwZShBWFRleHRFZGl0VHlwZSkgeyByZXR1cm4gQVhUZXh0SW5zZXJ0ZWQ7IH0KIGlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAppbmRleCA3YjAyYzIyNDljNmEzOTQ2MzE5ODM0M2Ey
ZTQ3ODBlNDRiNTExMjEwLi4xMjhlYzA1MjNkZjJkNGQ4OGYzN2Q3NGU5YTlkNjIyMDY1ODE2ODRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcApAQCAtMTMwLDEwICsxMzAsMTYgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25J
bmRleCkKICAgICBBU1NFUlRfQVJHKG9wdGlvbkluZGV4LCBvcHRpb25JbmRleCA8IHN0YXRpY19j
YXN0PGludD4obV9jaGlsZHJlbi5zaXplKCkpKTsKIAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hl
ID0gYXhPYmplY3RDYWNoZSgpOwotICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNoaWxkID0gbV9j
aGlsZHJlbltvcHRpb25JbmRleF0uZ2V0KCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQVNTRVJUKGlzPEFjY2Vzc2liaWxpdHlPYmplY3Q+KG1fY2hpbGRyZW5bb3B0
aW9uSW5kZXhdLmdldCgpKSk7CisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5T2JqZWN0PihtX2No
aWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBj
aGlsZCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KG1fY2hpbGRyZW5bb3B0aW9uSW5k
ZXhdLmdldCgpKTsKIAotICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNoaWxkLmdldCgpLCBk
b2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkLCBUYXJn
ZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7Ci0gICAgY2FjaGUtPnBvc3ROb3RpZmljYXRp
b24oY2hpbGQuZ2V0KCksIGRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYTWVudUxpc3RJdGVt
U2VsZWN0ZWQsIFRhcmdldEVsZW1lbnQsIFBvc3RTeW5jaHJvbm91c2x5KTsKKyAgICBjYWNoZS0+
cG9zdE5vdGlmaWNhdGlvbihjaGlsZCwgZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhGb2N1
c2VkVUlFbGVtZW50Q2hhbmdlZCwgVGFyZ2V0RWxlbWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwor
ICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNoaWxkLCBkb2N1bWVudCgpLCBBWE9iamVjdENh
Y2hlOjpBWE1lbnVMaXN0SXRlbVNlbGVjdGVkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25v
dXNseSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggOWJmMDQ5NzhiNzEy
ODk2ZjYxZGNlNDhjM2JiYWEyZmFmYTczNjU2Yi4uODYwNzhiMDc3OGJjZDkxM2VlNTFiZjA2Mjli
YTRhZGY1NTNlNGY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQzNSw2ICs0MzUsNyBAQCBwdWJsaWM6CiAgICAgRnJh
bWUqIG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiB0b3BEb2N1bWVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3Rvcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCBvdmVycmlkZTsKICAgICAvLyAxLWJhc2VkLCB0byBtYXRjaCB0aGUgYXJpYS1sZXZlbCBzcGVj
LgogICAgIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQpAQCAtNzQ1LDkgKzc0Niw2IEBAIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgbV9pc0lnbm9yZWRGcm9tUGFyZW50RGF0YSB7IH07CiAg
ICAgYm9vbCBtX2NoaWxkcmVuRGlydHkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdWJ0cmVlRGly
dHkgeyBmYWxzZSB9OwotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0g
ICAgYm9vbCBtX2lzb2xhdGVkVHJlZU5vZGVJbml0aWFsaXplZCB7IGZhbHNlIH07Ci0jZW5kaWYK
IAogICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSBvdmVycmlkZSB7IG1faXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEgPSBkYXRhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggMDcyMDMxOTA3ZWE0
MzhjODM5Yjk5YmNkMzEyYzJiMTEwMmI3Yzg4ZS4uZDU5MmZjMzA0MzUyMTgxNmZhZTBjNGRhMTE5
NWQ5NjIzNThhY2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTgzNyw2ICs4MzcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
U2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
QVhDb3JlT2JqZWN0KiB3ZWJBcmVhT2JqZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgPSAwOwogICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBh
cmlhLWxldmVsIHNwZWMuCiAgICAgdmlydHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA5YmZhZjE1NWFkYjIzMmE1NjYzZjU4Y2IwOGMx
MmMxMzNlMmMzNTFjLi41YWQ2YmUxZTUwY2IzYWExMDFlMDZmOGM0YzI3NDljZmQzZTJjZTUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5oCkBAIC00MiwxMSArNDIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3KCk7CiAgICAgdm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURl
dGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKikgb3ZlcnJpZGU7CiAKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiB3ZWJBcmVhT2JqZWN0KCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoU2Nyb2xsVmlldyopOwotICAgIAorCisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNj
cm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENh
Y2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNo
ZUlPUy5tbQppbmRleCBmMTFiZmE4ZTBmYWY5OTg1N2ZjMWFlODE2YjY2N2FhZWUxNTQ1YmU1Li40
MzIzODNmMGYzZjZmMjNkZjQwMDY2NmM0OWE3NGU3ODkzYzYwYWNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KQEAgLTk4
LDI3ICs5OCwyNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iaiwgQVhOb3RpZmljYXRpb24gbgogICAgICAgICBbb2JqLT53cmFw
cGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25TdHJpbmdd
OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGNvbnN0IEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpCit2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3Qq
IG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJikKIHsKICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBBWFNlbGVj
dGVkVGV4dENoYW5nZWQpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFY
VGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKQordm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24o
QVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mKQogewogICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmpl
Y3QsIEFYVmFsdWVDaGFuZ2VkKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJl
cGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0
LCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RU
ZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwg
QVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKQogewogICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbihvYmplY3QsIEFYVmFsdWVDaGFuZ2VkKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpw
b3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25Gb3JUZXh0Q29udHJvbChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRS
ZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQVhDb3JlT2JqZWN0
KiBvYmplY3QsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50JikKIHsKICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBBWFZh
bHVlQ2hhbmdlZCk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheEZyYW1lT2JqZWN0LCBB
WExvYWRpbmdFdmVudCBsb2FkaW5nRXZlbnQpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9h
ZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBheEZyYW1lT2JqZWN0
LCBBWExvYWRpbmdFdmVudCBsb2FkaW5nRXZlbnQpCiB7CiAgICAgaWYgKCFheEZyYW1lT2JqZWN0
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDUyZWI0
MGYxYThiZWEyMDUxYTgwMGVlNmE2YjYwMjBmZTJiMGE3MTcuLmU5NTU2MTJjNjBhNTNjMmMwNTY0
MDFkY2Y3ZjBhYWJkNTFiMmQyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0x
NzIsNiArMTcyLDcgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplQXR0cmlidXRl
RGF0YShBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBpc1Jvb3QKICAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6RXhwb3Nlc1RpdGxlVUlFbGVtZW50LCBvYmplY3QuZXhwb3Nlc1RpdGxl
VUlFbGVtZW50KCkpOwogICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWZXJ0
aWNhbFNjcm9sbEJhciwgb2JqZWN0LnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb246
OlZlcnRpY2FsKSk7CiAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Okhvcml6
b250YWxTY3JvbGxCYXIsIG9iamVjdC5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
OjpIb3Jpem9udGFsKSk7CisgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oldl
YkFyZWFPYmplY3QsIG9iamVjdC53ZWJBcmVhT2JqZWN0KCkpOwogICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpBUklBUm9sZUF0dHJpYnV0ZSwgc3RhdGljX2Nhc3Q8aW50PihvYmplY3Qu
YXJpYVJvbGVBdHRyaWJ1dGUoKSkpOwogICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpD
b21wdXRlZExhYmVsLCBvYmplY3QuY29tcHV0ZWRMYWJlbCgpKTsKICAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6UGxhY2Vob2xkZXJWYWx1ZSwgb2JqZWN0LnBsYWNlaG9sZGVyVmFsdWUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggY2U2MjE5NzRkYzJlY2ViNjQ2ODhlNzIx
NWQ0NmExMGQ5MzA0MmRiZi4uZDIyMmY3NDRhYzUwZmI4OTNjMzlkNDhiYzEwNDI0NzVjMjYyYmEy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMzAyLDYgKzMwMiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIFZhbGlkYXRpb25NZXNzYWdlLAogICAgICAgICBWZXJ0aWNhbFNjcm9sbEJhciwK
ICAgICAgICAgVmlzaWJsZUNoaWxkcmVuLAorICAgICAgICBXZWJBcmVhT2JqZWN0LAogICAgIH07
CiAgICAgCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8QVhJRCwgQVhJRD4gQWNjZXNzaWJpbGl0eUlz
b2xhdGVkVHJlZU1hdGhNdWx0aXNjcmlwdFBhaXI7CkBAIC03NjIsNiArNzYzLDcgQEAgcHJpdmF0
ZToKICAgICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgRG9jdW1lbnQq
IHRvcERvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmll
d0FuY2VzdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhDb3JlT2JqZWN0KiB3ZWJBcmVhT2Jq
ZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gb2JqZWN0QXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OldlYkFyZWFPYmplY3QpOyB9CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKSBv
dmVycmlkZTsKICAgICB2b2lkIHRleHRDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRh
dGVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggZjVkYTE2YTBkNmQ2
ZjM4NmYxNTgzYzhkOTM5NTJjYmYwNzE4ZTY2NS4uZjkzOWFiOWI5M2JhNmIyZjlmMTJjMjhkNDg0
M2QwMzdlZTgyN2RhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC0yOCw4ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWSkgJiYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0ICJBWElzb2xhdGVkT2Jq
ZWN0LmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5VGFibGUuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgogI2ltcG9ydCAiV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKQEAgLTM3MCw3ICszNjgsNyBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iaiwg
QVhOb3RpZmljYXRpb24gbgogICAgIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmot
PndyYXBwZXIoKSwgbWFjTm90aWZpY2F0aW9uLCBuaWwsIHNraXBTeXN0ZW1Ob3RpZmljYXRpb24p
OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGNvbnN0IEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50JiBpbnRlbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikK
K3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0
aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYg
aW50ZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7CiAgICAgaWYgKCFv
YmplY3QpCiAgICAgICAgIG9iamVjdCA9IHJvb3RXZWJBcmVhKCk7CkBAIC00MTYsNyArNDE0LDcg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmlj
YXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICBpZiAoaWQgd3JhcHBlciA9IG9iamVjdC0+
d3JhcHBlcigpKQogICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OndyYXBwZXIgZm9yS2V5Ok5T
QWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VFbGVtZW50XTsKIAotICAgIGlmIChhdXRvIHJvb3QgPSBy
b290V2ViQXJlYSgpKSB7CisgICAgaWYgKGF1dG8qIHJvb3QgPSByb290V2ViQXJlYSgpKSB7CiAg
ICAgICAgIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhyb290V2ViQXJlYSgpLT53cmFw
cGVyKCksIE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVz
ZXJJbmZvKTsKICAgICAgICAgaWYgKHJvb3QtPndyYXBwZXIoKSAhPSBvYmplY3QtPndyYXBwZXIo
KSkKICAgICAgICAgICAgIEFYUG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyhvYmplY3QtPndy
YXBwZXIoKSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbiwg
dXNlckluZm8pOwpAQCAtNDI1LDcgKzQyMyw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAg
ICAgW3VzZXJJbmZvIHJlbGVhc2VdOwogfQogCi1zdGF0aWMgdm9pZCBhZGRUZXh0TWFya2VyRm9y
KE5TTXV0YWJsZURpY3Rpb25hcnkqIGNoYW5nZSwgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorc3RhdGljIHZvaWQgYWRkVGV4dE1h
cmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFYQ29yZU9iamVjdCYgb2JqZWN0
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlmIChwb3NpdGlvbi5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMzLDE0ICs0MzEsMTQgQEAgc3RhdGljIHZv
aWQgYWRkVGV4dE1hcmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFjY2Vzc2li
aWxpdHlPYmplY3QmIG8KICAgICAgICAgW2NoYW5nZSBzZXRPYmplY3Q6dGV4dE1hcmtlciBmb3JL
ZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZVZhbHVlU3RhcnRNYXJrZXJdOwogfQogCi1zdGF0
aWMgdm9pZCBhZGRUZXh0TWFya2VyRm9yKE5TTXV0YWJsZURpY3Rpb25hcnkqIGNoYW5nZSwgQWNj
ZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4
dENvbnRyb2wpCitzdGF0aWMgdm9pZCBhZGRUZXh0TWFya2VyRm9yKE5TTXV0YWJsZURpY3Rpb25h
cnkqIGNoYW5nZSwgQVhDb3JlT2JqZWN0JiBvYmplY3QsIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50JiB0ZXh0Q29udHJvbCkKIHsKICAgICBpZiAoaWQgdGV4dE1hcmtlciA9IFtvYmplY3Qud3Jh
cHBlcigpIHRleHRNYXJrZXJGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbDp0ZXh0Q29udHJv
bF0pCiAgICAgICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OnRleHRNYXJrZXIgZm9yS2V5Ok5TQWNjZXNz
aWJpbGl0eVRleHRDaGFuZ2VWYWx1ZVN0YXJ0TWFya2VyXTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFRleHRNYXJrZXJUYXJnZXRUeXBlPgotc3RhdGljIE5TRGljdGlvbmFyeSAqdGV4dFJlcGxh
Y2VtZW50Q2hhbmdlRGljdGlvbmFyeShBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QsIEFYVGV4
dEVkaXRUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBUZXh0TWFya2VyVGFyZ2V0VHlw
ZSYgbWFya2VyVGFyZ2V0KQorc3RhdGljIE5TRGljdGlvbmFyeSAqdGV4dFJlcGxhY2VtZW50Q2hh
bmdlRGljdGlvbmFyeShBWENvcmVPYmplY3QmIG9iamVjdCwgQVhUZXh0RWRpdFR5cGUgdHlwZSwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIFRleHRNYXJrZXJUYXJnZXRUeXBlJiBtYXJrZXJUYXJnZXQp
CiB7CiAgICAgTlNTdHJpbmcgKnRleHQgPSAoTlNTdHJpbmcgKilzdHJpbmc7CiAgICAgTlNVSW50
ZWdlciBsZW5ndGggPSBbdGV4dCBsZW5ndGhdOwpAQCAtNDU3LDcgKzQ1NSw3IEBAIHN0YXRpYyBO
U0RpY3Rpb25hcnkgKnRleHRSZXBsYWNlbWVudENoYW5nZURpY3Rpb25hcnkoQWNjZXNzaWJpbGl0
eU9iamVjdCYgb2JqZWN0CiAgICAgcmV0dXJuIFtjaGFuZ2UgYXV0b3JlbGVhc2VdOwogfQogCi12
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRUeXBlIHR5cGUsIGNvbnN0
IFN0cmluZyYgdGV4dCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK3ZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29y
ZU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCF0ZXh0Lmxlbmd0
aCgpKQogICAgICAgICByZXR1cm47CkBAIC00NjUsNyArNDYzLDcgQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0
eU9iamVjdCoKICAgICBwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24ob2Jq
ZWN0LCBBWFRleHRFZGl0VHlwZVVua25vd24sIGVtcHR5U3RyaW5nKCksIHR5cGUsIHRleHQsIHBv
c2l0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgcG9zdFVzZXJJbmZvRm9yQ2hhbmdlcyhBY2Nlc3Np
YmlsaXR5T2JqZWN0JiByb290V2ViQXJlYSwgQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0LCBO
U011dGFibGVBcnJheSogY2hhbmdlcykKK3N0YXRpYyB2b2lkIHBvc3RVc2VySW5mb0ZvckNoYW5n
ZXMoQVhDb3JlT2JqZWN0JiByb290V2ViQXJlYSwgQVhDb3JlT2JqZWN0JiBvYmplY3QsIE5TTXV0
YWJsZUFycmF5KiBjaGFuZ2VzKQogewogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnVzZXJJbmZv
ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjRdOwogICAg
IFt1c2VySW5mbyBzZXRPYmplY3Q6QChwbGF0Zm9ybUNoYW5nZVR5cGVGb3JXZWJDb3JlQ2hhbmdl
VHlwZShBWFRleHRTdGF0ZUNoYW5nZVR5cGVFZGl0KSkgZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRl
eHRTdGF0ZUNoYW5nZVR5cGVLZXldOwpAQCAtNDgyLDcgKzQ4MCw3IEBAIHN0YXRpYyB2b2lkIHBv
c3RVc2VySW5mb0ZvckNoYW5nZXMoQWNjZXNzaWJpbGl0eU9iamVjdCYgcm9vdFdlYkFyZWEsIEFj
Y2Vzc2liaWxpCiAgICAgW3VzZXJJbmZvIHJlbGVhc2VdOwogfQogCi12b2lkIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRUeXBlIGRlbGV0aW9uVHlwZSwgY29uc3QgU3RyaW5n
JiBkZWxldGVkVGV4dCwgQVhUZXh0RWRpdFR5cGUgaW5zZXJ0aW9uVHlwZSwgY29uc3QgU3RyaW5n
JiBpbnNlcnRlZFRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCit2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENv
cmVPYmplY3QqIG9iamVjdCwgQVhUZXh0RWRpdFR5cGUgZGVsZXRpb25UeXBlLCBjb25zdCBTdHJp
bmcmIGRlbGV0ZWRUZXh0LCBBWFRleHRFZGl0VHlwZSBpbnNlcnRpb25UeXBlLCBjb25zdCBTdHJp
bmcmIGluc2VydGVkVGV4dCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAg
ICBpZiAoIW9iamVjdCkKICAgICAgICAgb2JqZWN0ID0gcm9vdFdlYkFyZWEoKTsKQEAgLTQ5OSw3
ICs0OTcsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIFtjaGFuZ2VzIHJlbGVhc2Vd
OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5v
dGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgY29u
c3QgU3RyaW5nJiBkZWxldGVkVGV4dCwgY29uc3QgU3RyaW5nJiBpbnNlcnRlZFRleHQsIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0Q29udHJvbCkKK3ZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQVhD
b3JlT2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wp
CiB7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIG9iamVjdCA9IHJvb3RXZWJBcmVhKCk7CkBA
IC01MTYsMTEgKzUxNCwxMSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1l
bnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFjY2VzcwogICAgIFtjaGFuZ2Vz
IHJlbGVhc2VdOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxh
dGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhM
b2FkaW5nRXZlbnQgbG9hZGluZ0V2ZW50KQordm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRp
bmdFdmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogYXhGcmFtZU9iamVjdCwg
QVhMb2FkaW5nRXZlbnQgbG9hZGluZ0V2ZW50KQogewogICAgIGlmICghYXhGcmFtZU9iamVjdCkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKGxvYWRpbmdFdmVudCA9PSBBWExvYWRp
bmdGaW5pc2hlZCAmJiBheEZyYW1lT2JqZWN0LT5kb2N1bWVudCgpID09IGF4RnJhbWVPYmplY3Qt
PnRvcERvY3VtZW50KCkpCiAgICAgICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihheEZyYW1l
T2JqZWN0LCBBWExvYWRDb21wbGV0ZSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388455</attachid>
            <date>2020-01-22 11:57:57 -0800</date>
            <delta_ts>2020-01-22 12:45:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206596-20200122145756.patch</filename>
            <type>text/plain</type>
            <size>34729</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI0YzhlZmEyOWViZGYx
N2VjMTEyNjM3MWZjMTE4MDQwNmY4ZTk5Zi4uMzYwZDYwMDU2MzY5YmQxODBmNzA0OTMwOTUxOTM4
NzZhODE0MzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAxLTIyICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
QVggaXNvbGF0ZWQgdHJlZSBtb2RlIHN1cHBvcnQgZm9yIGV2ZW50IG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1OTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBpc29sYXRl
ZCB0cmVlIG1vZGUsIGV2ZW50IG5vdGlmaWNhdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9sbG93czoK
KyAgICAgICAgMS4gRE9NIG9iamVjdHMgYXJlIG1hcHBlZCB0byBBWE9iamVjdHMuCisgICAgICAg
IDIuIEFYT2JqZWN0cyBhcmUgaW4gdHVybiBtYXBwZWQgdG8gdGhlaXIgYXNzb2NpYXRlZCBJc29s
YXRlZE9iamVjdHMuCisgICAgICAgIDMuIFRoZSBJc29sYXRlZE9iamVjdCdzIHdhcHBlciBpcyB1
c2VkIHRvIHBvc3QgYSBwbGF0Zm9ybSBub3RpZmljYXRpb24uCisgICAgICAgIDQuIEFYT2JqZWN0
cyB3aWxsIG5vdCBoYXZlIGEgcGxhdGZvcm0gd3JhcHBlciBzaW5jZSBpdCB3b24ndCBiZSBleHBv
c2VkCisgICAgICAgIHRvIGFueSBjbGllbnQgZGlyZWN0bHkuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6Y2FjaGVBbmRXcmFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9y
Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBv
c3RUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3ROb3Rp
ZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpYWJsZU9i
amVjdCk6IFJldHVybnMgYW4gQVhDb3JlT2JqZWN0IHRoYXQgY2FuIGJlIGVpdGhlciBhbiBBWE9i
amVjdCBvciBhbiBJc29sYXRlZE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmZyYW1lTG9hZGluZ0V2ZW50Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeSk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjppc29sYXRlZE9iamVjdEZvckFYT2JqZWN0IGNvbnN0KTogTWFw
cyBhbiBBWE9iamVjdCB0byBpdHMgYXNzb2NpYXRlZCBJc29sYXRlZE9iamVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJvb3RXZWJBcmVhKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVw
ZGF0ZUFjdGl2ZU9wdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRl
eHRDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGlu
Z0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOiBJbXBsZW1lbnRzIHdlYkFyZWFP
YmplY3QgbWV0aG9kLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuaDogSW1wbGVtZW50cyB3ZWJBcmVhT2JqZWN0IG1ldGhvZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRNYXJrZXJGb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpw
b3N0VXNlckluZm9Gb3JDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b25Gb3JUZXh0Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmcmFt
ZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKwogMjAyMC0wMS0xOCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gTGF5b3V0U3RhdGUg
Y29uc3RydWN0b3Igc2hvdWxkbid0IHRha2UgTGF5b3V0VHJlZUNvbnRlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDZmMzdjMGIzZjI4
OTYzNTA1Mjg0NDA0ZDQyYzYxZjdlYjA0ODk2YjIuLjZkNjVmYzJjMzc5NDRhMDMwMWRiMDUyMjRm
NjVmZTkyNjE2N2E4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcApAQCAtNjAzLDYgKzYwMywyOSBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IGNyZWF0ZUZyb21Ob2RlKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpjcmVhdGUobm9kZSk7CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6
Y2FjaGVBbmRXcmFwKEFjY2Vzc2liaWxpdHlPYmplY3QqIG5ld09iamVjdCwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgTm9kZSogbm9kZSwgV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgQVNTRVJUKG5l
d09iamVjdCk7CisgICAgQVhJRCBheElEID0gZ2V0QVhJRChuZXdPYmplY3QpOworICAgIGlmIChy
ZW5kZXJlcikKKyAgICAgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChyZW5kZXJlciwgYXhJ
RCk7CisgICAgaWYgKG5vZGUpCisgICAgICAgIG1fbm9kZU9iamVjdE1hcHBpbmcuc2V0KG5vZGUs
IGF4SUQpOworICAgIGlmICh3aWRnZXQpCisgICAgICAgIG1fd2lkZ2V0T2JqZWN0TWFwcGluZy5z
ZXQod2lkZ2V0LCBheElEKTsKKyAgICBtX29iamVjdHMuc2V0KGF4SUQsIG5ld09iamVjdCk7Cisg
ICAgbmV3T2JqZWN0LT5pbml0KCk7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURf
VFJFRSkKKyAgICAvLyBJZiB0aGUgY2xpZW50IHN1cHBvcnRzIHRoZSBpc29sYXRlZCB0cmVlLCB0
aGUgaXNvbGF0ZWQgb2JqZWN0IHdpbGwKKyAgICAvLyBwcm92aWRlIHRoZSBwbGF0Zm9ybSB3cmFw
cGVyLiBUaHVzLCBhdHRhY2ggYSB3cmFwcGVyIG9ubHkgaWYgdGhlIGNsaWVudAorICAgIC8vIGRv
ZXNuJ3Qgc3VwcG9ydCB0aGUgaXNvbGF0ZWQgdHJlZS4KKyAgICBpZiAoIWNsaWVudFN1cHBvcnRz
SXNvbGF0ZWRUcmVlKCkpCisgICAgICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqZWN0KTsKKyNlbHNl
CisgICAgYXR0YWNoV3JhcHBlcihuZXdPYmplY3QpOworI2VuZGlmCit9CisKIEFjY2Vzc2liaWxp
dHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFdpZGdldCogd2lkZ2V0KQogewog
ICAgIGlmICghd2lkZ2V0KQpAQCAtNjI1LDEyICs2NDgsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShXaWRnZXQqIHdpZGdldCkKICAgICBpZiAoIW5l
d09iaikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBnZXRBWElEKG5ld09iai5nZXQo
KSk7Ci0gICAgCi0gICAgbV93aWRnZXRPYmplY3RNYXBwaW5nLnNldCh3aWRnZXQsIG5ld09iai0+
b2JqZWN0SUQoKSk7Ci0gICAgbV9vYmplY3RzLnNldChuZXdPYmotPm9iamVjdElEKCksIG5ld09i
aik7Ci0gICAgbmV3T2JqLT5pbml0KCk7Ci0gICAgYXR0YWNoV3JhcHBlcihuZXdPYmouZ2V0KCkp
OworICAgIGNhY2hlQW5kV3JhcChuZXdPYmouZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIHdpZGdl
dCk7CiAgICAgcmV0dXJuIG5ld09iai5nZXQoKTsKIH0KIApAQCAtNjczLDEyICs2OTEsNyBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShOb2RlKiBub2Rl
KQogICAgIC8vIFdpbGwgY3Jhc2ggbGF0ZXIgaWYgd2UgaGF2ZSB0d28gb2JqZWN0cyBmb3IgdGhl
IHNhbWUgbm9kZS4KICAgICBBU1NFUlQoIWdldChub2RlKSk7CiAKLSAgICBnZXRBWElEKG5ld09i
ai5nZXQoKSk7Ci0KLSAgICBtX25vZGVPYmplY3RNYXBwaW5nLnNldChub2RlLCBuZXdPYmotPm9i
amVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmplY3RJRCgpLCBuZXdPYmop
OwotICAgIG5ld09iai0+aW5pdCgpOwotICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqLmdldCgpKTsK
KyAgICBjYWNoZUFuZFdyYXAobmV3T2JqLmdldCgpLCBudWxscHRyLCBub2RlKTsKICAgICBuZXdP
YmotPnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpKTsKICAgICAvLyBTb21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSB3aWxsIGNhdXNlIHRoZSBuZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFuZCB0aGVuCiAg
ICAgLy8gaXQgd2lsbCBkaXNhcHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZpbmlzaGVkLCBs
ZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUuCkBAIC03MDEsMTIgKzcxNCw3IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiAgICAgLy8gV2lsbCBjcmFzaCBsYXRlciBpZiB3ZSBoYXZlIHR3byBvYmplY3RzIGZv
ciB0aGUgc2FtZSByZW5kZXJlci4KICAgICBBU1NFUlQoIWdldChyZW5kZXJlcikpOwogCi0gICAg
Z2V0QVhJRChuZXdPYmouZ2V0KCkpOwotCi0gICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChy
ZW5kZXJlciwgbmV3T2JqLT5vYmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+
b2JqZWN0SUQoKSwgbmV3T2JqKTsKLSAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFw
cGVyKG5ld09iai5nZXQoKSk7CisgICAgY2FjaGVBbmRXcmFwKG5ld09iai5nZXQoKSwgcmVuZGVy
ZXIpOwogICAgIG5ld09iai0+c2V0TGFzdEtub3duSXNJZ25vcmVkVmFsdWUobmV3T2JqLT5hY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkpOwogICAgIC8vIFNvbWV0aW1lcyBhc2tpbmcgYWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpIHdpbGwgY2F1c2UgdGhlIG5ld09iamVjdCB0byBiZSBkZWFsbG9jYXRl
ZCwgYW5kIHRoZW4KICAgICAvLyBpdCB3aWxsIGRpc2FwcGVhciB3aGVuIHRoaXMgZnVuY3Rpb24g
aXMgZmluaXNoZWQsIGxlYWRpbmcgdG8gYSB1c2UtYWZ0ZXItZnJlZS4KQEAgLTc5NSw4ICs4MDMs
OCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpyb290T2JqZWN0Rm9yRnJh
bWUoRnJhbWUqIGZyYW1lKQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKIHsKLSAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gbnVsbHB0cjsKLSAgICAKKyAgICBSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4gb2JqOworCiAgICAgLy8gd2lsbCBiZSBmaWxsZWQgaW4uLi4KICAgICBz
d2l0Y2ggKHJvbGUpIHsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94T3B0aW9u
OgpAQCAtODI5LDE1ICs4MzcsMTEgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNo
ZTo6Z2V0T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICBkZWZhdWx0OgogICAg
ICAgICBvYmogPSBudWxscHRyOwogICAgIH0KLSAgICAKLSAgICBpZiAob2JqKQotICAgICAgICBn
ZXRBWElEKG9iai5nZXQoKSk7Ci0gICAgZWxzZQorCisgICAgaWYgKCFvYmopCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgbV9vYmplY3RzLnNldChvYmotPm9iamVjdElEKCksIG9iaik7
Ci0gICAgb2JqLT5pbml0KCk7Ci0gICAgYXR0YWNoV3JhcHBlcihvYmouZ2V0KCkpOworICAgIGNh
Y2hlQW5kV3JhcChvYmouZ2V0KCkpOwogICAgIHJldHVybiBvYmouZ2V0KCk7CiB9CiAKQEAgLTEw
MjUsNyArMTAyOSwxMSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1l
ckZpcmVkKCkKICAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBXVEZNb3ZlKG1fbm90aWZpY2F0aW9u
c1RvUG9zdCk7CiAgICAgCiAgICAgZm9yIChjb25zdCBhdXRvJiBub3RlIDogbm90aWZpY2F0aW9u
cykgewotICAgICAgICBBWENvcmVPYmplY3QqIG9iaiA9IG5vdGUuZmlyc3QuZ2V0KCk7CisgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG5vdGUuZmlyc3QuZ2V0KCk7CisgICAgICAg
IEFTU0VSVChvYmopOworICAgICAgICBpZiAoIW9iaikKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CiAgICAgICAgIGlmICghb2JqLT5vYmplY3RJRCgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
QEAgLTEwNTAsOCArMTA1OCw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9z
dFRpbWVyRmlyZWQoKQogICAgICAgICAgICAgaWYgKG9iai0+cm9sZVZhbHVlKCkgIT0gQWNjZXNz
aWJpbGl0eVJvbGU6Ok1lbnUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmosIG5vdGlmaWNh
dGlvbik7CisKKyAgICAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKG5vdGlmaWFibGVPYmpl
Y3Qob2JqKSwgbm90aWZpY2F0aW9uKTsKIAogICAgICAgICBpZiAobm90aWZpY2F0aW9uID09IEFY
Q2hpbGRyZW5DaGFuZ2VkICYmIG9iai0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKSAmJiBvYmotPmxh
c3RLbm93bklzSWdub3JlZFZhbHVlKCkgIT0gb2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkp
CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQob2JqLT5wYXJlbnRPYmplY3QoKSk7CkBAIC0x
MTE0LDcgKzExMjIsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oTm9k
ZSogbm9kZSwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uLCBQbwogICAgIHBvc3ROb3RpZmlj
YXRpb24ob2JqZWN0LmdldCgpLCAmbm9kZS0+ZG9jdW1lbnQoKSwgbm90aWZpY2F0aW9uLCBwb3N0
VGFyZ2V0LCBwb3N0VHlwZSk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNh
dGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRvY3VtZW50LCBBWE5vdGlmaWNh
dGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQgcG9zdFRhcmdldCwgUG9zdFR5cGUgcG9zdFR5
cGUpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNh
dGlvbiwgUG9zdFRhcmdldCBwb3N0VGFyZ2V0LCBQb3N0VHlwZSBwb3N0VHlwZSkKIHsKICAgICBz
dG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlcygpOwogCkBAIC0xMTMyLDcgKzExNDAs
MTggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCog
b2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEEKICAgICAgICAgaWYgKCFtX25vdGlmaWNhdGlv
blBvc3RUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgbV9ub3RpZmljYXRpb25Qb3N0VGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfSBlbHNlCi0gICAgICAgIHBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbihvYmplY3QsIG5vdGlmaWNhdGlvbik7CisgICAgICAgIHBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbihub3RpZmlhYmxlT2JqZWN0KG9iamVjdCksIG5vdGlmaWNhdGlvbik7Cit9CisK
K0FYQ29yZU9iamVjdCogQVhPYmplY3RDYWNoZTo6bm90aWZpYWJsZU9iamVjdChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCkKK3sKKyAgICAvLyBJbiBpc29sYXRlZCB0cmVlIG1vZGUsIEFj
Y2Vzc2liaWxpdHlPYmplY3RzIGhhdmUgbm8gd3JhcHBlcnMgYW5kCisgICAgLy8gaXNvbGF0ZWQg
b2JqZWN0cyBzaG91bGQgYmUgdGhlIHRoZSB0YXJnZXRzIG9mIG5vdGlmaWNhdGlvbnMuCisjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKKyAgICBpZiAoIWF4T2JqZWN0LT53
cmFwcGVyKCkpCisgICAgICAgIHJldHVybiBpc29sYXRlZE9iamVjdEZvckFYT2JqZWN0KCpheE9i
amVjdCkuZ2V0KCk7CisjZW5kaWYKKyAgICByZXR1cm4gYXhPYmplY3Q7CiB9CiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6Y2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKiBub2RlKQpAQCAtMTQ5MSw4ICsx
NTEwLDExIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnROb3RpZmljYXRp
b24oRnJhbWUqIGZyYW1lLCBBWExvYWRpbmdFdmVudCBsCiAgICAgaWYgKCFjb250ZW50UmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGdl
dE9yQ3JlYXRlKGNvbnRlbnRSZW5kZXJlcik7Ci0gICAgZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9y
bU5vdGlmaWNhdGlvbihvYmosIGxvYWRpbmdFdmVudCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogYXhPYmplY3QgPSBnZXRPckNyZWF0ZShjb250ZW50UmVuZGVyZXIpOworICAgIGlmICghYXhP
YmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1O
b3RpZmljYXRpb24obm90aWZpYWJsZU9iamVjdChheE9iamVjdCksIGxvYWRpbmdFdmVudCk7CiB9
CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdExpdmVSZWdpb25DaGFuZ2VOb3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpAQCAtMzA4MCw3ICszMTAyLDYgQEAgUmVmPEFY
SXNvbGF0ZWRPYmplY3Q+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNo
eShBWENvcmVPYmplY3QmIG8KIAogICAgIGlzb2xhdGVkVHJlZU5vZGUtPnNldFRyZWVJZGVudGlm
aWVyKHRyZWUudHJlZUlkZW50aWZpZXIoKSk7CiAgICAgaXNvbGF0ZWRUcmVlTm9kZS0+c2V0UGFy
ZW50KHBhcmVudElEKTsKLSAgICBheE9iamVjdENhY2hlLT5kZXRhY2hXcmFwcGVyKCZvYmplY3Qs
IEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudENoYW5nZSk7CiAgICAgYXhPYmpl
Y3RDYWNoZS0+YXR0YWNoV3JhcHBlcigmaXNvbGF0ZWRUcmVlTm9kZS5nZXQoKSk7CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogb2JqZWN0LmNoaWxkcmVuKCkpIHsKQEAgLTMxMTgsNiAr
MzEzOSwxNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYT2JqZWN0Q2FjaGU6OmdlbmVyYXRlSXNv
bGF0ZWRUcmVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgRAogCiAgICAgcmV0dXJuIG1ha2VSZWYo
KnRyZWUpOwogfQorCitSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gQVhPYmplY3RDYWNoZTo6aXNv
bGF0ZWRPYmplY3RGb3JBWE9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVj
dCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcGFnZUlEKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGlmIChhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9w
YWdlSUQpKQorICAgICAgICByZXR1cm4gdHJlZS0+bm9kZUZvcklEKGF4T2JqZWN0Lm9iamVjdElE
KCkpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CiAjZW5kaWYKICAgICAKIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6ZGVmZXJSZWNvbXB1dGVJc0lnbm9yZWRJZk5lZWRlZChFbGVtZW50KiBlbGVtZW50
KQpAQCAtMzIwNSwxMiArMzIzNywxMSBAQCBib29sIGlzTm9kZUFyaWFWaXNpYmxlKE5vZGUqIG5v
ZGUpCiAgICAgcmV0dXJuICFyZXF1aXJlc0FyaWFIaWRkZW5GYWxzZSB8fCBhcmlhSGlkZGVuRmFs
c2VQcmVzZW50OwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpyb290
V2ViQXJlYSgpCitBWENvcmVPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OnJvb3RXZWJBcmVhKCkKIHsK
LSAgICBBWENvcmVPYmplY3QqIHJvb3RPYmplY3QgPSB0aGlzLT5yb290T2JqZWN0KCk7Ci0gICAg
aWYgKCFyb290T2JqZWN0IHx8ICFyb290T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldz4oKnJvb3RPYmplY3QpLndlYkFyZWFPYmplY3QoKTsKKyAgICBpZiAo
YXV0byogcm9vdE9iamVjdCA9IHRoaXMtPnJvb3RPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHJv
b3RPYmplY3QtPndlYkFyZWFPYmplY3QoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogQVhB
dHRyaWJ1dGVDYWNoZUVuYWJsZXI6OkFYQXR0cmlidXRlQ2FjaGVFbmFibGVyKEFYT2JqZWN0Q2Fj
aGUqIGNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aAppbmRleCBkM2Q0NWYzM2M4MDk4ZDk3M2U5NTkyMzc5MmQxMmE2YTc4OTgwZGFmLi5jMGYwYzMz
ZDY1YTA2NDQ3NTkwZTliMjlkMzZmMDUzYzVhNGNhM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBBWENvcmVPYmplY3QqIHJvb3RPYmplY3QoKTsKICAgICAvLyBS
ZXR1cm5zIHRoZSByb290IG9iamVjdCBmb3IgYSBzcGVjaWZpYyBmcmFtZS4KICAgICBXRUJDT1JF
X0VYUE9SVCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKTsK
LSAgICAKKwogICAgIC8vIEZvciBBWCBvYmplY3RzIHdpdGggZWxlbWVudHMgdGhhdCBiYWNrIHRo
ZW0uCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0Kik7
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0T3JDcmVhdGUoV2lkZ2V0Kik7CkBAIC0xNjAs
NyArMTYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gdXNlZCBmb3Igb2JqZWN0cyB3aXRob3V0IGJh
Y2tpbmcgZWxlbWVudHMKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShBY2Nl
c3NpYmlsaXR5Um9sZSk7Ci0gICAgCisKICAgICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nl
c3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVhZHkgZXhpc3RzCiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogZ2V0KFJlbmRlck9iamVjdCopOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChX
aWRnZXQqKTsKQEAgLTE3Miw3ICsxNzIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlKEFY
SUQpOwogCiAgICAgdm9pZCBkZXRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxp
dHlEZXRhY2htZW50VHlwZSk7Citwcml2YXRlOgorICAgIHZvaWQgY2FjaGVBbmRXcmFwKEFjY2Vz
c2liaWxpdHlPYmplY3QqLCBSZW5kZXJPYmplY3QqID0gbnVsbHB0ciwgTm9kZSogPSBudWxscHRy
LCBXaWRnZXQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBhdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVj
dCopOworCitwdWJsaWM6CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoTm9kZSosIE5vZGUqIG5l
d0NoaWxkID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0
KiwgUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCA9IG51bGxwdHIpOwogICAgIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKEFYQ29yZU9iamVjdCopOwpAQCAtMTk3LDYgKzIwMSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRJc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KE5vZGUqKTsKICAgICBzdGF0aWMgUmVm
PEFYSXNvbGF0ZWRUcmVlPiBnZW5lcmF0ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciwgRG9j
dW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZUlzb2xhdGVk
VHJlZUhpZXJhcmNoeShBWENvcmVPYmplY3QmLCBBWElELCBBWE9iamVjdENhY2hlKiwgQVhJc29s
YXRlZFRyZWUmLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiYsIGJvb2wgaXNSb290KTsK
KyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gaXNvbGF0ZWRPYmplY3RGb3JBWE9iamVjdChj
b25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCkgY29uc3Q7CiAjZW5kaWYKIAogcHVi
bGljOgpAQCAtMzExLDcgKzMxNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9zdE5vdGlmaWNh
dGlvbihSZW5kZXJPYmplY3QqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVs
ZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKICAgICB2b2lkIHBvc3ROb3Rp
ZmljYXRpb24oTm9kZSosIEFYTm90aWZpY2F0aW9uLCBQb3N0VGFyZ2V0ID0gVGFyZ2V0RWxlbWVu
dCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOwotICAgIHZvaWQgcG9zdE5vdGlmaWNh
dGlvbihBWENvcmVPYmplY3QqLCBEb2N1bWVudCosIEFYTm90aWZpY2F0aW9uLCBQb3N0VGFyZ2V0
ID0gVGFyZ2V0RWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOworICAgIHZv
aWQgcG9zdE5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgRG9jdW1lbnQqLCBBWE5v
dGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFz
eW5jaHJvbm91c2x5KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHNob3dJbnRlbnQoY29u
c3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKQEAgLTM1NywyNSArMzYyLDI1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlZmVyVGV4dFJlcGxhY2VtZW50Tm90aWZpY2F0aW9uRm9yVGV4dENvbnRy
b2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmIHByZXZpb3VzVmFs
dWUpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKFJlZlB0
cjxSYW5nZT4sIGNvbnN0IFN0cmluZyYpOwotICAgIAogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBw
b3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOwor
ICAgIEFYQ29yZU9iamVjdCogbm90aWZpYWJsZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7
CiAgICAgdm9pZCBwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9s
ZEZvY3VzZWROb2RlLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7CiAKICAgICB2b2lkIHBsYXRmb3Jt
UGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxp
dHlPYmplY3QqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKTsKLSAgICB2b2lkIHBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotICAgIHZvaWQgcG9zdFRleHRSZXBsYWNlbWVudFBs
YXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQWNjZXNzaWJpbGl0eU9iamVjdCosIGNv
bnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwotICAgIHZvaWQgcG9zdFRleHRSZXBsYWNlbWVudFBs
YXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWFRleHRFZGl0VHlwZSwg
Y29uc3QgU3RyaW5nJiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpOworICAgIHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZp
Y2F0aW9uKEFYQ29yZU9iamVjdCosIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpOworICAgIHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRm
b3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICB2b2lkIHBvc3RUZXh0UmVwbGFjZW1l
bnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFYQ29yZU9iamVjdCosIGNvbnN0
IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCYpOworICAgIHZvaWQgcG9zdFRleHRSZXBsYWNlbWVudFBsYXRm
b3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJp
bmcmLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
Jik7CiAjZWxzZQogICAgIHN0YXRpYyBBWFRleHRDaGFuZ2UgdGV4dENoYW5nZUZvckVkaXRUeXBl
KEFYVGV4dEVkaXRUeXBlKTsKICAgICB2b2lkIG5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmlj
YXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIGNvbnN0
IFN0cmluZyYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1O
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYTG9hZGluZ0V2ZW50KTsKKyAgICB2
b2lkIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0Kiwg
QVhMb2FkaW5nRXZlbnQpOwogICAgIHZvaWQgdGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVj
dCopOwogICAgIHZvaWQgbGFiZWxDaGFuZ2VkKEVsZW1lbnQqKTsKIApAQCAtNDEwLDcgKzQxNSw3
IEBAIHByb3RlY3RlZDoKICAgICBib29sIHNob3VsZFNraXBCb3VuZGFyeShjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKIAogcHJpdmF0ZToKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiByb290V2ViQXJlYSgpOworICAgIEFYQ29yZU9iamVjdCogcm9vdFdl
YkFyZWEoKTsKIAogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkSW1hZ2VN
YXBVSUVsZW1lbnQoSFRNTEFyZWFFbGVtZW50Kik7CiAgICAgc3RhdGljIEFYQ29yZU9iamVjdCog
Zm9jdXNlZE9iamVjdChEb2N1bWVudCYpOwpAQCAtNDY0LDcgKzQ2OSw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogCiAgICAgVGltZXIgbV9ub3RpZmljYXRpb25Q
b3N0VGltZXI7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QVhDb3JlT2JqZWN0PiwgQVhO
b3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlvbnNUb1Bvc3Q7CisgICAgVmVjdG9yPHN0ZDo6cGFp
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4sIEFYTm90aWZpY2F0aW9uPj4gbV9ub3RpZmlj
YXRpb25zVG9Qb3N0OwogCiAgICAgVGltZXIgbV9wYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1l
cjsKIApAQCAtNTk2LDkgKzYwMSw5IEBAIGlubGluZSBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RD
YWNoZTo6ZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZMaW5lKGNvbnN0IENoYXJhY3Rlck9mCiBpbmxpbmUg
Q2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRDaGFyYWN0ZXJPZmZzZXQoY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCkgeyByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7IH0KIGlu
bGluZSBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNDaGFyYWN0ZXJPZmZz
ZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCkgeyByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0
KCk7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBv
c3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxh
dGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dEVkaXRUeXBlLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSB7IH0KLWlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIEFYVGV4dEVk
aXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSB7IH0KK2lubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBWENvcmVPYmplY3QqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RU
ZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBBWFRleHRF
ZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgeyB9Citpbmxp
bmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQVhDb3JlT2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIEFYVGV4
dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKSB7IH0KICNl
bHNlCiBpbmxpbmUgQVhUZXh0Q2hhbmdlIEFYT2JqZWN0Q2FjaGU6OnRleHRDaGFuZ2VGb3JFZGl0
VHlwZShBWFRleHRFZGl0VHlwZSkgeyByZXR1cm4gQVhUZXh0SW5zZXJ0ZWQ7IH0KIGlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TWVudUxpc3RQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAppbmRleCA3YjAyYzIyNDljNmEzOTQ2MzE5ODM0M2Ey
ZTQ3ODBlNDRiNTExMjEwLi4xMjhlYzA1MjNkZjJkNGQ4OGYzN2Q3NGU5YTlkNjIyMDY1ODE2ODRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcApAQCAtMTMwLDEwICsxMzAsMTYgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25J
bmRleCkKICAgICBBU1NFUlRfQVJHKG9wdGlvbkluZGV4LCBvcHRpb25JbmRleCA8IHN0YXRpY19j
YXN0PGludD4obV9jaGlsZHJlbi5zaXplKCkpKTsKIAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hl
ID0gYXhPYmplY3RDYWNoZSgpOwotICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGNoaWxkID0gbV9j
aGlsZHJlbltvcHRpb25JbmRleF0uZ2V0KCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQVNTRVJUKGlzPEFjY2Vzc2liaWxpdHlPYmplY3Q+KG1fY2hpbGRyZW5bb3B0
aW9uSW5kZXhdLmdldCgpKSk7CisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5T2JqZWN0PihtX2No
aWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBj
aGlsZCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KG1fY2hpbGRyZW5bb3B0aW9uSW5k
ZXhdLmdldCgpKTsKIAotICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNoaWxkLmdldCgpLCBk
b2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkLCBUYXJn
ZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7Ci0gICAgY2FjaGUtPnBvc3ROb3RpZmljYXRp
b24oY2hpbGQuZ2V0KCksIGRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYTWVudUxpc3RJdGVt
U2VsZWN0ZWQsIFRhcmdldEVsZW1lbnQsIFBvc3RTeW5jaHJvbm91c2x5KTsKKyAgICBjYWNoZS0+
cG9zdE5vdGlmaWNhdGlvbihjaGlsZCwgZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhGb2N1
c2VkVUlFbGVtZW50Q2hhbmdlZCwgVGFyZ2V0RWxlbWVudCwgUG9zdFN5bmNocm9ub3VzbHkpOwor
ICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNoaWxkLCBkb2N1bWVudCgpLCBBWE9iamVjdENh
Y2hlOjpBWE1lbnVMaXN0SXRlbVNlbGVjdGVkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25v
dXNseSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggOWJmMDQ5NzhiNzEy
ODk2ZjYxZGNlNDhjM2JiYWEyZmFmYTczNjU2Yi4uODYwNzhiMDc3OGJjZDkxM2VlNTFiZjA2Mjli
YTRhZGY1NTNlNGY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQzNSw2ICs0MzUsNyBAQCBwdWJsaWM6CiAgICAgRnJh
bWUqIG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiB0b3BEb2N1bWVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3Rvcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBTdHJpbmcgbGFuZ3VhZ2UoKSBjb25z
dCBvdmVycmlkZTsKICAgICAvLyAxLWJhc2VkLCB0byBtYXRjaCB0aGUgYXJpYS1sZXZlbCBzcGVj
LgogICAgIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQpAQCAtNzQ1LDkgKzc0Niw2IEBAIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgbV9pc0lnbm9yZWRGcm9tUGFyZW50RGF0YSB7IH07CiAg
ICAgYm9vbCBtX2NoaWxkcmVuRGlydHkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdWJ0cmVlRGly
dHkgeyBmYWxzZSB9OwotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0g
ICAgYm9vbCBtX2lzb2xhdGVkVHJlZU5vZGVJbml0aWFsaXplZCB7IGZhbHNlIH07Ci0jZW5kaWYK
IAogICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGEoQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSBvdmVycmlkZSB7IG1faXNJZ25vcmVkRnJvbVBhcmVu
dERhdGEgPSBkYXRhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggMDcyMDMxOTA3ZWE0
MzhjODM5Yjk5YmNkMzEyYzJiMTEwMmI3Yzg4ZS4uZDU5MmZjMzA0MzUyMTgxNmZhZTBjNGRhMTE5
NWQ5NjIzNThhY2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTgzNyw2ICs4MzcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
U2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
QVhDb3JlT2JqZWN0KiB3ZWJBcmVhT2JqZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3QgPSAwOwogICAgIC8vIDEtYmFzZWQsIHRvIG1hdGNoIHRoZSBh
cmlhLWxldmVsIHNwZWMuCiAgICAgdmlydHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA5YmZhZjE1NWFkYjIzMmE1NjYzZjU4Y2IwOGMx
MmMxMzNlMmMzNTFjLi41YWQ2YmUxZTUwY2IzYWExMDFlMDZmOGM0YzI3NDljZmQzZTJjZTUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldy5oCkBAIC00MiwxMSArNDIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3KCk7CiAgICAgdm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURl
dGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKikgb3ZlcnJpZGU7CiAKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiB3ZWJBcmVhT2JqZWN0KCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoU2Nyb2xsVmlldyopOwotICAgIAorCisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNj
cm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENh
Y2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2Fj
aGVBdGsuY3BwCmluZGV4IGZlMTI2MGQ3ZmRjZjY4ODk4YWQ4NTU3ODRiMDUxZDNkNzIxZDEwNmYu
LjdlOWZmMzc2NTNjZTQ3ZTc1NjExNWYyMjNmYjkxNTM4ZmZlYmM1YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBA
IC0zNjEsNyArMzYxLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRm
b3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamUKICAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUod3JhcHBlciwgZGV0YWlsLmRhdGEoKSwgb2Zmc2V0VG9FbWl0LCB0ZXh0VG9F
bWl0Lmxlbmd0aCgpLCB0ZXh0VG9FbWl0LnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqZWN0LCBBWExvYWRpbmdFdmVudCBsb2FkaW5nRXZlbnQpCit2b2lkIEFY
T2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTG9hZGluZ0V2ZW50IGxvYWRpbmdFdmVudCkKIHsKICAgICBpZiAo
IW9iamVjdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggZjExYmZhOGUwZmFmOTk4NTdm
YzFhZTgxNmI2NjdhYWVlMTU0NWJlNS4uNDMyMzgzZjBmM2Y2ZjIzZGY0MDA2NjZjNDlhNzRlNzg5
M2M2MGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
WE9iamVjdENhY2hlSU9TLm1tCkBAIC05OCwyNyArOTgsMjcgQEAgdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmosIEFYTm90aWZpY2F0
aW9uIG4KICAgICAgICAgW29iai0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb246bm90aWZpY2F0aW9uU3RyaW5nXTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1O
b3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpCiB7CiAgICAgcG9zdFBsYXRmb3JtTm90
aWZpY2F0aW9uKG9iamVjdCwgQVhTZWxlY3RlZFRleHRDaGFuZ2VkKTsKIH0KIAotdm9pZCBBWE9i
amVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNz
aWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVmlzaWJsZVBvc2l0aW9uJikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNo
YW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0
VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikKIHsKICAgICBwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBBWFZhbHVlQ2hhbmdlZCk7CiB9CiAKLXZvaWQg
QVhPYmplY3RDYWNoZTo6cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYs
IEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKQor
dm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBB
WFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikKIHsK
ICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBBWFZhbHVlQ2hhbmdlZCk7CiB9
CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZp
Y2F0aW9uRm9yVGV4dENvbnRyb2woQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpCit2b2lk
IEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZv
clRleHRDb250cm9sKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpCiB7CiAgICAgcG9zdFBsYXRmb3Jt
Tm90aWZpY2F0aW9uKG9iamVjdCwgQVhWYWx1ZUNoYW5nZWQpOwogfQogCi12b2lkIEFYT2JqZWN0
Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0
eU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhMb2FkaW5nRXZlbnQgbG9hZGluZ0V2ZW50KQordm9p
ZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFY
Q29yZU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhMb2FkaW5nRXZlbnQgbG9hZGluZ0V2ZW50KQog
ewogICAgIGlmICghYXhGcmFtZU9iamVjdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmNwcAppbmRleCA1MmViNDBmMWE4YmVhMjA1MWE4MDBlZTZhNmI2MDIwZmUyYjBh
NzE3Li5lOTU1NjEyYzYwYTUzYzJjMDU2NDAxZGNmN2YwYWFiZDUxYjJkMjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMTcyLDYgKzE3Miw3IEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3JlT2JqZWN0JiBvYmplY3QsIGJvb2wg
aXNSb290CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkV4cG9zZXNUaXRsZVVJRWxl
bWVudCwgb2JqZWN0LmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKTsKICAgICBzZXRPYmplY3RQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6VmVydGljYWxTY3JvbGxCYXIsIG9iamVjdC5zY3JvbGxCYXIo
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbCkpOwogICAgIHNldE9iamVjdFByb3Bl
cnR5KEFYUHJvcGVydHlOYW1lOjpIb3Jpem9udGFsU2Nyb2xsQmFyLCBvYmplY3Quc2Nyb2xsQmFy
KEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkpOworICAgIHNldE9iamVjdFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpXZWJBcmVhT2JqZWN0LCBvYmplY3Qud2ViQXJlYU9iamVj
dCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQVJvbGVBdHRyaWJ1dGUs
IHN0YXRpY19jYXN0PGludD4ob2JqZWN0LmFyaWFSb2xlQXR0cmlidXRlKCkpKTsKICAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRMYWJlbCwgb2JqZWN0LmNvbXB1dGVkTGFi
ZWwoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlBsYWNlaG9sZGVyVmFsdWUs
IG9iamVjdC5wbGFjZWhvbGRlclZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4
IGNlNjIxOTc0ZGMyZWNlYjY0Njg4ZTcyMTVkNDZhMTBkOTMwNDJkYmYuLmQyMjJmNzQ0YWM1MGZi
ODkzYzM5ZDQ4YmMxMDQyNDc1YzI2MmJhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAg
LTMwMiw2ICszMDIsNyBAQCBwcml2YXRlOgogICAgICAgICBWYWxpZGF0aW9uTWVzc2FnZSwKICAg
ICAgICAgVmVydGljYWxTY3JvbGxCYXIsCiAgICAgICAgIFZpc2libGVDaGlsZHJlbiwKKyAgICAg
ICAgV2ViQXJlYU9iamVjdCwKICAgICB9OwogICAgIAogICAgIHR5cGVkZWYgc3RkOjpwYWlyPEFY
SUQsIEFYSUQ+IEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVNYXRoTXVsdGlzY3JpcHRQYWlyOwpA
QCAtNzYyLDYgKzc2Myw3IEBAIHByaXZhdGU6CiAgICAgRnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiB0b3BEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3RvcigpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFYQ29yZU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG9i
amVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpXZWJBcmVhT2JqZWN0KTsgfQogICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXh0Q2hhbmdlZCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2Fj
aGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hl
TWFjLm1tCmluZGV4IGY1ZGExNmEwZDZkNmYzODZmMTU4M2M4ZDkzOTUyY2JmMDcxOGU2NjUuLmY5
MzlhYjliOTNiYTZiMmY5ZjEyYzI4ZDQ4NDNkMDM3ZWU4MjdkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtMjgs
OCArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKE1BQykK
IAotI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU9i
amVjdC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW1wb3J0ICJSZW5kZXJP
YmplY3QuaCIKICNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCkBA
IC0zNzAsNyArMzY4LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQVhDb3JlT2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG4KICAgICBBWFBvc3ROb3Rp
ZmljYXRpb25XaXRoVXNlckluZm8ob2JqLT53cmFwcGVyKCksIG1hY05vdGlmaWNhdGlvbiwgbmls
LCBza2lwU3lzdGVtTm90aWZpY2F0aW9uKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgaW50ZW50LCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3Qg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludGVudCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uKQogewogICAgIGlmICghb2JqZWN0KQogICAgICAgICBvYmplY3QgPSByb290V2Vi
QXJlYSgpOwpAQCAtNDE2LDcgKzQxNCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRT
dGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAgICAg
aWYgKGlkIHdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKSkKICAgICAgICAgW3VzZXJJbmZvIHNl
dE9iamVjdDp3cmFwcGVyIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlRWxlbWVudF07
CiAKLSAgICBpZiAoYXV0byByb290ID0gcm9vdFdlYkFyZWEoKSkgeworICAgIGlmIChhdXRvKiBy
b290ID0gcm9vdFdlYkFyZWEoKSkgewogICAgICAgICBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNl
ckluZm8ocm9vdFdlYkFyZWEoKS0+d3JhcHBlcigpLCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRl
eHRDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7CiAgICAgICAgIGlmIChyb290LT53cmFw
cGVyKCkgIT0gb2JqZWN0LT53cmFwcGVyKCkpCiAgICAgICAgICAgICBBWFBvc3ROb3RpZmljYXRp
b25XaXRoVXNlckluZm8ob2JqZWN0LT53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
VGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsKQEAgLTQyNSw3ICs0MjMsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIFt1c2VySW5mbyByZWxlYXNlXTsKIH0KIAotc3Rh
dGljIHZvaWQgYWRkVGV4dE1hcmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFj
Y2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlv
bikKK3N0YXRpYyB2b2lkIGFkZFRleHRNYXJrZXJGb3IoTlNNdXRhYmxlRGljdGlvbmFyeSogY2hh
bmdlLCBBWENvcmVPYmplY3QmIG9iamVjdCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlv
bikKIHsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQz
MywxNCArNDMxLDE0IEBAIHN0YXRpYyB2b2lkIGFkZFRleHRNYXJrZXJGb3IoTlNNdXRhYmxlRGlj
dGlvbmFyeSogY2hhbmdlLCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvCiAgICAgICAgIFtjaGFuZ2Ug
c2V0T2JqZWN0OnRleHRNYXJrZXIgZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1
ZVN0YXJ0TWFya2VyXTsKIH0KIAotc3RhdGljIHZvaWQgYWRkVGV4dE1hcmtlckZvcihOU011dGFi
bGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCwgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRDb250cm9sKQorc3RhdGljIHZvaWQgYWRkVGV4dE1h
cmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFYQ29yZU9iamVjdCYgb2JqZWN0
LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wpCiB7CiAgICAgaWYgKGlk
IHRleHRNYXJrZXIgPSBbb2JqZWN0LndyYXBwZXIoKSB0ZXh0TWFya2VyRm9yRmlyc3RQb3NpdGlv
bkluVGV4dENvbnRyb2w6dGV4dENvbnRyb2xdKQogICAgICAgICBbY2hhbmdlIHNldE9iamVjdDp0
ZXh0TWFya2VyIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVTdGFydE1hcmtl
cl07CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUZXh0TWFya2VyVGFyZ2V0VHlwZT4KLXN0YXRp
YyBOU0RpY3Rpb25hcnkgKnRleHRSZXBsYWNlbWVudENoYW5nZURpY3Rpb25hcnkoQWNjZXNzaWJp
bGl0eU9iamVjdCYgb2JqZWN0LCBBWFRleHRFZGl0VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHN0
cmluZywgVGV4dE1hcmtlclRhcmdldFR5cGUmIG1hcmtlclRhcmdldCkKK3N0YXRpYyBOU0RpY3Rp
b25hcnkgKnRleHRSZXBsYWNlbWVudENoYW5nZURpY3Rpb25hcnkoQVhDb3JlT2JqZWN0JiBvYmpl
Y3QsIEFYVGV4dEVkaXRUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBUZXh0TWFya2Vy
VGFyZ2V0VHlwZSYgbWFya2VyVGFyZ2V0KQogewogICAgIE5TU3RyaW5nICp0ZXh0ID0gKE5TU3Ry
aW5nICopc3RyaW5nOwogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gW3RleHQgbGVuZ3RoXTsKQEAg
LTQ1Nyw3ICs0NTUsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICp0ZXh0UmVwbGFjZW1lbnRDaGFu
Z2VEaWN0aW9uYXJ5KEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdAogICAgIHJldHVybiBbY2hh
bmdlIGF1dG9yZWxlYXNlXTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRl
Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBB
WFRleHRFZGl0VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcG9zaXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgQVhUZXh0RWRpdFR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9u
KQogewogICAgIGlmICghdGV4dC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDY1LDcg
KzQ2Myw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3Jt
Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAgICAgcG9zdFRleHRSZXBsYWNlbWVu
dFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgQVhUZXh0RWRpdFR5cGVVbmtub3duLCBlbXB0
eVN0cmluZygpLCB0eXBlLCB0ZXh0LCBwb3NpdGlvbik7CiB9CiAKLXN0YXRpYyB2b2lkIHBvc3RV
c2VySW5mb0ZvckNoYW5nZXMoQWNjZXNzaWJpbGl0eU9iamVjdCYgcm9vdFdlYkFyZWEsIEFjY2Vz
c2liaWxpdHlPYmplY3QmIG9iamVjdCwgTlNNdXRhYmxlQXJyYXkqIGNoYW5nZXMpCitzdGF0aWMg
dm9pZCBwb3N0VXNlckluZm9Gb3JDaGFuZ2VzKEFYQ29yZU9iamVjdCYgcm9vdFdlYkFyZWEsIEFY
Q29yZU9iamVjdCYgb2JqZWN0LCBOU011dGFibGVBcnJheSogY2hhbmdlcykKIHsKICAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTo0XTsKICAgICBbdXNlckluZm8gc2V0T2JqZWN0OkAocGxhdGZvcm1D
aGFuZ2VUeXBlRm9yV2ViQ29yZUNoYW5nZVR5cGUoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlRWRpdCkp
IGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVDaGFuZ2VUeXBlS2V5XTsKQEAgLTQ4Miw3
ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBwb3N0VXNlckluZm9Gb3JDaGFuZ2VzKEFjY2Vzc2liaWxp
dHlPYmplY3QmIHJvb3RXZWJBcmVhLCBBY2Nlc3NpYmlsaQogICAgIFt1c2VySW5mbyByZWxlYXNl
XTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1O
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSBk
ZWxldGlvblR5cGUsIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIEFYVGV4dEVkaXRUeXBlIGlu
c2VydGlvblR5cGUsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHBvc2l0aW9uKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50
UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRUeXBl
IGRlbGV0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBkZWxldGVkVGV4dCwgQVhUZXh0RWRpdFR5cGUg
aW5zZXJ0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBpbnNlcnRlZFRleHQsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIG9iamVjdCA9
IHJvb3RXZWJBcmVhKCk7CkBAIC00OTksNyArNDk3LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpw
b3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCoKICAgICBbY2hhbmdlcyByZWxlYXNlXTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25Gb3JUZXh0Q29udHJvbChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0
cmluZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRy
b2wpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlm
aWNhdGlvbkZvclRleHRDb250cm9sKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcm
IGRlbGV0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGluc2VydGVkVGV4dCwgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQmIHRleHRDb250cm9sKQogewogICAgIGlmICghb2JqZWN0KQogICAgICAgICBv
YmplY3QgPSByb290V2ViQXJlYSgpOwpAQCAtNTE2LDExICs1MTQsMTEgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25Gb3JUZXh0Q29u
dHJvbChBY2Nlc3MKICAgICBbY2hhbmdlcyByZWxlYXNlXTsKIH0KIAotdm9pZCBBWE9iamVjdENh
Y2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlP
YmplY3QqIGF4RnJhbWVPYmplY3QsIEFYTG9hZGluZ0V2ZW50IGxvYWRpbmdFdmVudCkKK3ZvaWQg
QVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENv
cmVPYmplY3QqIGF4RnJhbWVPYmplY3QsIEFYTG9hZGluZ0V2ZW50IGxvYWRpbmdFdmVudCkKIHsK
ICAgICBpZiAoIWF4RnJhbWVPYmplY3QpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlm
IChsb2FkaW5nRXZlbnQgPT0gQVhMb2FkaW5nRmluaXNoZWQgJiYgYXhGcmFtZU9iamVjdC0+ZG9j
dW1lbnQoKSA9PSBheEZyYW1lT2JqZWN0LT50b3BEb2N1bWVudCgpKQogICAgICAgICBwb3N0UGxh
dGZvcm1Ob3RpZmljYXRpb24oYXhGcmFtZU9iamVjdCwgQVhMb2FkQ29tcGxldGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS93aW4vQVhPYmplY3RDYWNoZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2lu
LmNwcAppbmRleCAzZjU1NTg2ODU5NzczMTQxYmMxNWVlYWE3ZWM3ODZlOThjZTMxZDYwLi44MWQ1
MjExYTdmNDg2MjYyMzFmNTMyZjExMTRkNDM5NWZjYzhjM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcApAQCAtMTI3
LDcgKzEyNyw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUCiB7CiB9CiAKLXZvaWQgQVhPYmpl
Y3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmosIEFYTG9hZGluZ0V2ZW50IG5vdGlmaWNhdGlvbikKK3ZvaWQgQVhPYmpl
Y3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmpl
Y3QqIG9iaiwgQVhMb2FkaW5nRXZlbnQgbm90aWZpY2F0aW9uKQogewogICAgIGlmICghb2JqKQog
ICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388461</attachid>
            <date>2020-01-22 12:45:40 -0800</date>
            <delta_ts>2020-01-22 13:11:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206596-20200122154539.patch</filename>
            <type>text/plain</type>
            <size>34807</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI0YzhlZmEyOWViZGYx
N2VjMTEyNjM3MWZjMTE4MDQwNmY4ZTk5Zi4uMzYwZDYwMDU2MzY5YmQxODBmNzA0OTMwOTUxOTM4
NzZhODE0MzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAxLTIyICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
QVggaXNvbGF0ZWQgdHJlZSBtb2RlIHN1cHBvcnQgZm9yIGV2ZW50IG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1OTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBpc29sYXRl
ZCB0cmVlIG1vZGUsIGV2ZW50IG5vdGlmaWNhdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9sbG93czoK
KyAgICAgICAgMS4gRE9NIG9iamVjdHMgYXJlIG1hcHBlZCB0byBBWE9iamVjdHMuCisgICAgICAg
IDIuIEFYT2JqZWN0cyBhcmUgaW4gdHVybiBtYXBwZWQgdG8gdGhlaXIgYXNzb2NpYXRlZCBJc29s
YXRlZE9iamVjdHMuCisgICAgICAgIDMuIFRoZSBJc29sYXRlZE9iamVjdCdzIHdhcHBlciBpcyB1
c2VkIHRvIHBvc3QgYSBwbGF0Zm9ybSBub3RpZmljYXRpb24uCisgICAgICAgIDQuIEFYT2JqZWN0
cyB3aWxsIG5vdCBoYXZlIGEgcGxhdGZvcm0gd3JhcHBlciBzaW5jZSBpdCB3b24ndCBiZSBleHBv
c2VkCisgICAgICAgIHRvIGFueSBjbGllbnQgZGlyZWN0bHkuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6Y2FjaGVBbmRXcmFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9y
Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBv
c3RUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3ROb3Rp
ZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpYWJsZU9i
amVjdCk6IFJldHVybnMgYW4gQVhDb3JlT2JqZWN0IHRoYXQgY2FuIGJlIGVpdGhlciBhbiBBWE9i
amVjdCBvciBhbiBJc29sYXRlZE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmZyYW1lTG9hZGluZ0V2ZW50Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeSk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjppc29sYXRlZE9iamVjdEZvckFYT2JqZWN0IGNvbnN0KTogTWFw
cyBhbiBBWE9iamVjdCB0byBpdHMgYXNzb2NpYXRlZCBJc29sYXRlZE9iamVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJvb3RXZWJBcmVhKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVw
ZGF0ZUFjdGl2ZU9wdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRl
eHRDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGlu
Z0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOiBJbXBsZW1lbnRzIHdlYkFyZWFP
YmplY3QgbWV0aG9kLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuaDogSW1wbGVtZW50cyB3ZWJBcmVhT2JqZWN0IG1ldGhvZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRNYXJrZXJGb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpw
b3N0VXNlckluZm9Gb3JDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b25Gb3JUZXh0Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmcmFt
ZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKwogMjAyMC0wMS0xOCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gTGF5b3V0U3RhdGUg
Y29uc3RydWN0b3Igc2hvdWxkbid0IHRha2UgTGF5b3V0VHJlZUNvbnRlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDZmMzdjMGIzZjI4
OTYzNTA1Mjg0NDA0ZDQyYzYxZjdlYjA0ODk2YjIuLjJkODdkZGQyNDA5OTI3YjBjMzYwMWM4YmY4
NmMzNTNjMDZmNWMyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcApAQCAtNjAzLDYgKzYwMywyOSBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IGNyZWF0ZUZyb21Ob2RlKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpjcmVhdGUobm9kZSk7CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6
Y2FjaGVBbmRJbml0aWFsaXplV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXdPYmplY3Qs
IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIE5vZGUqIG5vZGUsIFdpZGdldCogd2lkZ2V0KQorewor
ICAgIEFTU0VSVChuZXdPYmplY3QpOworICAgIEFYSUQgYXhJRCA9IGdldEFYSUQobmV3T2JqZWN0
KTsKKyAgICBpZiAocmVuZGVyZXIpCisgICAgICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5zZXQo
cmVuZGVyZXIsIGF4SUQpOworICAgIGlmIChub2RlKQorICAgICAgICBtX25vZGVPYmplY3RNYXBw
aW5nLnNldChub2RlLCBheElEKTsKKyAgICBpZiAod2lkZ2V0KQorICAgICAgICBtX3dpZGdldE9i
amVjdE1hcHBpbmcuc2V0KHdpZGdldCwgYXhJRCk7CisgICAgbV9vYmplY3RzLnNldChheElELCBu
ZXdPYmplY3QpOworICAgIG5ld09iamVjdC0+aW5pdCgpOworI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0lTT0xBVEVEX1RSRUUpCisgICAgLy8gSWYgdGhlIGNsaWVudCBzdXBwb3J0cyB0aGUgaXNv
bGF0ZWQgdHJlZSwgdGhlIGlzb2xhdGVkIG9iamVjdCB3aWxsCisgICAgLy8gcHJvdmlkZSB0aGUg
cGxhdGZvcm0gd3JhcHBlci4gVGh1cywgYXR0YWNoIGEgd3JhcHBlciBvbmx5IGlmIHRoZSBjbGll
bnQKKyAgICAvLyBkb2Vzbid0IHN1cHBvcnQgdGhlIGlzb2xhdGVkIHRyZWUuCisgICAgaWYgKCFj
bGllbnRTdXBwb3J0c0lzb2xhdGVkVHJlZSgpKQorICAgICAgICBhdHRhY2hXcmFwcGVyKG5ld09i
amVjdCk7CisjZWxzZQorICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqZWN0KTsKKyNlbmRpZgorfQor
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShXaWRnZXQq
IHdpZGdldCkKIHsKICAgICBpZiAoIXdpZGdldCkKQEAgLTYyNSwxMiArNjQ4LDcgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoV2lkZ2V0KiB3aWRnZXQp
CiAgICAgaWYgKCFuZXdPYmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZ2V0QVhJ
RChuZXdPYmouZ2V0KCkpOwotICAgIAotICAgIG1fd2lkZ2V0T2JqZWN0TWFwcGluZy5zZXQod2lk
Z2V0LCBuZXdPYmotPm9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmpl
Y3RJRCgpLCBuZXdPYmopOwotICAgIG5ld09iai0+aW5pdCgpOwotICAgIGF0dGFjaFdyYXBwZXIo
bmV3T2JqLmdldCgpKTsKKyAgICBjYWNoZUFuZEluaXRpYWxpemVXcmFwcGVyKG5ld09iai5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwgd2lkZ2V0KTsKICAgICByZXR1cm4gbmV3T2JqLmdldCgpOwog
fQogCkBAIC02NzMsMTIgKzY5MSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2Fj
aGU6OmdldE9yQ3JlYXRlKE5vZGUqIG5vZGUpCiAgICAgLy8gV2lsbCBjcmFzaCBsYXRlciBpZiB3
ZSBoYXZlIHR3byBvYmplY3RzIGZvciB0aGUgc2FtZSBub2RlLgogICAgIEFTU0VSVCghZ2V0KG5v
ZGUpKTsKIAotICAgIGdldEFYSUQobmV3T2JqLmdldCgpKTsKLQotICAgIG1fbm9kZU9iamVjdE1h
cHBpbmcuc2V0KG5vZGUsIG5ld09iai0+b2JqZWN0SUQoKSk7Ci0gICAgbV9vYmplY3RzLnNldChu
ZXdPYmotPm9iamVjdElEKCksIG5ld09iaik7Ci0gICAgbmV3T2JqLT5pbml0KCk7Ci0gICAgYXR0
YWNoV3JhcHBlcihuZXdPYmouZ2V0KCkpOworICAgIGNhY2hlQW5kSW5pdGlhbGl6ZVdyYXBwZXIo
bmV3T2JqLmdldCgpLCBudWxscHRyLCBub2RlKTsKICAgICBuZXdPYmotPnNldExhc3RLbm93bklz
SWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKTsKICAgICAvLyBT
b21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSB3aWxsIGNhdXNlIHRoZSBu
ZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFuZCB0aGVuCiAgICAgLy8gaXQgd2lsbCBkaXNh
cHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZpbmlzaGVkLCBsZWFkaW5nIHRvIGEgdXNlLWFm
dGVyLWZyZWUuCkBAIC03MDEsMTIgKzcxNCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2Jq
ZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgLy8gV2ls
bCBjcmFzaCBsYXRlciBpZiB3ZSBoYXZlIHR3byBvYmplY3RzIGZvciB0aGUgc2FtZSByZW5kZXJl
ci4KICAgICBBU1NFUlQoIWdldChyZW5kZXJlcikpOwogCi0gICAgZ2V0QVhJRChuZXdPYmouZ2V0
KCkpOwotCi0gICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChyZW5kZXJlciwgbmV3T2JqLT5v
YmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2Jq
KTsKLSAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7
CisgICAgY2FjaGVBbmRJbml0aWFsaXplV3JhcHBlcihuZXdPYmouZ2V0KCksIHJlbmRlcmVyKTsK
ICAgICBuZXdPYmotPnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKTsKICAgICAvLyBTb21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSB3aWxsIGNhdXNlIHRoZSBuZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFu
ZCB0aGVuCiAgICAgLy8gaXQgd2lsbCBkaXNhcHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZp
bmlzaGVkLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUuCkBAIC03OTUsOCArODAzLDggQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6cm9vdE9iamVjdEZvckZyYW1lKEZy
YW1lKiBmcmFtZSkKICAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiB7Ci0gICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IG9iaiA9IG51bGxwdHI7Ci0gICAgCisgICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG9iajsKKwogICAgIC8vIHdpbGwgYmUgZmlsbGVkIGluLi4uCiAgICAgc3dpdGNo
IChyb2xlKSB7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKQEAg
LTgyOSwxNSArODM3LDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgZGVmYXVsdDoKICAgICAgICAg
b2JqID0gbnVsbHB0cjsKICAgICB9Ci0gICAgCi0gICAgaWYgKG9iaikKLSAgICAgICAgZ2V0QVhJ
RChvYmouZ2V0KCkpOwotICAgIGVsc2UKKworICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIG1fb2JqZWN0cy5zZXQob2JqLT5vYmplY3RJRCgpLCBvYmopOwotICAg
IG9iai0+aW5pdCgpOwotICAgIGF0dGFjaFdyYXBwZXIob2JqLmdldCgpKTsKKyAgICBjYWNoZUFu
ZEluaXRpYWxpemVXcmFwcGVyKG9iai5nZXQoKSk7CiAgICAgcmV0dXJuIG9iai5nZXQoKTsKIH0K
IApAQCAtMTAyNSw3ICsxMDI5LDExIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9u
UG9zdFRpbWVyRmlyZWQoKQogICAgIGF1dG8gbm90aWZpY2F0aW9ucyA9IFdURk1vdmUobV9ub3Rp
ZmljYXRpb25zVG9Qb3N0KTsKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG5vdGUgOiBub3Rp
ZmljYXRpb25zKSB7Ci0gICAgICAgIEFYQ29yZU9iamVjdCogb2JqID0gbm90ZS5maXJzdC5nZXQo
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gbm90ZS5maXJzdC5nZXQoKTsK
KyAgICAgICAgQVNTRVJUKG9iaik7CisgICAgICAgIGlmICghb2JqKQorICAgICAgICAgICAgY29u
dGludWU7CisKICAgICAgICAgaWYgKCFvYmotPm9iamVjdElEKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIApAQCAtMTA1MCw4ICsxMDU4LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25Qb3N0VGltZXJGaXJlZCgpCiAgICAgICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iaiwg
bm90aWZpY2F0aW9uKTsKKworICAgICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24obm90aWZp
YWJsZU9iamVjdChvYmopLCBub3RpZmljYXRpb24pOwogCiAgICAgICAgIGlmIChub3RpZmljYXRp
b24gPT0gQVhDaGlsZHJlbkNoYW5nZWQgJiYgb2JqLT5wYXJlbnRPYmplY3RJZkV4aXN0cygpICYm
IG9iai0+bGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSAhPSBvYmotPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKICAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChvYmotPnBhcmVudE9iamVjdCgp
KTsKQEAgLTExMTQsNyArMTEyMiw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNh
dGlvbihOb2RlKiBub2RlLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvCiAgICAgcG9z
dE5vdGlmaWNhdGlvbihvYmplY3QuZ2V0KCksICZub2RlLT5kb2N1bWVudCgpLCBub3RpZmljYXRp
b24sIHBvc3RUYXJnZXQsIHBvc3RUeXBlKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEFY
Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCBwb3N0VGFyZ2V0LCBQb3N0VHlw
ZSBwb3N0VHlwZSkKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCwgQVhOb3RpZmljYXRpb24g
bm90aWZpY2F0aW9uLCBQb3N0VGFyZ2V0IHBvc3RUYXJnZXQsIFBvc3RUeXBlIHBvc3RUeXBlKQog
ewogICAgIHN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCk7CiAKQEAgLTExMzIs
NyArMTE0MCwxOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCwgQQogICAgICAgICBpZiAoIW1fbm90
aWZpY2F0aW9uUG9zdFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBtX25vdGlmaWNhdGlv
blBvc3RUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKICAgICB9IGVsc2UKLSAgICAgICAgcG9zdFBs
YXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgcG9zdFBs
YXRmb3JtTm90aWZpY2F0aW9uKG5vdGlmaWFibGVPYmplY3Qob2JqZWN0KSwgbm90aWZpY2F0aW9u
KTsKK30KKworQVhDb3JlT2JqZWN0KiBBWE9iamVjdENhY2hlOjpub3RpZmlhYmxlT2JqZWN0KEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0KQoreworICAgIC8vIEluIGlzb2xhdGVkIHRyZWUg
bW9kZSwgQWNjZXNzaWJpbGl0eU9iamVjdHMgaGF2ZSBubyB3cmFwcGVycyBhbmQKKyAgICAvLyBp
c29sYXRlZCBvYmplY3RzIHNob3VsZCBiZSB0aGUgdGhlIHRhcmdldHMgb2Ygbm90aWZpY2F0aW9u
cy4KKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIGlmICghYXhP
YmplY3QtPndyYXBwZXIoKSkKKyAgICAgICAgcmV0dXJuIGlzb2xhdGVkT2JqZWN0Rm9yQVhPYmpl
Y3QoKmF4T2JqZWN0KS5nZXQoKTsKKyNlbmRpZgorICAgIHJldHVybiBheE9iamVjdDsKIH0KIAog
dm9pZCBBWE9iamVjdENhY2hlOjpjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUqIG5vZGUpCkBAIC0x
NDkxLDggKzE1MTAsMTEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudE5v
dGlmaWNhdGlvbihGcmFtZSogZnJhbWUsIEFYTG9hZGluZ0V2ZW50IGwKICAgICBpZiAoIWNvbnRl
bnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqID0gZ2V0T3JDcmVhdGUoY29udGVudFJlbmRlcmVyKTsKLSAgICBmcmFtZUxvYWRpbmdFdmVu
dFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iaiwgbG9hZGluZ0V2ZW50KTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCA9IGdldE9yQ3JlYXRlKGNvbnRlbnRSZW5kZXJlcik7CisgICAg
aWYgKCFheE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWVMb2FkaW5nRXZlbnRQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihub3RpZmlhYmxlT2JqZWN0KGF4T2JqZWN0KSwgbG9hZGluZ0V2
ZW50KTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0TGl2ZVJlZ2lvbkNoYW5nZU5vdGlm
aWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCkBAIC0zMDgwLDcgKzMxMDIsNiBA
QCBSZWY8QVhJc29sYXRlZE9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlSXNvbGF0ZWRUcmVl
SGllcmFyY2h5KEFYQ29yZU9iamVjdCYgbwogCiAgICAgaXNvbGF0ZWRUcmVlTm9kZS0+c2V0VHJl
ZUlkZW50aWZpZXIodHJlZS50cmVlSWRlbnRpZmllcigpKTsKICAgICBpc29sYXRlZFRyZWVOb2Rl
LT5zZXRQYXJlbnQocGFyZW50SUQpOwotICAgIGF4T2JqZWN0Q2FjaGUtPmRldGFjaFdyYXBwZXIo
Jm9iamVjdCwgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50Q2hhbmdlKTsKICAg
ICBheE9iamVjdENhY2hlLT5hdHRhY2hXcmFwcGVyKCZpc29sYXRlZFRyZWVOb2RlLmdldCgpKTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBvYmplY3QuY2hpbGRyZW4oKSkgewpAQCAt
MzExOCw2ICszMTM5LDE3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhPYmplY3RDYWNoZTo6Z2Vu
ZXJhdGVJc29sYXRlZFRyZWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBECiAKICAgICByZXR1cm4g
bWFrZVJlZigqdHJlZSk7CiB9CisKK1JlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWE9iamVjdENh
Y2hlOjppc29sYXRlZE9iamVjdEZvckFYT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qm
IGF4T2JqZWN0KSBjb25zdAoreworICAgIGlmICghbV9wYWdlSUQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgaWYgKGF1dG8gdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFn
ZUlEKCptX3BhZ2VJRCkpCisgICAgICAgIHJldHVybiB0cmVlLT5ub2RlRm9ySUQoYXhPYmplY3Qu
b2JqZWN0SUQoKSk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KICNlbmRpZgogICAgIAogdm9p
ZCBBWE9iamVjdENhY2hlOjpkZWZlclJlY29tcHV0ZUlzSWdub3JlZElmTmVlZGVkKEVsZW1lbnQq
IGVsZW1lbnQpCkBAIC0zMjA1LDEyICszMjM3LDExIEBAIGJvb2wgaXNOb2RlQXJpYVZpc2libGUo
Tm9kZSogbm9kZSkKICAgICByZXR1cm4gIXJlcXVpcmVzQXJpYUhpZGRlbkZhbHNlIHx8IGFyaWFI
aWRkZW5GYWxzZVByZXNlbnQ7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2Fj
aGU6OnJvb3RXZWJBcmVhKCkKK0FYQ29yZU9iamVjdCogQVhPYmplY3RDYWNoZTo6cm9vdFdlYkFy
ZWEoKQogewotICAgIEFYQ29yZU9iamVjdCogcm9vdE9iamVjdCA9IHRoaXMtPnJvb3RPYmplY3Qo
KTsKLSAgICBpZiAoIXJvb3RPYmplY3QgfHwgIXJvb3RPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Pigqcm9vdE9iamVjdCkud2ViQXJlYU9iamVjdCgpOwor
ICAgIGlmIChhdXRvKiByb290T2JqZWN0ID0gdGhpcy0+cm9vdE9iamVjdCgpKQorICAgICAgICBy
ZXR1cm4gcm9vdE9iamVjdC0+d2ViQXJlYU9iamVjdCgpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiBBWEF0dHJpYnV0ZUNhY2hlRW5hYmxlcjo6QVhBdHRyaWJ1dGVDYWNoZUVuYWJsZXIoQVhP
YmplY3RDYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oCmluZGV4IGQzZDQ1ZjMzYzgwOThkOTczZTk1OTIzNzkyZDEyYTZhNzg5ODBkYWYu
LjIzZWJjYTUwZThmZDhlZmRkYTdjOGZhMGQ0MjMyMDgwMmJkYTNlNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xNTIsNyArMTUyLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYQ29yZU9iamVjdCogcm9vdE9iamVjdCgpOwog
ICAgIC8vIFJldHVybnMgdGhlIHJvb3Qgb2JqZWN0IGZvciBhIHNwZWNpZmljIGZyYW1lLgogICAg
IFdFQkNPUkVfRVhQT1JUIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RPYmplY3RGb3JGcmFtZShG
cmFtZSopOwotICAgIAorCiAgICAgLy8gRm9yIEFYIG9iamVjdHMgd2l0aCBlbGVtZW50cyB0aGF0
IGJhY2sgdGhlbS4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShSZW5kZXJP
YmplY3QqKTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShXaWRnZXQqKTsK
QEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyB1c2VkIGZvciBvYmplY3RzIHdp
dGhvdXQgYmFja2luZyBlbGVtZW50cwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldE9yQ3Jl
YXRlKEFjY2Vzc2liaWxpdHlSb2xlKTsKLSAgICAKKwogICAgIC8vIHdpbGwgb25seSByZXR1cm4g
dGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgaWYgaXQgYWxyZWFkeSBleGlzdHMKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBnZXQoUmVuZGVyT2JqZWN0Kik7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogZ2V0KFdpZGdldCopOwpAQCAtMTcyLDcgKzE3MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmUoQVhJRCk7CiAKICAgICB2b2lkIGRldGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiwgQWNj
ZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlKTsKK3ByaXZhdGU6CisgICAgdm9pZCBjYWNoZUFuZElu
aXRpYWxpemVXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBSZW5kZXJPYmplY3QqID0gbnVs
bHB0ciwgTm9kZSogPSBudWxscHRyLCBXaWRnZXQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBhdHRh
Y2hXcmFwcGVyKEFYQ29yZU9iamVjdCopOworCitwdWJsaWM6CiAgICAgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoTm9kZSosIE5vZGUqIG5ld0NoaWxkID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCA9IG51bGxwdHIp
OwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFYQ29yZU9iamVjdCopOwpAQCAtMTk3LDYgKzIw
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KE5v
ZGUqKTsKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBnZW5lcmF0ZUlzb2xhdGVkVHJl
ZShQYWdlSWRlbnRpZmllciwgRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRP
YmplY3Q+IGNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVPYmplY3QmLCBBWElELCBB
WE9iamVjdENhY2hlKiwgQVhJc29sYXRlZFRyZWUmLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRPYmpl
Y3Q+PiYsIGJvb2wgaXNSb290KTsKKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gaXNvbGF0
ZWRPYmplY3RGb3JBWE9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCkg
Y29uc3Q7CiAjZW5kaWYKIAogcHVibGljOgpAQCAtMzExLDcgKzMxNiw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcG9zdE5vdGlmaWNhdGlvbihSZW5kZXJPYmplY3QqLCBBWE5vdGlmaWNhdGlvbiwg
UG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5
KTsKICAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oTm9kZSosIEFYTm90aWZpY2F0aW9uLCBQb3N0
VGFyZ2V0ID0gVGFyZ2V0RWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOwot
ICAgIHZvaWQgcG9zdE5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBEb2N1bWVudCosIEFYTm90
aWZpY2F0aW9uLCBQb3N0VGFyZ2V0ID0gVGFyZ2V0RWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5
bmNocm9ub3VzbHkpOworICAgIHZvaWQgcG9zdE5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgRG9jdW1lbnQqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1l
bnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKIAogI2lmbmRlZiBOREVCVUcKICAg
ICB2b2lkIHNob3dJbnRlbnQoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKQEAgLTM1
NywyNSArMzYyLDI1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlZmVyVGV4dFJlcGxhY2VtZW50Tm90
aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmLCBjb25z
dCBTdHJpbmcmIHByZXZpb3VzVmFsdWUpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZU1hdGNo
ZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4sIGNvbnN0IFN0cmluZyYpOwotICAgIAogCiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0
KiwgQVhOb3RpZmljYXRpb24pOworICAgIEFYQ29yZU9iamVjdCogbm90aWZpYWJsZU9iamVjdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVs
ZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZEZvY3VzZWROb2RlLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7
CiAKICAgICB2b2lkIHBsYXRmb3JtUGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKTsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90
aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKLSAgICB2b2lkIHBvc3RUZXh0U3RhdGVD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRp
dFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotICAgIHZvaWQg
cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQWNj
ZXNzaWJpbGl0eU9iamVjdCosIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwotICAgIHZvaWQg
cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworICAgIHZvaWQgcG9zdFRleHRTdGF0
ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIGNvbnN0IEFYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOworICAgIHZvaWQgcG9z
dFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYVGV4
dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICB2
b2lkIHBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9s
KEFYQ29yZU9iamVjdCosIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmluZyYg
aW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpOworICAgIHZvaWQgcG9z
dFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYVGV4
dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAjZWxzZQogICAgIHN0YXRpYyBBWFRleHRDaGFuZ2Ug
dGV4dENoYW5nZUZvckVkaXRUeXBlKEFYVGV4dEVkaXRUeXBlKTsKICAgICB2b2lkIG5vZGVUZXh0
Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENo
YW5nZSwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGZyYW1l
TG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFY
TG9hZGluZ0V2ZW50KTsKKyAgICB2b2lkIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQVhDb3JlT2JqZWN0KiwgQVhMb2FkaW5nRXZlbnQpOwogICAgIHZvaWQgdGV4dENoYW5n
ZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIHZvaWQgbGFiZWxDaGFuZ2VkKEVsZW1lbnQq
KTsKIApAQCAtNDEwLDcgKzQxNSw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIHNob3VsZFNraXBC
b3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsK
IAogcHJpdmF0ZToKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290V2ViQXJlYSgpOworICAg
IEFYQ29yZU9iamVjdCogcm9vdFdlYkFyZWEoKTsKIAogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBmb2N1c2VkSW1hZ2VNYXBVSUVsZW1lbnQoSFRNTEFyZWFFbGVtZW50Kik7CiAgICAg
c3RhdGljIEFYQ29yZU9iamVjdCogZm9jdXNlZE9iamVjdChEb2N1bWVudCYpOwpAQCAtNDY0LDcg
KzQ2OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogCiAgICAg
VGltZXIgbV9ub3RpZmljYXRpb25Qb3N0VGltZXI7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQ
dHI8QVhDb3JlT2JqZWN0PiwgQVhOb3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlvbnNUb1Bvc3Q7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4sIEFYTm90
aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zVG9Qb3N0OwogCiAgICAgVGltZXIgbV9wYXNzd29y
ZE5vdGlmaWNhdGlvblBvc3RUaW1lcjsKIApAQCAtNTk2LDkgKzYwMSw5IEBAIGlubGluZSBDaGFy
YWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZMaW5lKGNvbnN0
IENoYXJhY3Rlck9mCiBpbmxpbmUgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRD
aGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCkgeyByZXR1cm4gQ2hh
cmFjdGVyT2Zmc2V0KCk7IH0KIGlubGluZSBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6
cHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCkgeyBy
ZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLWlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpw
b3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCosIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNv
bnN0IFN0cmluZyYsIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBjb25zdCBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KK2lubGluZSB2b2lk
IEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
WENvcmVPYmplY3QqLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxh
Y2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUs
IGNvbnN0IFN0cmluZyYsIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSB7IH0KICNlbHNlCiBpbmxpbmUgQVhUZXh0Q2hhbmdlIEFYT2JqZWN0Q2Fj
aGU6OnRleHRDaGFuZ2VGb3JFZGl0VHlwZShBWFRleHRFZGl0VHlwZSkgeyByZXR1cm4gQVhUZXh0
SW5zZXJ0ZWQ7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxh
dGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5z
aWduZWQsIGNvbnN0IFN0cmluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAppbmRleCA3YjAy
YzIyNDljNmEzOTQ2MzE5ODM0M2EyZTQ3ODBlNDRiNTExMjEwLi4xMjhlYzA1MjNkZjJkNGQ4OGYz
N2Q3NGU5YTlkNjIyMDY1ODE2ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcApAQCAtMTMwLDEw
ICsxMzAsMTYgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBkYXRlQWN0
aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkKICAgICBBU1NFUlRfQVJHKG9wdGlvbkluZGV4LCBv
cHRpb25JbmRleCA8IHN0YXRpY19jYXN0PGludD4obV9jaGlsZHJlbi5zaXplKCkpKTsKIAogICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgIFJlZlB0cjxBWENv
cmVPYmplY3Q+IGNoaWxkID0gbV9jaGlsZHJlbltvcHRpb25JbmRleF0uZ2V0KCk7CisgICAgaWYg
KCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGlzPEFjY2Vzc2liaWxpdHlP
YmplY3Q+KG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpKSk7CisgICAgaWYgKCFpczxBY2Nl
c3NpYmlsaXR5T2JqZWN0PihtX2NoaWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKSkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvKiBjaGlsZCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+
KG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpKTsKIAotICAgIGNhY2hlLT5wb3N0Tm90aWZp
Y2F0aW9uKGNoaWxkLmdldCgpLCBkb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWEZvY3VzZWRV
SUVsZW1lbnRDaGFuZ2VkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7Ci0gICAg
Y2FjaGUtPnBvc3ROb3RpZmljYXRpb24oY2hpbGQuZ2V0KCksIGRvY3VtZW50KCksIEFYT2JqZWN0
Q2FjaGU6OkFYTWVudUxpc3RJdGVtU2VsZWN0ZWQsIFRhcmdldEVsZW1lbnQsIFBvc3RTeW5jaHJv
bm91c2x5KTsKKyAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZCwgZG9jdW1lbnQoKSwg
QVhPYmplY3RDYWNoZTo6QVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCwgVGFyZ2V0RWxlbWVudCwg
UG9zdFN5bmNocm9ub3VzbHkpOworICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNoaWxkLCBk
b2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWE1lbnVMaXN0SXRlbVNlbGVjdGVkLCBUYXJnZXRF
bGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKaW5kZXggOWJmMDQ5NzhiNzEyODk2ZjYxZGNlNDhjM2JiYWEyZmFmYTczNjU2Yi4uODYwNzhi
MDc3OGJjZDkxM2VlNTFiZjA2MjliYTRhZGY1NTNlNGY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQzNSw2ICs0MzUs
NyBAQCBwdWJsaWM6CiAgICAgRnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IERvY3VtZW50KiB0b3BEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNjcm9sbFZpZXcq
IHNjcm9sbFZpZXdBbmNlc3RvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCog
d2ViQXJlYU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBT
dHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyAxLWJhc2VkLCB0byBtYXRj
aCB0aGUgYXJpYS1sZXZlbCBzcGVjLgogICAgIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQpAQCAtNzQ1LDkgKzc0Niw2IEBAIHByb3RlY3Rl
ZDoKICAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgbV9pc0lnbm9yZWRG
cm9tUGFyZW50RGF0YSB7IH07CiAgICAgYm9vbCBtX2NoaWxkcmVuRGlydHkgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9zdWJ0cmVlRGlydHkgeyBmYWxzZSB9OwotI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgYm9vbCBtX2lzb2xhdGVkVHJlZU5vZGVJbml0aWFsaXpl
ZCB7IGZhbHNlIH07Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSBvdmVycmlkZSB7
IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBkYXRhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmgKaW5kZXggMDcyMDMxOTA3ZWE0MzhjODM5Yjk5YmNkMzEyYzJiMTEwMmI3Yzg4ZS4uZDU5MmZj
MzA0MzUyMTgxNmZhZTBjNGRhMTE5NWQ5NjIzNThhY2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmgKQEAgLTgzNyw2ICs4MzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFtZSogbWFpbkZy
YW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiB3ZWJBcmVhT2JqZWN0KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgPSAwOwogICAgIC8vIDEt
YmFzZWQsIHRvIG1hdGNoIHRoZSBhcmlhLWxldmVsIHNwZWMuCiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA5YmZhZjE1
NWFkYjIzMmE1NjYzZjU4Y2IwOGMxMmMxMzNlMmMzNTFjLi41YWQ2YmUxZTUwY2IzYWExMDFlMDZm
OGM0YzI3NDljZmQzZTJjZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBAIC00MiwxMSArNDIsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCk7CiAgICAgdm9pZCBk
ZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKikgb3ZlcnJp
ZGU7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB3ZWJBcmVhT2JqZWN0KCkgY29uc3Q7Ci0K
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoU2Nyb2xsVmll
dyopOwotICAgIAorCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Ny
b2xsYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9p
bnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCmluZGV4IGZlMTI2MGQ3ZmRjZjY4ODk4YWQ4
NTU3ODRiMDUxZDNkNzIxZDEwNmYuLjdlOWZmMzc2NTNjZTQ3ZTc1NjExNWYyMjNmYjkxNTM4ZmZl
YmM1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2Jq
ZWN0Q2FjaGVBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FY
T2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
Ojpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamUKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBlciwgZGV0YWlsLmRhdGEoKSwg
b2Zmc2V0VG9FbWl0LCB0ZXh0VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0VG9FbWl0LnV0ZjgoKS5kYXRh
KCkpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1O
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWExvYWRpbmdFdmVudCBs
b2FkaW5nRXZlbnQpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZv
cm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYTG9hZGluZ0V2ZW50IGxvYWRp
bmdFdmVudCkKIHsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5k
ZXggZjExYmZhOGUwZmFmOTk4NTdmYzFhZTgxNmI2NjdhYWVlMTU0NWJlNS4uNDMyMzgzZjBmM2Y2
ZjIzZGY0MDA2NjZjNDlhNzRlNzg5M2M2MGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCkBAIC05OCwyNyArOTgsMjcg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2Jq
ZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG4KICAgICAgICAgW29iai0+d3JhcHBlcigpIGFjY2Vz
c2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uU3RyaW5nXTsKIH0KIAotdm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4
dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIGNv
bnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpCiB7
CiAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgQVhTZWxlY3RlZFRleHRDaGFu
Z2VkKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikKK3ZvaWQgQVhPYmplY3RD
YWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVj
dCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikKIHsKICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBBWFZhbHVl
Q2hhbmdlZCk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRSZXBsYWNlbWVudFBs
YXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgQVhUZXh0RWRp
dFR5cGUsIGNvbnN0IFN0cmluZyYsIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2Vt
ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRU
eXBlLCBjb25zdCBTdHJpbmcmLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikKIHsKICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0
LCBBWFZhbHVlQ2hhbmdlZCk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRSZXBs
YWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCYpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQ
bGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFYQ29yZU9iamVjdCogb2JqZWN0LCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYp
CiB7CiAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgQVhWYWx1ZUNoYW5nZWQp
OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3Rp
ZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhMb2FkaW5nRXZl
bnQgbG9hZGluZ0V2ZW50KQordm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBs
YXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhMb2FkaW5n
RXZlbnQgbG9hZGluZ0V2ZW50KQogewogICAgIGlmICghYXhGcmFtZU9iamVjdCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCA1MmViNDBmMWE4YmVhMjA1
MWE4MDBlZTZhNmI2MDIwZmUyYjBhNzE3Li5lOTU1NjEyYzYwYTUzYzJjMDU2NDAxZGNmN2YwYWFi
ZDUxYjJkMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMTcyLDYgKzE3Miw3
IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3Jl
T2JqZWN0JiBvYmplY3QsIGJvb2wgaXNSb290CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OkV4cG9zZXNUaXRsZVVJRWxlbWVudCwgb2JqZWN0LmV4cG9zZXNUaXRsZVVJRWxlbWVudCgp
KTsKICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VmVydGljYWxTY3JvbGxC
YXIsIG9iamVjdC5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbCkp
OwogICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpIb3Jpem9udGFsU2Nyb2xs
QmFyLCBvYmplY3Quc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRh
bCkpOworICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpXZWJBcmVhT2JqZWN0
LCBvYmplY3Qud2ViQXJlYU9iamVjdCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6QVJJQVJvbGVBdHRyaWJ1dGUsIHN0YXRpY19jYXN0PGludD4ob2JqZWN0LmFyaWFSb2xlQXR0
cmlidXRlKCkpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRMYWJl
bCwgb2JqZWN0LmNvbXB1dGVkTGFiZWwoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OlBsYWNlaG9sZGVyVmFsdWUsIG9iamVjdC5wbGFjZWhvbGRlclZhbHVlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5oCmluZGV4IGNlNjIxOTc0ZGMyZWNlYjY0Njg4ZTcyMTVkNDZhMTBkOTMw
NDJkYmYuLmQyMjJmNzQ0YWM1MGZiODkzYzM5ZDQ4YmMxMDQyNDc1YzI2MmJhMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmgKQEAgLTMwMiw2ICszMDIsNyBAQCBwcml2YXRlOgogICAgICAgICBW
YWxpZGF0aW9uTWVzc2FnZSwKICAgICAgICAgVmVydGljYWxTY3JvbGxCYXIsCiAgICAgICAgIFZp
c2libGVDaGlsZHJlbiwKKyAgICAgICAgV2ViQXJlYU9iamVjdCwKICAgICB9OwogICAgIAogICAg
IHR5cGVkZWYgc3RkOjpwYWlyPEFYSUQsIEFYSUQ+IEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVN
YXRoTXVsdGlzY3JpcHRQYWlyOwpAQCAtNzYyLDYgKzc2Myw3IEBAIHByaXZhdGU6CiAgICAgRnJh
bWUqIG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiB0b3BEb2N1bWVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3Rvcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpX
ZWJBcmVhT2JqZWN0KTsgfQogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0ZXh0Q2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQWNjZXNzaWJp
bGl0eVJvbGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IGY1ZGExNmEwZDZkNmYzODZmMTU4M2M4
ZDkzOTUyY2JmMDcxOGU2NjUuLmY5MzlhYjliOTNiYTZiMmY5ZjEyYzI4ZDQ4NDNkMDM3ZWU4Mjdk
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbQpAQCAtMjgsOCArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFkpICYmIFBMQVRGT1JNKE1BQykKIAotI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgotI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxl
LmgiCiAjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKICNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLmgiCkBAIC0zNzAsNyArMzY4LDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmosIEFYTm90aWZpY2F0
aW9uIG4KICAgICBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8ob2JqLT53cmFwcGVyKCks
IG1hY05vdGlmaWNhdGlvbiwgbmlsLCBza2lwU3lzdGVtTm90aWZpY2F0aW9uKTsKIH0KIAotdm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCYgaW50ZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVP
YmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludGVudCwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIGlmICghb2JqZWN0KQogICAg
ICAgICBvYmplY3QgPSByb290V2ViQXJlYSgpOwpAQCAtNDE2LDcgKzQxNCw3IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vz
c2liaWxpdHlPYmplY3QqCiAgICAgaWYgKGlkIHdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKSkK
ICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDp3cmFwcGVyIGZvcktleTpOU0FjY2Vzc2liaWxp
dHlUZXh0Q2hhbmdlRWxlbWVudF07CiAKLSAgICBpZiAoYXV0byByb290ID0gcm9vdFdlYkFyZWEo
KSkgeworICAgIGlmIChhdXRvKiByb290ID0gcm9vdFdlYkFyZWEoKSkgewogICAgICAgICBBWFBv
c3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8ocm9vdFdlYkFyZWEoKS0+d3JhcHBlcigpLCBOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZFRleHRDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7CiAg
ICAgICAgIGlmIChyb290LT53cmFwcGVyKCkgIT0gb2JqZWN0LT53cmFwcGVyKCkpCiAgICAgICAg
ICAgICBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8ob2JqZWN0LT53cmFwcGVyKCksIE5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsK
QEAgLTQyNSw3ICs0MjMsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFu
Z2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIFt1c2VySW5m
byByZWxlYXNlXTsKIH0KIAotc3RhdGljIHZvaWQgYWRkVGV4dE1hcmtlckZvcihOU011dGFibGVE
aWN0aW9uYXJ5KiBjaGFuZ2UsIEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK3N0YXRpYyB2b2lkIGFkZFRleHRNYXJrZXJGb3IoTlNN
dXRhYmxlRGljdGlvbmFyeSogY2hhbmdlLCBBWENvcmVPYmplY3QmIG9iamVjdCwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQzMywxNCArNDMxLDE0IEBAIHN0YXRpYyB2b2lkIGFkZFRleHRN
YXJrZXJGb3IoTlNNdXRhYmxlRGljdGlvbmFyeSogY2hhbmdlLCBBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvCiAgICAgICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OnRleHRNYXJrZXIgZm9yS2V5Ok5TQWNjZXNz
aWJpbGl0eVRleHRDaGFuZ2VWYWx1ZVN0YXJ0TWFya2VyXTsKIH0KIAotc3RhdGljIHZvaWQgYWRk
VGV4dE1hcmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRDb250cm9sKQor
c3RhdGljIHZvaWQgYWRkVGV4dE1hcmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2Us
IEFYQ29yZU9iamVjdCYgb2JqZWN0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENv
bnRyb2wpCiB7CiAgICAgaWYgKGlkIHRleHRNYXJrZXIgPSBbb2JqZWN0LndyYXBwZXIoKSB0ZXh0
TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6dGV4dENvbnRyb2xdKQogICAgICAg
ICBbY2hhbmdlIHNldE9iamVjdDp0ZXh0TWFya2VyIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0
Q2hhbmdlVmFsdWVTdGFydE1hcmtlcl07CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUZXh0TWFy
a2VyVGFyZ2V0VHlwZT4KLXN0YXRpYyBOU0RpY3Rpb25hcnkgKnRleHRSZXBsYWNlbWVudENoYW5n
ZURpY3Rpb25hcnkoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0LCBBWFRleHRFZGl0VHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgVGV4dE1hcmtlclRhcmdldFR5cGUmIG1hcmtlclRh
cmdldCkKK3N0YXRpYyBOU0RpY3Rpb25hcnkgKnRleHRSZXBsYWNlbWVudENoYW5nZURpY3Rpb25h
cnkoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFYVGV4dEVkaXRUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBUZXh0TWFya2VyVGFyZ2V0VHlwZSYgbWFya2VyVGFyZ2V0KQogewogICAgIE5T
U3RyaW5nICp0ZXh0ID0gKE5TU3RyaW5nICopc3RyaW5nOwogICAgIE5TVUludGVnZXIgbGVuZ3Ro
ID0gW3RleHQgbGVuZ3RoXTsKQEAgLTQ1Nyw3ICs0NTUsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5
ICp0ZXh0UmVwbGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5KEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdAogICAgIHJldHVybiBbY2hhbmdlIGF1dG9yZWxlYXNlXTsKIH0KIAotdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9i
amVjdCwgQVhUZXh0RWRpdFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlmICghdGV4dC5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDY1LDcgKzQ2Myw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAg
ICAgcG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgQVhUZXh0
RWRpdFR5cGVVbmtub3duLCBlbXB0eVN0cmluZygpLCB0eXBlLCB0ZXh0LCBwb3NpdGlvbik7CiB9
CiAKLXN0YXRpYyB2b2lkIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoQWNjZXNzaWJpbGl0eU9iamVj
dCYgcm9vdFdlYkFyZWEsIEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCwgTlNNdXRhYmxlQXJy
YXkqIGNoYW5nZXMpCitzdGF0aWMgdm9pZCBwb3N0VXNlckluZm9Gb3JDaGFuZ2VzKEFYQ29yZU9i
amVjdCYgcm9vdFdlYkFyZWEsIEFYQ29yZU9iamVjdCYgb2JqZWN0LCBOU011dGFibGVBcnJheSog
Y2hhbmdlcykKIHsKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo0XTsKICAgICBbdXNlckluZm8g
c2V0T2JqZWN0OkAocGxhdGZvcm1DaGFuZ2VUeXBlRm9yV2ViQ29yZUNoYW5nZVR5cGUoQVhUZXh0
U3RhdGVDaGFuZ2VUeXBlRWRpdCkpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVDaGFu
Z2VUeXBlS2V5XTsKQEAgLTQ4Miw3ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBwb3N0VXNlckluZm9G
b3JDaGFuZ2VzKEFjY2Vzc2liaWxpdHlPYmplY3QmIHJvb3RXZWJBcmVhLCBBY2Nlc3NpYmlsaQog
ICAgIFt1c2VySW5mbyByZWxlYXNlXTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4
dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0LCBBWFRleHRFZGl0VHlwZSBkZWxldGlvblR5cGUsIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRl
eHQsIEFYVGV4dEVkaXRUeXBlIGluc2VydGlvblR5cGUsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRU
ZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQordm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBv
YmplY3QsIEFYVGV4dEVkaXRUeXBlIGRlbGV0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBkZWxldGVk
VGV4dCwgQVhUZXh0RWRpdFR5cGUgaW5zZXJ0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBpbnNlcnRl
ZFRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFvYmpl
Y3QpCiAgICAgICAgIG9iamVjdCA9IHJvb3RXZWJBcmVhKCk7CkBAIC00OTksNyArNDk3LDcgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b24oQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICBbY2hhbmdlcyByZWxlYXNlXTsKIH0KIAotdm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25G
b3JUZXh0Q29udHJvbChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYg
ZGVsZXRlZFRleHQsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudCYgdGV4dENvbnRyb2wpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVw
bGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFYQ29yZU9iamVjdCog
b2JqZWN0LCBjb25zdCBTdHJpbmcmIGRlbGV0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGluc2VydGVk
VGV4dCwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRDb250cm9sKQogewogICAgIGlm
ICghb2JqZWN0KQogICAgICAgICBvYmplY3QgPSByb290V2ViQXJlYSgpOwpAQCAtNTE2LDExICs1
MTQsMTEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1O
b3RpZmljYXRpb25Gb3JUZXh0Q29udHJvbChBY2Nlc3MKICAgICBbY2hhbmdlcyByZWxlYXNlXTsK
IH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZp
Y2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4RnJhbWVPYmplY3QsIEFYTG9hZGluZ0V2ZW50
IGxvYWRpbmdFdmVudCkKK3ZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIGF4RnJhbWVPYmplY3QsIEFYTG9hZGluZ0V2
ZW50IGxvYWRpbmdFdmVudCkKIHsKICAgICBpZiAoIWF4RnJhbWVPYmplY3QpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIGlmIChsb2FkaW5nRXZlbnQgPT0gQVhMb2FkaW5nRmluaXNoZWQg
JiYgYXhGcmFtZU9iamVjdC0+ZG9jdW1lbnQoKSA9PSBheEZyYW1lT2JqZWN0LT50b3BEb2N1bWVu
dCgpKQogICAgICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oYXhGcmFtZU9iamVjdCwgQVhM
b2FkQ29tcGxldGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS93aW4vQVhPYmplY3RDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcAppbmRleCAzZjU1NTg2ODU5NzczMTQxYmMxNWVlYWE3
ZWM3ODZlOThjZTMxZDYwLi44MWQ1MjExYTdmNDg2MjYyMzFmNTMyZjExMTRkNDM5NWZjYzhjM2E3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENh
Y2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVj
dENhY2hlV2luLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9k
ZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhU
CiB7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTG9hZGluZ0V2ZW50IG5vdGlm
aWNhdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iaiwgQVhMb2FkaW5nRXZlbnQgbm90aWZpY2F0aW9u
KQogewogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388462</attachid>
            <date>2020-01-22 13:11:18 -0800</date>
            <delta_ts>2022-02-10 16:26:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206596-20200122161116.patch</filename>
            <type>text/plain</type>
            <size>35619</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI0YzhlZmEyOWViZGYx
N2VjMTEyNjM3MWZjMTE4MDQwNmY4ZTk5Zi4uMzYwZDYwMDU2MzY5YmQxODBmNzA0OTMwOTUxOTM4
NzZhODE0MzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAxLTIyICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
QVggaXNvbGF0ZWQgdHJlZSBtb2RlIHN1cHBvcnQgZm9yIGV2ZW50IG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1OTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBpc29sYXRl
ZCB0cmVlIG1vZGUsIGV2ZW50IG5vdGlmaWNhdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9sbG93czoK
KyAgICAgICAgMS4gRE9NIG9iamVjdHMgYXJlIG1hcHBlZCB0byBBWE9iamVjdHMuCisgICAgICAg
IDIuIEFYT2JqZWN0cyBhcmUgaW4gdHVybiBtYXBwZWQgdG8gdGhlaXIgYXNzb2NpYXRlZCBJc29s
YXRlZE9iamVjdHMuCisgICAgICAgIDMuIFRoZSBJc29sYXRlZE9iamVjdCdzIHdhcHBlciBpcyB1
c2VkIHRvIHBvc3QgYSBwbGF0Zm9ybSBub3RpZmljYXRpb24uCisgICAgICAgIDQuIEFYT2JqZWN0
cyB3aWxsIG5vdCBoYXZlIGEgcGxhdGZvcm0gd3JhcHBlciBzaW5jZSBpdCB3b24ndCBiZSBleHBv
c2VkCisgICAgICAgIHRvIGFueSBjbGllbnQgZGlyZWN0bHkuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6Y2FjaGVBbmRXcmFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9y
Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBv
c3RUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3ROb3Rp
ZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpYWJsZU9i
amVjdCk6IFJldHVybnMgYW4gQVhDb3JlT2JqZWN0IHRoYXQgY2FuIGJlIGVpdGhlciBhbiBBWE9i
amVjdCBvciBhbiBJc29sYXRlZE9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmZyYW1lTG9hZGluZ0V2ZW50Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeSk6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjppc29sYXRlZE9iamVjdEZvckFYT2JqZWN0IGNvbnN0KTogTWFw
cyBhbiBBWE9iamVjdCB0byBpdHMgYXNzb2NpYXRlZCBJc29sYXRlZE9iamVjdC4KKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJvb3RXZWJBcmVhKToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmRpZFVw
ZGF0ZUFjdGl2ZU9wdGlvbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRl
eHRDb250cm9sKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGlu
Z0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEpOiBJbXBsZW1lbnRzIHdlYkFyZWFP
YmplY3QgbWV0aG9kLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuaDogSW1wbGVtZW50cyB3ZWJBcmVhT2JqZWN0IG1ldGhvZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRNYXJrZXJGb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpw
b3N0VXNlckluZm9Gb3JDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b25Gb3JUZXh0Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmcmFt
ZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKwogMjAyMC0wMS0xOCAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gTGF5b3V0U3RhdGUg
Y29uc3RydWN0b3Igc2hvdWxkbid0IHRha2UgTGF5b3V0VHJlZUNvbnRlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDZmMzdjMGIzZjI4
OTYzNTA1Mjg0NDA0ZDQyYzYxZjdlYjA0ODk2YjIuLjJkODdkZGQyNDA5OTI3YjBjMzYwMWM4YmY4
NmMzNTNjMDZmNWMyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcApAQCAtNjAzLDYgKzYwMywyOSBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IGNyZWF0ZUZyb21Ob2RlKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpjcmVhdGUobm9kZSk7CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6
Y2FjaGVBbmRJbml0aWFsaXplV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXdPYmplY3Qs
IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIE5vZGUqIG5vZGUsIFdpZGdldCogd2lkZ2V0KQorewor
ICAgIEFTU0VSVChuZXdPYmplY3QpOworICAgIEFYSUQgYXhJRCA9IGdldEFYSUQobmV3T2JqZWN0
KTsKKyAgICBpZiAocmVuZGVyZXIpCisgICAgICAgIG1fcmVuZGVyT2JqZWN0TWFwcGluZy5zZXQo
cmVuZGVyZXIsIGF4SUQpOworICAgIGlmIChub2RlKQorICAgICAgICBtX25vZGVPYmplY3RNYXBw
aW5nLnNldChub2RlLCBheElEKTsKKyAgICBpZiAod2lkZ2V0KQorICAgICAgICBtX3dpZGdldE9i
amVjdE1hcHBpbmcuc2V0KHdpZGdldCwgYXhJRCk7CisgICAgbV9vYmplY3RzLnNldChheElELCBu
ZXdPYmplY3QpOworICAgIG5ld09iamVjdC0+aW5pdCgpOworI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0lTT0xBVEVEX1RSRUUpCisgICAgLy8gSWYgdGhlIGNsaWVudCBzdXBwb3J0cyB0aGUgaXNv
bGF0ZWQgdHJlZSwgdGhlIGlzb2xhdGVkIG9iamVjdCB3aWxsCisgICAgLy8gcHJvdmlkZSB0aGUg
cGxhdGZvcm0gd3JhcHBlci4gVGh1cywgYXR0YWNoIGEgd3JhcHBlciBvbmx5IGlmIHRoZSBjbGll
bnQKKyAgICAvLyBkb2Vzbid0IHN1cHBvcnQgdGhlIGlzb2xhdGVkIHRyZWUuCisgICAgaWYgKCFj
bGllbnRTdXBwb3J0c0lzb2xhdGVkVHJlZSgpKQorICAgICAgICBhdHRhY2hXcmFwcGVyKG5ld09i
amVjdCk7CisjZWxzZQorICAgIGF0dGFjaFdyYXBwZXIobmV3T2JqZWN0KTsKKyNlbmRpZgorfQor
CiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShXaWRnZXQq
IHdpZGdldCkKIHsKICAgICBpZiAoIXdpZGdldCkKQEAgLTYyNSwxMiArNjQ4LDcgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoV2lkZ2V0KiB3aWRnZXQp
CiAgICAgaWYgKCFuZXdPYmopCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZ2V0QVhJ
RChuZXdPYmouZ2V0KCkpOwotICAgIAotICAgIG1fd2lkZ2V0T2JqZWN0TWFwcGluZy5zZXQod2lk
Z2V0LCBuZXdPYmotPm9iamVjdElEKCkpOwotICAgIG1fb2JqZWN0cy5zZXQobmV3T2JqLT5vYmpl
Y3RJRCgpLCBuZXdPYmopOwotICAgIG5ld09iai0+aW5pdCgpOwotICAgIGF0dGFjaFdyYXBwZXIo
bmV3T2JqLmdldCgpKTsKKyAgICBjYWNoZUFuZEluaXRpYWxpemVXcmFwcGVyKG5ld09iai5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0ciwgd2lkZ2V0KTsKICAgICByZXR1cm4gbmV3T2JqLmdldCgpOwog
fQogCkBAIC02NzMsMTIgKzY5MSw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2Fj
aGU6OmdldE9yQ3JlYXRlKE5vZGUqIG5vZGUpCiAgICAgLy8gV2lsbCBjcmFzaCBsYXRlciBpZiB3
ZSBoYXZlIHR3byBvYmplY3RzIGZvciB0aGUgc2FtZSBub2RlLgogICAgIEFTU0VSVCghZ2V0KG5v
ZGUpKTsKIAotICAgIGdldEFYSUQobmV3T2JqLmdldCgpKTsKLQotICAgIG1fbm9kZU9iamVjdE1h
cHBpbmcuc2V0KG5vZGUsIG5ld09iai0+b2JqZWN0SUQoKSk7Ci0gICAgbV9vYmplY3RzLnNldChu
ZXdPYmotPm9iamVjdElEKCksIG5ld09iaik7Ci0gICAgbmV3T2JqLT5pbml0KCk7Ci0gICAgYXR0
YWNoV3JhcHBlcihuZXdPYmouZ2V0KCkpOworICAgIGNhY2hlQW5kSW5pdGlhbGl6ZVdyYXBwZXIo
bmV3T2JqLmdldCgpLCBudWxscHRyLCBub2RlKTsKICAgICBuZXdPYmotPnNldExhc3RLbm93bklz
SWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKTsKICAgICAvLyBT
b21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSB3aWxsIGNhdXNlIHRoZSBu
ZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFuZCB0aGVuCiAgICAgLy8gaXQgd2lsbCBkaXNh
cHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZpbmlzaGVkLCBsZWFkaW5nIHRvIGEgdXNlLWFm
dGVyLWZyZWUuCkBAIC03MDEsMTIgKzcxNCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2Jq
ZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgLy8gV2ls
bCBjcmFzaCBsYXRlciBpZiB3ZSBoYXZlIHR3byBvYmplY3RzIGZvciB0aGUgc2FtZSByZW5kZXJl
ci4KICAgICBBU1NFUlQoIWdldChyZW5kZXJlcikpOwogCi0gICAgZ2V0QVhJRChuZXdPYmouZ2V0
KCkpOwotCi0gICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChyZW5kZXJlciwgbmV3T2JqLT5v
YmplY3RJRCgpKTsKLSAgICBtX29iamVjdHMuc2V0KG5ld09iai0+b2JqZWN0SUQoKSwgbmV3T2Jq
KTsKLSAgICBuZXdPYmotPmluaXQoKTsKLSAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7
CisgICAgY2FjaGVBbmRJbml0aWFsaXplV3JhcHBlcihuZXdPYmouZ2V0KCksIHJlbmRlcmVyKTsK
ICAgICBuZXdPYmotPnNldExhc3RLbm93bklzSWdub3JlZFZhbHVlKG5ld09iai0+YWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpKTsKICAgICAvLyBTb21ldGltZXMgYXNraW5nIGFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSB3aWxsIGNhdXNlIHRoZSBuZXdPYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQsIGFu
ZCB0aGVuCiAgICAgLy8gaXQgd2lsbCBkaXNhcHBlYXIgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZp
bmlzaGVkLCBsZWFkaW5nIHRvIGEgdXNlLWFmdGVyLWZyZWUuCkBAIC03OTUsOCArODAzLDggQEAg
QWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6cm9vdE9iamVjdEZvckZyYW1lKEZy
YW1lKiBmcmFtZSkKICAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiB7Ci0gICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IG9iaiA9IG51bGxwdHI7Ci0gICAgCisgICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG9iajsKKwogICAgIC8vIHdpbGwgYmUgZmlsbGVkIGluLi4uCiAgICAgc3dpdGNo
IChyb2xlKSB7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6TGlzdEJveE9wdGlvbjoKQEAg
LTgyOSwxNSArODM3LDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6Omdl
dE9yQ3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCiAgICAgZGVmYXVsdDoKICAgICAgICAg
b2JqID0gbnVsbHB0cjsKICAgICB9Ci0gICAgCi0gICAgaWYgKG9iaikKLSAgICAgICAgZ2V0QVhJ
RChvYmouZ2V0KCkpOwotICAgIGVsc2UKKworICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIG1fb2JqZWN0cy5zZXQob2JqLT5vYmplY3RJRCgpLCBvYmopOwotICAg
IG9iai0+aW5pdCgpOwotICAgIGF0dGFjaFdyYXBwZXIob2JqLmdldCgpKTsKKyAgICBjYWNoZUFu
ZEluaXRpYWxpemVXcmFwcGVyKG9iai5nZXQoKSk7CiAgICAgcmV0dXJuIG9iai5nZXQoKTsKIH0K
IApAQCAtMTAyNSw3ICsxMDI5LDExIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9u
UG9zdFRpbWVyRmlyZWQoKQogICAgIGF1dG8gbm90aWZpY2F0aW9ucyA9IFdURk1vdmUobV9ub3Rp
ZmljYXRpb25zVG9Qb3N0KTsKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG5vdGUgOiBub3Rp
ZmljYXRpb25zKSB7Ci0gICAgICAgIEFYQ29yZU9iamVjdCogb2JqID0gbm90ZS5maXJzdC5nZXQo
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gbm90ZS5maXJzdC5nZXQoKTsK
KyAgICAgICAgQVNTRVJUKG9iaik7CisgICAgICAgIGlmICghb2JqKQorICAgICAgICAgICAgY29u
dGludWU7CisKICAgICAgICAgaWYgKCFvYmotPm9iamVjdElEKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIApAQCAtMTA1MCw4ICsxMDU4LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25Qb3N0VGltZXJGaXJlZCgpCiAgICAgICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSAh
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6TWVudSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iaiwg
bm90aWZpY2F0aW9uKTsKKworICAgICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24obm90aWZp
YWJsZU9iamVjdChvYmopLCBub3RpZmljYXRpb24pOwogCiAgICAgICAgIGlmIChub3RpZmljYXRp
b24gPT0gQVhDaGlsZHJlbkNoYW5nZWQgJiYgb2JqLT5wYXJlbnRPYmplY3RJZkV4aXN0cygpICYm
IG9iai0+bGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSAhPSBvYmotPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKICAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChvYmotPnBhcmVudE9iamVjdCgp
KTsKQEAgLTExMTQsNyArMTEyMiw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNh
dGlvbihOb2RlKiBub2RlLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvCiAgICAgcG9z
dE5vdGlmaWNhdGlvbihvYmplY3QuZ2V0KCksICZub2RlLT5kb2N1bWVudCgpLCBub3RpZmljYXRp
b24sIHBvc3RUYXJnZXQsIHBvc3RUeXBlKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBEb2N1bWVudCogZG9jdW1lbnQsIEFY
Tm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCBwb3N0VGFyZ2V0LCBQb3N0VHlw
ZSBwb3N0VHlwZSkKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCwgQVhOb3RpZmljYXRpb24g
bm90aWZpY2F0aW9uLCBQb3N0VGFyZ2V0IHBvc3RUYXJnZXQsIFBvc3RUeXBlIHBvc3RUeXBlKQog
ewogICAgIHN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCk7CiAKQEAgLTExMzIs
NyArMTE0MCwxOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCwgQQogICAgICAgICBpZiAoIW1fbm90
aWZpY2F0aW9uUG9zdFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBtX25vdGlmaWNhdGlv
blBvc3RUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKICAgICB9IGVsc2UKLSAgICAgICAgcG9zdFBs
YXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgcG9zdFBs
YXRmb3JtTm90aWZpY2F0aW9uKG5vdGlmaWFibGVPYmplY3Qob2JqZWN0KSwgbm90aWZpY2F0aW9u
KTsKK30KKworQVhDb3JlT2JqZWN0KiBBWE9iamVjdENhY2hlOjpub3RpZmlhYmxlT2JqZWN0KEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0KQoreworICAgIC8vIEluIGlzb2xhdGVkIHRyZWUg
bW9kZSwgQWNjZXNzaWJpbGl0eU9iamVjdHMgaGF2ZSBubyB3cmFwcGVycyBhbmQKKyAgICAvLyBp
c29sYXRlZCBvYmplY3RzIHNob3VsZCBiZSB0aGUgdGhlIHRhcmdldHMgb2Ygbm90aWZpY2F0aW9u
cy4KKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIGlmICghYXhP
YmplY3QtPndyYXBwZXIoKSkKKyAgICAgICAgcmV0dXJuIGlzb2xhdGVkT2JqZWN0Rm9yQVhPYmpl
Y3QoKmF4T2JqZWN0KS5nZXQoKTsKKyNlbmRpZgorICAgIHJldHVybiBheE9iamVjdDsKIH0KIAog
dm9pZCBBWE9iamVjdENhY2hlOjpjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUqIG5vZGUpCkBAIC0x
NDkxLDggKzE1MTAsMTEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudE5v
dGlmaWNhdGlvbihGcmFtZSogZnJhbWUsIEFYTG9hZGluZ0V2ZW50IGwKICAgICBpZiAoIWNvbnRl
bnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqID0gZ2V0T3JDcmVhdGUoY29udGVudFJlbmRlcmVyKTsKLSAgICBmcmFtZUxvYWRpbmdFdmVu
dFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iaiwgbG9hZGluZ0V2ZW50KTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCA9IGdldE9yQ3JlYXRlKGNvbnRlbnRSZW5kZXJlcik7CisgICAg
aWYgKCFheE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWVMb2FkaW5nRXZlbnRQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihub3RpZmlhYmxlT2JqZWN0KGF4T2JqZWN0KSwgbG9hZGluZ0V2
ZW50KTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0TGl2ZVJlZ2lvbkNoYW5nZU5vdGlm
aWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCkBAIC0zMDgwLDcgKzMxMDIsNiBA
QCBSZWY8QVhJc29sYXRlZE9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlSXNvbGF0ZWRUcmVl
SGllcmFyY2h5KEFYQ29yZU9iamVjdCYgbwogCiAgICAgaXNvbGF0ZWRUcmVlTm9kZS0+c2V0VHJl
ZUlkZW50aWZpZXIodHJlZS50cmVlSWRlbnRpZmllcigpKTsKICAgICBpc29sYXRlZFRyZWVOb2Rl
LT5zZXRQYXJlbnQocGFyZW50SUQpOwotICAgIGF4T2JqZWN0Q2FjaGUtPmRldGFjaFdyYXBwZXIo
Jm9iamVjdCwgQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlOjpFbGVtZW50Q2hhbmdlKTsKICAg
ICBheE9iamVjdENhY2hlLT5hdHRhY2hXcmFwcGVyKCZpc29sYXRlZFRyZWVOb2RlLmdldCgpKTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBvYmplY3QuY2hpbGRyZW4oKSkgewpAQCAt
MzExOCw2ICszMTM5LDE3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhPYmplY3RDYWNoZTo6Z2Vu
ZXJhdGVJc29sYXRlZFRyZWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBECiAKICAgICByZXR1cm4g
bWFrZVJlZigqdHJlZSk7CiB9CisKK1JlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWE9iamVjdENh
Y2hlOjppc29sYXRlZE9iamVjdEZvckFYT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Qm
IGF4T2JqZWN0KSBjb25zdAoreworICAgIGlmICghbV9wYWdlSUQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgaWYgKGF1dG8gdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFn
ZUlEKCptX3BhZ2VJRCkpCisgICAgICAgIHJldHVybiB0cmVlLT5ub2RlRm9ySUQoYXhPYmplY3Qu
b2JqZWN0SUQoKSk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KICNlbmRpZgogICAgIAogdm9p
ZCBBWE9iamVjdENhY2hlOjpkZWZlclJlY29tcHV0ZUlzSWdub3JlZElmTmVlZGVkKEVsZW1lbnQq
IGVsZW1lbnQpCkBAIC0zMjA1LDEyICszMjM3LDExIEBAIGJvb2wgaXNOb2RlQXJpYVZpc2libGUo
Tm9kZSogbm9kZSkKICAgICByZXR1cm4gIXJlcXVpcmVzQXJpYUhpZGRlbkZhbHNlIHx8IGFyaWFI
aWRkZW5GYWxzZVByZXNlbnQ7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2Fj
aGU6OnJvb3RXZWJBcmVhKCkKK0FYQ29yZU9iamVjdCogQVhPYmplY3RDYWNoZTo6cm9vdFdlYkFy
ZWEoKQogewotICAgIEFYQ29yZU9iamVjdCogcm9vdE9iamVjdCA9IHRoaXMtPnJvb3RPYmplY3Qo
KTsKLSAgICBpZiAoIXJvb3RPYmplY3QgfHwgIXJvb3RPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Pigqcm9vdE9iamVjdCkud2ViQXJlYU9iamVjdCgpOwor
ICAgIGlmIChhdXRvKiByb290T2JqZWN0ID0gdGhpcy0+cm9vdE9iamVjdCgpKQorICAgICAgICBy
ZXR1cm4gcm9vdE9iamVjdC0+d2ViQXJlYU9iamVjdCgpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiBBWEF0dHJpYnV0ZUNhY2hlRW5hYmxlcjo6QVhBdHRyaWJ1dGVDYWNoZUVuYWJsZXIoQVhP
YmplY3RDYWNoZSogY2FjaGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oCmluZGV4IGQzZDQ1ZjMzYzgwOThkOTczZTk1OTIzNzkyZDEyYTZhNzg5ODBkYWYu
LjIzZWJjYTUwZThmZDhlZmRkYTdjOGZhMGQ0MjMyMDgwMmJkYTNlNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xNTIsNyArMTUyLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYQ29yZU9iamVjdCogcm9vdE9iamVjdCgpOwog
ICAgIC8vIFJldHVybnMgdGhlIHJvb3Qgb2JqZWN0IGZvciBhIHNwZWNpZmljIGZyYW1lLgogICAg
IFdFQkNPUkVfRVhQT1JUIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RPYmplY3RGb3JGcmFtZShG
cmFtZSopOwotICAgIAorCiAgICAgLy8gRm9yIEFYIG9iamVjdHMgd2l0aCBlbGVtZW50cyB0aGF0
IGJhY2sgdGhlbS4KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShSZW5kZXJP
YmplY3QqKTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShXaWRnZXQqKTsK
QEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyB1c2VkIGZvciBvYmplY3RzIHdp
dGhvdXQgYmFja2luZyBlbGVtZW50cwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldE9yQ3Jl
YXRlKEFjY2Vzc2liaWxpdHlSb2xlKTsKLSAgICAKKwogICAgIC8vIHdpbGwgb25seSByZXR1cm4g
dGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgaWYgaXQgYWxyZWFkeSBleGlzdHMKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBnZXQoUmVuZGVyT2JqZWN0Kik7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogZ2V0KFdpZGdldCopOwpAQCAtMTcyLDcgKzE3MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmUoQVhJRCk7CiAKICAgICB2b2lkIGRldGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiwgQWNj
ZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlKTsKK3ByaXZhdGU6CisgICAgdm9pZCBjYWNoZUFuZElu
aXRpYWxpemVXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBSZW5kZXJPYmplY3QqID0gbnVs
bHB0ciwgTm9kZSogPSBudWxscHRyLCBXaWRnZXQqID0gbnVsbHB0cik7CiAgICAgdm9pZCBhdHRh
Y2hXcmFwcGVyKEFYQ29yZU9iamVjdCopOworCitwdWJsaWM6CiAgICAgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoTm9kZSosIE5vZGUqIG5ld0NoaWxkID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCA9IG51bGxwdHIp
OwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEFYQ29yZU9iamVjdCopOwpAQCAtMTk3LDYgKzIw
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KE5v
ZGUqKTsKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBnZW5lcmF0ZUlzb2xhdGVkVHJl
ZShQYWdlSWRlbnRpZmllciwgRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRP
YmplY3Q+IGNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVPYmplY3QmLCBBWElELCBB
WE9iamVjdENhY2hlKiwgQVhJc29sYXRlZFRyZWUmLCBWZWN0b3I8UmVmPEFYSXNvbGF0ZWRPYmpl
Y3Q+PiYsIGJvb2wgaXNSb290KTsKKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gaXNvbGF0
ZWRPYmplY3RGb3JBWE9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCkg
Y29uc3Q7CiAjZW5kaWYKIAogcHVibGljOgpAQCAtMzExLDcgKzMxNiw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcG9zdE5vdGlmaWNhdGlvbihSZW5kZXJPYmplY3QqLCBBWE5vdGlmaWNhdGlvbiwg
UG9zdFRhcmdldCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5
KTsKICAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oTm9kZSosIEFYTm90aWZpY2F0aW9uLCBQb3N0
VGFyZ2V0ID0gVGFyZ2V0RWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkpOwot
ICAgIHZvaWQgcG9zdE5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBEb2N1bWVudCosIEFYTm90
aWZpY2F0aW9uLCBQb3N0VGFyZ2V0ID0gVGFyZ2V0RWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5
bmNocm9ub3VzbHkpOworICAgIHZvaWQgcG9zdE5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgRG9jdW1lbnQqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdldCA9IFRhcmdldEVsZW1l
bnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKIAogI2lmbmRlZiBOREVCVUcKICAg
ICB2b2lkIHNob3dJbnRlbnQoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKQEAgLTM1
NywyNSArMzYyLDI1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlZmVyVGV4dFJlcGxhY2VtZW50Tm90
aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmLCBjb25z
dCBTdHJpbmcmIHByZXZpb3VzVmFsdWUpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZU1hdGNo
ZXNUZXh0TmVhclJhbmdlKFJlZlB0cjxSYW5nZT4sIGNvbnN0IFN0cmluZyYpOwotICAgIAogCiBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0
KiwgQVhOb3RpZmljYXRpb24pOworICAgIEFYQ29yZU9iamVjdCogbm90aWZpYWJsZU9iamVjdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAgICAgdm9pZCBwbGF0Zm9ybUhhbmRsZUZvY3VzZWRVSUVs
ZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZEZvY3VzZWROb2RlLCBOb2RlKiBuZXdGb2N1c2VkTm9kZSk7
CiAKICAgICB2b2lkIHBsYXRmb3JtUGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKTsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90
aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKLSAgICB2b2lkIHBvc3RUZXh0U3RhdGVD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRp
dFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotICAgIHZvaWQg
cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQWNj
ZXNzaWJpbGl0eU9iamVjdCosIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwotICAgIHZvaWQg
cG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworICAgIHZvaWQgcG9zdFRleHRTdGF0
ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIGNvbnN0IEFYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOworICAgIHZvaWQgcG9z
dFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYVGV4
dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICB2
b2lkIHBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9s
KEFYQ29yZU9iamVjdCosIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNvbnN0IFN0cmluZyYg
aW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpOworICAgIHZvaWQgcG9z
dFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCosIEFYVGV4
dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAjZWxzZQogICAgIHN0YXRpYyBBWFRleHRDaGFuZ2Ug
dGV4dENoYW5nZUZvckVkaXRUeXBlKEFYVGV4dEVkaXRUeXBlKTsKICAgICB2b2lkIG5vZGVUZXh0
Q2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENo
YW5nZSwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGZyYW1l
TG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFY
TG9hZGluZ0V2ZW50KTsKKyAgICB2b2lkIGZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3RpZmlj
YXRpb24oQVhDb3JlT2JqZWN0KiwgQVhMb2FkaW5nRXZlbnQpOwogICAgIHZvaWQgdGV4dENoYW5n
ZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIHZvaWQgbGFiZWxDaGFuZ2VkKEVsZW1lbnQq
KTsKIApAQCAtNDEwLDcgKzQxNSw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIHNob3VsZFNraXBC
b3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsK
IAogcHJpdmF0ZToKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290V2ViQXJlYSgpOworICAg
IEFYQ29yZU9iamVjdCogcm9vdFdlYkFyZWEoKTsKIAogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBmb2N1c2VkSW1hZ2VNYXBVSUVsZW1lbnQoSFRNTEFyZWFFbGVtZW50Kik7CiAgICAg
c3RhdGljIEFYQ29yZU9iamVjdCogZm9jdXNlZE9iamVjdChEb2N1bWVudCYpOwpAQCAtNDY0LDcg
KzQ2OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogCiAgICAg
VGltZXIgbV9ub3RpZmljYXRpb25Qb3N0VGltZXI7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQ
dHI8QVhDb3JlT2JqZWN0PiwgQVhOb3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlvbnNUb1Bvc3Q7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4sIEFYTm90
aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zVG9Qb3N0OwogCiAgICAgVGltZXIgbV9wYXNzd29y
ZE5vdGlmaWNhdGlvblBvc3RUaW1lcjsKIApAQCAtNTk2LDkgKzYwMSw5IEBAIGlubGluZSBDaGFy
YWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZMaW5lKGNvbnN0
IENoYXJhY3Rlck9mCiBpbmxpbmUgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRD
aGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCkgeyByZXR1cm4gQ2hh
cmFjdGVyT2Zmc2V0KCk7IH0KIGlubGluZSBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6
cHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCkgeyBy
ZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7IH0KICNpZiBQTEFURk9STShDT0NPQSkKLWlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpw
b3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCosIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24m
KSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNv
bnN0IFN0cmluZyYsIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqLCBjb25zdCBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KK2lubGluZSB2b2lk
IEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
WENvcmVPYmplY3QqLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxh
Y2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUs
IGNvbnN0IFN0cmluZyYsIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mKSB7IH0KICNlbHNlCiBpbmxpbmUgQVhUZXh0Q2hhbmdlIEFYT2JqZWN0Q2Fj
aGU6OnRleHRDaGFuZ2VGb3JFZGl0VHlwZShBWFRleHRFZGl0VHlwZSkgeyByZXR1cm4gQVhUZXh0
SW5zZXJ0ZWQ7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxh
dGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4dENoYW5nZSwgdW5z
aWduZWQsIGNvbnN0IFN0cmluZyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAppbmRleCA3YjAy
YzIyNDljNmEzOTQ2MzE5ODM0M2EyZTQ3ODBlNDRiNTExMjEwLi4xMjhlYzA1MjNkZjJkNGQ4OGYz
N2Q3NGU5YTlkNjIyMDY1ODE2ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcApAQCAtMTMwLDEw
ICsxMzAsMTYgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cDo6ZGlkVXBkYXRlQWN0
aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCkKICAgICBBU1NFUlRfQVJHKG9wdGlvbkluZGV4LCBv
cHRpb25JbmRleCA8IHN0YXRpY19jYXN0PGludD4obV9jaGlsZHJlbi5zaXplKCkpKTsKIAogICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgIFJlZlB0cjxBWENv
cmVPYmplY3Q+IGNoaWxkID0gbV9jaGlsZHJlbltvcHRpb25JbmRleF0uZ2V0KCk7CisgICAgaWYg
KCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGlzPEFjY2Vzc2liaWxpdHlP
YmplY3Q+KG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpKSk7CisgICAgaWYgKCFpczxBY2Nl
c3NpYmlsaXR5T2JqZWN0PihtX2NoaWxkcmVuW29wdGlvbkluZGV4XS5nZXQoKSkpCisgICAgICAg
IHJldHVybjsKKyAgICBhdXRvKiBjaGlsZCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+
KG1fY2hpbGRyZW5bb3B0aW9uSW5kZXhdLmdldCgpKTsKIAotICAgIGNhY2hlLT5wb3N0Tm90aWZp
Y2F0aW9uKGNoaWxkLmdldCgpLCBkb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWEZvY3VzZWRV
SUVsZW1lbnRDaGFuZ2VkLCBUYXJnZXRFbGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7Ci0gICAg
Y2FjaGUtPnBvc3ROb3RpZmljYXRpb24oY2hpbGQuZ2V0KCksIGRvY3VtZW50KCksIEFYT2JqZWN0
Q2FjaGU6OkFYTWVudUxpc3RJdGVtU2VsZWN0ZWQsIFRhcmdldEVsZW1lbnQsIFBvc3RTeW5jaHJv
bm91c2x5KTsKKyAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbihjaGlsZCwgZG9jdW1lbnQoKSwg
QVhPYmplY3RDYWNoZTo6QVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZCwgVGFyZ2V0RWxlbWVudCwg
UG9zdFN5bmNocm9ub3VzbHkpOworICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGNoaWxkLCBk
b2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWE1lbnVMaXN0SXRlbVNlbGVjdGVkLCBUYXJnZXRF
bGVtZW50LCBQb3N0U3luY2hyb25vdXNseSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKaW5kZXggOWJmMDQ5NzhiNzEyODk2ZjYxZGNlNDhjM2JiYWEyZmFmYTczNjU2Yi4uODYwNzhi
MDc3OGJjZDkxM2VlNTFiZjA2MjliYTRhZGY1NTNlNGY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTQzNSw2ICs0MzUs
NyBAQCBwdWJsaWM6CiAgICAgRnJhbWUqIG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IERvY3VtZW50KiB0b3BEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNjcm9sbFZpZXcq
IHNjcm9sbFZpZXdBbmNlc3RvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCog
d2ViQXJlYU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBT
dHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyAxLWJhc2VkLCB0byBtYXRj
aCB0aGUgYXJpYS1sZXZlbCBzcGVjLgogICAgIHVuc2lnbmVkIGhpZXJhcmNoaWNhbExldmVsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQpAQCAtNzQ1LDkgKzc0Niw2IEBAIHByb3RlY3Rl
ZDoKICAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgbV9pc0lnbm9yZWRG
cm9tUGFyZW50RGF0YSB7IH07CiAgICAgYm9vbCBtX2NoaWxkcmVuRGlydHkgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9zdWJ0cmVlRGlydHkgeyBmYWxzZSB9OwotI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgYm9vbCBtX2lzb2xhdGVkVHJlZU5vZGVJbml0aWFsaXpl
ZCB7IGZhbHNlIH07Ci0jZW5kaWYKIAogICAgIHZvaWQgc2V0SXNJZ25vcmVkRnJvbVBhcmVudERh
dGEoQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhJiBkYXRhKSBvdmVycmlkZSB7
IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGEgPSBkYXRhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmgKaW5kZXggMDcyMDMxOTA3ZWE0MzhjODM5Yjk5YmNkMzEyYzJiMTEwMmI3Yzg4ZS4uZDU5MmZj
MzA0MzUyMTgxNmZhZTBjNGRhMTE5NWQ5NjIzNThhY2ZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmgKQEAgLTgzNyw2ICs4MzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFtZSogbWFpbkZy
YW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogc2Nyb2xsVmlld0FuY2VzdG9yKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiB3ZWJBcmVhT2JqZWN0KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgPSAwOwogICAgIC8vIDEt
YmFzZWQsIHRvIG1hdGNoIHRoZSBhcmlhLWxldmVsIHNwZWMuCiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCA5YmZhZjE1
NWFkYjIzMmE1NjYzZjU4Y2IwOGMxMmMxMzNlMmMzNTFjLi41YWQ2YmUxZTUwY2IzYWExMDFlMDZm
OGM0YzI3NDljZmQzZTJjZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBAIC00MiwxMSArNDIsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCk7CiAgICAgdm9pZCBk
ZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKikgb3ZlcnJp
ZGU7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB3ZWJBcmVhT2JqZWN0KCkgY29uc3Q7Ci0K
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoU2Nyb2xsVmll
dyopOwotICAgIAorCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Ny
b2xsYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9p
bnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCmluZGV4IGZlMTI2MGQ3ZmRjZjY4ODk4YWQ4
NTU3ODRiMDUxZDNkNzIxZDEwNmYuLjdlOWZmMzc2NTNjZTQ3ZTc1NjExNWYyMjNmYjkxNTM4ZmZl
YmM1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2Jq
ZWN0Q2FjaGVBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FY
T2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
Ojpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iamUKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUod3JhcHBlciwgZGV0YWlsLmRhdGEoKSwg
b2Zmc2V0VG9FbWl0LCB0ZXh0VG9FbWl0Lmxlbmd0aCgpLCB0ZXh0VG9FbWl0LnV0ZjgoKS5kYXRh
KCkpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1O
b3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWExvYWRpbmdFdmVudCBs
b2FkaW5nRXZlbnQpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZv
cm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYTG9hZGluZ0V2ZW50IGxvYWRp
bmdFdmVudCkKIHsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5k
ZXggZjExYmZhOGUwZmFmOTk4NTdmYzFhZTgxNmI2NjdhYWVlMTU0NWJlNS4uNDMyMzgzZjBmM2Y2
ZjIzZGY0MDA2NjZjNDlhNzRlNzg5M2M2MGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCkBAIC05OCwyNyArOTgsMjcg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2Jq
ZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG4KICAgICAgICAgW29iai0+d3JhcHBlcigpIGFjY2Vz
c2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uU3RyaW5nXTsKIH0KIAotdm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4
dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIGNv
bnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpCiB7
CiAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgQVhTZWxlY3RlZFRleHRDaGFu
Z2VkKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikKK3ZvaWQgQVhPYmplY3RD
YWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVj
dCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBv
c2l0aW9uJikKIHsKICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBBWFZhbHVl
Q2hhbmdlZCk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRSZXBsYWNlbWVudFBs
YXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgQVhUZXh0RWRp
dFR5cGUsIGNvbnN0IFN0cmluZyYsIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mKQordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2Vt
ZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRU
eXBlLCBjb25zdCBTdHJpbmcmLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJikKIHsKICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0
LCBBWFZhbHVlQ2hhbmdlZCk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRSZXBs
YWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCYpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1lbnRQ
bGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFYQ29yZU9iamVjdCogb2JqZWN0LCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYp
CiB7CiAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgQVhWYWx1ZUNoYW5nZWQp
OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3Rp
ZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhMb2FkaW5nRXZl
bnQgbG9hZGluZ0V2ZW50KQordm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBs
YXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhMb2FkaW5n
RXZlbnQgbG9hZGluZ0V2ZW50KQogewogICAgIGlmICghYXhGcmFtZU9iamVjdCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCA1MmViNDBmMWE4YmVhMjA1
MWE4MDBlZTZhNmI2MDIwZmUyYjBhNzE3Li5lOTU1NjEyYzYwYTUzYzJjMDU2NDAxZGNmN2YwYWFi
ZDUxYjJkMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMTcyLDYgKzE3Miw3
IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJpYnV0ZURhdGEoQVhDb3Jl
T2JqZWN0JiBvYmplY3QsIGJvb2wgaXNSb290CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OkV4cG9zZXNUaXRsZVVJRWxlbWVudCwgb2JqZWN0LmV4cG9zZXNUaXRsZVVJRWxlbWVudCgp
KTsKICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VmVydGljYWxTY3JvbGxC
YXIsIG9iamVjdC5zY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uOjpWZXJ0aWNhbCkp
OwogICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpIb3Jpem9udGFsU2Nyb2xs
QmFyLCBvYmplY3Quc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbjo6SG9yaXpvbnRh
bCkpOworICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpXZWJBcmVhT2JqZWN0
LCBvYmplY3Qud2ViQXJlYU9iamVjdCgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6QVJJQVJvbGVBdHRyaWJ1dGUsIHN0YXRpY19jYXN0PGludD4ob2JqZWN0LmFyaWFSb2xlQXR0
cmlidXRlKCkpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29tcHV0ZWRMYWJl
bCwgb2JqZWN0LmNvbXB1dGVkTGFiZWwoKSk7CiAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OlBsYWNlaG9sZGVyVmFsdWUsIG9iamVjdC5wbGFjZWhvbGRlclZhbHVlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5oCmluZGV4IGNlNjIxOTc0ZGMyZWNlYjY0Njg4ZTcyMTVkNDZhMTBkOTMw
NDJkYmYuLmQyMjJmNzQ0YWM1MGZiODkzYzM5ZDQ4YmMxMDQyNDc1YzI2MmJhMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmgKQEAgLTMwMiw2ICszMDIsNyBAQCBwcml2YXRlOgogICAgICAgICBW
YWxpZGF0aW9uTWVzc2FnZSwKICAgICAgICAgVmVydGljYWxTY3JvbGxCYXIsCiAgICAgICAgIFZp
c2libGVDaGlsZHJlbiwKKyAgICAgICAgV2ViQXJlYU9iamVjdCwKICAgICB9OwogICAgIAogICAg
IHR5cGVkZWYgc3RkOjpwYWlyPEFYSUQsIEFYSUQ+IEFjY2Vzc2liaWxpdHlJc29sYXRlZFRyZWVN
YXRoTXVsdGlzY3JpcHRQYWlyOwpAQCAtNzYyLDYgKzc2Myw3IEBAIHByaXZhdGU6CiAgICAgRnJh
bWUqIG1haW5GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIERvY3VtZW50KiB0b3BEb2N1bWVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXdBbmNlc3Rvcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFYQ29yZU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpX
ZWJBcmVhT2JqZWN0KTsgfQogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0ZXh0Q2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQWNjZXNzaWJp
bGl0eVJvbGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IGY1ZGExNmEwZDZkNmYzODZmMTU4M2M4
ZDkzOTUyY2JmMDcxOGU2NjUuLmY5MzlhYjliOTNiYTZiMmY5ZjEyYzI4ZDQ4NDNkMDM3ZWU4Mjdk
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbQpAQCAtMjgsOCArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFkpICYmIFBMQVRGT1JNKE1BQykKIAotI2ltcG9ydCAiQVhJc29sYXRlZE9iamVjdC5oIgotI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxl
LmgiCiAjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKICNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLmgiCkBAIC0zNzAsNyArMzY4LDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmosIEFYTm90aWZpY2F0
aW9uIG4KICAgICBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8ob2JqLT53cmFwcGVyKCks
IG1hY05vdGlmaWNhdGlvbiwgbmlsLCBza2lwU3lzdGVtTm90aWZpY2F0aW9uKTsKIH0KIAotdm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCYgaW50ZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVP
YmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludGVudCwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewogICAgIGlmICghb2JqZWN0KQogICAg
ICAgICBvYmplY3QgPSByb290V2ViQXJlYSgpOwpAQCAtNDE2LDcgKzQxNCw3IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vz
c2liaWxpdHlPYmplY3QqCiAgICAgaWYgKGlkIHdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKSkK
ICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDp3cmFwcGVyIGZvcktleTpOU0FjY2Vzc2liaWxp
dHlUZXh0Q2hhbmdlRWxlbWVudF07CiAKLSAgICBpZiAoYXV0byByb290ID0gcm9vdFdlYkFyZWEo
KSkgeworICAgIGlmIChhdXRvKiByb290ID0gcm9vdFdlYkFyZWEoKSkgewogICAgICAgICBBWFBv
c3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8ocm9vdFdlYkFyZWEoKS0+d3JhcHBlcigpLCBOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZFRleHRDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7CiAg
ICAgICAgIGlmIChyb290LT53cmFwcGVyKCkgIT0gb2JqZWN0LT53cmFwcGVyKCkpCiAgICAgICAg
ICAgICBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8ob2JqZWN0LT53cmFwcGVyKCksIE5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsK
QEAgLTQyNSw3ICs0MjMsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFu
Z2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIFt1c2VySW5m
byByZWxlYXNlXTsKIH0KIAotc3RhdGljIHZvaWQgYWRkVGV4dE1hcmtlckZvcihOU011dGFibGVE
aWN0aW9uYXJ5KiBjaGFuZ2UsIEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK3N0YXRpYyB2b2lkIGFkZFRleHRNYXJrZXJGb3IoTlNN
dXRhYmxlRGljdGlvbmFyeSogY2hhbmdlLCBBWENvcmVPYmplY3QmIG9iamVjdCwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTQzMywxNCArNDMxLDE0IEBAIHN0YXRpYyB2b2lkIGFkZFRleHRN
YXJrZXJGb3IoTlNNdXRhYmxlRGljdGlvbmFyeSogY2hhbmdlLCBBY2Nlc3NpYmlsaXR5T2JqZWN0
JiBvCiAgICAgICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OnRleHRNYXJrZXIgZm9yS2V5Ok5TQWNjZXNz
aWJpbGl0eVRleHRDaGFuZ2VWYWx1ZVN0YXJ0TWFya2VyXTsKIH0KIAotc3RhdGljIHZvaWQgYWRk
VGV4dE1hcmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFjY2Vzc2liaWxpdHlP
YmplY3QmIG9iamVjdCwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRDb250cm9sKQor
c3RhdGljIHZvaWQgYWRkVGV4dE1hcmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2Us
IEFYQ29yZU9iamVjdCYgb2JqZWN0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENv
bnRyb2wpCiB7CiAgICAgaWYgKGlkIHRleHRNYXJrZXIgPSBbb2JqZWN0LndyYXBwZXIoKSB0ZXh0
TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6dGV4dENvbnRyb2xdKQogICAgICAg
ICBbY2hhbmdlIHNldE9iamVjdDp0ZXh0TWFya2VyIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0
Q2hhbmdlVmFsdWVTdGFydE1hcmtlcl07CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUZXh0TWFy
a2VyVGFyZ2V0VHlwZT4KLXN0YXRpYyBOU0RpY3Rpb25hcnkgKnRleHRSZXBsYWNlbWVudENoYW5n
ZURpY3Rpb25hcnkoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0LCBBWFRleHRFZGl0VHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgVGV4dE1hcmtlclRhcmdldFR5cGUmIG1hcmtlclRh
cmdldCkKK3N0YXRpYyBOU0RpY3Rpb25hcnkgKnRleHRSZXBsYWNlbWVudENoYW5nZURpY3Rpb25h
cnkoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFYVGV4dEVkaXRUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBUZXh0TWFya2VyVGFyZ2V0VHlwZSYgbWFya2VyVGFyZ2V0KQogewogICAgIE5T
U3RyaW5nICp0ZXh0ID0gKE5TU3RyaW5nICopc3RyaW5nOwogICAgIE5TVUludGVnZXIgbGVuZ3Ro
ID0gW3RleHQgbGVuZ3RoXTsKQEAgLTQ1Nyw3ICs0NTUsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5
ICp0ZXh0UmVwbGFjZW1lbnRDaGFuZ2VEaWN0aW9uYXJ5KEFjY2Vzc2liaWxpdHlPYmplY3QmIG9i
amVjdAogICAgIHJldHVybiBbY2hhbmdlIGF1dG9yZWxlYXNlXTsKIH0KIAotdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJp
bGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9i
amVjdCwgQVhUZXh0RWRpdFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlmICghdGV4dC5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDY1LDcgKzQ2Myw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAg
ICAgcG9zdFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgQVhUZXh0
RWRpdFR5cGVVbmtub3duLCBlbXB0eVN0cmluZygpLCB0eXBlLCB0ZXh0LCBwb3NpdGlvbik7CiB9
CiAKLXN0YXRpYyB2b2lkIHBvc3RVc2VySW5mb0ZvckNoYW5nZXMoQWNjZXNzaWJpbGl0eU9iamVj
dCYgcm9vdFdlYkFyZWEsIEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCwgTlNNdXRhYmxlQXJy
YXkqIGNoYW5nZXMpCitzdGF0aWMgdm9pZCBwb3N0VXNlckluZm9Gb3JDaGFuZ2VzKEFYQ29yZU9i
amVjdCYgcm9vdFdlYkFyZWEsIEFYQ29yZU9iamVjdCYgb2JqZWN0LCBOU011dGFibGVBcnJheSog
Y2hhbmdlcykKIHsKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo0XTsKICAgICBbdXNlckluZm8g
c2V0T2JqZWN0OkAocGxhdGZvcm1DaGFuZ2VUeXBlRm9yV2ViQ29yZUNoYW5nZVR5cGUoQVhUZXh0
U3RhdGVDaGFuZ2VUeXBlRWRpdCkpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVDaGFu
Z2VUeXBlS2V5XTsKQEAgLTQ4Miw3ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBwb3N0VXNlckluZm9G
b3JDaGFuZ2VzKEFjY2Vzc2liaWxpdHlPYmplY3QmIHJvb3RXZWJBcmVhLCBBY2Nlc3NpYmlsaQog
ICAgIFt1c2VySW5mbyByZWxlYXNlXTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4
dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0LCBBWFRleHRFZGl0VHlwZSBkZWxldGlvblR5cGUsIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRl
eHQsIEFYVGV4dEVkaXRUeXBlIGluc2VydGlvblR5cGUsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRU
ZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQordm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBv
YmplY3QsIEFYVGV4dEVkaXRUeXBlIGRlbGV0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBkZWxldGVk
VGV4dCwgQVhUZXh0RWRpdFR5cGUgaW5zZXJ0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBpbnNlcnRl
ZFRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgaWYgKCFvYmpl
Y3QpCiAgICAgICAgIG9iamVjdCA9IHJvb3RXZWJBcmVhKCk7CkBAIC00OTksNyArNDk3LDcgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRp
b24oQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICBbY2hhbmdlcyByZWxlYXNlXTsKIH0KIAotdm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb25G
b3JUZXh0Q29udHJvbChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGNvbnN0IFN0cmluZyYg
ZGVsZXRlZFRleHQsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudCYgdGV4dENvbnRyb2wpCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVw
bGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEFYQ29yZU9iamVjdCog
b2JqZWN0LCBjb25zdCBTdHJpbmcmIGRlbGV0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGluc2VydGVk
VGV4dCwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRDb250cm9sKQogewogICAgIGlm
ICghb2JqZWN0KQogICAgICAgICBvYmplY3QgPSByb290V2ViQXJlYSgpOwpAQCAtNTE2LDExICs1
MTQsMTEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1O
b3RpZmljYXRpb25Gb3JUZXh0Q29udHJvbChBY2Nlc3MKICAgICBbY2hhbmdlcyByZWxlYXNlXTsK
IH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpmcmFtZUxvYWRpbmdFdmVudFBsYXRmb3JtTm90aWZp
Y2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4RnJhbWVPYmplY3QsIEFYTG9hZGluZ0V2ZW50
IGxvYWRpbmdFdmVudCkKK3ZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIGF4RnJhbWVPYmplY3QsIEFYTG9hZGluZ0V2
ZW50IGxvYWRpbmdFdmVudCkKIHsKICAgICBpZiAoIWF4RnJhbWVPYmplY3QpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIGlmIChsb2FkaW5nRXZlbnQgPT0gQVhMb2FkaW5nRmluaXNoZWQg
JiYgYXhGcmFtZU9iamVjdC0+ZG9jdW1lbnQoKSA9PSBheEZyYW1lT2JqZWN0LT50b3BEb2N1bWVu
dCgpKQogICAgICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oYXhGcmFtZU9iamVjdCwgQVhM
b2FkQ29tcGxldGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS93aW4vQVhPYmplY3RDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcAppbmRleCAzZjU1NTg2ODU5NzczMTQxYmMxNWVlYWE3
ZWM3ODZlOThjZTMxZDYwLi44MWQ1MjExYTdmNDg2MjYyMzFmNTMyZjExMTRkNDM5NWZjYzhjM2E3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVjdENh
Y2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L3dpbi9BWE9iamVj
dENhY2hlV2luLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9k
ZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhU
CiB7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTG9hZGluZ0V2ZW50IG5vdGlm
aWNhdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iaiwgQVhMb2FkaW5nRXZlbnQgbm90aWZpY2F0aW9u
KQogewogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViS2l0V2ViUGFnZUFjY2Vzc2liaWxpdHlP
YmplY3QuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dlYktpdFdl
YlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAwOTFmYjhmMjQxNDgzM2U5ZTkxMTk3
MmU4YTk2MTBmMjI0NjBiZWM3Li45MjNhMDY2NDg3MDcwYTRjNmZlOTU1OTEwYjMwNDM0YWUzNTE3
NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2Vi
S2l0V2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2F0ay9XZWJLaXRXZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiByb290
V2ViQXJlYVdyYXBwZXIoQVhDb3JlT2JqZWN0JiByb290T2JqZWN0KQogICAgIGlmICghcm9vdE9i
amVjdC5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgaWYgKGF1dG8qIHdlYkFyZWFPYmplY3QgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldz4ocm9vdE9iamVjdCkud2ViQXJlYU9iamVjdCgpKQorICAgIGlmIChhdXRvKiB3
ZWJBcmVhT2JqZWN0ID0gcm9vdE9iamVjdC53ZWJBcmVhT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biB3ZWJBcmVhT2JqZWN0LT53cmFwcGVyKCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>