<?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>219423</bug_id>
          
          <creation_ts>2020-12-02 00:58:59 -0800</creation_ts>
          <short_desc>[GPU Process] Allow CSSFilters and SVGFilters to use RemoteImageBuffers if GPU DOM rendering is enabled</short_desc>
          <delta_ts>2022-01-13 10:59:44 -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>Layout and Rendering</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>231253</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1711273</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-02 00:58:59 -0800</bug_when>
    <thetext>The filters are drawing commands and filter effects commands. The first step is to move the drawing commands to the GPU Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711277</commentid>
    <comment_count>1</comment_count>
      <attachid>415198</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-02 01:29:03 -0800</bug_when>
    <thetext>Created attachment 415198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711346</commentid>
    <comment_count>2</comment_count>
      <attachid>415198</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-02 08:31:16 -0800</bug_when>
    <thetext>Comment on attachment 415198
Patch

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

&gt; Source/WebCore/platform/graphics/filters/Filter.h:37
&gt; -    Filter(const AffineTransform&amp; absoluteTransform, float filterScale = 1)
&gt; +    Filter(const AffineTransform&amp; absoluteTransform, float filterScale = 1, HostWindow* hostWindow = nullptr)
&gt;          : m_absoluteTransform(absoluteTransform)

I don&apos;t think this is the right approach. Filter is much too low-level a class to deal with HostWindow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711378</commentid>
    <comment_count>3</comment_count>
      <attachid>415198</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-02 10:26:38 -0800</bug_when>
    <thetext>Comment on attachment 415198
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/filters/Filter.h:37
&gt;&gt;          : m_absoluteTransform(absoluteTransform)
&gt; 
&gt; I don&apos;t think this is the right approach. Filter is much too low-level a class to deal with HostWindow.

ImageBuffer deals with HostWindow and ImageBuffer is even in a lower level than Filter because Filter owns and creates the ImageBuffer. So why is it okay to make imageBuffer deal with HostWindow but not for the Filter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711385</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-02 10:43:06 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #3)
&gt; Comment on attachment 415198 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=415198&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/filters/Filter.h:37
&gt; &gt;&gt;          : m_absoluteTransform(absoluteTransform)
&gt; &gt; 
&gt; &gt; I don&apos;t think this is the right approach. Filter is much too low-level a class to deal with HostWindow.
&gt; 
&gt; ImageBuffer deals with HostWindow and ImageBuffer is even in a lower level
&gt; than Filter because Filter owns and creates the ImageBuffer. So why is it
&gt; okay to make imageBuffer deal with HostWindow but not for the Filter?

Filter is a lightweight mostly-data class which is context-free (which is a good thing). If it has a HostWindow then it&apos;s encumbered with more state.

If we need a usage of HostWindow, it should be passed in as an argument to functions where Filters create ImageBuffers, but not stored as a member variable.

And this would look much nicer if what was passed in was an ImageBufferFactory, not a HostWindow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711636</commentid>
    <comment_count>5</comment_count>
      <attachid>415286</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-03 02:23:19 -0800</bug_when>
    <thetext>Created attachment 415286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711704</commentid>
    <comment_count>6</comment_count>
      <attachid>415286</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-03 09:51:56 -0800</bug_when>
    <thetext>Comment on attachment 415286
Patch

Let&apos;s make adding ImageBufferFactory its own patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711770</commentid>
    <comment_count>7</comment_count>
      <attachid>415327</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-03 12:47:48 -0800</bug_when>
    <thetext>Created attachment 415327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713069</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-09 00:59:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/72128302&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830630</commentid>
    <comment_count>9</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-13 10:59:44 -0800</bug_when>
    <thetext>The approach of this patch was incorrect. This correct approach was taken by bug 231253.

*** This bug has been marked as a duplicate of bug 231253 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415198</attachid>
            <date>2020-12-02 01:29:03 -0800</date>
            <delta_ts>2020-12-03 02:23:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219423-20201202012902.patch</filename>
            <type>text/plain</type>
            <size>28059</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYzMTBmNTRkYTBiZjIx
ZDlhNWJkMGRmNDU5NWI3YmJjOGI5MjhiOC4uYzc5NTFiMGI5YWM1Y2Y4YWNkMzg5NmQ1OWZkYmY2
M2RmOTBjNDM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTEyLTAyICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
QWxsb3cgQ1NTRmlsdGVycyBhbmQgU1ZHRmlsdGVycyB0byB1c2UgUmVtb3RlSW1hZ2VCdWZmZXJz
IGlmIEdQVSBET00gcmVuZGVyaW5nIGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG1lbWJlciBvZiB0eXBlIEhvc3RXaW5kb3cg
dG8gdGhlIEZpbHRlciBjbGFzcy4gVXNlIHRoaXMgbWVtYmVyIHRvCisgICAgICAgIGNyZWF0ZSBh
IHJlbW90ZSBJbWFnZUJ1ZmZlciBpZiBHUFUgRE9NIHJlbmRlcmluZyBpcyBlbmFibGVkLgorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpo
b3N0V2luZG93IGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNF
bGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRvSW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpob3N0V2luZG93
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlRGF0YVRvQ29s
b3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1
ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0
ZUltYWdlQnVmZmVyUmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRl
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBw
aW5nVG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFza0FuZFN3YXBDb250ZXh0
Rm9yVGV4dEdyYWRpZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2Vy
OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm46OmNyZWF0ZVRpbGVJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpTVkdGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5oOgorCiAyMDIwLTEyLTAxICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNn
XzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZm9yIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRl
ZCBzdHJpbmcgdGVzdHMgaW4gaXNvbGF0ZWQgbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDY0NmVlN2VlYzAzM2M5MDM5M2VmMDM4ZTQzN2UwNWM2ZmVjY2M5ZmQuLjQwZDBlYjI5MDRk
NTUyYWI4MDc4OGRiNDkwMWI2YzQ0ODNiMTM5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMTg4Myw2ICsxODgzLDExIEBAIFBhZ2UqIERvY3VtZW50OjpwYWdlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9mcmFtZSA/IG1fZnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiB9CiAKK0hvc3RXaW5k
b3cqIERvY3VtZW50Ojpob3N0V2luZG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdmlldygpICYm
IHZpZXcoKS0+cm9vdCgpID8gdmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7
Cit9CisKIFJlZjxSYW5nZT4gRG9jdW1lbnQ6OmNyZWF0ZVJhbmdlKCkKIHsKICAgICByZXR1cm4g
UmFuZ2U6OmNyZWF0ZSgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDg0ZTU4Y2MxMzVk
ZGIyNWRhM2E3YTgzOGU3NGMzZTc4ZjQwN2M5ZDcuLmU0MzVmMDU2ZWY1NTBkYTRkOGMzNzBhNzMx
YTFmODdmNGUxZTlkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjAsNiArMTYwLDcgQEAg
Y2xhc3MgSGlnaGxpZ2h0UmVnaXN0ZXI7CiBjbGFzcyBIaXRUZXN0TG9jYXRpb247CiBjbGFzcyBI
aXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CitjbGFzcyBIb3N0V2luZG93Owog
Y2xhc3MgSWRsZUNhbGxiYWNrQ29udHJvbGxlcjsKIGNsYXNzIElkbGVSZXF1ZXN0Q2FsbGJhY2s7
CiBjbGFzcyBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ7CkBAIC01NjAsNiArNTYxLDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVWaWV3KiB2aWV3KCkgY29uc3Q7IC8v
IENhbiBiZSBudWxsLgogICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2UqIHBhZ2UoKSBjb25zdDsgLy8g
Q2FuIGJlIG51bGwuCisgICAgSG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0OyAvLyBDYW4g
YmUgbnVsbC4KICAgICBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBt
X3NldHRpbmdzLmdldCgpOyB9CiAgICAgRWRpdGluZ0JlaGF2aW9yIGVkaXRpbmdCZWhhdmlvcigp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4
IDE2OWNhYTkwMDI0ZDI2NzcyMzA1MDYyZjU5OGQxMmNjZGRiYWIzZmYuLmI5N2IyZjM1Y2EzN2Vm
YTdlMjEwNTYyMGIzOWFlNTk1MzVjMjAwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCkBAIC05MzQsMTIgKzkzNCwxMCBAQCB2b2lkIEhUTUxDYW52YXNFbGVt
ZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWln
aHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBob3N0V2luZG93ID0gKGRvY3VtZW50
KCkudmlldygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290KCkpID8gZG9jdW1lbnQoKS52aWV3
KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKLQogICAgIGF1dG8gcmVuZGVyaW5n
TW9kZSA9IHNob3VsZEFjY2VsZXJhdGUoc2l6ZSgpKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJh
dGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKICAgICAvLyBGSVhNRTogQWRkIGEg
bmV3IHNldHRpbmcgZm9yIERpc3BsYXlMaXN0IGRyYXdpbmcgb24gY2FudmFzLgogICAgIGF1dG8g
dXNlRGlzcGxheUxpc3QgPSBtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmcudmFsdWVPcihkb2N1bWVu
dCgpLnNldHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpKSA/IFNob3VsZFVzZURp
c3BsYXlMaXN0OjpZZXMgOiBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm87Ci0gICAgc2V0SW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIHVzZURpc3Bs
YXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdykpOworICAgIHNldEltYWdlQnVmZmVyKEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCByZW5kZXJpbmdNb2RlLCB1c2VEaXNwbGF5TGlzdCwgUmVu
ZGVyaW5nUHVycG9zZTo6Q2FudmFzLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIGRvY3VtZW50KCkuaG9zdFdpbmRvdygpKSk7CiAKICAgICBpZiAoYnVmZmVyKCkgJiYg
YnVmZmVyKCktPmRyYXdpbmdDb250ZXh0KCkpCiAgICAgICAgIGJ1ZmZlcigpLT5kcmF3aW5nQ29u
dGV4dCgpLT5zZXRUcmFja3NEaXNwbGF5TGlzdFJlcGxheShtX3RyYWNrc0Rpc3BsYXlMaXN0UmVw
bGF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5t
bQppbmRleCAzOGRlODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi5mNjBlM2Qx
YjNlYTkzMGQ1ZThiZGNmZTYzZWE2OTgxMTFhMDMyOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0yNzUsNyArMjc1LDcgQEAgSW1h
Z2VCdWZmZXIqIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpvdXRwdXQoKSBjb25zdAog
dm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihG
aWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCiB7CiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0g
SW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKGxhc3RFZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5z
aXplKCkpOwotICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNs
YW1wZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgbGFzdEVmZmVjdC5maWx0ZXIo
KS5maWx0ZXJTY2FsZSgpLCBsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSk7CisgICAgbV9v
dXRwdXRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIFJlbmRl
cmluZ01vZGU6OkFjY2VsZXJhdGVkLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmlu
Z1B1cnBvc2U6OkRPTSwgbGFzdEVmZmVjdC5maWx0ZXIoKS5maWx0ZXJTY2FsZSgpLCBsYXN0RWZm
ZWN0LnJlc3VsdENvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBsYXN0RWZmZWN0LmZp
bHRlcigpLmhvc3RXaW5kb3coKSk7CiAgICAgCiAgICAgaWYgKCFtX291dHB1dEltYWdlQnVmZmVy
KSB7CiAgICAgICAgIGNsZWFyUmVzdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKaW5kZXggYWZiZTcwNmFkZGMyMjdkYTEw
Y2I3ODgyODg4NmMxMjliMTkyNDFjYy4uZmRiOTlhYWQ4OTg2YjVhYTFkOTYwODlhNmJkNDVhYjNl
NjkwN2I4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKICAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29s
dXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAg
ICB9CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgQ29sb3JTcGFjZTo6U1JHQiwgZmlsdGVyKCku
cmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgQ29sb3JTcGFjZTo6U1JH
QiwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpLCBmaWx0ZXIoKS5ob3N0V2luZG93KCkpOwogICAg
IGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCmluZGV4IGEyZDk5NzkzYjBkYjIy
NThiYzQ3NmRkY2MyOWMwY2UyNjExMGJjMWYuLjkzNWE4N2Q4YTM0MTYwNGE0NGE0NDk3N2IzOTI2
NTc3ZmU3NWE5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXIuaApAQCAtMjksMTIgKzI5LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZpbHRlckVmZmVjdDsKK2NsYXNzIEhvc3RXaW5kb3c7CiAKIGNsYXNzIEZpbHRl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlcj4gewogcHVibGljOgotICAgIEZpbHRlcihjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBmbG9hdCBmaWx0ZXJTY2FsZSA9
IDEpCisgICAgRmlsdGVyKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0s
IGZsb2F0IGZpbHRlclNjYWxlID0gMSwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IG51bGxwdHIp
CiAgICAgICAgIDogbV9hYnNvbHV0ZVRyYW5zZm9ybShhYnNvbHV0ZVRyYW5zZm9ybSkKICAgICAg
ICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQorICAgICAgICAsIG1faG9zdFdpbmRvdyho
b3N0V2luZG93KQogICAgIHsgfQogICAgIHZpcnR1YWwgfkZpbHRlcigpID0gZGVmYXVsdDsKIApA
QCAtNTIsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRSZW5kZXJp
bmdNb2RlKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSBy
ZW5kZXJpbmdNb2RlOyB9CiAKKyAgICBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9ob3N0V2luZG93OyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGaWx0ZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NTU0ZpbHRlcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTczLDYgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBB
ZmZpbmVUcmFuc2Zvcm0gbV9hYnNvbHV0ZVRyYW5zZm9ybTsKICAgICBSZW5kZXJpbmdNb2RlIG1f
cmVuZGVyaW5nTW9kZSB7IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQgfTsKICAgICBmbG9h
dCBtX2ZpbHRlclNjYWxlIHsgMSB9OworICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdyB7IG51
bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApp
bmRleCA1YmRhZGIyZmQ4ZDAxNjE0YzAxZmYwNzQ3MTM5ODBlOWFlZWRiNzI1Li4wMjE1YzM4ODM4
ZjkzMDViOGQ3MTk2N2NkZDgxMmEyYWRjMzhlOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0y
NzMsNyArMjczLDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1
bHQoKQogICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQogICAgICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBtX2ZpbHRlci5yZW5kZXJp
bmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSk7Cisg
ICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgU2hvdWxkVXNlRGlzcGxh
eUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIG1fZmlsdGVyLmZpbHRlclNjYWxlKCks
IG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBtX2ZpbHRlci5ob3N0V2lu
ZG93KCkpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBGaWx0ZXJFZmZl
Y3Q6OmNvbnZlcnRJbWFnZURhdGFUb0NvbG9yU3BhY2UoQ29sb3JTcGFjZSB0YXJnZXRDbwogICAg
IEludFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIGlucHV0RGF0YS5zaXplKCkpOwog
ICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShpbnB1
dERhdGEuc2l6ZSgpKTsKICAgICAvLyBDcmVhdGUgYW4gSW1hZ2VCdWZmZXIgdG8gc3RvcmUgaW5j
b21pbmcgSW1hZ2VEYXRhCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNs
YW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxl
KCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCBtX2ZpbHRlci5maWx0ZXJT
Y2FsZSgpLCBvcGVyYXRpbmdDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgbV9maWx0
ZXIuaG9zdFdpbmRvdygpKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgYnVmZmVyLT5wdXRJbWFnZURhdGEob3V0cHV0Rm9ybWF0LCBpbnB1dERhdGEsIGRl
c3RpbmF0aW9uUmVjdCk7CkBAIC00NDksNyArNDQ5LDcgQEAgUmVmUHRyPEltYWdlRGF0YT4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoQ29sb3JTcGFjZSB0YXJn
ZXQKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNp
emUocmVjdC5zaXplKCkpOwogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB3aXRoIHRoZSBj
b3JyZWN0IGNvbG9yIHNwYWNlIGFuZCB1dGlsaXplIENHIHRvIGhhbmRsZSBjb2xvciBzcGFjZSBj
b252ZXJzaW9uCi0gICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNj
YWxlKCksIHRhcmdldENvbG9yU3BhY2UpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBT
aG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgbV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBtX2Zp
bHRlci5ob3N0V2luZG93KCkpOwogICAgIGlmICghY29udmVydGVkQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAvLyBDb2xvciBzcGFjZSBjb252ZXJzaW9uIGhhcHBlbnMgaW50
ZXJuYWxseSB3aGVuIGRyYXdpbmcgZnJvbSBvbmUgaW1hZ2UgYnVmZmVyIHRvIGFub3RoZXIKQEAg
LTU1NCw3ICs1NTQsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1
ZmZlclJlc3VsdCgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRmxvYXRTaXplIGNs
YW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Qu
c2l6ZSgpKTsKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShj
bGFtcGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UpOworICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIFNo
b3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCBtX2ZpbHRlci5m
aWx0ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbV9m
aWx0ZXIuaG9zdFdpbmRvdygpKTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCBkMmE4YTg5
ZTNlMDRlNGM1ZDg5ZmJlZDMwNTYxNjgyNTBjOGJkOTBkLi4zZTNmZmMxM2Q5ZDBmMWM4N2UxMzVi
NjhhYmI5OTI3NjM4M2ExMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNw
cApAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgQ1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4CiAjZWxzZQogICAg
ICAgICBVTlVTRURfUEFSQU0odGFyZ2V0Q29udGV4dCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUg
bW9kZSA9IG1fZmlsdGVyUmVuZGVyZXIgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IHJl
bmRlcmluZ01vZGUoKTsKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0
ZShsb2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSkpOworICAgICAgICBzZXRTb3VyY2VJ
bWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBTaG91bGRVc2VEaXNw
bGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgZmlsdGVyU2NhbGUoKSwgQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KCkpKTsKICNlbmRpZgog
ICAgIH0KICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwCmluZGV4IDM4MzgzN2RhZjJjOTMxYThhNWQ1NDgzOGJhYzQ4ZmMyNmI0ODc5ZDEuLmZlNWU5
NWI1OGRkYjlkNjJhM2Y5NzZkZDlkOWUwYjdhNmJjOWUyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAK
QEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlD
bGlwcGluZ1RvQ29udGV4dChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgYwogICAgIEFmZmluZVRy
YW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0
ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKICAg
ICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFsaWRGb3JHZW9tZXRyeShvYmplY3RCb3VuZGluZ0JveCwg
YWJzb2x1dGVUcmFuc2Zvcm0pKSB7CiAgICAgICAgIC8vIEZJWE1FICgxNDk0NjkpOiBUaGlzIGlt
YWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBN
YWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBjbGlwcGluZywgdGhvdWdo
LgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFj
ZTo6U1JHQiwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOworICAgICAg
ICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZTo6U1JHQiwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZG9jdW1lbnQoKS5ob3N0V2luZG93KCksICZj
b250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMTJlN2YxNWQ2MzJkNzZkOTlmNmJhYmE5MzhkMGQ5
ZTI2MzRkOGU4MC4uYWVkMWYzM2IxZDYwMWVkYjRlN2ZjYzMzNmQ1ZDBiZTgyM2MyMTNkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAKQEAgLTE0NSw3ICsxNDUsOCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5k
ZQogCiAgICAgLy8gQ3JlYXRlIHRoZSBTVkdGaWx0ZXIgb2JqZWN0LgogICAgIGJvb2wgcHJpbWl0
aXZlQm91bmRpbmdCb3hNb2RlID0gZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCkgPT0g
U1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwotICAgIGZpbHRl
ckRhdGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckRhdGEtPnNoZWFyRnJlZUFi
c29sdXRlVHJhbnNmb3JtLCBhYnNvbHV0ZURyYXdpbmdSZWdpb24sIHRhcmdldEJvdW5kaW5nQm94
LCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUpOworICAg
IGF1dG8gaG9zdFdpbmRvdyA9IHJlbmRlcmVyLmRvY3VtZW50KCkuaG9zdFdpbmRvdygpOworICAg
IGZpbHRlckRhdGEtPmZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGZpbHRlckRhdGEtPnNoZWFy
RnJlZUFic29sdXRlVHJhbnNmb3JtLCBhYnNvbHV0ZURyYXdpbmdSZWdpb24sIHRhcmdldEJvdW5k
aW5nQm94LCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUs
IGhvc3RXaW5kb3cpOwogCiAgICAgLy8gQ3JlYXRlIGFsbCByZWxldmFudCBmaWx0ZXIgcHJpbWl0
aXZlcy4KICAgICBmaWx0ZXJEYXRhLT5idWlsZGVyID0gYnVpbGRQcmltaXRpdmVzKCpmaWx0ZXJE
YXRhLT5maWx0ZXIpOwpAQCAtMTkyLDcgKzE5Myw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRl
CiAgICAgZWZmZWN0aXZlVHJhbnNmb3JtLm11bHRpcGx5KGZpbHRlckRhdGEtPnNoZWFyRnJlZUFi
c29sdXRlVHJhbnNmb3JtKTsKIAogICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSA9IHJl
bmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5n
TW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwotICAgIGF1
dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwgQ29sb3JTcGFj
ZTo6TGluZWFyUkdCLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKKyAgICBhdXRvIHNvdXJjZUdy
YXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRh
LT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIENvbG9yU3BhY2U6OkxpbmVhclJH
QiwgcmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdywgY29udGV4dCk7CiAgICAgaWYgKCFzb3VyY2VH
cmFwaGljKSB7CiAgICAgICAgIEFTU0VSVCghbV9yZW5kZXJlckZpbHRlckRhdGFNYXAuY29udGFp
bnMoJnJlbmRlcmVyKSk7CiAgICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRl
eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCBkMjI5YjYzMTNjNWIzODBlZjk1ZmUxYmJkYzY0
NmZiZjEwZTJkODMxLi40MjU0MjJlMWU4NTE5ZWYxNGUyNDU5YzFkNjkxZmU2NzgzYzdiMmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTUyLDE1ICs1MiwxNSBAQCB2b2lkIFJlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQ6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiBjbGll
bnQsIGJvbwogfQogCiAjaWYgVVNFKENHKQotc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tB
bmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBH
cmFwaGljc0NvbnRleHQqJiBzYXZlZENvbnRleHQsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdl
QnVmZmVyLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVN
YXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4
dCwgR3JhcGhpY3NDb250ZXh0KiYgc2F2ZWRDb250ZXh0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlciwgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7Ci0gICAgYXV0byogdGV4dFJv
b3RCbG9jayA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcigqb2Jq
ZWN0KTsKKyAgICBhdXRvKiB0ZXh0Um9vdEJsb2NrID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVu
ZGVyU1ZHVGV4dEFuY2VzdG9yKHJlbmRlcmVyKTsKICAgICBBU1NFUlQodGV4dFJvb3RCbG9jayk7
CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3Rl
bSgqdGV4dFJvb3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gdGV4dFJvb3RC
bG9jay0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gbWFza0lt
YWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3Qs
IGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlOjpTUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdN
b2RlKCkpOworICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlOjpT
UkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCksIHJlbmRlcmVyLmRvY3VtZW50KCkuaG9zdFdp
bmRvdygpKTsKICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xNTUsNyArMTU1LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjphcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KIAogICAgIGlmIChpc1Bh
aW50aW5nVGV4dCkgewogI2lmIFVTRShDRykKLSAgICAgICAgaWYgKCFjcmVhdGVNYXNrQW5kU3dh
cENvbnRleHRGb3JUZXh0R3JhZGllbnQoY29udGV4dCwgbV9zYXZlZENvbnRleHQsIG1faW1hZ2VC
dWZmZXIsICZyZW5kZXJlcikpIHsKKyAgICAgICAgaWYgKCFjcmVhdGVNYXNrQW5kU3dhcENvbnRl
eHRGb3JUZXh0R3JhZGllbnQoY29udGV4dCwgbV9zYXZlZENvbnRleHQsIG1faW1hZ2VCdWZmZXIs
IHJlbmRlcmVyKSkgewogICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IDY0YjE5NjE1
ODUwODc3YjMwZGZlYTdlNWVmOTc2NTU0NjYzMDNhZGMuLjFlZThkOTkzNjY2ZWM4NjQwOGQyZDk0
OGUzM2RlZDhiYjY0YzUxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIGJv
b2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdT
dHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpM
aW5lYXJSR0IgPyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgOiBDb2xvclNwYWNlOjpTUkdCOwogICAg
ICAgICAvLyBGSVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1
bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0
IGJyZWFrcyBhbHBoYSBtYXNraW5nLCB0aG91Z2guCi0gICAgICAgIG1hc2tlckRhdGEtPm1hc2tJ
bWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0
LCBhYnNvbHV0ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgY29udGV4dCk7CisgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5z
Zm9ybSwgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVuZGVyZXIu
ZG9jdW1lbnQoKS5ob3N0V2luZG93KCksIGNvbnRleHQpOwogICAgICAgICBpZiAoIW1hc2tlckRh
dGEtPm1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCmluZGV4IGExZjg1ZjE3NjI2NjFhNWQ4YjMyYTQ1MDRlNjVlZmE4M2NhM2E0ZWIuLmQ1MzYw
NWE5YmM4NDJjZDEzOGM2NmY2M2E5NGQ1NTJjZDNlNWIxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
QEAgLTI1NSw3ICsyNTUsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRU
aWxlSW1hZ2VUcmFuc2Zvcm0oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsCiBSZWZQdHI8SW1hZ2VC
dWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBh
dHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFy
aWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0
ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7CiAg
ICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJl
Y3QoYWJzb2x1dGVUaWxlQm91bmRhcmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBj
bGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgQ29sb3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5n
TW9kZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcywgQ29sb3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5nTW9kZSwgZG9jdW1lbnQoKS5ob3N0
V2luZG93KCkpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggZjk3YWY0M2I0YWM3YzU5MWZlOGQxNWVlYjQzODEyZjVhOTNhYThmYS4u
MjdhNmE3NGY5MzQ0ZWFiNDZiMDYyMTFjNDIzN2Q4ZTM5OWM0NTRkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0y
MzYsNyArMjM2LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1
bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXQKICAgICByZXR1cm4gYWJzb2x1
dGVUcmFuc2Zvcm07CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFn
ZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIC8vIERvbid0
IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCkBAIC0yNTAsNyArMjUwLDcgQEAgUmVmUHRyPElt
YWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFJlY3QmIHRhcmcKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgY29udGV4dCwgMSwgY29sb3JTcGFjZSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgMSwgY29sb3JT
cGFjZSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5n
UHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5k
b3cpOwogI2VuZGlmCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yNjQsNyArMjY0LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmcKICAgICByZXR1
cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorUmVm
UHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3Qs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBIb3N0
V2luZG93KiBob3N0V2luZG93LCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAg
ICAgSW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUo
KSk7CiAgICAgRmxvYXRTaXplIHVuY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRS
ZWN0LnNpemUoKSk7CkBAIC0yNzcsNyArMjc3LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmcK
ICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwg
cmVuZGVyaW5nTW9kZSwgY29udGV4dCwgMSwgY29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShjb250ZXh0KTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgMSwgY29sb3JTcGFjZSk7CisgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAx
LCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwogI2VuZGlmCiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGU0
MGQ5N2YxZDE5NDk3ZTUxNTM3YzFjMzkxZmJiNWMxY2Y1MTc5MzcuLjNhMzc2YjFhMWRmMTMwOGMx
MTkxYmFiZmFjNzllY2IzMTNjNzJhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYsIFBhaW50
SW5mbyYsIE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9IERvbnRTYXZlR3JhcGhpY3NDb250ZXh0
KTsKICAgICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ0ZsYWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAotICAgIHN0YXRpYyBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZSwgUmVu
ZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwotICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgQ29sb3JTcGFjZSwgUmVu
ZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29s
b3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgSG9zdFdpbmRvdyosIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xh
bXBlZFJlY3QsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIEhvc3RXaW5kb3cqLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0
cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVU
b0NsZWFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXIuY3BwCmluZGV4IDlhOTRhNDYwMzU4NzkwOGEzODRkMTc0MjdiMzcxOTM1OTJiN2JjZTcu
LmM5ZjljNzA4YzY3NjkxMTNkZDFkOGQ0NDcyMjljYWQ3Mzk1M2E5OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMjQsOCAr
MjQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZpbHRlcjo6U1ZHRmlsdGVyKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYg
YWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5k
aW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RCQm94TW9k
ZSkKLSAgICA6IEZpbHRlcihhYnNvbHV0ZVRyYW5zZm9ybSkKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVy
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVj
dCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJv
dW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZlY3RCQm94
TW9kZSwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICA6IEZpbHRlcihhYnNvbHV0ZVRyYW5z
Zm9ybSwgMSwgaG9zdFdpbmRvdykKICAgICAsIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9u
KGFic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbikKICAgICAsIG1fdGFyZ2V0Qm91bmRpbmdCb3go
dGFyZ2V0Qm91bmRpbmdCb3gpCiAgICAgLCBtX2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24pCkBA
IC00Miw5ICs0Miw5IEBAIEZsb2F0U2l6ZSBTVkdGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1
dGlvbihGbG9hdFNpemUgc2l6ZSkgY29uc3QKICAgICByZXR1cm4gRmlsdGVyOjpzY2FsZWRCeUZp
bHRlclJlc29sdXRpb24oc2l6ZSkgKiBtX2Fic29sdXRlRmlsdGVyUmVnaW9uLnNpemUoKSAvIG1f
ZmlsdGVyUmVnaW9uLnNpemUoKTsKIH0KIAotUmVmPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVh
dGUoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRS
ZWN0JiBhYnNvbHV0ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJC
b3hNb2RlKQorUmVmPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJj
ZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlLCBIb3N0V2luZG93
KiBob3N0V2luZG93KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZpbHRlcihhYnNv
bHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGlu
Z0JveCwgZmlsdGVyUmVnaW9uLCBlZmZlY3RCQm94TW9kZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNWR0ZpbHRlcihhYnNvbHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVTb3VyY2VEcmF3aW5n
UmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyUmVnaW9uLCBlZmZlY3RCQm94TW9kZSwg
aG9zdFdpbmRvdykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCmluZGV4IDgwOTMxNDZkNjRh
Zjg4ODViYzNkYTQ5MzAyZjVhZWEwZmIxNzAwY2YuLjM3NmQzNTMyYzFmNTcxM2M0YWIzODAwY2Vl
Mzk1NzZmY2RhY2I3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU1ZHRmlsdGVyIGZpbmFsIDogcHVibGljIEZpbHRlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTVkdGaWx0ZXI+IGNyZWF0ZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBib29sKTsKKyAg
ICBzdGF0aWMgUmVmPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGJvb2ws
IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAKICAgICBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uSW5V
c2VyU3BhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQogICAgIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Fic29sdXRlRmls
dGVyUmVnaW9uOyB9CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU1ZHRmls
dGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIFNWR0Zp
bHRlcihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFJlY3QmIGFic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRCb3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGJvb2wgZWZmZWN0
QkJveE1vZGUpOworICAgIFNWR0ZpbHRlcihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRl
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0
ZXJSZWdpb24sIGJvb2wgZWZmZWN0QkJveE1vZGUsIEhvc3RXaW5kb3cqKTsKIAogICAgIEZsb2F0
UmVjdCBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV90YXJn
ZXRCb3VuZGluZ0JveDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415286</attachid>
            <date>2020-12-03 02:23:19 -0800</date>
            <delta_ts>2020-12-03 12:47:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219423-20201203022318.patch</filename>
            <type>text/plain</type>
            <size>183833</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYzMTBmNTRkYTBiZjIx
ZDlhNWJkMGRmNDU5NWI3YmJjOGI5MjhiOC4uMjNhMzE2MTYzOGIwNjg0ZDE5NmE2YTQwYjY4Y2Qx
NDUzODY4MjkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAyMC0xMi0wMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IEFsbG93IENTU0ZpbHRlcnMgYW5kIFNWR0ZpbHRlcnMgdG8gdXNlIFJlbW90ZUltYWdlQnVmZmVy
cyBpZiBHUFUgRE9NIHJlbmRlcmluZyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlw
Ym9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpob3N0V2luZG93IGNvbnN0KToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpyZXBsYXlEaXNwbGF5TGlz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1h
Z2UgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcgY29uc3QpOgorICAgICAg
ICAqIGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6
OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpjcmVhdGVDb21wb3NpdGluZ0J1ZmZlcik6CisgICAgICAgICogaHRt
bC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6
OmltYWdlQnVmZmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1h
Z2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybik6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUNocm9t
ZUNsaWVudDo6aW1hZ2VCdWZmZXJGYWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmg6CisgICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hy
b21lOjppbWFnZUJ1ZmZlckZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lOjpjcmVh
dGVJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9DaHJvbWUuaDoK
KyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21l
Q2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1l
UmVjdFdpdGhDbGlwKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnByZVRyYW5zZm9y
bWVkTmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFnZTo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckZhY3RvcnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmFjdG9y
eTo6SW1hZ2VCdWZmZXJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRmFj
dG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJG
YWN0b3J5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyRmFjdG9yeS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNo
QnVmZmVyOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6
OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dC
bHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVu
dEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFn
ZTo6YXBwbHlFZmZlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0
cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0
cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRy
YW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZv
bHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbnZvbHZlTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1h
cDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEcm9wU2hhZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU1lcmdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5Ojpw
bGF0Zm9ybUFwcGx5RGVnZW5lcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1
cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJS
ZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlRGF0YVRvQ29s
b3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1
ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlD
b252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VEYXRhVG9EZXN0aW5hdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0Nl
bGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YWxsb2NhdGVC
YWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFwcGx5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6b3V0cHV0IGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9D
b250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0
QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4
dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
cmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorCiAyMDIwLTEyLTAxICBBbmRyZXMg
R29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggZm9yIGFjY2Vz
c2liaWxpdHkgYXR0cmlidXRlZCBzdHJpbmcgdGVzdHMgaW4gaXNvbGF0ZWQgbW9kZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggOTI1N2Q1ZWE4YjIxNDgzNzIwYmY4YjcyOWI1M2Q4OWE0YWRmOTk3Yi4uOWEzNzc2NjA3
ZjM2ZjZhZGJlMDMyYmI4MjFiYmQ0N2M3YzY3YTQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBA
QAorMjAyMC0xMi0wMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAg
ICAgICBbR1BVIFByb2Nlc3NdIEFsbG93IENTU0ZpbHRlcnMgYW5kIFNWR0ZpbHRlcnMgdG8gdXNl
IFJlbW90ZUltYWdlQnVmZmVycyBpZiBHUFUgRE9NIHJlbmRlcmluZyBpcyBlbmFibGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6UmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmltYWdlQnVmZmVyRmFjdG9yeSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVDb250ZXh0OjppbWFnZUJ1ZmZlckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVDb250ZXh0OjplbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbWFnZUJ1ZmZlckZhY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjplbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisKIDIwMjAtMTItMDEgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWVkaWEgSW4gR1BVIFByb2Nlc3NdW01TRV0gQWRkIHRoZSBzdXBwb3J0IHRvIGZvcndh
cmQgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBmcm9tIHRoZSBHUFUgUHJvY2VzcyB0byBXZWIgcHJv
Y2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMzBlOTEzZGM4Y2U2NjhhMzBl
YTIwYzM1M2FlNDIwMWIwZmEyZjJlYi4uMTQzNWU5YzI1OTRlMjBjYjY5ZDc5NmM3YTA5ZmI0NDAw
NGMxMzU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIwLTEyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAg
IFtHUFUgUHJvY2Vzc10gQWxsb3cgQ1NTRmlsdGVycyBhbmQgU1ZHRmlsdGVycyB0byB1c2UgUmVt
b3RlSW1hZ2VCdWZmZXJzIGlmIEdQVSBET00gcmVuZGVyaW5nIGlzIGVuYWJsZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQyMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjppbWFnZUJ1ZmZlckZhY3RvcnkpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAg
ICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlj
a2VySXRlbSk6CisKIDIwMjAtMTItMDEgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIENvbnNvbGlkYXRlIGhlYWRlciBwb3N0cHJvY2Vzc2luZyBzY3JpcHRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCBhNzIzYWUwNjM3M2QyZjVmNWZkMDJmN2MxODI4ZjMyZjE3MDFi
NWE0Li5iOWZiNzY1M2RiMDM0MGJjMjllYmJjMWIzMTBiYjAxNGMzMjQ3MTgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTExOTgsNiArMTE5OCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJG
YWN0b3J5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9y
aWVudGF0aW9uLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKaW5kZXggMDlmZDgzZTA0YzE4ZTMwMTNlMmQ0ZDcxOTVlMzFiN2M4NGYwYmFkNC4uZDk1
NTRhYzE3OWFkMmIwZjZhMTJiMGNjYzNmMTM2MDBmYzlmZDcwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJGaWxlUmVhZGVyTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUg
IkltYWdlQnVmZmVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpT
RE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCkBAIC0yODUs
NyArMjg1LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9h
cmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKIAogICAgICAgICBhdXRvIGJpdG1h
cEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0
RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUltYWdlQnVmZmVyKGJpdG1hcEltYWdlLT5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKSB7
CiAgICAgICAgICAgICBtX2RhdGEgPSB7IG51bGxTdHJpbmcoKSB9OwogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4MmRmODg3YjFiMGM0ZDRiODEyY2JmZTVhMDZkZWFlNDE4
MTIwZTJiLi4yNjlkODA1NmVjMWFjNjkwNjIzMzE3NTdmNmU3ZTkwMTgxYTU3MTk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMTk1MCw2ICsxOTUwLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvSWNvbi5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCitwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckZhY3RvcnkuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclBpcGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJlN2U5ZmQyYjkxZWI4MTAxMzQ1NjBk
ZmZkODBhY2QyMTBiM2ZkYzAuLjY3YjA3MjdkZjUwMjgyYWNlNTEzM2E1NzdhMmEzYmM4Y2UyNTNi
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIxODAsNiArMjE4MCw3IEBACiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAv
KiBTVkdQcm9wZXJ0eU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVydHlPd25lci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMUI0
OTc0MjUxMkJBM0IwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMUI0OTcwMjUxMkFDMDQwMEZFOUQz
QiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWlu
dGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNEUwNDcw
MjU3ODNDM0QwMENDMDM4MiAvKiBJbWFnZUJ1ZmZlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEUwNDZFMjU3ODFCOUEwMENDMDM4MiAv
KiBJbWFnZUJ1ZmZlckZhY3RvcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MjRFRDMzMjFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1p
bk1heC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0
RUQzMzAxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCAqLzsgfTsKIAkJNzI0
RUU1NTAxREM4MEQ3RjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRFMURDN0YyNUIwMEE5MUZGQiAv
KiBBY3Rpdml0eVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzI0RUU1NTExREM4MEQ4NDAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFu
Z2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VPYnNlcnZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03
ODAwLDcgKzc4MDEsNiBAQAogCQk0MTlFNkVDNzI1NjZEMjE0MDAyQjUwMTAgLyogUlRDUGVlckNv
bm5lY3Rpb25JY2VFcnJvckV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1BlZXJDb25uZWN0aW9u
SWNlRXJyb3JFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlFNkVEMjI1
NjdCRjY5MDAyQjUwMTAgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb250ZXh0LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnRleHQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlFNkVENTI1NjdCRjZBMDAyQjUwMTAgLyog
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0MTlFNkVEODI1NjdEOEQ5MDAyQjUwMTAgLyogTGliV2ViUlRDUnRw
VHJhbnNmb3JtYWJsZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5jcHA7IHBhdGggPSBsaWJ3ZWJydGMv
TGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE5RkFGQUQxQUJBQkNENTAwNUIzNTcyIC8qIFJlYWRhYmxlU3RyZWFtQllPQlJl
YWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5RkFGQUQxQUJBQkNENTAwNUI4
MjhCIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDFBMDIzRUQxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMDA2MCw2ICsxMDA2MCw4IEBACiAJCTcyMUI0OTZGMjUxMkFD
MDQwMEZFOUQzQiAvKiBJbWFnZUJpdG1hcEJhY2tpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW1hZ2VCaXRtYXBCYWNraW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIx
QjQ5NzAyNTEyQUMwNDAwRkU5RDNCIC8qIEltYWdlQml0bWFwQmFja2luZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZUJpdG1hcEJhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBbmltYXRpb25GcmFtZVJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzI0RTA0NkQyNTc4MUI5QTAwQ0MwMzgyIC8qIEltYWdlQnVmZmVyRmFjdG9yeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MjRFMDQ2RTI1NzgxQjlBMDBDQzAzODIgLyogSW1hZ2VCdWZmZXJGYWN0
b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVyRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MjRFRDMyOTFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5N
YXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUQmxlbmRNaW5N
YXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjRFRDMyQTFBM0E3RTU0MDBG
NUYxM0MgLyogRVhUQmxlbmRNaW5NYXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRVhUQmxlbmRNaW5NYXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQz
MkIxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBFWFRCbGVuZE1pbk1heC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNjU0Myw2ICsyNjU0NSw4IEBACiAJCQkJQjJBMTBCOTEwQjM4MThCRDAwMDk5QUE0IC8qIElt
YWdlQnVmZmVyLmggKi8sCiAJCQkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAgKi8sCiAJCQkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVyQmFja2VuZC5oICovLAorCQkJCTcyNEUwNDZEMjU3ODFCOUEwMENDMDM4MiAvKiBJbWFn
ZUJ1ZmZlckZhY3RvcnkuY3BwICovLAorCQkJCTcyNEUwNDZFMjU3ODFCOUEwMENDMDM4MiAvKiBJ
bWFnZUJ1ZmZlckZhY3RvcnkuaCAqLywKIAkJCQk0M0QyNTk4NjEzQzgxNkY0MDA2MDg1NTkgLyog
SW1hZ2VCdWZmZXJQaXBlLmNwcCAqLywKIAkJCQlCMkExMEM5MTBCMzgxOEJEMDAwOTlBQTQgLyog
SW1hZ2VCdWZmZXJQaXBlLmggKi8sCiAJCQkJQ0QxOUZFQTcxRjU3Mzk3MjAwMEM0MkZCIC8qIElt
YWdlRGVjb2Rlci5jcHAgKi8sCkBAIC0zMjM1Myw2ICszMjM1Nyw3IEBACiAJCQkJNzJCQUMzQUUy
M0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTUwNjQwQjAyNDA3NTg3RTAwQUFFMDQ1IC8qIEltYWdlQnVmZmVyQ0dCYWNrZW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDc3MDVDOTI1NTI4RDM0MDAxRDBDOTQgLyogSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyNEUwNDcwMjU3ODNDM0QwMEND
MDM4MiAvKiBJbWFnZUJ1ZmZlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyN0E3RjNB
MjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQTEwRDkxMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlclBpcGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAvKiBJbWFnZUJ1
ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCAyZmE1M2FhMzhjMWZjYzExNzM1NmFmOWYxNTVkMDE1
ZDQ0MzdmMGNlLi44NDMxMDY2YWNlYzNlMmMxNTFkN2VjY2Y5Y2YxNWZkNzdkNzY3MTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0zMSw3ICszMSw4
IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxv
YWRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxk
ZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKQEAgLTExMywxMCArMTE0
LDE0IEBAIFJlZlB0cjxJbWFnZT4gQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6CiAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJ
bWFnZS0+aW1hZ2VGb3JSZW5kZXJlcigmcmVuZGVyZXIpOwogICAgIGlmICghaW1hZ2UpCiAgICAg
ICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOworICAgIAorICAgIGF1dG8qIGhvc3RXaW5k
b3cgPSByZW5kZXJlci5kb2N1bWVudCgpLmhvc3RXaW5kb3coKTsKKyAgICBpZiAoIWhvc3RXaW5k
b3cpCisgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCiAgICAgLy8gVHJhbnNm
b3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0OTQyNCk6IFRoaXMg
YnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAg
YXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkKTsKKyAgICBhdXRvIHRleHR1cmUgPSBob3N0V2luZG93LT5pbWFnZUJ1ZmZl
ckZhY3RvcnkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJ
bWFnZSgpOwogCkBAIC0xMjksOSArMTM0LDkgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXoKICAg
ICBjc3NGaWx0ZXItPnNldEZpbHRlclJlZ2lvbihpbWFnZVJlY3QpOwogICAgIGlmICghY3NzRmls
dGVyLT5idWlsZChyZW5kZXJlciwgbV9maWx0ZXJPcGVyYXRpb25zLCBGaWx0ZXJDb25zdW1lcjo6
RmlsdGVyRnVuY3Rpb24pKQogICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKLSAg
ICBjc3NGaWx0ZXItPmFwcGx5KCk7CisgICAgY3NzRmlsdGVyLT5hcHBseShob3N0V2luZG93LT5p
bWFnZUJ1ZmZlckZhY3RvcnkoKSk7CiAKLSAgICByZXR1cm4gY3NzRmlsdGVyLT5vdXRwdXQoKS0+
Y29weUltYWdlKCk7CisgICAgcmV0dXJuIGNzc0ZpbHRlci0+b3V0cHV0KGhvc3RXaW5kb3ctPmlt
YWdlQnVmZmVyRmFjdG9yeSgpKS0+Y29weUltYWdlKCk7CiB9CiAKIHZvaWQgQ1NTRmlsdGVySW1h
Z2VWYWx1ZTo6ZmlsdGVySW1hZ2VDaGFuZ2VkKGNvbnN0IEludFJlY3QmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggNjQ2ZWU3ZWVjMDMzYzkwMzkzZWYwMzhlNDM3ZTA1YzZmZWNjYzlmZC4u
NDBkMGViMjkwNGQ1NTJhYjgwNzg4ZGI0OTAxYjZjNDQ4M2IxMzliMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC0xODgzLDYgKzE4ODMsMTEgQEAgUGFnZSogRG9jdW1lbnQ6OnBhZ2UoKSBj
b25zdAogICAgIHJldHVybiBtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKIH0K
IAorSG9zdFdpbmRvdyogRG9jdW1lbnQ6Omhvc3RXaW5kb3coKSBjb25zdAoreworICAgIHJldHVy
biB2aWV3KCkgJiYgdmlldygpLT5yb290KCkgPyB2aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygp
IDogbnVsbHB0cjsKK30KKwogUmVmPFJhbmdlPiBEb2N1bWVudDo6Y3JlYXRlUmFuZ2UoKQogewog
ICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
ODRlNThjYzEzNWRkYjI1ZGEzYTdhODM4ZTc0YzNlNzhmNDA3YzlkNy4uMTI1Njc2NDIxNjQ2ZGEx
NzdkMzVmNTAxY2Y1OTJhMzZjODc3ODU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE2MCw2
ICsxNjAsNyBAQCBjbGFzcyBIaWdobGlnaHRSZWdpc3RlcjsKIGNsYXNzIEhpdFRlc3RMb2NhdGlv
bjsKIGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEhv
c3RXaW5kb3c7CiBjbGFzcyBJZGxlQ2FsbGJhY2tDb250cm9sbGVyOwogY2xhc3MgSWRsZVJlcXVl
c3RDYWxsYmFjazsKIGNsYXNzIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDsKQEAgLTU2MCw2
ICs1NjEsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZVZpZXcqIHZpZXco
KSBjb25zdDsgLy8gQ2FuIGJlIG51bGwuCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogcGFnZSgp
IGNvbnN0OyAvLyBDYW4gYmUgbnVsbC4KKyAgICBXRUJDT1JFX0VYUE9SVCBIb3N0V2luZG93KiBo
b3N0V2luZG93KCkgY29uc3Q7IC8vIENhbiBiZSBudWxsLgogICAgIGNvbnN0IFNldHRpbmdzJiBz
ZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICBFZGl0aW5n
QmVoYXZpb3IgZWRpdGluZ0JlaGF2aW9yKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
dXN0b21QYWludENhbnZhcy5jcHAKaW5kZXggOTNlZDQzNjA1Nzc2NzVmZTIwNzhiYWQ0ODc1YTFm
MzA1ODgwYzJiZS4uZjYyYWYxOTM1YWRlMTZmMjJkOThhOTA4NDRlZmVhNDM1MDU3YTY4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFn
ZUJpdG1hcC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlBh
aW50UmVuZGVyaW5nQ29udGV4dDJELmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTczLDcg
Kzc0LDcgQEAgdm9pZCBDdXN0b21QYWludENhbnZhczo6cmVwbGF5RGlzcGxheUxpc3QoR3JhcGhp
Y3NDb250ZXh0KiBjdHgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFVzaW5nIGFuIGludGVybWVkaWF0
ZSBidWZmZXIgaXMgbm90IG5lZWRlZCBpZiB0aGVyZSBhcmUgbm8gY29tcG9zaXRlIG9wZXJhdGlv
bnMuCiAgICAgYXV0byBjbGlwQm91bmRzID0gY3R4LT5jbGlwQm91bmRzKCk7CiAKLSAgICBhdXRv
IGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEJvdW5kcy5z
aXplKCksICpjdHgpOworICAgIGF1dG8gaW1hZ2UgPSBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0
ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSwgKmN0eCk7CiAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05Miw3ICs5Myw3IEBAIEltYWdlKiBDdXN0
b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSBjb25zdAogICAgIGlmICghd2lkdGgoKSB8fCAh
aGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbV9jb3BpZWRCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKKyAg
ICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIW1fY29waWVk
QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDYW52YXNFbGVtZW50LmNwcAppbmRleCAxNjljYWE5MDAyNGQyNjc3MjMwNTA2MmY1OThkMTJj
Y2RkYmFiM2ZmLi5jZDdlYzM1ZTE5ZTc0YTU0ZDM5NDI4NDEzMTI4MTk2OTU2MWVkZDdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtNDMsOCArNDMsOSBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAj
aW5jbHVkZSAiSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIKICNpbmNsdWRlICJJbWFn
ZURhdGEuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJKU0RPTUNvbnZlcnREaWN0aW9uYXJ5LmgiCkBAIC05MzQsMTIgKzkzNSwxMiBAQCB2b2lkIEhU
TUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKCF3aWR0
aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBob3N0V2luZG93
ID0gKGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290KCkpID8gZG9j
dW1lbnQoKS52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKLQorICAgIGF1
dG8qIGhvc3RXaW5kb3cgPSBkb2N1bWVudCgpLmhvc3RXaW5kb3coKTsKKyAgICBpZiAoIWhvc3RX
aW5kb3cpCisgICAgICAgIHJldHVybjsKKyAgICAKICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSBz
aG91bGRBY2NlbGVyYXRlKHNpemUoKSkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7Ci0gICAgLy8gRklYTUU6IEFkZCBhIG5ldyBzZXR0
aW5nIGZvciBEaXNwbGF5TGlzdCBkcmF3aW5nIG9uIGNhbnZhcy4KLSAgICBhdXRvIHVzZURpc3Bs
YXlMaXN0ID0gbV91c2VzRGlzcGxheUxpc3REcmF3aW5nLnZhbHVlT3IoZG9jdW1lbnQoKS5zZXR0
aW5ncygpLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoKSkgPyBTaG91bGRVc2VEaXNwbGF5TGlz
dDo6WWVzIDogU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vOwotICAgIHNldEltYWdlQnVmZmVyKElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCByZW5kZXJpbmdNb2RlLCB1c2VEaXNwbGF5TGlzdCwg
UmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgsIGhvc3RXaW5kb3cpKTsKKyAgICBzZXRJbWFnZUJ1ZmZlcihob3N0V2luZG93LT5p
bWFnZUJ1ZmZlckZhY3RvcnkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplKCksIHJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcykpOwogCiAgICAgaWYgKGJ1ZmZlcigpICYmIGJ1
ZmZlcigpLT5kcmF3aW5nQ29udGV4dCgpKQogICAgICAgICBidWZmZXIoKS0+ZHJhd2luZ0NvbnRl
eHQoKS0+c2V0VHJhY2tzRGlzcGxheUxpc3RSZXBsYXkobV90cmFja3NEaXNwbGF5TGlzdFJlcGxh
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCA2NDAyODg1
N2Q2NGUwZjQzNjdjNTZjNzc5OTQ5ZTNkZDJiMDUxOWFiLi5lN2IyNzQzZWYxY2ZiN2Y2MjQ0YWY0
NTk0MzY1Mzg1YjA5OTNkMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VMb2FkZXIuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCi0jaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBpY3R1cmVJ
blBpY3R1cmVTdXBwb3J0LmgiCkBAIC0yODUsOSArMjg1LDkgQEAgdm9pZCBIVE1MVmlkZW9FbGVt
ZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSgpCiAKIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7Ci0g
ICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCkudmll
dygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBu
dWxscHRyOwotICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNldHRp
bmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6
OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVy
aW5nUHVycG9zZTo6TWVkaWFQYWludGluZywgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICBpZiAoYXV0byogaG9zdFdpbmRvdyA9IGRvY3Vt
ZW50KCkuaG9zdFdpbmRvdygpKQorICAgICAgICByZXR1cm4gaG9zdFdpbmRvdy0+aW1hZ2VCdWZm
ZXJGYWN0b3J5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZTo6TWVkaWFQYWludGluZyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyRmFjdG9y
eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSk7CiB9CiAKIHZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
Qml0bWFwLmNwcAppbmRleCBiNDY2MTY4MDQzMDdiNDVhZDNjNzc2MTJlMjdhZTQ5YjRhYzZjMmI2
Li4xZjBhYTljYzEzMWRmMTZkZDg4MGFjZmU2ZTQyNzgyODkwNGJkNDkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlQml0bWFwLmNwcApAQCAtMzgsOCArMzgsOSBAQAogI2luY2x1ZGUgIkhUTUxDYW52
YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxWaWRlb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW1h
Z2VCaXRtYXBPcHRpb25zLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlckZhY3RvcnkuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKQEAgLTgxLDE1ICs4
MiwxMiBAQCBSZWY8SW1hZ2VCaXRtYXA+IEltYWdlQml0bWFwOjpjcmVhdGUoT3B0aW9uYWw8SW1h
Z2VCaXRtYXBCYWNraW5nPiYmIGJhY2tpbmdTdG9yZQogUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFn
ZUJpdG1hcDo6Y3JlYXRlSW1hZ2VCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSkKIHsKICAgICBpZiAoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgIGlmIChk
b2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5yb290KCkpIHsKLSAgICAgICAgICAg
IGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCk7
Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdN
b2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhv
c3RXaW5kb3cpOwotICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiBob3N0V2luZG93ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmhvc3RXaW5kb3coKSkKKyAg
ICAgICAgICAgIHJldHVybiBob3N0V2luZG93LT5pbWFnZUJ1ZmZlckZhY3RvcnkoKS5jcmVhdGVJ
bWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMs
IHJlc29sdXRpb25TY2FsZSk7CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zmc2Ny
ZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJldHVy
biBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2Fs
ZSk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6
ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlKTsKIH0KIAogdm9pZCBJbWFnZUJpdG1h
cDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBJbWFnZUJpdG1hcDo6U291cmNlJiYgc291cmNlLCBJbWFnZUJpdG1hcE9wdGlvbnMm
JiBvcHRpb25zLCBJbWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCmluZGV4IGNmZjdlNDc4ZmUzNjkzZmRhMmU1MGI1YTZhMjdiNjMyY2YyNWFmYmEuLjgx
ZDVmOTA5ODRhZWI2NWJhY2Y3ZDQ0MDZhY2ZkNDNjZGYxODQ5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwCkBAIC01Myw3ICs1Myw3IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgot
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGYWN0b3J5Lmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAj
aW5jbHVkZSAiUGF0aDJELmgiCkBAIC0xNTk1LDcgKzE1OTUsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoQ2FudmFzQmFzZSYgc291
cmNlQ2FudgogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSkgewogICAg
ICAgICBpZiAoJnNvdXJjZUNhbnZhcyA9PSAmY2FudmFzQmFzZSgpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKHNyY1JlY3QsIENvbG9yU3Bh
Y2U6OlNSR0IsICpjKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IEltYWdlQnVmZmVy
RmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIoKmJ1ZmZlciwgc3JjUmVjdCwgKmMpKSB7CiAgICAg
ICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKICAgICAgICAgICAgICAgICBjLT5kcmF3SW1hZ2VC
dWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBzcmNSZWN0LnNpemUoKSB9LCB7IHN0YXRlKCku
Z2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwogICAgICAgICAgICAgfQpA
QCAtMTc2MSw3ICsxNzYxLDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gSW50UmVjdCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmYKIAogUmVmUHRyPElt
YWdlQnVmZmVyPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVDb21wb3NpdGlu
Z0J1ZmZlcihjb25zdCBJbnRSZWN0JiBidWZmZXJSZWN0KQogewotICAgIHJldHVybiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgpLCBpc0FjY2VsZXJhdGVkKCkgPyBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAg
IHJldHVybiBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUltYWdlQnVmZmVyKGJ1ZmZlclJlY3Qu
c2l6ZSgpLCBpc0FjY2VsZXJhdGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmNvbXBvc2l0ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJ
bnRSZWN0JiBidWZmZXJSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDU0MjBmNTA4NGY5MTEyMzliM2YwZjE3NTYyNzQxYWEzODdiYWEwY2QuLjdiMmM2
OTE2ZjBiOTY2MzA3MTY3YjY5NjBmMmZhNDE0ZTY0OTdkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtMjYsOCArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dC5oIgogCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkltYWdlQml0bWFwLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC05NCw3ICs5NSwx
MSBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKFJl
ZlB0cjxJbWFnZUJpdG1hcD4gaW1hZ2VCaXRtYQogICAgICAgICAvLyBvbmx5IHJlYXNvbiBJIGNh
biB0aGluayBvZiBpcyB0b0RhdGFVUkwoKSwgYnV0IHRoYXQgZG9lc24ndCBzZWVtIGxpa2UKICAg
ICAgICAgLy8gYSBnb29kIGVub3VnaCBhcmd1bWVudCB0byB3YXN0ZSBtZW1vcnkuCiAKLSAgICAg
ICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5KEltYWdlQnVmZmVyOjpjcmVh
dGUoRmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpLCBidWZm
ZXJSZW5kZXJpbmdNb2RlKSk7CisgICAgICAgIGF1dG8qIGhvc3RXaW5kb3cgPSBjYW52YXMoKS0+
ZG9jdW1lbnQoKS5ob3N0V2luZG93KCk7CisgICAgICAgIGlmICghaG9zdFdpbmRvdykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBjYW52YXMoKS0+c2V0SW1hZ2VCdWZmZXJBbmRNYXJr
RGlydHkoaG9zdFdpbmRvdy0+aW1hZ2VCdWZmZXJGYWN0b3J5KCkuY3JlYXRlSW1hZ2VCdWZmZXIo
RmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpLCBidWZmZXJS
ZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMpKTsKIAogICAgICAgICAvLyAx
LjQuIFNldCB0aGUgb3V0cHV0IGJpdG1hcCdzIG9yaWdpbi1jbGVhbiBmbGFnIHRvIHRydWUuCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKaW5kZXggNDAwNzFjYTIzYjJjMzU1ZTFlODEwNjQ2MTdkNTJiOWQyZmI4
N2FjNi4uMDk1YThhN2ZmNjJjYWEyODNkOGJlODc2ODVlMWIzMzRlZWQ1ZTg0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwLmgi
Ci0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3Rvcnku
aCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCkBAIC03NTg0LDcgKzc1ODQsNyBAQCBJbWFn
ZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6
aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIH0KIAogICAgIC8vIEZJWE1FICgxNDk0MjMpOiBTaG91
bGQgdGhpcyBJbWFnZUJ1ZmZlciBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZD8KLSAg
ICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRl
SW1hZ2VCdWZmZXIoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgaWYg
KCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNp
emUoKSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAppbmRleCBl
NzRhM2ZhZmY5MTVhYTg3ZDVkZTk5MTRjODZmNzY5MmExOGUyYTY1Li5hZjhjMDE2ZDIyODIxODdh
ZWE0NzA2NTU2OGEwODEyZjVjYjg1MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50LmNwcApAQCAtNDAsNyArNDAsOCBAQAogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxl
bWVudC5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiSG9zdFdpbmRvdy5o
IgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0
cmluZ3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUE9ESW50ZXJ2YWwuaCIK
QEAgLTQwOCw2ICs0MDksMTAgQEAgUmVmUHRyPEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGkKICAgICBpZiAoIXJl
bmRlcmVyLT5oYXNMYXllcigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8q
IGhvc3RXaW5kb3cgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5ob3N0V2luZG93KCk7CisgICAgaWYg
KCFob3N0V2luZG93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIFJlbmRlckxheWVy
KiBsYXllciA9IGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCpyZW5kZXJlcikubGF5
ZXIoKTsKIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsKQEAgLTQxNyw3ICs0MjIs
NyBAQCBSZWZQdHI8SW1hZ2U+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aQogICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0g
SW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1FICgxNDk0
MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Qu
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3Rvcik7
CisgICAgYXV0byBidWZmZXIgPSBob3N0V2luZG93LT5pbWFnZUJ1ZmZlckZhY3RvcnkoKS5jcmVh
dGVJbWFnZUJ1ZmZlcihwYWludGluZ1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwCmluZGV4IDBjODVmOGE4Mzc2Nzk2NmJhMjZiNWMzMzNlZDYwYzAxYTUwYWExMTYuLjdh
ZmE2MDI4ODIxMDk1ZTZhMTZjNzQ2NzI3ZTBhZmQ2MmIyMDFhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5j
bHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIkltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5j
bHVkZSAiSW1hZ2VCdWZmZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJKU0NhbnZhc0RpcmVjdGlvbi5o
IgpAQCAtNjkxLDcgKzY5MSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgICAgICAgICAgaWYgKENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAg
ICAgIEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgICAgICAgICAgICAg
IGlmIChpbWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51bGxJbWFnZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5z
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAgICAgICAgICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGVJbWFnZUJ1ZmZl
cihpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9h
dFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVy
LT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTcwNSw3ICs3
MDUsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZh
cmlhbnQgZGF0YSkKIAogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxl
bWVudC0+dmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9IZWlnaHQgPSB2
aWRlb0VsZW1lbnQtPnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUltYWdlQnVmZmVyKEZsb2F0U2l6ZSh2
aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwog
ICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgdmlkZW9FbGVt
ZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBG
bG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpKTsKICAgICAgICAgICAgICAg
ICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CkBAIC03NDIs
NyArNzQyLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURh
dGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBjc3NJ
bWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNo
ZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2UtPnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVy
LT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmci
KTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMjAzLDcgKzEyMDMsNyBAQCBSZWY8SlNPTjo6QXJy
YXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc0dy
YWRpZW50KGNvbgogUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1BhdHRlcm4mIGNhbnZh
c1BhdHRlcm4pCiB7CiAgICAgSW1hZ2UmIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVy
bigpLnRpbGVJbWFnZSgpOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUltYWdlQnVmZmVy
KHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgIGlt
YWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKHRpbGVJbWFnZSwgRmxvYXRQb2ludCgwLCAw
KSk7CiAKICAgICBTdHJpbmcgcmVwZWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAppbmRleCBhNWMyNDY5YjQ3NzdlNjQxZmU3YzFmN2M0Mjg2NDFmN2NmZjkxNjRlLi5jOTE1
ODJhOGQ2ZjhmNjA3YTdjMGUzNjk0NTVjZDJjNWI1YzcyZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTA5LDYgKzUwOSwxMyBAQCB2b2lkIEVtcHR5Q2hyb21l
Q2xpZW50OjpzaG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiwgQ29tcGxldGlv
bkhhbmRsZQogewogfQogCitJbWFnZUJ1ZmZlckZhY3RvcnkmIEVtcHR5Q2hyb21lQ2xpZW50Ojpp
bWFnZUJ1ZmZlckZhY3RvcnkoKQoreworICAgIGlmICghbV9pbWFnZUJ1ZmZlckZhY3RvcnkpCisg
ICAgICAgIG1faW1hZ2VCdWZmZXJGYWN0b3J5ID0gSW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGUo
KTsKKyAgICByZXR1cm4gKm1faW1hZ2VCdWZmZXJGYWN0b3J5OworfQorCiB2b2lkIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUq
LCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rp
b24mJikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA3NDBmODhh
ZWM2YmQwNTY4YzU4YTdjMjAzYzk4ZDAxNjI1ZGYzYjcxLi40MDk3ZmEyZDc5NDA1NWEyNTIzZGU1
ZmRkZmE3M2ExOGQzNjBkZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5o
IgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmFjdG9yeS5oIgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KIAogLy8gRW1wdHkgY2xpZW50IGNsYXNzZXMgZm9yIHVzZSBieSBXZWJDb3JlLgpAQCAt
MTU3LDYgKzE1OCw4IEBAIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUNs
aWVudCB7CiAKICAgICB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhjb25zdCBJbnRSZWN0JikgY29u
c3QgZmluYWwgeyB9CiAKKyAgICBJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFjdG9y
eSgpIGZpbmFsOworCiAgICAgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSYsIEdy
YXBoaWNzTGF5ZXIqKSBmaW5hbCB7IH0KICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhp
Y3NMYXllcihHcmFwaGljc0xheWVyKikgZmluYWwgeyB9CiAgICAgdm9pZCBzZXROZWVkc09uZVNo
b3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkgZmluYWwgeyB9CkBAIC0yMDksNiArMjEyLDkgQEAg
Y2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICAgICBib29s
IHNob3VsZE5vdGlmeU9uRm9ybUNoYW5nZXMoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
LyogZmlsZW5hbWVzICovKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgCitwcml2YXRl
OgorICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckZhY3Rvcnk+IG1faW1hZ2VCdWZmZXJG
YWN0b3J5OwogfTsKIAogRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQmIGVtcHR5RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ZGFhMzRjYzJkNWQwNzk2
MmVlMWE2MWM4MjUzYmViNmE5NDY1NDZjLi5hODAzNzVjMmRjMDYxYWJiYzAzZTZhMzFmODc1MTVm
MmM0MDU4N2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01MjUsOSArNTI1LDkgQEAgdm9p
ZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sIGhpZGRlblVudGls
TW91c2VNb3ZlcykKICAgICBtX2NsaWVudC5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMo
aGlkZGVuVW50aWxNb3VzZU1vdmVzKTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBDaHJvbWU6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29u
c3QKK0ltYWdlQnVmZmVyRmFjdG9yeSYgQ2hyb21lOjppbWFnZUJ1ZmZlckZhY3RvcnkoKQogewot
ICAgIHJldHVybiBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2Rl
LCBwdXJwb3NlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKKyAg
ICByZXR1cm4gbV9jbGllbnQuaW1hZ2VCdWZmZXJGYWN0b3J5KCk7CiB9CiAKIFBsYXRmb3JtRGlz
cGxheUlEIENocm9tZTo6ZGlzcGxheUlEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCmluZGV4IDIz
MzI4ZjU2YTE5MTIwNDlkNDc5NzY0MWQwMTQwMDU1MTU5MDM1MDIuLjJkMWRiZWM2OTM4N2Y5MjFh
ZDJiNDBmN2JiYWRlNDUxMTk4NTNjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaApAQCAtODQsNyArODQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7
CiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOworICAgIEltYWdl
QnVmZmVyRmFjdG9yeSYgaW1hZ2VCdWZmZXJGYWN0b3J5KCkgb3ZlcnJpZGU7CiAKICAgICBQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHdpbmRv
d1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCwgT3B0aW9uYWw8dW5zaWduZWQ+KSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDNhOWUxZDY2OTA5N2U1
OTVkOWI1N2ZjNGNmZjdlNjFhNWQxOGQwYTkuLjI1NjM3NWFkZWY2NGI3ZmZkMWUzNDQ2NDc3YzAx
MDM3YTAwYWIxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzcsNyArMzcs
NiBAQAogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgogI2luY2x1ZGUgIkhvc3RX
aW5kb3cuaCIKICNpbmNsdWRlICJJY29uLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNp
bmNsdWRlICJJbnB1dE1vZGUuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVk
ZSAiUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oIgpAQCAtMTAwLDYgKzk5LDcgQEAgY2xhc3MgSFRN
TElucHV0RWxlbWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9F
bGVtZW50OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEltYWdlQnVmZmVyRmFjdG9yeTsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBNZWRpYVNlc3Npb25NZXRhZGF0YTsKIGNsYXNzIE5hdmln
YXRpb25BY3Rpb247CkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBS
ZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3Io
UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgQ29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIEltYWdlQnVm
ZmVyRmFjdG9yeSYgaW1hZ2VCdWZmZXJGYWN0b3J5KCkgPSAwOwogCiAgICAgLy8gUGFzcyBudWxs
cHRyIGFzIHRoZSBHcmFwaGljc0xheWVyIHRvIGRldGF0Y2ggdGhlIHJvb3QgbGF5ZXIuCiAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lJiwgR3JhcGhpY3NMYXll
ciopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXgg
ZTJmOGEzN2ZiODliNDIxZWViZmE4NDZlNTRjNDdlZTc5NWM2YTlhYi4uMzRhMWU5ZmRjNzdkNjU3
YWMxMjM0ZWFkYjRjYWU3YWRmMjQxMWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGYWN0b3J5
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC03Nyw3ICs3NywxMSBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNu
YXBzaG90RnJhbWVSZWN0V2l0aENsaXAoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFn
ZQogewogICAgIGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQor
ICAgIAorICAgIGF1dG8qIGhvc3RXaW5kb3cgPSBmcmFtZS5kb2N1bWVudCgpLT5ob3N0V2luZG93
KCk7CisgICAgaWYgKCFob3N0V2luZG93KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAK
ICAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKIAogICAgIEZyYW1lVmlldzo6
U2VsZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJ
bmNsdWRlU2VsZWN0aW9uOwpAQCAtMTExLDcgKzExNSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGlt
YWdlCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3JhbFNj
YWxlRmFjdG9yKQogICAgICAgICBzY2FsZUZhY3RvciA9IGNlaWxmKHNjYWxlRmFjdG9yKTsKIAot
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBzY2FsZUZhY3Rvcik7CisgICAgYXV0byBidWZm
ZXIgPSBob3N0V2luZG93LT5pbWFnZUJ1ZmZlckZhY3RvcnkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihp
bWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBSZW5kZXJpbmdQ
dXJwb3NlOjpET00sIHNjYWxlRmFjdG9yKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1pbWFnZVJlY3Qu
eCgpLCAtaW1hZ2VSZWN0LnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCmluZGV4IDRlMmU5ZjBjNjg0MjMwNmMwYzk0MjUwYzhmMTAyN2EzZWY3NzE2OWIuLmVi
OTE1ZmYwZDE2MGQ0MTBlMGU1ZDQzNGU2ZDJkYjg0NTNhNWRkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBACiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFw
UmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgpAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNo
b3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2Fj
aGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlID0g
Y2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlt
YWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0KCkuZHJhd0ltYWdlKCpp
bWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgUGFnZUNv
bnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUmVmCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiB2aWRlb0VsZW1lbnQg
PSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pigqbm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGgoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvSGVpZ2h0ID0gdmlkZW9FbGVtZW50
LnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hv
dCA9IEltYWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIoRmxvYXRTaXplKHZpZGVv
V2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoc25hcHNob3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVv
SGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzc0LDcgKzM3NCw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgICAgICB0YXJnZXQgPSBwb3NzaWJs
ZVRhcmdldDsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omhhc0Zyb250ZW5kcygpKSkgewogICAgICAgICAgICAgICAgIGF1dG8gc291cmNlU2l6ZSA9
IGltYWdlRGF0YS0+c2l6ZSgpOwotICAgICAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXJGYWN0b3J5OjpjcmVhdGVJbWFnZUJ1ZmZlcihzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkKSkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJl
Y3QoSW50UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVm
ZmVyLT5wdXRJbWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCAqaW1hZ2VEYXRhLCBzb3VyY2VSZWN0KTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9
IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVz
ZXJ2ZVJlc29sdXRpb246Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKaW5k
ZXggNDNkYjFmZmFlMDEyYmIyMTg5NGYyY2E5NjMwNzIxNDc2NmFhZGQ5ZS4uNTY4MWFlOTAxN2Qw
ZDA1NmYyZTFlOGViZDFhZWY5NWFiM2RkNmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RX
aW5kb3cuaApAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
dXJzb3I7Ci1jbGFzcyBJbWFnZUJ1ZmZlcjsKK2NsYXNzIEltYWdlQnVmZmVyRmFjdG9yeTsKIAog
ZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIENvbG9yU3BhY2Ug
OiB1aW50OF90OwpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnRQb2lu
dCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29u
c3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5k
ZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVm
ZmVyRmFjdG9yeSgpID0gMDsKIAogICAgIC8vIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgbmF0
aXZlIGNsaWVudCBvZiB0aGUgcGFnZS4KICAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBw
bGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggMDc5MmRjYzk3ZWU1MGRlMTQ2MjMx
M2U1ZTUzNTA3ZWQ3MmU5NTM5MS4uODYxODFjNWU5MTQxOTFlMmM3ZTI0MGZlZDJjYTBjODUxNDI0
Zjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1
ZGUgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0j
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIK
ICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKQEAgLTE2Miw3ICsxNjIsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEJp
dG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGJvb2wg
cgogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBhdXRvIGNvcnJlY3RlZFNpemVGbG9hdCA9
IGNvcnJlY3RlZFNpemUgPyBGbG9hdFNpemUoY29ycmVjdGVkU2l6ZS52YWx1ZSgpKSA6IHNpemUo
KTsKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZs
b2F0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29ycmVjdGVkU2l6ZUZsb2F0LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGltYWdlOwogCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LAogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0
aWxlUmVjdC5zaXplKCkpLCBDb2xvclNwYWNlOjpTUkdCLCBjdHh0KTsKKyAgICAgICAgYXV0byBi
dWZmZXIgPSBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihl
eHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXgg
MDA2MzYyZGZkNjEwMjk0YTkzZGYxM2VkZTFkZjI5OWViOTg4OGIxMC4uN2VjNTNlMzA5MzM4Y2M1
ZTdkYjFiZDZjY2E5ZDY0Y2U4ZDM3ODZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAt
MjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlckZhY3RvcnkuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bAogCiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUltYWdlQnVmZmVyKHNp
emUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9DdXN0b21QYWludEltYWdlLmNwcAppbmRleCA4NDAwNTE1ZjlmNjlkMTY3YTVjZTZlODM5
Mzk3NWU5ZDY2MjgyN2ZlLi44OWM0OTUzYTkzOTgzNmIyODU1OWJlZTQyMzA5ZjJiMTJmYTY5OWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21Q
YWludEltYWdlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkN1c3RvbVBhaW50Q2Fu
dmFzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRt
YXAuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkpTQ1NTUGFpbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJQYWludFJlbmRlcmluZ0NvbnRleHQyRC5o
IgpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgYWRqdXN0
ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAvIHhTY2FsZSwgMS4wIC8geVNjYWxlKTsKICAgICBhZGp1
c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxlLCB5U2NhbGUpOwogCi0gICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIENvbG9yU3Bh
Y2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyRmFj
dG9yeTo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGFkanVzdGVkU2l6ZSwgZGVzdENvbnRl
eHQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgZG9DdXN0b21QYWlu
dChidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggMzExNGRiOTAxNmVl
YjdmYWM5OGVmNWY1NzgzNjA0YzVjMDg0MGZlMC4uNzZkYTY3NDI0YmFiMGVlODBhOWM5YmY0M2Zh
NTk4M2Y1ZTdiY2Y1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkdyYWRp
ZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgdW5z
aWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAogICAgIGlmICghbV9j
YWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBt
X2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWFyZUVzc2VudGlhbGx5RXF1
YWwoZGVzdENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9jYWNoZWRTY2FsZUZhY3RvcikpIHsKLSAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGFkanVzdGVkU2l6ZSwgQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOworICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGVDb21wYXRpYmxl
SW1hZ2VCdWZmZXIoYWRqdXN0ZWRTaXplLCBkZXN0Q29udGV4dCk7CiAgICAgICAgIGlmICghaW1h
Z2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDVjYWNhODU0NTJj
MWE2OThiOTVlNGRmNDQwMDg1OGM5NjM0NWVjZTUuLjNhMzU2NTEyYmQ3YmJhOGY1YTI2Y2IxNjg1
ODYzNmFmMmQwNWQ3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtODkwLDcgKzg5MCw3IEBAIEdyYXBoaWNzQ29u
dGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRv
RHJhd2luZ0NvbW1hCiAgICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6
OlN1Y2Nlc3M7CiAgICAgfQogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSwgKnRo
aXMpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXplKCksICp0aGlzLCAxLCBjb2xvclNw
YWNlKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXggNmMxMWU1
NTY1NTJmZDJjMzY1ZDE5NDBjOGNiNWJlNGIyZTg5ZGNiNC4uZWY0NDZiNGE3M2MwNTRkZTYzODli
NWNjOGIwYTY5ZjI0ZDY5Nzk4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtMzgsOTAgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRMZW5ndGggPSA0MDk2Owogc3RhdGlj
IGNvbnN0IGZsb2F0IE1heENsYW1wZWRBcmVhID0gTWF4Q2xhbXBlZExlbmd0aCAqIE1heENsYW1w
ZWRMZW5ndGg7CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNl
RGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7Ci0gICAgaWYgKGhvc3RXaW5kb3cpCi0gICAg
ICAgIGltYWdlQnVmZmVyID0gaG9zdFdpbmRvdy0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCk7Ci0KLSAgICBpZiAoIWltYWdlQnVmZmVyICYmIHNob3VsZFVzZURpc3BsYXlMaXN0ID09
IFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMpIHsKLSAgICAgICAgaWYgKHJlbmRlcmluZ01vZGUg
PT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgICAgICBpbWFnZUJ1ZmZlciA9
IERpc3BsYXlMaXN0QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlc29sdXRp
b25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwotICAgICAgICAK
LSAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIGltYWdlQnVmZmVyID0gRGlz
cGxheUxpc3RVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKLSAgICB9Ci0KLSAg
ICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7Ci0KLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0K
LVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBI
b3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXI7Ci0gICAgCi0gICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNj
ZWxlcmF0ZWQpCi0gICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhv
c3RXaW5kb3cpOwotICAgIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdlQnVm
ZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7Ci0KLSAgICByZXR1cm4g
aW1hZ2VCdWZmZXI7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
LXsKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwotICAgIAotICAgIGlmIChj
b250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAg
ICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
Y29udGV4dCk7Ci0gICAgCi0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZm
ZXIgPSBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0KTsKLQot
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VC
dWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQpOwotCi0gICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkU2l6ZSwgY29udGV4dCk7Ci0g
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBT
ZXQgdXAgYSBjb3JyZXNwb25kaW5nIHNjYWxlIGZhY3RvciBvbiB0aGUgZ3JhcGhpY3MgY29udGV4
dC4KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsK
LSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci0KLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewot
ICAgIGlmIChzaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJ
bnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoc2l6
ZSwgY29udGV4dCk7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgY29udGV4dCk7Ci0g
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBT
ZXQgdXAgYSBjb3JyZXNwb25kaW5nIHNjYWxlIGZhY3RvciBvbiB0aGUgZ3JhcGhpY3MgY29udGV4
dC4KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsK
LSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUs
IGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UpOwot
fQotCiBib29sIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUm
IHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQpAQCAtMTczLDIxICs4OSw2IEBAIElu
dFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDCiAgICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICog
Y29udGV4dC5zY2FsZUZhY3RvcigpKTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIGlmIChy
ZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbnRTaXplIHNj
YWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUocmVjdC5zaXplKCks
IGNvbnRleHQpOwotCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBjb2xvclNwYWNlLCBjb250ZXh0KTsKLSAgICBpZiAo
IWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBidWZmZXItPmNvbnRleHQo
KS5kcmF3SW1hZ2VCdWZmZXIoKnRoaXMsIC1yZWN0LmxvY2F0aW9uKCkpOwotICAgIHJldHVybiBi
dWZmZXI7Ci19Ci0KIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0
aXZlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKIHsKICAgICByZXR1cm4g
aW1hZ2VCdWZmZXItPnNpbmtJbnRvTmF0aXZlSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDYyYTNmN2ZmYTM3NzhhOGMwMTM5
MDE2MjU0Mzc1M2FhN2JkMmMyMWQuLjYzMzc4NDZiM2Q5NjQ4NTYzMmE1NmY5YTZhMjNiOGZmNDU4
OGE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaApAQCAtNDIsMTYgKzQyLDYgQEAgY2xhc3MgRHJhd2luZ0NvbnRleHQ7CiAKIGNsYXNzIElt
YWdlQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8SW1hZ2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICAvLyBXaWxsIHJldHVybiBhIG51
bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUgPSAxLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQgPSBQaXhlbEZvcm1hdDo6QkdSQTgsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIENv
bG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0OjpC
R1JBOCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVmUHRyPElt
YWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
Jik7Ci0KLSAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUg
Y29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1
ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25z
IGFyZSB1c2VkIHdoZW4gY2xhbXBpbmcgdGhlIEltYWdlQnVmZmVyIHdoaWNoIGlzIGNyZWF0ZWQg
Zm9yIGZpbHRlciwgbWFza2VyIG9yIGNsaXBwZXIuCiAgICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRz
Q2xhbXBpbmcoY29uc3QgRmxvYXRTaXplJik7CiAgICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xh
bXBpbmcoY29uc3QgRmxvYXRTaXplJiwgRmxvYXRTaXplJiBzY2FsZSk7CkBAIC05Miw5ICs4Miw2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykg
Y29uc3QgPSAwOwogCi0gICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdp
dGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBu
ZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBG
bG9hdFJlY3QmLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLQogICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJGYWN0b3J5LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZWE0MzE2MzVkMmY0ZGRkYWY3ZGYxYmZjYjg4ODBjODJmNGEzZjA5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJGYWN0b3J5LmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXJGYWN0b3J5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyRmFjdG9yeT4gSW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGUoY29u
c3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyRmFjdG9yeT4obmV3IEltYWdlQnVmZmVyRmFjdG9yeShob3N0V2luZG93KSk7
Cit9CisKK0ltYWdlQnVmZmVyRmFjdG9yeTo6SW1hZ2VCdWZmZXJGYWN0b3J5KGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCisgICAgOiBtX2hvc3RXaW5kb3coaG9zdFdpbmRvdykKK3sKK30K
KworUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBS
ZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCit7CisgICAgcmV0dXJuIGNyZWF0ZUltYWdl
QnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgbV9ob3N0V2luZG93KTsKK30K
KworUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlMaXN0LCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2VCdWZmZXI7CisKKyAgICBpZiAoc2hvdWxkVXNlRGlzcGxheUxpc3QgPT0gU2hvdWxkVXNl
RGlzcGxheUxpc3Q6Ok5vKSB7CisgICAgICAgIGlmIChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRl
ZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CisKKyAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAg
ICAgICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRv
dyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5n
TW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IERpc3BsYXlMaXN0
QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOworCisgICAgICAgIGlmICghaW1hZ2VC
dWZmZXIpCisgICAgICAgICAgICBpbWFnZUJ1ZmZlciA9IERpc3BsYXlMaXN0VW5hY2NlbGVyYXRl
ZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CisgICAgfQorCisgICAgcmV0dXJuIGltYWdlQnVmZmVy
OworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCit7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKyAgICAKKyAg
ICBpZiAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0
ZWQpCisgICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUsIGNvbnRleHQpOworICAgIAorICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIGlt
YWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgY29udGV4
dCk7CisKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
SW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGVJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgc291cmNl
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZl
cjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUocmVjdC5zaXplKCksIGNvbnRleHQpOworCisgICAgYXV0
byBkZXN0aW5hdGlvbiA9IEltYWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlQ29tcGF0aWJsZUltYWdl
QnVmZmVyKHNjYWxlZFNpemUsIGNvbnRleHQsIDEsIGNvbG9yU3BhY2UpOworICAgIGlmICghZGVz
dGluYXRpb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZGVzdGluYXRpb24tPmNv
bnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoc291cmNlLCAtcmVjdC5sb2NhdGlvbigpKTsKKyAgICBy
ZXR1cm4gZGVzdGluYXRpb247Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXJG
YWN0b3J5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQoreworICAgIGlmIChzaXplLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZl
cjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoc2l6ZSwgY29udGV4dCk7CisKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlKTsKKyAgICBp
ZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFNldCB1
cCBhIGNvcnJlc3BvbmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRoZSBncmFwaGljcyBjb250ZXh0Lgor
ICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAvIHNpemUpOworICAg
IHJldHVybiBpbWFnZUJ1ZmZlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJGYWN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckZhY3Rvcnku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YWNmMmNhMGM5OTVmNTBhYWE4NTIwYzkxNjcxNjcwMTJhNmJmNzRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJGYWN0b3J5LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1h
Z2VCdWZmZXJGYWN0b3J5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyRmFjdG9yeT4gY3JlYXRlKGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisK
KyAgICB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckZhY3RvcnkoKSA9IGRlZmF1bHQ7CisgICAgCisgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSA9IDEsIENvbG9yU3BhY2UgPSBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdCA9IFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisKKyAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBv
biBhbGxvY2F0aW9uIGZhaWx1cmUuCisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4LCBTaG91bGRVc2VEaXNwbGF5TGlzdCA9IFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKworICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZm
ZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1
ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgc291cmNlLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQik7CisK
KyAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4
dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZlciBh
bmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgQ29sb3JTcGFjZSA9IENv
bG9yU3BhY2U6OlNSR0IpOworCitwcm90ZWN0ZWQ6CisgICAgSW1hZ2VCdWZmZXJGYWN0b3J5KGNv
bnN0IEhvc3RXaW5kb3cqKTsKKworICAgIGNvbnN0IEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdyB7
IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2UuY3BwCmluZGV4IGQzZDNmYTM5ZTA2ZDg5ZWE2MmMxNzlkOTg4N2Y0NWJiZjZjOGRiZmQu
LmNiNDc1ODNkZDA4M2FlM2ViYjlkZjA3MTIxNWFlNWM4YzljYWQ3MDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
KyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIKICNpbmNsdWRlICJUaGVtZS5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtNjUsNyArNjUsNyBAQCBJbWFnZURy
YXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRgogdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgVVNFKE5FV19U
SEVNRSkKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoc2l6ZSgpLCBjb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXJGYWN0b3J5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoc2l6ZSgpLCBjb250ZXh0
KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggODMzODliYTY4
MDU2Mzc3Zjk5ZjBmNWExY2QzMDdiZjZjZjkxZDgyYS4uODE4MmE5Njg4OGVjMTg0NmI2YzkzZTIy
NzFkNzU3NDAwMDljYzMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJBZmZpbmVUcmFu
c2Zvcm0uaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmFj
dG9yeS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAg
ICBjbGVhclNjcmF0Y2hCdWZmZXIoKTsKIAogICAgICAgICAvLyBTaGFkb3dCbHVyIGlzIG5vdCB1
c2VkIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZywgc28gaXQncyBPSyB0byBtYWtlIGFuIHVuY29u
ZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KLSAgICAgICAgbV9pbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEpOworICAgICAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXJGYWN0b3J5Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihyb3VuZGVkU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCk7CiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOwogICAgIH0KIApAQCAtNTk1
LDcgKzU5NSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0CiAKIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgTGF5ZXJJbWFnZVByb3BlcnRp
ZXMmIGxheWVySW1hZ2VQcm9wZXJ0aWVzLCBjb25zdCBEcmF3QnVmZmVyQ2FsbGJhY2smIGRyYXdC
dWZmZXIpCiB7Ci0gICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBh
bmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXJG
YWN0b3J5OjpjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3Bl
cnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgaWYg
KCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTYyMyw3ICs2MjMsNyBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdAogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dp
dGhvdXRUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRSZWN0JiBmdWxs
UmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IExheWVySW1hZ2VQ
cm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNr
JiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdl
QnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGxheWVySW1h
Z2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwog
ICAgIGlmICghbGF5ZXJJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02OTAsNyArNjkwLDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnMKICAgICB9KTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKGxheWVySW1hZ2VQcm9wZXJ0aWVzKTsKLSAgICBhdXRvIGxheWVySW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSk7CisgICAgYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXJGYWN0b3J5
OjpjcmVhdGVJbWFnZUJ1ZmZlcih0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUltYWdlQnVmZmVyKTsKICAgICBhdXRvKiBs
YXllckltYWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKICNlbmRpZgogCkBAIC03NDMsNyAr
NzQzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb24KICAgICAgICAgU2NyYXRjaEJ1ZmZlcjo6
c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKICAgICB9KTsKICNlbHNl
Ci0gICAgYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0
ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEpOworICAgIGF1dG8gbGF5ZXJJ
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIodGVtcGxh
dGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICBhdXRvKiBsYXllcklt
YWdlID0gbGF5ZXJJbWFnZUJ1ZmZlci5nZXQoKTsKICNlbmRpZgogCkBAIC05MTMsNyArOTEzLDcg
QEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QKIAogICAgIGFkanVzdEJsdXJSYWRpdXModHJhbnNm
b3JtKTsKIAotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5k
ZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxKTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlckZh
Y3Rvcnk6OmNyZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVy
dGllcy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgaWYg
KCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggZGM0
OTg1ZjljNTlhYWFjZDNkZjViNWRjNTZiOWQ4OTA4NDgxYmY5Yi4uMGI3ODZkY2EzYzEwZDkyNWEw
ZmE0MDlkZDdiNmQwNDBhOGZkMzZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAKICNlbmRpZgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIKICNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aC5o
IgpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVk
SW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBtX2NhY2hlZEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKKyAgICBtX2NhY2hlZElt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZm
ZXIpIHsKICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0
ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgKaW5kZXggOGJj
NTBkNWU3OWRkNjZmNzU4Y2UxNDNjNWM4ZjlhN2Q1OWRhMDY4Zi4uN2RhNWZiNjk5YzIxZjBlN2Fl
NDNmOThmM2ZmY2YxOGY5YTYxMTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVj
dFJlbmRlcmVyQ29yZUltYWdlLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGRUNvbG9yTWF0cml4OwogY2xhc3MgRkVDb21wb25lbnRUcmFuc2ZlcjsKK2Ns
YXNzIEltYWdlQnVmZmVyRmFjdG9yeTsKIGNsYXNzIFNvdXJjZUdyYXBoaWM7CiAKIGNsYXNzIEZp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlIDogcHVibGljIEZpbHRlckVmZmVjdFJlbmRlcmVy
IHsKQEAgLTQ3LDcgKzQ4LDcgQEAgY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2Ug
OiBwdWJsaWMgRmlsdGVyRWZmZWN0UmVuZGVyZXIgewogcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U+IHRyeUNyZWF0ZShGaWx0
ZXJFZmZlY3QmKTsKICAgICBSZXRhaW5QdHI8Q0lDb250ZXh0PiBzaGFyZWRDSUNvbnRleHQoKTsK
LSAgICB2b2lkIGFwcGx5RWZmZWN0cyhGaWx0ZXJFZmZlY3QmKSBmaW5hbDsKKyAgICB2b2lkIGFw
cGx5RWZmZWN0cyhJbWFnZUJ1ZmZlckZhY3RvcnkmLCBGaWx0ZXJFZmZlY3QmKSBmaW5hbDsKICAg
ICBib29sIGhhc1Jlc3VsdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fb3V0cHV0SW1hZ2U7IH0K
ICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0IGRl
c3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYpIGNvbnN0IGZpbmFsOwpAQCAtNTYsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxDSUltYWdlPiBjb25uZWN0
Q0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYpOwotICAgIHZvaWQgcmVuZGVyVG9JbWFnZUJ1ZmZlcihG
aWx0ZXJFZmZlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlclRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXJGYWN0b3J5JiwgRmlsdGVyRWZmZWN0JikgZmluYWw7CiAgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNDb3JlSW1hZ2VSZW5kZXJpbmcoRmlsdGVyRWZmZWN0Jik7CiAgICAgc3RhdGljIGJvb2wg
Y2FuUmVuZGVyVXNpbmdDSUZpbHRlcnMoRmlsdGVyRWZmZWN0Jik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KaW5kZXggMzhkZTg1NTJm
MWU0NmExZDM3MGFlNmRjMjc4OWExZWM2Njc0YmExMi4uOWZjYjBmMDE2MDk0Y2IxMzZmOGJlODIy
ZmM3YWExYjRmNGRhNDAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZS5tbQpAQCAtMzUsNyArMzUsNyBAQAogI2ltcG9ydCAiRmlsdGVyT3BlcmF0
aW9uLmgiCiAjaW1wb3J0ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dENHLmgiCi0jaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCAiSW1hZ2VCdWZmZXJG
YWN0b3J5LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgiCiAjaW1wb3J0ICJTb3Vy
Y2VHcmFwaGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0Lmg+CkBAIC0xMTIsMTIg
KzExMiwxMiBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpzdXBwb3J0c0Nv
cmVJbWFnZVJlbmRlcmluZyhGaWx0ZXJFZmZlY3QmIGVmZgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6YXBwbHlFZmZlY3RzKEZpbHRl
ckVmZmVjdCYgbGFzdEVmZmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6
OmFwcGx5RWZmZWN0cyhJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFjdG9yeSwgRmls
dGVyRWZmZWN0JiBsYXN0RWZmZWN0KQogewogICAgIG1fb3V0cHV0SW1hZ2UgPSBjb25uZWN0Q0lG
aWx0ZXJzKGxhc3RFZmZlY3QpOwogICAgIGlmICghbV9vdXRwdXRJbWFnZSkKICAgICAgICAgcmV0
dXJuOwotICAgIHJlbmRlclRvSW1hZ2VCdWZmZXIobGFzdEVmZmVjdCk7CisgICAgcmVuZGVyVG9J
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlckZhY3RvcnksIGxhc3RFZmZlY3QpOwogfQogCiBSZXRhaW5Q
dHI8Q0lJbWFnZT4gRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmNvbm5lY3RDSUZpbHRl
cnMoRmlsdGVyRWZmZWN0JiBlZmZlY3QpCkBAIC0yNzIsMTAgKzI3MiwxMCBAQCBJbWFnZUJ1ZmZl
ciogRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Om91dHB1dCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fb3V0cHV0SW1hZ2VCdWZmZXIuZ2V0KCk7CiB9CiAgICAgCi12b2lkIEZpbHRlckVmZmVj
dFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYgbGFz
dEVmZmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZlckZhY3RvcnksIEZpbHRlckVm
ZmVjdCYgbGFzdEVmZmVjdCkKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1
ZmZlcjo6Y2xhbXBlZFNpemUobGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7
Ci0gICAgbV9vdXRwdXRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCBsYXN0RWZmZWN0LmZpbHRlcigpLmZpbHRl
clNjYWxlKCksIGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpKTsKKyAgICBtX291dHB1dElt
YWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJGYWN0b3J5LmNyZWF0ZUltYWdlQnVmZmVyKGNsYW1wZWRT
aXplLCBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCBs
YXN0RWZmZWN0LmZpbHRlcigpLmZpbHRlclNjYWxlKCksIGxhc3RFZmZlY3QucmVzdWx0Q29sb3JT
cGFjZSgpKTsKICAgICAKICAgICBpZiAoIW1fb3V0cHV0SW1hZ2VCdWZmZXIpIHsKICAgICAgICAg
Y2xlYXJSZXN1bHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKaW5kZXggZGZlMzUzMDU1
MGVkZDJkMGY3MDg2NDBiZTlhMTQ2Mjg5NzA3NjI3ZS4uOTBiZjAyMTNkOWI3MWVjMWY2MzgxMDQ3
YjVkMTYyNjU1NDlhNGE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKQEAgLTEwNyw3
ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQordm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1hZ2VC
dWZmZXJGYWN0b3J5JikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7
CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IGNk
ZWFhNjVlNjcwNGNkNjdmYjBhN2FmZTlhZjE4ZmJiNjJjMmNlZDkuLmFjMzQyMzlhNTY0Y2YxYjJl
YTI5NGIwNWYxMzI0Mzg4ODcyYmVhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtNTQsMTggKzU0LDE4IEBAIGJv
b2wgRkVCbGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9kZSBtb2RlKQogfQogCiAjaWYgIUhBVkUo
QVJNX05FT05fSU5UUklOU0lDUykKLXZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKK3ZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKEltYWdlQnVmZmVyRmFjdG9y
eSYgaW1hZ2VCdWZmZXJGYWN0b3J5KQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVm
ZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0KDEpOwogCi0gICAg
SW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAg
ICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdChpbWFn
ZUJ1ZmZlckZhY3RvcnkpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
ICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4
dCgpOwogCi0gICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW4tPmltYWdlQnVmZmVyUmVz
dWx0KCk7Ci0gICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyMiA9IGluMi0+aW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJS
ZXN1bHQoaW1hZ2VCdWZmZXJGYWN0b3J5KTsKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIy
ID0gaW4yLT5pbWFnZUJ1ZmZlclJlc3VsdChpbWFnZUJ1ZmZlckZhY3RvcnkpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyMikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCmluZGV4
IDcwZTg0MDdiZjVjMjAwZDQ1MjE2YjhmOWMwODUxN2I1MDc5ZTc5NjYuLjYxYjIxODg1ZWI5ZDU4
NWFlYTlmNzgzMTExNmIzNTQ0YTk2Nzg3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJGRUJsZW5kIjsgfQogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZhY3Rv
cnkmKSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmljKHVuc2lnbmVkIGNo
YXIqIHNyY1BpeGVsQXJyYXlBLCB1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFycmF5QiwgdW5zaWdu
ZWQgY2hhciogZHN0UGl4ZWxBcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNvbG9yQXJyYXlMZW5ndGgpOwogICAgIHZvaWQgcGxhdGZvcm1BcHBseU5FT04odW5zaWdu
ZWQgY2hhciogc3JjUGl4ZWxBcnJheUEsIHVuc2lnbmVkIGNoYXIqIHNyY1BpeGVsQXJyYXlCLCB1
bnNpZ25lZCBjaGFyKiBkc3RQaXhlbEFycmF5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggZTNl
YzdhZjE4ZWJjMjg1MjU4ZTYyODY0MjE4NjI3Y2U4ZDIxNzU4Yi4uODEwYjRlOTFjZDQ0ZWEzMzQ2
MGJlODUwZTBiYjQyMTA1MGFjODM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCkBAIC0yNzMsMTUg
KzI3MywxNSBAQCB2b2lkIGVmZmVjdFR5cGUoVWludDhDbGFtcGVkQXJyYXkmIHBpeGVsQXJyYXks
IGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcywgSW50UwogICAgIH0KIH0KIAotdm9pZCBGRUNv
bG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUNvbG9yTWF0cml4Ojpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1hZ2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZlckZhY3Rv
cnkpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0gICAgSW1h
Z2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBJ
bWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdChpbWFnZUJ1
ZmZlckZhY3RvcnkpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEltYWdlQnVmZmVyKiBpbkJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOworICAg
IEltYWdlQnVmZmVyKiBpbkJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdChpbWFnZUJ1ZmZl
ckZhY3RvcnkpOwogICAgIGlmIChpbkJ1ZmZlcikKICAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXggN2M2ZGM1
N2ZiYTIxYmI2MzE1YzVhNzZjMDBlMDJiMWZhYmVlYTBjZS4uZTU5NmU2M2U3MGI4NTI1MTc2NTQ0
YTI2YTUyNWQ0YzFiYTUwYWY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKIAogICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiRkVDb2xvck1hdHJpeCI7IH0KIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1hZ2VCdWZmZXJG
YWN0b3J5Jikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKaW5kZXggNGNlZTEzYTg1NDI1
NTY3Y2JhYTk2NWM0NTkyMTNmYzcyYmQ1YTA3Ni4uYzcxZTZjNDU2ZDc0M2E2Y2Y1NDQ1OTQ5NGUz
YjMxMmVjMmE2ZjQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCkBAIC0xMDQs
NyArMTA0LDcgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpjb21wdXRlR2FtbWFUYWJsZShM
b29rdXBUYWJsZSYgdmFsdWVzLCBjb25zdCBDb21wb25lbnQKICAgICB9CiB9CiAKLXZvaWQgRkVD
b21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVDb21wb25l
bnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKEltYWdlQnVmZmVyRmFjdG9yeSYgaW1h
Z2VCdWZmZXJGYWN0b3J5KQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgw
KTsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKICAgICBjb21wdXRlTG9va3VwVGFibGVzKHJlZFRhYmxlLCBncmVl
blRhYmxlLCBibHVlVGFibGUsIGFscGhhVGFibGUpOwogCiAgICAgSW50UmVjdCBkcmF3aW5nUmVj
dCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkpOwotICAgIGluLT5jb3B5VW5tdWx0aXBsaWVkUmVzdWx0KCpwaXhlbEFycmF5LCBkcmF3aW5n
UmVjdCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKKyAgICBpbi0+Y29weVVubXVsdGlwbGllZFJl
c3VsdChpbWFnZUJ1ZmZlckZhY3RvcnksICpwaXhlbEFycmF5LCBkcmF3aW5nUmVjdCwgb3BlcmF0
aW5nQ29sb3JTcGFjZSgpKTsKICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxB
cnJheS0+bGVuZ3RoKCk7CiAgICAgdWludDhfdCogZGF0YSA9IHBpeGVsQXJyYXktPmRhdGEoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIHBpeGVsT2Zmc2V0ID0gMDsgcGl4ZWxPZmZzZXQgPCBwaXhlbEFy
cmF5TGVuZ3RoOyBwaXhlbE9mZnNldCArPSA0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5o
CmluZGV4IDJiNTg2ZGVmN2ZiNDJhMzdiMmUxMjNlZGE4NzExOWM0ZWIzNDhhNTEuLjEwNWVmMjMy
Yjk0ZWUyMjM0NmRlZTAzYzE0ODY4OTQ0M2RlN2M3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1dGVMb29r
dXBUYWJsZXMoTG9va3VwVGFibGUmIHJlZFRhYmxlLCBMb29rdXBUYWJsZSYgZ3JlZW5UYWJsZSwg
TG9va3VwVGFibGUmIGJsdWVUYWJsZSwgTG9va3VwVGFibGUmIGFscGhhVGFibGUpOwogCi0gICAg
dm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZhY3RvcnkmKSBvdmVycmlkZTsKIAogICAgIFdURjo6
VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXBy
ZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4IDRk
MjI4ZjkwNWIyMGZiOTEzYWRkZmJkYmQyOTg5OWI0ODgxZjZkYTkuLjQ5MzNmYzFiYWZjMjIxODVh
MjYzODNkMGI0Njc4MzAzNTgyMGMyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBAIC0yMjMsNyArMjIz
LDcgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogICAg
IH0KIH0KIAotdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQg
RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZhY3RvcnkmIGlt
YWdlQnVmZmVyRmFjdG9yeSkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3Qo
MCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKQEAgLTIzNSwyNCAr
MjM1LDI0IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgSW50UmVjdCBlZmZlY3RBRHJhd2luZ1JlY3QgPSBy
ZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsK
LSAgICAgICAgYXV0byBzcmNQaXhlbEFycmF5ID0gaW4tPnByZW11bHRpcGxpZWRSZXN1bHQoZWZm
ZWN0QURyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOworICAgICAgICBhdXRvIHNy
Y1BpeGVsQXJyYXkgPSBpbi0+cHJlbXVsdGlwbGllZFJlc3VsdChpbWFnZUJ1ZmZlckZhY3Rvcnks
IGVmZmVjdEFEcmF3aW5nUmVjdCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKICAgICAgICAgaWYg
KCFzcmNQaXhlbEFycmF5KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEludFJlY3Qg
ZWZmZWN0QkRyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgICAgICBpbjItPmNvcHlQcmVtdWx0aXBsaWVkUmVz
dWx0KCpkc3RQaXhlbEFycmF5LCBlZmZlY3RCRHJhd2luZ1JlY3QsIG9wZXJhdGluZ0NvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIGluMi0+Y29weVByZW11bHRpcGxpZWRSZXN1bHQoaW1hZ2VCdWZmZXJG
YWN0b3J5LCAqZHN0UGl4ZWxBcnJheSwgZWZmZWN0QkRyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xv
clNwYWNlKCkpOwogCiAgICAgICAgIHBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3YXJlKCpzcmNQaXhl
bEFycmF5LCAqZHN0UGl4ZWxBcnJheSwgbV9rMSwgbV9rMiwgbV9rMywgbV9rNCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJ
bWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0
ZUltYWdlQnVmZmVyUmVzdWx0KGltYWdlQnVmZmVyRmFjdG9yeSk7CiAgICAgaWYgKCFyZXN1bHRJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4
dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAKLSAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZm
ZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZm
ZXIyID0gaW4yLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1
ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdChpbWFnZUJ1ZmZlckZhY3RvcnkpOworICAgIElt
YWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcjIgPSBpbjItPmltYWdlQnVmZmVyUmVzdWx0KGltYWdlQnVm
ZmVyRmFjdG9yeSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXIyKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAppbmRleCA3ZDA4ZTFmNzEwN2I0Yjk2OGM1OGUzYTM3
YzMyYWUyZjc2YWVhMGMzLi43YjEzODBlZjdjY2ZiOGYzODVhM2NkNDE2NTU1MmZiNWQwMzNhY2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb3Jy
ZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRldGVybWluZUFi
c29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKEltYWdlQnVm
ZmVyRmFjdG9yeSYpIG92ZXJyaWRlOwogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihXVEY6OlRleHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgaW5saW5lIHZvaWQgcGxhdGZvcm1Bcml0aG1ldGljU29mdHdhcmUoY29u
c3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0
aW9uLCBmbG9hdCBrMSwgZmxvYXQgazIsIGZsb2F0IGszLCBmbG9hdCBrNCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZv
bHZlTWF0cml4LmNwcAppbmRleCAxY2M1MjkxMDZjZTQyYTk0NmFkOTE3MjRiMjIyNWY1OTNlNDg5
ZTBkLi4xNDNjMWY0MTkxZWY5N2EyODgzNzQyMzg5NmE1YjIxNjgwNDQwZjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b252b2x2ZU1hdHJpeC5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
RkVDb252b2x2ZU1hdHJpeDo6c2V0T3V0ZXJQaXhlbHMoUGFpbnRpbmdEYXRhJiBwYWludGluZ0Rh
dGEsCiAgICAgICAgIGZhc3RTZXRPdXRlclBpeGVsczxmYWxzZT4ocGFpbnRpbmdEYXRhLCB4MSwg
eTEsIHgyLCB5Mik7CiB9CiAKLXZvaWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKElt
YWdlQnVmZmVyRmFjdG9yeSYgaW1hZ2VCdWZmZXJGYWN0b3J5KQogewogICAgIEZpbHRlckVmZmVj
dCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApAQCAtMzg0LDkgKzM4NCw5IEBAIHZvaWQgRkVDb252
b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIFJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gc3JjUGl4ZWxBcnJheTsKICAgICBpZiAobV9wcmVzZXJ2ZUFscGhhKQotICAg
ICAgICBzcmNQaXhlbEFycmF5ID0gaW4tPnVubXVsdGlwbGllZFJlc3VsdChlZmZlY3REcmF3aW5n
UmVjdCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgc3JjUGl4ZWxBcnJheSA9IGlu
LT51bm11bHRpcGxpZWRSZXN1bHQoaW1hZ2VCdWZmZXJGYWN0b3J5LCBlZmZlY3REcmF3aW5nUmVj
dCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKICAgICBlbHNlCi0gICAgICAgIHNyY1BpeGVsQXJy
YXkgPSBpbi0+cHJlbXVsdGlwbGllZFJlc3VsdChlZmZlY3REcmF3aW5nUmVjdCwgb3BlcmF0aW5n
Q29sb3JTcGFjZSgpKTsKKyAgICAgICAgc3JjUGl4ZWxBcnJheSA9IGluLT5wcmVtdWx0aXBsaWVk
UmVzdWx0KGltYWdlQnVmZmVyRmFjdG9yeSwgZWZmZWN0RHJhd2luZ1JlY3QsIG9wZXJhdGluZ0Nv
bG9yU3BhY2UoKSk7CiAgICAgaWYgKCFzcmNQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b252b2x2ZU1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4LmgKaW5kZXggNjdkNGM2NTY3ZmNlNmIyN2VlNWFiODk1YTZlMWU1
MDA1NGUxM2RiYS4uYjYxNzhhZDIxNDhhNzNjMDk0Y2M3NzAzYjYxOTE3ZTgyN2YwZWRkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZv
bHZlTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFp
bnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KIAotICAgIHZvaWQg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoSW1hZ2VCdWZmZXJGYWN0b3J5Jikgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50
YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcApp
bmRleCBhNmVlNDQ2M2MzODA4OGMyMDc0Y2RhYzlkOGQ0ODQ3NjA2OGYyMjY1Li4xOTAwY2RlNTRl
OTA2ZWU0ZmFmOGYwMTc5MTYxYzM2MzBiNDgxYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
LmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGJ5dGVPZmZzZXRP
ZlBpeGVsKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVkIHJvd0J5dAogICAgIHJldHVy
biB4ICogYnl0ZXNQZXJQaXhlbCArIHkgKiByb3dCeXRlczsKIH0KIAotdm9pZCBGRURpc3BsYWNl
bWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFj
dG9yeSkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAgICAgRmls
dGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKQEAgLTEwNSwxMSArMTA1LDExIEBAIHZv
aWQgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEludFJlY3QgZWZmZWN0QURyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9u
T2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgYXV0byBpbnB1
dEltYWdlID0gaW4tPnByZW11bHRpcGxpZWRSZXN1bHQoZWZmZWN0QURyYXdpbmdSZWN0KTsKKyAg
ICBhdXRvIGlucHV0SW1hZ2UgPSBpbi0+cHJlbXVsdGlwbGllZFJlc3VsdChpbWFnZUJ1ZmZlckZh
Y3RvcnksIGVmZmVjdEFEcmF3aW5nUmVjdCk7CiAKICAgICBJbnRSZWN0IGVmZmVjdEJEcmF3aW5n
UmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4yLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKTsKICAgICAvLyBUaGUgY2FsY3VsYXRpb25zIHVzaW5nIHRoZSBwaXhlbCB2YWx1ZXMg
ZnJvbSDigJhpbjLigJkgYXJlIHBlcmZvcm1lZCB1c2luZyBub24tcHJlbXVsdGlwbGllZCBjb2xv
ciB2YWx1ZXMuCi0gICAgYXV0byBkaXNwbGFjZW1lbnRJbWFnZSA9IGluMi0+dW5tdWx0aXBsaWVk
UmVzdWx0KGVmZmVjdEJEcmF3aW5nUmVjdCk7CisgICAgYXV0byBkaXNwbGFjZW1lbnRJbWFnZSA9
IGluMi0+dW5tdWx0aXBsaWVkUmVzdWx0KGltYWdlQnVmZmVyRmFjdG9yeSwgZWZmZWN0QkRyYXdp
bmdSZWN0KTsKICAgICAKICAgICBpZiAoIWlucHV0SW1hZ2UgfHwgIWRpc3BsYWNlbWVudEltYWdl
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKaW5kZXggOGI2MTFkYTAx
NTIyZDU2NzQwMjhlMzUxMzI5ZjY5ZWU1MDA1NGMzMi4uYTNkNGFhZTMyZDRmNWY2OWU2ZTgxNGFi
NzdlZDFiNDk4MTE4NjM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaApAQCAtNTYsNyArNTYs
NyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJGRURpc3BsYWNlbWVudE1hcCI7IH0KIAotICAgIHZvaWQgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1h
Z2VCdWZmZXJGYWN0b3J5Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRS
ZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAppbmRleCAyMmI3NDQ1
NmQ4ZGU4ZWNhMmM0ZDFiYTZmMmU1YzJmMTEwNDk3ODI2Li42ZTA4MzNmNGIyN2MxMTYzYWQ5Mjhk
MThkYjMxYmQ1NDNiNjBlYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCkBAIC03MCwxMSArNzAsMTEg
QEAgdm9pZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICBz
ZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KSk7
CiB9CiAKLXZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBG
RURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZhY3RvcnkmIGlt
YWdlQnVmZmVyRmFjdG9yeSkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3Qo
MCk7CiAKLSAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJl
c3VsdCgpOworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVy
UmVzdWx0KGltYWdlQnVmZmVyRmFjdG9yeSk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQogICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldChk
cmF3aW5nUmVnaW9uKTsKICAgICBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldC5tb3ZlKG9mZnNldCk7
CiAKLSAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQo
KTsKKyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQo
aW1hZ2VCdWZmZXJGYWN0b3J5KTsKICAgICBpZiAoIXNvdXJjZUltYWdlKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEcm9wU2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRHJvcFNoYWRvdy5oCmluZGV4IGI0ZTBhMjAxMmZlZGI3Yjc3YmYzZTA1NzM0ZWU4OGEy
OWVmZjM4NGMuLmY5NTk5ZGFlZmJjY2M1ZThiY2JiOGQ0MGE4MjIyYTdiZGViNjcwZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hh
ZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURy
b3BTaGFkb3cuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgY2hhciog
ZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRURyb3BTaGFkb3ciOyB9CiAKLSAg
ICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKEltYWdlQnVmZmVyRmFjdG9yeSYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAppbmRleCBi
NDIzNTUzNGMzOGIxZWJhMjExZWU4NDg2MTc5OTIzODBmM2I2YjAxLi45MDdjOGI2OWQ2M2E0ZGU2
ZTM2ZWQ2NWEzZmY2ODEyZDNhNmZlMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKQEAgLTU4LDkgKzU4LDkgQEAgYm9v
bCBGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvb2RPcGFjaXR5KQogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIEZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lk
IEZFRmxvb2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdl
QnVmZmVyRmFjdG9yeSkKIHsKLSAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJ
bWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0
ZUltYWdlQnVmZmVyUmVzdWx0KGltYWdlQnVmZmVyRmFjdG9yeSk7CiAgICAgaWYgKCFyZXN1bHRJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCmluZGV4IGY2NjkxZTQ2NGRhZDgzNWEwMWZkODA2
OTQ0OTViZWI0YjNmYWM3YzguLjZiZWUwMWQ0OGI0OTg4MmYzYjVmZjRiYWRlYjI4YTE1MjY3MGMx
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVGbG9vZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVGbG9vZC5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBjaGFyKiBm
aWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFRmxvb2QiOyB9CiAKLSAgICB2b2lk
IHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKEltYWdlQnVmZmVyRmFjdG9yeSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZXRl
cm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3Qo
ZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
Y3BwCmluZGV4IDNhNGRmNDc1ODNkYTY0YWRlNmFiYTA1NDExNjJmM2RlMzhlNjI5OTcuLjkzZGJj
ODQ4MmFiNWZkNDI4YzkxY2ZlZTQzNzQwNDM3MGU4ZjM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
Y3BwCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QoKQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJl
Y3QoYWJzb2x1dGVQYWludFJlY3QpKTsKIH0KIAotdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZShJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFjdG9yeSkKIHsKICAgICBGaWx0
ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7CiAKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lk
IEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIHNldElzQWxwaGFJ
bWFnZShpbi0+aXNBbHBoYUltYWdlKCkpOwogCiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5nUmVj
dCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkpOwotICAgIGluLT5jb3B5UHJlbXVsdGlwbGllZFJlc3VsdCgqZHN0UGl4ZWxBcnJheSwgZWZm
ZWN0RHJhd2luZ1JlY3QsIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CisgICAgaW4tPmNvcHlQcmVt
dWx0aXBsaWVkUmVzdWx0KGltYWdlQnVmZmVyRmFjdG9yeSwgKmRzdFBpeGVsQXJyYXksIGVmZmVj
dERyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogICAgIGlmICghbV9zdGRYICYm
ICFtX3N0ZFkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCmluZGV4IDVmYjk3
ZmZiMDcwYzJkYWViNmViMjgzYmVhYWExNzY0N2NiYjJkM2UuLmUwNjhiM2NlZmI1YmZlODk3YWQ4
MjU2ODljMDE1MmQ0ZWNlZmU2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKQEAgLTY0LDcgKzY0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQga2VybmVsU2l6ZVk7CiAgICAgfTsKIAotICAg
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoSW1hZ2VCdWZmZXJGYWN0b3J5Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCmlu
ZGV4IDI1NjI1MmJjMzBiMTQxMWQzMzYzZmMwMjIzYTAyNzRmOWNmZjRiNTguLjAzMWM1MDg0N2Q1
MzhlOGNhYTM2MDZlYWM4ODE3NDJhZGUzOGZkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcApAQCAtNDc1LDcg
KzQ3NSw3IEBAIGJvb2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5
JiBwaXhlbHMsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUxpZ2h0aW5n
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1hZ2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZlckZh
Y3RvcnkpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkBAIC00
ODcsNyArNDg3LDcgQEAgdm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
ICAgIHNldElzQWxwaGFJbWFnZShmYWxzZSk7CiAKICAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdS
ZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJl
Y3QoKSk7Ci0gICAgaW4tPmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KCpyZXN1dFBpeGVsQXJyYXks
IGVmZmVjdERyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOworICAgIGluLT5jb3B5
UHJlbXVsdGlwbGllZFJlc3VsdChpbWFnZUJ1ZmZlckZhY3RvcnksICpyZXN1dFBpeGVsQXJyYXks
IGVmZmVjdERyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogICAgIC8vIEZJWE1F
OiBzdXBwb3J0IGtlcm5lbFVuaXRMZW5ndGhzIG90aGVyIHRoYW4gKDEsMSkuIFRoZSBpc3N1ZSBo
ZXJlIGlzIHRoYXQgdGhlIFczCiAgICAgLy8gc3RhbmRhcmQgaGFzIG5vIHRlc3QgY2FzZSBmb3Ig
dGhlbSwgYW5kIG90aGVyIGJyb3dzZXJzIChsaWtlIEZpcmVmb3gpIGhhcyBzdHJhbmdlCiAgICAg
Ly8gb3V0cHV0IGZvciB2YXJpb3VzIGtlcm5lbFVuaXRMZW5ndGhzLCBhbmQgSSBhbSBub3Qgc3Vy
ZSB0aGV5IGFyZSByZWxpYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXggN2ZiNTYwOWRiYjU3Yjc2MjAxZjMz
MDMzNzA1MmU0MWFjMjUwM2NmOS4uYTM3YTU4ZmU1MzljMmQyMjI5MTZjNmU0Y2VlNzliMGI5ZTQ1
NTBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUxpZ2h0aW5nLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBzZXRQaXhlbChpbnQgb2Zmc2V0LCBjb25zdCBMaWdodGluZ0RhdGEmLCBjb25zdCBMaWdodFNv
dXJjZTo6UGFpbnRpbmdEYXRhJiwgaW50IHgsIGludCB5LCBmbG9hdCBmYWN0b3JYLCBmbG9hdCBm
YWN0b3JZLCBJbnRTaXplIG5vcm1hbFZlY3Rvcik7CiAgICAgdm9pZCBzZXRQaXhlbEludGVybmFs
KGludCBvZmZzZXQsIGNvbnN0IExpZ2h0aW5nRGF0YSYsIGNvbnN0IExpZ2h0U291cmNlOjpQYWlu
dGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IGZhY3RvclgsIGZsb2F0IGZhY3RvclksIElu
dFNpemUgbm9ybWFsVmVjdG9yLCBmbG9hdCBhbHBoYSk7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKElt
YWdlQnVmZmVyRmFjdG9yeSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5KGNv
bnN0IExpZ2h0aW5nRGF0YSYsIGNvbnN0IExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1l
cmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJn
ZS5jcHAKaW5kZXggMGEyMDAwMWIxNzNiZDhmZGY2YmJhNjM2Y2QyM2NlNDcwMjZlN2IzZi4uN2Rh
NzFjYmJkYmJiMTJjNWNmY2IzYzdmZTljMTJkOGM2MWM4ODEzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC0zOCwx
MiArMzgsMTIgQEAgUmVmPEZFTWVyZ2U+IEZFTWVyZ2U6OmNyZWF0ZShGaWx0ZXImIGZpbHRlcikK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRU1lcmdlKGZpbHRlcikpOwogfQogCi12b2lkIEZF
TWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFTWVyZ2U6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFjdG9yeSkKIHsKICAg
ICB1bnNpZ25lZCBzaXplID0gbnVtYmVyT2ZFZmZlY3RJbnB1dHMoKTsKICAgICBBU1NFUlQoc2l6
ZSA+IDApOwogCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZm
ZXJSZXN1bHQoKTsKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1
ZmZlclJlc3VsdChpbWFnZUJ1ZmZlckZhY3RvcnkpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIEZFTWVyZ2U6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChpKTsKLSAgICAg
ICAgaWYgKEltYWdlQnVmZmVyKiBpbkJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdCgpKQor
ICAgICAgICBpZiAoSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmltYWdlQnVmZmVyUmVzdWx0
KGltYWdlQnVmZmVyRmFjdG9yeSkpCiAgICAgICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcigqaW5CdWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRl
UGFpbnRSZWN0KCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oCmluZGV4IDVjZmM1Y2I3OTgxOWNlY2VkNTA3M2U1
N2IwMTk0ZWJjZjE4ZjI2MDcuLmM0ZjQ5OTRlYzYyM2FlNDViMmMyYzEyNTEyODkxZDgxOGU2ODky
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVNZXJnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVNZXJnZS5oCkBAIC0zNSw3ICszNSw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBjaGFyKiBm
aWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFTWVyZ2UiOyB9CiAKLSAgICB2b2lk
IHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKEltYWdlQnVmZmVyRmFjdG9yeSYpIG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0
U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2Vu
dGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwCmluZGV4IDE0
ODZkNjFjZjg5MWYyM2FmMDgwMmQxYTczOTQwMWM0Y2M4ZGQ1M2YuLmVkYzNiMjAyMmM5MGQzMzFj
ZDY3ODVjNzgzYmE0ZTUwNzNjNjAxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAgLTIzMCwxNyAr
MjMwLDE3IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5KGNvbnN0IFBhaW50aW5n
RGF0YSYgcGFpbnRpbmdEYXRhKQogICAgIHBsYXRmb3JtQXBwbHlHZW5lcmljKHBhaW50aW5nRGF0
YSwgMCwgcGFpbnRpbmdEYXRhLmhlaWdodCk7CiB9CiAKLWJvb2wgRkVNb3JwaG9sb2d5OjpwbGF0
Zm9ybUFwcGx5RGVnZW5lcmF0ZShVaW50OENsYW1wZWRBcnJheSYgZHN0UGl4ZWxBcnJheSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1kpCitib29sIEZF
TW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoSW1hZ2VCdWZmZXJGYWN0b3J5JiBp
bWFnZUJ1ZmZlckZhY3RvcnksIFVpbnQ4Q2xhbXBlZEFycmF5JiBkc3RQaXhlbEFycmF5LCBjb25z
dCBJbnRSZWN0JiBpbWFnZVJlY3QsIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSkKIHsKICAgICBp
ZiAocmFkaXVzWCA8IDAgfHwgcmFkaXVzWSA8IDAgfHwgKCFyYWRpdXNYICYmICFyYWRpdXNZKSkg
ewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoMCk7Ci0gICAgICAgIGlu
LT5jb3B5UHJlbXVsdGlwbGllZFJlc3VsdChkc3RQaXhlbEFycmF5LCBpbWFnZVJlY3QsIG9wZXJh
dGluZ0NvbG9yU3BhY2UoKSk7CisgICAgICAgIGluLT5jb3B5UHJlbXVsdGlwbGllZFJlc3VsdChp
bWFnZUJ1ZmZlckZhY3RvcnksIGRzdFBpeGVsQXJyYXksIGltYWdlUmVjdCwgb3BlcmF0aW5nQ29s
b3JTcGFjZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lk
IEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKEltYWdlQnVmZmVyRmFjdG9yeSYg
aW1hZ2VCdWZmZXJGYWN0b3J5KQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVj
dCgwKTsKIApAQCAtMjU0LDExICsyNTQsMTEgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5nUmVjdCA9IHJlcXVlc3Rl
ZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogCiAgICAg
SW50U2l6ZSByYWRpdXMgPSBmbG9vcmVkSW50U2l6ZShGbG9hdFNpemUobV9yYWRpdXNYLCBtX3Jh
ZGl1c1kpKTsKLSAgICBpZiAocGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoKmRzdFBpeGVsQXJyYXks
IGVmZmVjdERyYXdpbmdSZWN0LCByYWRpdXMud2lkdGgoKSwgcmFkaXVzLmhlaWdodCgpKSkKKyAg
ICBpZiAocGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoaW1hZ2VCdWZmZXJGYWN0b3J5LCAqZHN0UGl4
ZWxBcnJheSwgZWZmZWN0RHJhd2luZ1JlY3QsIHJhZGl1cy53aWR0aCgpLCByYWRpdXMuaGVpZ2h0
KCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRl
cigpOwotICAgIGF1dG8gc3JjUGl4ZWxBcnJheSA9IGluLT5wcmVtdWx0aXBsaWVkUmVzdWx0KGVm
ZmVjdERyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOworICAgIGF1dG8gc3JjUGl4
ZWxBcnJheSA9IGluLT5wcmVtdWx0aXBsaWVkUmVzdWx0KGltYWdlQnVmZmVyRmFjdG9yeSwgZWZm
ZWN0RHJhd2luZ1JlY3QsIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAgICAgaWYgKCFzcmNQaXhl
bEFycmF5KQogICAgICAgICByZXR1cm47CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIEZFTW9y
cGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBpbnQgcmFkaXVzWCA9IHN0ZDo6
bWluKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgLSAxLCByYWRpdXMud2lkdGgoKSk7CiAgICAg
aW50IHJhZGl1c1kgPSBzdGQ6Om1pbihlZmZlY3REcmF3aW5nUmVjdC5oZWlnaHQoKSAtIDEsIHJh
ZGl1cy5oZWlnaHQoKSk7CiAKLSAgICBpZiAocGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoKmRzdFBp
eGVsQXJyYXksIGVmZmVjdERyYXdpbmdSZWN0LCByYWRpdXNYLCByYWRpdXNZKSkKKyAgICBpZiAo
cGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoaW1hZ2VCdWZmZXJGYWN0b3J5LCAqZHN0UGl4ZWxBcnJh
eSwgZWZmZWN0RHJhd2luZ1JlY3QsIHJhZGl1c1gsIHJhZGl1c1kpKQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCmluZGV4
IDQ4ZmMzNTQxMTdmYzI3Y2NmYzhlOTNmMTRlZGYwNzVkZTM5YzVhMTEuLjkzOGNjMTIyYjdmZDVk
YzE1MTJkNzY4NTM3OTViZTA1NGQ3Y2Q5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaApAQCAtNTAsMTMgKzUw
LDEzIEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIkZFTW9ycGhvbG9neSI7IH0KIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1hZ2VC
dWZmZXJGYWN0b3J5Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCkgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIGJvb2wgcGxhdGZvcm1BcHBseURlZ2VuZXJhdGUoVWludDhDbGFtcGVkQXJy
YXkmIGRzdFBpeGVsQXJyYXksIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgaW50IHJhZGl1c1gs
IGludCByYWRpdXNZKTsKKyAgICBib29sIHBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKEltYWdlQnVm
ZmVyRmFjdG9yeSYsIFVpbnQ4Q2xhbXBlZEFycmF5JiBkc3RQaXhlbEFycmF5LCBjb25zdCBJbnRS
ZWN0JiBpbWFnZVJlY3QsIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSk7CiAKICAgICBzdHJ1Y3Qg
UGFpbnRpbmdEYXRhIHsKICAgICAgICAgY29uc3QgVWludDhDbGFtcGVkQXJyYXkqIHNyY1BpeGVs
QXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwCmluZGV4IDAyNzBkYjkyNDgxYTMzOTJkM2Q1YTFlOTE3YzJkNjVhYTQx
NDBmNjkuLmJjM2UwYjIxNmEwMzA4OGY1MjUxNjg1N2E4Yjk2NjI0N2JkMjBiMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
Y3BwCkBAIC02NCwxMiArNjQsMTIgQEAgdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJzb2x1dGVQ
YWludFJlY3QoKQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocGFp
bnRSZWN0KSk7CiB9CiAKLXZvaWQgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2
b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1hZ2VCdWZmZXJGYWN0b3J5JiBp
bWFnZUJ1ZmZlckZhY3RvcnkpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0
KDApOwogCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKLSAgICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1
bHQoKTsKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJl
c3VsdChpbWFnZUJ1ZmZlckZhY3RvcnkpOworICAgIEltYWdlQnVmZmVyKiBpbkJ1ZmZlciA9IGlu
LT5pbWFnZUJ1ZmZlclJlc3VsdChpbWFnZUJ1ZmZlckZhY3RvcnkpOwogICAgIGlmICghcmVzdWx0
SW1hZ2UgfHwgIWluQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaAppbmRleCA2NWFiZGE5
MGE0N2IxYmZlNzZhZTVjNzRhYWI1YWExNjdmYjFlNjllLi41MGVlZTgzMWQ0ZTAzYzhhNjBhMzYw
MTI4NDQyNmYwZDk3NzY5MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oCkBAIC00MSw3ICs0MSw3IEBAIHByaXZhdGU6CiAK
ICAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFT2Zm
c2V0IjsgfQogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZhY3RvcnkmKSBvdmVycmlk
ZTsKICAgICAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcAppbmRleCBhZmJlNzA2YWRkYzIyN2RhMTBjYjc4ODI4ODg2YzEyOWIxOTI0MWNjLi43
ODhmMzI2NjBjZDM1YTZmNjMwOWQxMWM5OGYwMzkzYjM3M2NiZDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC00MSwx
MyArNDEsMTMgQEAgUmVmPEZFVGlsZT4gRkVUaWxlOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIpCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVUaWxlKGZpbHRlcikpOwogfQogCi12b2lkIEZFVGls
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoSW1hZ2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZlckZhY3RvcnkpCiB7CiAvLyBGSVhN
RTogU2VlIGJ1ZyA0NzMxNS4gVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgYSBjb21waWxl
IGZhaWx1cmUsIGJ1dCBpcyBpbmNvcnJlY3QgYmVoYXZpb3Igb3RoZXJ3aXNlLgogICAgIEZpbHRl
ckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAotICAgIEltYWdlQnVmZmVyKiByZXN1bHRJ
bWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgSW1hZ2VCdWZmZXIqIGluQnVm
ZmVyID0gaW4tPmltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoaW1hZ2VCdWZmZXJGYWN0b3J5KTsKKyAgICBJ
bWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQoaW1hZ2VCdWZmZXJG
YWN0b3J5KTsKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFpbkJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLndp
ZHRoKCksIGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpOwogICAgIH0KIAotICAg
IGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
dGlsZVJlY3QsIHRpbGVSZWN0LCBDb2xvclNwYWNlOjpTUkdCLCBmaWx0ZXIoKS5yZW5kZXJpbmdN
b2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXJGYWN0b3J5LCB0aWxlUmVjdCwgdGlsZVJlY3QsIGZpbHRl
cigpLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVRpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmgKaW5kZXggNDliZDk5ZjA5NDQ3ZGFlMWNmMDlhZjEyMzU4YzZkZTg0MDY4NzcxNC4uODMz
MGM5NTI1ODYyNTNhYmVmMDRhYjgzNmZiZmI0NjE0MWJkMGNhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCkBAIC0zNyw3ICszNyw3
IEBAIHByaXZhdGU6CiAKICAgICBGaWx0ZXJFZmZlY3RUeXBlIGZpbHRlckVmZmVjdFR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBGaWx0ZXJFZmZlY3RUeXBlVGlsZTsgfQogCi0gICAgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZhY3RvcnkmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0
KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
CmluZGV4IGQ2ZGI4OGYxY2M2MjhlMDVlNzNhMzYyZTJmN2ZjYTI4M2Q1ZDUxNzAuLmFkYWY1MmFh
OWQ5NzdkOWU0OGYyYjY0MjdkZDhhZjllZWZiZmZhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAg
LTM5Myw3ICszOTMsNyBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbldvcmtlcihGaWxs
UmVnaW9uUGFyYW1ldGVycyogcGFyYW1ldGVycykKICAgICBwYXJhbWV0ZXJzLT5maWx0ZXItPmZp
bGxSZWdpb24oKnBhcmFtZXRlcnMtPnBpeGVsQXJyYXksICpwYXJhbWV0ZXJzLT5wYWludGluZ0Rh
dGEsIHBhcmFtZXRlcnMtPnN0aXRjaERhdGEsIHBhcmFtZXRlcnMtPnN0YXJ0WSwgcGFyYW1ldGVy
cy0+ZW5kWSk7CiB9CiAKLXZvaWQgRkVUdXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQordm9pZCBGRVR1cmJ1bGVuY2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShJbWFnZUJ1ZmZlckZh
Y3RvcnkmKQogewogICAgIGF1dG8qIHJlc3VsdEltYWdlID0gY3JlYXRlVW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQoKTsKICAgICBhdXRvKiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UgPyByZXN1bHRJ
bWFnZS0+ZGF0YSgpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCmluZGV4IDI0MzgyZjU4YTViZWQ0
MTgwY2QzZDU5MjM4ZmI4YTU0MjcyNGRhYWEuLmM1ZWZkNTc3MTkxMWI2MzQ5MmU5MmJmOGE2N2Vl
NGVjZWZiNGNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaApAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6
CiAKICAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZF
VHVyYnVsZW5jZSI7IH0KIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1hZ2VCdWZmZXJGYWN0b3J5Jikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRl
IHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkp
KTsgfQogICAgIFdURjo6VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OlRl
eHRTdHJlYW0mLCBSZXByZXNlbnRhdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAKaW5kZXggNWJkYWRiMmZkOGQwMTYxNGMwMWZmMDc0NzEzOTgwZTlhZWVkYjcyNS4u
ODE0ZTIzNDMwODQ1Y2E4MzljZTk4OTJmMDU0ZTQzMDUyMjFjOWE0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkdl
b21ldHJ5VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIKICNpbmNs
dWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgpAQCAtMTYzLDE0ICsxNjMsMTQgQEAgdW5zaWduZWQgRmls
dGVyRWZmZWN0Ojp0b3RhbE51bWJlck9mRWZmZWN0SW5wdXRzKCkgY29uc3QKICAgICByZXR1cm4g
Y29sbGVjdEVmZmVjdHModGhpcywgYWxsRWZmZWN0cyk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0
OjphcHBseSgpCit2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHkoSW1hZ2VCdWZmZXJGYWN0b3J5JiBp
bWFnZUJ1ZmZlckZhY3RvcnkpCiB7CiAgICAgaWYgKGhhc1Jlc3VsdCgpKQogICAgICAgICByZXR1
cm47CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1faW5wdXRFZmZlY3RzLnNpemUoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCog
aW4gPSBtX2lucHV0RWZmZWN0cy5hdChpKS5nZXQoKTsKLSAgICAgICAgaW4tPmFwcGx5KCk7Cisg
ICAgICAgIGluLT5hcHBseShpbWFnZUJ1ZmZlckZhY3RvcnkpOwogICAgICAgICBpZiAoIWluLT5o
YXNSZXN1bHQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTkyLDcgKzE5Miw3IEBAIHZv
aWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAgICAgfQogICAgIAogICAgIC8vIEFkZCBwbGF0Zm9y
bSBzcGVjaWZpYyBhcHBseSBmdW5jdGlvbnMgaGVyZSBhbmQgcmV0dXJuIGVhcmxpZXIuCi0gICAg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCk7CisgICAgcGxhdGZvcm1BcHBseVNvZnR3YXJlKGltYWdl
QnVmZmVyRmFjdG9yeSk7CiB9CiAKIHZvaWQgRmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVs
dGlwbGllZFBpeGVscygpCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNs
ZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpCiAgICAgICAgIG1faW5wdXRFZmZlY3RzLmF0KGkpLmdldCgp
LT5jbGVhclJlc3VsdHNSZWN1cnNpdmUoKTsKIH0KIAotSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVj
dDo6aW1hZ2VCdWZmZXJSZXN1bHQoKQorSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6aW1hZ2VC
dWZmZXJSZXN1bHQoSW1hZ2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZlckZhY3RvcnkpCiB7CiAg
ICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiRmlsdGVyRWZmZWN0ICIgPDwg
ZmlsdGVyTmFtZSgpIDw8ICIgIiA8PCB0aGlzIDw8ICIgaW1hZ2VCdWZmZXJSZXN1bHQoKS4gRXhp
c3RpbmcgaW1hZ2UgYnVmZmVyICIgPDwgbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKSA8PCAgIiBt
X3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCAiIDw8IFZhbHVlT3JOdWxsKG1fcHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0LmdldCgpKSA8PCAiIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgIiA8PCBW
YWx1ZU9yTnVsbChtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0LmdldCgpKSk7CiAKQEAgLTI3Myw3
ICsyNzMsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCgp
CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1bHQpCiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVm
ZmVyUmVzdWx0LmdldCgpOwogCi0gICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVy
OjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01v
ZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9yZXN1bHRDb2xvclNwYWNlKTsKKyAgICBt
X2ltYWdlQnVmZmVyUmVzdWx0ID0gaW1hZ2VCdWZmZXJGYWN0b3J5LmNyZWF0ZUltYWdlQnVmZmVy
KG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIFJl
bmRlcmluZ1B1cnBvc2U6OkRPTSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9yZXN1bHRDb2xv
clNwYWNlKTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1bHQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkBAIC0yODUsNyArMjg1LDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6
aW1hZ2VCdWZmZXJSZXN1bHQoKQogICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgp
OwogfQogCi1SZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBs
aWVkUmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9y
U3BhY2UpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBs
aWVkUmVzdWx0KEltYWdlQnVmZmVyRmFjdG9yeSYgaW1hZ2VCdWZmZXJGYWN0b3J5LCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBPcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQogewogICAgIElu
dFNpemUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6
c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwpAQCAtMjkzLDExICsyOTMsMTEgQEAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChj
b25zdCBJbnRSZWN0JiByZWN0LAogICAgIGF1dG8gaW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoKHNjYWxlZFNpemUuYXJlYSgpICogNCkudW5zYWZl
R2V0KCkpOwogICAgIGlmICghaW1hZ2VEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KCppbWFnZURhdGEsIHJlY3QsIGNvbG9yU3BhY2UpOwor
ICAgIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoaW1hZ2VCdWZmZXJGYWN0b3J5LCAqaW1hZ2VEYXRh
LCByZWN0LCBjb2xvclNwYWNlKTsKICAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCi1SZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25z
dCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQorUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoSW1h
Z2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZlckZhY3RvcnksIGNvbnN0IEludFJlY3QmIHJlY3Qs
IE9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRT
aXplKHJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFt
cGluZyhzY2FsZWRTaXplKSk7CkBAIC0zMDUsNyArMzA1LDcgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBl
ZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYg
cmVjdCwKICAgICBhdXRvIGltYWdlRGF0YSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKChzY2FsZWRTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICBp
ZiAoIWltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29weVByZW11bHRp
cGxpZWRSZXN1bHQoKmltYWdlRGF0YSwgcmVjdCwgY29sb3JTcGFjZSk7CisgICAgY29weVByZW11
bHRpcGxpZWRSZXN1bHQoaW1hZ2VCdWZmZXJGYWN0b3J5LCAqaW1hZ2VEYXRhLCByZWN0LCBjb2xv
clNwYWNlKTsKICAgICByZXR1cm4gaW1hZ2VEYXRhOwogfQogCkBAIC00MzMsMjMgKzQzMywyMyBA
QCBzdGF0aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhhKGNvbnN0IFVpbnQ4Q2xhbXBl
ZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbQogI2VuZGlmCiB9CiAKLVJlZlB0cjxJbWFnZURhdGE+
IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlRGF0YVRvQ29sb3JTcGFjZShDb2xvclNwYWNlIHRh
cmdldENvbG9yU3BhY2UsIEltYWdlRGF0YSYgaW5wdXREYXRhLCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIG91dHB1dEZvcm1hdCkKK1JlZlB0cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6Y29udmVy
dEltYWdlRGF0YVRvQ29sb3JTcGFjZShJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFj
dG9yeSwgQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBJbWFnZURhdGEmIGlucHV0RGF0YSwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQpCiB7CiAgICAgSW50UmVjdCBkZXN0
aW5hdGlvblJlY3QoSW50UG9pbnQoKSwgaW5wdXREYXRhLnNpemUoKSk7CiAgICAgRmxvYXRTaXpl
IGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKGlucHV0RGF0YS5zaXplKCkp
OwogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB0byBzdG9yZSBpbmNvbWluZyBJbWFnZURh
dGEKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1f
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgb3BlcmF0aW5n
Q29sb3JTcGFjZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGltYWdlQnVmZmVyRmFjdG9yeS5jcmVh
dGVJbWFnZUJ1ZmZlcihjbGFtcGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBSZW5k
ZXJpbmdQdXJwb3NlOjpET00sIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG9wZXJhdGluZ0NvbG9y
U3BhY2UoKSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IGJ1ZmZlci0+cHV0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgaW5wdXREYXRhLCBkZXN0aW5hdGlv
blJlY3QpOwotICAgIHJldHVybiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFyZ2V0
Q29sb3JTcGFjZSwgKmJ1ZmZlciwgZGVzdGluYXRpb25SZWN0LCBvdXRwdXRGb3JtYXQpOworICAg
IHJldHVybiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoaW1hZ2VCdWZmZXJGYWN0b3J5
LCB0YXJnZXRDb2xvclNwYWNlLCAqYnVmZmVyLCBkZXN0aW5hdGlvblJlY3QsIG91dHB1dEZvcm1h
dCk7CiB9CiAKLVJlZlB0cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVm
ZmVyVG9Db2xvclNwYWNlKENvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXIm
IGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCkKK1JlZlB0cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6Y29udmVydElt
YWdlQnVmZmVyVG9Db2xvclNwYWNlKEltYWdlQnVmZmVyRmFjdG9yeSYgaW1hZ2VCdWZmZXJGYWN0
b3J5LCBDb2xvclNwYWNlIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZl
ciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3Jt
YXQpCiB7CiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRT
aXplKHJlY3Quc2l6ZSgpKTsKICAgICAvLyBDcmVhdGUgYW4gSW1hZ2VCdWZmZXIgd2l0aCB0aGUg
Y29ycmVjdCBjb2xvciBzcGFjZSBhbmQgdXRpbGl6ZSBDRyB0byBoYW5kbGUgY29sb3Igc3BhY2Ug
Y29udmVyc2lvbgotICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0ZXJT
Y2FsZSgpLCB0YXJnZXRDb2xvclNwYWNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IGlt
YWdlQnVmZmVyRmFjdG9yeS5jcmVhdGVJbWFnZUJ1ZmZlcihjbGFtcGVkU2l6ZSwgbV9maWx0ZXIu
cmVuZGVyaW5nTW9kZSgpLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIG1fZmlsdGVyLmZpbHRlclNj
YWxlKCksIHRhcmdldENvbG9yU3BhY2UpOwogICAgIGlmICghY29udmVydGVkQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAvLyBDb2xvciBzcGFjZSBjb252ZXJzaW9uIGhhcHBl
bnMgaW50ZXJuYWxseSB3aGVuIGRyYXdpbmcgZnJvbSBvbmUgaW1hZ2UgYnVmZmVyIHRvIGFub3Ro
ZXIKQEAgLTQ1NywyNiArNDU3LDI2IEBAIFJlZlB0cjxJbWFnZURhdGE+IEZpbHRlckVmZmVjdDo6
Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKENvbG9yU3BhY2UgdGFyZ2V0CiAgICAgcmV0
dXJuIGNvbnZlcnRlZEJ1ZmZlci0+Z2V0SW1hZ2VEYXRhKG91dHB1dEZvcm1hdCwgcmVjdCk7CiB9
CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0
aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0
aW5hdGlvbihJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFjdG9yeSwgVWludDhDbGFt
cGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAg
ICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV9pbWFnZUJ1ZmZlclJlc3VsdCwgYW5k
IHNhdmUgdG8gZGVzdGluYXRpb24KLSAgICBhdXRvIGNvbnZlcnRlZEltYWdlRGF0YSA9IGNvbnZl
cnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb2xvclNwYWNlLCAqbV9pbWFnZUJ1ZmZlclJlc3Vs
dCwgeyBJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSB9LCBvdXRwdXRGb3Jt
YXQpOworICAgIGF1dG8gY29udmVydGVkSW1hZ2VEYXRhID0gY29udmVydEltYWdlQnVmZmVyVG9D
b2xvclNwYWNlKGltYWdlQnVmZmVyRmFjdG9yeSwgY29sb3JTcGFjZSwgKm1faW1hZ2VCdWZmZXJS
ZXN1bHQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSwgb3V0cHV0
Rm9ybWF0KTsKICAgICBpZiAoIWNvbnZlcnRlZEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGNvcHlJbWFnZUJ5dGVzKCpjb252ZXJ0ZWRJbWFnZURhdGEtPmRhdGEoKSwgZGVzdGluYXRp
b24sIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFn
ZURhdGFUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgSW1hZ2VE
YXRhJiBpbWFnZURhdGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJF
ZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rlc3RpbmF0aW9uKEltYWdlQnVmZmVyRmFj
dG9yeSYgaW1hZ2VCdWZmZXJGYWN0b3J5LCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24s
IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAg
ICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dC9tX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwKICAgICAvLyB3aGljaGV2ZXIgaXNuJ3QgbnVs
bCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KLSAgICBhdXRvIGNvbnZlcnRlZEltYWdlRGF0YSA9
IGNvbnZlcnRJbWFnZURhdGFUb0NvbG9yU3BhY2UoY29sb3JTcGFjZSwgaW1hZ2VEYXRhLCBvdXRw
dXRGb3JtYXQpOworICAgIGF1dG8gY29udmVydGVkSW1hZ2VEYXRhID0gY29udmVydEltYWdlRGF0
YVRvQ29sb3JTcGFjZShpbWFnZUJ1ZmZlckZhY3RvcnksIGNvbG9yU3BhY2UsIGltYWdlRGF0YSwg
b3V0cHV0Rm9ybWF0KTsKICAgICBpZiAoIWNvbnZlcnRlZEltYWdlRGF0YSkKICAgICAgICAgcmV0
dXJuOwogICAgIGNvcHlJbWFnZUJ5dGVzKCpjb252ZXJ0ZWRJbWFnZURhdGEtPmRhdGEoKSwgZGVz
dGluYXRpb24sIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRp
cGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBPcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQordm9pZCBGaWx0ZXJFZmZl
Y3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQoSW1hZ2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZl
ckZhY3RvcnksIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYg
cmVjdCwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKICAgICBBU1NFUlQoaGFz
UmVzdWx0KCkpOwogICAgIApAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpj
b3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29u
c3QKICAgICAgICAgLy8gV2UgcHJlZmVyIGEgY29udmVyc2lvbiBmcm9tIHRoZSBpbWFnZSBidWZm
ZXIuCiAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAo
cmVxdWlyZXNJbWFnZURhdGFDb2xvclNwYWNlQ29udmVyc2lvbihjb2xvclNwYWNlKSkgewotICAg
ICAgICAgICAgICAgIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oZGVzdGlu
YXRpb24sICpjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIHJlY3QpOworICAgICAgICAgICAgICAgIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVz
dGluYXRpb24oaW1hZ2VCdWZmZXJGYWN0b3J5LCBkZXN0aW5hdGlvbiwgKmNvbG9yU3BhY2UsIEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgcmVjdCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJ
bWFnZVJlc3VsdCA9IG1faW1hZ2VCdWZmZXJSZXN1bHQtPmdldEltYWdlRGF0YShBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkgfSk7CkBAIC01MDMsMTMgKzUwMywxMyBAQCB2b2lkIEZpbHRlckVmZmVj
dDo6Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24s
IGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHJlcXVpcmVzSW1hZ2VEYXRhQ29sb3JT
cGFjZUNvbnZlcnNpb24oY29sb3JTcGFjZSkpIHsKLSAgICAgICAgY29weUNvbnZlcnRlZEltYWdl
RGF0YVRvRGVzdGluYXRpb24oZGVzdGluYXRpb24sICptX3VubXVsdGlwbGllZEltYWdlUmVzdWx0
LCAqY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBy
ZWN0KTsKKyAgICAgICAgY29weUNvbnZlcnRlZEltYWdlRGF0YVRvRGVzdGluYXRpb24oaW1hZ2VC
dWZmZXJGYWN0b3J5LCBkZXN0aW5hdGlvbiwgKm1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQsICpj
b2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIHJlY3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNvcHlJbWFnZUJ5dGVzKCptX3VubXVsdGlw
bGllZEltYWdlUmVzdWx0LT5kYXRhKCksIGRlc3RpbmF0aW9uLCByZWN0KTsKIH0KIAotdm9pZCBG
aWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBk
ZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gY29s
b3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChJbWFn
ZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFjdG9yeSwgVWludDhDbGFtcGVkQXJyYXkmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxDb2xvclNwYWNlPiBjb2xv
clNwYWNlKQogewogICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CiAKQEAgLTUxOSw3ICs1MTksNyBA
QCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVk
QXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAgICAgICAvLyBXZSBwcmVmZXIgYSBjb252ZXJz
aW9uIGZyb20gdGhlIGltYWdlIGJ1ZmZlci4KICAgICAgICAgaWYgKG1faW1hZ2VCdWZmZXJSZXN1
bHQpIHsKICAgICAgICAgICAgIGlmIChyZXF1aXJlc0ltYWdlRGF0YUNvbG9yU3BhY2VDb252ZXJz
aW9uKGNvbG9yU3BhY2UpKSB7Ci0gICAgICAgICAgICAgICAgY29weUNvbnZlcnRlZEltYWdlQnVm
ZmVyVG9EZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgKmNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIHJlY3QpOworICAgICAgICAgICAgICAgIGNvcHlDb252
ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oaW1hZ2VCdWZmZXJGYWN0b3J5LCBkZXN0aW5h
dGlvbiwgKmNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQs
IHJlY3QpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gbV9pbWFnZUJ1ZmZlclJlc3VsdC0+Z2V0
SW1hZ2VEYXRhKEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHsgSW50UG9p
bnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSk7CkBAIC01MzgsMTMgKzUzOCwxMyBA
QCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVk
QXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAgIAogICAgIFJlZlB0cjxJbWFnZURhdGE+IGNv
bnZlcnRlZEltYWdlRGF0YTsKICAgICBpZiAocmVxdWlyZXNJbWFnZURhdGFDb2xvclNwYWNlQ29u
dmVyc2lvbihjb2xvclNwYWNlKSkgewotICAgICAgICBjb3B5Q29udmVydGVkSW1hZ2VEYXRhVG9E
ZXN0aW5hdGlvbihkZXN0aW5hdGlvbiwgKm1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LCAqY29s
b3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcmVjdCk7Cisg
ICAgICAgIGNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rlc3RpbmF0aW9uKGltYWdlQnVmZmVyRmFj
dG9yeSwgZGVzdGluYXRpb24sICptX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwgKmNvbG9yU3Bh
Y2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGNvcHlJbWFnZUJ5dGVzKCptX3ByZW11bHRpcGxpZWRJbWFn
ZVJlc3VsdC0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgcmVjdCk7CiB9CiAKLUltYWdlQnVmZmVyKiBG
aWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKK0ltYWdlQnVmZmVyKiBGaWx0
ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KEltYWdlQnVmZmVyRmFjdG9yeSYgaW1h
Z2VCdWZmZXJGYWN0b3J5KQogewogICAgIExPRyhGaWx0ZXJzLCAiRmlsdGVyRWZmZWN0ICVzICVw
IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0ICVkeCVkIiwgZmlsdGVyTmFtZSgpLCB0aGlzLCBtX2Fi
c29sdXRlUGFpbnRSZWN0LnNpemUoKS53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUo
KS5oZWlnaHQoKSk7CiAKQEAgLTU1NCw3ICs1NTQsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZm
ZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKG1f
YWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBt
X2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UpOworICAgIG1faW1hZ2VC
dWZmZXJSZXN1bHQgPSBpbWFnZUJ1ZmZlckZhY3RvcnkuY3JlYXRlSW1hZ2VCdWZmZXIoY2xhbXBl
ZFNpemUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCBt
X2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UpOwogICAgIHJldHVybiBt
X2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAzMjM5MWQ3
OGVjNGQ3YzZjNzAwODAxYWQyZTVkNGUzNTRjMzE5OGJlLi40NzlhOWNkMjYyZTg3NGQ4MTU0MmUx
MDIzNDZlMTk3NDA4NWRhNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmlsdGVyOwogY2xhc3MgRmlsdGVyRWZmZWN0OwogY2xh
c3MgSW1hZ2VCdWZmZXI7CitjbGFzcyBJbWFnZUJ1ZmZlckZhY3Rvcnk7CiBjbGFzcyBJbWFnZURh
dGE7CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+PiBGaWx0ZXJFZmZlY3RW
ZWN0b3I7CkBAIC04MSwxMSArODIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJSZXN1bHQo
KTsKICAgICB2b2lkIGNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpOwogCi0gICAgSW1hZ2VCdWZmZXIq
IGltYWdlQnVmZmVyUmVzdWx0KCk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiB1bm11
bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPENvbG9yU3BhY2U+ID0gV1RG
OjpudWxsb3B0KTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxpZWRS
ZXN1bHQoY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0
KTsKLSAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gPSBXVEY6Om51
bGxvcHQpOwotICAgIHZvaWQgY29weVByZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJy
YXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gPSBX
VEY6Om51bGxvcHQpOworICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlclJlc3VsdChJbWFnZUJ1
ZmZlckZhY3RvcnkmKTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGll
ZFJlc3VsdChJbWFnZUJ1ZmZlckZhY3RvcnkmLCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8Q29s
b3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4g
cHJlbXVsdGlwbGllZFJlc3VsdChJbWFnZUJ1ZmZlckZhY3RvcnkmLCBjb25zdCBJbnRSZWN0Jiwg
T3B0aW9uYWw8Q29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgY29weVVubXVs
dGlwbGllZFJlc3VsdChJbWFnZUJ1ZmZlckZhY3RvcnkmLCBVaW50OENsYW1wZWRBcnJheSYgZGVz
dGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxDb2xvclNwYWNlPiA9IFdURjo6bnVs
bG9wdCk7CisgICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChJbWFnZUJ1ZmZlckZhY3Rv
cnkmLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRp
b25hbDxDb2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7CiAgICAgRmlsdGVyRWZmZWN0VmVjdG9y
JiBpbnB1dEVmZmVjdHMoKSB7IHJldHVybiBtX2lucHV0RWZmZWN0czsgfQogICAgIEZpbHRlckVm
ZmVjdCogaW5wdXRFZmZlY3QodW5zaWduZWQpIGNvbnN0OwogICAgIHVuc2lnbmVkIG51bWJlck9m
RWZmZWN0SW5wdXRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHMuc2l6ZSgpOyB9CkBA
IC0xMTUsNyArMTE2LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBtYXhFZmZlY3RSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9tYXhFZmZlY3RSZWN0OyB9CiAgICAgdm9pZCBzZXRNYXhFZmZlY3RS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgbWF4RWZmZWN0UmVjdCkgeyBtX21heEVmZmVjdFJlY3QgPSBt
YXhFZmZlY3RSZWN0OyB9IAogCi0gICAgdm9pZCBhcHBseSgpOworICAgIHZvaWQgYXBwbHkoSW1h
Z2VCdWZmZXJGYWN0b3J5Jik7CiAKICAgICAvLyBDb3JyZWN0IGFueSBpbnZhbGlkIHBpeGVscywg
aWYgbmVjZXNzYXJ5LCBpbiB0aGUgcmVzdWx0IG9mIGEgZmlsdGVyIG9wZXJhdGlvbi4KICAgICAv
LyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGVuc3VyZSB2YWxpZCBwaXhlbCB2YWx1ZXMgb24gZmls
dGVyIGlucHV0cyBhbmQgdGhlIGZpbmFsIHJlc3VsdC4KQEAgLTE4NCw3ICsxODUsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3Qg
PSAwOwogCi0gICAgSW1hZ2VCdWZmZXIqIGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAg
SW1hZ2VCdWZmZXIqIGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KEltYWdlQnVmZmVyRmFjdG9yeSYp
OwogICAgIEltYWdlRGF0YSogY3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKTsKICAgICBJ
bWFnZURhdGEqIGNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogCkBAIC0xOTgsMTQg
KzE5OSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGlwQWJzb2x1dGVQYWludFJlY3QoKTsK
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1hZ2VCdWZmZXJGYWN0
b3J5JikgPSAwOwogCiAgICAgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50OENsYW1wZWRB
cnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJl
Y3QmKSBjb25zdDsKLSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRp
b24oVWludDhDbGFtcGVkQXJyYXkmLCBDb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
LCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VEYXRhVG9EZXN0
aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIEltYWdlRGF0YSYsIENvbG9yU3BhY2UsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0
ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oSW1hZ2VCdWZmZXJGYWN0b3J5JiwgVWludDhDbGFt
cGVkQXJyYXkmLCBDb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VEYXRhVG9EZXN0aW5hdGlvbihJbWFn
ZUJ1ZmZlckZhY3RvcnkmLCBVaW50OENsYW1wZWRBcnJheSYsIEltYWdlRGF0YSYsIENvbG9yU3Bh
Y2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIHJl
cXVpcmVzSW1hZ2VEYXRhQ29sb3JTcGFjZUNvbnZlcnNpb24oT3B0aW9uYWw8Q29sb3JTcGFjZT4p
OwotICAgIFJlZlB0cjxJbWFnZURhdGE+IGNvbnZlcnRJbWFnZURhdGFUb0NvbG9yU3BhY2UoQ29s
b3JTcGFjZSwgSW1hZ2VEYXRhJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7Ci0gICAgUmVmUHRy
PEltYWdlRGF0YT4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKENvbG9yU3BhY2UsIElt
YWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOworICAg
IFJlZlB0cjxJbWFnZURhdGE+IGNvbnZlcnRJbWFnZURhdGFUb0NvbG9yU3BhY2UoSW1hZ2VCdWZm
ZXJGYWN0b3J5JiwgQ29sb3JTcGFjZSwgSW1hZ2VEYXRhJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bik7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNl
KEltYWdlQnVmZmVyRmFjdG9yeSYsIENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50
UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwogICAgIAogCiAgICAgRmlsdGVyJiBtX2Zp
bHRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAppbmRleCA1NmJlMjQ3MzYxZjUzYjNj
MDllY2I1NzEzMjJiNzVhNzU3M2U5Y2M0Li5hMDI5NmU2NTliZjgyZWRkYTRjMzRjODU0NmY3ZThh
ZjE0Mjc1MGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBAIC0zMSwxMiArMzEs
MTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbWFnZUJ1ZmZlckZhY3Rvcnk7
CisKIGNsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVm
ZmVjdFJlbmRlcmVyPiB0cnlDcmVhdGUoYm9vbCwgRmlsdGVyRWZmZWN0Jik7Ci0gICAgdmlydHVh
bCB2b2lkIGFwcGx5RWZmZWN0cyhGaWx0ZXJFZmZlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGFwcGx5RWZmZWN0cyhJbWFnZUJ1ZmZlckZhY3RvcnkmLCBGaWx0ZXJFZmZlY3QmKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGhhc1Jlc3VsdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEltYWdl
QnVmZmVyKiBvdXRwdXQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgZGVzdFJl
Y3QoY29uc3QgRmlsdGVyRWZmZWN0JikgY29uc3QgPSAwOwpAQCAtNDYsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIoKSA9IGRlZmF1
bHQ7Ci0gICAgdmlydHVhbCB2b2lkIHJlbmRlclRvSW1hZ2VCdWZmZXIoRmlsdGVyRWZmZWN0Jikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyRmFj
dG9yeSYsIEZpbHRlckVmZmVjdCYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5jcHAKaW5kZXggNzY0OWYwNThhYzg2OWI1NTRhZjBkYzUwN2ZmZjkwOTBhZDZj
ZjNhMy4uNjE4MTRkNDJiNTY5ZGUxZjI3ZjgzNDcxNjdhNDFhNDNjYzEwOGFmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQCB2b2lkIFNvdXJjZUFscGhhOjpkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdCgpCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoaW5wdXRFZmZlY3Qo
MCktPmFic29sdXRlUGFpbnRSZWN0KCkpOwogfQogCi12b2lkIFNvdXJjZUFscGhhOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQordm9pZCBTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KEltYWdlQnVmZmVyRmFjdG9yeSYgaW1hZ2VCdWZmZXJGYWN0b3J5KQogewotICAgIEltYWdlQnVm
ZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgSW1hZ2VC
dWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoaW1hZ2VCdWZmZXJG
YWN0b3J5KTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKIAot
ICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGlucHV0RWZmZWN0KDApLT5pbWFnZUJ1ZmZl
clJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGlucHV0RWZmZWN0KDAp
LT5pbWFnZUJ1ZmZlclJlc3VsdChpbWFnZUJ1ZmZlckZhY3RvcnkpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCmluZGV4IDY2MjlhMzY3ZmQ0MzI0
MmQxYzRhYWRlNjRjNTYxZTg2NGEzOTQ5MGYuLmUwNjI0OGZlM2EyNmJkZDJjMTY0Yzk1OWM0Yzcx
MWY2NDgwZDI5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlQWxwaGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiU291cmNl
QWxwaGEiOyB9CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKEltYWdlQnVmZmVyRmFjdG9yeSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsKICAg
ICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFt
JiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmNwcAppbmRleCA4OGEzNmE0MTAyNmJkM2E1ODU0NDc4MjAyNzRjMTEwN2Q3ODM5MmU5Li5hZDg1
MDliZDRkYjRkYzVhZjA5Zjk1NjJkZDYwZTNjZTQyYmVjNzgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5j
cHAKQEAgLTQ4LDExICs0OCwxMSBAQCB2b2lkIFNvdXJjZUdyYXBoaWM6OmRldGVybWluZUFic29s
dXRlUGFpbnRSZWN0KCkKICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0
KHBhaW50UmVjdCkpOwogfQogCi12b2lkIFNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCit2b2lkIFNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShJbWFnZUJ1
ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFjdG9yeSkKIHsKICAgICBGaWx0ZXImIGZpbHRlciA9
IHRoaXMtPmZpbHRlcigpOwogCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRl
SW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVh
dGVJbWFnZUJ1ZmZlclJlc3VsdChpbWFnZUJ1ZmZlckZhY3RvcnkpOwogICAgIEltYWdlQnVmZmVy
KiBzb3VyY2VJbWFnZSA9IGZpbHRlci5zb3VyY2VJbWFnZSgpOwogICAgIGlmICghcmVzdWx0SW1h
Z2UgfHwgIXNvdXJjZUltYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCmluZGV4
IGY2NzNjZTRjN2YyOTNhYTE5MTM1ZjljNzdlNjBjMjI3NzE2MTM5OGMuLjBhMzA4YTk2MDllNmU1
ZTM0MzA3MTUxODJlNjEzZTdkZmE3NzIyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCkBAIC00Miw3ICs0
Miw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJTb3VyY2VHcmFwaGljIjsgfQogCiAgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0
ZVBhaW50UmVjdCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSW1hZ2VCdWZmZXJGYWN0
b3J5Jikgb3ZlcnJpZGU7CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBGaWx0ZXJFZmZlY3RUeXBlIGZpbHRlckVmZmVjdFR5cGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBGaWx0ZXJFZmZlY3RUeXBlU291cmNlSW5wdXQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCAyNmFiYThhYzM4N2NkYTZlM2FkYTc5ZGE4NjQx
MDg0ZjZhNjI1NTQ0Li5kZTQ4MDI4MjRkZjAxNDcwYjU1YWM1NzhhN2RmN2M0Mzg4NjY3YmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW1wb3J0ICJDb250cm9sU3RhdGVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCi0jaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgor
I2ltcG9ydCAiSW1hZ2VCdWZmZXJGYWN0b3J5LmgiCiAjaW1wb3J0ICJMZW5ndGhTaXplLmgiCiAj
aW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkxvY2FsRGVm
YXVsdFN5c3RlbUFwcGVhcmFuY2UuaCIKQEAgLTcyMyw3ICs3MjMsNyBAQCBib29sIFRoZW1lTWFj
OjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNlbGwsIEdy
YXBoaWNzQ29udAogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBp
bWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRs
aW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9j
dXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VT
Y2FsZUZhY3RvciwgQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZl
cihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
LCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBjb250ZXh0LCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbmVlZHNS
ZXBhaW50OwogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGU0OGM4YzYyM2FhZjk3NmQx
ZWJmYzM4MjJkMWY4ZjY5NzBiMWJlZWIuLjNlMTU2MDY5YWRlOGVhODAxZTIyZDYwZjEwYTJhNTkw
ZmIyYWE4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICNpbmNsdWRlICJDYXB0dXJlRGV2aWNlLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlckZhY3RvcnkuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWludHMuaCIKQEAgLTQ1NCw3ICs0NTQsNyBAQCBJ
bWFnZUJ1ZmZlciogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyKCkgY29uc3QK
ICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0
KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6
ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAgICBtX2ltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjYXB0dXJlU2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3Bw
CmluZGV4IGQyYThhODllM2UwNGU0YzVkODlmYmVkMzA1NjE2ODI1MGM4YmQ5MGQuLmVjZmRkNTk4
OTFhZTIxZjMyZjQ5ODA2YzE0ODcwNTExMjZiOGQ2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DU1NGaWx0ZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRkVHYXVzc2lhbkJs
dXIuaCIKICNpbmNsdWRlICJGRU1lcmdlLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCkBA
IC0zMjIsNyArMzIzLDcgQEAgYm9vbCBDU1NGaWx0ZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWN0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IENTU0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGljc0Nv
bnRleHQmIHRhcmdldENvbnRleHQpCit2b2lkIENTU0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5nU3Rv
cmVJZk5lZWRlZChJbWFnZUJ1ZmZlckZhY3RvcnkmIGltYWdlQnVmZmVyRmFjdG9yeSwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIC8vIEF0IHRoaXMgcG9pbnQg
dGhlIGVmZmVjdCBjaGFpbiBoYXMgYmVlbiBidWlsdCwgYW5kIHRoZQogICAgIC8vIHNvdXJjZSBp
bWFnZSBzaXplcyBzZXQuIFdlIGp1c3QgbmVlZCB0byBhdHRhY2ggdGhlIGdyYXBoaWMKQEAgLTMz
NCwxMSArMzM1LDExIEBAIHZvaWQgQ1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4CiAgICAgSW50U2l6ZSBsb2dp
Y2FsU2l6ZSB7IG1fc291cmNlRHJhd2luZ1JlZ2lvbi5zaXplKCkgfTsKICAgICBpZiAoIXNvdXJj
ZUltYWdlKCkgfHwgc291cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkg
ewogI2lmIFVTRShESVJFQ1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6
OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmls
dGVyU2NhbGUoKSkpOworICAgICAgICBzZXRTb3VyY2VJbWFnZShpbWFnZUJ1ZmZlckZhY3Rvcnku
Y3JlYXRlSW1hZ2VCdWZmZXIobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENv
bnRleHQsIGZpbHRlclNjYWxlKCkpKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJn
ZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5nTW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJl
ciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAg
ICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBm
aWx0ZXJTY2FsZSgpKSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKGltYWdlQnVmZmVyRmFjdG9y
eS5jcmVhdGVJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSwgbW9kZSwgUmVuZGVyaW5nUHVycG9zZTo6
RE9NLCBmaWx0ZXJTY2FsZSgpKSk7CiAjZW5kaWYKICAgICB9CiAgICAgbV9ncmFwaGljc0J1ZmZl
ckF0dGFjaGVkID0gdHJ1ZTsKQEAgLTM2NiwxNyArMzY3LDE3IEBAIHZvaWQgQ1NTRmlsdGVyOjpj
bGVhckludGVybWVkaWF0ZVJlc3VsdHMoKQogICAgICAgICBlZmZlY3QtPmNsZWFyUmVzdWx0KCk7
CiB9CiAKLXZvaWQgQ1NTRmlsdGVyOjphcHBseSgpCit2b2lkIENTU0ZpbHRlcjo6YXBwbHkoSW1h
Z2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZlckZhY3RvcnkpCiB7CiAgICAgYXV0byYgZWZmZWN0
ID0gbV9lZmZlY3RzLmxhc3QoKS5nZXQoKTsKICAgICBpZiAobV9maWx0ZXJSZW5kZXJlcikgewot
ICAgICAgICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVmZmVjdHMoZWZmZWN0KTsKKyAgICAgICAg
bV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3RzKGltYWdlQnVmZmVyRmFjdG9yeSwgZWZmZWN0
KTsKICAgICAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSB7CiAgICAgICAg
ICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBlZmZlY3QuYXBwbHko
KTsKKyAgICBlZmZlY3QuYXBwbHkoaW1hZ2VCdWZmZXJGYWN0b3J5KTsKICAgICBlZmZlY3QudHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsKIH0KIApAQCAtMzkwLDEy
ICszOTEsMTIgQEAgTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RG
b3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGUKICAgICByZXR1cm4gcmVjdEZvclJl
cGFpbnQ7CiB9CiAKLUltYWdlQnVmZmVyKiBDU1NGaWx0ZXI6Om91dHB1dCgpIGNvbnN0CitJbWFn
ZUJ1ZmZlciogQ1NTRmlsdGVyOjpvdXRwdXQoSW1hZ2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZl
ckZhY3RvcnkpIGNvbnN0CiB7CiAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0ZXJS
ZW5kZXJlci0+aGFzUmVzdWx0KCkpCiAgICAgICAgIHJldHVybiBtX2ZpbHRlclJlbmRlcmVyLT5v
dXRwdXQoKTsKICAgICAKLSAgICByZXR1cm4gbV9lZmZlY3RzLmxhc3QoKS0+aW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKKyAgICByZXR1cm4gbV9lZmZlY3RzLmxhc3QoKS0+aW1hZ2VCdWZmZXJSZXN1bHQo
aW1hZ2VCdWZmZXJGYWN0b3J5KTsKIH0KIAogdm9pZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdl
UmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DU1NGaWx0ZXIuaAppbmRleCAwMGI5MTkxN2I4MDRjOTJkOTQwOGI3NThlMzc1YzI1MmYyOWRi
MGM1Li5jNmE2MmYzNzk4YzRmY2I1OTc3N2QzM2NjMThlMTUyMzY3MWQwZTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEZpbHRlckVm
ZmVjdDsKIGNsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyOwogY2xhc3MgRmlsdGVyT3BlcmF0aW9u
czsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEltYWdlQnVmZmVyRmFjdG9yeTsKIGNs
YXNzIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFz
cyBTb3VyY2VBbHBoYTsKQEAgLTUyLDExICs1MywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
b3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBzZXRGaWx0ZXJSZWdp
b24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0
ZXJSZWdpb247IH0KIAotICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBjb25zdDsKKyAgICBJbWFn
ZUJ1ZmZlciogb3V0cHV0KEltYWdlQnVmZmVyRmFjdG9yeSYpIGNvbnN0OwogCiAgICAgYm9vbCBi
dWlsZChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYsIEZpbHRlckNvbnN1
bWVyKTsKICAgICB2b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwotICAgIHZvaWQgYXBw
bHkoKTsKKyAgICB2b2lkIGFwcGx5KEltYWdlQnVmZmVyRmFjdG9yeSYpOwogCiAgICAgYm9vbCBo
YXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0ZpbHRlclRoYXRN
b3Zlc1BpeGVsczsgfQogICAgIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5
U2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2hhc0ZpbHRlclRoYXRTaG91bGRCZVJl
c3RyaWN0ZWRCeVNlY3VyaXR5T3JpZ2luOyB9CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAg
ICAgR3JhcGhpY3NDb250ZXh0KiBpbnB1dENvbnRleHQoKTsKIAogICAgIGJvb2wgdXBkYXRlQmFj
a2luZ1N0b3JlUmVjdChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpOwotICAgIHZvaWQgYWxs
b2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICB2
b2lkIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoSW1hZ2VCdWZmZXJGYWN0b3J5JiwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbnRSZWN0IG91dHB1dFJlY3QoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKaW5kZXggODM4MjU2YzExZWYyNGZlNGJmZGNhN2Q2ZGYxMzY5NGRiZmVkOGZkMC4uMDhjZWFh
OGU4OTk3ZTk1MzQ3OTNkYTdmNDgxZjdhYTdiMzNlNDJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC00MSw3ICs0MSw3IEBA
CiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgorI2luY2x1ZGUgIkltYWdlQnVmZmVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIkltYWdlUXVhbGl0
eUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZp
bGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICBt
YXNrUmVjdC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKIAogICAg
ICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIENvbG9yU3BhY2U6
OlNSR0IsIGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlckZhY3Rvcnk6
OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIGNvbnRleHQpOwog
ICAgICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFp
bnRNYXNrRm9yVGV4dEZpbGxCb3gobWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3Jv
bGxlZFBhaW50UmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IDE2Y2FkZTgwNWFhOTMxN2UxMDkxOWI2ZjdjMmY2ZDk5NWU2NDU2
ZDYuLjM1Mjc2Y2NkNzMzMjQ1NDY2OGViMWJlMmNhNWM1ZWUwNmU5ZTMxZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiS2V5ZnJhbWVMaXN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3Rh
Y2suaCIKQEAgLTMyMTQsNyArMzIxNSw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVy
bkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiB7CiAg
ICAgY29uc3QgRmxvYXRTaXplIHRpbGVTaXplIHsgMzIsIDE4IH07CiAKLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNpemUsIENv
bG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXJGYWN0b3J5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIodGlsZVNpemUsIGRl
c3RDb250ZXh0KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNw
cAppbmRleCAyNTBhN2Q1YzBiYWEwYWM3NDFhOTBjODE4YjYxYTA1Zjk1Yjk2NGE0Li5jYTFkNTRh
OTViZmRiNTM0MDFlNzM5YmY3OWU2MWU5YjliN2M5Y2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApAQCAtMTM5LDYgKzEzOSwxMCBAQCBH
cmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoR3Jh
cGhpY3NDb250ZXh0JiBkZXN0aW5hdAogICAgIGlmICghbV9maWx0ZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCisgICAgYXV0byBob3N0V2luZG93ID0gbV9sYXllci5yZW5kZXJlcigpLmRv
Y3VtZW50KCkuaG9zdFdpbmRvdygpOworICAgIGlmICghaG9zdFdpbmRvdykKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKICAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0ZXI7CiAgICAgYXV0byBm
aWx0ZXJTb3VyY2VSZWN0ID0gZmlsdGVyLmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJl
Y3QoZmlsdGVyQm94UmVjdCwgZGlydHlSZWN0KTsKICAgICBpZiAoZmlsdGVyU291cmNlUmVjdC5p
c0VtcHR5KCkpCkBAIC0xNjEsNyArMTY1LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXll
ckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXQKIAog
ICAgIGZpbHRlci5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKIAotICAgIGZp
bHRlci5hbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKGRlc3RpbmF0aW9uQ29udGV4dCk7Cisg
ICAgZmlsdGVyLmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoaG9zdFdpbmRvdy0+aW1hZ2VC
dWZmZXJGYWN0b3J5KCksIGRlc3RpbmF0aW9uQ29udGV4dCk7CiAgICAgYXV0byogc291cmNlR3Jh
cGhpY3NDb250ZXh0ID0gZmlsdGVyLmlucHV0Q29udGV4dCgpOwogICAgIGlmICghc291cmNlR3Jh
cGhpY3NDb250ZXh0IHx8IGZpbHRlci5maWx0ZXJSZWdpb24oKS5pc0VtcHR5KCkgfHwgSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGZpbHRlci5maWx0ZXJSZWdpb24oKS5zaXplKCkpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4MSwxNiArMTg1LDIwIEBAIHZvaWQgUmVuZGVy
TGF5ZXJGaWx0ZXJzOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0
aW9uQ29udGV4dCkKIAogICAgIExPR19XSVRIX1NUUkVBTShGaWx0ZXJzLCBzdHJlYW0gPDwgIlxu
UmVuZGVyTGF5ZXJGaWx0ZXJzICIgPDwgdGhpcyA8PCAiIGFwcGx5RmlsdGVyRWZmZWN0Iik7CiAK
KyAgICBhdXRvIGhvc3RXaW5kb3cgPSBtX2xheWVyLnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5ob3N0
V2luZG93KCk7CisgICAgaWYgKCFob3N0V2luZG93KQorICAgICAgICByZXR1cm47CisgICAgCiAg
ICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwogICAgIGZpbHRlci5pbnB1dENvbnRleHQoKS0+
cmVzdG9yZSgpOwogCi0gICAgZmlsdGVyLmFwcGx5KCk7CisgICAgZmlsdGVyLmFwcGx5KGhvc3RX
aW5kb3ctPmltYWdlQnVmZmVyRmFjdG9yeSgpKTsKIAogICAgIC8vIEdldCB0aGUgZmlsdGVyZWQg
b3V0cHV0IGFuZCBkcmF3IGl0IGluIHBsYWNlLgogICAgIExheW91dFJlY3QgZGVzdFJlY3QgPSBm
aWx0ZXIub3V0cHV0UmVjdCgpOwogICAgIGRlc3RSZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCks
IG1fcGFpbnRPZmZzZXQueSgpKTsKIAotICAgIGlmIChhdXRvKiBvdXRwdXRCdWZmZXIgPSBmaWx0
ZXIub3V0cHV0KCkpCisgICAgaWYgKGF1dG8qIG91dHB1dEJ1ZmZlciA9IGZpbHRlci5vdXRwdXQo
aG9zdFdpbmRvdy0+aW1hZ2VCdWZmZXJGYWN0b3J5KCkpKQogICAgICAgICBkZXN0aW5hdGlvbkNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCpvdXRwdXRCdWZmZXIsIHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoZGVzdFJlY3QsIG1fbGF5ZXIucmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpKTsKIAogICAgIGZpbHRlci5jbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBmMzVkOGQ0M2QwODA2
ZjhiZWNiNjQ5OTU5NDhjM2I2ZjNiNTg1Y2VjLi5iM2JjMTM4ZWVkNDRmY2E5NGY2NzljOTcwYWM0
Y2Y2ZGNiZTgxZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCkBAIC00NSw3ICs0NSw3IEBACiAjaW1wb3J0ICJIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmgi
CiAjaW1wb3J0ICJJY29uLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgotI2ltcG9ydCAiSW1hZ2VCdWZm
ZXIuaCIKKyNpbXBvcnQgIkltYWdlQnVmZmVyRmFjdG9yeS5oIgogI2ltcG9ydCAiTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJMb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJh
bmNlLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCkBAIC0xMzYzLDcgKzEzNjMsNyBA
QCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYQogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dyZXNz
ID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlck9iamVjdCk7CiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJPYmplY3QuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24o
KSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNw
YWNlOjpTUkdCLCBwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoaW5mbGF0ZWRS
ZWN0LnNpemUoKSwgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDg0Yjc0MjQ4ZmExYWMwMDU3NjVmNDZj
ZTY4Nzk0MTUzZWNlMzQwY2QuLjc5OGFmNGZiZDk3OTUzNjkyNWZmMjU5N2ZhZDZlNTU4YTc0ODQx
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJCb3hTaGFwZS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CisjaW5jbHVkZSAiSW1hZ2VCdWZmZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgi
CiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUG9seWdvblNoYXBlLmgi
CkBAIC0xODEsNyArMTgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRl
UmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICBJbnRSZWN0
IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKICAgICBhdXRvIGludGVydmFs
cyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCks
IC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNo
b3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
RmFjdG9yeTo6Y3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCk7CiAKICAgICBhdXRvIGNyZWF0ZVNoYXBlID0gWyZdKCkgewogICAg
ICAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShp
bnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKaW5kZXggMzgz
ODM3ZGFmMmM5MzFhOGE1ZDU0ODM4YmFjNDhmYzI2YjQ4NzlkMS4uMmRkZjcwYjY1NjBkN2YwZjhh
Yjg5YmUzMDNiZGNkOWQ5MjMwOTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbmRl
clNWR1RleHQuaCIKQEAgLTE0NSw4ICsxNDYsMTIgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGMK
IAogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVt
KHJlbmRlcmVyKTsKICAgICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFsaWRGb3JHZW9tZXRyeShvYmpl
Y3RCb3VuZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7CisgICAgICAgIGF1dG8qIGhvc3RX
aW5kb3cgPSBkb2N1bWVudCgpLmhvc3RXaW5kb3coKTsKKyAgICAgICAgaWYgKCFob3N0V2luZG93
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIC8vIEZJWE1FICgxNDk0Njkp
OiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2Vs
ZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBjbGlwcGlu
ZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwg
Q29sb3JTcGFjZTo6U1JHQiwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQp
OworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGhvc3RXaW5kb3ctPmltYWdlQnVmZmVyRmFjdG9yeSgpLCBvYmplY3RCb3VuZGlu
Z0JveCwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgQ29sb3JTcGFjZTo6U1JHQiwgYWJz
b2x1dGVUcmFuc2Zvcm0sICZjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggMTJlN2YxNWQ2MzJk
NzZkOTlmNmJhYmE5MzhkMGQ5ZTI2MzRkOGU4MC4uNGMyMTJkYTA3NWUxNDQ1MzEwNTEzZWQxYmMz
OTAxZWVkY2JiMmRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKKyNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIK
ICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0xMzUsNiAr
MTM2LDEwIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgaWYgKCFhYnNvbHV0ZVRyYW5z
Zm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgYXV0byBo
b3N0V2luZG93ID0gcmVuZGVyZXIuZG9jdW1lbnQoKS5ob3N0V2luZG93KCk7CisgICAgaWYgKCFo
b3N0V2luZG93KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBFbGltaW5hdGUgc2hl
YXIgb2YgdGhlIGFic29sdXRlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCwgdG8gYmUgYWJsZSB0byBw
cm9kdWNlIHVuc2hlYXJlZCB0aWxlIGltYWdlcyBmb3IgZmVUaWxlLgogICAgIGZpbHRlckRhdGEt
PnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtKGFic29sdXRlVHJh
bnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSwgMCwgMCk7
CiAKQEAgLTE5Miw3ICsxOTcsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGVmZmVj
dGl2ZVRyYW5zZm9ybS5tdWx0aXBseShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5z
Zm9ybSk7CiAKICAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUgPSByZW5kZXJlci5zZXR0
aW5ncygpLmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKLSAgICBhdXRvIHNvdXJjZUdy
YXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRh
LT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIENvbG9yU3BhY2U6OkxpbmVhclJH
QiwgcmVuZGVyaW5nTW9kZSwgY29udGV4dCk7CisgICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoaG9zdFdpbmRvdy0+aW1hZ2VCdWZm
ZXJGYWN0b3J5KCksIGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIHJlbmRlcmluZ01vZGUsIENv
bG9yU3BhY2U6OkxpbmVhclJHQiwgZWZmZWN0aXZlVHJhbnNmb3JtLCBjb250ZXh0KTsKICAgICBp
ZiAoIXNvdXJjZUdyYXBoaWMpIHsKICAgICAgICAgQVNTRVJUKCFtX3JlbmRlcmVyRmlsdGVyRGF0
YU1hcC5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICAgICAgZmlsdGVyRGF0YS0+c2F2ZWRDb250
ZXh0ID0gY29udGV4dDsKQEAgLTIyNSw2ICsyMzAsMTAgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBo
aWMKICAgICBpZiAoZmluZFJlc3VsdCA9PSBtX3JlbmRlcmVyRmlsdGVyRGF0YU1hcC5lbmQoKSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBob3N0V2luZG93ID0gcmVuZGVyZXIuZG9jdW1l
bnQoKS5ob3N0V2luZG93KCk7CisgICAgaWYgKCFob3N0V2luZG93KQorICAgICAgICByZXR1cm47
CisKICAgICBGaWx0ZXJEYXRhJiBmaWx0ZXJEYXRhID0gKmZpbmRSZXN1bHQtPnZhbHVlOwogCiAg
ICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiXG5SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlciAiIDw8IHRoaXMgPDwgIiBwb3N0QXBwbHlSZXNvdXJjZSAtIHJlbmRlcmVyICIgPDwg
JnJlbmRlcmVyIDw8ICIgZmlsdGVyIHN0YXRlICIgPDwgZmlsdGVyRGF0YS5zdGF0ZSk7CkBAIC0y
NjksMTMgKzI3OCwxMyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlS
ZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogICAgICAgICAvLyBBbHdh
eXMgdHJ1ZSBpZiBmaWx0ZXJEYXRhIGlzIGp1c3QgYnVpbHQgKGZpbHRlckRhdGEtPnN0YXRlID09
IEZpbHRlckRhdGE6OkJ1aWx0KS4KICAgICAgICAgaWYgKCFsYXN0RWZmZWN0LT5oYXNSZXN1bHQo
KSkgewogICAgICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkFwcGx5aW5n
OwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKTsKKyAgICAgICAgICAgIGxhc3RFZmZl
Y3QtPmFwcGx5KGhvc3RXaW5kb3ctPmltYWdlQnVmZmVyRmFjdG9yeSgpKTsKICAgICAgICAgICAg
IGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwogICAgICAgICAgICAg
bGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShDb2xvclNwYWNlOjpTUkdCKTsK
ICAgICAgICAgfQogICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7
CiAKLSAgICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+aW1hZ2VC
dWZmZXJSZXN1bHQoKTsKKyAgICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVm
ZmVjdC0+aW1hZ2VCdWZmZXJSZXN1bHQoaG9zdFdpbmRvdy0+aW1hZ2VCdWZmZXJGYWN0b3J5KCkp
OwogICAgICAgICBpZiAocmVzdWx0SW1hZ2UpIHsKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNh
dENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZU9yKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IGQyMjli
NjMxM2M1YjM4MGVmOTVmZTFiYmRjNjQ2ZmJmMTBlMmQ4MzEuLjFhNDI3NDQ4NDZmODI1OTZiYjMx
NGQ0YTc0OTRkMTg2YjZlYzY5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtNTIsMTUgKzUy
LDE5IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKFJlbmRlckVsZW1lbnQmIGNsaWVudCwgYm9vCiB9CiAKICNpZiBVU0UoQ0cpCi1zdGF0aWMg
aW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBo
aWNzQ29udGV4dComIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dComIHNhdmVkQ29udGV4dCwgUmVm
UHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIFJlbmRlck9iamVjdCogb2JqZWN0KQorc3Rh
dGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChH
cmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQqJiBzYXZlZENvbnRleHQs
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBSZW5kZXJFbGVtZW50JiByZW5kZXJl
cikKIHsKLSAgICBhdXRvKiB0ZXh0Um9vdEJsb2NrID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVu
ZGVyU1ZHVGV4dEFuY2VzdG9yKCpvYmplY3QpOworICAgIGF1dG8qIHRleHRSb290QmxvY2sgPSBS
ZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IocmVuZGVyZXIpOwogICAg
IEFTU0VSVCh0ZXh0Um9vdEJsb2NrKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRy
YW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9P
dXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKCp0ZXh0Um9vdEJsb2NrKTsKICAgICBGbG9hdFJlY3Qg
cmVwYWludFJlY3QgPSB0ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpOwogCi0gICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2U6OlNS
R0IsIGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byBob3N0V2luZG93ID0gcmVu
ZGVyZXIuZG9jdW1lbnQoKS5ob3N0V2luZG93KCk7CisgICAgaWYgKCFob3N0V2luZG93KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihob3N0V2luZG93LT5pbWFnZUJ1ZmZlckZhY3Rv
cnkoKSwgcmVwYWludFJlY3QsIGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSwgQ29sb3JTcGFjZTo6
U1JHQiwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTE1NSw3ICsxNTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bgogCiAgICAgaWYgKGlzUGFpbnRpbmdUZXh0KSB7CiAjaWYgVVNFKENHKQotICAgICAgICBpZiAo
IWNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChjb250ZXh0LCBtX3NhdmVk
Q29udGV4dCwgbV9pbWFnZUJ1ZmZlciwgJnJlbmRlcmVyKSkgeworICAgICAgICBpZiAoIWNyZWF0
ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChjb250ZXh0LCBtX3NhdmVkQ29udGV4
dCwgbV9pbWFnZUJ1ZmZlciwgcmVuZGVyZXIpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZXN0
b3JlKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAKaW5kZXggNjRiMTk2MTU4NTA4NzdiMzBkZmVhN2U1ZWY5NzY1NTQ2NjMwM2FkYy4uNWM5NmU5
Njc3N2UzMTYzMjM1NTIxMmRjNDM1Mzc4NzI5MWRkNTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAg
LTY4LDEwICs2OCwxNCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291
cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIEZsb2F0UmVjdCBy
ZXBhaW50UmVjdCA9IHJlbmRlcmVyLnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAK
ICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSAmJiAhcmVwYWludFJlY3QuaXNFbXB0eSgp
KSB7CisgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IHJlbmRlcmVyLmRvY3VtZW50KCkuaG9zdFdp
bmRvdygpOworICAgICAgICBpZiAoIWhvc3RXaW5kb3cpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIAogICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBz
dHlsZSgpLnN2Z1N0eWxlKCk7CiAgICAgICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN2Z1N0
eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdC
ID8gQ29sb3JTcGFjZTo6TGluZWFyUkdCIDogQ29sb3JTcGFjZTo6U1JHQjsKICAgICAgICAgLy8g
RklYTUUgKDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3Mg
YWxwaGEgbWFza2luZywgdGhvdWdoLgotICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1
dGVUcmFuc2Zvcm0sIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGNv
bnRleHQpOworICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihob3N0V2luZG93LT5pbWFnZUJ1ZmZlckZhY3RvcnkoKSwg
cmVwYWludFJlY3QsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGNvbG9yU3BhY2UsIGFi
c29sdXRlVHJhbnNmb3JtLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNr
SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRl
eCBhMWY4NWYxNzYyNjYxYTVkOGIzMmE0NTA0ZTY1ZWZhODNjYTNhNGViLi45ZGQ4NGM2OTFhMDI0
ZjRmMDg3NWQzMDQzMjZhMWFlZDQ5ZDUzYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0yNTQs
OCArMjU0LDEyIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFRpbGVJbWFn
ZVRyYW5zZm9ybShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwKIAogUmVmUHRyPEltYWdlQnVmZmVy
PiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJu
QXR0cmlidXRlcyYgYXR0cmlidXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywg
Y29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxl
Qm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAogeworICAgIGF1
dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkuaG9zdFdpbmRvdygpOworICAgIGlmICghaG9zdFdp
bmRvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCiAgICAgY2xhbXBlZEFic29sdXRl
VGlsZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoYWJzb2x1dGVUaWxlQm91
bmRhcmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxl
Qm91bmRhcmllcywgQ29sb3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0
aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihob3N0V2lu
ZG93LT5pbWFnZUJ1ZmZlckZhY3RvcnkoKSwgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBl
ZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIHJlbmRlcmluZ01vZGUpOwogICAgIGlmICghdGlsZUlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZjk3YWY0M2I0YWM3
YzU5MWZlOGQxNWVlYjQzODEyZjVhOTNhYThmYS4uNWFmZGE3MjIyOTlkOTYyMDE1ZGZlNjAzNmQ5
NGZjZmI0NTZkYjZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQmFz
aWNTaGFwZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuaCIKQEAgLTIzNiw3ICsyMzcsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdAog
ICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKEltYWdlQnVmZmVyRmFjdG9yeSYgaW1hZ2VCdWZmZXJG
YWN0b3J5LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFi
c29sdXRlVHJhbnNmb3JtLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
SW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwg
YWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZl
cnMuCkBAIC0yNDcsMTAgKzI0OCwxMCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZwogICAgIEZs
b2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShwYWludFJlY3Qu
c2l6ZSgpLCBzY2FsZSk7CiAKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIGNvbnRl
eHQsIDEsIGNvbG9yU3BhY2UpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlckZh
Y3RvcnkuY3JlYXRlSW1hZ2VCdWZmZXIoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIGNvbnRl
eHQsIDEsIGNvbG9yU3BhY2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Ci0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJl
bmRlcmluZ01vZGUsIDEsIGNvbG9yU3BhY2UpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFn
ZUJ1ZmZlckZhY3RvcnkuY3JlYXRlSW1hZ2VCdWZmZXIoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgY29sb3JTcGFjZSk7CiAjZW5kaWYKICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2NCw3ICsyNjUs
NyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBl
ZFJlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKEltYWdlQnVmZmVyRmFjdG9yeSYg
aW1hZ2VCdWZmZXJGYWN0b3J5LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgY2xhbXBlZFJlY3QsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
SW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7
CiAgICAgRmxvYXRTaXplIHVuY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0
LnNpemUoKSk7CkBAIC0yNzQsMTAgKzI3NSwxMCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogI2lmIFVTRShESVJFQ1QyRCkKLSAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9k
ZSwgY29udGV4dCwgMSwgY29sb3JTcGFjZSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdl
QnVmZmVyRmFjdG9yeS5jcmVhdGVJbWFnZUJ1ZmZlcihjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9k
ZSwgY29udGV4dCwgMSwgY29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0KTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVk
U2l6ZSwgcmVuZGVyaW5nTW9kZSwgMSwgY29sb3JTcGFjZSk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IGltYWdlQnVmZmVyRmFjdG9yeS5jcmVhdGVJbWFnZUJ1ZmZlcihjbGFtcGVkU2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlKTsKICNlbmRp
ZgogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzUw
LDcgKzM1MSw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChS
ZWZQdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBi
dWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikgewotICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBDb2xvclNwYWNl
OjpTUkdCLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihleHBhbmRlZElu
dFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7CiAgICAg
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
aAppbmRleCBlNDBkOTdmMWQxOTQ5N2U1MTUzN2MxYzM5MWZiYjVjMWNmNTE3OTM3Li41OGFkYjVh
NzYxMmY4ZDgwOTIzOTE2NzY2MmFmMzIwNmMyNDVlM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaApAQCAtMzEsNiArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZs
b2F0UmVjdDsKK2NsYXNzIEltYWdlQnVmZmVyRmFjdG9yeTsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7
CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjsKQEAg
LTYwLDggKzYxLDggQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dChSZW5kZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID0g
RG9udFNhdmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQog
Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJh
bnNmb3JtLCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQq
ID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1w
ZWRSZWN0LCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQq
ID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXJGYWN0b3J5JiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBS
ZW5kZXJpbmdNb2RlLCBDb2xvclNwYWNlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRl
VHJhbnNmb3JtLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXJGYWN0b3J5
JiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRS
ZWN0LCBSZW5kZXJpbmdNb2RlLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6U1JHQiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3Vi
dHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZl
VG9DbGVhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCBh
ODkyNDk2ZjliYzAwOGNlOTY0NGRlNjZlMmZjOGRjYzhlY2Q2YmIxLi5hNmYzN2Q0ZDNkNjFmYWFm
NmMzNTViOGU0ZTFmNDM3NmFkNGVjZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckZhY3RvcnkuaCIKICNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkpTRE9NV2lu
ZG93QmFzZS5oIgpAQCAtMjE2LDggKzIxNiwxMiBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0lt
YWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8qIGhv
c3RXaW5kb3cgPSBtX3BhZ2UtPmRvY3VtZW50KCkuaG9zdFdpbmRvdygpOworICAgIGlmICghaG9z
dFdpbmRvdykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBDYWlybyBkb2VzIG5v
dCB1c2UgdGhlIGFjY2VsZXJhdGVkIGRyYXdpbmcgZmxhZywgc28gaXQncyBPSyB0byBtYWtlIGFu
IHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KLSAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGhvc3RXaW5kb3ctPmltYWdlQnVmZmVyRmFjdG9yeSgpLmNy
ZWF0ZUltYWdlQnVmZmVyKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAg
ICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtMjc4LDcgKzI4Miw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0
ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXpl
CiAgICAgRmxvYXRSZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAg
ICAgaW1hZ2VCdWZmZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VC
dWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6
ZSgpKSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihleHBhbmRlZElu
dFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIGNvbnRleHQpOwogICAgIGlmICghYnVmZmVy
KSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1cm47CiAgICAgZHJh
d0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVy
Wm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5l
clJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcAppbmRleCBiMGE3NjhjNzdlODYxMGI1ZWM0YjJmN2U2OTdkYmQ3ZGE3NWI3OWQ3
Li4xNWFiZWI0ODdjNDM0YjgxOWIzZjI2OWI3ODIyNDljYTc5NGNjMjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtODcs
NyArODcsNyBAQCBSZW5kZXJFbGVtZW50KiBGRUltYWdlOjpyZWZlcmVuY2VkUmVuZGVyZXIoKSBj
b25zdAogICAgIHJldHVybiB0YXJnZXQuZWxlbWVudC0+cmVuZGVyZXIoKTsKIH0KIAotdm9pZCBG
RUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoSW1hZ2VCdWZmZXJGYWN0b3J5JiBpbWFnZUJ1ZmZlckZhY3RvcnkpCiB7CiAg
ICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSByZWZlcmVuY2VkUmVuZGVyZXIoKTsKICAgICBp
ZiAoIW1faW1hZ2UgJiYgIXJlbmRlcmVyKQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEZFSW1hZ2U6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdh
eXMgaW4gQ29sb3JTcGFjZTo6U1JHQgogICAgIHNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFj
ZTo6U1JHQik7CiAKLSAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1
ZmZlclJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdl
QnVmZmVyUmVzdWx0KGltYWdlQnVmZmVyRmFjdG9yeSk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUltYWdlLmgKaW5kZXggYWMxNjBlZGNlN2MwZTBhMDY3YmRlZmJkNzA3ZjJhYmU1
NTkwODFiNi4uNDMxMGEzMmM4MDc2NjA5YTcyYjJiNzg5YTRiY2UxZWZlZTUxMzE5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaApAQCAt
NDgsNyArNDgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVuZGVyRWxlbWVudCogcmVmZXJlbmNlZFJl
bmRlcmVyKCkgY29uc3Q7CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIGZpbmFs
OworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKEltYWdlQnVmZmVyRmFjdG9yeSYpIGZp
bmFsOwogICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBmaW5hbDsKICAgICBX
VEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwg
UmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tCmluZGV4IGViNTQ1OTA4MTRiZDA4M2NiOWIyZjRkNzUyNjQwZGZiNzg1MjFiNzEuLjJi
OTg2MzczMDAzNDk5YmVjYjI5OWI2Yzk2OTM4ZmRlNzM1ODFhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihX
ZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00pKSB7Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKGJhY2tpbmdTdG9yZVNpemUoKSwgbV9hY2Nl
bGVyYXRlc0RyYXdpbmcgPyBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFdl
YkNvcmU6OlJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIFdlYkNvcmU6OkNvbG9yU3Bh
Y2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5pbWFnZUJ1ZmZlckZhY3RvcnkoKS5jcmVhdGVJbWFn
ZUJ1ZmZlcihiYWNraW5nU3RvcmVTaXplKCksIG1fYWNjZWxlcmF0ZXNEcmF3aW5nID8gV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCmluZGV4IGMwN2IyM2ZiMmIwZTU4ZTBlMWRmZjVhMTRlZTBhODVkOWE1YjY0
NWQuLjA3ZjE3MTlhOWVkMTJhZjkzM2JkMzc0NDIyYmMxOGZiNDFhM2U1NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTQxLDEyICs0MSwxMyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Y3JlYXRlKCkKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlKGNvbnN0IEhvc3RXaW5kb3cm
IGhvc3RXaW5kb3cpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk+KG5ldyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKSk7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+KG5ldyBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoaG9zdFdpbmRvdykpOwogfQogCi1SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpCitSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShjb25zdCBI
b3N0V2luZG93JiBob3N0V2luZG93KQorICAgIDogSW1hZ2VCdWZmZXJGYWN0b3J5KCZob3N0V2lu
ZG93KQogewogICAgIGNvbm5lY3RUb0dQVVByb2Nlc3MoKTsKIH0KQEAgLTEyNCw4ICsxMjUsMTEg
QEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OndhaXRGb3JEaWRGbHVzaCgpCiAg
ICAgcmV0dXJuIGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZEZsdXNoPihtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyLCAxX3MsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGlu
Z0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCitSZWZQdHI8
SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQogeworICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBvc2UpKQor
ICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGVJbWFnZUJ1ZmZlcihzaXpl
LCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0KTsKKyAgICAKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwog
CiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCA5NWY4ZDJiNDEyZmI5MWRm
NzdjNjhmMTM2YjAwNzg2ZjAyNGQ3ZTI2Li5lMzk5ZTI1YzViMzUzYWM3NTYwMjIyNjlhMTRmOWMy
NDU3MzJjZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCIKICNpbmNs
dWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRGlz
cGxheUxpc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyRmFjdG9yeS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTU3LDkgKzU4LDEwIEBA
IGNsYXNzIERpc3BsYXlMaXN0V3JpdGVySGFuZGxlOwogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5CiAgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgLCBwcml2YXRl
IElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246
OkNsaWVudCB7CisgICAgLCBwdWJsaWMgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudAorICAg
ICwgcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVyRmFjdG9yeSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IGNyZWF0ZSgp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6SG9zdFdpbmRvdyYpOwogCiAgICAgflJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSgpOwogCkBAIC03NCw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KLSAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
Q29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
V2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1h
dCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRh
KFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZs
dXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CkBAIC04NSw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdhaXRGb3JEaWRGbHVz
aCgpOwogCiBwcml2YXRlOgotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOworICAg
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eShjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Jik7
CiAKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCmluZGV4IDMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2
ZThiZGEuLmQwZDhkNjI2Y2JkZjYxOWE5YjExYTMyMThjYTk2MWFlMDc3ZjA2MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC05MDEsMTkgKzkwMSwxMSBAQCBSZWZQdHI8RGlzcGxheVJlZnJl
c2hNb25pdG9yPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQ
bGF0ZgogICAgIHJldHVybiBudWxscHRyOwogfQogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQot
Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVu
ZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitJbWFnZUJ1ZmZlckZh
Y3RvcnkmIFdlYkNocm9tZUNsaWVudDo6aW1hZ2VCdWZmZXJGYWN0b3J5KCkKIHsKLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJw
b3NlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gbV9wYWdlLmVuc3Vy
ZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJl
bmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwor
ICAgIHJldHVybiBtX3BhZ2UuaW1hZ2VCdWZmZXJGYWN0b3J5KCk7CiB9CiAKLSNlbmRpZiAvLyBF
TkFCTEUoR1BVX1BST0NFU1MpCi0KIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290R3Jh
cGhpY3NMYXllcihGcmFtZSYsIEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIGlmIChsYXll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBlYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJj
ZDMzNzYwZGM4Li5iYjk4ZTEzYzZiOGVlNWRiNzU0ZDFiNzc3OGJjZTBlZWQ1ZWRlNDA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCkBAIC0yNDEsOSArMjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURpc3BsYXlSZWZyZXNoTW9u
aXRvcihXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAKLSNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKLSNl
bmRpZgorICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyRmFjdG9yeSYgaW1hZ2VCdWZmZXJGYWN0b3J5
KCkgZmluYWw7CiAKICAgICBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxvd2VkQ29tcG9zaXRp
bmdUcmlnZ2VycygpIGNvbnN0IGZpbmFsCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVDb250ZXh0LmgKaW5kZXggNzAyYzY3OWZmYmMxNjg3YzQzMDE3ODQyMjhi
NGUzN2E2ZjU2Y2MxMS4uY2VmYWVlMDgzOGIzNGZlMGI0NDE2YTYwMzYxMDNiOTA0OGNiMDc0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRvcHRMYXllcnNGcm9tQ29udGV4dChS
ZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CiAKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkmIGVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOworICAgIFdlYkNvcmU6Oklt
YWdlQnVmZmVyRmFjdG9yeSYgaW1hZ2VCdWZmZXJGYWN0b3J5KCk7CiAgICAgCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGNhblNob3dXaGlsZUxvY2tlZCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQppbmRleCAwMGQ1
NTc1NzVjMGY3NzM5ZDk1N2JhMmQ5ZWU5MDliZTIwNjNhYzE5Li42YzU2Yzc3ZjBlYmE5ZmNlNjFk
NGE5MTViNTI3OTQyZDAxMjhhZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dC5tbQpAQCAtMTg4LDkgKzE4OCw5IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlQ29udGV4dDo6YW5pbWF0aW9uRGlkRW5kKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5CiAgICAgICAgIGl0LT52YWx1ZS0+YW5pbWF0aW9uRW5kZWQoa2V5KTsKIH0KIAotUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBSZW1vdGVMYXllclRyZWVDb250ZXh0OjplbnN1cmVS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKQorSW1hZ2VCdWZmZXJGYWN0b3J5JiBSZW1vdGVM
YXllclRyZWVDb250ZXh0OjppbWFnZUJ1ZmZlckZhY3RvcnkoKQogewotICAgIHJldHVybiBtX3dl
YlBhZ2UuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CisgICAgcmV0dXJuIG1f
d2ViUGFnZS5pbWFnZUJ1ZmZlckZhY3RvcnkoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KaW5kZXggYTAyMzIyODcxNmExZWU0MTU5YzEyNDlmNWZiNTAxNDY3MmYyMzVjZC4uMjcyMDE5
MTA5MDFlYTA2MzliOWNjYmMwODcwNGE2N2I2YzNjYWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNDMsNiArNDMsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvSW1hZ2VCdWZmZXJCYWNrZW5kLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckNvbnRy
b2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZU92ZXJsYXlDb250cm9sbGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1JlbmRlckxheWVyQ29tcG9zaXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmNjQyMTQ3N2E1NmNlZTFiNDU5YWIx
YjcwZDhkY2FkOWQzZGFmYzM0Li41MWMwOWUyNGZmZGNjOWQwNjA4MDgyZWIzNjcyNTQ5ODk3M2Q4
YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNzAzMCwxNCArNzAzMCwxNyBAQCB2b2lkIFdlYlBhZ2U6Om5vdGlmeVBhZ2VPZkFwcEJvdW5k
QmVoYXZpb3IoKQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi1SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIFdlYlBhZ2U6OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSgpCitJbWFnZUJ1ZmZlckZhY3RvcnkmIFdlYlBhZ2U6OmltYWdlQnVmZmVyRmFjdG9y
eSgpCiB7Ci0gICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAg
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmNyZWF0ZSgpOwotICAgIHJldHVybiAqbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7
Ci19CisgICAgaWYgKCFtX2ltYWdlQnVmZmVyRmFjdG9yeSkgeworI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKKyAgICAgICAgbV9pbWFnZUJ1ZmZlckZhY3RvcnkgPSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZShtX3BhZ2UtPmNocm9tZSgpKTsKKyNlbHNlCisgICAgICAgIG1faW1h
Z2VGYWN0b3J5ID0gSW1hZ2VCdWZmZXJGYWN0b3J5OjpjcmVhdGUobV9wYWdlLT5jaHJvbWUoKSk7
CiAjZW5kaWYKKyAgICB9CisgICAgcmV0dXJuICptX2ltYWdlQnVmZmVyRmFjdG9yeTsKK30KIAog
VmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gV2ViUGFnZTo6Y29uc3VtZVNhbmRib3hF
eHRlbnNpb25zKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4dGVuc2lv
bnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
ZTdmOGMwYTNiNjA0ZTdhYTE1N2M3NDAyMzFlNTU1NzQ5ZDRlZjdjNy4uOWU4Yzk1OTVkZjYzZTY4
MDk0NTgzNDc0ZWExYzcwOWRkMWI3ZjQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTgwLDYgKzE4MCw3IEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1l
bnQ7CiBjbGFzcyBIVE1MTWVudUVsZW1lbnQ7CiBjbGFzcyBIVE1MTWVudUl0ZW1FbGVtZW50Owog
Y2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CitjbGFzcyBJbWFnZUJ1ZmZlckZhY3Rvcnk7CiBjbGFz
cyBJbnRQb2ludDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFy
Z2V0Q29udGV4dDsKQEAgLTI0NSw3ICsyNDYsNiBAQCBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI7CiBjbGFzcyBQREZQbHVnaW47CiBjbGFzcyBQYWdlQmFubmVyOwog
Y2xhc3MgUGx1Z2luVmlldzsKLWNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIGNs
YXNzIFJlbW90ZVdlYkluc3BlY3RvclVJOwogY2xhc3MgVGV4dENoZWNraW5nQ29udHJvbGxlclBy
b3h5OwogY2xhc3MgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOwpAQCAtMTM2Miw5
ICsxMzYyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzeW5jaHJvbml6ZUNPUlNEaXNhYmxpbmdQ
YXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpOwogCi0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQot
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KCk7Ci0jZW5kaWYKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckZhY3RvcnkmIGlt
YWdlQnVmZmVyRmFjdG9yeSgpOwogCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CkBAIC0yMTcxLDEwICsy
MTY5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXBjVGVzdGluZ0FQSUVuYWJsZWQgeyBmYWxz
ZSB9OwogICAgIHVpbnQ2NF90IG1fdmlzaXRlZExpbmtUYWJsZUlEOwogI2VuZGlmCi0KLSNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0jZW5kaWYKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXJGYWN0b3J5PiBtX2ltYWdlQnVmZmVy
RmFjdG9yeTsKIH07CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
aW5kZXggMzdjODYyNjYwOWExZTYyY2ZhNzdlYTZmODQ5Mjc1NTllYmI0YTAwOC4uMGNlMjdkOWQ1
YWNhZGY5N2Q2M2Q1MzFkMWFiYTI5NmRiYTk2YzkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTE3
Niw2ICsxNzYsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRQYWludEVudGlyZUNvbnRl
bnRzKCkgY29uc3QgZmluYWw7CiAKKyAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckZhY3RvcnkmIGlt
YWdlQnVmZmVyRmFjdG9yeSgpIGZpbmFsOworCiAgICAgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NM
YXllcihXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKikgZmluYWw7CiAgICAgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25p
emF0aW9uKCkgZmluYWw7CkBAIC0yNTAsNCArMjUyLDUgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgV2ViVmlldyAqbV93ZWJWaWV3OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckZhY3Rvcnk+IG1faW1hZ2VCdWZmZXJGYWN0b3J5OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bQppbmRleCAzZTg1NDE3NjdmMmUwOTI1YjFhYWI1MGM4MTA3YzY5NmVmNTc3YzU4Li5jZjEyMzBk
MjBlZGQyYmJjZDBhZjQzYzlmNjZhYTc1ZjBhNzJiN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBA
IC03NSw2ICs3NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxWaWRlb0VsZW1lbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9JY29uLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0ltYWdlQnVmZmVyRmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9JbnRQb2ludC5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL05hdmlnYXRpb25BY3Rpb24uaD4KQEAgLTkyMCw2ICs5MjEsMTMgQEAgYm9vbCBXZWJDaHJv
bWVDbGllbnQ6OnNob3VsZFBhaW50RW50aXJlQ29udGVudHMoKSBjb25zdAogI2VuZGlmCiB9CiAK
K0ltYWdlQnVmZmVyRmFjdG9yeSYgV2ViQ2hyb21lQ2xpZW50OjppbWFnZUJ1ZmZlckZhY3Rvcnko
KQoreworICAgIGlmIChtX2ltYWdlQnVmZmVyRmFjdG9yeSkKKyAgICAgICAgbV9pbWFnZUJ1ZmZl
ckZhY3RvcnkgPSBJbWFnZUJ1ZmZlckZhY3Rvcnk6OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9p
bWFnZUJ1ZmZlckZhY3Rvcnk7Cit9CisKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjphdHRhY2hSb290
R3JhcGhpY3NMYXllcihGcmFtZSYgZnJhbWUsIEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIp
CiB7CiAjaWYgIVBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXgg
MjU2ZTY4OTExYjc1OGYxMzU5OTU4MDIwOTFiZTAyZjczOGY3MzMxZC4uOWRkNGFlMWFhNGU3ZTJi
Y2FkOTk5NzlmZWNjMjE2YTRmZTA2NTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0K
QEAgLTQ3LDcgKzQ3LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgot
I2ltcG9ydCA8V2ViQ29yZS9JbWFnZUJ1ZmZlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Ib3N0V2lu
ZG93Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0ltYWdlQnVmZmVyRmFjdG9yeS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVuZGVyQm94Lmg+CkBAIC0xOTgsMTMgKzE5OSwxOSBAQCBSZXRhaW5Q
dHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdT
ZXJ2aWNlUGlja2VySXRlbQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICB9CisgICAgCisgICAgYXV0byBob3N0V2luZG93ID0gbm9kZS0+ZG9j
dW1lbnQoKS5ob3N0V2luZG93KCk7CisgICAgaWYgKCFob3N0V2luZG93KSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KIAogICAgIEZs
b2F0UmVjdCByZWN0OwogICAgIGlmICghY2xpZW50RmxvYXRSZWN0Rm9yTm9kZSgqbm9kZSwgcmVj
dCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEg
c25hcHNob3QsIGFuZCB3aWxsIGJlIHBhaW50ZWQgaW4gYW4gdW5hY2NlbGVyYXRlZCBmYXNoaW9u
IGluIGxpbmUgd2l0aCBGcmFtZVNuYXBzaG90dGluZy4KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQp
OworICAgIGF1dG8gYnVmZmVyID0gaG9zdFdpbmRvdy0+aW1hZ2VCdWZmZXJGYWN0b3J5KCkuY3Jl
YXRlSW1hZ2VCdWZmZXIocmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQp
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjdjNzMyY2MwODQ3MGE4MTI1
ZmM3ZTVhNzQ1ZjFkMmY3Y2M1ZTE5Yi4uNGIxYTk3N2MzNGJlZjdhZjZjZTY0ZmNkZmQ0ODRkYjQ2
NWM1ZTNiNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTEyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gQWxsb3cgQ1NTRmlsdGVycyBhbmQg
U1ZHRmlsdGVycyB0byB1c2UgUmVtb3RlSW1hZ2VCdWZmZXJzIGlmIEdQVSBET00gcmVuZGVyaW5n
IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxOTQyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0xMi0wMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEdQVVByb2Nlc3MuQ3Jh
c2hXaGlsZVBsYXlpbmdWaWRlbyBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCAz
MDM1Y2NiZmY1NTEyNzEzYmI0MjkwYzA3NDcwMjA5YzhlZDRiNjEzLi5hNDYwOGU4MDI5Mzg4Mzkw
M2FkMWY1NGUwNjBiZDIxMGRmZWQxNjI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
ZGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyRmFjdG9yeS5oPgogCiBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY2LDcg
KzY3LDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZ1Jlc291cmNl
KQogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKKyAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyRmFjdG9yeTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICAg
ICAgSW1hZ2VCdWZmZXJIYXNoTWFwIGltYWdlQnVmZmVyTWFwOwogICAgICAgICBpbWFnZUJ1ZmZl
ck1hcC5zZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415327</attachid>
            <date>2020-12-03 12:47:48 -0800</date>
            <delta_ts>2020-12-03 13:03:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219423-20201203124747.patch</filename>
            <type>text/plain</type>
            <size>90476</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYzMTBmNTRkYTBiZjIx
ZDlhNWJkMGRmNDU5NWI3YmJjOGI5MjhiOC4uYmI0ZGRlYmVmODcxODU1YWZkYzFhYWU4YjFjMWQw
OGMxMjljMGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAyMC0xMi0wMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IEFsbG93IENTU0ZpbHRlcnMgYW5kIFNWR0ZpbHRlcnMgdG8gdXNlIFJlbW90ZUltYWdlQnVmZmVy
cyBpZiBHUFUgRE9NIHJlbmRlcmluZyBpcyBlbmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXNzIGEgSG9zdFdpbmRvdyBhcmd1bWVudCB0byBm
dW5jdGlvbnMgd2hlcmUgRmlsdGVycyBjcmVhdGUgSW1hZ2VCdWZmZXJzLgorICAgICAgICBQYXNz
IHRoaXMgSG9zdFdpbmRvdyBhbmQgUmVuZGVyaW5nUHVycG9zZTo6RE9NIHRvIEltYWdlQnVmZmVy
OjpjcmVhdGUoKS4KKyAgICAgICAgSWYgR1BVIERPTSByZW5kZXJpbmcgaXMgZW5hYmxlZCwgUmVt
b3RlSW1hZ2VCdWZmZXJzIHdpbGwgYmUgY3JlYXRlZC4KKworICAgICAgICBUaGlzIHBhdGNoIHdp
bGwgbW92ZSBhcHBseWluZyB0aGUgZmlsdGVyIGRyYXdpbmcgY29tbWFuZHMgdG8gR1BVUC4gQnV0
IHRoZQorICAgICAgICBmaWx0ZXIgZWZmZWN0IG9wZXJhdGlvbnMgYXJlIHN0aWxsIHBlcmZvcm1l
ZCBpbiBXZWJQLiBJdCB3aWxsIHRlbXBvcmFyaWx5CisgICAgICAgIHNsb3cgZG93biB0aGUgZmls
dGVyIHJlbmRlcmluZyBwZXJmb3JtYW5jZSBkdWUgdG8gdGhlIElQQyBjb21tdW5pY2F0aW9uIAor
ICAgICAgICBvZiBnZXRJbWFnZURhdGEoKS4gVGhpcyBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdp
bGwgYmUgZml4ZWQgb25jZSBhcHBseWluZworICAgICAgICB0aGUgZmlsdGVyIGVmZmVjdCBvcGVy
YXRpb25zIGFyZSBtb3ZlZCBhbHNvIHRvIHRoZSBHUFVQLgorCisgICAgICAgICogY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1
ZTo6aW1hZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aG9zdFdpbmRvdyBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAq
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGluZyBjb25zdCk6CisgICAgICAgICogaHRtbC9J
bWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3JlYXRlSW1h
Z2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjphcHBseUVmZmVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRvSW1hZ2VC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJs
ZW5kTkVPTi5oOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDb2xvck1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVGbG9vZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1
c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVMaWdodGlu
Zzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxl
bmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6YXBwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0
aW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJ
bWFnZURhdGFUb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
Y29weVVubXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlR3JhcGhpYy5oOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjpvdXRwdXQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphcHBseUZpbHRlckVmZmVjdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBw
bHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZv
clRleHRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm46OmNyZWF0ZVRpbGVJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorCiAyMDIw
LTEyLTAxICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggZm9yIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlZCBzdHJpbmcgdGVzdHMgaW4gaXNvbGF0
ZWQgbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRl
eCAyZmE1M2FhMzhjMWZjYzExNzM1NmFmOWYxNTVkMDE1ZDQ0MzdmMGNlLi5mMDYxZDkzYjlmOTM4
NzgyNmQ0OWU5NTkwYjNhMDdhMDE5NjUyMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxk
ZXJTdGF0ZS5oIgpAQCAtMTE0LDkgKzExNSwxMyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlcklt
YWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegog
ICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCisg
ICAgYXV0byBob3N0V2luZG93ID0gcmVuZGVyZXIuZG9jdW1lbnQoKS5ob3N0V2luZG93KCk7Cisg
ICAgaWYgKCFob3N0V2luZG93KQorICAgICAgICByZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsK
KwogICAgIC8vIFRyYW5zZm9ybSBJbWFnZSBpbnRvIEltYWdlQnVmZmVyLgogICAgIC8vIEZJWE1F
ICgxNDk0MjQpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgotICAgIGF1dG8gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CisgICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBTaG91bGRV
c2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKICAgICBpZiAoIXRleHR1cmUp
CiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCkBAIC0xMjksOSArMTM0LDkg
QEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXoKICAgICBjc3NGaWx0ZXItPnNldEZpbHRlclJlZ2lv
bihpbWFnZVJlY3QpOwogICAgIGlmICghY3NzRmlsdGVyLT5idWlsZChyZW5kZXJlciwgbV9maWx0
ZXJPcGVyYXRpb25zLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24pKQogICAgICAgICBy
ZXR1cm4gJkltYWdlOjpudWxsSW1hZ2UoKTsKLSAgICBjc3NGaWx0ZXItPmFwcGx5KCk7CisgICAg
Y3NzRmlsdGVyLT5hcHBseSgqaG9zdFdpbmRvdyk7CiAKLSAgICByZXR1cm4gY3NzRmlsdGVyLT5v
dXRwdXQoKS0+Y29weUltYWdlKCk7CisgICAgcmV0dXJuIGNzc0ZpbHRlci0+b3V0cHV0KCpob3N0
V2luZG93KS0+Y29weUltYWdlKCk7CiB9CiAKIHZvaWQgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6Zmls
dGVySW1hZ2VDaGFuZ2VkKGNvbnN0IEludFJlY3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggNjQ2ZWU3ZWVjMDMzYzkwMzkzZWYwMzhlNDM3ZTA1YzZmZWNjYzlmZC4uNDBkMGViMjkwNGQ1
NTJhYjgwNzg4ZGI0OTAxYjZjNDQ4M2IxMzliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0xODgzLDYgKzE4ODMsMTEgQEAgUGFnZSogRG9jdW1lbnQ6OnBhZ2UoKSBjb25zdAogICAgIHJl
dHVybiBtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKIH0KIAorSG9zdFdpbmRv
dyogRG9jdW1lbnQ6Omhvc3RXaW5kb3coKSBjb25zdAoreworICAgIHJldHVybiB2aWV3KCkgJiYg
dmlldygpLT5yb290KCkgPyB2aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsK
K30KKwogUmVmPFJhbmdlPiBEb2N1bWVudDo6Y3JlYXRlUmFuZ2UoKQogewogICAgIHJldHVybiBS
YW5nZTo6Y3JlYXRlKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODRlNThjYzEzNWRk
YjI1ZGEzYTdhODM4ZTc0YzNlNzhmNDA3YzlkNy4uMTI1Njc2NDIxNjQ2ZGExNzdkMzVmNTAxY2Y1
OTJhMzZjODc3ODU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE2MCw2ICsxNjAsNyBAQCBj
bGFzcyBIaWdobGlnaHRSZWdpc3RlcjsKIGNsYXNzIEhpdFRlc3RMb2NhdGlvbjsKIGNsYXNzIEhp
dFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEhvc3RXaW5kb3c7CiBj
bGFzcyBJZGxlQ2FsbGJhY2tDb250cm9sbGVyOwogY2xhc3MgSWRsZVJlcXVlc3RDYWxsYmFjazsK
IGNsYXNzIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDsKQEAgLTU2MCw2ICs1NjEsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdDsgLy8g
Q2FuIGJlIG51bGwuCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFnZSogcGFnZSgpIGNvbnN0OyAvLyBD
YW4gYmUgbnVsbC4KKyAgICBXRUJDT1JFX0VYUE9SVCBIb3N0V2luZG93KiBob3N0V2luZG93KCkg
Y29uc3Q7IC8vIENhbiBiZSBudWxsLgogICAgIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncygpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0dGluZ3MuZ2V0KCk7IH0KICAgICBFZGl0aW5nQmVoYXZpb3IgZWRp
dGluZ0JlaGF2aW9yKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAKaW5kZXggMTY5Y2FhOTAwMjRkMjY3NzIzMDUwNjJmNTk4ZDEyY2NkZGJhYjNmZi4u
MTE1YTg0YjUyNmViZTNhMDVmZjBiYzhhMjliYTVhNTQ0NGRkYjBmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIEhU
TUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0CiAgICAgaWYgKCF3aWR0
aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBob3N0V2luZG93
ID0gKGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290KCkpID8gZG9j
dW1lbnQoKS52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKKyAgICBhdXRv
IGhvc3RXaW5kb3cgPSBkb2N1bWVudCgpLmhvc3RXaW5kb3coKTsKIAogICAgIGF1dG8gcmVuZGVy
aW5nTW9kZSA9IHNob3VsZEFjY2VsZXJhdGUoc2l6ZSgpKSA/IFJlbmRlcmluZ01vZGU6OkFjY2Vs
ZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKICAgICAvLyBGSVhNRTogQWRk
IGEgbmV3IHNldHRpbmcgZm9yIERpc3BsYXlMaXN0IGRyYXdpbmcgb24gY2FudmFzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggNjQwMjg4NTdkNjRlMGY0MzY3
YzU2Yzc3OTk0OWUzZGQyYjA1MTlhYi4uOTBlNWZmYTQ4YjQ0ZmYyODc4N2RjNWEzOTIxOTM5ZGQw
MTYzM2Y0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0y
ODUsNyArMjg1LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjptZWRpYVBsYXllckZpcnN0Vmlk
ZW9GcmFtZUF2YWlsYWJsZSgpCiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZpZGVvRWxlbWVu
dDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7Ci0gICAgYXV0byogaG9zdFdpbmRvdyA9IGRv
Y3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290KCkgPyBkb2N1bWVudCgp
LnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOworICAgIGF1dG8gaG9zdFdp
bmRvdyA9IGRvY3VtZW50KCkuaG9zdFdpbmRvdygpOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxh
eUxpc3QgPSBkb2N1bWVudCgpLnNldHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgp
ID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsK
ICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBzaG91
bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZTo6TWVkaWFQYWludGluZywgMSwgQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggYjQ2NjE2ODA0MzA3YjQ1YWQzYzc3NjEyZTI3
YWU0OWI0YWM2YzJiNi4uMWIyODE5OWYzNmRlNGQ3MDlhYWM1ZTVhMWM4YTU4MDgzZGZlMjFjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTgxLDExICs4MSw4IEBAIFJlZjxJ
bWFnZUJpdG1hcD4gSW1hZ2VCaXRtYXA6OmNyZWF0ZShPcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tp
bmc+JiYgYmFja2luZ1N0b3JlCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQml0bWFwOjpjcmVh
dGVJbWFnZUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlKQogewogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0
LmlzRG9jdW1lbnQoKSkgewotICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgaWYgKGRvY3VtZW50LnZpZXco
KSAmJiBkb2N1bWVudC52aWV3KCktPnJvb3QoKSkgewotICAgICAgICAgICAgYXV0byBob3N0V2lu
ZG93ID0gZG9jdW1lbnQudmlldygpLT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2Nh
bGUsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7Ci0g
ICAgICAgIH0KKyAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLmhvc3RXaW5kb3coKTsKKyAgICAgICAgcmV0dXJuIEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6
Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFj
ZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKICAgICB9CiAKICAgICAv
LyBGSVhNRSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjE4NDgyPiBFbmFibGUgd29ya2VyIGJhc2Vk
IEltYWdlQml0bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJhd2luZyB0byB1c2UgR1BVIFByb2Nl
c3MgcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5oCmluZGV4IDhiYzUwZDVlNzlkZDY2Zjc1OGNlMTQzYzVjOGY5YTdkNTlkYTA2OGYuLmU3
NmY5MzM0Njk1NjY3Yzk0Y2Q5YjYwYmU1YzhiMzczY2VhZTZjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRkVDb2xvck1hdHJpeDsKIGNsYXNzIEZFQ29tcG9u
ZW50VHJhbnNmZXI7CitjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgU291cmNlR3JhcGhpYzsKIAog
Y2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
UmVuZGVyZXIgewpAQCAtNDcsNyArNDgsNyBAQCBjbGFzcyBGaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZSA6IHB1YmxpYyBGaWx0ZXJFZmZlY3RSZW5kZXJlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZT4gdHJ5Q3Jl
YXRlKEZpbHRlckVmZmVjdCYpOwogICAgIFJldGFpblB0cjxDSUNvbnRleHQ+IHNoYXJlZENJQ29u
dGV4dCgpOwotICAgIHZvaWQgYXBwbHlFZmZlY3RzKEZpbHRlckVmZmVjdCYpIGZpbmFsOworICAg
IHZvaWQgYXBwbHlFZmZlY3RzKEhvc3RXaW5kb3cmLCBGaWx0ZXJFZmZlY3QmKSBmaW5hbDsKICAg
ICBib29sIGhhc1Jlc3VsdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fb3V0cHV0SW1hZ2U7IH0K
ICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3QgZmluYWw7CiAgICAgRmxvYXRSZWN0IGRl
c3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYpIGNvbnN0IGZpbmFsOwpAQCAtNTYsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxDSUltYWdlPiBjb25uZWN0
Q0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYpOwotICAgIHZvaWQgcmVuZGVyVG9JbWFnZUJ1ZmZlcihG
aWx0ZXJFZmZlY3QmKSBmaW5hbDsKKyAgICB2b2lkIHJlbmRlclRvSW1hZ2VCdWZmZXIoSG9zdFdp
bmRvdyYsIEZpbHRlckVmZmVjdCYpIGZpbmFsOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzQ29y
ZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYpOwogICAgIHN0YXRpYyBib29sIGNhblJlbmRl
clVzaW5nQ0lGaWx0ZXJzKEZpbHRlckVmZmVjdCYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4NTUyZjFlNDZhMWQz
NzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIuLmYyYjRmZTMwNDkwMmU3NDhkMDgyYzhlZGI3YzQ3NzM5
YWI0M2YyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW0KQEAgLTExMiwxMiArMTEyLDEyIEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2U6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYgZWZmCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
OjphcHBseUVmZmVjdHMoRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KQordm9pZCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZTo6YXBwbHlFZmZlY3RzKEhvc3RXaW5kb3cmIGhvc3RXaW5kb3cs
IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkKIHsKICAgICBtX291dHB1dEltYWdlID0gY29ubmVj
dENJRmlsdGVycyhsYXN0RWZmZWN0KTsKICAgICBpZiAoIW1fb3V0cHV0SW1hZ2UpCiAgICAgICAg
IHJldHVybjsKLSAgICByZW5kZXJUb0ltYWdlQnVmZmVyKGxhc3RFZmZlY3QpOworICAgIHJlbmRl
clRvSW1hZ2VCdWZmZXIoaG9zdFdpbmRvdywgbGFzdEVmZmVjdCk7CiB9CiAKIFJldGFpblB0cjxD
SUltYWdlPiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Y29ubmVjdENJRmlsdGVycyhG
aWx0ZXJFZmZlY3QmIGVmZmVjdCkKQEAgLTI3MiwxMCArMjcyLDEwIEBAIEltYWdlQnVmZmVyKiBG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6b3V0cHV0KCkgY29uc3QKICAgICByZXR1cm4g
bV9vdXRwdXRJbWFnZUJ1ZmZlci5nZXQoKTsKIH0KICAgICAKLXZvaWQgRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRvSW1hZ2VCdWZmZXIoRmlsdGVyRWZmZWN0JiBsYXN0RWZm
ZWN0KQordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1
ZmZlcihIb3N0V2luZG93JiBob3N0V2luZG93LCBGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCiB7
CiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKGxh
c3RFZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIG1fb3V0cHV0SW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZCwgbGFzdEVmZmVjdC5maWx0ZXIoKS5maWx0ZXJTY2FsZSgpLCBsYXN0RWZmZWN0
LnJlc3VsdENvbG9yU3BhY2UoKSk7CisgICAgbV9vdXRwdXRJbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCBTaG91
bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgbGFzdEVmZmVjdC5m
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpLCBsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4LCAmaG9zdFdpbmRvdyk7CiAgICAgCiAgICAgaWYgKCFtX291dHB1dElt
YWdlQnVmZmVyKSB7CiAgICAgICAgIGNsZWFyUmVzdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5k
TkVPTi5oCmluZGV4IGRmZTM1MzA1NTBlZGQyZDBmNzA4NjQwYmU5YTE0NjI4OTcwNzYyN2UuLmRm
ODUwZTNlMzRhZDZhYzA5OTc1MTg0NTRhZTQwZjZkYjM3ZmQ4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9G
RUJsZW5kTkVPTi5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIH0KIH07CiAKLXZv
aWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQgRkVCbGVuZDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmKQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBp
bnB1dEVmZmVjdCgwKTsKICAgICBGaWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0KDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5jcHAKaW5kZXggY2RlYWE2NWU2NzA0Y2Q2N2ZiMGE3YWZlOWFmMThmYmI2MmMyY2VkOS4uMTE5
MWJmZTlkYjZkODgxMzk0NTdiYjM2NTdlMWMxZWE2YmQ3ZTgwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC01NCwx
OCArNTQsMTggQEAgYm9vbCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlIG1vZGUpCiB9
CiAKICNpZiAhSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotdm9pZCBGRUJsZW5kOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9z
dFdpbmRvdyYgaG9zdFdpbmRvdykKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZl
Y3QoMCk7CiAgICAgRmlsdGVyRWZmZWN0KiBpbjIgPSBpbnB1dEVmZmVjdCgxKTsKIAotICAgIElt
YWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAg
SW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoaG9zdFdp
bmRvdyk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIEdyYXBo
aWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAKLSAg
ICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAg
ICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIyID0gaW4yLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwor
ICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdChob3N0
V2luZG93KTsKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIyID0gaW4yLT5pbWFnZUJ1ZmZl
clJlc3VsdChob3N0V2luZG93KTsKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZl
cjIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAppbmRleCA3MGU4NDA3YmY1YzIwMGQ0NTIxNmI4Zjlj
MDg1MTdiNTA3OWU3OTY2Li5jYzNmZGQzYjAyNzE4NDgxMjM5Yjg0ODBmMmUxY2ZiMjIwZTM0NGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNvbnN0IGNo
YXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVCbGVuZCI7IH0KIAotICAg
IHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoSG9zdFdpbmRvdyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1B
cHBseUdlbmVyaWModW5zaWduZWQgY2hhciogc3JjUGl4ZWxBcnJheUEsIHVuc2lnbmVkIGNoYXIq
IHNyY1BpeGVsQXJyYXlCLCB1bnNpZ25lZCBjaGFyKiBkc3RQaXhlbEFycmF5LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3JBcnJheUxlbmd0aCk7CiAgICAgdm9pZCBw
bGF0Zm9ybUFwcGx5TkVPTih1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFycmF5QSwgdW5zaWduZWQg
Y2hhciogc3JjUGl4ZWxBcnJheUIsIHVuc2lnbmVkIGNoYXIqIGRzdFBpeGVsQXJyYXksCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bG9yTWF0cml4LmNwcAppbmRleCBlM2VjN2FmMThlYmMyODUyNThlNjI4NjQyMTg2MjdjZThkMjE3
NThiLi43NzBiNTg1OTQxZjRkMmM1MjEwODM3MGQ5YTk0YjRkNTg1YmI4MzAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5jcHAKQEAgLTI3MywxNSArMjczLDE1IEBAIHZvaWQgZWZmZWN0VHlwZShVaW50OENs
YW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzLCBJbnRT
CiAgICAgfQogfQogCi12b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
Cit2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShIb3N0V2luZG93JiBo
b3N0V2luZG93KQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIAot
ICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7
CisgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQo
aG9zdFdpbmRvdyk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgSW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAg
SW1hZ2VCdWZmZXIqIGluQnVmZmVyID0gaW4tPmltYWdlQnVmZmVyUmVzdWx0KGhvc3RXaW5kb3cp
OwogICAgIGlmIChpbkJ1ZmZlcikKICAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3
SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNv
bHV0ZVBhaW50UmVjdCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXggN2M2ZGM1N2ZiYTIxYmI2
MzE1YzVhNzZjMDBlMDJiMWZhYmVlYTBjZS4uNzk4ZjI4YWJiOWEwZTVlOGY2MTc5NzNhMTY4OTQw
ZDBjMDU1NDVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToK
IAogICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVD
b2xvck1hdHJpeCI7IH0KIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9zdFdpbmRvdyYpIG92ZXJyaWRl
OwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4
dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuY3BwCmluZGV4IDRjZWUxM2E4NTQyNTU2N2NiYWE5NjVjNDU5MjEz
ZmM3MmJkNWEwNzYuLmU4NGE1YjhlODA0ODIzYzRiYmI1N2JmNjIzMmNlMmY5NjVkZmZhNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b25lbnRUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQg
RkVDb21wb25lbnRUcmFuc2Zlcjo6Y29tcHV0ZUdhbW1hVGFibGUoTG9va3VwVGFibGUmIHZhbHVl
cywgY29uc3QgQ29tcG9uZW50CiAgICAgfQogfQogCi12b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZShIb3N0V2luZG93JiBob3N0V2luZG93KQogewogICAgIEZpbHRlckVm
ZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgRkVD
b21wb25lbnRUcmFuc2Zlcjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBjb21wdXRlTG9v
a3VwVGFibGVzKHJlZFRhYmxlLCBncmVlblRhYmxlLCBibHVlVGFibGUsIGFscGhhVGFibGUpOwog
CiAgICAgSW50UmVjdCBkcmF3aW5nUmVjdCA9IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURh
dGEoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgIGluLT5jb3B5VW5tdWx0aXBsaWVkUmVz
dWx0KCpwaXhlbEFycmF5LCBkcmF3aW5nUmVjdCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKKyAg
ICBpbi0+Y29weVVubXVsdGlwbGllZFJlc3VsdChob3N0V2luZG93LCAqcGl4ZWxBcnJheSwgZHJh
d2luZ1JlY3QsIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAgICAgdW5zaWduZWQgcGl4ZWxBcnJh
eUxlbmd0aCA9IHBpeGVsQXJyYXktPmxlbmd0aCgpOwogICAgIHVpbnQ4X3QqIGRhdGEgPSBwaXhl
bEFycmF5LT5kYXRhKCk7CiAgICAgZm9yICh1bnNpZ25lZCBwaXhlbE9mZnNldCA9IDA7IHBpeGVs
T2Zmc2V0IDwgcGl4ZWxBcnJheUxlbmd0aDsgcGl4ZWxPZmZzZXQgKz0gNCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRy
YW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9uZW50VHJhbnNmZXIuaAppbmRleCAyYjU4NmRlZjdmYjQyYTM3YjJlMTIzZWRhODcxMTljNGVi
MzQ4YTUxLi43ZWY1YWQwMjFiZTUxNTI1NTZhMDBlMWVlYWUwYzlhYTgyY2QwMmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50
VHJhbnNmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9uZW50VHJhbnNmZXIuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBjb21wdXRlTG9va3VwVGFibGVzKExvb2t1cFRhYmxlJiByZWRUYWJsZSwgTG9va3VwVGFi
bGUmIGdyZWVuVGFibGUsIExvb2t1cFRhYmxlJiBibHVlVGFibGUsIExvb2t1cFRhYmxlJiBhbHBo
YVRhYmxlKTsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9zdFdpbmRvdyYpIG92ZXJyaWRlOwogCiAg
ICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0cmVh
bSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAK
aW5kZXggNGQyMjhmOTA1YjIwZmI5MTNhZGRmYmRiZDI5ODk5YjQ4ODFmNmRhOS4uZjU4Yjc2YTA1
NWZiMWJlY2UyMzgwZDI4YzU5MjZkMzM0MzFmMjJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTIy
Myw3ICsyMjMsNyBAQCB2b2lkIEZFQ29tcG9zaXRlOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dCgpCiAgICAgfQogfQogCi12b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQordm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmIGhv
c3RXaW5kb3cpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogICAg
IEZpbHRlckVmZmVjdCogaW4yID0gaW5wdXRFZmZlY3QoMSk7CkBAIC0yMzUsMjQgKzIzNSwyNCBA
QCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIEludFJlY3QgZWZmZWN0QURyYXdpbmdSZWN0ID0gcmVxdWVzdGVk
UmVnaW9uT2ZJbnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7Ci0gICAgICAg
IGF1dG8gc3JjUGl4ZWxBcnJheSA9IGluLT5wcmVtdWx0aXBsaWVkUmVzdWx0KGVmZmVjdEFEcmF3
aW5nUmVjdCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgYXV0byBzcmNQaXhlbEFy
cmF5ID0gaW4tPnByZW11bHRpcGxpZWRSZXN1bHQoaG9zdFdpbmRvdywgZWZmZWN0QURyYXdpbmdS
ZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogICAgICAgICBpZiAoIXNyY1BpeGVsQXJyYXkp
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgSW50UmVjdCBlZmZlY3RCRHJhd2luZ1Jl
Y3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKSk7Ci0gICAgICAgIGluMi0+Y29weVByZW11bHRpcGxpZWRSZXN1bHQoKmRzdFBpeGVsQXJy
YXksIGVmZmVjdEJEcmF3aW5nUmVjdCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKKyAgICAgICAg
aW4yLT5jb3B5UHJlbXVsdGlwbGllZFJlc3VsdChob3N0V2luZG93LCAqZHN0UGl4ZWxBcnJheSwg
ZWZmZWN0QkRyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOwogCiAgICAgICAgIHBs
YXRmb3JtQXJpdGhtZXRpY1NvZnR3YXJlKCpzcmNQaXhlbEFycmF5LCAqZHN0UGl4ZWxBcnJheSwg
bV9rMSwgbV9rMiwgbV9rMywgbV9rNCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBJ
bWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOworICAg
IEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KGhvc3RX
aW5kb3cpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBHcmFw
aGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCi0g
ICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW4tPmltYWdlQnVmZmVyUmVzdWx0KCk7Ci0g
ICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyMiA9IGluMi0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsK
KyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQoaG9z
dFdpbmRvdyk7CisgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyMiA9IGluMi0+aW1hZ2VCdWZm
ZXJSZXN1bHQoaG9zdFdpbmRvdyk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZm
ZXIyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAppbmRleCA3ZDA4ZTFmNzEwN2I0Yjk2
OGM1OGUzYTM3YzMyYWUyZjc2YWVhMGMzLi41YTg0ZTIzNWE4OTMwZjUwNWUxOGRlNDcyNDI1NzY3
MjA3MTk0YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIGRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KEhvc3RXaW5kb3cmKSBvdmVycmlkZTsKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIGlubGluZSB2b2lkIHBsYXRmb3JtQXJpdGhtZXRpY1NvZnR3YXJlKGNv
bnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5h
dGlvbiwgZmxvYXQgazEsIGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252
b2x2ZU1hdHJpeC5jcHAKaW5kZXggMWNjNTI5MTA2Y2U0MmE5NDZhZDkxNzI0YjIyMjVmNTkzZTQ4
OWUwZC4uZmMxYmMyOGU1YjY5ODMzZDIzOTAzOTk1Nzc0OTQzMzc0OTc3MTZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0
cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29udm9sdmVNYXRyaXguY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgQUxXQVlTX0lOTElORSB2b2lk
IEZFQ29udm9sdmVNYXRyaXg6OnNldE91dGVyUGl4ZWxzKFBhaW50aW5nRGF0YSYgcGFpbnRpbmdE
YXRhLAogICAgICAgICBmYXN0U2V0T3V0ZXJQaXhlbHM8ZmFsc2U+KHBhaW50aW5nRGF0YSwgeDEs
IHkxLCB4MiwgeTIpOwogfQogCi12b2lkIEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShI
b3N0V2luZG93JiBob3N0V2luZG93KQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVm
ZmVjdCgwKTsKIApAQCAtMzg0LDkgKzM4NCw5IEBAIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gc3Jj
UGl4ZWxBcnJheTsKICAgICBpZiAobV9wcmVzZXJ2ZUFscGhhKQotICAgICAgICBzcmNQaXhlbEFy
cmF5ID0gaW4tPnVubXVsdGlwbGllZFJlc3VsdChlZmZlY3REcmF3aW5nUmVjdCwgb3BlcmF0aW5n
Q29sb3JTcGFjZSgpKTsKKyAgICAgICAgc3JjUGl4ZWxBcnJheSA9IGluLT51bm11bHRpcGxpZWRS
ZXN1bHQoaG9zdFdpbmRvdywgZWZmZWN0RHJhd2luZ1JlY3QsIG9wZXJhdGluZ0NvbG9yU3BhY2Uo
KSk7CiAgICAgZWxzZQotICAgICAgICBzcmNQaXhlbEFycmF5ID0gaW4tPnByZW11bHRpcGxpZWRS
ZXN1bHQoZWZmZWN0RHJhd2luZ1JlY3QsIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CisgICAgICAg
IHNyY1BpeGVsQXJyYXkgPSBpbi0+cHJlbXVsdGlwbGllZFJlc3VsdChob3N0V2luZG93LCBlZmZl
Y3REcmF3aW5nUmVjdCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKICAgICBpZiAoIXNyY1BpeGVs
QXJyYXkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAppbmRleCA2N2Q0
YzY1NjdmY2U2YjI3ZWU1YWI4OTVhNmUxZTUwMDU0ZTEzZGJhLi45Y2NhZjA5Y2RhYzhkYzNhYTBj
MTFlOTNiZjg0ZGQyYjViYzUxMGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaApAQCAtODQsNyAr
ODQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgp
IG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhFZmZl
Y3RSZWN0KCkpKTsgfQogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShIb3N0V2luZG93Jikgb3ZlcnJpZGU7
CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0
U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVu
dE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlz
cGxhY2VtZW50TWFwLmNwcAppbmRleCBhNmVlNDQ2M2MzODA4OGMyMDc0Y2RhYzlkOGQ0ODQ3NjA2
OGYyMjY1Li42MTZmOTBmMDFiMzIxYzkwODU2MGQ4NjhkOWEyYWYzZmFkZmY4ZWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2Vt
ZW50TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW5saW5lIHVu
c2lnbmVkIGJ5dGVPZmZzZXRPZlBpeGVsKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIHVuc2lnbmVk
IHJvd0J5dAogICAgIHJldHVybiB4ICogYnl0ZXNQZXJQaXhlbCArIHkgKiByb3dCeXRlczsKIH0K
IAotdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQg
RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShIb3N0V2luZG93JiBob3N0
V2luZG93KQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKICAgICBG
aWx0ZXJFZmZlY3QqIGluMiA9IGlucHV0RWZmZWN0KDEpOwpAQCAtMTA1LDExICsxMDUsMTEgQEAg
dm9pZCBGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgSW50UmVjdCBlZmZlY3RBRHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdp
b25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBhdXRvIGlu
cHV0SW1hZ2UgPSBpbi0+cHJlbXVsdGlwbGllZFJlc3VsdChlZmZlY3RBRHJhd2luZ1JlY3QpOwor
ICAgIGF1dG8gaW5wdXRJbWFnZSA9IGluLT5wcmVtdWx0aXBsaWVkUmVzdWx0KGhvc3RXaW5kb3cs
IGVmZmVjdEFEcmF3aW5nUmVjdCk7CiAKICAgICBJbnRSZWN0IGVmZmVjdEJEcmF3aW5nUmVjdCA9
IHJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgp
KTsKICAgICAvLyBUaGUgY2FsY3VsYXRpb25zIHVzaW5nIHRoZSBwaXhlbCB2YWx1ZXMgZnJvbSDi
gJhpbjLigJkgYXJlIHBlcmZvcm1lZCB1c2luZyBub24tcHJlbXVsdGlwbGllZCBjb2xvciB2YWx1
ZXMuCi0gICAgYXV0byBkaXNwbGFjZW1lbnRJbWFnZSA9IGluMi0+dW5tdWx0aXBsaWVkUmVzdWx0
KGVmZmVjdEJEcmF3aW5nUmVjdCk7CisgICAgYXV0byBkaXNwbGFjZW1lbnRJbWFnZSA9IGluMi0+
dW5tdWx0aXBsaWVkUmVzdWx0KGhvc3RXaW5kb3csIGVmZmVjdEJEcmF3aW5nUmVjdCk7CiAgICAg
CiAgICAgaWYgKCFpbnB1dEltYWdlIHx8ICFkaXNwbGFjZW1lbnRJbWFnZSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCmluZGV4IDhiNjExZGEwMTUyMmQ1Njc0MDI4ZTM1
MTMyOWY2OWVlNTAwNTRjMzIuLjQ1ZDA3NDRlNjUxNmEyYjk4NzVlM2JlZmY0NmE5Y2MwMDViZThj
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToK
IAogICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVE
aXNwbGFjZW1lbnRNYXAiOyB9CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92
ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7
IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURyb3BTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCmluZGV4IDIyYjc0NDU2ZDhkZThlY2EyYzRkMWJhNmYyZTVj
MmYxMTA0OTc4MjYuLjIwYzQyNzNkOWY4ODAzN2UwZGY3ZGRmZGIwODYyNjg4MDQ4YmUxYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5jcHAKQEAgLTcwLDExICs3MCwxMSBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVu
Y2xvc2luZ0ludFJlY3QoYWJzb2x1dGVQYWludFJlY3QpKTsKIH0KIAotdm9pZCBGRURyb3BTaGFk
b3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmIGhvc3RXaW5kb3cpCiB7CiAgICAgRmlsdGVyRWZmZWN0
KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0g
Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2Ug
PSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdChob3N0V2luZG93KTsKICAgICBpZiAoIXJlc3VsdElt
YWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBGRURyb3BTaGFk
b3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb25X
aXRoT2Zmc2V0KGRyYXdpbmdSZWdpb24pOwogICAgIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0Lm1v
dmUob2Zmc2V0KTsKIAotICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGluLT5pbWFnZUJ1
ZmZlclJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSA9IGluLT5pbWFnZUJ1
ZmZlclJlc3VsdChob3N0V2luZG93KTsKICAgICBpZiAoIXNvdXJjZUltYWdlKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEcm9wU2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCmluZGV4IGI0ZTBhMjAxMmZlZGI3Yjc3YmYzZTA1NzM0ZWU4
OGEyOWVmZjM4NGMuLjVlODE1MGExZDZiOTI2YTEzM2M1ZWJmMjU5ZDE4ZDc0ZTA3ODVlNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgY2hh
ciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRURyb3BTaGFkb3ciOyB9CiAK
LSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKaW5kZXggYjQyMzU1
MzRjMzhiMWViYTIxMWVlODQ4NjE3OTkyMzgwZjNiNmIwMS4uYjkwZGQyODg3M2E1M2JkZjNlM2Jk
Nzg1NTU1MDI3M2QwNTZlNGZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCkBAIC01OCw5ICs1OCw5IEBAIGJvb2wgRkVG
bG9vZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZsb29kT3BhY2l0eSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBGRUZsb29kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUZs
b29kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9zdFdpbmRvdyYgaG9zdFdpbmRvdykKIHsKLSAg
ICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwor
ICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KGhv
c3RXaW5kb3cpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaApp
bmRleCBmNjY5MWU0NjRkYWQ4MzVhMDFmZDgwNjk0NDk1YmViNGIzZmFjN2M4Li5hODAyZTcxNzFi
NjQyYjhiYzY4NWRkZjVhNGIwZWQxYjZjNWE4N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaApAQCAtNDksNyArNDksNyBAQCBw
cml2YXRlOgogCiAgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJGRUZsb29kIjsgfQogCi0gICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShIb3N0V2luZG93Jikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBz
ZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggM2E0ZGY0NzU4M2RhNjRhZGU2YWJhMDU0MTE2
MmYzZGUzOGU2Mjk5Ny4uNTUwNDM2ZTcyYWM3ZTgxOGQyNTcyYjQxZTk1NGUwMWE4M2ZmM2Y0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdh
dXNzaWFuQmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEZFR2F1c3Np
YW5CbHVyOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiAgICAgc2V0QWJzb2x1dGVQYWlu
dFJlY3QoZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0ZVBhaW50UmVjdCkpOwogfQogCi12b2lkIEZF
R2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUdhdXNzaWFuQmx1
cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmIGhvc3RXaW5kb3cpCiB7CiAgICAg
RmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkBAIC01MzEsNyArNTMxLDcgQEAg
dm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBzZXRJc0Fs
cGhhSW1hZ2UoaW4tPmlzQWxwaGFJbWFnZSgpKTsKIAogICAgIEludFJlY3QgZWZmZWN0RHJhd2lu
Z1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKTsKLSAgICBpbi0+Y29weVByZW11bHRpcGxpZWRSZXN1bHQoKmRzdFBpeGVsQXJyYXks
IGVmZmVjdERyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNwYWNlKCkpOworICAgIGluLT5jb3B5
UHJlbXVsdGlwbGllZFJlc3VsdChob3N0V2luZG93LCAqZHN0UGl4ZWxBcnJheSwgZWZmZWN0RHJh
d2luZ1JlY3QsIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CiAgICAgaWYgKCFtX3N0ZFggJiYgIW1f
c3RkWSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggNWZiOTdmZmIw
NzBjMmRhZWI2ZWIyODNiZWFhYTE3NjQ3Y2JiMmQzZS4uNjZkN2Y0MGU4YTQ3Y2QwN2NjNDkyNzZl
NDg2MDBkYTg0ZmY0NzhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtNjQsNyArNjQsNyBAQCBw
cml2YXRlOgogICAgICAgICB1bnNpZ25lZCBrZXJuZWxTaXplWTsKICAgICB9OwogCi0gICAgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBw
bHlTb2Z0d2FyZShIb3N0V2luZG93Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldGVybWluZUFi
c29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuY3BwCmluZGV4IDI1NjI1MmJj
MzBiMTQxMWQzMzYzZmMwMjIzYTAyNzRmOWNmZjRiNTguLjhlZTEyNDZjMjhmMTE3OGYyOGVhYjM1
MGY1ZWE2YmUwMzhhM2E2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIGJv
b2wgRkVMaWdodGluZzo6ZHJhd0xpZ2h0aW5nKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbHMsIGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRUxpZ2h0
aW5nOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRUxpZ2h0aW5nOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoSG9zdFdpbmRvdyYgaG9zdFdpbmRvdykKIHsKICAgICBGaWx0ZXJFZmZlY3Qq
IGluID0gaW5wdXRFZmZlY3QoMCk7CiAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIEZFTGlnaHRp
bmc6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgc2V0SXNBbHBoYUltYWdlKGZhbHNlKTsK
IAogICAgIEludFJlY3QgZWZmZWN0RHJhd2luZ1JlY3QgPSByZXF1ZXN0ZWRSZWdpb25PZklucHV0
SW1hZ2VEYXRhKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKLSAgICBpbi0+Y29weVByZW11bHRp
cGxpZWRSZXN1bHQoKnJlc3V0UGl4ZWxBcnJheSwgZWZmZWN0RHJhd2luZ1JlY3QsIG9wZXJhdGlu
Z0NvbG9yU3BhY2UoKSk7CisgICAgaW4tPmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KGhvc3RXaW5k
b3csICpyZXN1dFBpeGVsQXJyYXksIGVmZmVjdERyYXdpbmdSZWN0LCBvcGVyYXRpbmdDb2xvclNw
YWNlKCkpOwogICAgIC8vIEZJWE1FOiBzdXBwb3J0IGtlcm5lbFVuaXRMZW5ndGhzIG90aGVyIHRo
YW4gKDEsMSkuIFRoZSBpc3N1ZSBoZXJlIGlzIHRoYXQgdGhlIFczCiAgICAgLy8gc3RhbmRhcmQg
aGFzIG5vIHRlc3QgY2FzZSBmb3IgdGhlbSwgYW5kIG90aGVyIGJyb3dzZXJzIChsaWtlIEZpcmVm
b3gpIGhhcyBzdHJhbmdlCiAgICAgLy8gb3V0cHV0IGZvciB2YXJpb3VzIGtlcm5lbFVuaXRMZW5n
dGhzLCBhbmQgSSBhbSBub3Qgc3VyZSB0aGV5IGFyZSByZWxpYWJsZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVMaWdodGluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKaW5kZXgg
N2ZiNTYwOWRiYjU3Yjc2MjAxZjMzMDMzNzA1MmU0MWFjMjUwM2NmOS4uZTc4NmNjOTgyM2E0ZGVh
NDQ0OTNhOGVmNGQ1YzkxZGRlZDUwMTYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5nLmgKQEAgLTE0MCw3ICsxNDAsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRQaXhlbChpbnQgb2Zmc2V0LCBjb25zdCBMaWdodGlu
Z0RhdGEmLCBjb25zdCBMaWdodFNvdXJjZTo6UGFpbnRpbmdEYXRhJiwgaW50IHgsIGludCB5LCBm
bG9hdCBmYWN0b3JYLCBmbG9hdCBmYWN0b3JZLCBJbnRTaXplIG5vcm1hbFZlY3Rvcik7CiAgICAg
dm9pZCBzZXRQaXhlbEludGVybmFsKGludCBvZmZzZXQsIGNvbnN0IExpZ2h0aW5nRGF0YSYsIGNv
bnN0IExpZ2h0U291cmNlOjpQYWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IGZhY3Rv
clgsIGZsb2F0IGZhY3RvclksIEludFNpemUgbm9ybWFsVmVjdG9yLCBmbG9hdCBhbHBoYSk7CiAK
LSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcGxh
dGZvcm1BcHBseShjb25zdCBMaWdodGluZ0RhdGEmLCBjb25zdCBMaWdodFNvdXJjZTo6UGFpbnRp
bmdEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNZXJnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFTWVyZ2UuY3BwCmluZGV4IDBhMjAwMDFiMTczYmQ4ZmRmNmJiYTYzNmNkMjNjZTQ3
MDI2ZTdiM2YuLmI0ODQwYTA4OWNlZjg5OWJhMjBjYjJjYTg4ZGI3YTQ4ZWM4NWJlZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdl
LmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIFJlZjxGRU1lcmdlPiBGRU1lcmdlOjpjcmVhdGUoRmls
dGVyJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVNZXJnZShmaWx0ZXIpKTsK
IH0KIAotdm9pZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRU1lcmdl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9zdFdpbmRvdyYgaG9zdFdpbmRvdykKIHsKICAgICB1
bnNpZ25lZCBzaXplID0gbnVtYmVyT2ZFZmZlY3RJbnB1dHMoKTsKICAgICBBU1NFUlQoc2l6ZSA+
IDApOwogCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZl
clJlc3VsdChob3N0V2luZG93KTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1
cm47CiAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5j
b250ZXh0KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAg
ICAgICBGaWx0ZXJFZmZlY3QqIGluID0gaW5wdXRFZmZlY3QoaSk7Ci0gICAgICAgIGlmIChJbWFn
ZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQoKSkKKyAgICAgICAgaWYg
KEltYWdlQnVmZmVyKiBpbkJ1ZmZlciA9IGluLT5pbWFnZUJ1ZmZlclJlc3VsdChob3N0V2luZG93
KSkKICAgICAgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmgKaW5kZXggNWNmYzVjYjc5ODE5Y2VjZWQ1MDczZTU3YjAxOTRlYmNmMThmMjYwNy4u
N2MzOWNjZDJjMGVjYzM1YjhlNzNkNWY1ZWY3MGMxZjhjOGIzZTU1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmgKQEAgLTM1LDcg
KzM1LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiRkVNZXJnZSI7IH0KIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9zdFdpbmRv
dyYpIG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1vcnBob2xvZ3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU1vcnBob2xvZ3kuY3BwCmluZGV4IDE0ODZkNjFjZjg5MWYyM2FmMDgwMmQxYTczOTQw
MWM0Y2M4ZGQ1M2YuLjYwN2IxNjg5NjgxZWZiOThjNmZmNDliOWVkYzEyOTg4MDJiNjRmNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3Jw
aG9sb2d5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFTW9ycGhvbG9neS5jcHAKQEAgLTIzMCwxNyArMjMwLDE3IEBAIHZvaWQgRkVNb3JwaG9sb2d5
OjpwbGF0Zm9ybUFwcGx5KGNvbnN0IFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhKQogICAgIHBs
YXRmb3JtQXBwbHlHZW5lcmljKHBhaW50aW5nRGF0YSwgMCwgcGFpbnRpbmdEYXRhLmhlaWdodCk7
CiB9CiAKLWJvb2wgRkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5RGVnZW5lcmF0ZShVaW50OENs
YW1wZWRBcnJheSYgZHN0UGl4ZWxBcnJheSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBpbnQg
cmFkaXVzWCwgaW50IHJhZGl1c1kpCitib29sIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseURl
Z2VuZXJhdGUoSG9zdFdpbmRvdyYgaG9zdFdpbmRvdywgVWludDhDbGFtcGVkQXJyYXkmIGRzdFBp
eGVsQXJyYXksIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgaW50IHJhZGl1c1gsIGludCByYWRp
dXNZKQogewogICAgIGlmIChyYWRpdXNYIDwgMCB8fCByYWRpdXNZIDwgMCB8fCAoIXJhZGl1c1gg
JiYgIXJhZGl1c1kpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgw
KTsKLSAgICAgICAgaW4tPmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KGRzdFBpeGVsQXJyYXksIGlt
YWdlUmVjdCwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgaW4tPmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KGhvc3RXaW5kb3csIGRzdFBpeGVsQXJyYXksIGltYWdlUmVjdCwgb3BlcmF0
aW5nQ29sb3JTcGFjZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
Cit2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmIGhv
c3RXaW5kb3cpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCkBA
IC0yNTQsMTEgKzI1NCwxMSBAQCB2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICBJbnRSZWN0IGVmZmVjdERyYXdpbmdSZWN0ID0gcmVxdWVzdGVkUmVnaW9uT2ZJ
bnB1dEltYWdlRGF0YShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAKICAgICBJbnRTaXplIHJh
ZGl1cyA9IGZsb29yZWRJbnRTaXplKEZsb2F0U2l6ZShtX3JhZGl1c1gsIG1fcmFkaXVzWSkpOwot
ICAgIGlmIChwbGF0Zm9ybUFwcGx5RGVnZW5lcmF0ZSgqZHN0UGl4ZWxBcnJheSwgZWZmZWN0RHJh
d2luZ1JlY3QsIHJhZGl1cy53aWR0aCgpLCByYWRpdXMuaGVpZ2h0KCkpKQorICAgIGlmIChwbGF0
Zm9ybUFwcGx5RGVnZW5lcmF0ZShob3N0V2luZG93LCAqZHN0UGl4ZWxBcnJheSwgZWZmZWN0RHJh
d2luZ1JlY3QsIHJhZGl1cy53aWR0aCgpLCByYWRpdXMuaGVpZ2h0KCkpKQogICAgICAgICByZXR1
cm47CiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwotICAgIGF1dG8gc3Jj
UGl4ZWxBcnJheSA9IGluLT5wcmVtdWx0aXBsaWVkUmVzdWx0KGVmZmVjdERyYXdpbmdSZWN0LCBv
cGVyYXRpbmdDb2xvclNwYWNlKCkpOworICAgIGF1dG8gc3JjUGl4ZWxBcnJheSA9IGluLT5wcmVt
dWx0aXBsaWVkUmVzdWx0KGhvc3RXaW5kb3csIGVmZmVjdERyYXdpbmdSZWN0LCBvcGVyYXRpbmdD
b2xvclNwYWNlKCkpOwogICAgIGlmICghc3JjUGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAgICAgaW50IHJhZGl1c1ggPSBzdGQ6Om1pbihlZmZlY3REcmF3aW5nUmVjdC53aWR0
aCgpIC0gMSwgcmFkaXVzLndpZHRoKCkpOwogICAgIGludCByYWRpdXNZID0gc3RkOjptaW4oZWZm
ZWN0RHJhd2luZ1JlY3QuaGVpZ2h0KCkgLSAxLCByYWRpdXMuaGVpZ2h0KCkpOwogCi0gICAgaWYg
KHBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKCpkc3RQaXhlbEFycmF5LCBlZmZlY3REcmF3aW5nUmVj
dCwgcmFkaXVzWCwgcmFkaXVzWSkpCisgICAgaWYgKHBsYXRmb3JtQXBwbHlEZWdlbmVyYXRlKGhv
c3RXaW5kb3csICpkc3RQaXhlbEFycmF5LCBlZmZlY3REcmF3aW5nUmVjdCwgcmFkaXVzWCwgcmFk
aXVzWSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdE
YXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1vcnBob2xvZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNb3JwaG9sb2d5LmgKaW5kZXggNDhmYzM1NDExN2ZjMjdjY2ZjOGU5M2YxNGVkZjA3NWRl
MzljNWExMS4uMjdmMDhlYjU2YzA2ZGRiODZmZjAyN2RjMjg1ODZjYWRmNzVlOGUzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xv
Z3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9y
cGhvbG9neS5oCkBAIC01MCwxMyArNTAsMTMgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGNoYXIq
IGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVNb3JwaG9sb2d5IjsgfQogCi0g
ICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZShIb3N0V2luZG93Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25U
eXBlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJvb2wgcGxhdGZvcm1BcHBseURlZ2VuZXJhdGUo
VWludDhDbGFtcGVkQXJyYXkmIGRzdFBpeGVsQXJyYXksIGNvbnN0IEludFJlY3QmIGltYWdlUmVj
dCwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZKTsKKyAgICBib29sIHBsYXRmb3JtQXBwbHlEZWdl
bmVyYXRlKEhvc3RXaW5kb3cmLCBVaW50OENsYW1wZWRBcnJheSYgZHN0UGl4ZWxBcnJheSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBpbnQgcmFkaXVzWCwgaW50IHJhZGl1c1kpOwogCiAgICAg
c3RydWN0IFBhaW50aW5nRGF0YSB7CiAgICAgICAgIGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5KiBz
cmNQaXhlbEFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU9mZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCAwMjcwZGI5MjQ4MWEzMzkyZDNkNWExZTkxN2My
ZDY1YWE0MTQwZjY5Li5lM2QzNzNhYTExMWRjZTM2YWY4Y2MwMTU2MDA3ZmFkNTQzMTgzNDU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
T2Zmc2V0LmNwcApAQCAtNjQsMTIgKzY0LDEyIEBAIHZvaWQgRkVPZmZzZXQ6OmRldGVybWluZUFi
c29sdXRlUGFpbnRSZWN0KCkKICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRS
ZWN0KHBhaW50UmVjdCkpOwogfQogCi12b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQordm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmIGhv
c3RXaW5kb3cpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0g
ICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsK
LSAgICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAg
ICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdChob3N0
V2luZG93KTsKKyAgICBJbWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1
bHQoaG9zdFdpbmRvdyk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhaW5CdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU9mZnNldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU9mZnNldC5oCmluZGV4IDY1YWJkYTkwYTQ3YjFiZmU3NmFlNWM3NGFhYjVhYTE2
N2ZiMWU2OWUuLjY4MWI3YzcyMmM4NmZjYTQyM2U3OGU5NDBmY2NiNzg3MDhiMDA4ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0
LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGNoYXIqIGZpbHRlck5h
bWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVPZmZzZXQiOyB9CiAKLSAgICB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3
YXJlKEhvc3RXaW5kb3cmKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGRldGVybWluZUFic29s
dXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCBhZmJlNzA2YWRkYzIyN2RhMTBj
Yjc4ODI4ODg2YzEyOWIxOTI0MWNjLi5iMzI4ODljOWRlZGI5ZTAzYzI0ZmE5ZGU1MzMxOTQzOTJj
OWNmYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAgUmVmPEZFVGlsZT4gRkVUaWxlOjpj
cmVhdGUoRmlsdGVyJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRkVUaWxlKGZp
bHRlcikpOwogfQogCi12b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKK3ZvaWQg
RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9zdFdpbmRvdyYgaG9zdFdpbmRvdykKIHsK
IC8vIEZJWE1FOiBTZWUgYnVnIDQ3MzE1LiBUaGlzIGlzIGEgaGFjayB0byB3b3JrIGFyb3VuZCBh
IGNvbXBpbGUgZmFpbHVyZSwgYnV0IGlzIGluY29ycmVjdCBiZWhhdmlvciBvdGhlcndpc2UuCiAg
ICAgRmlsdGVyRWZmZWN0KiBpbiA9IGlucHV0RWZmZWN0KDApOwogCi0gICAgSW1hZ2VCdWZmZXIq
IHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBJbWFnZUJ1ZmZl
ciogaW5CdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQoKTsKKyAgICBJbWFnZUJ1ZmZlciog
cmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdChob3N0V2luZG93KTsKKyAgICBJ
bWFnZUJ1ZmZlciogaW5CdWZmZXIgPSBpbi0+aW1hZ2VCdWZmZXJSZXN1bHQoaG9zdFdpbmRvdyk7
CiAgICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhaW5CdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNjQsNyArNjQsNyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBm
aWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICB9CiAKLSAgICBhdXRvIHRp
bGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0
LCB0aWxlUmVjdCwgQ29sb3JTcGFjZTo6U1JHQiwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsK
KyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGhvc3RXaW5kb3csIHRpbGVSZWN0LCB0aWxlUmVjdCwgZmlsdGVyKCkucmVuZGVyaW5nTW9k
ZSgpKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAppbmRleCA0OWJk
OTlmMDk0NDdkYWUxY2YwOWFmMTIzNThjNmRlODQwNjg3NzE0Li5iYWQ2ODE0NzJkNWVhZDA2OTA2
NjAzZmE3NDRmMDk2MWZkZDM4YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJpdmF0ZToKIAog
ICAgIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZmZWN0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEZpbHRlckVmZmVjdFR5cGVUaWxlOyB9CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKEhvc3RX
aW5kb3cmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3Qo
KSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZm
ZWN0UmVjdCgpKSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4IGQ2ZGI4OGYxY2M2MjhlMDVl
NzNhMzYyZTJmN2ZjYTI4M2Q1ZDUxNzAuLmExMThjZDMyYzM1MTRhNWY2OTk2OGQ4ZDA3YjkwYWM0
Y2UyOGE4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEZF
VHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbldvcmtlcihGaWxsUmVnaW9uUGFyYW1ldGVycyogcGFyYW1l
dGVycykKICAgICBwYXJhbWV0ZXJzLT5maWx0ZXItPmZpbGxSZWdpb24oKnBhcmFtZXRlcnMtPnBp
eGVsQXJyYXksICpwYXJhbWV0ZXJzLT5wYWludGluZ0RhdGEsIHBhcmFtZXRlcnMtPnN0aXRjaERh
dGEsIHBhcmFtZXRlcnMtPnN0YXJ0WSwgcGFyYW1ldGVycy0+ZW5kWSk7CiB9CiAKLXZvaWQgRkVU
dXJidWxlbmNlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQordm9pZCBGRVR1cmJ1bGVuY2U6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZShIb3N0V2luZG93JikKIHsKICAgICBhdXRvKiByZXN1bHRJbWFn
ZSA9IGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAgICAgYXV0byogcGl4ZWxBcnJh
eSA9IHJlc3VsdEltYWdlID8gcmVzdWx0SW1hZ2UtPmRhdGEoKSA6IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuaAppbmRleCAyNDM4MmY1OGE1YmVkNDE4MGNkM2Q1OTIzOGZiOGE1NDI3MjRkYWFhLi40MWY1
YzUwMDYyMjk3M2EwZWEzZTI4MzQ1OTNlZjNlNTUyODViNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKQEAg
LTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRVR1cmJ1bGVuY2UiOyB9CiAKLSAgICB2b2lkIHBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3
YXJlKEhvc3RXaW5kb3cmKSBvdmVycmlkZTsKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0
KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCA1YmRhZGIyZmQ4ZDAxNjE0YzAxZmYwNzQ3
MTM5ODBlOWFlZWRiNzI1Li5iMTFmNGM0NWM0MzE5MmQ3YWRiZTQ3NzI3ZDYwM2RlZjI4NmUyYTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiRmlsdGVy
LmgiCiAjaW5jbHVkZSAiR2VvbWV0cnlVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CkBAIC0xNjMsMTQgKzE2MiwxNCBAQCB1bnNpZ25lZCBGaWx0ZXJFZmZlY3Q6OnRvdGFs
TnVtYmVyT2ZFZmZlY3RJbnB1dHMoKSBjb25zdAogICAgIHJldHVybiBjb2xsZWN0RWZmZWN0cyh0
aGlzLCBhbGxFZmZlY3RzKTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkKK3ZvaWQg
RmlsdGVyRWZmZWN0OjphcHBseShIb3N0V2luZG93JiBob3N0V2luZG93KQogewogICAgIGlmICho
YXNSZXN1bHQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHVuc2lnbmVkIHNpemUgPSBtX2lucHV0
RWZmZWN0cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGluID0gbV9pbnB1dEVmZmVjdHMuYXQoaSkuZ2V0KCk7
Ci0gICAgICAgIGluLT5hcHBseSgpOworICAgICAgICBpbi0+YXBwbHkoaG9zdFdpbmRvdyk7CiAg
ICAgICAgIGlmICghaW4tPmhhc1Jlc3VsdCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0x
OTIsNyArMTkxLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmFwcGx5KCkKICAgICB9CiAgICAgCiAg
ICAgLy8gQWRkIHBsYXRmb3JtIHNwZWNpZmljIGFwcGx5IGZ1bmN0aW9ucyBoZXJlIGFuZCByZXR1
cm4gZWFybGllci4KLSAgICBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKTsKKyAgICBwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoaG9zdFdpbmRvdyk7CiB9CiAKIHZvaWQgRmlsdGVyRWZmZWN0Ojpmb3JjZVZh
bGlkUHJlTXVsdGlwbGllZFBpeGVscygpCkBAIC0yNjMsNyArMjYyLDcgQEAgdm9pZCBGaWx0ZXJF
ZmZlY3Q6OmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpCiAgICAgICAgIG1faW5wdXRFZmZlY3RzLmF0
KGkpLmdldCgpLT5jbGVhclJlc3VsdHNSZWN1cnNpdmUoKTsKIH0KIAotSW1hZ2VCdWZmZXIqIEZp
bHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1bHQoKQorSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVj
dDo6aW1hZ2VCdWZmZXJSZXN1bHQoSG9zdFdpbmRvdyYgaG9zdFdpbmRvdykKIHsKICAgICBMT0df
V0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJO
YW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBpbWFnZUJ1ZmZlclJlc3VsdCgpLiBFeGlzdGluZyBp
bWFnZSBidWZmZXIgIiA8PCBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgpIDw8ICAiIG1fcHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0ICIgPDwgVmFsdWVPck51bGwobV9wcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQuZ2V0KCkpIDw8ICIgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCAiIDw8IFZhbHVlT3JO
dWxsKG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCkpKTsKIApAQCAtMjczLDcgKzI3Miw3
IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBp
ZiAobV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1
bHQuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBt
X2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UpOworICAgIG1faW1hZ2VC
dWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6
ZSgpLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywg
UmVuZGVyaW5nUHVycG9zZTo6RE9NLCBtX2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBtX3Jlc3VsdENv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgJmhvc3RXaW5kb3cpOwogICAgIGlmICghbV9p
bWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI4NSw3ICsy
ODQsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCgpCiAg
ICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKLVJlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVj
dCYgcmVjdCwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK1JlZlB0cjxVaW50OENs
YW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRSZXN1bHQoSG9zdFdpbmRvdyYg
aG9zdFdpbmRvdywgY29uc3QgSW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gY29s
b3JTcGFjZSkKIHsKICAgICBJbnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFT
U0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKQEAgLTI5
MywxMSArMjkyLDExIEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0Ojp1
bm11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCwKICAgICBhdXRvIGltYWdlRGF0
YSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKChzY2FsZWRTaXpl
LmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIWltYWdlRGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgY29weVVubXVsdGlwbGllZFJlc3VsdCgqaW1hZ2VEYXRhLCBy
ZWN0LCBjb2xvclNwYWNlKTsKKyAgICBjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KGhvc3RXaW5kb3cs
ICppbWFnZURhdGEsIHJlY3QsIGNvbG9yU3BhY2UpOwogICAgIHJldHVybiBpbWFnZURhdGE7CiB9
CiAKLVJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVk
UmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3QsIE9wdGlvbmFsPENvbG9yU3BhY2U+IGNvbG9yU3Bh
Y2UpCitSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGll
ZFJlc3VsdChIb3N0V2luZG93JiBob3N0V2luZG93LCBjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRp
b25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlKQogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShy
ZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmco
c2NhbGVkU2l6ZSkpOwpAQCAtMzA1LDcgKzMwNCw3IEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmIHJlY3Qs
CiAgICAgYXV0byBpbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCgoc2NhbGVkU2l6ZS5hcmVhKCkgKiA0KS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFp
bWFnZURhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvcHlQcmVtdWx0aXBsaWVk
UmVzdWx0KCppbWFnZURhdGEsIHJlY3QsIGNvbG9yU3BhY2UpOworICAgIGNvcHlQcmVtdWx0aXBs
aWVkUmVzdWx0KGhvc3RXaW5kb3csICppbWFnZURhdGEsIHJlY3QsIGNvbG9yU3BhY2UpOwogICAg
IHJldHVybiBpbWFnZURhdGE7CiB9CiAKQEAgLTQzMywyMyArNDMyLDIzIEBAIHN0YXRpYyB2b2lk
IGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJj
ZSwgVWludDhDbGFtCiAjZW5kaWYKIH0KIAotUmVmUHRyPEltYWdlRGF0YT4gRmlsdGVyRWZmZWN0
Ojpjb252ZXJ0SW1hZ2VEYXRhVG9Db2xvclNwYWNlKENvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFj
ZSwgSW1hZ2VEYXRhJiBpbnB1dERhdGEsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9y
bWF0KQorUmVmUHRyPEltYWdlRGF0YT4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VEYXRhVG9D
b2xvclNwYWNlKEhvc3RXaW5kb3cmIGhvc3RXaW5kb3csIENvbG9yU3BhY2UgdGFyZ2V0Q29sb3JT
cGFjZSwgSW1hZ2VEYXRhJiBpbnB1dERhdGEsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0
Rm9ybWF0KQogewogICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIGlucHV0
RGF0YS5zaXplKCkpOwogICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpj
bGFtcGVkU2l6ZShpbnB1dERhdGEuc2l6ZSgpKTsKICAgICAvLyBDcmVhdGUgYW4gSW1hZ2VCdWZm
ZXIgdG8gc3RvcmUgaW5jb21pbmcgSW1hZ2VEYXRhCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmls
dGVyLmZpbHRlclNjYWxlKCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CisgICAgYXV0byBidWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdN
b2RlKCksIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCBt
X2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBvcGVyYXRpbmdDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCwgJmhvc3RXaW5kb3cpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBidWZmZXItPnB1dEltYWdlRGF0YShvdXRwdXRGb3JtYXQsIGlucHV0RGF0
YSwgZGVzdGluYXRpb25SZWN0KTsKLSAgICByZXR1cm4gY29udmVydEltYWdlQnVmZmVyVG9Db2xv
clNwYWNlKHRhcmdldENvbG9yU3BhY2UsICpidWZmZXIsIGRlc3RpbmF0aW9uUmVjdCwgb3V0cHV0
Rm9ybWF0KTsKKyAgICByZXR1cm4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGhvc3RX
aW5kb3csIHRhcmdldENvbG9yU3BhY2UsICpidWZmZXIsIGRlc3RpbmF0aW9uUmVjdCwgb3V0cHV0
Rm9ybWF0KTsKIH0KIAotUmVmUHRyPEltYWdlRGF0YT4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1h
Z2VCdWZmZXJUb0NvbG9yU3BhY2UoQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBJbWFnZUJ1
ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0KQorUmVmUHRyPEltYWdlRGF0YT4gRmlsdGVyRWZmZWN0Ojpjb252
ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoSG9zdFdpbmRvdyYgaG9zdFdpbmRvdywgQ29sb3JT
cGFjZSB0YXJnZXRDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0KQogewogICAg
IEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShyZWN0LnNp
emUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29s
b3Igc3BhY2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24K
LSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgdGFy
Z2V0Q29sb3JTcGFjZSk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIFNob3VsZFVzZURp
c3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCBtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpLCB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsICZob3N0V2luZG93KTsK
ICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Ly8gQ29sb3Igc3BhY2UgY29udmVyc2lvbiBoYXBwZW5zIGludGVybmFsbHkgd2hlbiBkcmF3aW5n
IGZyb20gb25lIGltYWdlIGJ1ZmZlciB0byBhbm90aGVyCkBAIC00NTcsMjYgKzQ1NiwyNiBAQCBS
ZWZQdHI8SW1hZ2VEYXRhPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JT
cGFjZShDb2xvclNwYWNlIHRhcmdldAogICAgIHJldHVybiBjb252ZXJ0ZWRCdWZmZXItPmdldElt
YWdlRGF0YShvdXRwdXRGb3JtYXQsIHJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29w
eUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVz
dGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6
OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oSG9zdFdpbmRvdyYgaG9zdFdp
bmRvdywgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCkKIHsKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV9pbWFnZUJ1
ZmZlclJlc3VsdCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KLSAgICBhdXRvIGNvbnZlcnRlZElt
YWdlRGF0YSA9IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb2xvclNwYWNlLCAqbV9p
bWFnZUJ1ZmZlclJlc3VsdCwgeyBJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUo
KSB9LCBvdXRwdXRGb3JtYXQpOworICAgIGF1dG8gY29udmVydGVkSW1hZ2VEYXRhID0gY29udmVy
dEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGhvc3RXaW5kb3csIGNvbG9yU3BhY2UsICptX2ltYWdl
QnVmZmVyUmVzdWx0LCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0s
IG91dHB1dEZvcm1hdCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRJbWFnZURhdGEpCiAgICAgICAgIHJl
dHVybjsKICAgICBjb3B5SW1hZ2VCeXRlcygqY29udmVydGVkSW1hZ2VEYXRhLT5kYXRhKCksIGRl
c3RpbmF0aW9uLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVy
dGVkSW1hZ2VEYXRhVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24s
IEltYWdlRGF0YSYgaW1hZ2VEYXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQg
RmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VEYXRhVG9EZXN0aW5hdGlvbihIb3N0V2lu
ZG93JiBob3N0V2luZG93LCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIEltYWdlRGF0
YSYgaW1hZ2VEYXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDb252
ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC9tX3ByZW11
bHRpcGxpZWRJbWFnZVJlc3VsdCwKICAgICAvLyB3aGljaGV2ZXIgaXNuJ3QgbnVsbCwgYW5kIHNh
dmUgdG8gZGVzdGluYXRpb24KLSAgICBhdXRvIGNvbnZlcnRlZEltYWdlRGF0YSA9IGNvbnZlcnRJ
bWFnZURhdGFUb0NvbG9yU3BhY2UoY29sb3JTcGFjZSwgaW1hZ2VEYXRhLCBvdXRwdXRGb3JtYXQp
OworICAgIGF1dG8gY29udmVydGVkSW1hZ2VEYXRhID0gY29udmVydEltYWdlRGF0YVRvQ29sb3JT
cGFjZShob3N0V2luZG93LCBjb2xvclNwYWNlLCBpbWFnZURhdGEsIG91dHB1dEZvcm1hdCk7CiAg
ICAgaWYgKCFjb252ZXJ0ZWRJbWFnZURhdGEpCiAgICAgICAgIHJldHVybjsKICAgICBjb3B5SW1h
Z2VCeXRlcygqY29udmVydGVkSW1hZ2VEYXRhLT5kYXRhKCksIGRlc3RpbmF0aW9uLCBkZXN0UmVj
dCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4
Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8
Q29sb3JTcGFjZT4gY29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBs
aWVkUmVzdWx0KEhvc3RXaW5kb3cmIGhvc3RXaW5kb3csIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3JT
cGFjZSkKIHsKICAgICBBU1NFUlQoaGFzUmVzdWx0KCkpOwogICAgIApAQCAtNDg2LDcgKzQ4NSw3
IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBl
ZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgLy8gV2UgcHJlZmVyIGEgY29udmVy
c2lvbiBmcm9tIHRoZSBpbWFnZSBidWZmZXIuCiAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVz
dWx0KSB7CiAgICAgICAgICAgICBpZiAocmVxdWlyZXNJbWFnZURhdGFDb2xvclNwYWNlQ29udmVy
c2lvbihjb2xvclNwYWNlKSkgewotICAgICAgICAgICAgICAgIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1
ZmZlclRvRGVzdGluYXRpb24oZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIHJlY3QpOworICAgICAgICAgICAgICAgIGNvcHlD
b252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oaG9zdFdpbmRvdywgZGVzdGluYXRpb24s
ICpjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIHJl
Y3QpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRJbWFn
ZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCB7IEludFBvaW50
KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0pOwpAQCAtNTAzLDEzICs1MDIsMTMgQEAg
dm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJy
YXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAgICAgICB9CiAgICAgfQogICAgIGlmIChyZXF1aXJl
c0ltYWdlRGF0YUNvbG9yU3BhY2VDb252ZXJzaW9uKGNvbG9yU3BhY2UpKSB7Ci0gICAgICAgIGNv
cHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uLCAqbV91bm11bHRp
cGxpZWRJbWFnZVJlc3VsdCwgKmNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgcmVjdCk7CisgICAgICAgIGNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rl
c3RpbmF0aW9uKGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uLCAqbV91bm11bHRpcGxpZWRJbWFnZVJl
c3VsdCwgKmNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY29weUltYWdlQnl0ZXMoKm1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgZGVzdGluYXRpb24sIHJlY3QpOwogfQog
Ci12b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVk
QXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0LCBPcHRpb25hbDxDb2xvclNw
YWNlPiBjb2xvclNwYWNlKQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVz
dWx0KEhvc3RXaW5kb3cmIGhvc3RXaW5kb3csIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlv
biwgY29uc3QgSW50UmVjdCYgcmVjdCwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZSkK
IHsKICAgICBBU1NFUlQoaGFzUmVzdWx0KCkpOwogCkBAIC01MTksNyArNTE4LDcgQEAgdm9pZCBG
aWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBk
ZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgLy8gV2UgcHJlZmVyIGEgY29udmVyc2lvbiBmcm9t
IHRoZSBpbWFnZSBidWZmZXIuCiAgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KSB7CiAg
ICAgICAgICAgICBpZiAocmVxdWlyZXNJbWFnZURhdGFDb2xvclNwYWNlQ29udmVyc2lvbihjb2xv
clNwYWNlKSkgewotICAgICAgICAgICAgICAgIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVz
dGluYXRpb24oZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpQcmVtdWx0aXBsaWVkLCByZWN0KTsKKyAgICAgICAgICAgICAgICBjb3B5Q29udmVydGVkSW1h
Z2VCdWZmZXJUb0Rlc3RpbmF0aW9uKGhvc3RXaW5kb3csIGRlc3RpbmF0aW9uLCAqY29sb3JTcGFj
ZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcmVjdCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9wcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQgPSBtX2ltYWdlQnVmZmVyUmVzdWx0LT5nZXRJbWFnZURhdGEoQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgeyBJbnRQb2ludCgpLCBtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSB9KTsKQEAgLTUzOCwxMyArNTM3LDEzIEBAIHZvaWQgRmlsdGVyRWZm
ZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGNvbnN0CiAgICAgCiAgICAgUmVmUHRyPEltYWdlRGF0YT4gY29udmVydGVkSW1hZ2VEYXRh
OwogICAgIGlmIChyZXF1aXJlc0ltYWdlRGF0YUNvbG9yU3BhY2VDb252ZXJzaW9uKGNvbG9yU3Bh
Y2UpKSB7Ci0gICAgICAgIGNvcHlDb252ZXJ0ZWRJbWFnZURhdGFUb0Rlc3RpbmF0aW9uKGRlc3Rp
bmF0aW9uLCAqbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQsICpjb2xvclNwYWNlLCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCByZWN0KTsKKyAgICAgICAgY29weUNvbnZl
cnRlZEltYWdlRGF0YVRvRGVzdGluYXRpb24oaG9zdFdpbmRvdywgZGVzdGluYXRpb24sICptX3By
ZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwgKmNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQsIHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNv
cHlJbWFnZUJ5dGVzKCptX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBkZXN0aW5h
dGlvbiwgcmVjdCk7CiB9CiAKLUltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdl
QnVmZmVyUmVzdWx0KCkKK0ltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVm
ZmVyUmVzdWx0KEhvc3RXaW5kb3cmIGhvc3RXaW5kb3cpCiB7CiAgICAgTE9HKEZpbHRlcnMsICJG
aWx0ZXJFZmZlY3QgJXMgJXAgY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQgJWR4JWQiLCBmaWx0ZXJO
YW1lKCksIHRoaXMsIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLndpZHRoKCksIG1fYWJzb2x1
dGVQYWludFJlY3Quc2l6ZSgpLmhlaWdodCgpKTsKIApAQCAtNTU0LDcgKzU1Myw3IEBAIEltYWdl
QnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZl
cjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VC
dWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5y
ZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFj
ZSk7CisgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5v
LCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIG1fcmVzdWx0
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCAmaG9zdFdpbmRvdyk7CiAgICAgcmV0dXJu
IG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IDMyMzkx
ZDc4ZWM0ZDdjNmM3MDA4MDFhZDJlNWQ0ZTM1NGMzMTk4YmUuLjY2NDY0NmE5ODM2ZGI5MzM2ZGJh
ZjQwNjc2MTc2NTJhMDdkYmM2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtNDAsNiArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbHRlcjsKIGNsYXNzIEZpbHRlckVmZmVjdDsK
K2NsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEltYWdlRGF0YTsK
IApAQCAtODEsMTEgKzgyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVzdWx0KCk7CiAg
ICAgdm9pZCBjbGVhclJlc3VsdHNSZWN1cnNpdmUoKTsKIAotICAgIEltYWdlQnVmZmVyKiBpbWFn
ZUJ1ZmZlclJlc3VsdCgpOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdW5tdWx0aXBs
aWVkUmVzdWx0KGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxDb2xvclNwYWNlPiA9IFdURjo6bnVs
bG9wdCk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVzdWx0
KGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxDb2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7Ci0g
ICAgdm9pZCBjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0
KTsKLSAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBk
ZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpu
dWxsb3B0KTsKKyAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJSZXN1bHQoSG9zdFdpbmRvdyYp
OworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdW5tdWx0aXBsaWVkUmVzdWx0KEhvc3RX
aW5kb3cmLCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8Q29sb3JTcGFjZT4gPSBXVEY6Om51bGxv
cHQpOworICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcHJlbXVsdGlwbGllZFJlc3VsdChI
b3N0V2luZG93JiwgY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPENvbG9yU3BhY2U+ID0gV1RGOjpu
dWxsb3B0KTsKKyAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoSG9zdFdpbmRvdyYsIFVp
bnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPENv
bG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkUmVz
dWx0KEhvc3RXaW5kb3cmLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IElu
dFJlY3QmLCBPcHRpb25hbDxDb2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7CiAgICAgRmlsdGVy
RWZmZWN0VmVjdG9yJiBpbnB1dEVmZmVjdHMoKSB7IHJldHVybiBtX2lucHV0RWZmZWN0czsgfQog
ICAgIEZpbHRlckVmZmVjdCogaW5wdXRFZmZlY3QodW5zaWduZWQpIGNvbnN0OwogICAgIHVuc2ln
bmVkIG51bWJlck9mRWZmZWN0SW5wdXRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHMu
c2l6ZSgpOyB9CkBAIC0xMTUsNyArMTE2LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBtYXhF
ZmZlY3RSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9tYXhFZmZlY3RSZWN0OyB9CiAgICAgdm9pZCBz
ZXRNYXhFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYgbWF4RWZmZWN0UmVjdCkgeyBtX21heEVm
ZmVjdFJlY3QgPSBtYXhFZmZlY3RSZWN0OyB9IAogCi0gICAgdm9pZCBhcHBseSgpOworICAgIHZv
aWQgYXBwbHkoSG9zdFdpbmRvdyYpOwogCiAgICAgLy8gQ29ycmVjdCBhbnkgaW52YWxpZCBwaXhl
bHMsIGlmIG5lY2Vzc2FyeSwgaW4gdGhlIHJlc3VsdCBvZiBhIGZpbHRlciBvcGVyYXRpb24uCiAg
ICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBlbnN1cmUgdmFsaWQgcGl4ZWwgdmFsdWVzIG9u
IGZpbHRlciBpbnB1dHMgYW5kIHRoZSBmaW5hbCByZXN1bHQuCkBAIC0xODQsNyArMTg1LDcgQEAg
cHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNv
bnN0ID0gMDsKIAotICAgIEltYWdlQnVmZmVyKiBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwor
ICAgIEltYWdlQnVmZmVyKiBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdChIb3N0V2luZG93Jik7CiAg
ICAgSW1hZ2VEYXRhKiBjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpOwogICAgIEltYWdl
RGF0YSogY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KCk7CiAKQEAgLTE5OCwxNCArMTk5
LDE0IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsaXBBYnNvbHV0ZVBhaW50UmVjdCgpOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZShIb3N0V2luZG93JikgPSAwOwog
CiAgICAgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNl
LCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKSBjb25zdDsK
LSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFt
cGVkQXJyYXkmLCBDb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VEYXRhVG9EZXN0aW5hdGlvbihVaW50
OENsYW1wZWRBcnJheSYsIEltYWdlRGF0YSYsIENvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24sIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZl
clRvRGVzdGluYXRpb24oSG9zdFdpbmRvdyYsIFVpbnQ4Q2xhbXBlZEFycmF5JiwgQ29sb3JTcGFj
ZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29w
eUNvbnZlcnRlZEltYWdlRGF0YVRvRGVzdGluYXRpb24oSG9zdFdpbmRvdyYsIFVpbnQ4Q2xhbXBl
ZEFycmF5JiwgSW1hZ2VEYXRhJiwgQ29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcmVxdWlyZXNJbWFnZURhdGFDb2xvclNwYWNlQ29u
dmVyc2lvbihPcHRpb25hbDxDb2xvclNwYWNlPik7Ci0gICAgUmVmUHRyPEltYWdlRGF0YT4gY29u
dmVydEltYWdlRGF0YVRvQ29sb3JTcGFjZShDb2xvclNwYWNlLCBJbWFnZURhdGEmLCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uKTsKLSAgICBSZWZQdHI8SW1hZ2VEYXRhPiBjb252ZXJ0SW1hZ2VCdWZm
ZXJUb0NvbG9yU3BhY2UoQ29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0Jiwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gY29udmVydElt
YWdlRGF0YVRvQ29sb3JTcGFjZShIb3N0V2luZG93JiwgQ29sb3JTcGFjZSwgSW1hZ2VEYXRhJiwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CisgICAgUmVmUHRyPEltYWdlRGF0YT4gY29udmVydElt
YWdlQnVmZmVyVG9Db2xvclNwYWNlKEhvc3RXaW5kb3cmLCBDb2xvclNwYWNlLCBJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEludFJlY3QmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKICAgICAKIAogICAg
IEZpbHRlciYgbV9maWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKaW5kZXggNTZi
ZTI0NzM2MWY1M2IzYzA5ZWNiNTcxMzIyYjc1YTc1NzNlOWNjNC4uNWRlNDRmYzE0ZjllNjI0NWEx
OTAzYTkxNDUzZTkyMTg5NDlmMWZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaApA
QCAtMjYsMTcgKzI2LDE5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIb3N0V2luZG93OworY2xhc3MgSW1hZ2VCdWZm
ZXI7CisKIGNsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICAKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZpbHRl
ckVmZmVjdFJlbmRlcmVyPiB0cnlDcmVhdGUoYm9vbCwgRmlsdGVyRWZmZWN0Jik7Ci0gICAgdmly
dHVhbCB2b2lkIGFwcGx5RWZmZWN0cyhGaWx0ZXJFZmZlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGFwcGx5RWZmZWN0cyhIb3N0V2luZG93JiwgRmlsdGVyRWZmZWN0JikgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBoYXNSZXN1bHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbWFnZUJ1ZmZl
ciogb3V0cHV0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRlc3RSZWN0KGNv
bnN0IEZpbHRlckVmZmVjdCYpIGNvbnN0ID0gMDsKQEAgLTQ2LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIAogcHJvdGVjdGVkOgogICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKCkgPSBkZWZhdWx0Owot
ICAgIHZpcnR1YWwgdm9pZCByZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyVG9JbWFnZUJ1ZmZlcihIb3N0V2luZG93JiwgRmlsdGVy
RWZmZWN0JikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cAppbmRleCA3NjQ5ZjA1OGFjODY5YjU1NGFmMGRjNTA3ZmZmOTA5MGFkNmNmM2EzLi5mYTJlODdm
NzYzOWJkMjBhMGI5ZDU0MWRmZmEyYjZkNGY3MDQxM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApAQCAt
NDcsMTQgKzQ3LDE0IEBAIHZvaWQgU291cmNlQWxwaGE6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCkKICAgICBzZXRBYnNvbHV0ZVBhaW50UmVjdChpbnB1dEVmZmVjdCgwKS0+YWJzb2x1dGVQ
YWludFJlY3QoKSk7CiB9CiAKLXZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCit2b2lkIFNvdXJjZUFscGhhOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9zdFdpbmRvdyYg
aG9zdFdpbmRvdykKIHsKLSAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFn
ZUJ1ZmZlclJlc3VsdCgpOworICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUlt
YWdlQnVmZmVyUmVzdWx0KGhvc3RXaW5kb3cpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpOwogCi0gICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRF
ZmZlY3QoMCktPmltYWdlQnVmZmVyUmVzdWx0KCk7CisgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVm
ZmVyID0gaW5wdXRFZmZlY3QoMCktPmltYWdlQnVmZmVyUmVzdWx0KGhvc3RXaW5kb3cpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCmluZGV4IDY2
MjlhMzY3ZmQ0MzI0MmQxYzRhYWRlNjRjNTYxZTg2NGEzOTQ5MGYuLmM4ZTczYzMwODhhMWY4ZjQ3
MThkZDlhN2Q3MDNjM2EwMWY5MjA4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKQEAgLTM2LDcgKzM2LDcgQEAg
cHJpdmF0ZToKIAogICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiU291cmNlQWxwaGEiOyB9CiAKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7
CiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6VGV4dFN0
cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3Jh
cGhpYy5jcHAKaW5kZXggODhhMzZhNDEwMjZiZDNhNTg1NDQ3ODIwMjc0YzExMDdkNzgzOTJlOS4u
YzQxYzUyOWFhYzYxNTRkMGNmYzg1NGJiOWM2YmIxNTg5YjhkYWE4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBo
aWMuY3BwCkBAIC00OCwxMSArNDgsMTEgQEAgdm9pZCBTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdCgpCiAgICAgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50
UmVjdChwYWludFJlY3QpKTsKIH0KIAotdm9pZCBTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQordm9pZCBTb3VyY2VHcmFwaGljOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9z
dFdpbmRvdyYgaG9zdFdpbmRvdykKIHsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRl
cigpOwogCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZl
clJlc3VsdChob3N0V2luZG93KTsKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBmaWx0
ZXIuc291cmNlSW1hZ2UoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFzb3VyY2VJbWFnZSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAppbmRleCBmNjczY2U0YzdmMjkzYWExOTEz
NWY5Yzc3ZTYwYzIyNzcxNjEzOThjLi5mMTcxYjZiYzM0MGFhNjg4MjcxZGUyZThlNTU3ZGI4MTcx
MDJlZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaApAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiU291cmNlR3Jh
cGhpYyI7IH0KIAogICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
cGxhdGZvcm1BcHBseVNvZnR3YXJlKEhvc3RXaW5kb3cmKSBvdmVycmlkZTsKICAgICBXVEY6OlRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVz
ZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZpbHRlckVmZmVjdFR5cGUgZmls
dGVyRWZmZWN0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVT
b3VyY2VJbnB1dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0Zp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCBk
MmE4YTg5ZTNlMDRlNGM1ZDg5ZmJlZDMwNTYxNjgyNTBjOGJkOTBkLi4yMGNmZDliZjE4NDc2ZDlj
MGI5MDRkNDE3ZjAzYTk5YTFkZTRkNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmls
dGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIGJvb2wgQ1NTRmlsdGVyOjp1cGRhdGVCYWNraW5n
U3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQoSG9zdFdpbmRvdyYgaG9zdFdpbmRvdywgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGVm
ZmVjdCBjaGFpbiBoYXMgYmVlbiBidWlsdCwgYW5kIHRoZQogICAgIC8vIHNvdXJjZSBpbWFnZSBz
aXplcyBzZXQuIFdlIGp1c3QgbmVlZCB0byBhdHRhY2ggdGhlIGdyYXBoaWMKQEAgLTMzOCw3ICsz
MzgsNyBAQCB2b2lkIENTU0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChjb25z
dCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleAogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKHRhcmdldENvbnRleHQpOwogICAgICAgICBSZW5kZXJpbmdNb2RlIG1vZGUgPSBtX2ZpbHRl
clJlbmRlcmVyID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiByZW5kZXJpbmdNb2RlKCk7
Ci0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUs
IG1vZGUsIGZpbHRlclNjYWxlKCkpKTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBS
ZW5kZXJpbmdQdXJwb3NlOjpET00sIGZpbHRlclNjYWxlKCksIENvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCwgJmhvc3RXaW5kb3cpKTsKICNlbmRpZgogICAgIH0KICAgICBtX2dy
YXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAtMzY2LDE3ICszNjYsMTcgQEAgdm9pZCBD
U1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiAgICAgICAgIGVmZmVjdC0+Y2xl
YXJSZXN1bHQoKTsKIH0KIAotdm9pZCBDU1NGaWx0ZXI6OmFwcGx5KCkKK3ZvaWQgQ1NTRmlsdGVy
OjphcHBseShIb3N0V2luZG93JiBob3N0V2luZG93KQogewogICAgIGF1dG8mIGVmZmVjdCA9IG1f
ZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIpIHsKLSAgICAg
ICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3RzKGVmZmVjdCk7CisgICAgICAgIG1fZmls
dGVyUmVuZGVyZXItPmFwcGx5RWZmZWN0cyhob3N0V2luZG93LCBlZmZlY3QpOwogICAgICAgICBp
ZiAobV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsKICAgICAgICAgICAgIGVmZmVjdC50
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGVmZmVjdC5hcHBseSgpOworICAgIGVmZmVj
dC5hcHBseShob3N0V2luZG93KTsKICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFj
ZShDb2xvclNwYWNlOjpTUkdCKTsKIH0KIApAQCAtMzkwLDEyICszOTAsMTIgQEAgTGF5b3V0UmVj
dCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgZmlsdGUKICAgICByZXR1cm4gcmVjdEZvclJlcGFpbnQ7CiB9CiAKLUltYWdlQnVm
ZmVyKiBDU1NGaWx0ZXI6Om91dHB1dCgpIGNvbnN0CitJbWFnZUJ1ZmZlciogQ1NTRmlsdGVyOjpv
dXRwdXQoSG9zdFdpbmRvdyYgaG9zdFdpbmRvdykgY29uc3QKIHsKICAgICBpZiAobV9maWx0ZXJS
ZW5kZXJlciAmJiBtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1bHQoKSkKICAgICAgICAgcmV0dXJu
IG1fZmlsdGVyUmVuZGVyZXItPm91dHB1dCgpOwogICAgIAotICAgIHJldHVybiBtX2VmZmVjdHMu
bGFzdCgpLT5pbWFnZUJ1ZmZlclJlc3VsdCgpOworICAgIHJldHVybiBtX2VmZmVjdHMubGFzdCgp
LT5pbWFnZUJ1ZmZlclJlc3VsdChob3N0V2luZG93KTsKIH0KIAogdm9pZCBDU1NGaWx0ZXI6OnNl
dFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaAppbmRleCAwMGI5MTkxN2I4MDRjOTJkOTQwOGI3NThl
Mzc1YzI1MmYyOWRiMGM1Li41OWU4ZmYxMmNlYzQ3MGRlYWJkODlkZTU3MTg4MTEzNDE4YjVlMjk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC0zNiw2ICszNiw3IEBAIGNs
YXNzIEZpbHRlckVmZmVjdDsKIGNsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyOwogY2xhc3MgRmls
dGVyT3BlcmF0aW9uczsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIEhvc3RXaW5kb3c7
CiBjbGFzcyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb247CiBjbGFzcyBSZW5kZXJFbGVtZW50Owog
Y2xhc3MgU291cmNlQWxwaGE7CkBAIC01MiwxMSArNTMsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U291cmNlSW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgc2V0RmlsdGVy
UmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKSB7IG1fZmlsdGVyUmVnaW9uID0g
ZmlsdGVyUmVnaW9uOyB9CiAKLSAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3Q7CisgICAg
SW1hZ2VCdWZmZXIqIG91dHB1dChIb3N0V2luZG93JikgY29uc3Q7CiAKICAgICBib29sIGJ1aWxk
KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgRmlsdGVyQ29uc3VtZXIp
OwogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7Ci0gICAgdm9pZCBhcHBseSgp
OworICAgIHZvaWQgYXBwbHkoSG9zdFdpbmRvdyYpOwogCiAgICAgYm9vbCBoYXNGaWx0ZXJUaGF0
TW92ZXNQaXhlbHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0ZpbHRlclRoYXRNb3Zlc1BpeGVsczsg
fQogICAgIGJvb2wgaGFzRmlsdGVyVGhhdFNob3VsZEJlUmVzdHJpY3RlZEJ5U2VjdXJpdHlPcmln
aW4oKSBjb25zdCB7IHJldHVybiBtX2hhc0ZpbHRlclRoYXRTaG91bGRCZVJlc3RyaWN0ZWRCeVNl
Y3VyaXR5T3JpZ2luOyB9CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgR3JhcGhpY3ND
b250ZXh0KiBpbnB1dENvbnRleHQoKTsKIAogICAgIGJvb2wgdXBkYXRlQmFja2luZ1N0b3JlUmVj
dChjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QpOwotICAgIHZvaWQgYWxsb2NhdGVCYWNraW5n
U3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICB2b2lkIGFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQoSG9zdFdpbmRvdyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OwogCiAgICAgSW50UmVjdCBvdXRwdXRSZWN0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKaW5kZXggMjUwYTdkNWMwYmFhMGFj
NzQxYTkwYzgxOGI2MWEwNWY5NWI5NjRhNC4uY2ViMDA0NjRkNGEyNmQ1ZGEwNjk0NzZhZDJmNGUy
MTM2MmUwMjgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
RmlsdGVycy5jcHAKQEAgLTEzOSw2ICsxMzksMTAgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJM
YXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXQK
ICAgICBpZiAoIW1fZmlsdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGF1dG8g
aG9zdFdpbmRvdyA9IG1fbGF5ZXIucmVuZGVyZXIoKS5kb2N1bWVudCgpLmhvc3RXaW5kb3coKTsK
KyAgICBpZiAoIWhvc3RXaW5kb3cpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgYXV0
byYgZmlsdGVyID0gKm1fZmlsdGVyOwogICAgIGF1dG8gZmlsdGVyU291cmNlUmVjdCA9IGZpbHRl
ci5jb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGZpbHRlckJveFJlY3QsIGRpcnR5
UmVjdCk7CiAgICAgaWYgKGZpbHRlclNvdXJjZVJlY3QuaXNFbXB0eSgpKQpAQCAtMTYxLDcgKzE2
NSw3IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVm
ZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0CiAKICAgICBmaWx0ZXIuZGV0ZXJtaW5lRmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAKLSAgICBmaWx0ZXIuYWxsb2NhdGVCYWNraW5nU3Rv
cmVJZk5lZWRlZChkZXN0aW5hdGlvbkNvbnRleHQpOworICAgIGZpbHRlci5hbGxvY2F0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKCpob3N0V2luZG93LCBkZXN0aW5hdGlvbkNvbnRleHQpOwogICAgIGF1
dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGZpbHRlci5pbnB1dENvbnRleHQoKTsKICAgICBp
ZiAoIXNvdXJjZUdyYXBoaWNzQ29udGV4dCB8fCBmaWx0ZXIuZmlsdGVyUmVnaW9uKCkuaXNFbXB0
eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhmaWx0ZXIuZmlsdGVyUmVnaW9u
KCkuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODEsMTYgKzE4NSwyMCBA
QCB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250
ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywg
c3RyZWFtIDw8ICJcblJlbmRlckxheWVyRmlsdGVycyAiIDw8IHRoaXMgPDwgIiBhcHBseUZpbHRl
ckVmZmVjdCIpOwogCisgICAgYXV0byBob3N0V2luZG93ID0gbV9sYXllci5yZW5kZXJlcigpLmRv
Y3VtZW50KCkuaG9zdFdpbmRvdygpOworICAgIGlmICghaG9zdFdpbmRvdykKKyAgICAgICAgcmV0
dXJuOworICAgIAogICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKICAgICBmaWx0ZXIuaW5w
dXRDb250ZXh0KCktPnJlc3RvcmUoKTsKIAotICAgIGZpbHRlci5hcHBseSgpOworICAgIGZpbHRl
ci5hcHBseSgqaG9zdFdpbmRvdyk7CiAKICAgICAvLyBHZXQgdGhlIGZpbHRlcmVkIG91dHB1dCBh
bmQgZHJhdyBpdCBpbiBwbGFjZS4KICAgICBMYXlvdXRSZWN0IGRlc3RSZWN0ID0gZmlsdGVyLm91
dHB1dFJlY3QoKTsKICAgICBkZXN0UmVjdC5tb3ZlKG1fcGFpbnRPZmZzZXQueCgpLCBtX3BhaW50
T2Zmc2V0LnkoKSk7CiAKLSAgICBpZiAoYXV0byogb3V0cHV0QnVmZmVyID0gZmlsdGVyLm91dHB1
dCgpKQorICAgIGlmIChhdXRvKiBvdXRwdXRCdWZmZXIgPSBmaWx0ZXIub3V0cHV0KCpob3N0V2lu
ZG93KSkKICAgICAgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqb3V0cHV0
QnVmZmVyLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX2xheWVyLnJlbmRlcmVy
KCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAKICAgICBmaWx0ZXIuY2xlYXJJ
bnRlcm1lZGlhdGVSZXN1bHRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKaW5kZXggMzgzODM3ZGFmMmM5
MzFhOGE1ZDU0ODM4YmFjNDhmYzI2YjQ4NzlkMS4uMzk2MjFiMDk0NWUwOWYxM2Q3Y2JkZDI4MGFi
Zjc5OWY4ODBhYzMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQu
aCIKQEAgLTE0NSw4ICsxNDYsMTIgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGMKIAogICAgIEFm
ZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNh
bGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVy
KTsKICAgICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFsaWRGb3JHZW9tZXRyeShvYmplY3RCb3VuZGlu
Z0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7CisgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRv
Y3VtZW50KCkuaG9zdFdpbmRvdygpOworICAgICAgICBpZiAoIWhvc3RXaW5kb3cpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRoaXMgaW1h
Z2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1h
a2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0aG91Z2gu
Ci0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBDb2xvclNwYWNl
OjpTUkdCLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7CisgICAgICAg
IGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Kmhvc3RXaW5kb3csIG9iamVjdEJvdW5kaW5nQm94LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCBDb2xvclNwYWNlOjpTUkdCLCBhYnNvbHV0ZVRyYW5zZm9ybSwgJmNvbnRleHQpOwogICAg
ICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcAppbmRleCAxMmU3ZjE1ZDYzMmQ3NmQ5OWY2YmFiYTkzOGQwZDllMjYzNGQ4ZTgwLi41
MWQ3ODE2NzBjOGY5MjFjMmM5MGU5OGMzNTJhMTcyZjVhMTNmMmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhvc3RXaW5k
b3cuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKQEAgLTEzNSw2ICsxMzYsMTAgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVu
ZGUKICAgICBpZiAoIWFic29sdXRlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSByZW5kZXJlci5kb2N1bWVudCgp
Lmhvc3RXaW5kb3coKTsKKyAgICBpZiAoIWhvc3RXaW5kb3cpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIC8vIEVsaW1pbmF0ZSBzaGVhciBvZiB0aGUgYWJzb2x1dGUgdHJhbnNmb3JtYXRp
b24gbWF0cml4LCB0byBiZSBhYmxlIHRvIHByb2R1Y2UgdW5zaGVhcmVkIHRpbGUgaW1hZ2VzIGZv
ciBmZVRpbGUuCiAgICAgZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0gPSBB
ZmZpbmVUcmFuc2Zvcm0oYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxlKCksIDAsIDAsIGFic29sdXRl
VHJhbnNmb3JtLnlTY2FsZSgpLCAwLCAwKTsKIApAQCAtMTkyLDcgKzE5Nyw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlCiAgICAgZWZmZWN0aXZlVHJhbnNmb3JtLm11bHRpcGx5KGZpbHRlckRh
dGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxl
ZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkOwotICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5z
Zm9ybSwgQ29sb3JTcGFjZTo6TGluZWFyUkdCLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKKyAg
ICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcigqaG9zdFdpbmRvdywgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgcmVuZGVyaW5nTW9k
ZSwgQ29sb3JTcGFjZTo6TGluZWFyUkdCLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIGNvbnRleHQpOwog
ICAgIGlmICghc291cmNlR3JhcGhpYykgewogICAgICAgICBBU1NFUlQoIW1fcmVuZGVyZXJGaWx0
ZXJEYXRhTWFwLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogICAgICAgICBmaWx0ZXJEYXRhLT5zYXZl
ZENvbnRleHQgPSBjb250ZXh0OwpAQCAtMjI1LDYgKzIzMCwxMCBAQCB2b2lkIFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
R3JhcGhpYwogICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmVuZGVyZXJGaWx0ZXJEYXRhTWFwLmVu
ZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGhvc3RXaW5kb3cgPSByZW5kZXJlci5k
b2N1bWVudCgpLmhvc3RXaW5kb3coKTsKKyAgICBpZiAoIWhvc3RXaW5kb3cpCisgICAgICAgIHJl
dHVybjsKKwogICAgIEZpbHRlckRhdGEmIGZpbHRlckRhdGEgPSAqZmluZFJlc3VsdC0+dmFsdWU7
CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJcblJlbmRlclNWR1Jl
c291cmNlRmlsdGVyICIgPDwgdGhpcyA8PCAiIHBvc3RBcHBseVJlc291cmNlIC0gcmVuZGVyZXIg
IiA8PCAmcmVuZGVyZXIgPDwgIiBmaWx0ZXIgc3RhdGUgIiA8PCBmaWx0ZXJEYXRhLnN0YXRlKTsK
QEAgLTI2OSwxMyArMjc4LDEzIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RB
cHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAgICAgICAgIC8v
IEFsd2F5cyB0cnVlIGlmIGZpbHRlckRhdGEgaXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+c3Rh
dGUgPT0gRmlsdGVyRGF0YTo6QnVpbHQpLgogICAgICAgICBpZiAoIWxhc3RFZmZlY3QtPmhhc1Jl
c3VsdCgpKSB7CiAgICAgICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QXBw
bHlpbmc7Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseSgpOworICAgICAgICAgICAgbGFz
dEVmZmVjdC0+YXBwbHkoKmhvc3RXaW5kb3cpOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+Y29y
cmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCk7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFu
c2Zvcm1SZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpOwogICAgICAgICB9CiAgICAg
ICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKIAotICAgICAgICBJbWFn
ZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwor
ICAgICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBsYXN0RWZmZWN0LT5pbWFnZUJ1ZmZl
clJlc3VsdCgqaG9zdFdpbmRvdyk7CiAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkgewogICAgICAg
ICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5jcHAKaW5kZXggZDIyOWI2MzEzYzViMzgwZWY5NWZlMWJiZGM2NDZmYmYxMGUyZDgzMS4u
Y2ZiZDU3YTZjZDcwY2MwYmJjOWE5NWVhNGM3ZjZkYjAyNWI4MzFjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuY3BwCkBAIC01MiwxNSArNTIsMTkgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
OjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyRWxlbWVudCYgY2xpZW50LCBib28KIH0KIAog
I2lmIFVTRShDRykKLXN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRG
b3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0
KiYgc2F2ZWRDb250ZXh0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgUmVuZGVy
T2JqZWN0KiBvYmplY3QpCitzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250
ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIEdyYXBoaWNzQ29u
dGV4dComIHNhdmVkQ29udGV4dCwgUmVmUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewotICAgIGF1dG8qIHRleHRSb290QmxvY2sgPSBSZW5k
ZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoKm9iamVjdCk7CisgICAgYXV0
byogdGV4dFJvb3RCbG9jayA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNl
c3RvcihyZW5kZXJlcik7CiAgICAgQVNTRVJUKHRleHRSb290QmxvY2spOwogCiAgICAgQWZmaW5l
VHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3Vs
YXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRleHRSb290Qmxv
Y2spOwogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5z
Zm9ybSwgQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKKyAgICBh
dXRvIGhvc3RXaW5kb3cgPSByZW5kZXJlci5kb2N1bWVudCgpLmhvc3RXaW5kb3coKTsKKyAgICBp
ZiAoIWhvc3RXaW5kb3cpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBhdXRvIG1h
c2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKCpob3N0V2lu
ZG93LCByZXBhaW50UmVjdCwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpLCBDb2xvclNwYWNlOjpT
UkdCLCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtMTU1LDcgKzE1OSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudDo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVu
CiAKICAgICBpZiAoaXNQYWludGluZ1RleHQpIHsKICNpZiBVU0UoQ0cpCi0gICAgICAgIGlmICgh
Y3JlYXRlTWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KGNvbnRleHQsIG1fc2F2ZWRD
b250ZXh0LCBtX2ltYWdlQnVmZmVyLCAmcmVuZGVyZXIpKSB7CisgICAgICAgIGlmICghY3JlYXRl
TWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KGNvbnRleHQsIG1fc2F2ZWRDb250ZXh0
LCBtX2ltYWdlQnVmZmVyLCByZW5kZXJlcikpIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNw
cAppbmRleCA2NGIxOTYxNTg1MDg3N2IzMGRmZWE3ZTVlZjk3NjU1NDY2MzAzYWRjLi40Y2ZlYzI5
ZDY3MDgxOTMyMjYzOWVjOTIxNzM2Nzc1OWM2Yjc5NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAt
NjgsMTAgKzY4LDE0IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgRmxvYXRSZWN0IHJl
cGFpbnRSZWN0ID0gcmVuZGVyZXIucmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAog
ICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlICYmICFyZXBhaW50UmVjdC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgYXV0byBob3N0V2luZG93ID0gcmVuZGVyZXIuZG9jdW1lbnQoKS5ob3N0V2lu
ZG93KCk7CisgICAgICAgIGlmICghaG9zdFdpbmRvdykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0
eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3ZnU3R5
bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0Ig
PyBDb2xvclNwYWNlOjpMaW5lYXJSR0IgOiBDb2xvclNwYWNlOjpTUkdCOwogICAgICAgICAvLyBG
SVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBh
bHBoYSBtYXNraW5nLCB0aG91Z2guCi0gICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0
ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgY29u
dGV4dCk7CisgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKCpob3N0V2luZG93LCByZXBhaW50UmVjdCwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgY29sb3JTcGFjZSwgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnRl
eHQpOwogICAgICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCmluZGV4IGExZjg1ZjE3NjI2NjFhNWQ4YjMy
YTQ1MDRlNjVlZmE4M2NhM2E0ZWIuLmEwNTUyMzk4Yzk4NzIzZGZlNDM0NWFhZjcxMDVhZTc5Y2Qx
NjJiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAgLTI1NCw4ICsyNTQsMTIgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLAogCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0
dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29s
dXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNm
b3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7CisgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1l
bnQoKS5ob3N0V2luZG93KCk7CisgICAgaWYgKCFob3N0V2luZG93KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAKICAgICBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IEltYWdl
QnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzKTsKLSAgICBhdXRvIHRp
bGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRl
VGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBDb2xvclNwYWNl
OjpTUkdCLCByZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKCpob3N0V2luZG93LCBhYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgcmVuZGVyaW5nTW9kZSk7CiAg
ICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRl
eCBmOTdhZjQzYjRhYzdjNTkxZmU4ZDE1ZWViNDM4MTJmNWE5M2FhOGZhLi5lMWQ4MmMzMDdmMjA0
NDZjZGE5YTQ0ZjllZTViMDZhZGM5OTJjZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIzNiw3ICsyMzYsNyBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3Jt
YXRpb25Ub091dGVybW9zdENvb3JkaW5hdAogICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsK
IH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgYWJzb2x1dGVUcmFuc2Zvcm0sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8
SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKEhvc3RX
aW5kb3cmIGhvc3RXaW5kb3csIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0
YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgLy8gRG9uJ3QgY3JlYXRlIGVtcHR5
IEltYWdlQnVmZmVycy4KQEAgLTI1MCw3ICsyNTAsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFy
ZwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXpl
LCByZW5kZXJpbmdNb2RlLCBjb250ZXh0LCAxLCBjb2xvclNwYWNlKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGNvbnRleHQpOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCAxLCBjb2xvclNwYWNlKTsKKyAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVy
aW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpET00s
IDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgJmhvc3RXaW5kb3cpOwogI2VuZGlm
CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjQs
NyArMjY0LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmcKICAgICByZXR1cm4gaW1hZ2VCdWZm
ZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGNsYW1wZWRSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVm
ZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihIb3N0V2luZG93JiBo
b3N0V2luZG93LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xhbXBlZFJlY3QsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50U2l6ZSBj
bGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7CiAgICAgRmxv
YXRTaXplIHVuY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0LnNpemUoKSk7
CkBAIC0yNzcsNyArMjc3LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmcKICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9k
ZSwgY29udGV4dCwgMSwgY29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0KTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVk
U2l6ZSwgcmVuZGVyaW5nTW9kZSwgMSwgY29sb3JTcGFjZSk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIFNob3Vs
ZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdDo6QkdSQTgsICZob3N0V2luZG93KTsKICNlbmRpZgogICAgIGlmICghaW1h
Z2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCBlNDBkOTdmMWQxOTQ5
N2U1MTUzN2MxYzM5MWZiYjVjMWNmNTE3OTM3Li5mZTA0NzJlYTBhMWQ1MWNhZDhlNTI0MDZkOTE4
MmJlZTkyYzU2ODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEhvc3RX
aW5kb3c7CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3Mg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI7CkBAIC02MCw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYsIFBhaW50SW5mbyYs
IE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9IERvbnRTYXZlR3JhcGhpY3NDb250ZXh0KTsKICAg
ICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0Zs
YWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgQ29sb3JTcGFjZSwgUmVuZGVyaW5n
TW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgQ29sb3JTcGFjZSwgUmVuZGVyaW5n
TW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKEhvc3RXaW5kb3cmLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIFJlbmRlcmluZ01vZGUsIENvbG9yU3BhY2UsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihIb3N0V2luZG93JiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGNsYW1wZWRSZWN0LCBSZW5kZXJpbmdNb2RlLCBDb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6
U1JHQiwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAgc3RhdGljIHZv
aWQgcmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50
JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRy
YW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+
JiwgYm9vbCBzYWZlVG9DbGVhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IGIwYTc2OGM3N2U4NjEwYjVlYzRiMmY3ZTY5
N2RiZDdkYTc1Yjc5ZDcuLjVmY2UwMjJlZTVkOTRmNThmYmU1ZDQxNTJkNGZiNGRmNjdhNWFhZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFJlbmRlckVsZW1lbnQqIEZFSW1hZ2U6OnJlZmVyZW5j
ZWRSZW5kZXJlcigpIGNvbnN0CiAgICAgcmV0dXJuIHRhcmdldC5lbGVtZW50LT5yZW5kZXJlcigp
OwogfQogCi12b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCit2b2lkIEZFSW1h
Z2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZShIb3N0V2luZG93JiBob3N0V2luZG93KQogewogICAg
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcmVmZXJlbmNlZFJlbmRlcmVyKCk7CiAgICAgaWYg
KCFtX2ltYWdlICYmICFyZW5kZXJlcikKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBGRUltYWdlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlz
IGluIENvbG9yU3BhY2U6OlNSR0IKICAgICBzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2U6
OlNSR0IpOwogCi0gICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZm
ZXJSZXN1bHQoKTsKKyAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1
ZmZlclJlc3VsdChob3N0V2luZG93KTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuaAppbmRleCBhYzE2MGVkY2U3YzBlMGEwNjdiZGVmYmQ3MDdmMmFiZTU1OTA4MWI2Li42
N2MxYmI1NDE4OTFkOTFiODllNDcyNGY1NWNiYTcxYTYzYTZiY2ZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCkBAIC00OCw3ICs0OCw3
IEBAIHByaXZhdGU6CiAKICAgICBSZW5kZXJFbGVtZW50KiByZWZlcmVuY2VkUmVuZGVyZXIoKSBj
b25zdDsKIAotICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgZmluYWw7CisgICAgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoSG9zdFdpbmRvdyYpIGZpbmFsOwogICAgIHZvaWQgZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBmaW5hbDsKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBl
KSBjb25zdCBmaW5hbDsKIAo=
</data>
<flag name="commit-queue"
          id="432520"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>