<?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>109678</bug_id>
          
          <creation_ts>2013-02-13 03:40:12 -0800</creation_ts>
          <short_desc>[V8] Generate wrapper methods for custom methods</short_desc>
          <delta_ts>2013-02-13 22:19:13 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>831781</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-13 03:40:12 -0800</bug_when>
    <thetext>Currently V8 directly calls back custom methods written in custom binding files. This makes it impossible for code generators to hook custom methods (e.g. Code generators cannot insert a code for FeatureObservation into custom methods). To solve the problem, we should generate wrapper methods for custom methods.

In the future, I will insert TRACE_EVENT() macros into these wrapper methods to profile DOM getters/setters/methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831784</commentid>
    <comment_count>1</comment_count>
      <attachid>188048</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-13 03:49:36 -0800</bug_when>
    <thetext>Created attachment 188048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831817</commentid>
    <comment_count>2</comment_count>
      <attachid>188048</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 04:51:48 -0800</bug_when>
    <thetext>Comment on attachment 188048
Patch

Attachment 188048 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16454811

New failing tests:
http/tests/xmlhttprequest/extra-parameters.html
http/tests/security/cross-frame-access-call.html
fast/dom/Window/window-early-properties-xhr.html
http/tests/appcache/update-cache.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832098</commentid>
    <comment_count>3</comment_count>
      <attachid>188048</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 11:24:22 -0800</bug_when>
    <thetext>Comment on attachment 188048
Patch

Looks like you&apos;ve got some test failures to work through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832100</commentid>
    <comment_count>4</comment_count>
      <attachid>188048</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 11:24:47 -0800</bug_when>
    <thetext>Comment on attachment 188048
Patch

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

&gt; Source/WebCore/page/DOMWindow.idl:183
&gt;      [DoNotCheckSecurity, Custom] void postMessage(in SerializedScriptValue message, in DOMString targetOrigin, in Array messagePorts)

Should we mark messagePorts as optional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832716</commentid>
    <comment_count>5</comment_count>
      <attachid>188258</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-13 21:37:37 -0800</bug_when>
    <thetext>Created attachment 188258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832717</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-13 21:38:52 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 188048 [details])
&gt; Looks like you&apos;ve got some test failures to work through.

I think I addressed all failures.

(In reply to comment #4)
&gt; &gt; Source/WebCore/page/DOMWindow.idl:183
&gt; &gt;      [DoNotCheckSecurity, Custom] void postMessage(in SerializedScriptValue message, in DOMString targetOrigin, in Array messagePorts)
&gt; 
&gt; Should we mark messagePorts as optional?

Fixed. (Though technically it doesn&apos;t matter because the method is written in custom binding anyway.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832723</commentid>
    <comment_count>7</comment_count>
      <attachid>188258</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-13 21:53:23 -0800</bug_when>
    <thetext>Comment on attachment 188258
Patch

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

&gt; Source/WebCore/xml/XMLHttpRequest.idl:72
&gt;      [Custom] void send()
&gt;          raises(DOMException);

It&apos;s sort of too bad to lose the rest of these declarations, but I guess they&apos;re not checked by the compiler anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832726</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-13 22:00:37 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 188258 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188258&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/xml/XMLHttpRequest.idl:72
&gt; &gt;      [Custom] void send()
&gt; &gt;          raises(DOMException);
&gt; 
&gt; It&apos;s sort of too bad to lose the rest of these declarations, but I guess they&apos;re not checked by the compiler anyway.

Yeah. Ideally, we should keep the IDL declarations and custom implementation for each overloaded send() should be written in custom binding.

Currently only one custom send() implementation is written in custom binding and the send() resolves overloading manually. The fact that there are overloaded declarations in an IDL file but there is only one send() custom implementation confuses code generators.

Will fix in a follow-up patch (Will ask kojih@).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832732</commentid>
    <comment_count>9</comment_count>
      <attachid>188258</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 22:19:08 -0800</bug_when>
    <thetext>Comment on attachment 188258
Patch

Clearing flags on attachment: 188258

Committed r142849: &lt;http://trac.webkit.org/changeset/142849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832733</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 22:19:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188048</attachid>
            <date>2013-02-13 03:49:36 -0800</date>
            <delta_ts>2013-02-13 21:37:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109678-20130213204605.patch</filename>
            <type>text/plain</type>
            <size>91799</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJkOGUwMWU1NGEzZWFh
YWZhOGU1ZGZkNmMwMzBkOGI3MTI0NzZhOS4uOWI0YTA0ZjYyNTljZjE5ZGUxYzVjODdkYjBkMmVk
MWRhMzY0YmZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxMy0wMi0xMyAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBHZW5lcmF0
ZSB3cmFwcGVyIG1ldGhvZHMgZm9yIGN1c3RvbSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk2NzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgVjggZGlyZWN0bHkgY2FsbHMg
YmFjayBjdXN0b20gbWV0aG9kcyB3cml0dGVuIGluCisgICAgICAgIGN1c3RvbSBiaW5kaW5nIGZp
bGVzLiBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgZm9yIGNvZGUgZ2VuZXJhdG9ycworICAgICAg
ICB0byBob29rIGN1c3RvbSBtZXRob2RzIChlLmcuIENvZGUgZ2VuZXJhdG9ycyBjYW5ub3QgaW5z
ZXJ0IGEgY29kZQorICAgICAgICBmb3IgRmVhdHVyZU9ic2VydmF0aW9uIGludG8gY3VzdG9tIG1l
dGhvZHMpLiBUbyBzb2x2ZSB0aGUgcHJvYmxlbSwKKyAgICAgICAgd2Ugc2hvdWxkIGdlbmVyYXRl
IHdyYXBwZXIgbWV0aG9kcyBmb3IgY3VzdG9tIG1ldGhvZHMuCisKKyAgICAgICAgSW4gdGhlIGZ1
dHVyZSwgSSB3aWxsIGluc2VydCBUUkFDRV9FVkVOVCgpIG1hY3JvcyBpbnRvIHRoZXNlIHdyYXBw
ZXIKKyAgICAgICAgbWV0aG9kcyB0byBwcm9maWxlIERPTSBnZXR0ZXJzL3NldHRlcnMvbWV0aG9k
cy4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuaWRsOiBPdmVybG9hZGluZyBvZiBwb3N0TWVzc2FnZSgpIGlzIGhh
bmRsZWQgaW4gY3VzdG9tCisgICAgICAgIGJpbmRpbmdzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIG92
ZXJsb2FkIGl0IGluIGFuIElETCBmaWxlLiBJZiB3ZSBvdmVybG9hZAorICAgICAgICBjdXN0b20g
bWV0aG9kcyBpbiBhbiBJREwgZmlsZSwgaXQgY29uZnVzZXMgY29kZSBnZW5lcmF0b3JzLgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChH
ZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRl
cik6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJh
dGVOb25TdGFuZGFyZEZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bE1ldGhvZDNDYWxsYmFjayk6CisgICAgICAgIChUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjdXN0b21N
ZXRob2RDYWxsYmFjayk6CisgICAgICAgIChUZXN0T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2xhc3NNZXRob2QyQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRl
c3RPYmpUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5oOgorICAgICAgICAoVjhUZXN0T2JqKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlwYm9hcmQ6
OmNsZWFyRGF0YUNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJk
OjpzZXREcmFnSW1hZ2VDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q29uc29sZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnRy
YWNlQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhDb25zb2xlOjphc3NlcnRD
YWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVDYWxs
YmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVFbmRDYWxs
YmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q3J5cHRvOjpnZXRSYW5kb21WYWx1ZXNDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2tD
dXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lckNhbGxi
YWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpyZW1vdmVFdmVudExp
c3RlbmVyQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnBv
c3RNZXNzYWdlQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6
OnRvU3RyaW5nQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6
OnJlbGVhc2VFdmVudHNDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdp
bmRvdzo6Y2FwdHVyZUV2ZW50c0NhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2dDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJD
b3JlOjpWOERPTVdpbmRvdzo6b3BlbkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NV2luZG93OjpzZXRUaW1lb3V0Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01XaW5kb3c6OnNldEludGVydmFsQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4RGF0YVZpZXc6OmdldEludDhDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpW
OERhdGFWaWV3OjpnZXRVaW50OENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RGF0YVZpZXc6OnNldEludDhDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERh
dGFWaWV3OjpzZXRVaW50OENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2VDYWxsYmFja0N1c3RvbSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1v
dGlvbkV2ZW50Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudENhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERvY3VtZW50OjpldmFsdWF0ZUNhbGxiYWNrQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdENhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRp
b25DYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdlb2xvY2F0aW9uOjp3YXRj
aFBvc2l0aW9uQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEFs
bENvbGxlY3Rpb246Oml0ZW1DYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhU
TUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrQ3VzdG9tKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTENhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OndyaXRlQ2FsbGJhY2tD
dXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OndyaXRlbG5DYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6b3BlbkNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6VjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBs
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0
aW9uUmFuZ2VDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2tDdXN0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZENhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmVD
YWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhpc3Rvcnk6OnB1c2hTdGF0ZUNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9yeTo6cmVwbGFjZVN0YXRlQ2FsbGJh
Y2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6
aW5zcGVjdGVkT2JqZWN0Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lQ2FsbGJhY2tDdXN0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmlzSFRNTEFsbENvbGxlY3Rp
b25DYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9z
dDo6dHlwZUNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjpmdW5jdGlvbkRldGFpbHNDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzQ2FsbGJhY2tDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlz
dGVuZXJzQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlw
dEhvc3Q6Omluc3BlY3RDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVj
dGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpzdG9yYWdlSWRDYWxsYmFja0N1c3RvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVDYWxsYmFja0N1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25W
YXJpYWJsZVZhbHVlQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OEluc3BlY3RvckZyb250ZW5kSG9zdDo6cGxhdGZvcm1DYWxsYmFja0N1c3RvbSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6cG9ydENhbGxiYWNrQ3VzdG9tKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1l
bnVDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEluc3BlY3RvckZyb250ZW5k
SG9zdDo6cmVjb3JkQWN0aW9uVGFrZW5DYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVjb3JkUGFuZWxTaG93bkNhbGxiYWNrQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZWNvcmRTZXR0
aW5nQ2hhbmdlZENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SmF2
YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnRDYWxsYmFja0N1c3RvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWVDYWxs
YmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNj
b3BlVHlwZUNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhM
b2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRB
Y2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQWNj
ZXNzb3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQWNjZXNz
b3JHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2tD
dXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnZhbHVlT2ZDYWxsYmFja0N1c3RvbSk6
CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjp0b1N0cmluZ0NhbGxiYWNrQ3VzdG9tKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1l
c3NhZ2VFdmVudENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VQb3J0
Ojpwb3N0TWVzc2FnZUNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9kZTo6aW5zZXJ0QmVm
b3JlQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlOjpyZXBsYWNlQ2hp
bGRDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OnJlbW92ZUNoaWxk
Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlOjphcHBlbmRDaGlsZENh
bGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRp
b25DZW50ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOb3RpZmljYXRpb25DZW50
ZXI6OnJlcXVlc3RQZXJtaXNzaW9uQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb25DYWxsYmFja0N1c3RvbSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFNRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW1DYWxsYmFja0N1c3Rv
bSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxi
YWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlv
blN5bmNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlvblN5bmM6
OmV4ZWN1dGVTcWxDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U1ZHTGVuZ3RoOjpj
b252ZXJ0VG9TcGVjaWZpZWRVbml0c0NhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVyc0NhbGxi
YWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRCdWZmZXJQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uQ2FsbGJhY2tDdXN0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlckNhbGxi
YWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyQ2FsbGJhY2tDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBv
cnRlZEV4dGVuc2lvbnNDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyQ2FsbGJhY2tDdXN0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1DYWxsYmFja0N1
c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVy
dGV4QXR0cmliQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0xZnZDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdkNhbGxiYWNrQ3VzdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2Q2FsbGJh
Y2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm0yaXZDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTNmdkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2Q2FsbGJhY2tDdXN0b20pOgorICAg
ICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnZDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTRpdkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnZDYWxsYmFja0N1
c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDRmdkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZnZDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2Q2FsbGJhY2tD
dXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYjNmdkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWI0ZnZDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxsYmFja0N1c3RvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVvdXRDYWxsYmFja0N1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6OnNldEludGVydmFsQ2FsbGJh
Y2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlcjo6cG9zdE1lc3NhZ2VDYWxsYmFja0N1c3Rv
bSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6b3BlbkNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFja0N1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlckNh
bGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4WFNMVFByb2Nlc3Nvcjo6Z2V0UGFy
YW1ldGVyQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhYU0xUUHJvY2Vzc29y
OjpyZW1vdmVQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbSk6CisKIDIwMTMtMDItMTIgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gR2VuZXJhdGUgd3Jh
cHBlciBtZXRob2RzIGZvciBjdXN0b20gZ2V0dGVycy9zZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDAxOWJhOTU1
MGYxMjE3NmFlMzIyYmJmNDc3YmNjMmZmZjNiYzM0NjQuLjc4MmIwYzY4NDBhZDcyZmFkODYwMzA0
OWFjNmUxZDc1NmU5ZjFlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zOTgsNyArMzk4LDcgQEAgRU5ECiAgICAgICAg
ICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Ci0gICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25hbWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKIEVORAogICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CkBAIC03OTEsNyArNzkxLDcgQEAgc3ViIEdlbmVy
YXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyCiAgICAgICAgICRzaWduYXR1cmUgPSAidjg6Okxv
Y2FsPHY4OjpTaWduYXR1cmU+KCkiOwogICAgIH0KIAotICAgIG15ICRjYWxsYmFjayA9IEdldEZ1
bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0aW9uLCAkaW50ZXJmYWNlTmFtZSk7Cisg
ICAgbXkgJGNhbGxiYWNrID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2Z1bmNOYW1l
fUNhbGxiYWNrIjsKICAgICBteSAkbmV3VGVtcGxhdGVTdHJpbmcgPSAidjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldygkY2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksICRzaWduYXR1cmUpIjsKIAogICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJGcmFtZS5oIik7CkBAIC0xMzcwLDIwICsxMzcwLDYgQEAgRU5E
CiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3Ry
aW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9CiAKLXN1YiBHZXRGdW5jdGlvblRl
bXBsYXRlQ2FsbGJhY2tOYW1lCi17Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7Ci0gICAgbXkg
JGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLQotICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWU7Ci0KLSAgICBpZiAoSGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7Ci0gICAgICAgIHJldHVybiAiVjgke2ludGVyZmFj
ZU5hbWV9Ojoke25hbWV9Q2FsbGJhY2siOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAi
JHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7bmFtZX1DYWxsYmFjayI7Ci0gICAgfQotfQot
CiBzdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbGJhY2sKIHsKICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OwpAQCAtMTU1OCw2ICsxNTQ0LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiBFTkQK
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZUZlYXR1cmVPYnNlcnZhdGlvbigk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4TWVhc3VyZUFzIn0p
KTsKIAorICAgIGlmIChIYXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcykpIHsKKyAgICAgICAgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
bmFtZTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOworICAgIHJldHVy
biAke3Y4SW50ZXJmYWNlTmFtZX06OiR7bmFtZX1DYWxsYmFja0N1c3RvbShhcmdzKTsKK30KKwor
RU5ECisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIjZW5kaWYgLy8gJHtjb25kaXRp
b25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVBcmd1bWVudHND
b3VudENoZWNrKCRmdW5jdGlvbiwgJGludGVyZmFjZSkpOwogCiAgICAgaWYgKCRuYW1lIGVxICJz
ZXQiIGFuZCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9KSB7
CkBAIC0yNDI5LDcgKzI0MjYsNyBAQCBFTkQKICAgICB9CiAKICAgICAjIE5vcm1hbCBmdW5jdGlv
biBjYWxsIGlzIGEgdGVtcGxhdGUKLSAgICBteSAkY2FsbGJhY2sgPSBHZXRGdW5jdGlvblRlbXBs
YXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGludGVyZmFjZU5hbWUpOworICAgIG15ICRjYWxs
YmFjayA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtuYW1lfUNhbGxiYWNrIjsKIAog
ICAgIGlmICgkcHJvcGVydHlfYXR0cmlidXRlcyBlcSAidjg6OkRvbnREZWxldGUiKSB7CiAgICAg
ICAgICRwcm9wZXJ0eV9hdHRyaWJ1dGVzID0gIiI7CkBAIC0yNzY3LDEyICsyNzY0LDkgQEAgRU5E
CiAgICAgbXkgJG5lZWRzRG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyID0gMDsKICAgICAjIEdlbmVy
YXRlIG1ldGhvZHMgZm9yIGZ1bmN0aW9ucy4KICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHsk
aW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgIG15ICRpc0N1c3RvbSA9IEhhc0N1c3Rv
bU1ldGhvZCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKLSAgICAg
ICAgaWYgKCEkaXNDdXN0b20pIHsKLSAgICAgICAgICAgIEdlbmVyYXRlRnVuY3Rpb25DYWxsYmFj
aygkZnVuY3Rpb24sICRpbnRlcmZhY2UpOwotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+e292
ZXJsb2FkSW5kZXh9ID4gMSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA9PSBAeyRmdW5j
dGlvbi0+e292ZXJsb2Fkc319KSB7Ci0gICAgICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVk
RnVuY3Rpb25DYWxsYmFjaygkZnVuY3Rpb24sICRpbnRlcmZhY2UpOwotICAgICAgICAgICAgfQor
ICAgICAgICBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2soJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsK
KyAgICAgICAgaWYgKCRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMSAmJiAkZnVuY3Rpb24t
PntvdmVybG9hZEluZGV4fSA9PSBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319KSB7CisgICAgICAg
ICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbkNhbGxiYWNrKCRmdW5jdGlvbiwgJGludGVy
ZmFjZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5h
bWUgZXEgIml0ZW0iKSB7CkBAIC0yNzkxLDcgKzI3ODUsNyBAQCBFTkQKICAgICAgICAgIyBnZW5l
cmF0ZSBhbiBhY2Nlc3MgZ2V0dGVyIHRoYXQgcmV0dXJucyBkaWZmZXJlbnQgZnVuY3Rpb24gb2Jq
ZWN0cwogICAgICAgICAjIGZvciBkaWZmZXJlbnQgY2FsbGluZyBjb250ZXh0LgogICAgICAgICBp
ZiAoKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gfHwg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSkgJiYgJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkgewotICAgICAgICAg
ICAgaWYgKCEkaXNDdXN0b20gfHwgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gMSkgewor
ICAgICAgICAgICAgaWYgKCFIYXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcykgfHwgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gMSkgewog
ICAgICAgICAgICAgICAgIEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyKCRmdW5jdGlv
biwgJGludGVyZmFjZU5hbWUpOwogICAgICAgICAgICAgICAgICRuZWVkc0RvbWFpblNhZmVGdW5j
dGlvblNldHRlciA9IDE7CiAgICAgICAgICAgICB9CkBAIC0yODYwLDcgKzI4NTQsNyBAQCBFTkQK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IFY4RE9NQ29uZmln
dXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrICR7djhJbnRlcmZhY2VOYW1lfUNhbGxiYWNrc1tdID0g
e1xuIik7CiAgICAgICAgIH0KICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+bmFtZTsKLSAgICAgICAgbXkgJGNhbGxiYWNrID0gR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxi
YWNrTmFtZSgkZnVuY3Rpb24sICRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgbXkgJGNhbGxiYWNr
ID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9Q2FsbGJhY2siOwogICAgICAg
ICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CkBAIC0zMTg1LDcgKzMxNzksNyBA
QCBFTkQKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25h
bFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiAk
e2VuYWJsZUZ1bmN0aW9ufShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkge1xuIik7
CiAgICAgICAgICAgICBteSAkbmFtZSA9ICRydW50aW1lRnVuYy0+c2lnbmF0dXJlLT5uYW1lOwot
ICAgICAgICAgICAgbXkgJGNhbGxiYWNrID0gR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxiYWNrTmFt
ZSgkcnVudGltZUZ1bmMsICRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgICAgIG15ICRjYWxsYmFj
ayA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtuYW1lfUNhbGxiYWNrIjsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAgICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCIke25hbWV9IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
JHtjYWxsYmFja30sIHY4VW5kZWZpbmVkKCksIGRlZmF1bHRTaWduYXR1cmUpLT5HZXRGdW5jdGlv
bigpKTsKIEVORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCAxZGE5MzJjYjQxYWUwNWQ2Y2Yy
NzkxOTlmMTM5YWU0NmVmMzYxNTM2Li4xMTg4YjM3NTA3M2JhM2FmNGZkMmQzMzI4ZjFkOGYwZTUx
NjYxMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjA1LDYgKzIwNSwxNSBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDJDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFs
TWV0aG9kM0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgcmV0dXJu
IFY4VGVzdEludGVyZmFjZTo6c3VwcGxlbWVudGFsTWV0aG9kM0NhbGxiYWNrQ3VzdG9tKGFyZ3Mp
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKwog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2Q0Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0U3VwcGxlbWVudGFsOjpzdXBw
bGVtZW50YWxNZXRob2Q0KCk7CkBAIC0yNDcsNyArMjU2LDcgQEAgc3RhdGljIGNvbnN0IFY4RE9N
Q29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIFY4VGVzdEludGVyZmFjZUNhbGxiYWNrc1td
ID0gewogICAgIHsic3VwcGxlbWVudGFsTWV0aG9kMSIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFs
OjpzdXBwbGVtZW50YWxNZXRob2QxQ2FsbGJhY2t9LAogI2VuZGlmCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0gICAgeyJzdXBwbGVtZW50YWxNZXRob2Qz
IiwgVjhUZXN0SW50ZXJmYWNlOjpzdXBwbGVtZW50YWxNZXRob2QzQ2FsbGJhY2t9LAorICAgIHsi
c3VwcGxlbWVudGFsTWV0aG9kMyIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50
YWxNZXRob2QzQ2FsbGJhY2t9LAogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDdmYTA1ZDIx
ZWFhNmFlNWU3OTI5ZDMyMGNhZWRhZmEyMGI5OTc4MTYuLjlkODM2OGVkNTcxYTMxMmJhZmQ0MGMx
NGEyNjJhYzM0OTJkODJlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0xMTE4LDYgKzExMTgsMTcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoRXhjZXB0aW9uQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdz
LkdldElzb2xhdGUoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9t
TWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBGZWF0dXJl
T2JzZXJ2ZXI6Om9ic2VydmUoYWN0aXZlRE9NV2luZG93KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2Uo
KSksIEZlYXR1cmVPYnNlcnZlcjo6Q3VzdG9tVGVzdEZlYXR1cmUpOworICAgIHJldHVybiBWOFRl
c3RPYmo6OmN1c3RvbU1ldGhvZENhbGxiYWNrQ3VzdG9tKGFyZ3MpOworfQorCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICByZXR1cm4gVjhUZXN0T2JqOjpjdXN0b21NZXRob2RX
aXRoQXJnc0NhbGxiYWNrQ3VzdG9tKGFyZ3MpOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IFY4RXZlbnRMaXN0ZW5l
ckxpc3Q6OmdldEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmluZE9yQ3Jl
YXRlKTsKQEAgLTE1OTksNiArMTYxMCwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAg
IHJldHVybiB2OEludGVnZXIoVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoYXJnKSwg
YXJncy5HZXRJc29sYXRlKCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNs
YXNzTWV0aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgcmV0
dXJuIFY4VGVzdE9iajo6Y2xhc3NNZXRob2QyQ2FsbGJhY2tDdXN0b20oYXJncyk7Cit9CisKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVy
bG9hZGVkTWV0aG9kMTFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMjAw
Niw4ICsyMDIyLDggQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENh
bGxiYWNrIFY4VGVzdE9iakNhbGxiYWNrc1tdID0gewogICAgIHsic2VyaWFsaXplZFZhbHVlIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnNlcmlhbGl6ZWRWYWx1ZUNhbGxiYWNrfSwKICAgICB7Im9wdGlv
bnNPYmplY3QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6b3B0aW9uc09iamVjdENhbGxiYWNrfSwKICAg
ICB7Im1ldGhvZFdpdGhFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aEV4
Y2VwdGlvbkNhbGxiYWNrfSwKLSAgICB7ImN1c3RvbU1ldGhvZCIsIFY4VGVzdE9iajo6Y3VzdG9t
TWV0aG9kQ2FsbGJhY2t9LAotICAgIHsiY3VzdG9tTWV0aG9kV2l0aEFyZ3MiLCBWOFRlc3RPYmo6
OmN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJhY2t9LAorICAgIHsiY3VzdG9tTWV0aG9kIiwgVGVz
dE9ialY4SW50ZXJuYWw6OmN1c3RvbU1ldGhvZENhbGxiYWNrfSwKKyAgICB7ImN1c3RvbU1ldGhv
ZFdpdGhBcmdzIiwgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJh
Y2t9LAogICAgIHsiYWRkRXZlbnRMaXN0ZW5lciIsIFRlc3RPYmpWOEludGVybmFsOjphZGRFdmVu
dExpc3RlbmVyQ2FsbGJhY2t9LAogICAgIHsicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIFRlc3RPYmpW
OEludGVybmFsOjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2t9LAogICAgIHsid2l0aFNjcmlw
dFN0YXRlVm9pZCIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVWb2lkQ2FsbGJh
Y2t9LApAQCAtMjE2Myw3ICsyMTc5LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICBw
cm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93cyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFs
OjptZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQ2FsbGJhY2ssIHY4VW5kZWZpbmVk
KCksIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NTaWduYXR1cmUpKTsKICAgICBk
ZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjbGFzc01ldGhvZCIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjbGFzc01ldGhvZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSkpOwogICAgIGRlc2MtPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNsYXNzTWV0aG9kV2l0aE9w
dGlvbmFsQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigp
KSk7Ci0gICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY2xhc3NNZXRob2QyIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhUZXN0T2JqOjpjbGFzc01ldGhvZDJDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKKyAgICBkZXNj
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjbGFzc01ldGhvZDIiKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y2xhc3NNZXRob2QyQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgib3ZlcmxvYWRl
ZE1ldGhvZDEiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6
b3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2FsPHY4OjpT
aWduYXR1cmU+KCkpKTsKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCBi
YzZiMDI3MTYzZGM3ZjQ1NTFkYjVkMTFkNTI0MGFmOWI2MmU5ZTVkLi5hZTQ5MGM5NjFkOGNlNjNk
ZmM2NWVlZWEwODJkZjcwYzAyNDVmMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC00Myw5ICs0Myw5IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgc3RhdGljIHZvaWQgZGVyZWZPYmplY3Qodm9pZCopOwogICAgIHN0YXRp
YyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGN1c3RvbU1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKLSAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYpOwotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2xhc3NN
ZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kV2l0
aEFyZ3NDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJik7CisgICAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZDJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGN1c3RvbUF0dHJBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpOwogICAgIHN0YXRpYyB2b2lkIGN1c3RvbUF0
dHJBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4sIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IGYz
NGEzMjZlZTI3YWY0NTM2ZDIwMTRlMGZlYzYyZWM3MmNmY2FiNjAuLjQyOGZmOWQ5ZjBiYTQxZWMz
MTk3MGE3NWVkNWFiN2M1YmIyNTBiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtNjAsNyArNjAsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OnR5cGVzQWNjZXNzb3JHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Y2xlYXJEYXRhQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Y2xl
YXJEYXRhQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBD
bGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xpcGJvYXJkOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKIApAQCAtNzcsNyArNzcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6
OmNsZWFyRGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJk
OjpzZXREcmFnSW1hZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpzZXREcmFnSW1hZ2VDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIENsaXBib2FyZCogY2xpcGJvYXJkID0g
VjhDbGlwYm9hcmQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCmluZGV4IDAy
MjMzNDAyMjM1OWUxYTU3NDQzNTJjNzI3MWJiZDEzOGZkZDQ1NGMuLjg5NmI4YWU0MjhmODA4ZjI1
ZWQ1ZjZhZDA4NjViYTdhYTdiMDY0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6
dHJhY2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Q29uc29sZTo6dHJhY2VDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNy
ZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAwKSk7CkBAIC00OCw3ICs0OCw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Q29uc29sZTo6YXNzZXJ0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25z
b2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBib29sIGNvbmRpdGlvbiA9IGFyZ3Nb
MF0tPkJvb2xlYW5WYWx1ZSgpOwpAQCAtNTgsNyArNTgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhDb25zb2xlOjphc3NlcnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
fQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2ZpbGVDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29s
ZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdS
RVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxl
LCBhcmdzWzBdKTsKQEAgLTY2LDcgKzY2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29u
c29sZTo6cHJvZmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6
OnByb2ZpbGVFbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZUVuZENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNF
KFY4U3RyaW5nUmVzb3VyY2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3Nb
MF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5
cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0
b0N1c3RvbS5jcHAKaW5kZXggNzk2NDM4YzE0Njk2YjYzZDExMmYyYjBlZDFhYmE2NTQ5ZTMzMWFj
My4uODI1ZmIyZjg2NDk2ZGQ3ODBlYzhhOTkwMTY3YTYxZjRkMDNhN2Y3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3BwCkBA
IC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Q3J5cHRvOjpnZXRSYW5kb21WYWx1ZXNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3J5cHRvOjpnZXRSYW5kb21WYWx1
ZXNDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCmluZGV4IDM5YTNkMTE1
ZDRhZDBhMjA3MTRkN2JjYmMzMjgxNzdiYWZmNGMyNDguLmEzODc1Njk5N2IzMzQyMzgxNDZjZWNm
MzhkZjM5NDBmNjczMjQ0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmNvbnN0cnVjdG9yQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW4KICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmFwcGVuZENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBw
ZW5kQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHY4U3ludGF4RXJy
b3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20u
Y3BwCmluZGV4IGUxNTExMzdjZTYxZTYzNmIzZTgyZThlNDFhNDc4ZWU1MTkwNGNjMzYuLjAxNmEx
NzYzNDhjODFiNjhmMDRmYjIwMWQ1YWM0MGE5YjFjNmJiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAt
MjI2LDcgKzIyNiw3IEBAIHZvaWQgVjhET01XaW5kb3c6Om9wZW5lckFjY2Vzc29yU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6CiAgICAgaW5mby5UaGlzKCkt
PlNldChuYW1lLCB2YWx1ZSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRv
dzo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFN0cmluZyBldmVudFR5
cGUgPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSk7CiAgICAgYm9vbCB1c2VDYXB0dXJlID0gYXJn
c1syXS0+Qm9vbGVhblZhbHVlKCk7CkBAIC0yNTYsNyArMjU2LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYKIH0KIAogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnJlbW92
ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBTdHJpbmcgZXZlbnRUeXBl
ID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3Nb
Ml0tPkJvb2xlYW5WYWx1ZSgpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHN0YXRpYyBib29sIGlzTGVn
YWN5VGFyZ2V0T3JpZ2luRGVzaWduYXRpb24odjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQog
fQogCiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RE9NV2luZG93Ojpwb3N0TWVzc2FnZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgLy8gTm9uZSBvZiB0aGVzZSBuZWVkIHRvIGJlIFJlZlB0ciBiZWNhdXNl
IGFyZ3MgYW5kIGNvbnRleHQgYXJlIGd1YXJhbnRlZWQKICAgICAvLyB0byBob2xkIG9uIHRvIHRo
ZW0uCkBAIC0zNDIsNyArMzQyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93
Ojpwb3N0TWVzc2FnZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIC8vIGZpeCB0
aGlzIGJ5IGNhbGxpbmcgdG9TdHJpbmcgZnVuY3Rpb24gb24gdGhlIHJlY2VpdmVyLgogLy8gSG93
ZXZlciwgVjggaW1wbGVtZW50cyB0b1N0cmluZyBpbiBKYXZhU2NyaXB0LCB3aGljaCByZXF1aXJl
cwogLy8gc3dpdGNoaW5nIGNvbnRleHQgb2YgcmVjZWl2ZXIuIEkgY29uc2lkZXIgaXQgaXMgZGFu
Z2Vyb3VzLgotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0b1N0cmluZ0NhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XaW5kb3c6OnRvU3RyaW5nQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBhcmdzLlRoaXMo
KS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUo
YXJncy5HZXRJc29sYXRlKCkpKTsKICAgICBpZiAoZG9tV3JhcHBlci5Jc0VtcHR5KCkpCkBAIC0z
NTAsMTIgKzM1MCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnRvU3Ry
aW5nQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gZG9tV3Jh
cHBlci0+T2JqZWN0UHJvdG9Ub1N0cmluZygpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhET01XaW5kb3c6OnJlbGVhc2VFdmVudHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZWxlYXNlRXZlbnRzQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmNh
cHR1cmVFdmVudHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpjYXB0dXJlRXZlbnRzQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
fQpAQCAtNDAyLDcgKzQwMiw3IEBAIHN0YXRpYyB2b2lkIHNldFVwRGlhbG9nKERPTVdpbmRvdyog
ZGlhbG9nLCB2b2lkKiBoYW5kbGVyKQogICAgIHN0YXRpY19jYXN0PERpYWxvZ0hhbmRsZXIqPiho
YW5kbGVyKS0+ZGlhbG9nQ3JlYXRlZChkaWFsb2cpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNob3dNb2RhbERp
YWxvZ0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgRE9N
V2luZG93KiBpbXBsID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IEJpbmRpbmdTdGF0ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CkBAIC00MTks
NyArNDE5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzaG93TW9kYWxE
aWFsb2dDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIHJldHVybiBoYW5kbGVyLnJl
dHVyblZhbHVlKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6b3Bl
bkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhET01XaW5kb3c6Om9wZW5DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIERPTVdpbmRvdyogaW1wbCA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0
YW5jZSgpOwpAQCAtNDk2LDEzICs0OTYsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9N
V2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIH0K
IAogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNldFRpbWVvdXRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9N
V2luZG93OjpzZXRUaW1lb3V0Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICByZXR1cm4gV2luZG93U2V0VGltZW91dEltcGwoYXJncywgdHJ1ZSk7CiB9CiAK
IAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRJbnRlcnZhbENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01X
aW5kb3c6OnNldEludGVydmFsQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICByZXR1cm4gV2luZG93U2V0VGltZW91dEltcGwoYXJncywgZmFsc2UpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdD
dXN0b20uY3BwCmluZGV4IDYyMzNjZWM4NjE5NjM5MzVjMjA4NDQ1MDE0ZWI4M2M4MGMzZWMwYzgu
LjdjNTYzNzM1YWQyM2NiMjBmZjFmMDcxNDcyNzJiN2U2ZjEyZGJiZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKERhdGFWaWV3KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGUKICAgICByZXR1cm4gVjhE
YXRhVmlldzo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwog
fQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6Z2V0SW50OENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmll
dzo6Z2V0SW50OENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC02OCw3ICs2OCw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpnZXRJbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjhJbnRlZ2VyKHJlc3VsdCwgYXJncy5HZXRJc29s
YXRlKCkpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6Z2V0VWludDhD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RGF0YVZpZXc6OmdldFVpbnQ4Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTgyLDcgKzgy
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmdldFVpbnQ4Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjhJbnRlZ2VyKHJlc3VsdCwg
YXJncy5HZXRJc29sYXRlKCkpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmll
dzo6c2V0SW50OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6c2V0SW50OENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAgICAgICBy
ZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBA
IC05Nyw3ICs5Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRJbnQ4
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OnNldFVpbnQ4Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERhdGFWaWV3OjpzZXRVaW50OENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IGFkNjA0NzYxZTBlOWFjYThhNDRiMDdkMjIy
YWEzY2E2MTMwN2RlYjguLjljNzJhNTliZWNhZDkwYjVhN2E3NTc3NjY2MjY5MDllOThjNTk4OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRl
ZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC00MSw3ICs0MSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGVk
aWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGVkaWNhdGVkV29ya2VyQ29udGV4
dDo6cG9zdE1lc3NhZ2VDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBWOERlZGljYXRl
ZFdvcmtlckNvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIE1lc3NhZ2VQb3J0
QXJyYXkgcG9ydHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggOWVmOWE4ODJi
ZjgyOTk0YWNhYTU3MGFjNzJjYjJjZmMzZGMzZGExNy4uMTI3ODdkNTA1MzdhNjhjZTg0YWNlYjNk
OWRmYWNlMTk0MGQ3ZTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcApAQCAtMTU3
LDcgKzE1Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1vdGlvbkV2ZW50Ojpp
bnRlcnZhbEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6CiAgICAgcmV0dXJuIHY4OjpOdW1i
ZXI6Ok5ldyhpbXAtPmRldmljZU1vdGlvbkRhdGEoKS0+aW50ZXJ2YWwoKSk7CiB9CiAKLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZl
bnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVudENhbGxiYWNrQ3Vz
dG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgRGV2aWNlTW90aW9uRXZlbnQq
IGltcCA9IFY4RGV2aWNlTW90aW9uRXZlbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCB0eXBl
LCBhcmdzWzBdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKaW5kZXgg
YWQ0NzNiNjdmOGE3ZWEwODM0ZjgxYmE4YmYwMDQ5OTgzOTFhNmM2MS4uYmIzMzkyYzZkOTMxYzNh
MTcxYmU4OTAxOTU4OWM1NWZkNzdmMTM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVu
dEN1c3RvbS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2
aWNlT3JpZW50YXRpb25FdmVudDo6YWJzb2x1dGVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWwKICAg
ICByZXR1cm4gdjg6OkJvb2xlYW46Ok5ldyhpbXAtPm9yaWVudGF0aW9uKCktPmFic29sdXRlKCkp
OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojpp
bml0RGV2aWNlT3JpZW50YXRpb25FdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0
RGV2aWNlT3JpZW50YXRpb25FdmVudENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCogaW1wID0gVjhEZXZpY2VPcmll
bnRhdGlvbkV2ZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZP
Ul9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgdHlwZSwgYXJnc1swXSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1
c3RvbS5jcHAKaW5kZXggNjJkZmE2NDQ5MGZiOTNkNzkzOWNlMmI4OTg3OTIzNzdiN2MzZjI5ZC4u
MWYxMmVlMjg2ZTA2ZDMxNDdiZmNmMTNmYjk0MjI5NWMwMDE4MGEwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcApA
QCAtNjQsNyArNjQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERvY3VtZW50OjpldmFsdWF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6ZXZhbHVhdGVDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFJlZlB0cjxEb2N1bWVu
dD4gZG9jdW1lbnQgPSBWOERvY3VtZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTEwOSw3ICsxMDksNyBAQCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXAoRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZQogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOERvY3VtZW50OjpjcmVhdGVUb3VjaExpc3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RG9jdW1lbnQ6OmNyZWF0ZVRvdWNo
TGlzdENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgUmVm
UHRyPFRvdWNoTGlzdD4gdG91Y2hMaXN0ID0gVG91Y2hMaXN0OjpjcmVhdGUoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25D
dXN0b20uY3BwCmluZGV4IDhjNTFiZTE1OWQzOGNmNTkyNmM3MGE0MTk2MDY2MDcxMzk0ZTA2MDEu
LmNiYWZiNWQ0OTVjYTgzODE4ZTE0YjExOGZlOWQ0MWZhMjc2MTg4ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3Rv
bS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlv
bnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyh2ODo6TG9jYWw8djg6OlZhbHVlPiB2YQogICAgIHJl
dHVybiBvcHRpb25zLnJlbGVhc2UoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4R2Vv
bG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBv
c2l0aW9uQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBi
b29sIHN1Y2NlZWRlZCA9IGZhbHNlOwogCkBAIC0xNTIsNyArMTUyLDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWUKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbkNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhHZW9sb2NhdGlvbjo6
d2F0Y2hQb3NpdGlvbkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20u
Y3BwCmluZGV4IDFkODY5ZWZlNTI0YzQ3NTdjZGFhNzM0MzNhZDc5MzFlODk5YmQ4OTEuLmY3ODYw
OTU0OTIxZDVhNWMyMWJhMDUzYWNlYmVkNjFkYjE4NDRjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlv
bkN1c3RvbS5jcHAKQEAgLTg1LDEzICs4NSwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cgog
ICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUp
LCBpbmZvKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246
Oml0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246Oml0ZW1DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIEhUTUxBbGxDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxB
bGxDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICByZXR1cm4gZ2V0SXRl
bShpbXAsIGFyZ3NbMF0sIGFyZ3MpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
QWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1D
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEhUTUxBbGxD
b2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxBbGxDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJdGVtcyhp
bXAsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAKaW5kZXggYTVmMDg2NmUxMDE0YjFkOGMwZjYyYWZjNDM4M2M1OTY0NTBkMGFmZS4u
NGEzYzVjMjNhODRhNjBiOTRmNmVkOTlhYzUwZDE1YjAxNTA0ZTMxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNF
bGVtZW50Q3VzdG9tLmNwcApAQCAtNDgsNyArNDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9
IGFyZ3MuSG9sZGVyKCk7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGltcCA9IFY4SFRNTENhbnZh
c0VsZW1lbnQ6OnRvTmF0aXZlKGhvbGRlcik7CkBAIC0xMTIsNyArMTEyLDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnQKICAgICByZXR1cm4gdjhOdWxsKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0K
IAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFy
Z3MuSG9sZGVyKCk7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IFY4SFRNTENhbnZh
c0VsZW1lbnQ6OnRvTmF0aXZlKGhvbGRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCAwNDY2
Y2RjZGRlOTBlMTc4MzdiMzY2ZTg5YTQ4OWU5NjA4MzQ4OTYwLi4xZTc0MjkzMDU1YTY0ZjlhZWNh
YzU0YTMyNWQ5Yzg1ZTBkY2ZjMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTExNSwyMSAr
MTE1LDIxIEBAIHN0YXRpYyBTdHJpbmcgd3JpdGVIZWxwZXJHZXRTdHJpbmcoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OndyaXRlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6
d3JpdGVDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEhU
TUxEb2N1bWVudCogaHRtbERvY3VtZW50ID0gVjhIVE1MRG9jdW1lbnQ6OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOwogICAgIGh0bWxEb2N1bWVudC0+d3JpdGUod3JpdGVIZWxwZXJHZXRTdHJpbmco
YXJncyksIGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpLT5kb2N1bWVu
dCgpKTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OndyaXRlbG5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50Ojp3cml0ZWxuQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBIVE1MRG9jdW1l
bnQqIGh0bWxEb2N1bWVudCA9IFY4SFRNTERvY3VtZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBodG1sRG9jdW1lbnQtPndyaXRlbG4od3JpdGVIZWxwZXJHZXRTdHJpbmcoYXJncyks
IGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpLT5kb2N1bWVudCgpKTsK
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIVE1MRG9jdW1lbnQ6Om9wZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50OjpvcGVuQ2FsbGJhY2tDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBIVE1MRG9jdW1lbnQqIGh0bWxEb2N1
bWVudCA9IFY4SFRNTERvY3VtZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDAxZGFhNDkyYzJh
ZGIwZmMxMmI1MTEzNTkwODZkOTg5YTk4OTRhYTcuLjJjNDJkNzM2MmMyZTYyMjBhNjA0MDhlYjcz
OGIyYWVhNmQ1MDFhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1
c3RvbS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2EKICAgICBy
ZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwgaW5m
byk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNh
bGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24qIGltcCA9IFY4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQg
PSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGY1ZTQ4MTRkN2NkY2UyN2Mz
NWEzYjg3MzkyMmYwNTkxNWU0NTEwYzIuLmFiYzMwNzJjNzMxYTgyNTE1NWI3YzQ4ODgxZDYyMmE3
MzQzZTU3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtNDUs
NyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdyYXBwZXJUeXBlSW5mbyBWOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3I6OkdldFRlbXBsYXRlLCBWOEhUTUxJbWFnZUVsZW1lbnQ6OmRlcmVmT2JqZWN0LCAwLCBW
OEhUTUxJbWFnZUVsZW1lbnQ6OnRvRXZlbnRUYXJnZXQsIDAsIFY4SFRNTEltYWdlRWxlbWVudDo6
aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVj
dFByb3RvdHlwZSB9OwogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmICghYXJn
cy5Jc0NvbnN0cnVjdENhbGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00g
b2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBhcmdz
LkdldElzb2xhdGUoKSk7CkBAIC04OCw3ICs4OCw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUo
CiAgICAgICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBz
Y29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHJlc3VsdCA9IHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcodjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFj
ayk7CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiByZXN1bHQgPSB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KHY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2tD
dXN0b20pOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBy
ZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVs
ZENvdW50KFY4SFRNTEltYWdlRWxlbWVudDo6aW50ZXJuYWxGaWVsZENvdW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0
RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMzA4NTNkYzhiNDVhYWU0YzgxZmMyYjZkM2UzZDY0MWE1
MmU1MTEyZi4uZWMwZWNhOThlYWE1MjQwMzMwYTM5OThjM2I2MDA4YjJhNWE1MjQyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTElucHV0RWxlbWVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TElucHV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFY4SFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+CiAgICAgaW1wLT5zZXRTZWxlY3Rpb25EaXJlY3Rpb24odG9XZWJDb3JlU3RyaW5n
KHZhbHVlKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1lbnQ6
OnNldFNlbGVjdGlvblJhbmdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdl
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgSFRNTElucHV0RWxl
bWVudCogaW1wID0gVjhIVE1MSW5wdXRFbGVtZW50Ojp0b05hdGl2ZShob2xkZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNDE1NGFlNDRiYzM4NzNiNjg1ODMy
YWIzYmMzM2M2YzNmOGI0YmRhMS4uMWM0ZWRhOWVjNGU2M2NmZThmYzk0NzhjNWE4ZWYwZjAzZWQ3
ZjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC03MSw3ICs3
MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFt
ZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6CiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMo
aW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8pOwogfQogCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0
aW9uc0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBWOEhUTUxPcHRp
b25zQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSksIGFyZ3MpOwpAQCAtODIsMTQgKzgyLDE0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEhUTUxPcHRp
b25zQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOwogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBiYXNlID0gc3RhdGljX2Nhc3Q8
SFRNTFNlbGVjdEVsZW1lbnQqPihpbXAtPm93bmVyTm9kZSgpKTsKICAgICByZXR1cm4gcmVtb3Zl
RWxlbWVudChiYXNlLCBhcmdzKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uOjphZGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGRDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmICghVjhIVE1MT3B0
aW9uRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAg
ICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElz
b2xhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMDBkNTZmOWQxNjll
NzI5MDNiMTI1MmQyYzZlNjJlYjE0NTM3YmFkZi4uYjQ4ZmQyMGVmNmE0ZDIxMzI4ZTk4OGNmMDE3
NzYyMzY0MGJjNWJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNjIsNyAr
NjIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhl
ZFByb3BlcnR5U2V0dGVyKHVpbnQzMl90IGluZGV4LAogICAgIHJldHVybiB0b09wdGlvbnNDb2xs
ZWN0aW9uU2V0dGVyKGluZGV4LCB2YWx1ZSwgc2VsZWN0LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmVDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SFRNTFNlbGVjdEVsZW1lbnQ6OnJlbW92ZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGltcCA9IFY4SFRNTFNlbGVjdEVs
ZW1lbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHJldHVybiByZW1vdmVFbGVtZW50
KGltcCwgYXJncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhpc3RvcnlDdXN0b20uY3BwCmluZGV4IDhlZDY5MDQ1NmQwMmFjNjcxMzdkYTYzOGY4YjA3
NGI0ZDc2MmFkNDYuLjExMjAzMTNmMmU3ZmIyYWZlOGUzZGI4ZGNiZjA0ODYxMDNjNGNiMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhpc3RvcnlD
dXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rv
cnk6OnN0YXRlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpwdXNo
U3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SGlzdG9yeTo6cHVzaFN0YXRlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CiAgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoYXJnc1swXSwgMCwgMCwgZGlkVGhyb3csIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAg
LTc0LDcgKzc0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6cHVzaFN0YXRl
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gc2V0RE9NRXhj
ZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhpc3Rvcnk6OnJlcGxhY2VTdGF0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpyZXBsYWNlU3RhdGVDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGJvb2wgZGlkVGhyb3cg
PSBmYWxzZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCAwLCAwLCBkaWRUaHJvdywg
YXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXgg
MDc4M2QyYzYwZmQwOGY2ZDZkZDg2NTkwYzY1YzczMzFkMjJlMmIzNS4uYjI2MTY0MTYyYmVkMWU1
MDhjOWRlOThhNmYxMDU2ZWFlMzNhNzA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwCkBAIC03OSw3ICs3OSw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9k
ZUFzU2NyaXB0VmFsdWUoU2NyaXB0U3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlCiAgICAgcmV0dXJu
IFNjcmlwdFZhbHVlKHRvVjgobm9kZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBjb250ZXh0
LT5HZXRJc29sYXRlKCkpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRT
Y3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0
ZWRPYmplY3RDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
QEAgLTkyLDcgKzkyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRI
b3N0OjppbnNwZWN0ZWRPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6QXIKICAgICByZXR1cm4gb2Jq
ZWN0LT5nZXQoU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSkudjhWYWx1ZSgpOwogfQogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JO
YW1lQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWVDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTEwMyw3ICsxMDMs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFs
Q29uc3RydWN0b3JOYW1lQ2FsbGJhY2soY29ucwogICAgIHJldHVybiBhcmdzWzBdLT5Ub09iamVj
dCgpLT5HZXRDb25zdHJ1Y3Rvck5hbWUoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SW5qZWN0ZWRTY3JpcHRIb3N0Ojppc0hUTUxBbGxDb2xsZWN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0
SG9zdDo6aXNIVE1MQWxsQ29sbGVjdGlvbkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwpAQCAtMTE1LDcgKzExNSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aXNIVE1MQWxsQ29sbGVjdGlvbkNhbGxiYWNrKGNvbnN0
IHY4CiAgICAgcmV0dXJuIHY4OjpCb29sZWFuOjpOZXcoVjhIVE1MQWxsQ29sbGVjdGlvbjo6SGFz
SW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKTsKIH0KIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9z
dDo6dHlwZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpA
QCAtMTUwLDcgKzE1MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0
SG9zdDo6dHlwZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjpmdW5jdGlvbkRldGFpbHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRl
dGFpbHNDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAg
LTE4OSw3ICsxODksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhv
c3Q6OmZ1bmN0aW9uRGV0YWlsc0NhbGxiYWNrKGNvbnN0IHY4OjpBcgogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0
SW50ZXJuYWxQcm9wZXJ0aWVzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9w
ZXJ0aWVzQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBA
IC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OkFycmF5PiBnZXRKU0xpc3Rl
bmVyRnVuY3Rpb25zKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRXYKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omdl
dEV2ZW50TGlzdGVuZXJzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnND
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTI2OSw3
ICsyNjksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omdl
dEV2ZW50TGlzdGVuZXJzQ2FsbGJhY2soY29uc3Qgdjg6OgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTI4Miw3ICsyODIsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJgogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlw
dEhvc3Q6OmRhdGFiYXNlSWRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNlSWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbgogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElu
amVjdGVkU2NyaXB0SG9zdDo6c3RvcmFnZUlkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c3RvcmFn
ZUlkQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAo
YXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0z
MDYsNyArMzA2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0
OjpzdG9yYWdlSWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhv
c3Q6OmV2YWx1YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVDYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHY4OjpUaHJvd0V4Y2VwdGlvbih2ODo6RXhjZXB0aW9uOjpFcnJv
cih2ODo6U3RyaW5nOjpOZXcoIk9uZSBhcmd1bWVudCBleHBlY3RlZC4iKSkpOwpAQCAtMzIxLDcg
KzMyMSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZXZh
bHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiAgICAgcmV0dXJuIHNjcmlwdC0+UnVu
KCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0
RnVuY3Rpb25WYXJpYWJsZVZhbHVlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25W
YXJpYWJsZVZhbHVlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVuY3Rpb25WYWx1ZSA9IGFyZ3NbMF07CiAgICAg
aW50IHNjb3BlSW5kZXggPSBhcmdzWzFdLT5JbnQzMlZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCAyYmJlNGI4ODcxN2VkN2M0ZmU5NjMzN2E1NDBmMzA5
YjNhNjgxMGRkLi4zOTljZjNjMjkxNmI4ZWE4MTIyODI2MmMzYjk1MmM4MmYwMTU4NmJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9u
dGVuZEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OnBsYXRmb3JtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6cGxhdGZvcm1D
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogI2lmIGRlZmluZWQo
T1NfTUFDT1NYKQogICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1hYyIpOwpAQCAt
NjIsNyArNjIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6OnBsYXRmb3JtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZQogI2VuZGlmCiB9CiAKLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6cG9ydENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJv
bnRlbmRIb3N0Ojpwb3J0Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYpCiB7CiAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMg
dm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXModjg6OkxvY2FsPHY4OjpBcnJheT4mIGl0ZW1B
cnJheSwgQ29udGV4dE1lbgogICAgIH0KIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnVDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpzaG93Q29udGV4dE1lbnVDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKQEAgLTE0NiwxNyArMTQ2LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gaGlzdG9ncmFtRW51bWVyYXRpb24oY29uc3QgY2hhciogbmFtZSwgY29uc3Qgdjg6OkFy
CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZWNvcmRBY3Rpb25UYWtlbkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OnJlY29yZEFjdGlvblRha2VuQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gaGlzdG9ncmFtRW51bWVyYXRpb24oIkRldlRv
b2xzLkFjdGlvblRha2VuIiwgYXJncywgMTAwKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZWNvcmRQYW5lbFNob3duQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZy
b250ZW5kSG9zdDo6cmVjb3JkUGFuZWxTaG93bkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIGhpc3RvZ3JhbUVudW1lcmF0aW9uKCJEZXZUb29s
cy5QYW5lbFNob3duIiwgYXJncywgMjApOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlY29yZFNldHRpbmdDaGFuZ2VkQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZy
b250ZW5kSG9zdDo6cmVjb3JkU2V0dGluZ0NoYW5nZWRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiBoaXN0b2dyYW1FbnVtZXJhdGlvbigiRGV2
VG9vbHMuU2V0dGluZ0NoYW5nZWQiLCBhcmdzLCAxMDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZy
YW1lQ3VzdG9tLmNwcAppbmRleCA3Y2IyODllODFlOGE4Njc2ZjA0YTJhNzhhMDc1OTczZjI2ZjNh
MTUwLi5lNTY2ZGQzZWI3N2YwZWMyNjdiMzlhMTkyMWJkNDI3ODdmYmVmZDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1l
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtMzcsMjAgKzM3LDIwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFt
ZTo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVDYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUq
IGltcGwgPSBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwog
ICAgIFN0cmluZyBleHByZXNzaW9uID0gdG9XZWJDb3JlU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVs
bENoZWNrKGFyZ3NbMF0pOwogICAgIHJldHVybiBpbXBsLT5ldmFsdWF0ZShleHByZXNzaW9uKTsK
IH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFy
dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpyZXN0YXJ0Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhK
YXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICByZXR1cm4g
aW1wbC0+cmVzdGFydCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0
Q2FsbEZyYW1lOjpzZXRWYXJpYWJsZVZhbHVlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNldFZh
cmlhYmxlVmFsdWVDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGltcGwgPSBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGludCBzY29wZUluZGV4ID0gYXJnc1swXS0+SW50
MzJWYWx1ZSgpOwpAQCAtNjUsNyArNjUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZh
U2NyaXB0Q2FsbEZyYW1lOjpzY29wZUNoYWluQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPAogICAg
IHJldHVybiBpbXBsLT5zY29wZUNoYWluKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlVHlwZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpz
Y29wZVR5cGVDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IEphdmFTY3JpcHRDYWxsRnJhbWUqIGltcGwgPSBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnRvTmF0
aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGludCBzY29wZUluZGV4ID0gYXJnc1swXS0+SW50MzJW
YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IDJhMTJhZWUzN2NhZGEyYzI3ZjUzNDI1ZTFjOTBmYjlm
YzIyOWViOWUuLjQ0OTVkOGM4MjU1NWU5N2QyNGMxMDc1ODk0NjMxMDJjYTBlOWUyNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1
c3RvbS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFY4TG9jYXRpb246OnNlYXJjaEFjY2Vz
c29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6Ogogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gaW5mby5HZXRJc29sYXRlKCk7Ci0gICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0
ZSkpKSk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBw
cml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5l
dyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENh
bGxiYWNrQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlv
bjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExv
Y2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkp
IHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5m
dW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKQEAgLTE0OCw3ICsxNDgsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbQogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9O
YXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJl
cG9ydFNlY3VyaXR5RXJyb3IpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4
TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpO
ZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CisgICAgICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrQ3VzdG9tLCB2OFVu
ZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUo
aXNvbGF0ZSkpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24o
KTsKICAgICB9CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKQEAg
LTE1Nyw3ICsxNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2Fk
QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwotICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpT
aWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKKyAg
ICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1w
bGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUs
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrQ3Vz
dG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIg
PSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpH
ZXRUZW1wbGF0ZShpc29sYXRlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5k
IGl0IHNob3VsZCBwYXNzZWQKQEAgLTE2Niw3ICsxNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYQogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9s
ZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3Vy
aXR5RXJyb3IpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246
OnJlcGxhY2VDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9j
YXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2tDdXN0b20sIHY4VW5kZWZpbmVk
KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRl
KSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAg
IH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTc2LDcg
KzE3Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BY2Nlc3Nv
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiB7CiAgICAgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSBpbmZvLkdldElzb2xhdGUoKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9Ci0gICAgICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpT
aWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKKyAg
ICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFja0N1c3Rv
bSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1Rl
bXBsYXRlKGlzb2xhdGUpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
aW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBp
dCBzaG91bGQgcGFzc2VkCkBAIC0xODUsMTMgKzE4NSwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbQogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9s
ZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3Vy
aXR5RXJyb3IpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246
OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2Nh
dGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CisgICAgICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrQ3VzdG9tLCB2OFVuZGVmaW5lZCgp
LCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkp
KSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9
CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBMb2NhdGlvbiog
aW1wbCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEJpbmRpbmdT
dGF0ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CkBAIC0yMDAsNyArMjAwLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJl
cGxhY2VDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIExv
Y2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAg
QmluZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKTsKQEAgLTIxMiw3
ICsyMTIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2Nh
dGlvbjo6YXNzaWduQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBMb2NhdGlvbiogaW1wbCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogICAgIEJpbmRpbmdTdGF0ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CkBA
IC0yMjQsNyArMjI0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2ln
bkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnZhbHVlT2ZD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OnZhbHVlT2ZDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIC8vIEp1c3QgcmV0dXJuIHRoZSB0aGlzIG9iamVjdCB0aGUgd2F5IHRoZSBu
b3JtYWwgdmFsdWVPZiBmdW5jdGlvbgogICAgIC8vIG9uIHRoZSBPYmplY3QgcHJvdG90eXBlIHdv
dWxkLiAgVGhlIHZhbHVlT2YgZnVuY3Rpb24gaXMgb25seQpAQCAtMjM0LDcgKzIzNCw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjp2YWx1ZU9mQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gYXJncy5UaGlzKCk7CiB9CiAKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjp0b1N0cmluZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6dG9TdHJpbmdD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBMb2NhdGlvbiogaW1w
ID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4
IGI5ZDlhZmU3ZTE2M2E2MzJiODhiNmMxOTUxYWU5N2RiMTU3MGEyZjYuLjNiNGRkYTAzMTYyOGYx
NDEzOWU3ZjNiYjBlNTliODkxNTIzZjZhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApAQCAtMTAz
LDcgKzEwMyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6cG9ydHNB
Y2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICByZXR1cm4gcG9ydEFycmF5
OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdl
RXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gVjhN
ZXNzYWdlRXZlbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFN0cmluZyB0eXBlQXJn
ID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwpAQCAtMTMxLDkgKzEzMSw5IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVuCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojp3ZWJraXRJbml0TWVzc2FnZUV2ZW50Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgcmV0dXJuIGluaXRNZXNzYWdlRXZlbnRDYWxs
YmFjayhhcmdzKTsKKyAgICByZXR1cm4gaW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrQ3VzdG9tKGFy
Z3MpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCBjYjNhMGY2MzdjNWYxODg5NzA4Y2Ez
ODI0YzcyM2JhYjYxZjIwNWRmLi5kOWViMDJjMTE1ZjMxZGIzOTUxYTNiYWU4NzQ5NDM2NDIzYTEy
YTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZVBvcnQ6OnBvc3RNZXNz
YWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gVjhNZXNz
YWdlUG9ydDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgTWVzc2FnZVBvcnRBcnJheSBw
b3J0QXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5v
ZGVDdXN0b20uY3BwCmluZGV4IDkwNzMxMjk5NWQyNDQ5MTk3MzJjYTJmYzY1MTFiZjVkMGFkMWM3
NGIuLmQzMjRjYjM2ZWMyNDRiMmU3ZmU3NDQyZWU2MDY3Zjk0MTYxNDljNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCkBAIC02
MSw3ICs2MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoaXMgZnVuY3Rpb24gaXMg
Y3VzdG9taXplZCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgb3B0aW9uYWwgNHRoIGFyZ3VtZW50
OiBzaG91bGRMYXp5QXR0YWNoCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjppbnNlcnRC
ZWZvcmVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Tm9kZTo6aW5zZXJ0QmVmb3JlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3Mu
SG9sZGVyKCk7CiAgICAgTm9kZSogaW1wID0gVjhOb2RlOjp0b05hdGl2ZShob2xkZXIpOwpAQCAt
NzcsNyArNzcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjppbnNlcnRCZWZvcmVD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogfQogCiAvLyBUaGlzIGZ1bmN0aW9u
IGlzIGN1c3RvbWl6ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG9wdGlvbmFsIDR0aCBhcmd1
bWVudDogc2hvdWxkTGF6eUF0dGFjaAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVw
bGFjZUNoaWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOE5vZGU6OnJlcGxhY2VDaGlsZENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBh
cmdzLkhvbGRlcigpOwogICAgIE5vZGUqIGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsK
QEAgLTkyLDcgKzkyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVwbGFjZUNo
aWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjhOdWxs
KGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6
cmVtb3ZlQ2hpbGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVtb3ZlQ2hpbGRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
YXJncy5Ib2xkZXIoKTsKICAgICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRvTmF0aXZlKGhvbGRlcik7
CkBAIC0xMDcsNyArMTA3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVtb3Zl
Q2hpbGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogfQogCiAvLyBUaGlzIGZ1
bmN0aW9uIGlzIGN1c3RvbWl6ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG9wdGlvbmFsIDR0
aCBhcmd1bWVudDogc2hvdWxkTGF6eUF0dGFjaAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9k
ZTo6YXBwZW5kQ2hpbGRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6YXBwZW5kQ2hpbGRDYWxsYmFja0N1c3RvbShjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gYXJncy5Ib2xkZXIoKTsKICAgICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRvTmF0aXZlKGhvbGRl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3Rp
ZmljYXRpb25DZW50ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcAppbmRleCBkZDBhMTdkMmRhY2VhNWI3
YTU3NDVmNmIzMDQ0MGUyNjg1NDZkYjc3Li44YzMyOTIzNGE0ZTJkOTI0OGI5MTYxMWU2ZmVlZDhl
MGEyNDIyZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhO
b3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbkNlbnRl
cjo6cmVxdWVzdFBlcm1pc3Npb25DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIE5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZpY2F0aW9uQ2VudGVyID0gVjhO
b3RpZmljYXRpb25DZW50ZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBub3RpZmljYXRpb25DZW50ZXItPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwCmluZGV4IGQzMzQ0N2ViMWEyZThhZjQ4
NWI3NTQyMjZjNmI4ZjYyOWQ4NDliNmMuLjE0NDJkMjc5NDc3ZGE1ZmQzMzU4ZGY4YzAxOGI2MzE1
NzU4MjEzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5vdGlmaWNhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbjo6
cmVxdWVzdFBlcm1pc3Npb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0aW9uOjpyZXF1ZXN0UGVybWlzc2lvbkNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgYm9vbCBzdWNjZWVk
ZWQgPSBmYWxzZTsKICAgICBSZWZQdHI8VjhOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+
IGNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhOb3RpZmljYXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2s+KGFyZ3NbMF0sIHN1Y2NlZWRlZCwgYXJncy5HZXRJc29sYXRlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAppbmRleCBiMjAzNDg4ZDAyNWUwZWVkZjUw
ODljYTBiMjZhY2EzYzA2ZmVkN2JhLi5mNmIxOGUzNDExMzczMjY0MzE2OTZmOTRhOGVhZmM0NGQ0
NGUwMDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
UUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcApAQCAtMzgsNyArMzgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNR
TFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbUNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKCFhcmdzLkxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRheEVycm9yLCAiSXRlbSBp
bmRleCBpcyByZXF1aXJlZC4iLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3Rv
bS5jcHAKaW5kZXggY2QzYzczNzdkOGNiOTEzZGI1Mzc3MWRjYWQwNDJmNTEwZmE4ZjdhZC4uNmJh
NzFjODM5MGE2OWUwOGYzMDk5NWRjZGI4MjkxZjMwMDUxMjAxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3Vz
dG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uOjpl
eGVjdXRlU3FsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAwKQog
ICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNR
TFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCmluZGV4IDY2ZmRkOTA4MTU2Zjcy
NTRhZDJmZTI3OTc1ZWViNWU0YTgwNDM2NGIuLmQ3OWY4M2Y1MDk5YjJiZTY1ZTE5MDEyMzBjODI2
OWY5ZTJkZmQ0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhT
UUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIGlmICghYXJncy5MZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
IHNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9t
LmNwcAppbmRleCAyZjcyYWUzYWMwNDE3MzExMDA5MjBkNDI2ODNlYTVkMzJjYjlhOTYyLi4yOTUy
YTkxY2VkNjQxMDhlYmFjZjZhZmI0MTM0MzEzY2JiZjZhZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAKQEAg
LTc1LDcgKzc1LDcgQEAgdm9pZCBWOFNWR0xlbmd0aDo6dmFsdWVBY2Nlc3NvclNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjoKICAgICAgICAgd3JhcHBlci0+
Y29tbWl0Q2hhbmdlKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNWR0xlbmd0aDo6
Y29udmVydFRvU3BlY2lmaWVkVW5pdHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRV
bml0c0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgU1ZH
UHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aD4qIHdyYXBwZXIgPSBWOFNWR0xlbmd0aDo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaWYgKHdyYXBwZXItPmlzUmVhZE9ubHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGFiYzg1NzQ2MTk3Y2IzOTA4MDRm
MDY4MzZiOTE4NzE0N2RkYjQzMTQuLmNjMjIxZDY3NDNlNzdhYmE5Y2I5M2FkZmU2Njc2NGQ1NDY4
ZTUzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMjcwLDcg
KzI3MCw3IEBAIGVudW0gV2hpY2hQcm9ncmFtQ2FsbCB7CiAgICAga1Byb2dyYW1QYXJhbWV0ZXIs
IGtVbmlmb3JtCiB9OwogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEF0dGFjaGVkU2hhZGVyc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0
dGFjaGVkU2hhZGVyc0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0yOTQsMTIgKzI5NCwxMiBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFj
aGVkU2hhZGVyc0NhbGxiYWNrKGNvbnN0CiAgICAgcmV0dXJuIGFycmF5OwogfQogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRl
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlckNhbGxiYWNrQ3Vz
dG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIGdldE9iamVjdFBh
cmFtZXRlcihhcmdzLCBrQnVmZmVyKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRFeHRlbnNpb25DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogaW1wID0gVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
QEAgLTMwOSw3ICszMDksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcgogICAgIHJldHVybiB0
b1Y4T2JqZWN0KGV4dGVuc2lvbiwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwog
fQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMykKICAgICAgICAg
cmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpA
QCAtMzI1LDcgKzMyNSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyCiAgICAgcmV0dXJuIHRv
VjhPYmplY3QoaW5mbywgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRl
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMSkK
ICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29s
YXRlKCkpOwpAQCAtMzM5LDcgKzMzOSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyCiAgICAg
cmV0dXJuIHRvVjhPYmplY3QoaW5mbywgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkp
OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFByb2dyYW1QYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFy
YW1ldGVyQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSAhPSAyKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0zNTYsMTIgKzM1NiwxMiBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJh
bWV0ZXJDYWxsYmFjayhjb25zdAogICAgIHJldHVybiB0b1Y4T2JqZWN0KGluZm8sIGFyZ3MuSG9s
ZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0
ZXIoYXJncywga1JlbmRlcmJ1ZmZlcik7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAyKQogICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0z
NzgsNyArMzc4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXJDYWxsYmFjayhjb25zdAogICAgIHJldHVybiB0b1Y4T2Jq
ZWN0KGluZm8sIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRl
bnNpb25zQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9uc0Nh
bGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiBpbXAgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAgICAgaWYgKGltcC0+aXNDb250ZXh0TG9zdCgpKQpAQCAtMzkxLDEyICsz
OTEsMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRTdXBwb3J0ZWRFeHRlbnNpb25zQ2FsbGJhY2soY28KICAgICByZXR1cm4gYXJyYXk7CiB9CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFy
YW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gZ2V0T2JqZWN0
UGFyYW1ldGVyKGFyZ3MsIGtUZXh0dXJlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VW5pZm9ybUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtNDE4LDcgKzQxOCw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9y
bUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1CiAgICAgcmV0dXJuIHRvVjhPYmplY3QoaW5mbywgYXJn
cy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBrVmVy
dGV4QXR0cmliKTsKIH0KQEAgLTU4OCw0MiArNTg4LDQyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdW5pZm9ybUhlbHBlcmkoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywKICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtMWZ2Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1VuaWZvcm0xdik7
CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTFpdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXZDYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiB1bmlmb3JtSGVscGVy
aShhcmdzLCBrVW5pZm9ybTF2KTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTJmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
cmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtVbmlmb3JtMnYpOwog
fQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0yaXZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2Q2FsbGJhY2tDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmko
YXJncywga1VuaWZvcm0ydik7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0zZnZDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJl
dHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVW5pZm9ybTN2KTsKIH0K
IAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
M2l2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdkNhbGxiYWNrQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHVuaWZvcm1IZWxwZXJpKGFy
Z3MsIGtVbmlmb3JtM3YpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm00ZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
NGZ2Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1
cm4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1VuaWZvcm00dik7CiB9CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRp
dkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXZDYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiB1bmlmb3JtSGVscGVyaShhcmdz
LCBrVW5pZm9ybTR2KTsKIH0KQEAgLTY4OSwzNyArNjg5LDM3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdW5pZm9ybU1hdHJpeEhlbHBlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
LAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJmdkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnZDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiB1bmlmb3JtTWF0cml4SGVscGVyKGFyZ3MsIDIp
OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaXgzZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4M2Z2
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4g
dW5pZm9ybU1hdHJpeEhlbHBlcihhcmdzLCAzKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHVuaWZvcm1NYXRyaXhIZWxwZXIoYXJncywgNCk7
CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVy
dGV4QXR0cmliMWZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMWZ2Q2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdmVy
dGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1ZlcnRleEF0dHJpYjF2KTsKIH0KIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWIyZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIyZnZDYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiB2ZXJ0ZXhBdHRy
aWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVmVydGV4QXR0cmliMnYpOwogfQogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjNmdkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjNmdkNhbGxiYWNrQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVu
aWZvcm1IZWxwZXJmKGFyZ3MsIGtWZXJ0ZXhBdHRyaWIzdik7CiB9CiAKLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliNGZ2Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliNGZ2Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhl
bHBlcmYoYXJncywga1ZlcnRleEF0dHJpYjR2KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5k
ZXggYTEzYzU3Zjk1MjI2YjNkNmM1MmIzNzc1YmU5ODQxZWRhMTQ4NmRmOS4uOGM4ZjczMTJjNTk4
NzhjNGFhMTEzNzhhMTZjZmFkZTBhOGJkYjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAg
LTkwLDcgKzkwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPckludGVydmFs
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKICAgICByZXR1cm4gdjhJbnRl
Z2VyKHRpbWVySWQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjppbXBv
cnRTY3JpcHRzQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBA
IC0xMTQsMTIgKzExNCwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0
OjppbXBvcnRTY3JpcHRzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRl
eHQ6OnNldFRpbWVvdXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6c2V0VGltZW91dENhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIFNldFRpbWVvdXRPcklu
dGVydmFsKGFyZ3MsIHRydWUpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJD
b250ZXh0OjpzZXRJbnRlcnZhbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpzZXRJbnRlcnZhbENhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIFNldFRpbWVv
dXRPckludGVydmFsKGFyZ3MsIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwCmluZGV4IDBhYWMzYzEwNmU1MjY1
YzBmMjdhNTdkNGJkNzNlZjBkMzNhZTk1YjQuLjQ5MGYyOWQyZjgyZWViMmE4MTEyMzliZWU1NjEw
ZmExZjQ2YzBkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdvcmtlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V29ya2VyQ3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlcjo6cG9zdE1lc3NhZ2VDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V29ya2VyOjpwb3N0TWVzc2FnZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgV29ya2VyKiB3b3JrZXIgPSBWOFdvcmtlcjo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CiAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNw
cAppbmRleCA3ZTIxZjA0ZGQ5YzI3YTYzNDBjOTEzYjllZDg2NmM4MzQwZWUyYzk0Li40YmZmZDZl
MGE4N2RmNjhjMWFkMTQzMmY0MzkyNDZhODQ0NTdjMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20u
Y3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRw
UmVxdWVzdDo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6b3BlbkNhbGxiYWNrQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgLy8gRm91ciBjYXNlczoKICAgICAvLyBvcGVu
KG1ldGhvZCwgdXJsKQpAQCAtMTY0LDcgKzE2NCw3IEBAIHN0YXRpYyBib29sIGlzRG9jdW1lbnRU
eXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAg
ICAgcmV0dXJuIFY4RG9jdW1lbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKSB8fCBWOEhU
TUxEb2N1bWVudDo6SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUpOwogfQogCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6c2VuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6c2Vu
ZENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgWE1MSHR0
cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gVjhYTUxIdHRwUmVxdWVzdDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKaW5kZXggYjViMjA4OTdlYTQ1NTUx
MmNjMmYxY2JmNzQ1YjMyYjZhYTBmYzkxYy4uNDBjNTkwMTNiZTAwYThiNDM5NTYxMmNmOTM0MjY5
ZDFmNjk5MmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vz
c29yOjpzZXRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoaXNVbmRlZmluZWRP
ck51bGwoYXJnc1sxXSkgfHwgaXNVbmRlZmluZWRPck51bGwoYXJnc1syXSkpCiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC02Myw3ICs2Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6Omdl
dFBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwpAQCAtNzksNyArNzksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xU
UHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAg
IHJldHVybiB2OFN0cmluZyhyZXN1bHQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFyYW1ldGVyQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQ
cm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pKQogICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4
IGQ5M2NmNzM4ZjNiZTM1ZTk4ZDUyMWMzNzkzMGJiYjZiNGU3ODg3ZTguLjRlMzZiYWE0MjI4OWZm
YzcyMDlkYjhjMTk0NTdjOTdhODIzNTMxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwK
QEAgLTE4MCw4ICsxODAsNiBAQAogCiAgICAgLy8gY3Jvc3MtZG9jdW1lbnQgbWVzc2FnaW5nCiAj
aWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCi0g
ICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBET01TdHJpbmcgdGFyZ2V0T3JpZ2luKQotICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICBbRG9Ob3RDaGVja1NlY3VyaXR5LCBDdXN0
b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1lc3NhZ2UsIGlu
IERPTVN0cmluZyB0YXJnZXRPcmlnaW4sIGluIEFycmF5IG1lc3NhZ2VQb3J0cykKICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188258</attachid>
            <date>2013-02-13 21:37:37 -0800</date>
            <delta_ts>2013-02-13 22:19:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109678-20130214143404.patch</filename>
            <type>text/plain</type>
            <size>96782</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQ0YTE5NGZhOWEzZTM2
MmRhMmY0YTVlYjUxYTEwMTM1MzQ2Yjc5Yy4uZDc5ODVhYjk0ZWI5ODAwNDgwNjRkNDE3ZDhhZGQw
Yjg2NGY3N2MyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxMCBAQAogMjAxMy0wMi0xMyAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW1Y4XSBHZW5lcmF0
ZSB3cmFwcGVyIG1ldGhvZHMgZm9yIGN1c3RvbSBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk2NzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgVjggZGlyZWN0bHkgY2FsbHMg
YmFjayBjdXN0b20gbWV0aG9kcyB3cml0dGVuCisgICAgICAgIGluIGN1c3RvbSBiaW5kaW5nIGZp
bGVzLiBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgZm9yIGNvZGUKKyAgICAgICAgZ2VuZXJhdG9y
cyB0byBob29rIGN1c3RvbSBtZXRob2RzIChlLmcuIENvZGUgZ2VuZXJhdG9ycyBjYW5ub3QKKyAg
ICAgICAgaW5zZXJ0IGEgY29kZSBmb3IgRmVhdHVyZU9ic2VydmF0aW9uIGludG8gY3VzdG9tIG1l
dGhvZHMpLgorICAgICAgICBUbyBzb2x2ZSB0aGUgcHJvYmxlbSwgd2Ugc2hvdWxkIGdlbmVyYXRl
IHdyYXBwZXIgbWV0aG9kcyBmb3IKKyAgICAgICAgY3VzdG9tIG1ldGhvZHMuCisKKyAgICAgICAg
Tm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDogUmVtb3ZlZCBvdmVybG9hZGVkIG1ldGhvZHMuIFRoZSBmYWN0IHRoYXQgbWV0aG9k
cyBpbiBhbiBJREwKKyAgICAgICAgZmlsZSBhcmUgb3ZlcmxvYWRlZCBidXQgdGhleSBhcmUgbm90
IG92ZXJsb2FkZWQgaW4gY3VzdG9tIGJpbmRpbmdzIGNvbmZ1c2VzIGNvZGUKKyAgICAgICAgZ2Vu
ZXJhdG9ycy4gKEZvciBzb21lIHJlYXNvbiwgdGhpcyBwcm9ibGVtIGhhc24ndCBhcHBlYXJlZCBi
ZWZvcmUgdGhpcyBjaGFuZ2UuKQorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5pZGw6IERp
dHRvLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06Cisg
ICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZURvbWFpblNhZmVGdW5j
dGlvbkdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayk6Cisg
ICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOb25T
dGFuZGFyZEZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1ldGhv
ZDNDYWxsYmFjayk6CisgICAgICAgIChUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjdXN0b21NZXRob2RD
YWxsYmFjayk6CisgICAgICAgIChUZXN0T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2xhc3NNZXRob2QyQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPYmpU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5o
OgorICAgICAgICAoVjhUZXN0T2JqKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhD
bGlwYm9hcmRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlwYm9hcmQ6OmNsZWFy
RGF0YUNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJkOjpzZXRE
cmFnSW1hZ2VDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q29uc29sZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnRyYWNlQ2Fs
bGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhDb25zb2xlOjphc3NlcnRDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVDYWxsYmFja0N1
c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVFbmRDYWxsYmFja0N1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4Q3J5cHRvOjpnZXRSYW5kb21WYWx1ZXNDYWxsYmFja0N1c3Rv
bSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6YXBwZW5kQ2FsbGJhY2tDdXN0b20p
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVy
Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnBvc3RNZXNz
YWdlQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnRvU3Ry
aW5nQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnJlbGVh
c2VFdmVudHNDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6
Y2FwdHVyZUV2ZW50c0NhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2lu
ZG93OjpzaG93TW9kYWxEaWFsb2dDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdpbmRvdzo6b3BlbkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93OjpzZXRUaW1lb3V0Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01XaW5kb3c6OnNldEludGVydmFsQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0
YVZpZXc6OmdldEludDhDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFW
aWV3OjpnZXRVaW50OENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YVZp
ZXc6OnNldEludDhDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3
OjpzZXRVaW50OENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
RGVkaWNhdGVkV29ya2VyQ29udGV4dDo6cG9zdE1lc3NhZ2VDYWxsYmFja0N1c3RvbSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2
ZW50Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmlj
ZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudENhbGxiYWNrQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERvY3VtZW50OjpldmFsdWF0ZUNhbGxiYWNrQ3VzdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdENhbGxiYWNrQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb25DYWxs
YmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0
aW9uQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEFsbENvbGxl
Y3Rpb246Oml0ZW1DYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxBbGxD
b2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrQ3VzdG9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTENhbGxiYWNrQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OndyaXRlQ2FsbGJhY2tDdXN0b20p
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OndyaXRlbG5DYWxsYmFja0N1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6b3BlbkNhbGxiYWNrQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFu
Z2VDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2tDdXN0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZENhbGxiYWNrQ3VzdG9tKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmVDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhpc3Rvcnk6OnB1c2hTdGF0ZUNhbGxiYWNrQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9yeTo6cmVwbGFjZVN0YXRlQ2FsbGJhY2tDdXN0
b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVj
dGVkT2JqZWN0Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNj
cmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lQ2FsbGJhY2tDdXN0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmlzSFRNTEFsbENvbGxlY3Rpb25DYWxs
YmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6dHlw
ZUNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0
OjpmdW5jdGlvbkRldGFpbHNDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOElu
amVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzQ2FsbGJhY2tDdXN0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJz
Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6
Omluc3BlY3RDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2Ny
aXB0SG9zdDo6ZGF0YWJhc2VJZENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
SW5qZWN0ZWRTY3JpcHRIb3N0OjpzdG9yYWdlSWRDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVDYWxsYmFja0N1c3RvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25WYXJpYWJs
ZVZhbHVlQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
c3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6cGxhdGZvcm1DYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6cG9ydENhbGxiYWNrQ3VzdG9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnVDYWxs
YmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6
cmVjb3JkQWN0aW9uVGFrZW5DYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOElu
c3BlY3RvckZyb250ZW5kSG9zdDo6cmVjb3JkUGFuZWxTaG93bkNhbGxiYWNrQ3VzdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZWNvcmRTZXR0aW5nQ2hh
bmdlZENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SmF2YVNjcmlw
dENhbGxGcmFtZTo6ZXZhbHVhdGVDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpW
OEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnRDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWVDYWxsYmFja0N1
c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlVHlw
ZUNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3Nv
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZXBsYWNlQWNjZXNzb3JH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2tDdXN0b20p
OgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrQ3VzdG9tKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrQ3VzdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnZhbHVlT2ZDYWxsYmFja0N1c3RvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjp0b1N0cmluZ0NhbGxiYWNrQ3VzdG9tKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFja0N1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VF
dmVudENhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VQb3J0Ojpwb3N0
TWVzc2FnZUNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhO
b2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9kZTo6aW5zZXJ0QmVmb3JlQ2Fs
bGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlOjpyZXBsYWNlQ2hpbGRDYWxs
YmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOE5vZGU6OnJlbW92ZUNoaWxkQ2FsbGJh
Y2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlOjphcHBlbmRDaGlsZENhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50
ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOb3RpZmljYXRpb25DZW50ZXI6OnJl
cXVlc3RQZXJtaXNzaW9uQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5vdGlm
aWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb25DYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFNRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW1DYWxsYmFja0N1c3RvbSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmND
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1
dGVTcWxDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZH
TGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4U1ZHTGVuZ3RoOjpjb252ZXJ0
VG9TcGVjaWZpZWRVbml0c0NhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVyc0NhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZm
ZXJQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlckNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyQ2FsbGJhY2tDdXN0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnNDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1DYWxsYmFja0N1c3RvbSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0
cmliQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0xZnZDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2Q2FsbGJhY2tDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0y
aXZDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTNmdkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAo
V2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnZDYWxsYmFja0N1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRp
dkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnZDYWxsYmFja0N1c3RvbSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJp
eDRmdkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZnZDYWxsYmFja0N1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2Q2FsbGJhY2tDdXN0b20p
OgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJp
YjNmdkNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWI0ZnZDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxsYmFja0N1c3RvbSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVvdXRDYWxsYmFja0N1c3RvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6OnNldEludGVydmFsQ2FsbGJhY2tDdXN0
b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFdvcmtlcjo6cG9zdE1lc3NhZ2VDYWxsYmFja0N1c3RvbSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6b3BlbkNhbGxiYWNrQ3VzdG9tKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFja0N1c3RvbSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlckNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4WFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVy
Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhYU0xUUHJvY2Vzc29yOjpyZW1v
dmVQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbSk6CisKKzIwMTMtMDItMTMgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtWOF0gR2VuZXJhdGUgd3JhcHBlciBt
ZXRob2RzIGZvciBjdXN0b20gZ2V0dGVycy9zZXR0ZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk2NjYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAxYWNhZmI3MzBjZmMy
NTRlYzM5ZmZjMDQyMzUwMTNmYWZlMjFlOWE4Li41OTJkYjJmMDZkNWQxMGRmNjczNmFkNzZmZDFi
MjdhZGIyY2M0YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzk4LDcgKzM5OCw3IEBAIEVORAogICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1DYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJik7CiBFTkQKICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtNzkxLDggKzc5MSw3IEBAIHN1YiBHZW5lcmF0ZURv
bWFpblNhZmVGdW5jdGlvbkdldHRlcgogICAgICAgICAkc2lnbmF0dXJlID0gInY4OjpMb2NhbDx2
ODo6U2lnbmF0dXJlPigpIjsKICAgICB9CiAKLSAgICBteSAkY2FsbGJhY2sgPSBHZXRGdW5jdGlv
blRlbXBsYXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGludGVyZmFjZU5hbWUpOwotICAgIG15
ICRuZXdUZW1wbGF0ZVN0cmluZyA9ICJ2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCRjYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgJHNpZ25hdHVyZSkiOworICAgIG15ICRuZXdUZW1wbGF0ZVN0cmlu
ZyA9ICJ2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFs
Ojoke2Z1bmNOYW1lfUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCAkc2lnbmF0dXJlKSI7CiAKICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIpOwogICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsIDw8RU5EKTsKQEAgLTEzNzAsMzcgKzEzNjksMzUgQEAgRU5ECiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CiB9CiAKLXN1YiBHZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1l
CitzdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbGJhY2sKIHsKLSAgICBteSAkZnVuY3Rpb24g
PSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwotCisgICAgbXkgJHJlcXVp
cmVzSGlkZGVuRGVwZW5kZW5jeSA9IHNoaWZ0OworICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0Owog
ICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgbXkgJGxvb2t1
cFR5cGUgPSAoJG5hbWUgZXEgImFkZEV2ZW50TGlzdGVuZXIiKSA/ICJPckNyZWF0ZSIgOiAiT25s
eSI7CisgICAgbXkgJHBhc3NSZWZQdHJIYW5kbGluZyA9ICgkbmFtZSBlcSAiYWRkRXZlbnRMaXN0
ZW5lciIpID8gIiIgOiAiLmdldCgpIjsKKyAgICBteSAkaGlkZGVuRGVwZW5kZW5jeUFjdGlvbiA9
ICgkbmFtZSBlcSAiYWRkRXZlbnRMaXN0ZW5lciIpID8gImNyZWF0ZSIgOiAicmVtb3ZlIjsKIAor
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEV2ZW50TGlzdGVuZXJMaXN0LmgiKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
ICR7bmFtZX1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworRU5ECiAgICAg
aWYgKEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKSkgewotICAgICAgICByZXR1cm4gIlY4JHtpbnRlcmZhY2VOYW1lfTo6JHtuYW1lfUNhbGxi
YWNrIjsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gIiR7aW50ZXJmYWNlTmFtZX1WOElu
dGVybmFsOjoke25hbWV9Q2FsbGJhY2siOwotICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgPDxFTkQpOworICAgIHJldHVybiBWOCR7aW50ZXJmYWNlTmFtZX06OiR7bmFtZX1D
YWxsYmFja0N1c3RvbShhcmdzKTsKIH0KIAotc3ViIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGxi
YWNrCi17Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkcmVxdWlyZXNI
aWRkZW5EZXBlbmRlbmN5ID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uTmFtZSA9IHNoaWZ0Owot
ICAgIG15ICRsb29rdXBUeXBlID0gKCRmdW5jdGlvbk5hbWUgZXEgImFkZCIpID8gIk9yQ3JlYXRl
IiA6ICJPbmx5IjsKLSAgICBteSAkcGFzc1JlZlB0ckhhbmRsaW5nID0gKCRmdW5jdGlvbk5hbWUg
ZXEgImFkZCIpID8gIiIgOiAiLmdldCgpIjsKLSAgICBteSAkaGlkZGVuRGVwZW5kZW5jeUFjdGlv
biA9ICgkZnVuY3Rpb25OYW1lIGVxICJhZGQiKSA/ICJjcmVhdGUiIDogInJlbW92ZSI7CitFTkQK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEV2ZW50
TGlzdGVuZXJMaXN0LmgiKTsKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci1z
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewogICAgIFJlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciA9IFY4RXZlbnRMaXN0ZW5lckxpc3Q6OmdldEV2ZW50TGlzdGVuZXIo
YXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmluZCR7bG9va3VwVHlwZX0pOwogICAgIGlmIChsaXN0
ZW5lcikgewogICAgICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5n
UmVzb3VyY2U8V2l0aE51bGxDaGVjaz4sIHN0cmluZ1Jlc291cmNlLCBhcmdzWzBdKTsKLSAgICAg
ICAgVjgke2ludGVyZmFjZU5hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+JHtmdW5jdGlv
bk5hbWV9RXZlbnRMaXN0ZW5lcihzdHJpbmdSZXNvdXJjZSwgbGlzdGVuZXIke3Bhc3NSZWZQdHJI
YW5kbGluZ30sIGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpKTsKKyAgICAgICAgVjgke2ludGVyZmFj
ZU5hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+JHtuYW1lfShzdHJpbmdSZXNvdXJjZSwg
bGlzdGVuZXIke3Bhc3NSZWZQdHJIYW5kbGluZ30sIGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpKTsK
IEVORAogICAgIGlmICgkcmVxdWlyZXNIaWRkZW5EZXBlbmRlbmN5KSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKQEAgLTE1NDMsMTAgKzE1NDAsMTAgQEAgc3ViIEdl
bmVyYXRlRnVuY3Rpb25DYWxsYmFjawogICAgICMgYnV0IHRoZXkgYXJlIGV4dHJlbWVseSBjb25z
aXN0ZW50IGFjcm9zcyB0aGUgdmFyaW91cyBpbnRlcmZhY2VzIHRoYXQgdGFrZSBldmVudCBsaXN0
ZW5lcnMsCiAgICAgIyBzbyB3ZSBjYW4gZ2VuZXJhdGUgdGhlbSBhcyBhICJzcGVjaWFsIGNhc2Ui
LgogICAgIGlmICgkbmFtZSBlcSAiYWRkRXZlbnRMaXN0ZW5lciIpIHsKLSAgICAgICAgR2VuZXJh
dGVFdmVudExpc3RlbmVyQ2FsbGJhY2soJGludGVyZmFjZU5hbWUsICEkY29kZUdlbmVyYXRvci0+
SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIk5vZGUiKSwgImFkZCIpOworICAgICAgICBH
ZW5lcmF0ZUV2ZW50TGlzdGVuZXJDYWxsYmFjaygkaW50ZXJmYWNlTmFtZSwgISRjb2RlR2VuZXJh
dG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiTm9kZSIpLCAkZnVuY3Rpb24pOwog
ICAgICAgICByZXR1cm47CiAgICAgfSBlbHNpZiAoJG5hbWUgZXEgInJlbW92ZUV2ZW50TGlzdGVu
ZXIiKSB7Ci0gICAgICAgIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKCRpbnRlcmZhY2VO
YW1lLCAhJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNlKCRpbnRlcmZhY2UsICJOb2Rl
IiksICJyZW1vdmUiKTsKKyAgICAgICAgR2VuZXJhdGVFdmVudExpc3RlbmVyQ2FsbGJhY2soJGlu
dGVyZmFjZU5hbWUsICEkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFj
ZSwgIk5vZGUiKSwgJGZ1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU1
OCw2ICsxNTU1LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCBHZW5lcmF0ZUZlYXR1cmVPYnNlcnZhdGlvbigkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4TWVhc3VyZUFzIn0pKTsKIAorICAgIGlmIChIYXNDdXN0
b21NZXRob2QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKKyAg
ICAgICAgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgPDxFTkQpOworICAgIHJldHVybiAke3Y4SW50ZXJmYWNlTmFtZX06
OiR7bmFtZX1DYWxsYmFja0N1c3RvbShhcmdzKTsKK30KKworRU5ECisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRmdW5jdGlvbiwg
JGludGVyZmFjZSkpOwogCiAgICAgaWYgKCRuYW1lIGVxICJzZXQiIGFuZCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9KSB7CkBAIC0yNDI4LDkgKzI0MzYsNiBA
QCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiAgICAvLyBDdXN0b20gU2lnbmF0
dXJlICckbmFtZSdcbiIsIENyZWF0ZUN1c3RvbVNpZ25hdHVyZSgkZnVuY3Rpb24pKTsKICAgICB9
CiAKLSAgICAjIE5vcm1hbCBmdW5jdGlvbiBjYWxsIGlzIGEgdGVtcGxhdGUKLSAgICBteSAkY2Fs
bGJhY2sgPSBHZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGludGVy
ZmFjZU5hbWUpOwotCiAgICAgaWYgKCRwcm9wZXJ0eV9hdHRyaWJ1dGVzIGVxICJ2ODo6RG9udERl
bGV0ZSIpIHsKICAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgPSAiIjsKICAgICB9IGVsc2Ug
ewpAQCAtMjQ0Myw5ICsyNDQ4LDcgQEAgRU5ECiAKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNp
Z25hdHVyZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLQotICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICR7Y29uZGl0aW9uYWx9JHRlbXBsYXRlLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKFwi
JG5hbWVcIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoJGNhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCAke3NpZ25hdHVyZX0pJHByb3BlcnR5X2F0dHJpYnV0ZXMpO1xuIik7Ci0KKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2NvbmRpdGlvbmFsfSR0ZW1wbGF0ZS0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbChcIiRuYW1lXCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCR7aW50
ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksICR7
c2lnbmF0dXJlfSkkcHJvcGVydHlfYXR0cmlidXRlcyk7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwogfQogCkBAIC0yNzY3LDEyICsyNzcwLDkgQEAgRU5ECiAgICAgbXkgJG5lZWRzRG9t
YWluU2FmZUZ1bmN0aW9uU2V0dGVyID0gMDsKICAgICAjIEdlbmVyYXRlIG1ldGhvZHMgZm9yIGZ1
bmN0aW9ucy4KICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlv
bnN9KSB7Ci0gICAgICAgIG15ICRpc0N1c3RvbSA9IEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKLSAgICAgICAgaWYgKCEkaXNDdXN0b20p
IHsKLSAgICAgICAgICAgIEdlbmVyYXRlRnVuY3Rpb25DYWxsYmFjaygkZnVuY3Rpb24sICRpbnRl
cmZhY2UpOwotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMSAm
JiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA9PSBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319
KSB7Ci0gICAgICAgICAgICAgICAgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjaygk
ZnVuY3Rpb24sICRpbnRlcmZhY2UpOwotICAgICAgICAgICAgfQorICAgICAgICBHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbGJhY2soJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKKyAgICAgICAgaWYgKCRmdW5j
dGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA9
PSBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319KSB7CisgICAgICAgICAgICBHZW5lcmF0ZU92ZXJs
b2FkZWRGdW5jdGlvbkNhbGxiYWNrKCRmdW5jdGlvbiwgJGludGVyZmFjZSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgIml0ZW0iKSB7CkBA
IC0yNzkxLDcgKzI3OTEsNyBAQCBFTkQKICAgICAgICAgIyBnZW5lcmF0ZSBhbiBhY2Nlc3MgZ2V0
dGVyIHRoYXQgcmV0dXJucyBkaWZmZXJlbnQgZnVuY3Rpb24gb2JqZWN0cwogICAgICAgICAjIGZv
ciBkaWZmZXJlbnQgY2FsbGluZyBjb250ZXh0LgogICAgICAgICBpZiAoKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gfHwgKCRpbnRlcmZhY2VOYW1lIGVx
ICJET01XaW5kb3ciKSkgJiYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSkgewotICAgICAgICAgICAgaWYgKCEkaXNDdXN0b20g
fHwgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gMSkgeworICAgICAgICAgICAgaWYgKCFI
YXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykg
fHwgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gMSkgewogICAgICAgICAgICAgICAgIEdl
bmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyKCRmdW5jdGlvbiwgJGludGVyZmFjZU5hbWUp
OwogICAgICAgICAgICAgICAgICRuZWVkc0RvbWFpblNhZmVGdW5jdGlvblNldHRlciA9IDE7CiAg
ICAgICAgICAgICB9CkBAIC0yODYwLDExICsyODYwLDEwIEBAIEVORAogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVk
Q2FsbGJhY2sgJHt2OEludGVyZmFjZU5hbWV9Q2FsbGJhY2tzW10gPSB7XG4iKTsKICAgICAgICAg
fQogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwotICAgICAg
ICBteSAkY2FsbGJhY2sgPSBHZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlv
biwgJGludGVyZmFjZU5hbWUpOwogICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVy
ZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8
PEVORCk7Ci0gICAgeyIkbmFtZSIsICRjYWxsYmFja30sCisgICAgeyIkbmFtZSIsICR7aW50ZXJm
YWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9Q2FsbGJhY2t9LAogRU5ECiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAg
ICRudW1fY2FsbGJhY2tzKys7CkBAIC0zMTg1LDkgKzMxODQsOCBAQCBFTkQKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiAke2VuYWJsZUZ1bmN0aW9ufShz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkge1xuIik7CiAgICAgICAgICAgICBteSAk
bmFtZSA9ICRydW50aW1lRnVuYy0+c2lnbmF0dXJlLT5uYW1lOwotICAgICAgICAgICAgbXkgJGNh
bGxiYWNrID0gR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxiYWNrTmFtZSgkcnVudGltZUZ1bmMsICRp
bnRlcmZhY2VOYW1lKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0g
ICAgICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCIke25hbWV9IiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoJHtjYWxsYmFja30sIHY4VW5kZWZpbmVkKCksIGRlZmF1bHRT
aWduYXR1cmUpLT5HZXRGdW5jdGlvbigpKTsKKyAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woIiR7bmFtZX0iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygke2ludGVy
ZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtuYW1lfUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZh
dWx0U2lnbmF0dXJlKS0+R2V0RnVuY3Rpb24oKSk7CiBFTkQKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
ZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggMWRhOTMyY2I0MWFlMDVkNmNmMjc5MTk5ZjEzOWFl
NDZlZjM2MTUzNi4uMTE4OGIzNzUwNzNiYTNhZjRmZDJkMzMyOGYxZDhmMGU1MTY2MTM1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTIwNSw2ICsyMDUsMTUgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXIKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDNDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIHJldHVybiBWOFRlc3RJbnRl
cmZhY2U6OnN1cHBsZW1lbnRhbE1ldGhvZDNDYWxsYmFja0N1c3RvbShhcmdzKTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0
aG9kNCgpOwpAQCAtMjQ3LDcgKzI1Niw3IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRp
b246OkJhdGNoZWRDYWxsYmFjayBWOFRlc3RJbnRlcmZhY2VDYWxsYmFja3NbXSA9IHsKICAgICB7
InN1cHBsZW1lbnRhbE1ldGhvZDEiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVu
dGFsTWV0aG9kMUNhbGxiYWNrfSwKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQotICAgIHsic3VwcGxlbWVudGFsTWV0aG9kMyIsIFY4VGVzdElu
dGVyZmFjZTo6c3VwcGxlbWVudGFsTWV0aG9kM0NhbGxiYWNrfSwKKyAgICB7InN1cHBsZW1lbnRh
bE1ldGhvZDMiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kM0Nh
bGxiYWNrfSwKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCBlMTg5NjE3ZTI5ZDNlNzEzMGY5
NTAzODNmZjAxZDdkMjE4OWRlNDI5Li42YzZlYWE2YjgxZWFlZTY2YzA0MzUyY2Y5NjZiN2RmMjg1
ZTc4ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTExOCw2ICsxMTE4LDE3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyCiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRl
KCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1c3RvbU1ldGhvZENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgRmVhdHVyZU9ic2VydmVyOjpv
YnNlcnZlKGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpLCBGZWF0dXJl
T2JzZXJ2ZXI6OkN1c3RvbVRlc3RGZWF0dXJlKTsKKyAgICByZXR1cm4gVjhUZXN0T2JqOjpjdXN0
b21NZXRob2RDYWxsYmFja0N1c3RvbShhcmdzKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjdXN0b21NZXRob2RXaXRoQXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit7CisgICAgcmV0dXJuIFY4VGVzdE9iajo6Y3VzdG9tTWV0aG9kV2l0aEFyZ3NDYWxs
YmFja0N1c3RvbShhcmdzKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhZGRF
dmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOEV2ZW50TGlzdGVuZXJMaXN0OjpnZXRF
dmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRPckNyZWF0ZSk7CkBAIC0x
NTk5LDYgKzE2MTAsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhv
ZFdpdGhPcHRpb25hbENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICByZXR1cm4gdjhJ
bnRlZ2VyKFRlc3RPYmo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGFyZyksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZDJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIHJldHVybiBWOFRlc3RP
Ymo6OmNsYXNzTWV0aG9kMkNhbGxiYWNrQ3VzdG9tKGFyZ3MpOworfQorCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhv
ZDExQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTIwMDYsOCArMjAyMiw4
IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBWOFRl
c3RPYmpDYWxsYmFja3NbXSA9IHsKICAgICB7InNlcmlhbGl6ZWRWYWx1ZSIsIFRlc3RPYmpWOElu
dGVybmFsOjpzZXJpYWxpemVkVmFsdWVDYWxsYmFja30sCiAgICAgeyJvcHRpb25zT2JqZWN0Iiwg
VGVzdE9ialY4SW50ZXJuYWw6Om9wdGlvbnNPYmplY3RDYWxsYmFja30sCiAgICAgeyJtZXRob2RX
aXRoRXhjZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhFeGNlcHRpb25DYWxs
YmFja30sCi0gICAgeyJjdXN0b21NZXRob2QiLCBWOFRlc3RPYmo6OmN1c3RvbU1ldGhvZENhbGxi
YWNrfSwKLSAgICB7ImN1c3RvbU1ldGhvZFdpdGhBcmdzIiwgVjhUZXN0T2JqOjpjdXN0b21NZXRo
b2RXaXRoQXJnc0NhbGxiYWNrfSwKKyAgICB7ImN1c3RvbU1ldGhvZCIsIFRlc3RPYmpWOEludGVy
bmFsOjpjdXN0b21NZXRob2RDYWxsYmFja30sCisgICAgeyJjdXN0b21NZXRob2RXaXRoQXJncyIs
IFRlc3RPYmpWOEludGVybmFsOjpjdXN0b21NZXRob2RXaXRoQXJnc0NhbGxiYWNrfSwKICAgICB7
ImFkZEV2ZW50TGlzdGVuZXIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6YWRkRXZlbnRMaXN0ZW5lckNh
bGxiYWNrfSwKICAgICB7InJlbW92ZUV2ZW50TGlzdGVuZXIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrfSwKICAgICB7IndpdGhTY3JpcHRTdGF0ZVZvaWQi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlVm9pZENhbGxiYWNrfSwKQEAgLTIx
NjMsNyArMjE3OSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAgICAgcHJvdG8tPlNldCh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3Mi
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhh
dFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RU
aGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlKSk7CiAgICAgZGVzYy0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY2xhc3NNZXRob2QiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y2xhc3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKICAgICBkZXNjLT5TZXQodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJjbGFzc01ldGhvZFdpdGhPcHRpb25hbCIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSkpOwotICAgIGRl
c2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNsYXNzTWV0aG9kMiIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFY4VGVzdE9iajo6Y2xhc3NNZXRob2QyQ2FsbGJhY2ssIHY4VW5kZWZp
bmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CisgICAgZGVzYy0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgiY2xhc3NNZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNsYXNzTWV0aG9kMkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgp
LCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSkpOwogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
ICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm92ZXJsb2FkZWRNZXRob2QxIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRN
ZXRob2QxQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigp
KSk7CiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKaW5kZXggYmM2YjAyNzE2M2Rj
N2Y0NTUxZGI1ZDExZDUyNDBhZjliNjJlOWU1ZC4uYWU0OTBjOTYxZDhjZTYzZGZjNjVlZWVhMDgy
ZGY3MGMwMjQ1ZjIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouaApAQCAtNDMsOSArNDMsOSBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KHZvaWQqKTsKICAgICBzdGF0aWMgV3JhcHBlclR5
cGVJbmZvIGluZm87Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21NZXRo
b2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjdXN0b21NZXRob2RXaXRoQXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmKTsKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzTWV0aG9kMkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGN1c3RvbU1ldGhvZENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKKyAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY2xhc3NNZXRob2QyQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYp
OwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBj
dXN0b21BdHRyQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mKTsKICAgICBzdGF0aWMgdm9pZCBjdXN0b21BdHRyQWNjZXNzb3JT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcAppbmRleCBmMzRhMzI2ZWUyN2Fm
NDUzNmQyMDE0ZTBmZWM2MmVjNzJjZmNhYjYwLi40MjhmZjlkOWYwYmE0MWVjMzE5NzBhNzVlZDVh
YjdjNWJiMjUwYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjp0eXBlc0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhDbGlwYm9hcmQ6OmNsZWFyRGF0YUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OmNsZWFyRGF0YUNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgQ2xpcGJvYXJkKiBj
bGlwYm9hcmQgPSBWOENsaXBib2FyZDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKQEAgLTc3
LDcgKzc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xpcGJvYXJkOjpjbGVhckRhdGFD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6c2V0RHJhZ0lt
YWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFY4Q2xpcGJvYXJk
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAppbmRleCAwMjIzMzQwMjIzNTll
MWE1NzQ0MzUyYzcyNzFiYmQxMzhmZGQ0NTRjLi44OTZiOGFlNDI4ZjgwOGYyNWVkNWY2YWQwODY1
YmE3YWE3YjA2NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnRyYWNlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENv
bnNvbGU6OnRyYWNlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsK
ICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwog
ICAgIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVhdGVTY3JpcHRB
cmd1bWVudHMoYXJncywgMCkpOwpAQCAtNDgsNyArNDgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENv
bnNvbGU6OmFzc2VydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjphc3NlcnRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgYm9vbCBjb25kaXRpb24gPSBhcmdzWzBdLT5Cb29sZWFu
VmFsdWUoKTsKQEAgLTU4LDcgKzU4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29s
ZTo6YXNzZXJ0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIH0KIAogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29s
ZTo6cHJvZmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhT
dHJpbmdSZXNvdXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRsZSwgYXJnc1swXSk7
CkBAIC02Niw3ICs2Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2Zp
bGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5k
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENvbnNvbGU6OnByb2ZpbGVFbmRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jl
c291cmNlPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3Bw
CmluZGV4IDc5NjQzOGMxNDY5NmI2M2QxMTJmMmIwZWQxYWJhNjU0OWUzMzFhYzMuLjgyNWZiMmY4
NjQ5NmRkNzgwZWM4YTk5MDE2N2E2MWY0ZDAzYTdmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcApAQCAtMzUsNyArMzUs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENy
eXB0bzo6Z2V0UmFuZG9tVmFsdWVzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAppbmRleCAzOWEzZDExNWQ0YWQwYTIwNzE0
ZDdiY2JjMzI4MTc3YmFmZjRjMjQ4Li5hMzg3NTY5OTdiMzM0MjM4MTQ2Y2VjZjM4ZGYzOTQwZjY3
MzI0NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCkBAIC01MSw3ICs1MSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1bWVuCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOERPTUZvcm1EYXRhOjphcHBlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmFwcGVuZENhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRheEVycm9yLCAiTm90IGVu
b3VnaCBhcmd1bWVudHMiLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBl
MTUxMTM3Y2U2MWU2MzZiM2U4MmU4ZTQxYTQ3OGVlNTE5MDRjYzM2Li4wMTZhMTc2MzQ4YzgxYjY4
ZjA0ZmIyMDFkNWFjNDBhOWIxYzZiYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTIyNiw3ICsyMjYs
NyBAQCB2b2lkIFY4RE9NV2luZG93OjpvcGVuZXJBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogICAgIGluZm8uVGhpcygpLT5TZXQobmFtZSwg
dmFsdWUpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmFkZEV2ZW50
TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBTdHJpbmcgZXZlbnRUeXBlID0gdG9XZWJD
b3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFyZ3NbMl0tPkJvb2xl
YW5WYWx1ZSgpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiB9
CiAKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3Rl
bmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgU3RyaW5nIGV2ZW50VHlwZSA9IHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzBdKTsKICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdzWzJdLT5Cb29sZWFu
VmFsdWUoKTsKQEAgLTI5Miw3ICsyOTIsNyBAQCBzdGF0aWMgYm9vbCBpc0xlZ2FjeVRhcmdldE9y
aWdpbkRlc2lnbmF0aW9uKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIH0KIAogCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6
cG9zdE1lc3NhZ2VDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIC8vIE5vbmUgb2YgdGhlc2UgbmVlZCB0byBiZSBSZWZQdHIgYmVjYXVzZSBhcmdzIGFuZCBj
b250ZXh0IGFyZSBndWFyYW50ZWVkCiAgICAgLy8gdG8gaG9sZCBvbiB0byB0aGVtLgpAQCAtMzQy
LDcgKzM0Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cG9zdE1lc3Nh
Z2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAvLyBmaXggdGhpcyBieSBjYWxs
aW5nIHRvU3RyaW5nIGZ1bmN0aW9uIG9uIHRoZSByZWNlaXZlci4KIC8vIEhvd2V2ZXIsIFY4IGlt
cGxlbWVudHMgdG9TdHJpbmcgaW4gSmF2YVNjcmlwdCwgd2hpY2ggcmVxdWlyZXMKIC8vIHN3aXRj
aGluZyBjb250ZXh0IG9mIHJlY2VpdmVyLiBJIGNvbnNpZGVyIGl0IGlzIGRhbmdlcm91cy4KLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6dG9TdHJpbmdDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0
b1N0cmluZ0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb21XcmFwcGVyID0gYXJncy5UaGlzKCktPkZpbmRJbnN0
YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKGFyZ3MuR2V0SXNv
bGF0ZSgpKSk7CiAgICAgaWYgKGRvbVdyYXBwZXIuSXNFbXB0eSgpKQpAQCAtMzUwLDEyICszNTAs
MTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0b1N0cmluZ0NhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIGRvbVdyYXBwZXItPk9iamVj
dFByb3RvVG9TdHJpbmcoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93
OjpyZWxlYXNlRXZlbnRzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cmVsZWFzZUV2ZW50c0NhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpjYXB0dXJlRXZlbnRz
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6Y2FwdHVyZUV2ZW50c0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KQEAgLTQwMiw3
ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCBzZXRVcERpYWxvZyhET01XaW5kb3cqIGRpYWxvZywgdm9p
ZCogaGFuZGxlcikKICAgICBzdGF0aWNfY2FzdDxEaWFsb2dIYW5kbGVyKj4oaGFuZGxlciktPmRp
YWxvZ0NyZWF0ZWQoZGlhbG9nKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2lu
ZG93OjpzaG93TW9kYWxEaWFsb2dDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2dDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIERPTVdpbmRvdyogaW1w
bCA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3Rh
dGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwpAQCAtNDE5LDcgKzQxOSw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICByZXR1cm4gaGFuZGxlci5yZXR1cm5WYWx1ZSgp
OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om9wZW5DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2lu
ZG93OjpvcGVuQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBET01XaW5kb3cqIGltcGwgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAgICAgQmluZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKTsKQEAg
LTQ5NiwxMyArNDk2LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFt
ZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiB9CiAKIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRUaW1lb3V0Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2V0
VGltZW91dENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
cmV0dXJuIFdpbmRvd1NldFRpbWVvdXRJbXBsKGFyZ3MsIHRydWUpOwogfQogCiAKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6c2V0SW50ZXJ2YWxDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRJ
bnRlcnZhbENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
cmV0dXJuIFdpbmRvd1NldFRpbWVvdXRJbXBsKGFyZ3MsIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcApp
bmRleCA2MjMzY2VjODYxOTYzOTM1YzIwODQ0NTAxNGViODNjODBjM2VjMGM4Li43YzU2MzczNWFk
MjNjYjIwZmYxZjA3MTQ3MjcyYjdlNmYxMmRiYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCkBAIC01NCw3ICs1
NCw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChEYXRhVmlldyogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRlCiAgICAgcmV0dXJuIFY4RGF0YVZpZXc6OmNy
ZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmdldEludDhDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmdldEludDhD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtNjgsNyArNjgsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhEYXRhVmlldzo6Z2V0SW50OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiAgICAgcmV0dXJuIHY4SW50ZWdlcihyZXN1bHQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0K
IAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmdldFVpbnQ4Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3
OjpnZXRVaW50OENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC04Miw3ICs4Miw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpnZXRVaW50OENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4SW50ZWdlcihyZXN1bHQsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OnNldEludDhD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RGF0YVZpZXc6OnNldEludDhDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtOTcsNyArOTcs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6c2V0SW50OENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRVaW50OENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6
c2V0VWludDhDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcAppbmRleCBhZDYwNDc2MWUwZTlhY2E4YTQ0YjA3ZDIyMmFhM2NhNjEzMDdk
ZWI4Li45YzcyYTU5YmVjYWQ5MGI1YTdhNzU3NzY2NjI2OTA5ZTk4YzU5ODkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNDEsNyArNDEsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERlZGljYXRlZFdvcmtl
ckNvbnRleHQ6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnBvc3RNZXNz
YWdlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gVjhEZWRpY2F0ZWRXb3JrZXJDb250
ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNl
TW90aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IDllZjlhODgyYmY4Mjk5NGFjYWE1
NzBhYzcyY2IyY2ZjM2RjM2RhMTcuLjEyNzg3ZDUwNTM3YTY4Y2U4NGFjZWIzZDlkZmFjZTE5NDBk
N2U0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERl
dmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VNb3Rpb25FdmVudDo6aW50ZXJ2YWxBY2Nl
c3NvckdldHRlcih2ODo6TG9jYWw8djg6OgogICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoaW1w
LT5kZXZpY2VNb3Rpb25EYXRhKCktPmludGVydmFsKCkpOwogfQogCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmlj
ZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnRDYWxsYmFja0N1c3RvbShjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIERldmljZU1vdGlvbkV2ZW50KiBpbXAgPSBWOERl
dmljZU1vdGlvbkV2ZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENI
X0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8PiwgdHlwZSwgYXJnc1swXSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VP
cmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IGFkNDczYjY3Zjhh
N2VhMDgzNGY4MWJhOGJmMDA0OTk4MzkxYTZjNjEuLmJiMzM5MmM2ZDkzMWMzYTE3MWJlODkwMTk1
ODljNTVmZDc3ZjEzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU9yaWVudGF0
aW9uRXZlbnQ6OmFic29sdXRlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsCiAgICAgcmV0dXJuIHY4
OjpCb29sZWFuOjpOZXcoaW1wLT5vcmllbnRhdGlvbigpLT5hYnNvbHV0ZSgpKTsKIH0KIAotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9y
aWVudGF0aW9uRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVu
dGF0aW9uRXZlbnRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQqIGltcCA9IFY4RGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdS
RVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIHR5cGUsIGFyZ3NbMF0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCmlu
ZGV4IDYyZGZhNjQ0OTBmYjkzZDc5MzljZTJiODk4NzkyMzc3YjdjM2YyOWQuLjFmMTJlZTI4NmUw
NmQzMTQ3YmZjZjEzZmI5NDIyOTVjMDAxODBhMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
b2N1bWVudDo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RG9jdW1lbnQ6OmV2YWx1YXRlQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50
ID0gVjhEb2N1bWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkBAIC0xMDksNyArMTA5LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
KERvY3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGUKIH0K
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1
bWVudDo6Y3JlYXRlVG91Y2hMaXN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjpjcmVhdGVUb3VjaExpc3RDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFJlZlB0cjxUb3VjaExp
c3Q+IHRvdWNoTGlzdCA9IFRvdWNoTGlzdDo6Y3JlYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcApp
bmRleCBmNWNlZTMyOWM4ZTc5OWI2MDgyODdmMWZhMDA2MWZhMDdlMjEwZWVhLi4xYjQ1NDAxMjEw
MjVmNjU1MWYxYTA3MTE4MmZkZDAwZjU1MWY1YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20uY3BwCkBAIC0x
MjgsNyArMTI4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdGVQ
b3NpdGlvbk9wdGlvbnModjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmEKICAgICByZXR1cm4gb3B0aW9u
cy5yZWxlYXNlKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9uOjpn
ZXRDdXJyZW50UG9zaXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbkNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgYm9vbCBzdWNjZWVk
ZWQgPSBmYWxzZTsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4R2VvbG9jYXRpb246OndhdGNoUG9zaXRp
b25DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGJvb2wg
c3VjY2VlZGVkID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA4
ZDI3ZjVkNDQ1MjI5NDhiNTg5YmIzMjJiNjlmMTRkM2I0OWJmNzI5Li5kZmIwNjRmZTRkNDBjZjQy
ZTE5OWUzNTQ4MDNmYTQ3MTA2NDNiOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
CkBAIC04NSwxMyArODUsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxl
Y3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKICAgICByZXR1cm4g
Z2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwgaW5mbyk7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjppdGVtQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhU
TUxBbGxDb2xsZWN0aW9uOjppdGVtQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBIVE1MQWxsQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQWxsQ29sbGVjdGlv
bjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGdldEl0ZW0oaW1wLCBhcmdz
WzBdLCBhcmdzKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rp
b246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBIVE1MQWxsQ29sbGVjdGlvbiog
aW1wID0gVjhIVE1MQWxsQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNv
cmVTdHJpbmcoYXJnc1swXSksIGFyZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCmlu
ZGV4IGE1ZjA4NjZlMTAxNGIxZDhjMGY2MmFmYzQzODNjNTk2NDUwZDBhZmUuLjRhM2M1YzIzYTg0
YTYwYjk0ZjZlZDk5YWM1MGQxNWIwMTUwNGUzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3Rv
bS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQ2Fu
dmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRl
cigpOwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBpbXAgPSBWOEhUTUxDYW52YXNFbGVtZW50Ojp0
b05hdGl2ZShob2xkZXIpOwpAQCAtMTEyLDcgKzExMiw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50CiAgICAgcmV0dXJuIHY4TnVsbChhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEhUTUxDYW52YXNFbGVtZW50Ojp0b0RhdGFVUkxDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZh
c0VsZW1lbnQ6OnRvRGF0YVVSTENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigp
OwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBWOEhUTUxDYW52YXNFbGVtZW50Ojp0
b05hdGl2ZShob2xkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMDQ2NmNkY2RkZTkwZTE3
ODM3YjM2NmU4OWE0ODllOTYwODM0ODk2MC4uMWU3NDI5MzA1NWE2NGY5YWVjYWM1NGEzMjVkOWM4
NWUwZGNmYzFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMTUsMjEgKzExNSwyMSBAQCBz
dGF0aWMgU3RyaW5nIHdyaXRlSGVscGVyR2V0U3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTERvY3VtZW50Ojp3cml0ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OndyaXRlQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBIVE1MRG9jdW1lbnQq
IGh0bWxEb2N1bWVudCA9IFY4SFRNTERvY3VtZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
ICAgICBodG1sRG9jdW1lbnQtPndyaXRlKHdyaXRlSGVscGVyR2V0U3RyaW5nKGFyZ3MpLCBhY3Rp
dmVET01XaW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKS0+ZG9jdW1lbnQoKSk7CiAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRN
TERvY3VtZW50Ojp3cml0ZWxuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6d3JpdGVsbkNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSFRNTERvY3VtZW50KiBodG1sRG9j
dW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaHRt
bERvY3VtZW50LT53cml0ZWxuKHdyaXRlSGVscGVyR2V0U3RyaW5nKGFyZ3MpLCBhY3RpdmVET01X
aW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKS0+ZG9jdW1lbnQoKSk7CiAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3Vt
ZW50OjpvcGVuQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6b3BlbkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSFRNTERvY3VtZW50KiBodG1sRG9jdW1lbnQgPSBWOEhU
TUxEb2N1bWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCAzMzUwMTRkMGNjYmY3MGEwN2RmYWI2
NjAzZTYwZTNhM2MxNGNhYzEwLi40NTM3YmM0OGVjN2YwYjAwYmEyYzIyYmIzMWJlNDBmYTY0NjY5
ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBA
IC02NSw3ICs2NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhCiAgICAgcmV0dXJuIGdldE5h
bWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSksIGluZm8pOwogfQogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uKiBpbXAgPSBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdWx0ID0gZ2V0TmFtZWRJ
dGVtcyhpbXAsIHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKSwgYXJncyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yLmNwcAppbmRleCBmNWU0ODE0ZDdjZGNlMjdjMzVhM2I4NzM5MjJm
MDU5MTVlNDUxMGMyLi5hYmMzMDcyYzczMWE4MjUxNTViN2M0ODg4MWQ2MjJhNzM0M2U1N2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXcmFwcGVyVHlwZUluZm8gVjhIVE1MSW1hZ2VFbGVtZW50
Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpHZXRU
ZW1wbGF0ZSwgVjhIVE1MSW1hZ2VFbGVtZW50OjpkZXJlZk9iamVjdCwgMCwgVjhIVE1MSW1hZ2VF
bGVtZW50Ojp0b0V2ZW50VGFyZ2V0LCAwLCBWOEhUTUxJbWFnZUVsZW1lbnQ6Omluc3RhbGxQZXJD
b250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUg
fTsKIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1
Y3RDYWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29sYXRl
KCkpOwpAQCAtODgsNyArODgsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKAogICAgICAgICBy
ZXR1cm4gY2FjaGVkVGVtcGxhdGU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAg
djg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBsYXRlPiByZXN1bHQgPSB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KHY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2spOworICAgIHY4
OjpMb2NhbDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcmVzdWx0ID0gdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyh2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKTsKIAog
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0
YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChWOEhU
TUxJbWFnZUVsZW1lbnQ6OmludGVybmFsRmllbGRDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwCmluZGV4IDMwODUzZGM4YjQ1YWFlNGM4MWZjMmI2ZDNlM2Q2NDFhNTJlNTExMmYuLmVj
MGVjYTk4ZWFhNTI0MDMzMGEzOTk4YzNiNjAwOGIyYTVhNTI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1l
bnRDdXN0b20uY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6
OnNlbGVjdGlvbkRpcmVjdGlvbkFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgog
ICAgIGltcC0+c2V0U2VsZWN0aW9uRGlyZWN0aW9uKHRvV2ViQ29yZVN0cmluZyh2YWx1ZSkpOwog
fQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rp
b25SYW5nZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZUNhbGxiYWNrQ3Vz
dG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGltcCA9
IFY4SFRNTElucHV0RWxlbWVudDo6dG9OYXRpdmUoaG9sZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDEyMjllMmU0MWUxYjhlNWFjMWQ0ZGYyYjQwMTQ4ZTk4
YjljOWFkZTguLjYzNTNiM2FhYjZjY2M4NTY5MmI1OWU3MjdmYjc5NmZlYTM0YTU0NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29s
bGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlH
ZXR0ZXIodjg6OkxvY2FsPHY4OgogICAgIHJldHVybiBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJD
b3JlQXRvbWljU3RyaW5nKG5hbWUpLCBpbmZvKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1lZEl0ZW1DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjpuYW1lZEl0ZW1DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MT3B0aW9uc0NvbGxlY3Rp
b246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdz
KTsKQEAgLTgyLDE0ICs4MiwxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9u
c0NvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVj
dGlvbjo6cmVtb3ZlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBIVE1MT3B0aW9uc0NvbGxlY3Rp
b24qIGltcCA9IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBIVE1MU2VsZWN0RWxlbWVudCogYmFzZSA9IHN0YXRpY19jYXN0PEhUTUxTZWxlY3RF
bGVtZW50Kj4oaW1wLT5vd25lck5vZGUoKSk7CiAgICAgcmV0dXJuIHJlbW92ZUVsZW1lbnQoYmFz
ZSwgYXJncyk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVj
dGlvbjo6YWRkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoIVY4SFRNTE9wdGlvbkVsZW1lbnQ6
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKICAgICAgICAgcmV0dXJu
IHNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVj
dEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDAwZDU2ZjlkMTY5ZTcyOTAzYjEyNTJk
MmM2ZTYyZWIxNDUzN2JhZGYuLmI0OGZkMjBlZjZhNGQyMTMyOGU5ODhjZjAxNzc2MjM2NDBiYzVi
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxT
ZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTFNlbGVjdEVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eVNl
dHRlcih1aW50MzJfdCBpbmRleCwKICAgICByZXR1cm4gdG9PcHRpb25zQ29sbGVjdGlvblNldHRl
cihpbmRleCwgdmFsdWUsIHNlbGVjdCwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RF
bGVtZW50OjpyZW1vdmVDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBpbXAgPSBWOEhUTUxTZWxlY3RFbGVtZW50Ojp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICByZXR1cm4gcmVtb3ZlRWxlbWVudChpbXAsIGFyZ3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9y
eUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5
Q3VzdG9tLmNwcAppbmRleCA4ZWQ2OTA0NTZkMDJhYzY3MTM3ZGE2MzhmOGIwNzRiNGQ3NjJhZDQ2
Li4xMTIwMzEzZjJlN2ZiMmFmZThlM2RiOGRjYmYwNDg2MTAzYzRjYjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcApA
QCAtNTcsNyArNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpzdGF0ZUFj
Y2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6cHVzaFN0YXRlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhp
c3Rvcnk6OnB1c2hTdGF0ZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgYm9vbCBkaWRUaHJvdyA9IGZhbHNlOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGFy
Z3NbMF0sIDAsIDAsIGRpZFRocm93LCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC03NCw3ICs3NCw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnB1c2hTdGF0ZUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywg
YXJncy5HZXRJc29sYXRlKCkpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5
OjpyZXBsYWNlU3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6cmVwbGFjZVN0YXRlQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBib29sIGRpZFRocm93ID0gZmFsc2U7CiAg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoYXJnc1swXSwgMCwgMCwgZGlkVGhyb3csIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDA3ODNkMmM2MGZk
MDhmNmQ2ZGQ4NjU5MGM2NWM3MzMxZDIyZTJiMzUuLmIyNjE2NDE2MmJlZDFlNTA4YzlkZTk4YTZm
MTA1NmVhZTMzYTcwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtNzks
NyArNzksNyBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZh
bHVlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogICAgIHJldHVybiBTY3JpcHRWYWx1
ZSh0b1Y4KG5vZGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgY29udGV4dC0+R2V0SXNvbGF0
ZSgpKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6
aW5zcGVjdGVkT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0Q2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC05Miw3ICs5
Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVj
dGVkT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyCiAgICAgcmV0dXJuIG9iamVjdC0+Z2V0KFNj
cmlwdFN0YXRlOjpjdXJyZW50KCkpLnY4VmFsdWUoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9yTmFtZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0xMDMsNyArMTAzLDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0cnVjdG9y
TmFtZUNhbGxiYWNrKGNvbnMKICAgICByZXR1cm4gYXJnc1swXS0+VG9PYmplY3QoKS0+R2V0Q29u
c3RydWN0b3JOYW1lKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2Ny
aXB0SG9zdDo6aXNIVE1MQWxsQ29sbGVjdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmlzSFRN
TEFsbENvbGxlY3Rpb25DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmlzSFRNTEFsbENvbGxlY3Rpb25DYWxsYmFjayhjb25zdCB2OAogICAgIHJl
dHVybiB2ODo6Qm9vbGVhbjo6TmV3KFY4SFRNTEFsbENvbGxlY3Rpb246Okhhc0luc3RhbmNlKGFy
Z3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEluamVjdGVkU2NyaXB0SG9zdDo6dHlwZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnR5cGVDYWxs
YmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTE1MCw3ICsx
NTAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnR5cGVD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZnVu
Y3Rpb25EZXRhaWxzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rpb25EZXRhaWxzQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0xODksNyArMTg5
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlv
bkRldGFpbHNDYWxsYmFjayhjb25zdCB2ODo6QXIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJv
cGVydGllc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVydGllc0NhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtMjM1LDcgKzIz
NSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpBcnJheT4gZ2V0SlNMaXN0ZW5lckZ1bmN0aW9u
cyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3Rl
bmVyc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8
IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0yNjksNyArMjY5LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3Rl
bmVyc0NhbGxiYWNrKGNvbnN0IHY4OjoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRT
Y3JpcHRIb3N0OjppbnNwZWN0Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CkBAIC0yODIsNyArMjgyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5q
ZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJ
bmplY3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNlSWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRh
YmFzZUlkQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBA
IC0yOTUsNyArMjk1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRI
b3N0OjpkYXRhYmFzZUlkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlw
dEhvc3Q6OnN0b3JhZ2VJZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZENhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPCAxKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtMzA2LDcgKzMwNiw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c3RvcmFnZUlk
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
IH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0
ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAg
IHJldHVybiB2ODo6VGhyb3dFeGNlcHRpb24odjg6OkV4Y2VwdGlvbjo6RXJyb3Iodjg6OlN0cmlu
Zzo6TmV3KCJPbmUgYXJndW1lbnQgZXhwZWN0ZWQuIikpKTsKQEAgLTMyMSw3ICszMjEsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIHJldHVybiBzY3JpcHQtPlJ1bigpOwogfQogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnNldEZ1bmN0aW9uVmFy
aWFibGVWYWx1ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1
ZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGZ1bmN0aW9uVmFsdWUgPSBhcmdzWzBdOwogICAgIGludCBzY29wZUlu
ZGV4ID0gYXJnc1sxXS0+SW50MzJWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1
c3RvbS5jcHAKaW5kZXggMmJiZTRiODg3MTdlZDdjNGZlOTYzMzdhNTQwZjMwOWIzYTY4MTBkZC4u
Mzk5Y2YzYzI5MTZiOGVhODEyMjgyNjJjM2I5NTJjODJmMDE1ODZiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0
b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0
OjpwbGF0Zm9ybUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICNpZiBkZWZpbmVkKE9TX01BQ09TWCkK
ICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtYWMiKTsKQEAgLTYyLDcgKzYyLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpwbGF0Zm9y
bUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWUKICNlbmRpZgogfQogCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBvcnRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJikKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6
cG9ydENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmKQogewogICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQgcG9wdWxh
dGVDb250ZXh0TWVudUl0ZW1zKHY4OjpMb2NhbDx2ODo6QXJyYXk+JiBpdGVtQXJyYXksIENvbnRl
eHRNZW4KICAgICB9CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250
ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0Nv
bnRleHRNZW51Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CkBAIC0xNDYsMTcgKzE0NiwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhpc3Rv
Z3JhbUVudW1lcmF0aW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IHY4OjpBcgogICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6cmVjb3JkQWN0aW9uVGFrZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0
OjpyZWNvcmRBY3Rpb25UYWtlbkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgcmV0dXJuIGhpc3RvZ3JhbUVudW1lcmF0aW9uKCJEZXZUb29scy5BY3Rpb25U
YWtlbiIsIGFyZ3MsIDEwMCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6cmVjb3JkUGFuZWxTaG93bkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OnJlY29yZFBhbmVsU2hvd25DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIHJldHVybiBoaXN0b2dyYW1FbnVtZXJhdGlvbigiRGV2VG9vbHMuUGFuZWxTaG93
biIsIGFyZ3MsIDIwKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpyZWNvcmRTZXR0aW5nQ2hhbmdlZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OnJlY29yZFNldHRpbmdDaGFuZ2VkQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICByZXR1cm4gaGlzdG9ncmFtRW51bWVyYXRpb24oIkRldlRvb2xzLlNldHRp
bmdDaGFuZ2VkIiwgYXJncywgMTAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5j
cHAKaW5kZXggN2NiMjg5ZTgxZThhODY3NmYwNGEyYTc4YTA3NTk3M2YyNmYzYTE1MC4uZTU2NmRk
M2ViNzdmMGVjMjY3YjM5YTE5MjFiZDQyNzg3ZmJlZmQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxG
cmFtZUN1c3RvbS5jcHAKQEAgLTM3LDIwICszNywyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRl
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhK
YXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTdHJpbmcg
ZXhwcmVzc2lvbiA9IHRvV2ViQ29yZVN0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhhcmdz
WzBdKTsKICAgICByZXR1cm4gaW1wbC0+ZXZhbHVhdGUoZXhwcmVzc2lvbik7CiB9CiAKLXY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnRDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNj
cmlwdENhbGxGcmFtZTo6cmVzdGFydENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogaW1wbCA9IFY4SmF2YVNjcmlwdENh
bGxGcmFtZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGltcGwtPnJlc3Rh
cnQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6
c2V0VmFyaWFibGVWYWx1ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRWYXJpYWJsZVZhbHVl
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKICAgICBpbnQgc2NvcGVJbmRleCA9IGFyZ3NbMF0tPkludDMyVmFsdWUoKTsK
QEAgLTY1LDcgKzY1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxG
cmFtZTo6c2NvcGVDaGFpbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDwKICAgICByZXR1cm4gaW1w
bC0+c2NvcGVDaGFpbigpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0
Q2FsbEZyYW1lOjpzY29wZVR5cGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVUeXBlQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBKYXZhU2NyaXB0
Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICBpbnQgc2NvcGVJbmRleCA9IGFyZ3NbMF0tPkludDMyVmFsdWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3Vz
dG9tLmNwcAppbmRleCAyYTEyYWVlMzdjYWRhMmMyN2Y1MzQyNWUxYzkwZmI5ZmMyMjllYjllLi40
NDk1ZDhjODI1NTVlOTdkMjRjMTA3NTg5NDYzMTAyY2EwZTllMjU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBA
IC0xMzksNyArMTM5LDcgQEAgdm9pZCBWOExvY2F0aW9uOjpzZWFyY2hBY2Nlc3NvclNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjoKIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSA9IGluZm8uR2V0SXNvbGF0ZSgpOwotICAgIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNp
Z25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOworICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBs
YXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFja0N1c3Rv
bSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1Rl
bXBsYXRlKGlzb2xhdGUpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0g
aW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBp
dCBzaG91bGQgcGFzc2VkCkBAIC0xNDgsNyArMTQ4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW0KICAgICB9CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRl
cik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShC
aW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0
eUVycm9yKSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpy
ZWxvYWRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRp
b246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFja0N1c3RvbSwgdjhVbmRlZmluZWQoKSwg
djg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkp
OwogICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQog
ICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0xNTcsNyArMTU3
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExv
Y2F0aW9uOjpyZXBsYWNlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSBpbmZvLkdldElzb2xhdGUoKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhM
b2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpO
ZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CisgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFja0N1c3RvbSwgdjhVbmRl
ZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlz
b2xhdGUpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5UaGlz
KCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUo
aXNvbGF0ZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBv
bmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQg
cGFzc2VkCkBAIC0xNjYsNyArMTY2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRp
b246OnJlcGxhY2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKICAgICB9
CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3Rh
dGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkg
ewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNo
YXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
aXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRS
YXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2ln
bmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CiAgICAg
ICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9CiAgICAgcmV0
dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogewogICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gaW5m
by5HZXRJc29sYXRlKCk7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPQotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4
TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpO
ZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CisgICAgICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6YXNzaWduQ2FsbGJhY2tDdXN0b20sIHY4VW5kZWZp
bmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29s
YXRlKSkpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygp
LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlz
b2xhdGUpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25s
eSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBh
c3NlZApAQCAtMTg1LDEzICsxODUsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRp
b246OmFzc2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICB9
CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3Rh
dGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkg
ewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNo
YXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
aXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJh
d1RlbXBsYXRlKGlzb2xhdGUpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhW
OExvY2F0aW9uOjphc3NpZ25DYWxsYmFja0N1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25h
dHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOwogICAgICAg
ICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVy
biBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgTG9jYXRpb24qIGltcGwgPSBWOExv
Y2F0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRl
ID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBMb2NhdGlvbiogaW1w
bCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEJpbmRpbmdTdGF0
ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CkBAIC0yMTIsNyArMjEyLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2ln
bkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgTG9jYXRp
b24qIGltcGwgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5k
aW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwpAQCAtMjI0LDcgKzIy
NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjp2YWx1ZU9mQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9u
Ojp2YWx1ZU9mQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICAvLyBKdXN0IHJldHVybiB0aGUgdGhpcyBvYmplY3QgdGhlIHdheSB0aGUgbm9ybWFsIHZhbHVl
T2YgZnVuY3Rpb24KICAgICAvLyBvbiB0aGUgT2JqZWN0IHByb3RvdHlwZSB3b3VsZC4gIFRoZSB2
YWx1ZU9mIGZ1bmN0aW9uIGlzIG9ubHkKQEAgLTIzNCw3ICsyMzQsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhMb2NhdGlvbjo6dmFsdWVPZkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAgICAgcmV0dXJuIGFyZ3MuVGhpcygpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhMb2NhdGlvbjo6dG9TdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnRvU3RyaW5nQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRp
b246OnRvTmF0aXZlKGhvbGRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCBiOWQ5YWZlN2Ux
NjNhNjMyYjg4YjZjMTk1MWFlOTdkYjE1NzBhMmY2Li4zYjRkZGEwMzE2MjhmMTQxMzllN2YzYmIw
ZTU5Yjg5MTUyM2Y2YTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OnBvcnRzQWNjZXNzb3JHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIHBvcnRBcnJheTsKIH0KIAotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1l
c3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgTWVzc2FnZUV2ZW50KiBldmVudCA9IFY4TWVzc2FnZUV2ZW50
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTdHJpbmcgdHlwZUFyZyA9IHRvV2ViQ29y
ZVN0cmluZyhhcmdzWzBdKTsKQEAgLTEzMSw5ICsxMzEsOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbgogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE1lc3NhZ2VFdmVudDo6d2Via2l0SW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZl
bnQ6OndlYmtpdEluaXRNZXNzYWdlRXZlbnRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewotICAgIHJldHVybiBpbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2soYXJncyk7
CisgICAgcmV0dXJuIGluaXRNZXNzYWdlRXZlbnRDYWxsYmFja0N1c3RvbShhcmdzKTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
UG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNz
YWdlUG9ydEN1c3RvbS5jcHAKaW5kZXggY2IzYTBmNjM3YzVmMTg4OTcwOGNhMzgyNGM3MjNiYWI2
MWYyMDVkZi4uZDllYjAyYzExNWYzMWRiMzk1MWEzYmFlODc0OTQzNjQyM2ExMmEwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQ
b3J0Q3VzdG9tLmNwcApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNz
YWdlUG9ydDo6cG9zdE1lc3NhZ2VDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIE1lc3NhZ2VQb3J0KiBtZXNzYWdlUG9ydCA9IFY4TWVzc2FnZVBvcnQ6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNw
cAppbmRleCA5MDczMTI5OTVkMjQ0OTE5NzMyY2EyZmM2NTExYmY1ZDBhZDFjNzRiLi5kMzI0Y2Iz
NmVjMjQ0YjJlN2ZlNzQ0MmVlNjA2N2Y5NDE2MTQ5YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtNjEsNyArNjEsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGN1c3RvbWl6ZWQg
dG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG9wdGlvbmFsIDR0aCBhcmd1bWVudDogc2hvdWxkTGF6
eUF0dGFjaAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6aW5zZXJ0QmVmb3JlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5v
ZGU6Omluc2VydEJlZm9yZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwog
ICAgIE5vZGUqIGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKQEAgLTc3LDcgKzc3LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6aW5zZXJ0QmVmb3JlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBjdXN0b21p
emVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBvcHRpb25hbCA0dGggYXJndW1lbnQ6IHNob3Vs
ZExhenlBdHRhY2gKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OnJlcGxhY2VDaGlsZENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhOb2RlOjpyZXBsYWNlQ2hpbGRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gYXJncy5Ib2xkZXIo
KTsKICAgICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRvTmF0aXZlKGhvbGRlcik7CkBAIC05Miw3ICs5
Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OnJlcGxhY2VDaGlsZENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4TnVsbChhcmdzLkdldElz
b2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OnJlbW92ZUNoaWxk
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOE5vZGU6OnJlbW92ZUNoaWxkQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVy
KCk7CiAgICAgTm9kZSogaW1wID0gVjhOb2RlOjp0b05hdGl2ZShob2xkZXIpOwpAQCAtMTA3LDcg
KzEwNyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OnJlbW92ZUNoaWxkQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBpcyBj
dXN0b21pemVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBvcHRpb25hbCA0dGggYXJndW1lbnQ6
IHNob3VsZExhenlBdHRhY2gKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OmFwcGVuZENo
aWxkQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE5vZGU6OmFwcGVuZENoaWxkQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9s
ZGVyKCk7CiAgICAgTm9kZSogaW1wID0gVjhOb2RlOjp0b05hdGl2ZShob2xkZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2Vu
dGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlm
aWNhdGlvbkNlbnRlckN1c3RvbS5jcHAKaW5kZXggZGQwYTE3ZDJkYWNlYTViN2E1NzQ1ZjZiMzA0
NDBlMjY4NTQ2ZGI3Ny4uOGMzMjkyMzRhNGUyZDkyNDhiOTE2MTFlNmZlZWQ4ZTBhMjQyMmQ2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0
aW9uQ2VudGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0aW9u
Q2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RQ
ZXJtaXNzaW9uQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBOb3RpZmljYXRpb25DZW50ZXIqIG5vdGlmaWNhdGlvbkNlbnRlciA9IFY4Tm90aWZpY2F0aW9u
Q2VudGVyOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0ID0gbm90aWZpY2F0aW9uQ2VudGVyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3Rp
ZmljYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcAppbmRleCBkMzM0NDdlYjFhMmU4YWY0ODViNzU0MjI2YzZi
OGY2MjlkODQ5YjZjLi4xNDQyZDI3OTQ3N2RhNWZkMzM1OGRmOGMwMThiNjMxNTc1ODIxMzU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5v
dGlmaWNhdGlvbkN1c3RvbS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb3RpZmljYXRpb246OnJlcXVlc3RQZXJt
aXNzaW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb25DYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7
CiAgICAgUmVmUHRyPFY4Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjYWxsYmFjayA9
IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPFY4Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxi
YWNrPihhcmdzWzBdLCBzdWNjZWVkZWQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAKaW5kZXggYjIwMzQ4OGQwMjVlMGVlZGY1MDg5Y2EwYjI2YWNh
M2MwNmZlZDdiYS4uZjZiMThlMzQxMTM3MzI2NDMxNjk2Zjk0YThlYWZjNDRkNDRlMDAyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0
Um93TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxSZXN1bHRTZXRS
b3dMaXN0OjppdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFNRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW1DYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmICghYXJncy5MZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IodjhTeW50YXhFcnJvciwgIkl0ZW0gaW5kZXggaXMgcmVx
dWlyZWQuIiwgYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCmluZGV4
IGNkM2M3Mzc3ZDhjYjkxM2RiNTM3NzFkY2FkMDQyZjUxMGZhOGY3YWQuLjZiYTcxYzgzOTBhNjll
MDhmMzA5OTVkY2RiODI5MWYzMDA1MTIwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPT0gMCkKICAgICAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlv
blN5bmNDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FM
VHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAppbmRleCA2NmZkZDkwODE1NmY3MjU0YWQyZmUyNzk3
NWVlYjVlNGE4MDQzNjRiLi5kNzlmODNmNTA5OWIyYmU2NWUxOTAxMjMwYzgyNjlmOWUyZGZkNDQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFu
c2FjdGlvblN5bmNDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rp
b25TeW5jOjpleGVjdXRlU3FsQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBzZXRET01FeGNl
cHRpb24oU1lOVEFYX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAKaW5kZXgg
MmY3MmFlM2FjMDQxNzMxMTAwOTIwZDQyNjgzZWE1ZDMyY2I5YTk2Mi4uMjk1MmE5MWNlZDY0MTA4
ZWJhY2Y2YWZiNDEzNDMxM2NiYmY2YWRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCkBAIC03NSw3ICs3NSw3
IEBAIHZvaWQgVjhTVkdMZW5ndGg6OnZhbHVlQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6CiAgICAgICAgIHdyYXBwZXItPmNvbW1pdENoYW5n
ZSgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTVkdMZW5ndGg6OmNvbnZlcnRUb1Nw
ZWNpZmllZFVuaXRzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFNWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHNDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFNWR1Byb3BlcnR5VGVh
ck9mZjxTVkdMZW5ndGg+KiB3cmFwcGVyID0gVjhTVkdMZW5ndGg6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwogICAgIGlmICh3cmFwcGVyLT5pc1JlYWRPbmx5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcAppbmRleCBhYmM4NTc0NjE5N2NiMzkwODA0ZjA2ODM2YjkxODcx
NDdkZGI0MzE0Li5jYzIyMWQ2NzQzZTc3YWJhOWNiOTNhZGZlNjY3NjRkNTQ2OGU1M2QyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTI3MCw3ICsyNzAsNyBAQCBl
bnVtIFdoaWNoUHJvZ3JhbUNhbGwgewogICAgIGtQcm9ncmFtUGFyYW1ldGVyLCBrVW5pZm9ybQog
fTsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRB
dHRhY2hlZFNoYWRlcnNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRl
cnNDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMjk0LDEyICsyOTQsMTIgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnND
YWxsYmFjayhjb25zdAogICAgIHJldHVybiBhcnJheTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXJDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbShjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJn
cywga0J1ZmZlcik7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIGltcCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCkBAIC0zMDksNyAr
MzA5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRFeHRlbnNpb25DYWxsYmFjayhjb25zdCB2ODo6QXIKICAgICByZXR1cm4gdG9WOE9iamVjdChl
eHRlbnNpb24sIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDMpCiAgICAgICAgIHJldHVybiB0aHJv
d05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTMyNSw3ICsz
MjUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgogICAgIHJldHVybiB0b1Y4T2JqZWN0KGlu
Zm8sIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXJDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDEpCiAgICAgICAgIHJl
dHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAg
LTMzOSw3ICszMzksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcgogICAgIHJldHVybiB0b1Y4
T2JqZWN0KGluZm8sIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFy
YW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlckNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgIT0gMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
YXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMzU2LDEyICszNTYsMTIgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyQ2FsbGJh
Y2soY29uc3QKICAgICByZXR1cm4gdG9WOE9iamVjdChpbmZvLCBhcmdzLkhvbGRlcigpLCBhcmdz
LkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtS
ZW5kZXJidWZmZXIpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFNoYWRlclBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMzc4LDcgKzM3OCw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hh
ZGVyUGFyYW1ldGVyQ2FsbGJhY2soY29uc3QKICAgICByZXR1cm4gdG9WOE9iamVjdChpbmZvLCBh
cmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnNDYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogaW1wID0gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogICAgIGlmIChpbXAtPmlzQ29udGV4dExvc3QoKSkKQEAgLTM5MSwxMiArMzkxLDEyIEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVk
RXh0ZW5zaW9uc0NhbGxiYWNrKGNvCiAgICAgcmV0dXJuIGFycmF5OwogfQogCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihh
cmdzLCBrVGV4dHVyZSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0VW5pZm9ybUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZv
cm1DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChh
cmdzLkxlbmd0aCgpICE9IDIpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1DYWxsYmFjayhj
b25zdCB2ODo6QXJndQogICAgIHJldHVybiB0b1Y4T2JqZWN0KGluZm8sIGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRWZXJ0ZXhBdHRyaWJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJncywga1ZlcnRleEF0dHJpYik7
CiB9CkBAIC01ODgsNDIgKzU4OCw0MiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVu
aWZvcm1IZWxwZXJpKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsCiAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdkNh
bGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHZl
cnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtVbmlmb3JtMXYpOwogfQogCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXZDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJncywga1Vu
aWZvcm0xdik7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTJmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnZDYWxs
YmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiB2ZXJ0
ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVW5pZm9ybTJ2KTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHVuaWZvcm1IZWxwZXJpKGFyZ3MsIGtVbmlm
b3JtMnYpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm0zZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2Q2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdmVydGV4
QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1VuaWZvcm0zdik7CiB9CiAKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdkNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXZDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiB1bmlmb3JtSGVscGVyaShhcmdzLCBrVW5pZm9y
bTN2KTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtNGZ2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdkNhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHZlcnRleEF0
dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtVbmlmb3JtNHYpOwogfQogCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXZDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJncywga1VuaWZvcm00
dik7CiB9CkBAIC02ODksMzcgKzY4OSwzNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHVuaWZvcm1NYXRyaXhIZWxwZXIoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywKICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnZDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtTWF0cml4MmZ2Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICByZXR1cm4gdW5pZm9ybU1hdHJpeEhlbHBlcihhcmdzLCAyKTsKIH0KIAotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4
M2Z2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNmdkNhbGxiYWNrQ3Vz
dG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHVuaWZvcm1NYXRy
aXhIZWxwZXIoYXJncywgMyk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXg0ZnZDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIHJldHVybiB1bmlmb3JtTWF0cml4SGVscGVyKGFyZ3MsIDQpOwogfQogCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFm
dkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdkNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFu
ZFVuaWZvcm1IZWxwZXJmKGFyZ3MsIGtWZXJ0ZXhBdHRyaWIxdik7CiB9CiAKLXY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2Q2FsbGJhY2tDdXN0b20oY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9y
bUhlbHBlcmYoYXJncywga1ZlcnRleEF0dHJpYjJ2KTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIzZnZDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIzZnZDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVy
ZihhcmdzLCBrVmVydGV4QXR0cmliM3YpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmdkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYjRmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgcmV0dXJuIHZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKGFyZ3Ms
IGtWZXJ0ZXhBdHRyaWI0dik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IGExM2M1N2Y5
NTIyNmIzZDZjNTJiMzc3NWJlOTg0MWVkYTE0ODZkZjkuLjhjOGY3MzEyYzU5ODc4YzRhYTExMzc4
YTE2Y2ZhZGUwYThiZGI2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC05MCw3ICs5MCw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBTZXRUaW1lb3V0T3JJbnRlcnZhbChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzLCBib29sIHNpbmdsCiAgICAgcmV0dXJuIHY4SW50ZWdlcih0aW1lcklk
LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtl
ckNvbnRleHQ6OmltcG9ydFNjcmlwdHNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0c0Nh
bGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKCFhcmdz
Lkxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtMTE0LDEyICsx
MTQsMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6aW1wb3J0U2Ny
aXB0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICByZXR1cm4gdjg6OlVuZGVmaW5l
ZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpzZXRUaW1l
b3V0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVvdXRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiBTZXRUaW1lb3V0T3JJbnRlcnZhbChhcmdz
LCB0cnVlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6c2V0
SW50ZXJ2YWxDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6c2V0SW50ZXJ2YWxDYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiBTZXRUaW1lb3V0T3JJbnRlcnZh
bChhcmdzLCBmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcAppbmRleCAwYWFjM2MxMDZlNTI2NWMwZjI3YTU3ZDRi
ZDczZWYwZDMzYWU5NWI0Li40OTBmMjlkMmY4MmVlYjJhODExMjM5YmVlNTYxMGZhMWY0NmMwZDlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtl
ckN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXI6OnBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlcjo6cG9z
dE1lc3NhZ2VDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IFdvcmtlciogd29ya2VyID0gVjhXb3JrZXI6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggN2Uy
MWYwNGRkOWMyN2E2MzQwYzkxM2I5ZWQ4NjZjODM0MGVlMmM5NC4uNGJmZmQ2ZTBhODdkZjY4YzFh
ZDE0MzJmNDM5MjQ2YTg0NDU3YzI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTE1
LDcgKzExNSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpyZXNw
b25zZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyCiAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6Om9w
ZW5DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4WE1MSHR0cFJlcXVlc3Q6Om9wZW5DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIC8vIEZvdXIgY2FzZXM6CiAgICAgLy8gb3BlbihtZXRob2QsIHVy
bCkKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgYm9vbCBpc0RvY3VtZW50VHlwZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHJldHVybiBW
OERvY3VtZW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSkgfHwgVjhIVE1MRG9jdW1lbnQ6
Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFhNTEh0dHBSZXF1ZXN0KiB4
bWxIdHRwUmVxdWVzdCA9IFY4WE1MSHR0cFJlcXVlc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYU0xU
UHJvY2Vzc29yQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwCmluZGV4IGI1YjIwODk3ZWE0NTU1MTJjYzJmMWNiZjc0
NWIzMmI2YWEwZmM5MWMuLjQwYzU5MDEzYmUwMGE4YjQzOTU2MTJjZjkzNDI2OWQxZjY5OTJmOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhTTFRQcm9j
ZXNzb3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFhTTFRQcm9jZXNzb3JDdXN0b20uY3BwCkBAIC00OCw3ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6c2V0UGFy
YW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3Nb
MV0pIHx8IGlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMl0pKQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwpAQCAtNjMsNyArNjMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xU
UHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhT
TFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXJD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChpc1Vu
ZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
QEAgLTc5LDcgKzc5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6
Z2V0UGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICByZXR1cm4gdjhT
dHJpbmcocmVzdWx0LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFhTTFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjpy
ZW1vdmVQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkKICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBkNDVjMDFmNzE5
Njk5ZTk4MjM1MWQzMTQzYzg1M2U1OWFjMWM5Yjk2Li4wYzY4ZjBiZDkxYTUxMzYxMzM5NTYxNGFh
ZDAxNTBhYTNhODg5ZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0xODAsOSAr
MTgwLDcgQEAKIAogICAgIC8vIGNyb3NzLWRvY3VtZW50IG1lc3NhZ2luZwogI2lmIGRlZmluZWQo
TEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAotICAgIFtEb05vdENo
ZWNrU2VjdXJpdHksIEN1c3RvbV0gdm9pZCBwb3N0TWVzc2FnZShpbiBTZXJpYWxpemVkU2NyaXB0
VmFsdWUgbWVzc2FnZSwgaW4gRE9NU3RyaW5nIHRhcmdldE9yaWdpbikKLSAgICAgICAgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7Ci0gICAgW0RvTm90Q2hlY2tTZWN1cml0eSwgQ3VzdG9tXSB2b2lkIHBv
c3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBtZXNzYWdlLCBpbiBET01TdHJpbmcg
dGFyZ2V0T3JpZ2luLCBpbiBBcnJheSBtZXNzYWdlUG9ydHMpCisgICAgW0RvTm90Q2hlY2tTZWN1
cml0eSwgQ3VzdG9tXSB2b2lkIHBvc3RNZXNzYWdlKGluIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBt
ZXNzYWdlLCBpbiBET01TdHJpbmcgdGFyZ2V0T3JpZ2luLCBpbiBbT3B0aW9uYWxdIEFycmF5IG1l
c3NhZ2VQb3J0cykKICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZWxzZQogICAgIC8v
IFRoZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gZXhwb3NlIGFuIGFycmF5IHZpYSB0aGUgT2JqQyBiaW5k
aW5ncywgc28gZm9yIG5vdyBqdXN0IGFsbG93IHBhc3NpbmcgaW4gYSBzaW5nbGUgcG9ydC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCmluZGV4IDI0NGRhMDRjYjQzMmNhOTY1Yjlh
YjI1ZTFjOTAyYWM3MGQ0YTQ4OTIuLmJkMmRiNTBkNjk1N2M1MzNiOWRkY2I2NzQ3NjRmYTdhYmMx
OWRiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbApAQCAtNzAsMTggKzcw
LDYgQEAKIAogICAgIFtDdXN0b21dIHZvaWQgc2VuZCgpCiAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOwotICAgIFtDdXN0b21dIHZvaWQgc2VuZChpbiBBcnJheUJ1ZmZlciBkYXRhKSAvLyBG
SVhNRTogdGhpcyBzaG91bGQgYmUgZXZlbnR1YWxseSBkZXByZWNhdGVkLgotICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKLSAgICBbQ3VzdG9tXSB2b2lkIHNlbmQoaW4gQXJyYXlCdWZmZXJW
aWV3IGRhdGEpCi0gICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIFtDb25kaXRpb25h
bD1CTE9CLCBDdXN0b21dIHZvaWQgc2VuZChpbiBCbG9iIGRhdGEpCi0gICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOwotICAgIFtDdXN0b21dIHZvaWQgc2VuZChpbiBEb2N1bWVudCBkYXRhKQot
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICBbQ3VzdG9tXSB2b2lkIHNlbmQoaW4g
W1N0cmljdFR5cGVDaGVja2luZ10gRE9NU3RyaW5nIGRhdGEpCi0gICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwotICAgIFtDdXN0b21dIHZvaWQgc2VuZChpbiBET01Gb3JtRGF0YSBkYXRhKQot
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgIHZvaWQgYWJvcnQoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>